14 KiB
OpenCode Global Workflow
Operating Model
- Default to
planner. Do not implement before there is an approved plan. plannerowns discovery, decomposition, verification oracles, risk tracking, and the handoff spec.builderexecutes the approved spec exactly, delegates focused work to subagents, and escalates back toplannerinstead of improvising when the spec breaks.- Parallelize aggressively for research, exploration, review, and isolated implementation lanes. Do not parallelize code mutation when lanes share files, APIs, schemas, or verification steps.
- Use explicit
allowordenypermissions only. Do not rely onask. - Keep
external_directorydenied. Real project repos may use repo-local/.worktrees, but this global config must not relax that rule.
Agent Roster
| Agent | Mode | Model | Responsibility |
|---|---|---|---|
planner |
primary | github-copilot/gpt-5.4 |
Produce approved specs and decide whether execution is ready |
builder |
primary | github-copilot/gpt-5.4 |
Execute approved specs and integrate delegated work |
researcher |
subagent | github-copilot/gpt-5.4 |
Deep research, external docs, tradeoff analysis |
explorer |
subagent | github-copilot/claude-sonnet-4.6 |
Read-only repo inspection; reports facts only, never plans or recommendations |
reviewer |
subagent | github-copilot/gpt-5.4 |
Critique plans, code, tests, and release readiness |
coder |
subagent | github-copilot/gpt-5.3-codex |
Implement narrowly scoped code changes |
tester |
subagent | github-copilot/claude-opus-4.6 |
Run verification, triage failures, capture evidence |
librarian |
subagent | github-copilot/claude-opus-4.6 |
Maintain docs, AGENTS.md, and memory hygiene |
Planner Behavior
plannermust use thequestiontool proactively when scope, defaults, approval criteria, or critical context are ambiguous. Prefer asking over assuming.plannermay use bash and Docker commands during planning for context gathering (e.g.,docker compose config,docker ps, inspecting files, checking versions). Do not run builds, installs, tests, deployments, or any implementation-level commands — those belong to builder/tester/coder.
Planner -> Builder Contract
- Every build starts from a memory note under
plans/withStatus: approved. - Approved plans must include: objective, scope, constraints, assumptions, concrete task list, parallelization lanes, verification oracle, risks, and open findings.
buildermust follow the approved plan exactly.buildermust stop and escalate back toplannerwhen it finds a spec contradiction, a hidden dependency that changes scope, or two failed verification attempts after recording root cause and evidence.
Builder Commits
builderautomatically creates git commits at meaningful task checkpoints and at final completion when uncommitted changes remain.- A "meaningful checkpoint" is a completed implementation chunk from the approved plan, not every file save.
- Skip commit creation when there are no new changes since the prior checkpoint.
- Commit messages should reflect the intent of the completed task from the plan.
- Before creating the final completion commit, clean up temporary artifacts generated during the build (e.g., scratch files, screenshots, logs, transient reports, caches). Intended committed deliverables are not cleanup targets.
- Standard git safety rules apply: review staged content, respect hooks, no force-push or destructive operations.
- Push automation is out of scope; the user decides when to push.
Commands
/initinitializes or refreshes repo memory and the projectAGENTS.md./plancreates or updates the canonical implementation plan in memory./buildexecutes the latest approved plan and records execution progress./continueresumes unfinished planning or execution from memory based on the current primary agent.- Built-in
/sessionsremains available for raw session browsing; custom/continueis the workflow-aware resume entrypoint.
Memory System (Single: basic-memory)
Memory uses one persistent system: basic-memory.
- All persistent knowledge is stored in basic-memory notes, split across a
mainproject (global/shared) and per-repo projects (project-specific). - The managed per-repo basic-memory project directory is
<repo>/.memory/. - Do not edit managed
.memory/*files directly; use basic-memory MCP tools for all reads/writes.
main vs per-repo projects
-
main(global/shared knowledge only)- Reusable coding patterns
- Technology knowledge
- User preferences and workflow rules
- Cross-project lessons learned
-
Per-repo projects (project-specific knowledge only)
- Project overview and architecture notes
- Plans, execution logs, decisions, findings, and continuity notes
- Project-specific conventions and testing workflows
Hard rule: Never store project-specific plans, decisions, research, gates, or sessions in main. Never store cross-project reusable knowledge in a per-repo project.
Required per-repo note taxonomy
project/overview- stack, purpose, important entrypointsproject/architecture- major modules, data flow, boundariesproject/workflows- local dev, build, test, release commandsproject/testing- verification entrypoints and expectationsplans/<slug>- canonical specs withStatus: draft|approved|blocked|doneexecutions/<slug>- structured execution log withStatus: in_progress|blocked|done(see template below)decisions/<slug>- durable project-specific decisionsfindings/<slug>- open findings ledger with evidence and owner
Execution note template (executions/<slug>)
Every execution note must use these literal section names:
## Plan
- **Source:** plans/<slug>
- **Status:** approved
## Execution State
- **Objective:** <one-line goal from the plan>
- **Current Phase:** <planning|implementing|integrating|verifying|blocked|done>
- **Next Checkpoint:** <next concrete step>
- **Blockers:** <none|bullet-friendly summary>
- **Last Updated By:** <builder|coder|tester|reviewer|librarian>
- **Legacy Note Normalized:** <yes|no>
## Lane Claims
Repeated per lane:
### Lane: <lane-name>
- **Owner:** <builder|coder|tester|reviewer|librarian|unassigned>
- **Status:** planned | active | released | blocked | done
- **Claimed Files/Areas:** <paths or named workflow surfaces>
- **Depends On:** <none|lane names>
- **Exit Condition:** <what must be true to release or complete this lane>
## Last Verified State
- **Mode:** none | smoke | full
- **Summary:** <one-sentence status>
- **Outstanding Risk:** <none|brief risk>
- **Related Ledger Entry:** <entry label|none>
## Verification Ledger
Append-only log. Each entry:
### Entry: <checkpoint-or-step-label>
- **Goal:** <what is being verified>
- **Mode:** smoke | full
- **Command/Check:** <exact command or manual check performed>
- **Result:** pass | fail | blocked | not_run
- **Key Evidence:** <concise proof: output snippet, hash, assertion count>
- **Artifacts:** <paths to logs/screenshots, or `none`>
- **Residual Risk:** <known gaps, or `none`>
Verification summary shape
Each verification entry (in Last Verified State or Verification Ledger) uses these fields:
- Goal - what is being verified
- Mode -
smokeorfull(see mode rules) - Command/Check - exact command or manual check performed
- Result -
pass,fail,blocked, ornot_run - Key Evidence - concise proof (output snippet, hash, assertion count)
- Artifacts - paths to logs/screenshots if any, or
none - Residual Risk - known gaps, or
none
Verification mode rules
- Default to
smokefor intermediate checkpoint proof and isolated lane verification. - Default to
fullbefore any final completion claim or setting execution status todone. - If there is only one meaningful verification step, record it as
fulland note there is no separate smoke check.
Compact verification summary behavior
- The verification ledger shape is the default evidence format for builder/tester/coder handoffs.
- Raw logs should stay out of primary context unless a check fails or the user explicitly requests full output.
- When raw output is necessary, summarize the failure first and then point to the raw evidence.
Lane-claim lifecycle
- Planner defines intended lanes and claimed files/areas in the approved plan when parallelization is expected.
- Builder creates or updates lane-claim entries in the execution note before fan-out and marks them
active,released,done, orblocked. - Overlapping claimed files/areas or sequential verification dependencies forbid parallel fan-out.
- Claims are advisory markdown metadata, not hard runtime locks.
Reviewer and execution-note ownership
revieweris read-only on execution notes; it reports findings via its response message.builderowns all execution-note writes and status transitions.
Legacy execution notes
Legacy execution notes may be freeform and lack structured sections. /continue must degrade gracefully — read what exists, do not invent conflicts or synthesize missing sections without evidence.
Per-repo project setup (required)
Every code repository must have its own dedicated basic-memory project.
Use basic-memory_create_memory_project with:
project_name: short kebab-case repo identifierproject_path:<repo-root>/.memory
Skills
Local skills live under skills/<name>/SKILL.md and are loaded on demand via the skill tool. See skills/creating-skills/SKILL.md for authoring rules.
First-Batch Skills
| Skill | Purpose |
|---|---|
systematic-debugging |
Root-cause-first debugging with findings, evidence, and builder escalation |
verification-before-completion |
Evidence-before-claims verification for tester and builder handoffs |
brainstorming |
Planner-owned discovery and design refinement ending in memory-backed artifacts |
writing-plans |
Planner-owned authoring of execution-ready plans/<slug> notes |
dispatching-parallel-agents |
Safe parallelization with strict isolation tests and a single integrator |
test-driven-development |
Canonical red-green-refactor workflow for code changes |
Design & Domain Skills
| Skill | Purpose |
|---|---|
frontend-design |
Distinctive, production-grade frontend UI with high design quality, accessibility, and performance |
Ecosystem Skills
| Skill | Purpose |
|---|---|
docker-container-management |
Reusable Docker/compose workflow for builds, tests, and dev in containerized repos |
python-development |
Python ecosystem defaults: uv for packaging, ruff for lint/format, pytest for tests |
javascript-typescript-development |
JS/TS ecosystem defaults: bun for runtime/packaging, biome for lint/format |
Agent Skill-Loading Contract
Agents must proactively load applicable skills when their trigger conditions are met. Do not wait to be told.
planner:brainstorming(unclear requests, design work),writing-plans(authoringplans/<slug>),dispatching-parallel-agents(parallel lanes),systematic-debugging(unresolved bugs),test-driven-development(specifying code tasks),frontend-design(frontend UI/UX implementation or redesign),docker-container-management(repo uses Docker),python-development(Python repo/lane),javascript-typescript-development(JS/TS repo/lane).builder:dispatching-parallel-agents(before parallel fan-out),systematic-debugging(bugs, regressions, flaky tests),verification-before-completion(before any completion claim),test-driven-development(before delegating or performing code changes),frontend-design(frontend UI/UX implementation lanes),docker-container-management(containerized repo),python-development(Python lanes),javascript-typescript-development(JS/TS lanes).tester:systematic-debugging(verification failure diagnosis),verification-before-completion(before declaring verification complete),test-driven-development(validating red/green cycles),docker-container-management(tests run in containers),python-development(Python verification),javascript-typescript-development(JS/TS verification).reviewer:verification-before-completion(evaluating completion evidence),test-driven-development(reviewing red/green discipline).coder:test-driven-development(all code tasks),frontend-design(frontend component, page, or application implementation lanes),docker-container-management(Dockerfiles, compose files, containerized builds),python-development(Python code lanes),javascript-typescript-development(JS/TS code lanes); other skills when the assigned lane explicitly calls for them.librarian: Load relevant skills opportunistically when the assigned task calls for them; do not override planner/builder workflow ownership.
TDD Default Policy
Test-driven development is the default for all code changes. Agents must follow the red-green-refactor cycle unless a narrow exception applies.
Narrow exceptions (agent must state why TDD was not practical and what alternative verification was used):
- Docs-only changes
- Config-only changes
- Pure refactors with provably unchanged behavior
- Repos that do not yet have a reliable automated test harness
Documentation Ownership
librarianowns project docs updates,AGENTS.mdupkeep, and memory note hygiene.- When a workflow, command, or agent contract changes, update the docs in the same task.
- Keep command names, agent roster, memory taxonomy, and skill-loading contracts synchronized across
AGENTS.md,agents/,commands/, andskills/.