MoAI SPEC Workflow
modu-ai/moai-adk
Manages SPEC documents for MoAI-ADK development, with GEARS or EARS requirement notation, acceptance criteria and a link into the Plan-Run-Sync workflow.
A skill your agent uses when you want a disciplined, spec-driven path from a feature idea to shipped, verified software — the SDD dispatcher and front door, in any language.
$ npx skills add ericrisco/rsc-harness --skill sdd -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness sdd --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/sdd .claude/skills/sdd && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .claude/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/sddType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill sdd -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness sdd --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/sdd .agents/skills/sdd && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .agents/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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 ericrisco/rsc-harness --skill sdd -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness sdd --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/sdd .cursor/skills/sdd && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .cursor/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/sdd--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill sdd -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness sdd --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/sdd .gemini/skills/sdd && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .gemini/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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 ericrisco/rsc-harness sddInstalls 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 ericrisco/rsc-harness --skill sdd -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/sdd .github/skills/sdd && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .github/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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 ericrisco/rsc-harness --skill sdd -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness sdd --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/sdd .opencode/skills/sdd && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sdd" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/sdd into .opencode/skills/sdd/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sdd", 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.
sddA skill your agent uses when you want a disciplined, spec-driven path from a feature idea to shipped, verified software — the SDD dispatcher and front door, in any language.
Sdd is an agent skill from ericrisco/rsc-harness. Use when you want a disciplined, spec-driven path from a feature idea to shipped, verified software — the SDD dispatcher and front door, in any language. States the method, reads the user's register from 02-DOCS, and routes to the right phase: constitution - specify - clarify - plan - tasks - analyze - implement - verify - review - ship, with debug / worktrees / parallel on demand. Use it to start a feature, to govern the whole flow, or when unsure which phase you are in. NOT a single phase itself (it…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/model-routing.md`).
It sits in Development, covering Spec-driven development and Git worktrees. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
11 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit e3d5b33. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown and json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Sdd loads about 4.7k tokens when it runs, and up to ~7.5k if it reads all its reference files. Until then it costs about 151 tokens; SKILL.md has 2,257 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 no risky patterns in SKILL.md.
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); files beside SKILL.md are not scanned.
The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 2,257 words, ~4,661 tokens.
.claude/skills/sdd/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.The front door for building software the rsc way: intent in, shipped-and-verified software out, with the spec, plan and decisions recorded into the project's living knowledge model as you go.
sdd is the engineering counterpart of the harness. The harness runs the chaos → knowledge loop (inbox → 02-DOCS wiki). sdd runs the intent → shipped software loop, and it writes the artifacts of that loop — constitution, specs, plans, decisions — into the same 02-DOCS/wiki/sdd/ so the project's knowledge grows with every feature instead of leaking into chat history.
This skill does not do a phase itself. It is the dispatcher: it names the method, reads which register you want (technical or with analogies), tells you which phase you are in, and hands off to the phase skill that owns the work. Each phase skill, when it finishes, points you at the next one — so once you enter the chain you rarely come back here.
Spec-Driven Development (SDD, GitHub Spec Kit lineage) says: decide what and why before how, write it down, and let each written artifact gate the next step. You do not jump from a sentence in chat to a pull request. You move through ordered phases, each producing a durable artifact that the next phase reads. The payoff is that the intent is reviewable before any code exists, drift is caught at a gate instead of in production, and the whole thing is legible to the next person (or the next session) because it lives in 02-DOCS, not in a scrollback.
If you only remember one rule: the artifact is the contract. Code is checked against the plan, the plan against the spec, the spec against the constitution. When they disagree, you fix the disagreement before writing more code — you do not let the code silently win.
Before the first non-trivial feature in a repo, run ../sdd-init/SKILL.md. It detects the stack, package manager, test runners, scripts, monorepo signals and review budget, refreshes .rsc/skill-registry.json, and writes:
02-DOCS/wiki/sdd/config.yamlIf config.yaml is missing and the request is more than a tiny one-line change, route to sdd-init before specify. This is not the same as init: init profiles the user/workspace; sdd-init calibrates the technical SDD runtime.
The canonical chain runs left to right. Solid arrows are the default path; you move forward when the current phase's exit gate passes.
constitution ─(once per project)─┐
▼
sdd-init ─(once per repo/runtime)─┐
▼
proposal? ─► specify ─► clarify ─► plan ─► tasks ─► analyze ─► implement ─► verify ─► review ─► ship ─► archive
▲
on demand ─────┴─────────────────────
debug · worktrees · parallel| Phase | Owns | Writes | Tier | Sibling skill |
|---|---|---|---|---|
| sdd-init | Technical runtime calibration: stack, tests, commands, registry, budgets | 02-DOCS/wiki/sdd/config.yaml, .rsc/skill-registry.* | light | ../sdd-init/SKILL.md |
| proposal | Optional pre-execution briefing for ambiguous/architectural/risky work | 02-DOCS/wiki/sdd/proposals/<slug>.md | — | handled by ../specify/SKILL.md when needed |
| constitution | Project non-negotiables: stack canon, quality bars, conventions | 02-DOCS/wiki/sdd/constitution.md | heavy | ../constitution/SKILL.md |
| specify | Turn a fuzzy intent into a spec — what & why, no how | 02-DOCS/wiki/sdd/specs/<slug>.md | balanced | ../specify/SKILL.md |
| clarify | Surface ambiguities / edge cases, ask, bake answers back in | updates the spec | balanced | ../clarify/SKILL.md |
| plan | Technical plan: architecture, interfaces, data flow, tests, risks | 02-DOCS/wiki/sdd/plans/<slug>.md | heavy | ../plan/SKILL.md |
| tasks | Break the plan into ordered, independently-verifiable tasks | task list in the plan artifact | balanced | ../tasks/SKILL.md |
| analyze | Consistency gate: constitution ↔ spec ↔ plan ↔ tasks (report only) | a gap report | heavy | ../analyze/SKILL.md |
| implement | Execute tasks with checkpoints; TDD discipline embedded | logs to 02-DOCS/wiki/sdd/decisions.md | balanced | ../implement/SKILL.md |
| verify | Post-build gate: run the stack's checks + done-checks + acceptance | evidence | balanced | ../verify/SKILL.md |
| review | Adversarial code review — give and receive with rigor | review notes | heavy | ../review/SKILL.md |
| ship | Close the branch: PR / merge / cleanup. Git authorship = Eric | the merge/PR and archive bundle | light | ../ship/SKILL.md |
| debug | Root-cause diagnosis: reproduce → isolate → fix → verify | a diagnosis | heavy | ../debug/SKILL.md |
| worktrees | Isolate feature work in a branch/worktree before executing a plan | an isolated workspace | light | ../worktrees/SKILL.md |
| parallel | Fan out independent tasks across subagents, gather results | merged results | per-unit | ../parallel/SKILL.md |
The Tier column is the default model tier each phase routes to when per-phase model routing is enabled — see "Per-phase model routing" below. It is off by default and changes nothing about the chain or the gates; it only decides which model does the work.
If a phase skill above does not yet exist in this repo, the chain still holds — do that phase's work inline following the method here, and skip the broken handoff. Never invent a sibling that is not installed.
When a request lands, do not start typing code. Place it on the map first, then invoke the phase skill that owns it.
The new-feature gate (hard). The moment the user is thinking about a new feature or change — "add…", "build…", "it should also…", "quiero añadir…" — it goes to
specifyfirst, even if a stack skill (nextjs/fastapi/flutter/react…) also fired and could just build it. No feature code is written — by any skill — until a spec AND a plan exist and the user has approved them. A stack skill about to build an unspec'd, non-trivial feature must stop and route here. The only exception is a genuinely one-line, low-risk change; name it and skip.
02-DOCS/wiki/sdd/config.yaml and this is non-trivial? → sdd-init.status: draft (the one rsc onboard writes)? → constitution once, then come back to the chain.specify.specify.clarify.plan.tasks.analyze.implement (it embeds strict TDD from config and calls parallel/worktrees when useful).verify, then review, then ship/archive.debug, then resume where you were.If you genuinely cannot tell which phase you are in, ask the user one question: "Do we have a written spec for this yet?" The answer puts you before or after specify, and the rest follows.
constitution runs once per project, not per feature. If 02-DOCS/wiki/sdd/constitution.md exists, read it as guardrails and move on — unless it is still status: draft: then complete it first.clarify and analyze are gates, not paperwork. If a spec is genuinely unambiguous and tiny, name that out loud and pass through — but the bias is to run them, because skipped gates are where drift hides.By default the chain pauses at its gates (spec approval, plan approval). Autopilot trades those
per-phase stops for a single up-front consent: the user says "take it all the way" once, and the
chain runs specify → clarify → plan → tasks → analyze → implement → verify → review end to end
without asking to continue between phases — still writing every artifact (spec, plan, decisions)
to 02-DOCS/wiki/sdd/ as it goes, so the work stays reviewable after the fact.
How it turns on:
specify offers it at the brainstorm boundary ("¿lo llevo hasta el final yo solo, o paramos en cada fase?"). A yes engages autopilot for this feature.sdd.autopilot: true in 02-DOCS/wiki/sdd/config.yaml to default it on (still surfaced once per feature).The up-front yes IS the gate. It satisfies the new-feature gate's "spec + plan approved before code" — approval was granted in advance, for the whole run. Do not re-ask phase by phase.
Autopilot still STOPS for these — not "continue?" nags, real forks:
debug; an analyze contradiction).ship (PR/merge) still confirms: autopilot drives the build, not the release.Run the fan-out on the developer subagent as usual, and narrate in the orient voice: name each phase as it passes and show its artifact, one line each. Autopilot changes when you ask, never what gets written — every artifact and gate-check still happens; you just don't block on a human between them.
Before dispatching, read technical_level in 02-DOCS/wiki/harness/user-profile.md — exactly as every rsc skill does. It picks the register (technical terms, or plain words with analogies); it never changes whether the gates exist. Speak in the orient voice:
If there is no profile yet, use analogies and ask once "technical or with analogies?" before dispatching, and persist the answer — that is init's job and sdd honors it.
Different phases reward different models: architecture and adversarial review want the strongest
one; scaffolding and git plumbing don't. SDD can route each phase to a tier — heavy
(deep reasoning), balanced (execution), light (mechanical) — that resolves to a concrete
model in 02-DOCS/wiki/sdd/config.yaml under models. The default mapping is the Tier
column above (quality-biased: heavy on constitution/plan/analyze/review/debug, balanced on
execution, light on ship/worktrees/sdd-init).
It is off by default (models.enabled: false). When the user opts in, each phase applies it
two ways: programmatically — dispatching Task/parallel subagents on the tier's model
(real routing, e.g. Claude Code) — and advisorily — announcing the recommended switch at the
phase boundary, in one line, for inline work and assistants that can't switch
programmatically. Never switch unasked, never claim a switch a tool can't make, and skip routing
on trivial one-line changes. The sdd dispatcher itself never routes (staying on the session
model); parallel has no fixed tier (each unit inherits the tier of its work). Full protocol,
per-assistant mechanism, and the provider→model table: references/model-routing.md.
Every phase writes under 02-DOCS/wiki/sdd/ so the feature's reasoning outlives the chat:
02-DOCS/wiki/sdd/
├── config.yaml ← repo runtime calibration from sdd-init
├── constitution.md ← project non-negotiables (once)
├── proposals/<slug>.md ← optional pre-execution briefing
├── specs/<slug>.md ← one spec per feature
├── plans/<slug>.md ← one plan per feature (tasks live inside)
├── progress/<slug>.md ← append-only apply progress
├── verifications/<slug>-YYYY-MM-DD.md
├── archive/<slug>/ ← final report, state, verify/review/ship records
├── sessions/<date>-<slug>.md
└── decisions.md ← append-only log of decisions taken while buildingIndex these in 02-DOCS/wiki/index.md (the Knowledge map; root CLAUDE.md keeps only a short pointer) under an sdd/ topic, so every other skill reads them before working in the area. The harness maintains and improves these files just like any other wiki topic — sdd produces them, the harness keeps them honest.
# 02-DOCS/wiki/index.md
## Knowledge map
| Topic | Where | What |
| --- | --- | --- |
| sdd/ | 02-DOCS/wiki/sdd/ | Constitution, specs, plans, decisions for spec-driven feature work |sdd and its phases are process, not stack. Concrete tooling — test runners, lint/type/build, framework idioms — belongs to the stack skills. plan defers stack specifics, implement borrows the stack skill's testing approach, and verify runs the stack skill's checks. Route to the stack that matches the work: ../fastapi/SKILL.md, ../nextjs/SKILL.md, ../go/SKILL.md, ../postgresdb/SKILL.md, ../flutter/SKILL.md. Visual/UX work routes to ../design/SKILL.md and copy to ../marketing/SKILL.md.
The registry is the cheap index:
.rsc/skill-registry.json
.rsc/skill-registry.mdUse it to choose the few relevant skill paths for the current phase/stack. Do not load the whole catalog. Before dispatching subagents, digest selected skills into 4-5 compact rules and include them in the brief. Each phase reports skill_resolution: which skills were used, which were missing, fallback behavior, and the compact rules handed to subagents.
Every SDD phase ends with the same parseable block so the dispatcher can chain phases without interpreting a novel:
{
"status": "complete|blocked|failed",
"executive_summary": "one short paragraph",
"artifact": "path/to/artifact-or-none",
"next_recommended": "sdd-init|specify|clarify|plan|tasks|analyze|implement|verify|review|ship",
"risk": "low|medium|high",
"model": { "tier": "heavy|balanced|light", "resolved": "model-id", "routing": "on|off" },
"skill_resolution": {
"used": [],
"missing": [],
"fallback": [],
"compact_rules": []
},
"evidence": []
}If a phase cannot produce the envelope because the user stopped it mid-flight, write a session summary instead.
When a session is long, about to pause, or context is at risk, write:
02-DOCS/wiki/sdd/sessions/<date>-<slug>.mdInclude current phase, active artifacts, last verdict, completed tasks, next steps, risks, useful commands, and the current skill_resolution. This lets the next agent resume from artifacts instead of scrollback.
| Rationalization | Reality / fix |
|---|---|
| "I get the feature, I'll just start coding." | That is the failure SDD prevents. At minimum write the spec; the artifact is the contract. |
"sdd should write the spec itself." | No. sdd dispatches. Invoke specify — it owns the spec and asks the right questions. |
| "Clarify and analyze are bureaucracy, skip them." | Skipped gates are where drift hides. Run them; only pass through if the change is genuinely trivial and you say so. |
| "The user wants it short, so I'll skip the gates to be terse." | Short changes the words, not the method. Fewer words, same gates. |
| "I'll keep the plan in chat, it's faster." | Chat is not durable. Write it under 02-DOCS/wiki/sdd/ or the next session is blind. |
"I'll skip sdd-init; I remember the test command." | The runtime contract belongs in config.yaml, not memory. |
| "I'll load every skill into the subagent." | That contaminates context. Use registry -> selected paths -> compact rules. |
| "The phase wrote a nice summary, so no envelope needed." | The envelope is the phase contract. Add it. |
| "Run constitution again for this feature." | Constitution is once per project. If it exists, read it as guardrails and move on. |
| "Ship now, I'll add Co-Authored-By: Claude." | ship enforces Eric-only authorship. No Claude co-author, no generated-with footer. |
"Invoke the release phase." | There is no such phase. Never invent a sibling — the chain is the chain. |
| "Routing sounds useful, I'll switch to the heavy model on my own." | Routing is opt-in (models.enabled:false). Don't switch models unless the user turned it on. |
| "I'll tell them I switched to Opus." (on an assistant with no per-subagent model) | Announce the recommended tier; never claim a switch the tool can't make. Honesty over magic. |
../sdd-init/SKILL.md for runtime calibration, ../constitution/SKILL.md for non-negotiables, then ../specify/SKILL.md.../sdd-init/SKILL.md, then route by phase.../specify/SKILL.md (or proposal first if risky/architectural).Then follow the arrows: each phase ends by pointing at the next, all the way to ship.
© ericrisco, 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 3 other files (references) in skills/sdd of ericrisco/rsc-harness.
Open the folder on GitHubat commit e3d5b33
Sdd 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 |
|---|---|---|---|---|---|---|
| Sdd this skillericrisco/rsc-harness | 167 | — | ~4.7k | Automated safety check: Pass | MIT | |
| MoAI SPEC Workflowmodu-ai/moai-adk | 1.2k | — | ~5.1k | Automated safety check: Pass | Apache-2.0 | |
| MoAI Worktree Managementmodu-ai/moai-adk | 1.2k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| Spec Writergarrytan/gstack | 136k | — | ~14k | Automated safety check: Notes | MIT | |
| Spec-Driven Development v2LichAmnesia/lich-skills | 234 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Voiceover-First DevelopmentDevin-AXIS/iPolloWork | 6.8k | — | ~879 | Automated safety check: Pass | Custom licence |
modu-ai/moai-adk
Manages SPEC documents for MoAI-ADK development, with GEARS or EARS requirement notation, acceptance criteria and a link into the Plan-Run-Sync workflow.
modu-ai/moai-adk
Gives each SPEC its own Git worktree with a registry of active workspaces, base-branch sync and cleanup of merged ones, inside the MoAI-ADK workflow.
garrytan/gstack
Converts a vague idea into a precise, executable spec in five phases, files it as an issue and can start an agent on it in a fresh worktree.
LichAmnesia/lich-skills
Organizes long-running agent work into a Project, Sprint and Task hierarchy with per-task state files, isolated worktrees, review loops and script-checked rules.
Devin-AXIS/iPolloWork
Starts a feature as a demo narration instead of a PRD: you approve the script before any code, then the agent builds in a fresh worktree and opens a PR with proof.
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Categories
A skill your agent uses when you want a disciplined, spec-driven path from a feature idea to shipped, verified software — the SDD dispatcher and front door, in any language. Sdd is an agent skill from ericrisco/rsc-harness. Use when you want a disciplined, spec-driven path from a feature idea to shipped, verified software — the SDD dispatcher and front door, in any language.
Sdd fits situations like: you want a disciplined; spec-driven path from a feature idea to shipped; verified software — the SDD dispatcher and front door; in any language.
Run `npx skills add ericrisco/rsc-harness --skill sdd -a claude-code`. Or copy the skill folder (skills/sdd in ericrisco/rsc-harness) into .claude/skills/sdd in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill sdd -a codex`. Or copy the skill folder (skills/sdd in ericrisco/rsc-harness) into .agents/skills/sdd 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 ericrisco/rsc-harness --skill sdd -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sdd, .gemini/skills/sdd, .github/skills/sdd and .opencode/skills/sdd in your project.
SKILL.md names no scripts, command-line tools or credentials: Sdd is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Sdd is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Sdd: MoAI SPEC Workflow (modu-ai/moai-adk, 1.2k stars), MoAI Worktree Management (modu-ai/moai-adk, 1.2k stars), Spec Writer (garrytan/gstack, 136k stars) and Spec-Driven Development v2 (LichAmnesia/lich-skills, 234 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 167 GitHub stars. The repository holds 227 skills in this directory. The repository was last updated on October 7, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.