* feat(tool): switch create-readme support link to /contacts
* feat(scripts): warn on deprecated support link in readme check
* feat(templates): switch cookiecutter readme support links to contacts
* docs(skill): drop removed validate mode from repo-readme docs
* test(status): cover contacts link warn/fail/ok cases
* fix(ci): shorten lines to satisfy ruff
* fix(ci): apply ruff format
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(infra): fullstack _api_dirs_for includes package name in path
* test(infra): fullstack thin-routes check coverage for issue #259
* fix(ci): reformat assert in test_project_status for ruff
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* feat(infra): add check_pyproject and --repo flag to project-status
* feat(infra): add repo flag to project-status ts wrapper
* test(infra): add check_pyproject and repo flag tests
* fix(infra): accept packages=["src"] as valid hatchling wheel config
* fix(ci): apply ruff format to project-status.py and tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* feat(spec): add project-template skill init and check flow
* refactor(spec): remove repo-init migrate references to project-template
* test(spec): structural tests for project-template skill and command
* fix(test): wrap long lines and use non_templated var in project template tests
* fix(ci): reformat test_project_template_skill.py for ruff format
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(docker): install docker-ce-cli and compose plugin in image
* fix(docker): point DOCKER_HOST to resolvable dind service alias
* test(docker): cover docker-ce-cli install and dind DOCKER_HOST fix
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* feat(permissions): deny gh api DELETE and repo transfer
* feat(permissions): ask on force push and tag delete
* test(permissions): cover hardened bash deny/ask rules
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* test(pipeline): remove adr and project-map test files
* refactor(pipeline): remove DOCS phase from pipeline-status
* test(pipeline): update tests for 6-phase pipeline
* docs(handoff): add handoff and ADR for remove-docs-phase
* docs(handoff): set PR number
* fix(pipeline): parse PR body via json.loads in check_implement
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* feat(create-pr): enforce Watch out and Pending headings
* test(create-pr): cover Watch out and Pending headings
* docs(handoff): add handoff and ADR for PR #207
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(create-readme): resolve file_path against context.worktree
* test(loader): support fs imports and extended TS stripping
* test(create-readme): add regression tests for local overwrite
* docs(repo-readme): note file_path resolves against worktree
* docs(handoff): set PR number
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* feat(draw-image): add SVG template render engine
* feat(draw-image): add opencode plugin and tool tests
* test(draw-image): add vitest unit integration e2e suite
* chore(draw-image): wire CI dependabot docs and ADR
* docs(handoff): set PR number
* docs(handoff): fix PR number placeholder in frontmatter
* fix(ci): use tempfile and trailing newline in draw-image tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(docker): increase opencode memory and cpu limits
* fix(docker): add tini init for zombie reaping
* fix(docker): add healthcheck for hang auto-restart
* test(docker): assert opencode limits, init and healthcheck
* docs(handoff): add handoff and ADR for opencode limits fix
* docs(handoff): set PR number
* docs(project-map): update docker-compose and test descriptions for PR#132
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(docker): add system ripgrep via apt for keyword search fallback
* fix(ci): install ripgrep and npm deps for keyword search in CI
* fix(memory-search): warn when ripgrep not resolvable instead of silent skip
* fix(memory-doctor): check rg status, arch mismatch, and require errors
* test(memory): add keyword search and doctor unit tests
* test(memory): unskip e2e keyword tests without RUN_LIVE
* docs(handoff): add handoff and ADR for keyword search fix
* test(memory): remove unused var in keyword search test
* docs(handoff): set PR number to 124
* docs(project-map): update after structural changes (PR#124)
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* chore(memory): remove plugin block from opencode.json
* chore(memory): remove setup-memory.sh and memory-setup.ts
* chore(memory): remove opencode-memory from Dockerfile
* docs(memory): update AGENTS.md and SKILL.md for new tools
* test(memory): drop tests for removed setup-memory.sh and memory-setup.ts
* docs(handoff): add handoff and ADR-045 for plugin/rust removal
* docs(handoff): set PR number
* docs(project-map): update after plugin/rust removal
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* test(memory): E2E coverage for 4 scenarios
* docs(handoff): set PR number
* style(memory): ruff format e2e test
* docs(project-map): add test_memory_tools_e2e.py after PR#102
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* refactor(memory): rename package second-brain to memory
* refactor(memory): use OpenAI env naming and fix trailing slash
* feat(memory): add chunking with env-configurable size and overlap
* feat(memory): dedup search results by source in top-K
* test(memory): add chunking, batching, dedup, live tests
* docs(memory): update README and project map after rename
* docs(handoff): add handoff and ADR-032 for memory refactor
* docs(handoff): set PR number
* fix(ci): reduce index.py complexity to rank A
---------
Co-authored-by: opencode-agent <agent@opencode.local>
* fix(tools): drop hardcoded --repo in post-review/post-docs-review
* fix(skills): sync run-pipeline templates to use review tools
* fix(agents): add tool failure handling to reviewer/docs-reviewer
* docs(adr): supersede ADR-019 with hardcoded repo removal note
* docs(handoff): scaffold handoff and ADR for PR
* docs(handoff): set PR number
* fix(ci): reformat post-review/post-docs-review test asserts for ruff format
---------
Co-authored-by: opencode-agent <agent@opencode.local>