用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/y3owk1n/nix-system-config-v2 --skill prd命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | prd |
| description | Create, derive, or update the PRD — the single source of truth every other skill reads. |
| disable-model-invocation | true |
The PRD replaces CONTEXT.md, docs/adr/, and the spec body. It is the one durable layer. Specs and tickets are rendered from it; they are not a second copy of it.
prd/
├── product.md ← problem, users, why this exists
├── glossary.md ← domain terms (was CONTEXT.md)
├── decisions.md ← decisions and their trade-offs (was docs/adr/)
├── architecture.md ← modules, seams, boundaries
├── behaviours.md ← what must never break — the test budget
└── features/
└── <slug>.md ← one per feature; renders to a spec issue
Every file is optional. A repo with only glossary.md is a valid PRD. Never fabricate a file to complete the set, and never block on a missing one — read what exists, say what is missing, move on.
Templates for each file: TEMPLATES.md, in this skill's own directory next to this SKILL.md — not prd/ in the target repo.
Pick from the argument, or ask.
| Mode | When |
|---|---|
| derive | Existing project, no PRD yet |
| create | New project, no code yet |
| feature | Add features/<slug>.md to an existing PRD |
| update | Record a delta — new term, new decision, corrected fact |
Two halves, and they are not interchangeable.
Derived from code — glossary, architecture, decisions. These are recoverable. Read the repo and draft them:
git log --oneline -40
ls -R --ignore=node_modules --ignore=.git . | head -100
Walk the hot spots the log points at. For decisions, look for the choice that a reader would question: a non-obvious dependency, a hand-rolled thing where a library exists, a boundary drawn somewhere odd. Record what was chosen and why it plausibly was — then mark every derived decision status: inferred until the user confirms it. An inferred decision presented as fact is the worst artefact this skill can produce.
Interviewed, never derived — product.md and behaviours.md. Why the project exists, who it serves, and what must never break are not in the code. A derived version of these is fiction with a confident tone. Dispatch /grill for them, or ask directly:
Write nothing to product.md or behaviours.md without an answer.
Interview first, code second. Run /grill, then write product.md, glossary.md, and behaviours.md from its output. architecture.md and decisions.md start empty and grow.
behaviours.md must have at least one entry before /spec will cut tickets. That gate is the point: it forces you to name what must never break while it is still cheap to change your mind.
product.md, glossary.md, behaviours.md, architecture.md — whichever exist.prd/features/<slug>.md from this skill's TEMPLATES.md. Use glossary vocabulary exactly; if the feature needs a term the glossary lacks, add the term first.behaviours.md. Each behaviour it touches gets referenced by number. A feature touching no listed behaviour gets no tests — say so out loud so the user can add a behaviour if that is wrong.Then hand off: /spec renders this file to an issue and cuts its tickets.
Called at the end of a ticket, or directly. Apply only what the change actually established:
glossary.mddecisions.md. If any of the three is missing, do not record it.architecture.mdfeatures/<slug>.md (this invalidates the published spec issue; /ship regenerates it)Commit PRD edits separately from code, as docs(prd): <what>, so a reviewer can read them on their own.
Never write to behaviours.md. Propose entries — in the PR body, in a report, in conversation — and let the user add them.
Cap: 15. It is read into context on every ticket, and its job is to be a list a human can hold in their head when deciding whether something needs a test. At the cap, stop and ask which entry comes out. Do not append.
The cap is per project, not per feature.
Done when: every file the mode calls for exists and is non-empty, product.md and behaviours.md contain only interviewed content, every derived decision is marked inferred or confirmed, and the user has seen the file list. Checkable: ls prd/ and wc -l prd/*.md show the expected files with content.