Brainstorming
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
OPC — One Person Company. An agent skill from iamtouchskyer/opc.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add iamtouchskyer/opc --skill opc -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iamtouchskyer/opc opc --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .claude/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iamtouchskyer/opc --skill opc -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iamtouchskyer/opc opc --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .agents/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iamtouchskyer/opc --skill opc -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iamtouchskyer/opc opc --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .cursor/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iamtouchskyer/opc --skill opc -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iamtouchskyer/opc opc --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .gemini/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install iamtouchskyer/opc opcInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add iamtouchskyer/opc --skill opc -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .github/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iamtouchskyer/opc --skill opc -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install iamtouchskyer/opc opc --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "opc" agent skill from https://github.com/iamtouchskyer/opc/tree/main into .opencode/skills/opc/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "opc", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
opcOPC — One Person Company. An agent skill from iamtouchskyer/opc.
Opc is an agent skill from iamtouchskyer/opc. OPC — One Person Company. Digraph-based task pipeline with independent multi-role evaluation. Builds, reviews, analyzes, and brainstorms with specialist agents. Every path ends with evaluation. /opc <task, /opc -i <task, /opc <role [role...]
Its SKILL.md is about 9.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 313 other files, including scripts (for example `.github/workflows/ci.yml`, `CHANGELOG.md` and `CONTRACTS.md`).
It sits in Agent Workflows, covering Brainstorming. The repository describes itself as: OPC — One Person Company. A full team in a single Claude Code skill. Adaptive agent orchestrator with 21 built-in roles, 6 flow templates, and adversarial quality control. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f36f483. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (JavaScript and Shell, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
nodepython3npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Opc loads about 9.2k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 3,845 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
nd offer escape options. Never continue without user consent.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from iamtouchskyer/opc at commit f36f483, republished under its MIT licence (© iamtouchskyer). 3,845 words, ~9,181 tokens.
.claude/skills/opc/SKILL.md (or your agent's skills folder). This skill also uses 308 other files; get the full folder from GitHub.One principle: the agent that does the work never evaluates it.
A full team in a single skill. The digraph engine handles any task — building code, reviewing code, analyzing problems, brainstorming designs. It infers which flow and entry point to use from the task itself, and every path ends with independent evaluation.
Harness path: The opc-harness binary lives at bin/opc-harness.mjs relative to this skill's install directory. Resolve it once at session start:
OPC_HARNESS="$HOME/.claude/skills/opc/bin/opc-harness.mjs"All opc-harness references below mean node "$OPC_HARNESS". Set this as a shell variable and reuse it throughout the session.
/opc <task> # auto mode — infer flow and roles from the task
/opc -i <task> # interactive mode — ask questions before dispatch
/opc <role> [role...] # explicit roles — skip role selection, dispatch directly
/opc loop <task> # autonomous loop — decompose, schedule cron, run 24h unattended
/opc skip # skip current node, advance via PASS edge
/opc pass # force-pass current gate
/opc stop # terminate flow, preserve session state
/opc goto <nodeId> # manual jump to a node (cycle limits still enforced)The orchestrator reads the task, selects a flow template, and determines the entry point.
| Task says... | Flow template | Default entry |
|---|---|---|
| "review", "audit", "check", "before we merge", "找问题", "开源前看看" | review | review |
| "analyze", "diagnose", "what's wrong with", "分析" | review | review |
| "build", "implement", "create", "fix bug", "帮我实现", "重构成..." | build-verify | brief |
| "quick fix", "small change", "one-liner", "patch", "trivial fix", "快速修复", "小改动" | quick | build |
| "brainstorm", "explore options", "what are the approaches", "有什么方案" | build-verify | brief |
| "plan", "decompose", "break this down", "scope", "estimate", "拆一下" | build-verify | brief |
| "verify", "test", "QA", "check before release", "发布前验收" | pre-release | acceptance |
| "post-release", "user test", "onboarding check", "用户验收" | pre-release | acceptance |
| Complex, vague, or multi-keyword request | full-stack | discuss |
/opc loop or multi-unit feature backlog | loop-protocol | plan decomposition |
Entry override — user context can shift the entry point (only if target ∈ template nodes):
| User has... | Entry override |
|---|---|
| A vague idea or brief | First node in template |
| A spec or design doc | brief (if ∈ template), else build |
| An implementation plan | brief (if ∈ template), else build |
| A qualified build-brief.md from prior run | build (skip brief if lint passes) |
| Code/artifact that needs evaluation | review, code-review, or test-design (if ∈ template) |
| Everything done, needs acceptance | acceptance (if ∈ template) |
Priority rules:
/opc loop <task> = enter autonomous loop mode. Follow ./pipeline/loop-protocol.md: first check .opc/runbooks/ for a matching runbook, otherwise decompose task into units. Initialize loop state, start cron, execute ticks. Each tick runs the appropriate OPC flow for that unit type./opc <role> [role...] without a task = review of current codebase using review flow with named roles./opc with no arguments = prompt user to describe their task.Show triage result:
📌 Flow: {flow template name}
📍 Entry: {entry node}
⚡ Interaction: auto / interactive
Rationale: {1 sentence}Override: If user explicitly names a task type, respect that. Users can adjust after seeing triage.
Flow graph structures (nodes, edges, limits) are defined in opc-harness code. The orchestrator uses opc-harness route to determine next nodes — do not look up edges yourself.
Each template below describes which agents to dispatch at each node and which protocol to use.
Equivalent to v0.4.x behavior. Used as internal fallback only.
| Node | Type | Agents | Protocol |
|---|---|---|---|
| design | discussion | [planner] | design exploration |
| plan | build | [planner] | task decomposition |
| build | build | [implementer] | implementer-prompt.md |
| evaluate | review | [selected roles] | role-evaluator-prompt.md |
| deliver | build | — | commit + report |
| Node | Type | Agents | Protocol |
|---|---|---|---|
| review | review | [selected roles] | role-evaluator-prompt.md |
| gate | gate | — | gate-protocol.md |
Gate loopback: FAIL/ITERATE → review (multi-round with prior findings as context). Review is not limited to code — it evaluates any artifact: architecture proposals, documents, strategies, products.
| Node | Type | Agents | Protocol |
|---|---|---|---|
| brief | brief | [architect] | brief-protocol.md |
| build | build | [implementer] | implementer-prompt.md |
| code-review | review | [selected roles] | role-evaluator-prompt.md |
| test-design | review | [tester, + user/domain roles] | test-design-protocol.md |
| test-execute | execute | [orchestrator] | executor-protocol.md |
| gate | gate | — | gate-protocol.md |
test-design is a review node where multiple roles design test cases (API tests, E2E UI tests, edge cases) without executing them. test-execute runs the designed test plan and captures evidence. Principle: the person who decides what to test must not be the person who runs the tests.
| Node | Type | Agents | Protocol |
|---|---|---|---|
| build | build | [implementer] | implementer-prompt.md |
| review | review | [selected roles] | role-evaluator-prompt.md |
| test-design | review | [tester, + user/domain roles] | test-design-protocol.md |
| test-execute | execute | [orchestrator] | executor-protocol.md |
| gate | gate | — | gate-protocol.md |
Scope: Non-UI, single-file or ≤3 file changes, low risk. If task involves UI/design, multi-module refactoring, or security-related changes → use build-verify instead. Gate loops back to build (no brief node), and quick still requires OPC-generated testCommand evidence before final PASS.
The complete flow with discussion, multi-stage gates, and E2E verification.
| Node | Type | Agents | Protocol |
|---|---|---|---|
| discuss | discussion | [architect, engineer, tester] | discussion-protocol.md |
| brief | brief | [architect] | brief-protocol.md |
| build | build | [implementer] | implementer-prompt.md |
| code-review | review | [frontend, backend] | role-evaluator-prompt.md |
| test-design | review | [tester, + user/domain roles] | test-design-protocol.md |
| test-execute | execute | [orchestrator] | executor-protocol.md |
| gate-test | gate | — | gate-protocol.md |
| acceptance | review | [pm, designer] | role-evaluator-prompt.md |
| gate-acceptance | gate | — | gate-protocol.md |
| audit | review | [security, compliance, a11y] | role-evaluator-prompt.md |
| gate-audit | gate | — | gate-protocol.md |
| e2e-user | execute | [new-user, active-user, churned-user] | executor-protocol.md |
| gate-e2e | gate | — | gate-protocol.md |
| ux-simulation | execute | [new-user, active-user, churned-user] | ux-simulation-protocol.md + ux-observer-protocol.md |
| gate-final | gate | — | gate-protocol.md |
| Node | Type | Agents | Protocol |
|---|---|---|---|
| acceptance | review | [pm, designer] | role-evaluator-prompt.md |
| gate-acceptance | gate | — | gate-protocol.md |
| audit | review | [security, compliance, a11y] | role-evaluator-prompt.md |
| gate-audit | gate | — | gate-protocol.md |
| e2e-user | execute | [new-user, active-user, churned-user] | executor-protocol.md |
| gate-e2e | gate | — | gate-protocol.md |
Before task inference, check for existing state:
opc-harness ls to discover active flows. If any exist for the current project, show them and ask whether to resume or start fresh..harness/ has wave-* files but no flow-state.json → legacy v0.4.x format detected. Print: "Detected v0.4.x .harness/ format. Please delete .harness/ and re-run, or manually migrate." Do not proceed.After flow selection, initialize with the matching interaction mode:
opc-harness init --auto --claude-session-id "${CLAUDE_SESSION_ID}" --flow {TEMPLATE} --entry {ENTRY_NODE}
opc-harness init --flow {TEMPLATE} --entry {ENTRY_NODE} # interactive (`/opc -i`) onlyAuto init requires the installed OPC PreToolUse hook. Interactive init does not create a Claude session registry and is not subject to the node or repair-edge circuit breaker.
Init auto-creates ~/.opc/sessions/{project-hash}/{session-id}/ and updates the latest symlink. All subsequent harness commands automatically resolve to the latest session dir — you do NOT need to pass --dir or capture the output. Just run commands normally:
opc-harness route --node review --verdict PASS --flow {TEMPLATE}
opc-harness transition --from review --to gate --verdict PASS --flow {TEMPLATE}
opc-harness viz --flow {TEMPLATE}Multi-window safety: Each init creates a new session dir. If multiple OPC windows run on the same project, the last one to init becomes latest. To pin a specific session, pass --dir <path> explicitly.
Backward compat: Pass --dir .harness to init for a project-local harness dir.
Show flow graph — immediately after init, run opc-harness viz --flow {TEMPLATE} and display the ASCII output to the user. This gives them a visual map of the entire flow before execution begins.
Before starting, extract acceptance criteria — 3-7 concrete, testable bullet points. Evaluators grade against these.
Flow topology and model tier are independent. Keep every selected node, round, and role, but before each Agent call run:
opc-harness model-route --node {NODE_ID} --node-type {NODE_TYPE} [--role {ROLE}] --dir {PROJECT_ROOT}Pass the returned model through the host's per-dispatch selector. dispatch: false means no Agent. On an error or unsupported selector, stop instead of silently inheriting the root model. Re-run with --allow-premium only after explicit user approval. Show 💰 Model route: {tier} → {model} ({source}) before launch. Read ./pipeline/model-routing.md only for configuration or troubleshooting.
Before the Definition of Done questions, the orchestrator MUST select a quality tier. See ./pipeline/quality-tiers.md for full definitions.
| Tier | When | Baseline |
|---|---|---|
functional | CLI, API, backend, library, infra | No UI craft requirements |
polished | UI, frontend, website, dashboard, docs | Dark/light, responsive, loading/error/empty states, favicon, focus styles |
delightful | Showcase, demo, pitch, consumer product | All of polished + transitions, animations, micro-interactions, onboarding |
Selection rules:
polishedfunctionaldelightfulShow tier selection:
🎯 Quality Tier: {tier}
Baseline: {N items from tier checklist}The tier's baseline checklist items are automatically appended to acceptance criteria under a "## Quality Baseline ({tier})" section in acceptance-criteria.md (in the session dir). The implementer and evaluator both receive the tier as context.
Before dispatching ANY work, the orchestrator MUST establish a clear definition of done. This applies to both auto and interactive modes — the only difference is how the answers are obtained (inferred vs asked).
Three questions that must have answers before the first node executes:
What does "done" look like? — Concrete, observable outcomes. Not "implement auth" but "user can log in with email/password, session persists across refresh, logout clears session."
How will we verify it? — Map each outcome to a verification method:
npm test, specific test file, new test to write?)How will we evaluate quality? — What should reviewers look for beyond "it works"?
In auto mode: infer answers from the task description + codebase context (package.json scripts, existing tests, CLAUDE.md rules). Show inferred answers to user for confirmation. If task is too vague to infer concrete verification methods → ask, even in auto mode. A vague task is worse than a 30-second clarification.
In interactive mode (-i): ask directly, grouped with role-specific questions.
In loop mode (/opc loop): these answers go into plan.md per unit, so every tick knows how to verify itself even after context compaction.
Write the finalized acceptance criteria to acceptance-criteria.md (in the session dir) and include them in every subagent prompt.
Design Reproduction Pre-Flight: When the task involves reproducing/replicating a visual design from a reference image (keywords: 复刻, replicate, reproduce, reference image, 参考图, design reproduction), the orchestrator MUST run these additional init steps:
/Users/.../ref.jpg). Confirm the file exists.analyze_reference.py to generate a structured spec:python3 ~/.claude/skills/image-x/scripts/analyze_reference.py <ref_image> --output <session_dir>/spec.json## Reference section in acceptance-criteria.md:## Reference
- reference_image: /absolute/path/to/ref.jpg
- design_spec: /absolute/path/to/session/spec.json## Quality Baseline (polished)
- design-diff overall ≥ 4.0
- zero major diffsThis enables the full automated loop: build reads spec.json → implementer produces HTML → test-execute screenshots + VLM design-diff → gate reads diffs → ITERATE feeds diffs back to build. See ./pipeline/executor-protocol.md § "Design Reproduction Mode" for test-execute details.
Criteria Lint — Mandatory Gate: After writing acceptance-criteria.md, run opc-harness criteria-lint acceptance-criteria.md (use the session dir path). If it fails, revise and re-run (max 3 auto-fix attempts in auto mode, user-driven in interactive mode). See ./pipeline/criteria-lint.md for the mechanical checks. Init is gated — opc-harness init refuses to start if criteria-lint hasn't passed.
In loop mode, every plan.md MUST include a ## Task Scope section listing the user's original requirements:
## Task Scope
- SCOPE-1: Backend API for user auth
- SCOPE-2: Frontend login page with form validation
- SCOPE-3: Browser E2E tests covering login flow
- SCOPE-4: Unit tests with 100% coverage on new codeThe harness enforces this mechanically:
## Task Scope is missing (bypass: --skip-scope)--skip-scope-check)uncovered_scope if any items lack coverageThis prevents the #1 failure mode: LLM decomposition misses part of the original task, pipeline declares "complete" while major scope items are untouched.
-i)Ask targeted questions derived from selected roles — what does each role need that can't be inferred from the codebase? Aim for 3-5 grouped questions, merged with the Definition of Done questions above.
Persona construction for user roles: In auto mode, infer from project context. In interactive mode, ask directly.
Subagents don't inherit CLAUDE.md or project instructions automatically. When dispatching any subagent, forward relevant project context: dev workflow rules, precommit checks, coding conventions, test commands. Include this in every subagent prompt.
If superpowers skills are available, use them: brainstorming for design, plan writing, subagent-driven development for build, and branch delivery.
Product: pm, designer
User Lens: new-user, active-user, churned-user
Engineering: frontend, backend, devops, architect, engineer
Quality: security, tester, compliance, a11y
Specialist: planner, user-simulator, devil-advocateRole definitions live in roles/<name>.md. Add a .md file to roles/ to create a custom role.
The orchestrator searches for role definitions in this order (later sources override earlier ones with the same filename):
roles/<name>.md in OPC's install directoryrolesDir, scan _resolvedRolesDir/<name>.md. Custom roles with the same name as a built-in one take precedence for this flow.How to check for custom roles: After opc-harness init, if the flow template was loaded from ~/.claude/flows/, check FLOW_TEMPLATES[template]._resolvedRolesDir. If it exists and is a directory, scan it for .md files and merge into the role pool.
Protocol discovery works the same way: if the flow template specifies protocolDir, protocols in _resolvedProtocolDir/<name>.md supplement or override built-in protocols in pipeline/.
| Node type | Stage tags |
|---|---|
| review | review |
| build | build |
| execute | execute, post-release, verification |
| discussion | brainstorm, plan, discussion |
| gate | (no roles dispatched) |
Read the tags: front matter from each roles/<name>.md. Keep only roles whose tags include at least one matching stage tag.
mandatory: true in front matter are auto-included in every review node. The orchestrator cannot remove them. Currently: skeptic-owner.Dynamic Role Creation: If the task requires expertise not covered by any candidate, create a role on-the-fly following the same format (Identity + Expertise + When to Include + Anti-Patterns). Write to $SESSION_DIR/nodes/{nodeId}/dynamic-role-{name}.md. Max 5 dynamic roles per flow run.
Show role selection:
📋 Agents:
- frontend [standard/sonnet] — <specific scope>
- tester [economy/haiku] — <specific scope>
...
Launching {N} agents...Auto mode is bounded. Continue without confirmation only while node and repair-edge budgets remain. Normal graph limits and validation failures still apply.
When the circuit breaker trips, stop and report immediately. Do not retry or attempt recovery from the current Claude session. Recovery requires the user to run an existing opc-harness stop, goto, skip, or pass command from an external terminal.
The orchestrator uses cursor-based execution — flow-state.json.currentNode is the single pointer. No topological sort.
1. Read flow-state.json → currentNode
2. Look up currentNode in the flow template table above → get type, agents, protocol
3. Execute based on node type (see below)
4. After execution:
- opc-harness validate → check handshake.json
- Update progress.md with narrative line
- opc-harness route --node {current} --verdict PASS --flow {template} → get next
- opc-harness transition --from {current} --to {next} --verdict PASS --flow {template}
- **Show flow viz**: run `opc-harness viz --flow {template}` and display to user
- Loop back to step 1
5. When route returns next=null → flow complete → Deliver → **Prompt replay** (see below)Follow ./pipeline/discussion-protocol.md.
Follow ./pipeline/implementer-prompt.md in Build/Fix/Polish mode.
isolation: "worktree") → orchestrator merges artifacts and writes handshake.json.superpowers:subagent-driven-development.opc-harness record-commit --sha <sha> (or bare, defaulting to HEAD) so the terminal gate's changeScopeCoverage layer scopes to what this flow produced instead of a blind HEAD~1 diff. Skip only if the build committed nothing.Follow ./pipeline/role-evaluator-prompt.md.
eval-{role}.md to $SESSION_DIR/nodes/{NODE_ID}/run_{RUN}/../pipeline/context-brief.md (for review/analysis tasks).Critical — Review Independence:
Follow ./pipeline/executor-protocol.md.
Executor nodes are executed by the orchestrator directly — not as a subagent. This is because executors need full tool access (Bash, Playwright, Skills).
Follow ./pipeline/gate-protocol.md.
Gate nodes are executed by the orchestrator directly — no subagent dispatch.
opc-harness synthesize --node {upstream} → get verdict.opc-harness route --node {gate} --verdict {V} --flow {template} → get next node.opc-harness transition --from {gate} --to {next} --verdict {V} --flow {template} → validates edge, writes gate handshake, updates state.Gate nodes produce verdicts via opc-harness synthesize (code, not LLM judgment):
Code enforces all limits:
maxLoopsPerEdge = 3 (same edge can't be traversed more than 3 times)maxTotalSteps = 20-30 (depending on flow template)maxNodeReentry = 5 (same node can't be entered more than 5 times)Oscillation detection: After a loopback, run opc-harness diff on consecutive evaluations. If oscillation: true, surface to user.
Escape hatches:
/opc skip — skip current node, advance via PASS edge/opc pass — force gate to PASS/opc stop — terminate flow, preserve state/opc goto <nodeId> — manual jump (cycle limits still enforced via transition)When transition returns allowed: false → show the user why (which limit hit) and offer escape options. Never continue without user consent.
$SESSION_DIR/ # ~/.opc/sessions/{hash}/{id}/ or .harness/ if --dir used
├── flow-state.json # Current node, execution history, edge counts, limits
├── progress.md # Human-readable narrative log
└── nodes/
└── {nodeId}/
├── handshake.json # Machine-readable envelope (summary + verdict + artifact paths)
└── run_{N}/
├── eval.md # Single evaluator output (detailed findings)
├── eval-{role}.md # Per-role evaluator output (multi-role)
├── round-1-{role}.md # Discussion round 1
├── round-2-{role}.md # Discussion round 2 (diffs only)
├── decision.md # Discussion facilitator decision
├── screenshot-{N}.png # Executor GUI evidence
└── command-output-{N}.txt # Executor CLI evidenceRelationships:
handshake.json = envelope. Its artifacts[] points to detailed files (eval.md, screenshots, etc.)flow-state.json = sole source of truth for execution position and historyeval.md / eval-{role}.md = human-readable findings (read by synthesize to compute verdict)progress.md = narrative projection of flow execution (for humans)All templates live in ./pipeline/:
evaluator-prompt.md — Single generic evaluatorrole-evaluator-prompt.md — Role-specific evaluator (review, analysis, brainstorm outputs)implementer-prompt.md — Implementer (Build / Fix / Polish modes)discussion-protocol.md — Multi-agent discussion (round-robin, 3 rounds, facilitator)gate-protocol.md — Verdict aggregation + code-based routing + transition + findings dispositionexecutor-protocol.md — CLI/GUI execution with evidence requirementstest-design-protocol.md — Test case design (review node, multi-role test planning before execution)loop-protocol.md — Autonomous multi-unit execution (plan decomposition → cron loop → auto-terminate)handoff-template.md — Handshake.json specificationcontext-brief.md — Design context brief proceduremodel-routing.md — Explicit per-node/per-role model selection and premium approvalreport-format.md — Presentation templates + JSON schema + replayquality-tiers.md — Tier definitions + baseline checklists + severity calibrationux-simulation-protocol.md — UX simulation gate (red flag detection, delta comparison, ordinal tier fit)ux-observer-protocol.md — UX observer dispatch (persona-based pattern observation, closed enum red flags)criteria-lint.md — DoD mechanical lint (single-pass structure + content checks, pre-init gate)Custom flows can be defined as JSON files in ~/.claude/flows/. The harness loads them at startup and merges them into the template registry. Built-in templates take precedence (external cannot override).
JSON schema:
{
"nodes": ["discover", "build", "review", "gate"],
"edges": {
"discover": { "PASS": "build" },
"build": { "PASS": "review" },
"review": { "PASS": "gate" },
"gate": { "PASS": null, "FAIL": "build", "ITERATE": "build" }
},
"limits": { "maxLoopsPerEdge": 3, "maxTotalSteps": 20, "maxNodeReentry": 5 },
"nodeTypes": {
"discover": "discussion", "build": "build",
"review": "review", "gate": "gate"
},
"softEvidence": true,
"opc_compat": ">=0.10",
"contextSchema": {
"build": {
"required": ["task"],
"rules": { "task": "non-empty-string" }
}
}
}Validation rules:
nodes, edges, limits are requirednodesnodeTypes values must be: discussion, build, review, execute, gateopc_compat uses >=X.Y semver range (current harness compatibility: 0.10.0)__proto__, constructor, prototype) are rejectedOptional fields:
softEvidence: true — downgrades missing-evidence errors to warnings for execute nodescontextSchema — per-node validation rules for flow-context.jsonopc_compat — minimum harness version requiredcontextSchema rules:
non-empty-string — must be a non-empty stringnon-empty-array — must be a non-empty arraynon-empty-object — must be a non-empty plain object (not array)positive-integer — must be a positive integer > 0All commands output JSON to stdout. Errors go to stderr. All output is machine-parseable.
| Command | Usage | Description |
|---|---|---|
init | --flow <tpl> [--entry <node>] [--dir <p>] | Initialize flow state. Creates flow-state.json and node directories. Seeds baseSha (git floor) and empty producedCommits. |
record-commit | [--sha <sha>] [--dir <p>] | Record a commit the flow produced into flow-state.producedCommits. Defaults to HEAD; dedups; fail-closed on invalid sha. The gate's changeScopeCoverage layer scopes to these commits. |
route | --node <id> --verdict <V> --flow <tpl> | Get next node from graph edges. Returns {next, allowed}. |
transition | --from <n> --to <n> --verdict <V> --flow <tpl> --dir <p> | Execute state transition. Validates edge, checks limits, writes gate handshake, enforces backlog. |
validate | <handshake.json> | Validate handshake schema (required fields, evidence check for execute nodes). |
validate-chain | [--dir <p>] | Validate entire execution path — checks all handshakes match history. |
validate-context | --flow <tpl> --node <id> [--dir <p>] | Validate flow-context.json against contextSchema rules. |
finalize | [--dir <p>] [--strict] | Finalize terminal node. Marks flow as completed. |
viz | --flow <tpl> [--dir <p>] [--json] | Visualize flow graph (ASCII or JSON). Shows ▶ current, ✅ visited, ○ pending. |
replay | [--dir <p>] | Export full replay data as JSON (flow state + handshakes + run artifacts). |
| Command | Usage | Description |
|---|---|---|
skip | [--dir <p>] [--flow <tpl>] | Skip current node, advance via PASS edge. Writes skip handshake. |
pass | [--dir <p>] | Force-pass current gate node. Only works on gate-type nodes. |
stop | [--dir <p>] | Terminate flow, preserve state. Sets status to "stopped". |
goto | <nodeId> [--dir <p>] | Manual jump to any node. Cycle limits still enforced. |
ls | [--base <p>] | List all active flows (scans ~/.opc/sessions/ and project-local .harness* directories). |
| Command | Usage | Description |
|---|---|---|
verify | <file> | Parse evaluation markdown → JSON (severity counts, verdict, findings). |
synthesize | <dir> --node <id> [--run N] [--base <dir>] [--no-strict] [--iteration N] | Merge all evaluations for a node → aggregate verdict. D2 compound gate enforced by default (≥3 layers → FAIL); --no-strict for shadow mode. --base validates file:line refs. |
report | <dir> --mode <m> --task <t> | Generate full report JSON with presentation data. |
diff | <file1> <file2> | Compare two evaluation rounds. Detects oscillation. |
| Command | Usage | Description |
|---|---|---|
init-loop | [--plan <file>] [--dir <p>] | Initialize loop state from plan.md. Validates plan structure, detects test/lint scripts. |
complete-tick | --unit <id> --artifacts <a,b> [--description <text>] [--dir <p>] | Complete tick with evidence. Validates artifacts per unit type, checks plan hash, overlap detection. |
next-tick | [--dir <p>] | Get next unit. Checks stall/oscillation, returns {ready, unit, terminate}. |
The transition command enforces:
maxLoopsPerEdge, maxTotalSteps, maxNodeReentrynodeTypes[from] === "gate" (not name prefix)backlog.md must exist for FAIL/ITERATE transitionsAgent spawn failures: Retry once. If it fails again, surface to user.
Context compaction resilience: opc install-hooks always registers the Node-based PreToolUse guard required by auto flows. When jq is available, it also registers optional PreCompact/PostCompact shell hooks that snapshot state and inject resume context after compaction. When auto-compact fires:
$SESSION_DIR/resume-brief.mdadditionalContext into the new contextIf the optional compaction hooks are unavailable, flow-state.json still persists on disk, but the orchestrator must be manually re-invoked via /opc (which runs opc-harness ls to discover active flows).
State recovery: On resume, run opc-harness validate-chain. If inconsistent → surface to user, do not auto-repair.
Legacy detection: If .harness/ in project root has wave-* files but no flow-state.json → refuse to run. Print migration instructions.
Fresh context per agent. Always spawn new subagents. Files carry state; agents bring fresh capacity.
When the flow completes (route returns next=null):
opc-harness viz --flow {template}opc-harness ls):node "$OPC_HARNESS/../opc-report.mjs" --dir <session-dir> --output <session-dir>/report.html --title "{task summary}"✅ Flow complete! Report: $SESSION_DIR/report.html
Want to see the replay? Run: /opc replay© iamtouchskyer, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 308 other files (scripts) in the repository root of iamtouchskyer/opc.
Open the folder on GitHubat commit f36f483
Opc next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Opc this skilliamtouchskyer/opc | 197 | — | ~9.2k | Automated safety check: Warn | MIT | |
| Brainstormingxpinjection/test-driven-spring-boot | 112 | 54 repos | ~2.6k | Automated safety check: Pass | MIT | |
| LLM Councilgcpdev/llm-council-skill | 461 | 1 repos | ~1k | Automated safety check: Notes | MIT | |
| Typesafe AIOpenAgentsInc/openagents | 455 | 9 repos | ~2.5k | Automated safety check: Pass | MIT | |
| Yao Meta Skillyaojingang/yao-meta-skill | 2.7k | — | ~768 | Automated safety check: Pass | MIT | |
| Trellis StartROYIANS/foliq-print-template-designer | 135 | 6 repos | ~646 | Automated safety check: Pass | MIT |
xpinjection/test-driven-spring-boot
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior.
gcpdev/llm-council-skill
Multi-LLM collaborative brainstorming and planning. An agent skill from gcpdev/llm-council-skill.
OpenAgentsInc/openagents
Build AI-powered software with TypeSafe: small units of AI intelligence you can use like programming primitives.
yaojingang/yao-meta-skill
Create, improve, or evaluate an existing skill from workflows, prompts, SOPs, scripts.
ROYIANS/foliq-print-template-designer
Initializes an AI development session by reading workflow guides, developer identity, git status, active tasks, and project guidelines from .trellis/.
jnMetaCode/superpowers-zh
Turns a rough idea into an approved design before any code is written, sorting the request into spike, bounded or architectural and enforcing an approval gate.
Categories
OPC — One Person Company. An agent skill from iamtouchskyer/opc. Opc is an agent skill from iamtouchskyer/opc. OPC — One Person Company.
Opc fits situations like: tasks that involve Brainstorming.
Run `npx skills add iamtouchskyer/opc --skill opc -a claude-code`. Or copy the skill folder (the iamtouchskyer/opc repository) into .claude/skills/opc in your project. Claude Code loads it when a task matches its description.
Run `npx skills add iamtouchskyer/opc --skill opc -a codex`. Or copy the skill folder (the iamtouchskyer/opc repository) into .agents/skills/opc in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add iamtouchskyer/opc --skill opc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/opc, .gemini/skills/opc, .github/skills/opc and .opencode/skills/opc in your project.
Going by SKILL.md and its folder, Opc needs JavaScript and a shell for the scripts in its folder and the command-line tools its instructions call (node, python3 and npm). Our summary lists: Node.js; A Bash shell.
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): contains instruction-override wording (e.g. “without asking the user”). Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Opc is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 9.2k tokens (SKILL.md is roughly 37k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Opc: Brainstorming (xpinjection/test-driven-spring-boot, 112 stars), LLM Council (gcpdev/llm-council-skill, 461 stars), Typesafe AI (OpenAgentsInc/openagents, 455 stars) and Yao Meta Skill (yaojingang/yao-meta-skill, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
iamtouchskyer (a GitHub user) maintains it in iamtouchskyer/opc, which has 197 GitHub stars. The repository was last updated on September 8, 2026.
Source: iamtouchskyer/opc on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.