This document describes what every agent, skill, reference document, and tool in this repo is for. Use it as a catalog — if you want to know how to use them, see USERGUIDE.md instead.
- Agents (65)
- Skills (48)
- Shared protocols (27)
- Memory & code-search MCPs
- Custom tools (18)
- Commands (4)
- Hooks
Every agent lives in agents/<name>.md or a subdirectory (agents/security/, agents/code-review/, agents/performance/, agents/sdlc/onboard/). All agents share: frontmatter, "how you think" section, progress announcements, micro-step execution, phase-by-phase workflow, orchestrator + --phase sub-task mode, confidence gate-loop, and verifier-isolation clause.
Micro-agent pattern: coordinator dispatches → each specialist writes its own output file → coordinator synthesizes. One agent = one job = one context window. Parallel waves use PARALLEL_WAVE_PROTOCOL.md (Round 1: code HANDOFFs, Round 2: review HANDOFFs, Round 3: runtime HANDOFFs).
Execution modes (all long-running agents):
- Orchestrator mode (default) — announces phase plan, spawns one
task(agent=self, prompt="--phase: N name ...")per phase. Each sub-task writes findings todocs/work/<agent>/<slug>/phaseN.mdand returns in under 90 s. --phase: N namemode — runs exactly one named phase, reads the previous phase output, writes its own. No sub-spawning. Used for parallelism.
Orchestrates the full SDLC across 4 operating modes. Delegates every technical task to specialist agents — never does technical work itself. Enforces strict git branching discipline: main = production, every mode starts with a typed branch and ends with a PR.
- Mode 1 (
/sdlc init) — new project from scratch, Phases 0–5. Discovery interview → competitive research → planning → requirements → design → implementation → review. Phases 0–3 docs commit tosdlc/setupbranch; merged tomainvia PR before Phase 4. Feature branches cut from updatedmain. - Mode 2 (
/sdlc onboard) — understand an existing codebase. Createsdocs/onboardbranch. Starts withgit-expert --inspect(hot files, history). Detects UI-bearing status. Produces full architecture + onboarding docs. Commits via PR tomain. - Mode 3 (
/sdlc feature) — add a feature. Discovery interview → impact analysis → design → implement onfeat/[slug]branch → verify → document → squash merge tomainvia PR. - Mode 4 (
/sdlc improve) — audit and improve an existing system. Discovery interview determines which dimensions to audit. Runs specialist audits (UX, code quality, performance, security, DB). Synthesizes findings into a prioritized S/M/L backlog. Executes approved items onimprove/[slug]branch. PR at end. Optional focus:"ux","performance","security","code-quality".
Phase 3 (Design) produces both docs/API_DESIGN.md (human-readable narrative) and docs/api/openapi.yaml (validated OpenAPI 3.0 spec). The spec is a gate requirement — Phase 3 cannot pass until it exists and passes swagger-cli validate with 0 errors.
Enforces confidence-based gates (asymmetric: < 5 fail, 5–6 revise max 3×, ≥ 7 pass) and Inter-Phase Check-In protocol at every phase boundary.
Invoked between any two phases (or on demand) to pressure-test what the sdlc-lead or any specialist has concluded. Not a reviewer — a structured adversary.
What it does: Reads the output of the previous phase (design docs, audit report, architecture decision), generates 5–8 specific challenges graded by severity (FATAL / MAJOR / MINOR / NITPICK), then runs a rebuttal cycle where the original specialist must defend or concede each challenge.
Challenge categories: unstated assumptions, scope creep in disguise, missing failure modes, premature optimization, dependency risk, security gaps, scalability cliffs, testability blockers.
Output: docs/work/challenger/challenge-<phase>.md — numbered challenges, severity, supporting evidence, rebuttal outcome (DEFENDED / CONCEDED / DEFERRED). Conceded items become mandatory follow-up tasks before the gate passes.
Protocol: Fully defined in agents/shared/CHALLENGER_PROTOCOL.md. Called by sdlc-lead automatically between Phase 2→3 (requirements→design) and Phase 3→4 (design→implementation). Can be invoked manually on any output with /challenge.
Implements code from SDLC design documents. Called by sdlc-lead via HANDOFF for all implementation work — never invents features, never introduces unlisted tech, never writes from API training-data assumptions.
Four Laws (enforced before writing any code):
- Read the design docs first — ARCHITECTURE.md, SRS.md, DATABASE.md, API_DESIGN.md, IMPROVEMENT_*_DESIGN.md are the spec. Nothing gets built that isn't in the spec.
- Verify every library API via Context7 — calls
resolve-library-id+get-library-docsfor every external library before use. If Context7 is unavailable, checksnode_modules/source directly. - Match existing patterns — reads 2–3 existing files in the target directory first; matches their structure, naming, imports, and error-handling style.
- Follow TECH_STACK.md — reads
docs/TECH_STACK.mdin Phase 1. All library/framework choices must match. Flags deviations in the Completion Manifest rather than silently adopting new tech.
Anti-slop rules (enforced on every file):
- No try-catch outside system boundaries (user input, external APIs, file I/O)
- No abstractions with fewer than 2 real implementations
- No single-use helper functions (inline them)
- No what-comments (only why, only when non-obvious)
- No unused imports, no scope creep, no speculative generalization
- Trust the framework — don't re-implement what it provides
6-phase execution: Read design docs → Verify APIs via Context7 → Implement → Test → Self-audit → Report
Produces: Implementation files + VERIFY_ITEM_[n].md Completion Manifest (files produced, API verifications, tech stack compliance, anti-slop audit result, test result, deferred items)
Distinct from: code-reviewer (audits after implementation), test-engineer (test strategy), sre-engineer (CI/CD and ops — NOT application code)
Called by sdlc-lead at every phase boundary to commit docs, create branches, cut releases, and inspect history. Six modes:
--init— bootstrap repo,.gitignore, remotes, hooks, branch protection--feature— branch creation, atomic commits, conventional-commit messages, draft PR on Gitea + GitHub--release— semver bump, Keep-a-Changelog, signed tag, GitHub + Gitea releases--recover— reflog-based rescue (bad reset, detached HEAD, deleted branch)--inspect— history forensics (blame, pickaxe, bisect, hot-file detection)--sync— multi-remote prune + mirror
Never force-pushes protected branches, never --no-verify, scans for secrets before every commit.
Three execution modes:
- Orchestrator (default) — breaks multi-question tasks into sub-tasks, announces plan, spawns
--singleper question, reports each finding as it returns --single: <question>— researches exactly one question (30–60 s), appends finding to output file, no sub-spawning--plan: <topic>— returns a numbered question list only, no searching
OWASP Top 10, threat modeling, Semgrep scans, dependency audits. Runs as 5-phase orchestrator: understand → automated scan → OWASP + STRIDE manual → verify → attack chain analysis → report.
- Phase 5b: Attack Chain Analysis — After all individual findings are verified, runs a second-order pass that builds a pre-condition/post-condition inventory of every real finding, then tests pairs and triples for exploitable multi-step chains. Each discovered chain (e.g., "Info Disclosure → Credential Reuse → Admin Takeover") gets a
C-Nfinding entry in the final report with step-by-step attack narrative, a severity bump rule (often higher than any individual link), and a single "break the chain" remediation priority. Tests 9 classic chain patterns: recon→targeted attack, auth bypass→privilege escalation, XSS→session hijack, SSRF→internal pivot, path traversal→credential theft, misconfiguration→enumeration, weak crypto→forgery, race condition+business logic, CVE+reachability. - Custom gap-filler rules (98 rules, 6 languages) installed to user's personal store at
~/.config/opencode/.semgrep/— C#, Kotlin, Swift, Rust, PHP, and C++ bridge rules loaded automatically per detected language. - Offline scanning —
--offlineflag uses cached registry packs at~/.semgrep/registry-cache/. Pre-populate withscripts/cache-registry-packs.sh. - Community rules cached at
~/.semgrep/rules/{trailofbits,elttam,gitlab,0xdea}. Install withscripts/update-semgrep-rules.sh.
Four user modes (--review, --debt, --consolidate, --patterns), executed as 4-phase orchestrator internally: understand → tooling → review passes → report.
Reviews across 9 dimensions: complexity, duplication, error handling, type invariants, patterns, naming, comment accuracy, anti-slop, and tech-stack compliance (deps match TECH_STACK.md; no tech outside the design) (threshold ≥ 8). The anti-slop dimension checks for AI-generated bloat patterns cataloged in ANTI_SLOP_RULES.md.
--design— greenfield component/workflow design, WCAG 2.2 AA, style guide, UX spec--review— heuristic review of existing UI, called bysdlc-leadafter code review on UI features--audit— WCAG accessibility audit, called bysdlc-leadin Mode 2 (if UI-bearing) and Mode 3 verify
Runs as 6-phase orchestrator: understand → research → plan → write tests → verify → report. Modes: --strategy, --unit, --e2e, --coverage.
Profile first, optimize second. 7-phase orchestrator: understand → static analysis → profile → identify hotspot → fix → verify → document. Never optimizes without measurement.
Key capabilities added in v0.7.0:
-
PERF_TRACKER.md— persistent session tracker written at Phase 1, updated after every phase. Survives context loss and session restarts. Stored atdocs/performance/PERF_TRACKER.md. Tracks: progress summary (7 rows with status/confidence), baseline metrics, static analysis findings, profiler results, hotspot log, before/after benchmark table. -
Phase 1b — Static Analysis Pass — runs before any profiler. Five grep scans across all source files detect performance anti-patterns without executing code. Scans:
- O(n²) nested loops —
.find()/.filter()insidefor/forEach - N+1 query patterns — DB/fetch call inside a loop
- try/catch performance anti-patterns — four language-specific patterns:
- A:
try/catchinside tight loop → V8 de-optimization (5-20x slowdown in Node.js) - B: Exception-driven control flow in hot paths → 100-1000× vs a guard check
- C: Individual
try/catchperawait→ preventsPromise.allSettledparallelism - D: Re-throw after logging → double stack capture cost
- Python: EAFP misuse in hot loops → use
.get()/ guard check - Go:
errors.New()in hot loop → sentinel error allocated once at init - Rust:
unwrap()panic path in hot loop →filter_map/.ok()
- A:
- Blocking I/O in async paths —
readFileSync,execSync, etc. inside request handlers - Hot-path allocations —
JSON.parse, object spread, string concat inside tight loops
- O(n²) nested loops —
-
Coverage confidence loop — after all 5 scans, the agent cross-checks its grep coverage against a
find-generated source file list, answers a 9-question checklist, and rates coverage 1-10. Re-passes if < 7 (max 3 attempts); surfaces⚠️ BLOCKEDto user if still < 7. -
Verbatim code mandate — every finding requires a
read(filePath=..., offset=..., limit=...)call before it's recorded. Findings from grep output alone are prohibited. Each finding's "Verbatim code" block shows the exact lines fromread(). -
Full report template (Phase 6) —
docs/PERFORMANCE_REPORT.mdfollows a mandatory template with: executive summary, baseline measurements table, oneSTATIC-NNNblock per finding (verbatim code + loop bound + specific impact + concrete fix + profiler confirmation status), profiler results table, fix before/after verbatim code, final benchmark (P50/P95 before and after), regression check table, remaining bottlenecks backlog (with S/M/L effort + P0/P1/P2 priority), data size thresholds, coverage verdict, and handoffs recommended. -
Confidence gate reads from tracker file — gate prints a 7-row table derived from
PERF_TRACKER.md, not from context memory. Phase 5 (verify-fix) uses a raised threshold of 8/10 — a fix without before/after numbers is not verified.
6-phase orchestrator: understand data → research → plan → design + implement → verify → report. Modes: --design, --migrate, --tune, --review.
6-phase orchestrator: understand → research → design → document → verify → write docs. REST + GraphQL, contracts, versioning, pagination, error shapes.
6-phase orchestrator: understand → research → plan → execute → verify → report. Podman/Docker, Dockerfiles, compose, networking, image optimization.
6-phase orchestrator: understand → research → plan → execute → verify → report. CI/CD pipelines, monitoring, incident response, runbooks.
Bridges UX specification and production UI. Turns design tokens and component specs into code that looks intentional — not AI-generated. Three modes:
--implement— turnsUX_SPEC.md+STYLE_GUIDE.mdinto production components--polish— takes existing UI and elevates typography, color, spacing, motion--system— creates or refactors a design token system (colors, typography, spacing, shadows)
Distinct from ux-engineer: UX handles usability, workflows, and accessibility; this agent handles visual polish and implementation. Called by sdlc-lead in Phase 3 (after UX spec is approved) and Mode 4 (/sdlc improve "frontend").
Navigates a running application with playwright-mcp, captures screenshots, reads accessibility snapshots, and verifies that real UI behavior matches use cases or UX specs. Works with any LLM — no vision required (uses accessibility tree as primary signal).
Not a test-writer. test-engineer writes Playwright specs. ui-verifier runs the browser live against your deployed or local server and produces a UI_VERIFICATION_REPORT.md with per-flow PASS/FAIL/WARN verdicts.
Modes:
--smoke(default) — 5-min quick pass: navigate main routes, screenshot, check for errors--use-cases— verify each P0 use case fromdocs/testing/USE_CASES.md--flow "<description>"— single named flow end-to-end (login, create, submit, etc.)--regression— post-change check against last-known report
Verification signals (no vision needed):
browser_snapshot()— accessibility tree reveals error alerts (role="alert"),aria-invalid, missing landmarks, unlabeled inputsbrowser_get_url()— confirms redirects happened correctlybrowser_evaluate("document.title")— catches 404/500 pagesbrowser_screenshot()— visual record, described if vision model available
Produces: docs/test/UI_VERIFICATION_REPORT.md — per-flow results table, step-by-step observations, accessibility findings, recommendations.
Requires: playwright-mcp registered (handled by install.sh).
Derives module boundaries from business domains and produces the structural design documents that coding-agent and validate-module-boundaries.sh enforce.
- Primary deliverables:
docs/MODULE_DESIGN.md(bounded contexts, dependency rules, naming conventions) anddocs/INFRASTRUCTURE.md(environment matrix, compute, data, networking with Mermaid diagram) - Domain-driven decomposition — identifies bounded contexts from use cases and data models; rejects technical-layer naming (controllers/, services/, utils/) in favor of domain-aligned modules
- Circular dependency detection — maps the full dependency graph during design; flags and resolves cycles before implementation begins
- Infrastructure specification — documents environment matrix (dev/staging/prod), compute resources, data stores, networking topology; validates against
validate-infrastructure.shrules (rejects IaC code in the doc) - Handoff contract — produces MODULE_DESIGN.md that
validate-module-design.shcan pass before handing off tocoding-agent
Called by sdlc-lead in Phase 3 (Design), after db-architect and before coding-agent.
The entry point when you don't know which command to run. Takes a plain-English goal, routes it to the right expert, checks prerequisites (via doctor.sh), drives the workflow, and always offers the next step (especially "want me to fix what I found?"). Has the full intent→expert routing table, a guided security scan→triage→fix flow, and multi-step sequencing for goals like "harden before launch". Invoked with /guide.
Turns any request into plan.json — a typed DAG of bounded leaf tasks sized to the executing model's tier, with scout-before-plan and verify nodes. Executed deterministically by scripts/run-plan.mjs. The keystone for running big work reliably on small local models.
Walks the live app as a first-time human user with zero spec knowledge — only a persona, a goal, and what's on screen. Produces friction logs with patience budgets and task-completion verdicts. Distinct from ui-verifier (which checks the implementation against the spec).
Design-side expert for building LLM features: prompt architecture, eval harnesses, model routing/fallback, token budgeting, structured-output contracts, RAG shape. Six hard rules (verify model facts, API-layer schema enforcement, no-eval-no-ship, …). Not for LLM security audits — that's owasp-llm-checker.
Thin coordinator for shipping a release: version bump, changelog (via changelog-writer), tag, deploy-gate checklist, both-remotes push, and a doc-count audit that prevents version-metadata drift.
Live in agents/security/. Dispatched by security-auditor (coordinator) via HANDOFF — each runs in its own context window and writes findings to docs/work/security/<slug>.md.
| Agent | Purpose |
|---|---|
owasp-web-checker |
OWASP Top 10 web vulnerabilities — one finding per category, verbatim evidence |
owasp-llm-checker |
OWASP LLM Top 10 — AI-specific attack surface (prompt injection, training data poisoning, etc.) |
cloud-security-checker |
Cloud misconfigurations — IAM, S3/GCS public buckets, security groups, KMS |
iac-security-checker |
Infrastructure-as-Code security — Terraform/Pulumi/CDK patterns |
secrets-scanner |
Hardcoded secrets, API keys, credentials in source + git history |
dependency-auditor |
Known CVEs via npm audit/pip-audit/cargo audit; license risk |
semgrep-runner |
Semgrep scan with custom gap-filler rules + community rule packs |
threat-modeler |
STRIDE per component, trust boundary analysis, attack surface enumeration |
attack-chainer |
Second-order pass — pairs/triples of real findings into multi-step exploit chains (C-N entries with severity bump) |
Methodology docs: OWASP_METHODOLOGY.md, OWASP_LLM_METHODOLOGY.md, CLOUD_METHODOLOGY.md, IaC_METHODOLOGY.md, FINDING_SCHEMA.md (shared finding envelope format).
Live in agents/code-review/. Dispatched by code-reviewer (coordinator) in parallel — each covers one review dimension.
| Agent | Dimension |
|---|---|
complexity-analyzer |
Cyclomatic complexity, nesting depth, cognitive load |
duplication-detector |
Copy-paste patterns, near-duplicate logic, DRY violations |
error-handling-auditor |
Silent failures, over-broad catch, missing boundary validation |
type-safety-checker |
Any-cast abuse, non-null assertions, unsafe type coercions |
pattern-consistency-checker |
Naming, import style, module structure — deviation from project conventions |
anti-slop-auditor |
31-rule AI slop catalog (R-01..R-31): bloat, speculative abstractions, generated filler, slopsquatting, credential leakage |
dead-code-detector |
Unimplemented stubs, never-called functions, unused exports, orphan files, disconnected pipelines, unreachable branches (tool-first: knip/ts-prune/vulture/staticcheck + grep fallback) |
code-health-synthesizer |
Coordinator synthesizer — reads all seven micro-agent outputs, produces HEALTH_ASSESSMENT.md with prioritized backlog |
Methodology: agents/code-review/METHODOLOGY.md — per-dimension grading rubrics, severity escalation rules, FIX_BACKLOG format.
Live in agents/performance/. Dispatched by performance-engineer (coordinator).
| Agent | Purpose |
|---|---|
static-perf-analyzer |
Grep-based static scans: O(n²) loops, N+1 queries, blocking I/O in async paths, hot-path allocations |
profiler-agent |
Runtime profiling — instruments code, runs load, captures flamegraph/heap snapshots |
db-query-analyzer |
Slow-query detection, missing indexes, N+1 at the ORM layer, explain-plan analysis |
bundle-analyzer |
Frontend bundle size, tree-shaking gaps, duplicate packages, lazy-load opportunities |
concurrency-checker |
Race conditions, deadlock patterns, improper shared-state access |
perf-synthesizer |
Coordinator synthesizer — reads all micro-agent outputs, produces PERFORMANCE_REPORT.md with before/after benchmark table |
Methodology: agents/performance/METHODOLOGY.md — profile-first discipline, verbatim-code mandate, coverage confidence loop.
Live in agents/sdlc/onboard/. Dispatched by sdlc-onboard-mode (coordinator) via HANDOFF in parallel where possible.
| Agent | Deliverable |
|---|---|
landscape-mapper |
docs/LANDSCAPE.md — tech stack, project metrics, directory structure, hot files, recent focus |
entry-point-tracer |
docs/diagrams/entry-points.md + docs/diagrams/sequences/*.md — traced call chains as Mermaid sequence diagrams |
component-mapper |
docs/diagrams/c2-containers.md + docs/diagrams/c3-components.md — C4 container and component diagrams |
health-coordinator |
docs/HEALTH_ASSESSMENT.md + docs/testing/USE_CASES.md + docs/testing/TEST_PLAN.md — dispatches code-reviewer, security-auditor, test-engineer, performance-engineer in parallel |
Live in agents/game/. Activated by the /sdlc init "<name>" "<desc>" --game flavor (swaps SRS→GDD, inserts a vertical-slice gate before content production). Reuse the generic engineering experts (coding-agent, perf, test, frontend) for everything else.
| Agent | Purpose |
|---|---|
game-designer |
Core loop first, 3 pillars, lose-loop design; produces the GDD (Game Design Document, the SRS equivalent) with SLICE/POST-SLICE scoping |
gameplay-engineer |
Engine-grain implementation (Godot/Unity/Phaser/Bevy): frame budget, fixed-timestep vs render FPS, allocation discipline, input buffering, determinism |
game-balance-designer |
Progression curves, economy sinks/sources; simulates 1000 player-sessions as a rerunnable script before shipping numbers |
playtest-evaluator |
Blind-first playtest of the vertical slice; 6 fun heuristics with evidence, time-to-first-success vs the slice acceptance test |
game-asset-pipeline |
Sprite batch micro-loop: gen → lattice/pixel-snapper cleanup + transparency de-fringe (deterministic skills/game-asset-pipeline/ scripts) → sprite-sheet pack → portable TexturePacker-hash atlas manifest for engine import |
Thin orchestrators that drive each SDLC phase. Read by sdlc-lead on demand.
| Agent | Purpose |
|---|---|
sdlc-init-mode |
Entry point for Mode 1 (new project) — loads phase files as needed |
sdlc-init-phases-0-2 |
Ideation, planning, requirements (Phases 0–2) |
sdlc-init-phase-3 |
Design (Phase 3): architecture, DB, API, security |
sdlc-init-phase-4 |
Implementation (Phase 4): parallel coding waves |
sdlc-init-phase-5 |
Review, hardening, release (Phase 5) |
sdlc-feature-mode |
Mode 3: add a feature to an existing project |
sdlc-improve-mode |
Mode 4: audit-driven improvement |
sdlc-onboard-mode |
Mode 2: understand an existing codebase — thin dispatcher to onboard specialists |
Skills are thin triggers that live in skills/<name>/SKILL.md. Each skill maps to an agent and accepts mode flags. Users invoke skills with /skill-name [flags].
| Skill | Agent | Purpose |
|---|---|---|
/guide |
guide |
Front door — describe any goal in plain English; routes to the right expert and drives the workflow |
/sdlc |
sdlc-lead |
Full SDLC workflow (init / onboard / feature / improve / gate / status); --game flavor for games |
/code |
coding-agent |
Implement from SDLC design docs — API verification, anti-slop enforcement, tech stack compliance |
/git-expert |
git-expert |
Git lifecycle (init / feature / release / recover / inspect / sync) |
/security |
security-auditor |
OWASP audit, threat model, Semgrep scan; --fix drives a verified remediation loop |
/review-code |
code-reviewer |
9-dimension code health review incl. dead/unused-code + tech-stack compliance (review / debt / consolidate / patterns) |
/research |
researcher |
Deep research with source evaluation |
/test-expert |
test-engineer |
Test strategy, unit/e2e tests, coverage |
/perf |
performance-engineer |
Profile, benchmark, optimize |
/dba |
db-architect |
Schema, migrations, query tuning |
/ux |
ux-engineer |
UX design, heuristic review, accessibility audit |
/api-design |
api-designer |
REST/GraphQL design and review |
/containers |
container-ops |
Build, compose, debug, optimize images |
/devops |
sre-engineer |
CI/CD, monitoring, runbooks, incident response |
/gate |
sdlc-lead |
Gate check / approve / bypass for SDLC phases |
/review |
code-reviewer + security-auditor |
Generic review meta-skill |
/simplify |
code-reviewer |
Simplification-focused pass on recent changes |
/explore |
sdlc-lead (inline) |
Codebase archaeology — trace a feature end-to-end, map blast radius |
/design-options |
sdlc-lead (inline) |
Generate 2-3 architecture alternatives with trade-offs before committing |
/frontend |
frontend-design |
Visual polish, design tokens, typography, color, spacing, motion |
/migration-planner |
migration-planner |
Ordered, reversible DB migration plan between two schema states |
/documentation-gap-finder |
documentation-gap-finder |
Audit public surface for undocumented / stale / missing docs |
/llm-integration |
llm-integration-engineer |
Design LLM features — prompts, evals, routing/fallback, token budget, structured output |
/end-user-simulator |
end-user-simulator |
Persona-driven UAT — walk the live app as a first-time user, log friction |
/release |
release-manager |
Coordinate a release — version, changelog, tag, deploy-gate, push (on top of /git-expert --release) |
/challenge |
challenger |
Adversarially verify claims in an artifact — CONFIRMED/CONTRADICTED/UNVERIFIABLE with cited evidence |
/reflow |
sdlc-lead (inline) |
Recompute the module-contract ticket graph — mark done, list claimable modules, collision-check write-scopes, emit a claimed module HANDOFF |
/steward |
sdlc-lead (inline) |
Audit CLAUDE.md / AGENTS.md alignment, capture session learnings |
/onboard-inventory |
researcher |
Ralph Wiggum D1 — enumerate units into docs/onboard/INVENTORY.md |
/onboard-verify |
sdlc-lead |
Ralph Wiggum D3 — run all onboard validators, report gaps |
/onboard-gap-fill |
sdlc-lead |
Ralph Wiggum D4 — emit focused HANDOFFs for uncovered rows only |
/ui-verify |
ui-verifier |
Live browser verification — screenshot flows, check accessibility snapshots, verify use cases |
/design-iterate |
design-iterator |
Claude-Design-style visual loop — render → screenshot → critique against tokens.json → fix → re-verify (--sync token extraction, --real logged-in browser audit) |
/gauntlet |
gauntlet-lead |
Gauntlet loop — builders + blind fresh-per-round critics iterate until the work matches or beats a named real exemplar (--bar, --budget) |
/wave |
orchestrator (inline) | Level-2 wave integration gate — reviewer set composed from the aggregate diff, concurrent isolated reviewers, finding SETS (summaries, never transcripts) synthesized into one consensus-weighted wave-gate report with findings attributed to the introducing ticket |
/goal |
orchestrator (inline) | Bounded objective loop — requires a measurable exit + budget up front, refuses unmeasurable objectives (Ralph Wiggum refuse-to-loop gate); iterations classified per FIX_VERIFY_LOOP.md (STALLED / PROGRESSED / OSCILLATING), existing caps only |
/autopilot |
orchestrator (inline) | Unattended run-to-completion outer loop — ASSESS (board + gates + requirement ledger + branches + red suites, story-denominated) / DECIDE (ordered next actions, each with an exit predicate) / DRIVE (conductor / run-until-done / run-plan, one bounded unit at a time) / HEAL (narrow → split → escalate tier → park with evidence; byte-identical gap set = no-progress HALT) / EXIT (assembly-gate predicate or documented halt; iteration cap mandatory) Field-proven 2026-09-01: a two-ticket product driven end-to-end (OpenAI terra codes, luna reviews, runtime verified, merged, board drained) — the PRIMARY agent kicks off, tracks, and reconciles it per the skill's OPERATE section; handoffs only where the ladder names one. |
/vault |
vault |
Query / ingest / lint the agent-brain-vault — answer a project question from compiled, cited pages instead of re-reading raw sources (T5.6) |
48 skills total (includes /guide — the concierge front door).
Canonical reference files in agents/shared/. Single source of truth — update once in this canonical repo; npm run build:claude regenerates the attest-claude copies.
| File | Purpose |
|---|---|
SCOPE_BOUNDARY.md |
Stay-in-lane rule for direct-mode invocations — per-agent in-scope / refer-back table + canonical SCOPE-BOUNDARY block |
BOUNDED_TASK_CONTRACT.md |
Six canonical scope rules every specialist follows in Bounded Task Mode |
HANDOFF_TEMPLATES.md |
Canonical HANDOFF block templates (standard, remediation, re-verification, parallel-wave) + context-packet template |
HANDOFF_QUICK_REF.md |
One-page quick reference: HANDOFF format, completion phrase, manifest schema — for agents with small context budgets |
FIX_VERIFY_LOOP.md |
Canonical review → FIX_BACKLOG → remediate → re-verify pipeline with 3-iteration cap and escalation block |
RALPH_WIGGUM_LOOP.md |
Canonical inventory-driven deep-verification loop used by /sdlc onboard --deep and /security --deep |
LOOP_PREVENTION.md |
Tool-selection cheat-sheet + three loop classes (failure / schema-validation / success) + BLOCKED-template |
RESEARCH_TOOLS.md |
Mandatory research-tool surface and fallback chain (playwright-search → pullmd → STOP) |
CODE_SEARCH.md |
The code-search MCP surface (symbol/reference index): code_symbols/code_references/code_outline/code_search + code_index, when to prefer it over grep, and the mandatory code_index()-then-grep-fallback freshness contract. Inlined as the ## Code search block into code-heavy agents |
ANTI_SLOP_RULES.md |
31-rule AI slop catalog (R-01..R-31) — over-engineering, defensive bloat, hallucinated patterns, slopsquatting, credential leakage |
CHALLENGER_PROTOCOL.md |
Full Challenger adversarial review protocol — challenge categories, severity grades, rebuttal cycle, output format |
GATE_SCORING_PROTOCOL.md |
HANDOFF resume scoring (1–10 scale, asymmetric threshold ≥7 pass / 5–6 revise / <5 auto-fail) + coverage validator table |
PHASE_ROUTING_PROTOCOL.md |
Smart routing table per phase, escape hatches, validation gate chain, two-track system (Track 1: coverage loop; Track 2: confidence loop) |
PARALLEL_WAVE_PROTOCOL.md |
3-round parallel coding protocol: Round 1 code HANDOFFs → Round 2 review + Fix-Verify Loop → Round 3 runtime. Wave gate + cross-wave rules. |
CONTEXT_BUDGET.md |
Context budget management — synthesis chunking, state-file discipline, when to stop and write to disk |
SESSION_PRIMER.md |
~600-token session primer with 7 core rules including HANDOFF format, disk discipline, and memory workflow |
MEMORY_PRIMER.md |
Memory MCP protocol — 3-call workflow (session_restore → memory_store → session_save), trigger table, call format, flat-file fallback |
EXECUTOR_SELECTION.md |
Capability-probed delegation — native Task tool / subprocess / manual paste, chosen by has_task_tool/mcp_in_subagents flags |
MODEL_ADAPTER.md |
Per-tier behavior (small/medium/large), maker/verifier/PLANNER roles + plan-strong/execute-cheap routing (B5), local-model pointer |
MICRO_LOOP.md |
The per-agent micro-loop: plan-shape → produce → self-verify (tool-offloaded, B3) → re-ground (B4) → revise — the produce/verify discipline every agent runs |
GUIDE_CAPTURE.md |
Guide-capture protocol (T21.1): how a running expert records a reusable "guide" (playbook bullet + matched lesson) so the next run pre-briefs from captured knowledge instead of cold-starting |
CHECKPOINT_REVERT.md |
Git checkpoint per gated PASS + revert-to-known-good on unrecoverable failure for multi-phase work (Lever 8 / B7) |
CHECKPOINT_STATE.md |
Context checkpoint: write a compact docs/work/STATE.md after each step so the user can /clear and resume; the catch-up read-list /sdlc resume rehydrates from |
PERSISTENCE.md |
Anti-announce-then-stop rule — never end a turn after announcing an action; perform it or print BLOCKED:. The prompt-side fix for the #1 accidental pause (~+20% SWE-bench) |
AUTONOMY_PROTOCOL.md |
Autonomy level (interactive |
LOCAL_LLM_PRIMER.md |
~600-token session primer for local-model sessions — SDLC-TASK override, HANDOFF format, write-to-disk, stop-means-stop |
BOOK_PROTOCOL.md |
Canonical rule for structuring long-form deliverables (> 300 lines) as multi-page books with index navigation (enforced by validate-book-structure.sh) |
CODE_BOOK_PROTOCOL.md |
The book protocol applied to code: a source file over the size cap becomes a directory (index/barrel + one-concern chapter modules); enforced by validate-file-size.sh |
BROWSER_TESTING.md |
Browser-automation / E2E primer — when and how to use playwright-mcp for screenshots and runtime UI verification |
TUI_SESSION_HYGIENE.md |
TUI session-hygiene protocol — thin orchestrator, mandatory fresh-context (Executor A/B, never inline D) dispatch for tool-heavy specialists, scan-output-to-disk hard rule, 70%-of-truthful-context-display checkpoint-and-resume |
SDLC_RESUME_PROTOCOL.md |
Deterministic resume of an incomplete SDLC (status: partial): gate-verify every claimed-complete phase, then give each artifact a disposition (locked / repair / redo) before continuing |
CONTAINER_RUNTIMES.md |
Runtime detection and cloud-portability knowledge behind container-ops — which CLI/compose flavor is present, rootless gotchas, multi-arch, GCP/AWS-portable images |
QA_VNV_TESTING.md |
Runnable QA/V&V technique library for qa-vnv-engineer — layout-defect detection, visual regression, resilient journey automation, evidence reporting |
GAUNTLET_LOOP.md |
The /gauntlet harness: a real reference bar, builders in clean context, blind fresh-per-round critics; the builder never grades its own work |
PRODUCT_SHAPE_PROTOCOL.md |
Canonical orchestration role names (GOAL / ORCHESTRATOR / BOTS / REVIEW PANEL / HONESTY LOOPS), the two-stack rule, the feature-map planning artifact, and feature-grouped landing |
TOOL_PREFLIGHT.md |
Enforced tool-preflight + diagnose-before-retry contract for agents that run external scanners and profilers (semgrep, checkov, trivy, py-spy, lizard, jscpd …) |
GAME_PRODUCTION.md |
How games are actually produced, indie and AAA — lifecycle gates on builds, discipline map and indie role-collapse, the artifacts that matter |
GAME_TOOLING.md |
Game-tool MCP landscape and agentic engine loops for the game cluster — maintained engine/art/audio MCP servers and how to wire them |
Four MCP servers extend agent capability beyond the session context window. For full configuration instructions see MCP_GUIDE.md.
Persistent memory store backed by SQLite + vector embeddings (LM Studio nomic-embed-text). Provides hybrid search (vector 35% + BM25 35% + link traversal 30%).
Registered via install.sh step 8 (claude mcp add memory node <path>). For OpenCode, entry in opencode.json under "mcp".
Tools used by agents:
| Tool | When |
|---|---|
session_restore() |
Start of every session — load prior decisions, constraints, patterns for this project |
memory_store({ content, type, confidence, citation }) |
When a significant decision, constraint, pattern, or bug root cause is found |
session_save({ summary }) |
After every phase gate, before stopping |
memory_recall({ query }) |
On demand — search prior project memories |
Types: decision, fact, pattern, error, preference. Scope: project (default) or global.
Flat-file fallback: When the MCP is unavailable, agents fall back to docs/work/SESSION_NOTES.md. Full protocol in agents/shared/MEMORY_PRIMER.md.
MCP server providing semantic search over code chunks (embedding-based) and a structural symbol index. Built on SQLite + FTS5 + cosine similarity. Provider-sticky: the embedding provider used at index time is locked in; queries from a different provider fall back to FTS5 BM25.
Source: ~/Code/bpm-code-search-mcp/. Registered in opencode.json and ~/.claude/settings.json (PostToolUse hook auto-reindexes edited files).
Tools:
| Tool | Purpose |
|---|---|
code_index(path?, force?) |
Index or re-index the codebase. Mtime-gated — skips unchanged files. |
code_search(query, top_k?, path_filter?) |
Semantic search — returns ranked chunks with file:line and similarity score |
code_symbols(kind?, name_filter?, path_filter?, limit?) |
Browse symbol index — functions, classes, interfaces, types, enums, methods, Markdown sections |
code_outline(file_path) |
Structural outline of a single file — all named symbols in line order |
code_references(name, top_k?, path_filter?) |
Find all chunks mentioning a symbol by name (FTS exact-phrase match) |
code_index_status() |
Provider, file count, chunk count, symbol count, DB path |
Symbol extraction covers 10 languages: TypeScript/JS, Python, Go, Rust, Java, C#, Ruby, PHP, Swift, Kotlin, Markdown headings.
LLM-agnostic browser automation via Microsoft's official Playwright MCP. No vision model required — uses the accessibility tree by default with screenshots on demand. Works identically in Claude Code and OpenCode (including local LLMs).
Why it exists: Replaces the Claude Code browser extension (claude-in-chrome) for all automated/CI use cases. The extension only works in Claude Code with cloud models; playwright-mcp works everywhere.
| Tool | Purpose |
|---|---|
browser_navigate(url) |
Navigate to a URL |
browser_screenshot() |
Take a screenshot (returns image) |
browser_snapshot() |
Accessibility tree snapshot — no vision needed |
browser_click(element) |
Click by CSS selector or text |
browser_fill(element, value) |
Fill a form field |
browser_wait_for(selector, state) |
Wait for element state |
browser_evaluate(js) |
Run JavaScript in the page |
browser_get_url() |
Get current URL |
browser_close() |
Close the session |
Full protocol: agents/shared/BROWSER_TESTING.md
Install: claude mcp add playwright -- npx -y @playwright/mcp@latest
Seventy-nine bash validators + gate runners in scripts/validators/. Each returns exit 0 (clean) / 1 (gaps) / 2 (validator error) and emits a JSON gap envelope to stdout. Bash 3.2 compatible (macOS default).
| Script | Checks |
|---|---|
validate-adrs.sh |
Every ADR-NNN reference in docs has a corresponding file with a valid status field; a hard-to-reverse choice (datastore/auth-model/core-framework/vendoring-strategy) asserted in ARCHITECTURE.md/TECH_STACK.md has a matching, on-topic ADR (T29.5) |
validate-api-coverage.sh |
Every route in source has a row in API_DESIGN.md and a path entry in openapi.yaml |
validate-architecture.sh |
6 diagram types, Mermaid syntax, HLA overview, no placeholders |
validate-build.sh |
Runs project build command and checks exit code |
validate-c3-coverage.sh |
Every source module appears in the C3 context diagram |
validate-close-receipt.sh |
A ticket module in_review/done has the close() receipt pasted verbatim into its Completion Manifest — not just a self-asserted "<id> done" phrase (wraps scripts/lib/tickets.mjs check-receipt; the same check accept() itself enforces, T26.3) |
validate-code-health.sh |
9 anti-slop patterns: catch-all error handlers, try-in-loop, what-comments, unused imports, single-use helpers, speculative abstractions, hardcoded config, re-implemented framework features, scope creep |
validate-completion-manifest.sh |
HANDOFF manifest schema + completion phrase, AND (T27.2 v2) Files-produced paths exist on disk, Verify-result cites a real artifact, Maker/Verifier identity present and distinct |
validate-deps.sh |
npm audit / pip-audit / cargo audit with configured waivers |
validate-design-system.sh |
Token file present, component files match UX_SPEC inventory, no hardcoded hex colors |
validate-doc-counts.sh |
Every " validators/skills/references" count claimed in README/docs is re-derived from the filesystem and matched (release-manager step 5, made deterministic) |
validate-e2e-setup.sh |
playwright.config.ts has JSON reporter, retries, screenshot, baseURL; auth fixture present; POM directory present; CI E2E step present |
validate-entry-points.sh |
Every entry point (main, index, bin) is documented |
validate-erd-coverage.sh |
Every table/model in source has an ERD entry |
validate-fix-backlog-closed.sh |
CRITICAL and HIGH rows in FIX_BACKLOG resolved before phase-5 gate |
validate-handoff-discipline.sh |
Every task()-shorthand delegation maps to a HANDOFF with a no-spawn fallback; no raw Agent(...)/subagent_type spawn bypasses the contract, and concurrent HANDOFF to: dispatchers must gate on has_task_tool (runs in the git-expert merge gate when agents/**.md changes) |
validate-tickets.sh |
Module-contract ticket graph integrity — malformed tickets, cyclic/dangling depends_on, orphan node refs, and overlapping write-scopes among active modules (wraps scripts/lib/tickets.mjs) |
validate-ticket-hygiene.sh |
Ticket LIFECYCLE hygiene audit, distinct from graph validity — a done module missing complete history/evidence/manifest, an owner holding >1 open ticket, a claim open >7d, TICKETS.md/STATE.md status contradicting plan.json, and an evidence commit touching a file outside its write_scope or citing a commit absent from git history (wraps scripts/lib/ticket-hygiene.mjs, T26.2) |
validate-requirement-closure.sh |
Phase 4→5 REQUIREMENT closure (not task closure, T29.2): a story is closed only when ≥1 module's stories[] references it AND every referencing module is done; also requires the mandatory docs/work/REQUIREMENT_RECONCILIATION.md reconciliation matrix to cover every story with no OUTSTANDING verdict. Skips cleanly when stories[]/docs/USER_STORIES.md aren't adopted (wraps scripts/lib/tickets.mjs requirement-status + scripts/lib/reconciliation-matrix.mjs) |
validate-persistence-block.sh |
Every executor/coding agent carries the anti-announce-then-stop rule (PERSISTENCE.md), directly or via MODEL_ADAPTER/BOUNDED_TASK_CONTRACT — kills the #1 accidental pause |
validate-autonomy-wiring.sh |
Every by-design pause directive is autonomy-aware — carries the AUTONOMY_PROTOCOL gate or is marked NEVER-AUTO within ±5 lines, so autonomy: auto takes documented defaults instead of silently waiting |
validate-contract-conformance.sh |
Live app vs frozen openapi spec — every GET endpoint returns a declared 2xx with required JSON fields present; drift (spec route missing from the app) is a gap. SKIPs when no spec/base-url (wraps scripts/contract-conformance.mjs) |
validate-iac.sh |
IaC scaffolding: entry/variables/outputs/per-env configs present, no hardcoded secrets |
validate-infrastructure.sh |
INFRASTRUCTURE.md has env matrix, compute, data, networking + Mermaid diagram; rejects IaC code in the document |
validate-inventory.sh |
Every row in INVENTORY.md has a corresponding artifact |
validate-lint.sh |
Linter + typecheck exit clean |
validate-migrations.sh |
Up/down migrations present and reversible |
validate-model-pins.sh |
G3 config-pin lint (T30.1, M30 model-tier guard) — a frontier-tier model id hardcoded in agent frontmatter or repo config outside models.json is a hard gap ("pin roles, not models"); any other raw model:/"model" pin outside models.json warns without failing |
validate-vendor-provenance.sh |
Anti-slop R-30 (T29.8, field lesson B-2): a vendored/copied library module must be generated from the real upstream and record its provenance (source + version), not reimplemented from memory in a library's shape; a "vendored" file with dropped/renamed variants and no provenance marker is flagged as a silent fork |
validate-module-boundaries.sh |
Cross-module imports comply with dependency rules in MODULE_DESIGN.md |
validate-module-design.sh |
MODULE_DESIGN.md: domain-aligned naming pattern present, no technical-layer names, circular dependency check passes |
validate-no-ascii-art.sh |
No Unicode box-drawing characters or ASCII banners in documentation files |
validate-owasp.sh |
All 10 OWASP categories present, confidence ≥ 7, attack-chains section present |
validate-phase-gate.sh |
Orchestrator — chains the right validators for a given SDLC phase |
validate-release-readiness.sh |
10-condition release gate: FIX_BACKLOG closed, 4 review verdicts (security/code/ux/perf), coverage threshold, container CVE scan, RUNTIME PASS |
validate-requirements-matrix.sh |
REQUIREMENTS_MATRIX.md: P0 use-case rows have Test ID and Status; cross-references USE_CASES.md |
validate-scope.sh |
Post-HANDOFF git-scope enforcement |
validate-security-controls.sh |
SECURITY_CONTROLS.md: HIGH/CRITICAL threats have controls; DB, API, and ARCH security sections present |
validate-sequence-coverage.sh |
Every P0 use case has a sequence diagram |
validate-smoke.sh |
Boots server, hits configured routes, asserts HTTP 200 |
validate-spec-traceability.sh |
docs/TRACEABILITY.md grades every founding-brief requirement against the produced doc set + tickets (T22.15) |
validate-state-drift.sh |
docs/work/STATE.md's Done-section phase claims are backed by a real/waiver gate receipt (docs/work/gates/<phase>-receipt.json, T27.1) — used by /sdlc resume (warn) and run-until-done.sh's outer loop (block completion) so a claimed-but-unreceipted phase can't be trusted (T27.4) |
validate-status-freshness.sh |
A generated project docs/work/STATUS.md (T29.3, H7/C-1) is flagged stale when its embedded numbers mismatch a live recompute against plan.json, or predate the plan's own last work event (latest history[]/claimed_at timestamp). Not chained into a phase gate — advisory, the intended caller is the steward skill (wraps scripts/gen-status-report.mjs --check) |
validate-tech-stack.sh |
All runtime and dev dependencies present in TECH_STACK.md |
validate-test-design.sh |
TEST_DESIGN.md has 5 mandatory sections: Unit, Integration, E2E, Security, Test Infrastructure |
validate-tests-mapping.sh |
Use-case ↔ test coverage mapping; UC-level PASS/FAIL derived from jest/vitest/pytest JSON results |
validate-tests.sh |
Runs test suite; Playwright fast-path with JSON reporter |
validate-use-cases.sh |
UC-IDs present, required fields complete, Source traceability field populated |
validate-user-stories.sh |
Given/When/Then acceptance criteria present, traceability to use cases |
validate-ux-spec.sh |
UX_SPEC.md: component library chosen, ≥ 5 component inventory, P0 UCs covered, WCAG strategy, responsive strategy |
run-coverage-loop.sh |
3-iteration gate loop runner — re-runs validators until clean or iteration cap reached |
run-handoff-gates.sh |
Scope + manifest + coverage gate runner with any-failure-aborts semantics |
validate-api-consistency.sh |
The OpenAPI spec and the implemented routes agree (paths, methods, params) |
validate-autonomy-ledger.sh |
APPROVALS.md rows are well-formed and every NEVER-AUTO row is human-signed (T27.5) — the runtime counterpart to validate-autonomy-wiring.sh's prose-adjacency lint |
validate-challenger-gate.sh |
Any FIX_BACKLOG/review/security report with a CRITICAL or HIGH finding, or any ADR/design doc asserting an unverified external rationale, has a matching CHALLENGE_REPORT_*.md with zero unresolved CONTRADICTED verdicts (T27.3, T29.5) |
validate-circular-deps.sh |
Detects dependency cycles in the MODULE_DESIGN.md graph |
validate-data-governance.sh |
A schema with personal data ships with classification + retention/handling rules |
validate-dead-code.sh |
Deterministic dead-code / stub / unused-export gate (knip / ts-prune / vulture + grep) |
validate-doc-catalog.sh |
The FEATURES catalog lists every validator + shared protocol that actually ships (body-drift) |
validate-doc-render-health.sh |
Markdown-table orphan-fragment linter — a |-delimited data row with no valid header/separator above it renders as literal pipe-text, not a table (T29.9) |
validate-feature-coverage.sh |
Scoped Ralph Wiggum inventory coverage for /sdlc feature |
validate-improve-coverage.sh |
Scoped Ralph Wiggum inventory coverage for /sdlc improve |
validate-loop-readiness.sh |
Refuse-to-loop gate (G7) — every loopable row must name a checkable success criterion |
validate-mermaid.sh |
Scans markdown for Mermaid syntax problems (optionally renders via mmdc) |
validate-module-boundaries-transitive.sh |
Design-level transitive dependency-graph boundary check |
validate-no-reinvent.sh |
Anti-reinvention / canonical-overwrite drift guard (G-B), --base merge-gate mode |
validate-observability.sh |
The observability spec is concrete (metrics, logs, traces, alerts) at design time |
validate-resilience-patterns.sh |
Resilience patterns (retry, timeout, circuit-breaker, fallback) designed at Phase 3 |
validate-tracker-fresh.sh |
Tracking-as-gate (G-D) — work changed but no tracker updated → fail; --base mode |
validate-tracker-integrity.sh |
External Tracker Data Model (T29.6, H5/A-6): docs/TRACKER_DATA_MODEL.md must exist before any docs/work/tracker-snapshot.json; once a snapshot exists, every non-stray item has its required label, every story is structurally linked to its phase, and no untagged template/sample item pollutes scope math. No-op for projects using only plan.json (wraps scripts/lib/tracker-model.mjs) |
validate-jira-hygiene.sh |
Jira mirror hygiene (offline-safe; active only when TRACKER_BACKEND=jira): flags lifecycle ops queued in the durable outbox but not mirrored to Jira, and modules that advanced (claimed/in_progress/in_review/done) without a Jira sync. No-op for the plan.json-only path (wraps scripts/lib/jira-hygiene.mjs; see references/jira-adapter.md) |
validate-flows.sh |
docs/design/flows.md (ux-researcher's output, the ROOT of the design chain) is structurally sound: exists (unless headless), has at least one Mermaid flow diagram and a screen-inventory section, no placeholder text. Flags a missing flows.md only when downstream design artifacts (tokens.json/components.md/UX_SPEC.md) exist without their derivation root; skips clean before the design phase |
validate-design-tokens.sh |
Figma-source ↔ tokens.json drift (offline-safe; active only when docs/design/figma-snapshot.json exists): flags a Figma color dropped from tokens.json, a snapshot pulled but never derived, and (advisory) a color that diverged. No-op for the prose-authored tokens.json path (wraps scripts/lib/design-tokens.mjs; see references/figma-adapter.md) |
validate-wcag-coverage.sh |
Accessibility (WCAG) evidence exists for UI-bearing components |
validate-qa-evidence.sh |
A qa-vnv-engineer V&V report is evidence-backed — traceability plus attached artifacts, not confident prose |
validate-rules.sh |
Lints the rules/ primitive: every rule file has parseable frontmatter (description, boolean alwaysApply, and globs unless always-applied) |
validate-invariants.sh |
Enforces a project's declared cross-cutting invariants (e.g. every route goes through the audited-transaction seam) — catches violations a ticket's own tests pass |
validate-seams.sh |
Seam-record integrity for module boards: each shared contract has exactly one producer module, every consumer depends on it, and wiring evidence exists (wraps validateSeams() in scripts/lib/tickets-seams.mjs) |
validate-scope.match.test.sh |
Self-test, not a gate: proves the real _scope-match.sh matcher accepts its positive cases and rejects its negative ones |
Route discovery covers Express/Fastify/Next.js app router/FastAPI/Flask/Go net-http. Table discovery covers Prisma/TypeORM/Sequelize/Knex/SQLAlchemy/Django/raw SQL.
Deterministic scaffolding in scripts/ — these own control flow and verification so models only do leaf work (which keeps heavy jobs reliable on small local models).
| Script | Purpose |
|---|---|
run-plan.mjs |
DAG runner — executes a task-decomposer plan.json node by node: topological order, tier-scaled timeouts, pre-flight model-server health check, checkpoint-continue retries, journal-based resume, --auto-replan |
fix-verify.mjs |
Deterministic re-verify gate — snapshot/verify a finding source (semgrep or any validate-*.sh), diff by fingerprint, report CLOSED / STILL-OPEN / NEW, exit non-zero if anything remains or a fix regressed |
mermaid-fix.mjs |
Mechanical Mermaid autofixer (--write) — smart quotes→ASCII, em-dash→hyphen, unicode arrows→-->, quote labels with specials, //→%% |
build-agents.mjs |
Single-source boilerplate — --check/--fix/--compact (generates dist/compact-agents/ tier=small variants) |
build-target-claude.mjs |
Generates the attest-claude copies from this canonical repo (npm run build:claude[:check]) |
check-tools.sh |
Detects (and --installs) the optional analysis tools: semgrep, knip, ts-prune, jscpd, vulture, radon, lizard, staticcheck, trufflehog, mmdc. Never sudo: installs npm/pipx tools (retrying into ~/.npm-global on EACCES), prints the real error for failures, and lists remaining system prerequisites as commands for you to run. mmdc is report-only — see SETUP.md |
doctor.sh |
Post-install self-check — structure, deps, config permission, model backend, tier detection, agent discovery, tool presence |
detect-model-context.sh |
Writes docs/work/.model-context (type/provider/model/context/tier + has_task_tool/mcp_in_subagents flags) |
--quick and --deep flags on /sdlc onboard and /security:
| Skill | --quick |
(default) | --deep |
|---|---|---|---|
/sdlc onboard |
Steps 0–7, no inventory check (~15–20 min) | Steps 0–7 + ROUTE/TABLE inventory loop (~30–40 min) | + full Ralph Wiggum inventory loop (~45–90 min) |
/security |
Wave 1 scanners + OWASP Web (~10 min) | same as --quick |
All four specialist waves + attack chainer + security-deep coverage loop (~45–90 min) |
Deep modes block until their corresponding validator gate exits clean.
| Platform | Status |
|---|---|
| macOS (bash 3.2.57+) | Supported |
| Linux (bash 4+) | Supported |
| Windows via WSL2 | Supported |
| Windows native (PowerShell/cmd) | NOT supported — use WSL2 |
install.sh refuses to run on native Windows and points to the WSL2 install docs.
Canonical checklists and templates agents read at runtime. Each is plain markdown in references/.
| Reference | Used by | Purpose |
|---|---|---|
git-workflow-checklist.md |
git-expert |
Conventional commits, SemVer, Keep-a-Changelog, recovery scenarios, report templates |
code-health-checklist.md |
code-reviewer |
8 dimensions, silent-failure hunter, consolidation catalog, language thresholds |
owasp-checklist.md |
security-auditor |
OWASP Top 10 + verification steps |
semgrep-guide.md |
security-auditor |
Semgrep setup, rule packs, two-tier scans |
semgrep-community-rules.md |
security-auditor |
Community rule inventory |
severity-matrix.md |
security-auditor, code-reviewer |
Severity scoring rubric |
rest-api-checklist.md |
api-designer |
REST conventions, pagination, errors |
design-review-checklist.md |
ux-engineer |
Heuristics + WCAG 2.2 baseline |
playwright-config.md |
test-engineer |
Playwright setup patterns |
engineering-artifacts.md |
sdlc-lead |
SDLC phase deliverables per phase |
report-template.md |
all agents | Common report header + confidence footer |
context7-mcp.md |
all agents | Live library docs via Context7 MCP |
parallel-worktree-agent-playbook.md |
orchestrating session | Gotchas for briefing multiple agents on separate tickets concurrently: worktree isolation, git-stash cross-worktree collision, --base origin/main, build-target-claude.mjs --out, awk/bash portability traps, fixture/CHANGELOG/merge-gate conventions |
jira-adapter.md |
orchestrating session, sdlc-lead | Mirror the ticket lifecycle to Jira Data Center: setup, verbs, SDLC hygiene mapping (grab-issues-not-epics, epic-closes-when-children-done, maker≠verifier, blocking links, lane→component), and graceful fallback to plan.json-only. Wraps scripts/jira/jira.mjs; see docs/DESIGN_JIRA_ADAPTER.md |
figma-adapter.md |
design-system-lead, frontend-design | Bring a real Figma design into the design pipeline: pull a file → normalized figma-snapshot.json, derive-tokens → docs/design/tokens.json (which stays authoritative), one-way Figma→code, graceful fallback to prose-authored tokens. Wraps scripts/figma/figma.mjs; see docs/DESIGN_FIGMA_ADAPTER.md |
Custom TypeScript tools in tools/. OpenCode loads these at startup.
| Tool | Purpose |
|---|---|
bash.ts |
Bounded bash execution with timeout + output capture |
grep-mcp.ts |
ripgrep wrapper with structured results |
write.ts / append.ts / update.ts |
File write primitives |
file-info.ts |
Stat + size + mime detection |
task.ts |
Spawn sub-agent tasks |
test-runner.ts |
Language-aware test runner dispatch |
playwright-test.ts / playwright-web.ts |
Playwright harnesses |
semgrep-scan.ts / semgrep-rule.ts |
Semgrep scanning + custom rule authoring |
simplify-file.ts |
Simplification-focused rewrite |
pomodoro.ts |
Work-timer helper |
run.ts |
Generic script runner |
log-parser.ts |
Structured log parsing |
loop-detector.ts |
Detects infinite-loop patterns in agent output |
deploy.ts |
Deploy helper |
See tools/CUSTOM_TOOLS_GUIDE.md for authoring a new tool.
Slash command definitions in commands/ — subcommands of /sdlc:
| Command | Purpose |
|---|---|
sdlc-init.md |
/sdlc init <name> "<desc>" — start a new project |
sdlc-onboard.md |
/sdlc onboard [--quick | --deep] — understand an existing codebase |
sdlc-feature.md |
/sdlc feature "<description>" — add a feature to existing project |
sdlc-improve.md |
/sdlc improve ["<focus>"] — audit-driven improvement; runs UX / code-quality / perf / security / DB audits, synthesizes a sized backlog, routes execution through coding-agent or Mode 3 sub-workflows |
sdlc-gate.md |
/sdlc gate — SDLC-aware gate check; auto-detects current phase from docs/work/sdlc-state.md and runs the matching validators |
sdlc-status.md |
/sdlc status — show current phase + gate state |
plugins/expert-hooks.ts — single opencode plugin auto-loaded from ~/.config/opencode/plugins/. Hooks into the two main lifecycle events:
| Event | What runs |
|---|---|
tool.execute.before |
Block dangerous bash (rm -rf /, git push --force, DROP TABLE, curl|bash, etc.). Block writes to credential files (.env*, *.key, *.pem, id_rsa, credentials.json). Throws to abort the call. |
tool.execute.after (write/edit only) |
format → lint → type-check → secret-scan, all in parallel: prettier / black+isort / gofmt / rustfmt; eslint / ruff; tsc --noEmit; regex scan for hardcoded API keys, AWS creds, PEM keys, DB connection strings. Findings surface via console.warn — informational, never block. Missing formatters silently skipped. |
Ports the high-value subset of the attest-claude hook catalog. Not ported (different abstractions): commit-validator.sh (use a project-level git pre-commit hook), test-on-stop.sh (no clean opencode session-idle semantic), session-start.sh (opencode lacks a UserPromptSubmit equivalent).
Currently empty. The original hooks/pre-operation.sh was an orphan superseded by tools/loop-detector.ts and the schema guards in tools/{append,bash,run,write}.ts. Loop prevention now lives in those tools + the inlined LOOP_PREVENTION cheat-sheet at the top of every SDLC mode file. Quality + safety automation lives in the plugin above.