Spec
Turn an idea into a reviewed design doc before any planning: a one-question-at-a-time interview via question cards, then a spec covering architecture, data flow, error handling, and testing, self-reviewed for placeholders and contradictions. Feeds /octo:plan.From its SKILL.md
npx -y skills add eduardkumskyi/octo --skill specAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
6.2 KB, ~1.4k tokens by cl100k_base, as published. Nobody here has run it
Progress Contract
Register these steps as a native task list at Step 1, before beginning the interview. Report progress as "N steps remaining, size class S/M/L" β never wall-clock ETAs.
Register steps in the native task list named π <n>/<total> β <step name>; update each to in_progress/completed as you go β the checklist is the user's primary progress view.
Steps: (1) read-context, (2) scope-check, (3) interview, (4) draft-spec, (5) self-review, (6) save-spec, (7) await-approval.
Arguments
<idea>β the feature, system, or change to design. Free-form; keep it concise./octo:spectranslates it into a full design doc before any planning begins.
Workflow
Step 1 β Read project context
Read the host project's CLAUDE.md. If it is absent or missing a needed section:
- State what is missing explicitly.
- Continue with defaults β do not block on scaffolding.
- Detect what you can from repo artifacts (lockfiles,
Makefile,pyproject.toml, CI config,package.json). Label every inferred convention[DETECTED].
Step 2 β Scope check
Assess whether the idea spans multiple independent subsystems (e.g. a new API endpoint, a background worker, and a schema migration that could each be specced and planned separately).
If yes: state the decomposition explicitly and propose the breakdown FIRST β list the sub-specs as distinct items and ask which to tackle first (via AskUserQuestion, options = each sub-spec + "All of them in order (Recommended)"). Do not proceed past this step without a scoping decision.
If no: proceed to Step 3 immediately.
Step 3 β Interview
Conduct a one-question-at-a-time interview to gather enough context to write a complete, unambiguous spec. Cover: purpose, users or consumers, constraints (perf, security, platform), success criteria, and non-goals.
Question discipline:
- Ask exactly ONE question per exchange β never bundle multiple questions.
- Prefer AskUserQuestion wherever choices are enumerable: 2β4 concrete options, recommended first and labeled "(Recommended)", free prose only for genuinely open-ended questions.
- Stop when marginal questions stop changing the design (typically 4β8 questions total).
- If the user's answer resolves two pending questions at once, skip the resolved one.
Step 4 β Draft the spec
Write the spec with these sections, sized to their actual complexity (YAGNI β omit sections that are genuinely N/A rather than padding them):
- Summary β one paragraph; what this is and why it matters.
- Goals & Non-goals β bullet lists; non-goals are as important as goals.
- Architecture β components, boundaries, major dependencies; diagram in prose or ASCII.
- Data flow β how data enters, transforms, and exits the system; happy path + key edge cases.
- Error handling β failure modes, retry strategy, degraded-state behavior.
- Testing approach β unit / integration / e2e breakdown; what a passing test suite proves.
## Assumptionsβ every non-obvious decision, each labeledSAFEorRISKY.## Open Questionsβ items that need resolution before or during implementation, with who owns the answer.
Step 5 β Self-review pass
Before saving, scan the draft for:
- Placeholder scan β no TBD, TODO, "to be defined", or blank sections.
- Internal contradictions β does any section contradict another? Fix inline.
- Scope creep β does the spec describe more than the agreed idea? Trim.
- Ambiguity check β would a fresh implementer have to guess at any decision? Clarify.
Fix all issues inline. Do not save a draft that fails any of these checks.
Step 6 β Save spec
-
Derive the slug: lower-case the idea, replace spaces and special characters with
-, collapse runs of-. Example:"OAuth token refresh flow"βoauth-token-refresh-flow. -
Write the spec to
.claude/octo/specs/YYYY-MM-DD-<slug>.mdusing today's date. -
Register
.claude/octo/in.git/info/exclude: read the file (create if absent), append the line.claude/octo/only if it is not already present. Never modify the project's.gitignore. State this to the user. -
Report the saved path.
Step 7 β Await approval β STOP
Present a brief summary: spec title, section count, key architectural decisions, and any
RISKY assumptions that will need resolution before or during planning.
STOP. Use AskUserQuestion: "Spec saved β ready to plan?" with options:
- Run
/octo:planwith this spec (Recommended) - Revise a section first
- Stop here
On approval, offer /octo:plan and tell it to consume the spec at
.claude/octo/specs/YYYY-MM-DD-<slug>.md β plan carries the spec's Assumptions forward.
Parallel-first law
Where interview questions do not depend on each other's answers, batch them into a single AskUserQuestion multiSelect rather than sequential single-question exchanges. Where spec sections can be drafted independently (e.g. Error handling and Testing approach share no content), draft them in parallel sub-tasks rather than sequentially.
Shared Conventions
- Commits: conventional format
type(scope): brief descriptionβ no AI attribution, noCo-Authored-Bylines of any kind. - Never push directly to protected branches (protected branches β see the octo guard's list).
- Never use
--no-verifyor force-push. - Parallel-first: dispatches that do not consume each other's output MUST go in a single message. Dispatching sequentially what could run concurrently is a defect, not a style choice. Cap β10 concurrent lanes; more work than lanes β batch waves.
- Reader-first output: lead with the outcome in one sentence; keep the visible reply short and dev-readable β only what changes the reader's next action. Full detail (complete reports, evidence, logs) goes to a file under
.claude/octo/reports/YYYY-MM-DD-<skill>-<slug>.mdwith the path given in chat β never dumped into the conversation.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.