Commit graph

78 commits

Author SHA1 Message Date
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
Sergey
4258621def
fix(repo-readme): create mode does not overwrite existing local README (#175)
* 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>
2026-07-31 21:10:29 +03:00
Sergey
1bc8b8ed05
feat(telegram): add telegram-send plugin-tool for Bot API messaging (#174)
* feat(telegram): add CLI project with Bot API client

* feat(telegram): add telegram-send plugin-tool

* test(telegram): add unit tests for markdown, config, api

* chore(env): add TELEGRAM_CHAT_ID to .env.example

* docs(handoff): add handoff and ADR for telegram-send

* docs(handoff): set PR number 174

* docs: update project map for telegram-send tool

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 20:42:33 +03:00
Sergey
43b60d6101
feat(feature-spec): add SDD-style Q&A skill for feature planning (#172)
* feat(feature-spec): add SDD-style Q&A skill for feature planning

* docs(pr-172): add handoff, ADR-072, update project-map

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 19:58:12 +03:00
Sergey
c491b5fad1
fix(issue): align headings with create-issue validation and add SDD sections (#169)
* fix(issue): align headings with create-issue validation and add SDD sections

* docs(issue): add handoff, ADR, and fix CI for SDD validation

* docs(pr-169): fix handoff sections

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 19:42:14 +03:00
Sergey
6977a9130a
fix(memory): cleanup bloat and make memory-syncer self-maintaining (#167)
* fix(memory-syncer): enforce dedup, strict distillation, 100KB compaction, frontmatter fix

* docs(handoff): add handoff and ADR-070 for memory cleanup and self-maintaining

* docs(handoff): set PR number 167

* docs(handoff): fix Pending/Watch out sections + remove stale ADR comment

* fix(memory-syncer): encoding artifact and trailing newlines

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 19:01:26 +03:00
Sergey
27db3851b6
fix(agents): resolve prompt contradictions and path mismatches (#163)
* fix(agents): allow echo and fix paths in docs-reviewer

* fix(agents): allow echo and load memory skill in memory-syncer

* fix(agents): fix skills path and load code-standards in reviewer

* fix(pipeline): remove checkout master from template E

* fix(scripts): update scaffold path in pipeline-status error

* docs(handoff): add handoff and ADR for prompt contradictions fix

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-31 18:47:32 +03:00
Sergey
746bb7438e
fix(draw-image): use density 72 for 1024x1024 PNG output (#161)
* fix(draw-image): use density 72 for 1024x1024 PNG output

* test(draw-image): assert real PNG dimensions via IHDR decode

* chore(assets): regenerate cover.png at 1024x1024

* docs(handoff): add handoff and ADR for density fix

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 23:31:02 +03:00
Sergey
d2cef94ac9
feat(create-readme): add cover image reference to template and validation (#158)
* feat(create-readme): add cover image reference to template and validation

* feat(repo-readme): extend skill with cover generation + add command

* chore(assets): add opencode brand logo and cover.png

* docs(handoff): scaffold cover-pipeline PR notes

* docs(handoff): set PR number

* docs(project-map): update after cover pipeline structural changes

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 23:15:12 +03:00
Sergey
556a5b57eb
fix(create-readme): validate EN switcher anchor symmetrically (#155)
* fix(create-readme): validate EN switcher anchor symmetrically

* docs(handoff): add handoff and ADR for switcher validation

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 19:57:46 +03:00
Sergey
7330f05055
feat(create-readme): block manual License section and align repo README tagline (#153)
* feat(create-readme): flag manual License section as ERROR

* fix(readme): wrap tagline delimiters and remove License section

* docs(repo-readme): document License check in SKILL.md

* docs(handoff): add handoff and ADR for license-block PR

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 18:06:15 +03:00
Sergey
6c80eb8458
feat(create-readme): add bilingual tagline and repo_name validation (#151)
* feat(create-readme): add bilingual tagline and repo_name validation

* docs(repo-readme): bilingual tagline + repo_name validation rules

* docs(handoff): add handoff and ADR-064 for bilingual tagline

* docs(handoff): set PR number

* docs(project-map): update after PR#151 bilingual tagline changes

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 04:50:50 +03:00
Sergey
4bb504a604
fix(create-readme): allow empty quick_start with steps-only Quick Start (#149)
* fix(create-readme): allow empty quick_start with steps-only Quick Start

* docs(handoff): add handoff + ADR for empty-quick-start

* docs(handoff): set PR number

* docs(project-map): update create-readme.ts role for PR#149

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 04:06:52 +03:00
Sergey
8308de0981
feat(create-readme): add clickable steps to Quick Start (#146)
* feat(create-readme): add clickable steps and conditional bash block

* docs(repo-readme): document clickable steps params and example

* docs(handoff): add handoff and ADR for clickable-steps

* docs(handoff): set PR number

* docs(project-map): update create-readme params after PR#146

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 03:07:09 +03:00
Sergey
0d16b028fa
fix(draw-image): optional badge/subtitle + self-healing docker entrypoint (#144)
* fix(draw-image): conditional slot bg + optional subtitle in buildSvg

* test(draw-image): optional badge/subtitle unit+integration+e2e

* feat(docker): self-healing entrypoint shim + .dockerignore

* test(draw-image): pytest assert --subtitle omitted when absent

* docs(handoff): optional badge/subtitle + docker entrypoint handoff+ADR

* docs(handoff): set PR number 144

* docs(project-map): fix PR refs 143 to 144

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-30 01:23:25 +03:00
Sergey
56b67d2d5c
feat(draw-image): SVG template renderer for on-brand covers (#134)
* 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>
2026-07-29 23:42:50 +03:00
Sergey
2a6d6eee2a
feat(create-readme): optional git clone, development block, remove telegram (#130)
* feat(create-readme): add include_clone, development_en/ru, remove telegram

* docs(readme): update SKILL.md template and params for optional clone and development

* docs(readme): add ADR-058, handoff, project map

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 20:50:52 +03:00
Sergey
c3efae6a30
fix(agents): enforce bug-discovery protocol across all subagent layers (#128)
* fix(agents): strengthen bug-discovery protocol in AGENTS.md to MANDATORY

* fix(skills): add bug-discovery triggers to run-pipeline templates A-E

* fix(agents): add bug-discovery section to subagent bodies

* fix(skill): strengthen bug-discovery description for semantic matching

* docs(handoff): scaffold handoff and ADR for bug-discovery protocol

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 18:29:41 +03:00
Sergey
1bd089936e
fix(readme): replace GB flag with US flag for English section (#126)
* fix(readme): replace GB flag with US flag for English section

* fix(create-readme): validate US English flag header in validateReadme

* docs(handoff): set PR number

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 18:09:10 +03:00
Sergey
7249f1fcb5
fix(memory): keyword search out-of-box + doctor gaps + tests (#124)
* 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>
2026-07-29 17:20:59 +03:00
Sergey
d724e29f96
fix(pipeline-status): use statusCheckRollup instead of actions/runs CI filter (#122)
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 05:29:10 +03:00
Sergey
c9533050b8
refactor(agents): extract bug-discovery skill, AGENTS.md to English, EN descriptions (#120)
Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 05:14:28 +03:00
Sergey
4e926a43a7
fix(readme): russian heading, simplified support, access_url, env username (#118)
* fix(readme): russian heading, simplified support, access_url, env username

* fix(ci): wrap long assert to satisfy ruff E501 in test_permissions.py

* docs(project-map): add PR#118 tags (create-readme, repo-readme, .env.example)

* fix(ci): format test_permissions.py for ruff format check

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 04:56:35 +03:00
Sergey
464fa6ec83
feat(readme): new bilingual standard v2 with features table (#116)
* feat(readme): new bilingual standard v2 with features table

* docs(handoff): rename handoff and ADR to PR number convention

* docs(review): fix ADR-051 section name and add PR#116 refs

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 03:22:28 +03:00
Sergey
f1b8ff94bf
feat(agents): enable create_issue and behavioral rules (#113)
* feat(agents): enable create_issue for subagents

* docs(agents): add bug discovery protocol and linear execution rule

* docs(handoff): add handoff and ADR

* docs(handoff): set PR number

* docs(project-map): update after structural changes

* fix(agents): revert create_issue for read-only subagents

* fix(agents): re-enable create_issue and update tests

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 01:25:30 +03:00
Sergey
7ea12b982d
feat(skills): add repo-readme skill and create-readme tool (#112)
* feat(tools): add create-readme tool

* feat(skills): add repo-readme skill

* docs(handoff): add handoff and ADR

* docs(handoff): set PR number

* docs(project-map): update after structural changes

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-29 01:04:51 +03:00
Sergey
7d730baa4c
chore(config): remove deprecated ai provider and add memory readme section (#106)
* chore(config): remove deprecated ai provider and add memory readme section

* docs(handoff): set PR number 106

* docs(project-map): update after structural changes

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-27 02:23:33 +03:00
Sergey
4cf149cb02
docs(memory): reindex + update SKILL.md (#104)
* feat(memory): add OPENAI_EMBEDDING_BATCH_DELAY support

* docs(memory): update SKILL.md for progressive enhancement and auto-setup

* docs(memory): update AGENTS.md tool usage policy

* docs(memory): fix stale snake_case tool references in skills, agents, tools

* docs(handoff): add handoff + ADR for reindex-skill-update

* docs(handoff): set PR number

* refactor(memory): extract _embed_in_batches to satisfy xenon rank A

---------

Co-authored-by: opencode-agent <agent@opencode.local>
2026-07-27 02:08:35 +03:00