opencode-agent
9dabc57d9a
feat(oracles): add Forgejo backend to status scripts
CI / bootstrap (push) Successful in 9s
CI / lint (push) Successful in 21s
CI / typecheck (push) Successful in 25s
CI / complexity (push) Successful in 30s
CI / test (3.14) (push) Successful in 1m47s
CI / test (3.13) (push) Successful in 1m48s
CI / test (3.12) (push) Failing after 13m11s
2026-08-06 15:25:42 +00:00
opencode-agent
0fbf1d97bc
feat(create-readme): support Forgejo contents API
CI / bootstrap (push) Successful in 11s
CI / lint (push) Successful in 26s
CI / typecheck (push) Successful in 33s
CI / test (3.12) (push) Successful in 1m39s
CI / test (3.13) (push) Successful in 2m21s
CI / test (3.14) (push) Successful in 1m26s
CI / complexity (push) Successful in 20s
2026-08-06 15:11:23 +00:00
opencode-agent
93e7843438
feat(tools): add Forgejo backend with gh CLI fallback
CI / bootstrap (push) Successful in 7s
CI / lint (push) Successful in 17s
CI / typecheck (push) Successful in 25s
CI / test (3.12) (push) Successful in 2m48s
CI / test (3.13) (push) Successful in 1m41s
CI / test (3.14) (push) Successful in 1m34s
CI / complexity (push) Successful in 21s
2026-08-06 15:02:20 +00:00
Sergey
9459e47567
feat(spec): mobile-first silent enforcement in STACK_REQUIRED + CI e2e ( #281 )
...
CI / bootstrap (push) Successful in 52s
CI / lint (push) Successful in 2m2s
CI / typecheck (push) Successful in 27s
CI / test (3.12) (push) Failing after 2m53s
CI / test (3.13) (push) Failing after 2m0s
CI / test (3.14) (push) Failing after 1m48s
CI / complexity (push) Successful in 23s
* feat(spec): mobile-first silent enforcement in STACK_REQUIRED + Template C
* feat(ci): frontend-e2e job with Playwright in fullstack cookiecutter
* docs(skills): mention mobile-first in audit, code-standards, project-status tool
* fix(ci): use npm install instead of npm ci + add e2e regression test
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 07:05:14 +03:00
Sergey
6bb115e706
feat(fullstack): mobile-first guarantee — cookiecutter + project-status ( #280 )
...
* feat(scripts): add MOBILE_FIRST_MARKERS + _check_mobile_first check
* feat(templates): fullstack mobile-first PWA manifest + mobile Playwright + axe
* test(scripts): cover mobile-first markers, check, cookiecutter structure
* fix(ci): reformat test_project_status.py string literals
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 06:46:20 +03:00
Sergey
43975cb593
refactor(scripts): project-status all-WARN non-blocking contract ( #277 )
...
* refactor(scripts): project-status all-WARN non-blocking contract
* refactor(skills): parse WARN instead of FAIL in audit and project-template
* test(scripts): update project-status asserts FAIL to WARN, exit code always 0
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 06:10:06 +03:00
Sergey
c9198a40a7
fix(scripts): project-status fullstack backend/ path + db/models + no_db removal ( #276 )
...
* refactor(contract): drop NO_DB_SUPPORTED set (issue #274 )
* fix(scripts): route backend checks via backend_root + auto-detect db/models from deps
* refactor(templates): drop no_db marker write from cookiecutter hooks
* test(scripts): cover db/models auto-detect + fullstack all-groups + use_db=no detect
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 05:44:42 +03:00
Sergey
fa6fc9ecbd
fix(cover): remove stale create-readme validate references ( #273 )
...
* fix(cover): replace stale create-readme validate in step 7
* fix(cover): drop create-readme validate edge case mention
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 04:23:02 +03:00
Sergey
ca2a04ce47
refactor(templates): drop README from cookiecutter templates ( #272 )
...
* refactor(templates): remove README.md from cookiecutter templates
* test(templates): drop README expectations, expect WARN instead
* docs(skills): note README is generated post-init via repo-readme
* docs(skills): repo-readme creates README from scratch post-init
* fix(templates): drop readme field from pyproject after README removal
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-05 04:15:43 +03:00
Sergey
70b8203704
feat(readme): switch support link to /contacts ( #270 )
...
* 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>
2026-08-05 03:54:59 +03:00
Sergey
c0e8ec816a
refactor(scripts): unify project contract + fix no_db polarity + frontend stack detection ( #267 )
...
* refactor(scripts): add project_contract.py single source of truth
* fix(spec-status): word-boundary regex for stack matching (uv!=uvicorn)
* feat(project-status): frontend stack detection + no_db support
* fix(template): cookiecutter use_db=no writes no_db=true marker
* fix(ci): ruff SIM300/PLC0415/W292/E501 in project_contract tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 23:20:11 +03:00
Sergey
7c3ded601f
feat(template): bake shadcn-svelte + Tailwind v4 + TS into fullstack cookiecutter ( #265 )
...
* feat(template): fullstack cookiecutter — Tailwind v4 + TS + shadcn-svelte scaffold
* feat(template): fullstack — shadcn-svelte ui components + dashboard layout
* refactor(template): fullstack — remove counter/Header demo files
* feat(spec): add tailwind/shadcn/ts to STACK_REQUIRED fullstack
* test(template): update fullstack cookiecutter assertions for shadcn-svelte
* fix(ci): ruff format test_cookiecutter_templates
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 22:08:58 +03:00
Sergey
e4f9313641
fix(templates): validate cookiecutter project_name as python identifier ( #263 )
...
* fix(templates): add pre_gen_project hook validating project_name identifier
* fix(templates): use valid identifier defaults in cookiecutter.json
* test(templates): add regression tests for project_name identifier validation
* fix(tests): resolve fullstack package name via backend ctx
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 14:36:33 +03:00
Sergey
06899b3c01
fix(infra): fullstack api dirs include package name ( #261 )
...
* 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>
2026-08-04 13:55:52 +03:00
Sergey
8b05fa74f7
fix(skills): sync SDD headings to 8 in issue and bug-discovery ( #260 )
...
* fix(skills): add 8th SDD heading to issue and bug-discovery
* fix(skills): sync spec and audit SDD headings to 8
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 13:43:32 +03:00
Sergey
13942526a1
feat(skills): audit skill + /audit command for one-command project audit ( #257 )
...
* feat(skills): add audit skill for one-command project audit
* feat(commands): add /audit command as thin wrapper for audit skill
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 13:37:03 +03:00
Sergey
8e00969c3e
feat(skills): code-standards architecture + tests sections, scattered-models check ( #256 )
...
* feat(skills): code-standards architecture + tests sections
* feat(infra): scattered-models AST check in project-status
* test(infra): scattered-models check tests (10 cases)
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 13:31:15 +03:00
Sergey
aa1e5c08ae
feat(agents): reviewer cross-file impact analysis + paired update specs ( #255 )
...
* feat(agents): add Section 10 cross-file impact analysis to reviewer
* feat(agents): extend reviewer investigation budget for cross-file
* feat(agents): add cross-file spec template and examples to reviewer
* feat(agents): add cross-file edge cases verdict mapping to reviewer
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 13:18:08 +03:00
Sergey
feea1b58d9
feat(skills): feature-spec impact analysis + 8th SDD section ( #254 )
...
* feat(skills): feature-spec impact analysis + 8th SDD section
* feat(tools): validate 8th SDD section in create-issue
* test(tools): cover 8th SDD section in create-issue tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-04 13:05:37 +03:00
Sergey
baf6b30547
fix(infra): AST route imports + check_tests structure + check_readme full port ( #248 )
...
* feat(infra): AST route imports check in project-status
* feat(infra): check_tests structure + AST stub-detector
* feat(infra): check_readme full port from validateReadme
* refactor(infra): drop validate mode from create-readme tool
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 20:50:04 +03:00
Sergey
93911f2af6
refactor(infra): eliminate globals + split check_pyproject in project-status ( #247 )
...
* refactor(infra): introduce RepoCtx, eliminate globals in project-status
* refactor(infra): split check_pyproject into 13 sub-functions
* test(infra): add RepoCtx + 13 sub-function tests, migrate cookiecutter tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 20:34:04 +03:00
Sergey
10df459cee
fix(infra): enforce nested src/<package>/ layout in project-status + cookiecutter ( #246 )
...
* fix(infra): nested src/<package>/ layout in project-status oracle
* fix(templates): nested packages and drop src. prefix in cookiecutter
* test(infra): cover nested src/<package>/ layout contract #241
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 20:06:36 +03:00
Sergey
596aa9b18a
fix(pipeline-status): scan all rotated memory files in check_memory ( #245 )
...
* refactor(pipeline-status): split get_memory_file_path into _resolve_memory_base + get_memory_files
* test(pipeline-status): update check_memory tests for multi-file scan
* test(pipeline-status): add rotation/mtime/glob coverage
* fix(ci): move os/time imports to top-level in test_pipeline_status
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 19:10:18 +03:00
Sergey
1e9ee49a1d
feat(infra): check_pyproject and --repo flag in project-status ( #240 )
...
* 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>
2026-08-03 18:36:18 +03:00
Sergey
52343e2a78
feat(memory): rotate repo memory files by size without compaction ( #239 )
...
* feat(memory-syncer): rotate files by 50KB size, dedup across files
* docs(memory-skill): document file rotation, remove inline compaction
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 18:01:41 +03:00
Sergey
b3aac737eb
feat(spec): project template skill init and check flow ( #237 )
...
* 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>
2026-08-03 17:37:55 +03:00
Sergey
51a5300423
feat(spec): update stack required and jwt auth template ( #236 )
...
* feat(spec): update STACK_REQUIRED for svelte and quality tools
* fix(templates): align jwt auth with issue contracts
* docs(spec): update template c stack and migration note
* fix(ci): format tests/test_spec_status.py
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 17:21:43 +03:00
Sergey
35b6c6e542
feat(infra): cookiecutter templates backend fullstack cli ( #235 )
...
* feat(infra): backend cookiecutter template with fastapi tortoise
* feat(infra): cli cookiecutter template with typer entry point
* feat(infra): fullstack cookiecutter template with sveltekit frontend
* test(infra): cookiecutter template tests and render fixes
* style(infra): ruff cleanup for cookiecutter template tests
* style(infra): ruff format cookiecutter template tests
* fix(infra): handle use_db no use_auth no in cookiecutter
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 17:06:24 +03:00
Sergey
42c8e2d31e
feat(infra): project-status check oracle and ts wrapper ( #233 )
...
* feat(infra): project-status python oracle
* feat(infra): project-status ts wrapper
* feat(infra): project-status deny rules and config
* test(infra): project-status oracle and tool tests
* fix(ci): ruff format project-status.py and tests
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 15:31:42 +03:00
Sergey
cc2c896290
fix(spec): spec-status parser quotes crlf bom ( #232 )
...
* fix(spec): strip quotes crlf bom in spec-status parser
* test(spec): cover quotes crlf bom trailing newline cases
* fix(ci): format test_spec_status.py write_bytes call
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-03 15:08:50 +03:00
Sergey
80f21cdf08
feat(config): add deepseek-v4-flash:0731 model for ollama-cloud ( #221 )
...
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-02 02:15:51 +03:00
Sergey
b7b1920385
fix(permissions): harden bash rules against repo destruction ( #218 )
...
* 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>
2026-08-01 06:54:33 +03:00
Sergey
37ebcd0e08
chore(cleanup): remove stale references to deprecated docs infrastructure ( #212 )
...
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 04:43:10 +03:00
Sergey
b2329210d5
chore(cleanup): delete docs-reviewer infrastructure ( #210 )
...
* chore(cleanup): remove docs-reviewer agent and post-docs-review tool
* chore(cleanup): remove scaffold-handoff, adr-refs check, CI and tests
* chore(cleanup): remove docs/project-map directory
* chore(cleanup): drop docs-reviewer entry and post_docs_review keys from opencode.json
* chore(cleanup): drop docs-reviewer refs from tests, skills and shared tools comment
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 04:15:41 +03:00
Sergey
1d35c5ed1c
refactor(pipeline): update templates and agent prompts for 6-phase ( #209 )
...
* refactor(run-pipeline): drop Template B and handoff refs for 6-phase
* refactor(agents): switch reviewer and memory-syncer to PR body
* refactor(docs): update pipeline to 6 phases and drop DOCS refs
* fix(docs): update RU pipeline row and memory-syncer description
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 04:02:03 +03:00
Sergey
9dd462b764
refactor(pipeline): remove DOCS phase from pipeline-status ( #208 )
...
* 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>
2026-08-01 03:48:41 +03:00
Sergey
0c1e3e7d39
feat(create-pr): enforce Watch out and Pending headings in PR body ( #207 )
...
* 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>
2026-08-01 03:28:35 +03:00
Sergey
85d7d62fcd
fix(cover): restore sub-icon slot in cover.svg ( #201 )
...
* fix(cover): restore sub-icon slot in cover.svg
* docs(cover): add ADR-089 and handoff for PR #201
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 02:56:40 +03:00
Sergey
87d6c4464b
feat(cover): add /cover command and VERCEL_TOKEN placeholder ( #199 )
...
* feat(cover): add /cover command for branded cover generation
* chore(env): add VERCEL_TOKEN placeholder to .env.example
* docs(project-map): add cover command, ADR-088 and handoff for PR #199
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 02:07:34 +03:00
Sergey
66f0afa58b
refactor(draw-image): decouple tests from production cover.svg ( #197 )
...
* refactor(draw-image): add tests/fixtures/cover.svg and loadFixture helper
* feat(draw-image): add --template-dir flag to cli for test isolation
* refactor(draw-image): switch tests from templates/cover to fixtures
* chore(draw-image): simplify production cover.svg now decoupled from tests
* docs(handoff): add handoff + ADR for issue #196
* docs(handoff): set PR number
* docs(project-map): update after structural changes
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 01:22:15 +03:00
Sergey
cdd8ba20e3
chore(assets): update cover without subtitle ( #195 )
...
* chore(assets): update cover without subtitle
* fix(assets): restore optional slots in cover template for engine tests
* docs(handoff): add handoff + ADR for PR #195 cover update
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 01:03:14 +03:00
Sergey
f0701558d3
fix(agents): add safe read-only commands to reviewer bash allow-list ( #193 )
...
* fix(agents): add safe read-only commands to reviewer bash allow-list
* docs(adr): add ADR-085 reviewer allow-list expansion rationale
* docs(handoff): add handoff for reviewer allow-list expansion
* docs(handoff): set PR number
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-08-01 00:01:57 +03:00
Sergey
3caa83e617
fix(draw-image): per-process output TMP in e2e.test.ts beforeAll race ( #187 )
...
* fix(draw-image): per-process output TMP in e2e.test.ts beforeAll
* docs(handoff): add handoff and ADR for e2e.test.ts beforeAll fix
* docs(handoff): set PR number 187
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 22:49:46 +03:00
Sergey
72caab4097
fix(draw-image): per-process output TMP in beforeAll for parallel vitest ( #186 )
...
* fix(draw-image): per-process output TMP in integration tests
* fix(draw-image): per-process output TMP in e2e tests
* fix(draw-image): per-process output TMP in cleanup test
* docs(handoff): add handoff and ADR for beforeAll output TMP fix
* docs(handoff): set PR number
* docs(handoff): set PR number 186
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 22:39:58 +03:00
Sergey
8c00346b76
fix(draw-image): per-process temp dir in renderToPng test helpers ( #184 )
...
* fix(draw-image): per-process temp dir in renderToPng test helpers
* docs(handoff): add handoff and ADR for renderToPng temp dir fix
* docs(project-map): note per-process temp dir fix in renderToPng helpers
* docs(handoff): set PR number
* docs(handoff): replace PR number placeholder in frontmatter
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 22:28:04 +03:00
Sergey
0bf97cf1c5
fix(scripts): compute next ADR as max+1 not count+1 in scaffold ( #182 )
...
* fix(scripts): compute next ADR as max+1 not count+1 in scaffold
* docs(handoff): add handoff and ADR-079 for ADR numbering fix
* docs(handoff): set PR number
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 22:13:30 +03:00
Sergey
e954284ec3
docs(config): add Config Edits rule to AGENTS.md, expand configure-opencode ( #181 )
...
* docs(agents): add Config Edits rule linking configure-opencode skill
* docs(configure-opencode): expand scope rule to AGENTS, skills, agents, commands
* docs(handoff): scaffold handoff and ADR-078 for config-edits rule
* docs(handoff): set PR number 181 in handoff and ADR-078
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 22:01:56 +03:00
Sergey
c87fcc7958
fix(scaffold-handoff): update usage comment to reflect .opencode/scripts/ path ( #180 )
...
* fix(scaffold-handoff): update usage comment to reflect .opencode/scripts/ path
* docs(handoff): add handoff and ADR-077 for scaffold-handoff usage comment fix
* docs(handoff): set PR number
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 21:53:53 +03:00
Sergey
f67a9298cc
fix(run-pipeline): replace origin/master with origin/HEAD in templates B and C ( #179 )
...
* fix(run-pipeline): replace origin/master with origin/HEAD in templates B and C
* docs(handoff): add handoff and ADR for run-pipeline origin/HEAD fix
* docs(handoff): set PR number
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 21:47:31 +03:00
Sergey
39de98dc95
fix(draw-image): race condition on shared .tmp-render.svg breaks parallel renders ( #178 )
...
* fix(draw-image): use pid-based tmp svg and cleanup in finally
* test(draw-image): decouple e2e.optional from leftover tmp svg
* test(draw-image): add cleanup unit test for tmp svg lifecycle
* docs(draw-image): add handoff and ADR for tmp svg race fix
* docs(handoff): set PR number
* docs(project-map): update after structural changes
---------
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 21:38:54 +03:00