OpenSpec Guided Onboarding
Fission-AI/OpenSpec
Walks you through a complete OpenSpec workflow cycle with narration while doing real work in your codebase.
Run development from an executable specification with traceable requirement IDs and merge-time coverage gates.
$ npx skills add borghei/Claude-Skills --skill spec-driven-workflow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install borghei/Claude-Skills spec-driven-workflow --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/borghei/Claude-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/engineering/spec-driven-workflow .claude/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .claude/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflowType 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 borghei/Claude-Skills --skill spec-driven-workflow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install borghei/Claude-Skills spec-driven-workflow --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/engineering/spec-driven-workflow .agents/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .agents/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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 borghei/Claude-Skills --skill spec-driven-workflow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install borghei/Claude-Skills spec-driven-workflow --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/engineering/spec-driven-workflow .cursor/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .cursor/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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/borghei/Claude-Skills.git --path engineering/spec-driven-workflow--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 borghei/Claude-Skills --skill spec-driven-workflow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install borghei/Claude-Skills spec-driven-workflow --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/engineering/spec-driven-workflow .gemini/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .gemini/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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 borghei/Claude-Skills spec-driven-workflowInstalls 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 borghei/Claude-Skills --skill spec-driven-workflow -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/engineering/spec-driven-workflow .github/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .github/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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 borghei/Claude-Skills --skill spec-driven-workflow -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install borghei/Claude-Skills spec-driven-workflow --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borghei/Claude-Skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/engineering/spec-driven-workflow .opencode/skills/spec-driven-workflow && 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-workflow" agent skill from https://github.com/borghei/Claude-Skills/tree/main/engineering/spec-driven-workflow into .opencode/skills/spec-driven-workflow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-driven-workflow", 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-workflowRun development from an executable specification with traceable requirement IDs and merge-time coverage gates.
Spec Driven Workflow is an agent skill from borghei/Claude-Skills. Run development from an executable specification with traceable requirement IDs and merge-time coverage gates. Use when starting a greenfield feature, reviving a stale spec, or gating merges on requirement coverage.
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts, reference files and assets (for example `assets/sample_requirements.json`, `assets/sample_spec.md` and `assets/sample_trace_index.json`).
It sits in Agent Workflows, covering Spec-driven development. The repository describes itself as: 385 AI skills, 77 expert agents, and 900 stdlib Python tools for every team: engineering, PM, marketing, C-level, compliance, business ops, research, and a LinkedIn toolkit… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit c9a1487. 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 3 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From 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.
Spec Driven Workflow loads about 3.2k tokens when it runs, and up to ~7.9k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 1,610 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 borghei/Claude-Skills at commit c9a1487, republished under its MIT licence (© borghei). 1,610 words, ~3,175 tokens.
.claude/skills/spec-driven-workflow/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.Development where the specification is the source of truth and the code is its implementation, rather than a document that was true at kickoff and fiction by week three. The mechanism is unglamorous: every normative statement gets a stable ID, every ID appears in a test, and the merge gate fails when the two drift apart. Without that mechanical link a spec is a memo, and memos do not survive contact with a sprint.
Before writing or auditing a spec, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
python3 engineering/spec-driven-workflow/scripts/spec_lint.py \
--spec engineering/spec-driven-workflow/assets/sample_spec.md \
--max-findings 0 --min-precision 0.85 --format textThe shipped sample scores 0.46 on purpose — it contains the exact failures the linter is built to catch, so you can see each rule fire before pointing it at real work.
REQ-ROTATION-02), so they are stable across unrelated edits elsewhere in the file.DRIFT line means a
requirement's text changed while its ID stayed the same — its tests now verify
something the spec no longer says, which is the most dangerous state in the workflow.python3 engineering/spec-driven-workflow/scripts/spec_parse.py \
--spec engineering/spec-driven-workflow/assets/sample_spec.md \
--baseline engineering/spec-driven-workflow/assets/sample_requirements.json \
--require-acceptance --format textExit code is 1 when a mandatory requirement lacks acceptance criteria or when any requirement has drifted, which makes this the first half of the CI gate.
def test_rotation_marks_pending_revocation(): # REQ-ROTATION-01).python3 engineering/spec-driven-workflow/scripts/trace_coverage.py \
--requirements engineering/spec-driven-workflow/assets/sample_requirements.json \
--index engineering/spec-driven-workflow/assets/sample_trace_index.json \
--min-coverage 1.0 --format textSwap --index for --code <path> to scan a real tree. The index form exists so the
gate can run against a trace index built by another tool, and so this workflow is
runnable straight from a fresh clone.
Precision is a cost, and the right amount depends entirely on who reads the spec next.
| Consumer | Required precision | Test |
|---|---|---|
| Engineer on the team who wrote it | Moderate | Shared context fills gaps; acceptance criteria on mandatory requirements only |
| Engineer on another team | High | Every requirement has criteria; no undefined domain terms |
| A model generating the implementation | Very high | Every requirement quantified; no adjective without a number |
| An auditor or regulator | Very high, plus provenance | Every requirement traced to a test result and a decision record |
Writing at "very high" for an internal one-week feature is waste. Writing at "moderate" for a generated implementation produces confidently wrong code, because ambiguity gets resolved silently rather than escalated.
Every requirement sits in one of four states. Only one is acceptable at merge.
| Status | Meaning | Action |
|---|---|---|
covered | Implementation and test both annotated | Merge |
untested | Code exists, no test references the ID | Block — this is the state that regresses silently |
test-only | Test exists, no implementation annotated | Usually a missing annotation, occasionally a test asserting nothing |
unimplemented | Neither exists | Block if mandatory; acceptable if explicitly deferred |
| Modality | Keyword | Coverage floor at merge |
|---|---|---|
| Mandatory | must, shall | 1.0 — no exceptions; a mandatory requirement without a test is not implemented |
| Recommended | should | 0.8 — deviations recorded in the PR with a reason |
| Optional | may, can | No floor — tracked, not gated |
The floors matter less than their being non-negotiable once set. A coverage gate that gets waived twice stops being read.
| Rule | Fires on | Prevents |
|---|---|---|
unquantified-adjective | fast, scalable, secure, intuitive | Requirements nobody can fail |
passive-no-actor | "notifications should be delivered" | Obligations with no owning component |
no-acceptance-criteria | Normative statement with no given/when/then | Requirements that cannot be verified |
placeholder | TBD, TODO, ??? | Specs that gate merges while still undecided |
compound-requirement | "and/or", two obligations in one sentence | Partial implementations that still pass |
undefined-antecedent | Opens with it/this/they | Requirements that break when reordered |
vague-quantifier | some, several, most | Disagreement discovered at review time |
Mistake: Writing a thorough specification at kickoff, then implementing against reality for six weeks without touching it. Why it happens: Updating the spec has no forcing function. Nothing breaks when it goes stale, so it loses every contest for attention against shipping code. Instead: Put the spec in the same repository, in the same PR, behind the same merge gate as the code. A requirement change and its implementation land together or neither lands. The gate is what converts "we should keep it updated" into a thing that actually happens.
Mistake: "The API must be fast and the interface must be intuitive." Why it happens: These feel like requirements and are easy to agree on precisely because nobody can disagree. Everyone leaves the meeting satisfied and holding different pictures. Instead: Every adjective becomes a number with a unit and a measurement method: "p95 latency under 200ms measured at the load balancer over a 5-minute window." If you cannot produce the number, the requirement is not ready and should be marked as such rather than shipped vague.
Mistake: Editing a requirement's text in place while keeping its ID, so tests that reference the ID now verify something the spec no longer says. Why it happens: Renumbering feels disruptive, and editing text feels smaller than adding a requirement. Both are true; the consequence is still a silent divergence. Instead: Fingerprint requirement text and diff against a committed baseline on every parse. A drift finding forces a decision: either the tests get updated, or the edit was actually a new requirement and needs a new ID.
Mistake: Checking that every requirement has code, but never checking that every annotated code path has a requirement. Why it happens: The forward direction answers "did we build what we promised," which is the question stakeholders ask. Nobody asks the reverse question, so nobody builds the report. Instead: Run coverage in both directions and treat orphan annotations as errors. Orphans mark dead features whose requirement was deleted, typos in IDs, and scope that entered the codebase without ever entering the spec — all three are worth knowing.
Mistake: Setting a 100% coverage gate, waiving it under deadline, and waiving it again the following week.
Why it happens: The gate was set at an aspirational number rather than the number the team will actually hold, so the first real deadline breaks it.
Instead: Gate only on mandatory requirements, at 1.0, and let should requirements report without blocking. A narrow gate that never gets waived changes behaviour; a broad gate that gets waived teaches everyone that red builds are advisory.
| File | Purpose |
|---|---|
scripts/spec_parse.py | Parse a markdown spec into requirements with stable IDs and content fingerprints; diff against a baseline |
scripts/spec_lint.py | Flag ambiguity — unquantified adjectives, passive requirements, missing criteria, placeholders |
scripts/trace_coverage.py | Bidirectional spec-to-code coverage with orphan-annotation detection and a merge gate exit code |
references/spec-writing-guide.md | Requirement grammar, acceptance-criteria patterns, and worked ambiguous-to-precise rewrites |
references/traceability-model.md | ID schemes, annotation conventions per language, CI wiring, and drift handling |
assets/sample_spec.md | Runnable sample spec containing both precise and deliberately ambiguous requirements |
assets/sample_requirements.json | Parsed baseline for the drift and coverage workflows |
assets/sample_trace_index.json | Prebuilt trace index exercising covered, untested, test-only, and orphan states |
assets/spec-template.md | Skeleton for a new specification with the required structure |
© borghei, 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 9 other files (scripts, references, assets) in engineering/spec-driven-workflow of borghei/Claude-Skills.
Open the folder on GitHubat commit c9a1487
Spec Driven Workflow 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 Workflow this skillborghei/Claude-Skills | 874 | — | ~3.2k | Automated safety check: Pass | MIT | |
| OpenSpec Guided OnboardingFission-AI/OpenSpec | 71k | 1 repos | ~4.5k | Automated safety check: Pass | MIT | |
| Readyprekuter/dryforge | 402 | 1 repos | ~6.8k | Automated safety check: Pass | Apache-2.0 | |
| Spec Driven Developzhu1090093659/deepseek-pp | 1.9k | — | ~6.9k | Automated safety check: Pass | Apache-2.0 | |
| MoAI Foundation Coremodu-ai/moai-adk | 1.2k | — | ~5k | Automated safety check: Pass | Apache-2.0 | |
| Goprekuter/dryforge | 402 | 1 repos | ~7.2k | Automated safety check: Pass | Apache-2.0 |
Fission-AI/OpenSpec
Walks you through a complete OpenSpec workflow cycle with narration while doing real work in your codebase.
prekuter/dryforge
Understand what you mean before anything is built. An agent skill from prekuter/dryforge.
zhu1090093659/deepseek-pp
Automates pre-development workflow for large-scale complex tasks.
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.
prekuter/dryforge
Carry out the intent approved in ready, as meant, and prove it with checks that actually ran.
fynnfluegge/agtx
Carries out an approved plan for an agtx-managed task: implements the changes, runs tests, commits, writes a summary to .agtx/execute.md and then stops.
borghei/Claude-Skills
Run delivery when AI coding and ops agents take tickets. An agent skill from borghei/Claude-Skills.
borghei/Claude-Skills
Check AI-generated marketing content and reviews for required disclosures under the EU AI Act, FTC rules and platform AI-label policies.
borghei/Claude-Skills
Idea to AI-generated prototype to customer validation to engineering handoff.
borghei/Claude-Skills
Analytics engineering across data modeling, dbt, transformation, and semantic layers.
borghei/Claude-Skills
Ansoff Matrix — 4-quadrant framework for growth options: market penetration, market/product development, and diversification.
borghei/Claude-Skills
OKR brainstorming and validation using the Radical Focus framework — outcome objectives, measurable key results, counter-metrics.
Categories
Run development from an executable specification with traceable requirement IDs and merge-time coverage gates. Spec Driven Workflow is an agent skill from borghei/Claude-Skills. Run development from an executable specification with traceable requirement IDs and merge-time coverage gates.
Spec Driven Workflow fits situations like: starting a greenfield feature; reviving a stale spec; gating merges on requirement coverage.
Run `npx skills add borghei/Claude-Skills --skill spec-driven-workflow -a claude-code`. Or copy the skill folder (engineering/spec-driven-workflow in borghei/Claude-Skills) into .claude/skills/spec-driven-workflow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add borghei/Claude-Skills --skill spec-driven-workflow -a codex`. Or copy the skill folder (engineering/spec-driven-workflow in borghei/Claude-Skills) into .agents/skills/spec-driven-workflow 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 borghei/Claude-Skills --skill spec-driven-workflow -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-workflow, .gemini/skills/spec-driven-workflow, .github/skills/spec-driven-workflow and .opencode/skills/spec-driven-workflow in your project.
Going by SKILL.md and its folder, Spec Driven Workflow needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Spec Driven Workflow is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 4.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Spec Driven Workflow: OpenSpec Guided Onboarding (Fission-AI/OpenSpec, 71k stars), Ready (prekuter/dryforge, 402 stars), Spec Driven Develop (zhu1090093659/deepseek-pp, 1.9k stars) and MoAI Foundation Core (modu-ai/moai-adk, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
borghei (a GitHub user) maintains it in borghei/Claude-Skills, which has 874 GitHub stars. The repository holds 364 skills in this directory. The repository was last updated on October 7, 2026.
Source: borghei/Claude-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.