MoAI Foundation Core
modu-ai/moai-adk
Reference for MoAI-ADK's core development principles: TRUST 5 quality gates, SPEC-first domain-driven workflow, agent delegation and token budgeting.
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.
$ npx skills add LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LichAmnesia/lich-skills spec-driven-dev-v2 --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/LichAmnesia/lich-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/spec-driven-dev-v2 .claude/skills/spec-driven-dev-v2 && 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 "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .claude/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2Type 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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LichAmnesia/lich-skills spec-driven-dev-v2 --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LichAmnesia/lich-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/spec-driven-dev-v2 .agents/skills/spec-driven-dev-v2 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .agents/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LichAmnesia/lich-skills spec-driven-dev-v2 --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LichAmnesia/lich-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/spec-driven-dev-v2 .cursor/skills/spec-driven-dev-v2 && 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 "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .cursor/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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/LichAmnesia/lich-skills.git --path skills/spec-driven-dev-v2--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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LichAmnesia/lich-skills spec-driven-dev-v2 --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LichAmnesia/lich-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/spec-driven-dev-v2 .gemini/skills/spec-driven-dev-v2 && 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 "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .gemini/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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 LichAmnesia/lich-skills spec-driven-dev-v2Installs 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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LichAmnesia/lich-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/spec-driven-dev-v2 .github/skills/spec-driven-dev-v2 && 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 "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .github/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LichAmnesia/lich-skills spec-driven-dev-v2 --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LichAmnesia/lich-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/spec-driven-dev-v2 .opencode/skills/spec-driven-dev-v2 && 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 "spec-driven-dev-v2" agent skill from https://github.com/LichAmnesia/lich-skills/tree/main/skills/spec-driven-dev-v2 into .opencode/skills/spec-driven-dev-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-dev-v2", 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.
spec-driven-dev-v2Organizes long-running agent work into a Project, Sprint and Task hierarchy with per-task state files, isolated worktrees, review loops and script-checked rules.
Meant for agents that run for hours or days under an orchestrator such as /loop, this version keeps all state on disk so a cold session can resume. Work splits into a project with an RFC and plan, sprints that each end in a shippable checkpoint, and tasks, with STATE.json files an orchestrator can read to advance one step. Planner, builder, reviewer and orchestrator are separate roles, and the reviewer must be a fresh subagent that never sees the builder's conversation.
Every task runs in its own worktree so it can be reverted alone. Reviews loop through feedback and modification until clean, using a context pack that briefs the reviewing subagent. scripts/task-lint.sh checks sizing, acceptance and rollback, scripts/governance-check.sh enforces boundary rules in lint rather than prose, and rules that come out of reviews are collected in an artifact registry. It recommends this version for jobs over about 4 hours or more than 8 tasks, and the simpler v1 for single-session features.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit ebbc355. 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 2 files in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git, 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.
Spec-Driven Development v2 loads about 3.1k tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 1,348 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); the scripts in this folder are not scanned.
The full file from LichAmnesia/lich-skills at commit ebbc355, republished under its MIT licence (© LichAmnesia). 1,348 words, ~3,111 tokens.
.claude/skills/spec-driven-dev-v2/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.v1 assumed one agent shipping one feature in one session. v2 assumes an orchestrator (or a human) driving the agent across many sessions — possibly for days — and keeps work correct the entire time.
v2 adds:
Use v2 if any of:
/critic, Agent subagent_type=critic, etc.) reviews each task/loop, autoresearch:ship, goal-driven) drives iterationFor one-session features, use spec-driven-dev (v1) — v2 is overhead for them.
context/
dev/
projects-001-<slug>/ # one project = one RFC
RFC.md # the contract: what & why
PLAN.md # sprint list + dependency graph
STATE.json # {current_sprint, status}
sprints-001-<slug>/ # one sprint = one checkpoint
SPRINT.md # goal, scope, exit criteria
TASKS.md # task status tracker
REVIEWS.md # review round log
STATE.json # {current_task, current_round, next_action}
tasks/
TK-001-<slug>.md # one task = one worktree
TK-002-<slug>.md
reviews/
RV-001-round1.md # round 1 for TK-001
RV-001-round2.md # after modify, round 2
RV-001-round3.md # …until verdict=approve
sprints-002-<slug>/
…
artifact-registry/
rules/
RULE-001-<slug>.md # captured pattern → lint rule
scripts/
governance-check.sh # boundary + state validator
task-lint.sh # mechanical task gateAll state is on disk. No in-memory plan. This is the contract with the
orchestrator: it can read STATE.json, pick up where the last session left
off, and advance one step.
Planner and Builder may be the same model. Reviewer must be a fresh subagent with no access to Builder's conversation — that is what makes review work.
Goal. Produce the RFC and sprint plan. No code.
RFC.md from templates/project/RFC.md — restate request, list
assumptions, define measurable success, set Always/Ask/Never boundaries.PLAN.md from templates/project/PLAN.md — decompose into sprints.
Each sprint must have a shippable checkpoint (even if behind a flag).STATE.json with current_sprint: "sprints-001-<slug>".Exit criteria.
Goal. Expand one sprint into atomic, independently-reviewable tasks.
SPRINT.md from templates/sprint/SPRINT.md — goal, scope, exit
criteria, what's deferred.tasks/TK-NNN-<slug>.md per task, from templates/task/TASK.md.TASKS.md from templates/sprint/TASKS.md — flat status table.scripts/task-lint.sh <sprint-dir> — every task must pass:rollback: lineSTATE.json with current_task: "TK-001", current_round: 0.Exit criteria.
task-lint.sh exits 0Every task runs in a fresh git worktree (or branch on a clean tree). This is non-negotiable — it is what makes review and rollback possible.
Steps.
STATE.json, picks current_task.git worktree add ../wt-TK-NNN -b tk-NNN-<slug>.verify: command. If red, fix. Do not claim done on red.TASKS.md: status built, link commit range.STATE.json: next_action: "review", current_round: 1.Scope discipline. Touch only files listed in the task. If you need a file that isn't listed, stop, update the task spec, get re-approval. "While I'm here" refactors are a phase violation.
Exit criteria (per task).
tk-NNN-<slug> branch, tree greenTASKS.md + STATE.json updatedReview is a state machine, not a one-shot.
built ──▶ round1 ──┬──▶ approve ──▶ merged
│
└──▶ request_changes ──▶ modify ──▶ roundN+1A task may not advance to merged until a review with verdict: approve
exists. Every round creates its own reviews/RV-NNN-roundN.md.
Each round:
templates/review/REVIEW.md "Context Pack" section. This is the brief the
reviewer subagent will see. It includes:git diff <base>..HEAD scoped to declared filesgit log --oneline on the branch[unresolved])Agent subagent_type=critic)
with the Context Pack as its only input.RV-NNN-roundN.md using the 5-axis template. Verdict is
one of: approve / approve_with_nits / request_changes / reject.REVIEWS.md.approve or approve_with_nits: mark task merged in TASKS.md, merge
branch, advance STATE.json.Critical: and (required) finding in
new commits on the same branch. Set current_round += 1. Go to 1.Round budget. If current_round > 5, escalate to human — the task is
either mis-specified or too large. Do not grind past round 5 silently.
Context Pack is the skill. A reasoning-blind reviewer with bad context rubber-stamps. The only leverage you have is the pack.
After every task in the sprint is merged:
scripts/governance-check.sh — must exit 0 (boundary rules, unresolved
findings, orphan branches, stale STATE).STATE.json to status: closed.STATE.json to current_sprint: sprints-NNN+1.spec-driven-dev v1 SHIP phase for
rollout, feature flags, monitoring, and rollback.Boundary rules (e.g. "L2 may call L1 and L0, L0 must not call L2") must be enforced by script, not prose. The skill ships two runners:
scripts/task-lint.sh — validates task-file frontmatter, sizing, verify
command presence. Run at sprint open and in CI.scripts/governance-check.sh — project-wide invariants: every merged task
has an approved review, every sprint STATE is consistent, every
artifact-registry/rules/RULE-*.md that is marked enforcement: lint has a
matching lint rule file.Add project-specific checks as the project grows. New rule discovered in review? It goes through the artifact-registry.
When a reviewer finds a pattern that should apply to all future tasks (not just this one), capture it:
context/artifact-registry/rules/RULE-NNN-<slug>.md from
templates/artifact-registry/RULE.md.enforcement:doc — humans follow it (weakest)review_checklist — added to templates/review/REVIEW.mdlint — automated rule (eslint, custom script, ast-grep, etc.)lint, also land the lint rule in the same commit as the RULE file.governance-check.sh verifies that every enforcement: lint rule has a
concrete implementation pointer.Rules that stay at doc for more than 2 sprints should graduate or be
deleted. Dormant rules rot.
Any STATE.json file is the single source of truth for "what's next". An
orchestrator's turn looks like:
1. Read project STATE.json → current_sprint
2. Read sprint STATE.json → current_task, current_round, next_action
3. Dispatch:
- next_action=build → spawn Builder in worktree for current_task
- next_action=review → construct Context Pack, spawn Reviewer
- next_action=modify → Builder addresses unresolved findings
- next_action=merge → merge branch, advance STATE
- next_action=close_sprint → run governance-check, advance project STATE
4. Exit. Next loop iteration re-reads STATE.STATE.json schemas are in templates/project/STATE.json and
templates/sprint/STATE.json. Keep them small. Do not put history in them —
history lives in TASKS.md and REVIEWS.md.
round1 only — real tasks take 2–4 roundscurrent_round > 5 with no human in the loopRULE.md with enforcement: lint but no lint rule in the repoAny of these → governance-check.sh should fail. If it doesn't, add the check.
templates/project/RFC.md — project contracttemplates/project/PLAN.md — sprint decompositiontemplates/project/STATE.json — project-level orchestrator statetemplates/sprint/SPRINT.md — sprint goal + exit criteriatemplates/sprint/TASKS.md — task status tabletemplates/sprint/REVIEWS.md — round logtemplates/sprint/STATE.json — sprint-level orchestrator statetemplates/task/TASK.md — one task spectemplates/review/REVIEW.md — 5-axis review with Context Packtemplates/artifact-registry/RULE.md — captured rulescripts/task-lint.sh — mechanical task gatescripts/governance-check.sh — project-wide invariant checkerv1's five-axis review, rationalization tables, and scope discipline are unchanged and assumed. v2 wraps them in structure that survives multi-day, multi-session execution. If a v2 project collapses back to one session with one sprint and one task, it should read like v1 with extra files — that is acceptable; the overhead is the insurance.
© LichAmnesia, 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 12 other files (scripts) in skills/spec-driven-dev-v2 of LichAmnesia/lich-skills.
Open the folder on GitHubat commit ebbc355
Spec-Driven Development v2 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 |
|---|---|---|---|---|---|---|
| Spec-Driven Development v2 this skillLichAmnesia/lich-skills | 234 | — | ~3.1k | Automated safety check: Pass | MIT | |
| MoAI Foundation Coremodu-ai/moai-adk | 1.2k | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| Agent-Foreman Feature Runmylukin/agent-foreman | 250 | — | ~1.6k | Automated safety check: Notes | None | |
| Rebuild Branchplatformplatform/PlatformPlatform | 440 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Vspawnvlinx-io/VelaTerm | 259 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Loop FactoryJuliusBrussee/skills | 161 | — | ~2k | Automated safety check: Pass | MIT |
modu-ai/moai-adk
Reference for MoAI-ADK's core development principles: TRUST 5 quality gates, SPEC-first domain-driven workflow, agent delegation and token budgeting.
mylukin/agent-foreman
Runs the agent-foreman task loop for one task by ID or unattended across every pending task, following next, implement, check, done for each one.
platformplatform/PlatformPlatform
Rebuild a stale branch by cherry-picking each commit onto a fresh branch off main, using a ralph-loop to validate each commit (build, test, format, lint, optional e2e) before moving on.
vlinx-io/VelaTerm
Explicitly spawn a standalone child session under the current vlx-term session, passing the task in as its first message (mirrors spawntask).
JuliusBrussee/skills
Run a spec-driven agent loop where coding tasks live as markdown specs that move through inbox → active → archive, get implemented by Claude Code or Codex, and pass a review gate before they count…
warpdotdev/common-skills
Run an autonomous, spec-driven development "saga" for medium-to-large features using an orchestrator agent and a fleet of worker subagents.
LichAmnesia/lich-skills
Pulls Google Analytics 4 data through the Data API with TypeScript scripts and turns it into a daily SEO report or prioritized traffic and bounce-rate recommendations.
LichAmnesia/lich-skills
Generates or edits PNG images with Google's Nano Banana 2 model through a small script, with a choice of 512, 1K, 2K or 4K output.
LichAmnesia/lich-skills
Runs headless web searches and single-page extraction through the Tavily API from a Python script, returning cited, summarized results without a browser.
LichAmnesia/lich-skills
Drives a failing build, typecheck, lint or test command to a passing exit code through small, one-fix-at-a-time rounds, stopping at a hard attempt cap instead of looping forever.
LichAmnesia/lich-skills
Replaces trial-and-error fixing with an observe, hypothesize, experiment and conclude loop kept in DEBUG.md, where no fix is allowed before evidence supports a cause.
LichAmnesia/lich-skills
Runs a gated Spec, Plan, Build, Test, Review, Ship workflow so non-trivial changes are specified, verified and reviewed before they ship, with a named artifact per phase.
Categories
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. Meant for agents that run for hours or days under an orchestrator such as /loop, this version keeps all state on disk so a cold session can resume.json files an orchestrator can read to advance one step.
Spec-Driven Development v2 fits situations like: planning a multi-day build split across several vertical slices; running an agent under /loop or another orchestrator that reads task state; setting up isolated worktree tasks with a reviewer subagent for each; keeping layering and dependency-direction rules enforced mechanically.
Run `npx skills add LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a claude-code`. Or copy the skill folder (skills/spec-driven-dev-v2 in LichAmnesia/lich-skills) into .claude/skills/spec-driven-dev-v2 in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a codex`. Or copy the skill folder (skills/spec-driven-dev-v2 in LichAmnesia/lich-skills) into .agents/skills/spec-driven-dev-v2 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 LichAmnesia/lich-skills --skill spec-driven-dev-v2 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spec-driven-dev-v2, .gemini/skills/spec-driven-dev-v2, .github/skills/spec-driven-dev-v2 and .opencode/skills/spec-driven-dev-v2 in your project.
Going by SKILL.md and its folder, Spec-Driven Development v2 needs a shell for the scripts in its folder and the command-line tools its instructions call (git). Our summary lists: Git worktrees for isolated task checkouts; A shell that can run scripts/task-lint.sh and scripts/governance-check.sh.
SKILL.md contains no URLs. Its commands use git, 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 found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Spec-Driven Development v2 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k 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 Spec-Driven Development v2: MoAI Foundation Core (modu-ai/moai-adk, 1.2k stars), Agent-Foreman Feature Run (mylukin/agent-foreman, 250 stars), Rebuild Branch (platformplatform/PlatformPlatform, 440 stars) and Vspawn (vlinx-io/VelaTerm, 259 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LichAmnesia (a GitHub user) maintains it in LichAmnesia/lich-skills, which has 234 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on June 9, 2026.
Source: LichAmnesia/lich-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.