Write PRDs, specs, and project context optimized for coding assistants (Claude Code, Cursor, Copilot, Custom GPTs)...
Use this skill to create decision-first PRDs, tech specs, acceptance criteria, and tool-aware project context for coding assistants.
This skill owns what the implementation agent needs to know and how that context should be structured. It does not own general documentation cleanup or canonical docs maintenance.
Request
|
v
Classify deliverable
|-- PRD / brief -------------------> assets/prd/
|-- technical spec ----------------> assets/spec/
|-- story / acceptance criteria ---> assets/stories/
|-- agent handoff context ---------> assets/planning/ + tool context files
|
v
Gather evidence + constraints + dependencies
|
v
Choose context surface
|-- Claude Code -----> CLAUDE.md / scoped Claude files
|-- Codex -----------> AGENTS.md / scoped instructions
|-- Copilot ---------> .github/copilot-instructions.md
|-- Cursor ----------> .cursor/rules/ or AGENTS.md
|
v
Write decisions first
|
v
Add measurable acceptance criteria + rollout / rollback gates
|
v
Validate paths, claims, risks, and handoff readiness
| Need | Start Here |
|---|---|
| core PRD | assets/prd/prd-template.md |
| AI feature PRD | assets/prd/ai-prd-template.md |
| technical design | assets/spec/tech-spec-template.md |
| story map or backlog framing | assets/stories/story-mapping-template.md |
| acceptance criteria | assets/stories/gherkin-example-template.md |
| planning checklist | assets/planning/planning-checklist.md |
| agentic handoff | assets/planning/agentic-session-template.md |
| minimal agent context files | assets/minimal-claudemd.md, assets/minimal-agents.md |
| cross-tool context layering | assets/cross-tool-context.md |
Checklists catch missing sections. They do not catch the judgment calls that make the difference between a spec an agent can execute unattended and one that silently produces the wrong thing while satisfying every checklist item. Apply this before handoff, especially for agentic/autonomous runs where no reviewer sees the intermediate state.
A non-expert reviewer reads a spec for completeness of sections. An expert reads it for these six ambiguity classes, because each one lets a competent agent produce plausible-looking, contract-breaking output while technically following the text:
When reviewing a draft spec, scan specifically for these six classes rather than re-reading for tone or completeness — completeness checklists (see references/requirements-checklists.md) do not surface any of them.
Both failure modes are common, and they look opposite but come from the same root cause: guessing the right level of detail instead of deriving it from risk.
Calibrate detail level to three variables, not to habit or template length:
| Blast radius | Reversibility | Agent autonomy | Right level of detail |
|---|---|---|---|
| High (payments, auth, deletion, PII) | Low (hard to roll back) | Any | Spec every edge case explicitly, plus a "must NOT" list |
| Medium | Medium | Supervised turn-by-turn (human reviews each step) | State decisions + open questions; let the review loop resolve remaining edge cases |
| Low (prototype, internal tool, behind a flag) | High (cheap to revert) | Any | Outcome + happy path; let the agent propose and flag edge cases |
| Medium or High | Any | Unattended/autonomous run (no human in the loop until done) | Spec every edge case — there is no reviewer to catch drift mid-run |
The common mistake is applying "prototype-level" detail to an unattended, high-blast-radius run, or applying "payments-level" detail to a two-hour supervised prototype. Ask blast radius and autonomy first; let those answers set the spec's length, not the other way around.
references/acceptance-criteria-patterns.md covers format and common mistakes. Two judgment calls sit above that checklist:
Treat project memory as layered:
| Tool | Primary Surface | Supporting Surfaces |
|---|---|---|
| Claude Code | CLAUDE.md |
scoped Claude files, agents, skills, hooks |
| GitHub Copilot | .github/copilot-instructions.md |
additional GitHub instructions, AGENTS.md |
| Cursor | .cursor/rules/ or root AGENTS.md |
root CLAUDE.md, scoped rule files |
| portable baseline | AGENTS.md |
link outward instead of duplicating deep guidance |
References — Core (load first)
References — Spec-driven & prompt craft
References — Codebase context extraction
conventions-context.mdReferences — Stakeholder & team process
references/prd-review-facilitation.md — review-type selection, agenda template, feedback labeling, and iteration workflow; load when running a PRD review
references/stakeholder-alignment.md — RACI mapping, async/sync review patterns, conflict resolution, and decision-log template; load when managing multi-stakeholder sign-off
references/pm-team-collaboration.md — discovery interview templates and debrief structure for human PM teams; load for user-research or stakeholder-interview tasks
references/traditional-prd-writing.md — section-by-section PRD guidance for human teams (Cagan/Wiegers lineage); load when the audience is a PM team, not a coding agent
Additional assets
Markdown is the default for most context-file surfaces (CLAUDE.md, AGENTS.md, .cursor/rules/), but it is not always the right format for the human-facing artifacts this skill produces (PRDs, tech specs, exploration docs, planning briefs, code-review writeups). For artifacts intended to be read by humans rather than parsed by the next agent, consider HTML.
This guidance is based on Thariq, Using Claude Code: The Unreasonable Effectiveness of HTML (Claude Code team, 2026-05-08).
CLAUDE.md, AGENTS.md, .cursor/rules/) stay markdown — agents parse markdown reliably and HTML adds no signal for them.| Dimension | Markdown | HTML |
|---|---|---|
| Generation time | Baseline | 2–4× longer |
| Token cost | Lower | Higher (frontier large-context models absorb it for most artifacts) |
| Read-through likelihood for >100-line specs | Low — author of Thariq's article reports "I tend to not actually read more than a 100-line markdown file" | Much higher — visual structure invites reading |
| Shareability | Poor — most browsers don't render natively | Excellent — upload + link |
| Version-control diffs | Clean | Noisy |
| Interactive elements | None | Sliders, drag-drop, forms, copy buttons |
| Agent re-ingestion | Native | Works, but markdown is denser per token |
When generating an interactive HTML artifact, always end with an export control: "copy as JSON", "copy as prompt", "copy diff", "copy as markdown". The button turns UI manipulation back into pasteable text that closes the loop into the next prompt or PR description. Interactive specs without an export button create a one-way artifact the user can't act on.
../playground:playground (interactive playground pattern is the same shape)frontend-design:frontend-design plugin skill../dev-workflow-planning/SKILL.md/html skill or rule that everything must be HTML — Thariq's own caution. Prompting fluency beats a forced abstraction.docs-ai-prd owns requirements, specs, acceptance criteria, and context-file strategydocs-codebase owns README, runbooks, API reference, changelogs, and canonical documentation qualityIf you are deciding what context an agent needs or how a spec should be structured, stay here. If you are rewriting repository docs, use docs-codebase.
data/sources.json registry.Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.