From rc
Creates a Technical Specification by translating PRD business requirements into implementation designs through interactive technical clarification. Use when a PRD exists and needs a technical plan, or when technical architecture decisions need documentation. Do not use for PRD creation, task breakdown, or direct code implementation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/rc:rc-create-techspec [feature-name] [prd-file][feature-name] [prd-file]opusThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Translate business requirements into a detailed technical specification.
Translate business requirements into a detailed technical specification.
The design clarification must precede the artifact, because a TechSpec written before the phases finish encodes assumptions about the existing architecture — and those are exactly the assumptions that cause integration failures downstream. This holds for every TechSpec regardless of perceived simplicity: - Do not write the TechSpec file until all phases are complete and the user has approved the final draft — an unapproved file is a design decision the user never signed off on. - Do not skip the codebase exploration: each TechSpec is informed by the existing architecture so the design fits what is already there instead of fighting it. - Do not skip user interactions: the user shapes the TechSpec at every decision point, because architectural intent and constraints often live with them, not in the code.If the Serena MCP is available, prefer its symbolic tools over whole-file reads when grounding the technical design in the codebase — they are LSP-accurate and token-efficient:
get_symbols_overview to grasp a file's structure before reading it; find_symbol (by name path, e.g. Type/method) to jump straight to a definition.find_referencing_symbols to map every caller of a symbol before reasoning about impact.Fall back to Grep/Glob + Read when Serena is unavailable or for plain-text (non-symbol) searches.
When this skill instructs you to ask the user a question, you MUST use your runtime's dedicated interactive question tool — the tool or function that presents a question to the user and pauses execution until the user responds. Do not output questions as plain assistant text and continue generating; always use the mechanism that blocks until the user has answered.
If your runtime does not provide such a tool, present the question as your complete message and stop generating. Do not answer your own question or proceed without user input.
.rc/tasks/<name>/ directory._prd.md as primary input._techspec.md for update mode..rc base directoryRC supports monorepos, where more than one .rc directory can exist. Before reading or writing any .rc/... path, resolve which .rc directory this run uses; its parent is the base directory. Treat every .rc/... path in this skill as relative to that base.
.rc directories, skipping node_modules, .git, vendor, and any _archived/ directory..rc/ at the project root, creating it on first write. Ordinary single-folder projects behave exactly as before..rc whose tasks/ directory contains the feature's <NN>-<slug> directory. If the feature exists under more than one .rc (or under none), ask the user which .rc to use via the interactive question tool that pauses execution, listing the discovered directories by their path relative to the project root.You MUST create a task for each phase and complete them in order:
references/techspec-template.md.rc/tasks/<name>/_techspec.mdGather context.
.rc base directory as described in "Resolving the .rc base directory" above; the .rc/tasks/ lookup below is relative to it. PRD directories carry a zero-padded numeric prefix (<NN>-<base-slug>, e.g., 01-add-field-tag) created by rc-create-prd. Match the feature name the user provided against the part after the <NN>- prefix to locate the existing directory under .rc/tasks/ (ignore _archived/ and other underscore-prefixed directories). If exactly one matches, use it. If several match, ask the user which one. If none matches and you must create a new directory (no PRD context exists), allocate the next counter the same way rc-create-prd does: highest existing ^[0-9]+- prefix + 1, starting at 01, zero-padded to at least two digits._prd.md in .rc/tasks/<name>/. If it exists, read it as the primary input..rc/tasks/<name>/adrs/ to understand decisions already made during PRD creation..rc/tasks/<name>/adrs/ directory if it does not exist._techspec.md already exists, read it and operate in update mode.Ask technical clarification questions.
Create ADRs for significant technical decisions.
references/adr-template.md..rc/tasks/<name>/adrs/..rc/tasks/<name>/adrs/adr-NNN.md (zero-padded 3-digit sequential number).Draft the TechSpec.
references/techspec-template.md and fill every applicable section.adrs/ directory. Even simple features require at least one ADR documenting the primary technical approach chosen and alternatives rejected. If no ADRs were created in step 3, go back and create at least one before generating the document.id that later artifacts (tasks, reviews) reference. This is the durable, checkable core of the spec — write it for every TechSpec, even simple ones..rc/tasks/<name>/_techspec.md. Do not print the document — it is long, and printing it duplicates what the file already holds.Review with the user.
.rc/tasks/<name>/_techspec.md. Please review and let me know:"Confirm.
.rc/tasks/<name>/_techspec.md — on approval, just confirm the path.rc-create-tasks from this TechSpec.The Behavioral Contract is a flat list of atomic assertions — each one independently checkable — with stable identifiers in HTML comments so they survive edits and can be grepped by reviewers and task files. Two kinds:
### Requirement: reject expired tokens
When a request presents an expired auth token, the API responds 401 and does not touch the session store.
<!-- id: auth.reject-expired -->
<!-- enforced: TestAuth_RejectsExpired (internal/auth) -->
<!-- depends_on: auth.session-shape -->
### Invariant: session store is append-only
Session records are never mutated in place; updates write a new revision.
<!-- id: auth.session-append-only -->
<!-- enforced: pending -->
Rules for the contract:
id is <area>.<short-kebab>, stable — never renumber on edit; deletions are explicit. It is the anchor other artifacts cite.enforced names the test/check that proves the assertion, or pending if not yet covered (a reviewer can grep enforced: pending to find unverified requirements).depends_on (optional) lists other assertion ids this one builds on.rc-create-tasks references these ids per task; rc-code-review/rc-review-round can grep enforced: to detect requirements that drifted out of coverage.
Before designing, consult project memory (the rc-memory skill, scanning .rc/memory/INDEX.md) for the feature and component terms to recover
prior architectural decisions, conventions, and known gotchas (see the rc-memory
skill). After the techspec is settled, record any durable cross-cutting decision with
the rc-memory skill (scope: decision) — only decisions not already captured in the techspec or
the ADRs.
npx claudepluginhub rodolfochicone/rc-project --plugin rcCreates, edits, and verifies skills using a test-driven development approach with pressure scenarios and subagents.