shipshitdev/shipcode/writing-prds
- community
Checking that the SKILL.md file is still in the repository.
Use when the user wants to draft, scope, or formalize a feature for shipcode — "write a PRD for X", "let's plan X", "scope this out", "what should X do", or when a GitHub issue body needs to be fleshed out before the pipeline plans it. Writes a PRD that maps cleanly onto shipcode's pipeline (objective / acceptanceCriteria / outOfScope / estimatedComplexity) so the planner agent can consume it without re-elicitation. Do NOT use for code edits, debugging, or PR reviews.
Install
npx vskill@latest install shipshitdev/shipcode/writing-prdsSKILL.md
Writing Shipcode PRDs
A PRD in shipcode is the input contract for the pipeline's plan phase. A good PRD is what lets the planner agent produce a usable plan in one shot instead of burning turns asking the user "what did you mean by X?". A bad PRD causes planner thrash, review rejection, and verification failures downstream.
Storage Location
The GitHub issue body IS the PRD. There is no local sidecar file, no .shipcode/prds/ directory, no SQLite-only draft. One document per work item, one location: the body of a GitHub issue in the project's connected repo.
- Create a PRD by creating a GitHub issue whose body is clean PRD markdown.
- Edit a PRD by editing that issue's body.
- Version history is GitHub's issue edit history — no manual
updatedfield bumping. - The pipeline reads the issue body verbatim (
packages/pipeline/src/pipeline.ts:581—const prompt = \GitHub Issue #${issue.number}: ${issue.title}\n\n${issue.body ?? ''}\``) and feeds it into the planner agent. What you write in the issue body is exactly what the planner sees.
If shipcode's onboarding has not been completed (no GitHub repo connected), you cannot write a PRD yet. Complete onboarding first — shipcode is mandatory-GitHub by design.
Native GitHub Metadata
Do not put YAML frontmatter at the top of GitHub issue bodies. GitHub renders issue-body frontmatter as visible noise and already has native places for this metadata.
Use native GitHub and Projects fields instead:
- Issue type:
Feature,Bug, orTask. - Project status:
Backlog,In Progress,Human Review,Done, orDeferred. - Project priority:
P0,P1,P2, orP3. - Project complexity:
Low,Medium, orHigh. - Project blast radius:
Contained,Cross-package,Cross-app, orInfra.
Rules:
- The PRD body starts with
# PRD: <name>and contains only human-readable PRD content. - Put card/list summaries in the issue title, project fields, or a short Executive Summary, not in hidden metadata.
- If the author cannot estimate complexity, set the project field to
Mediumand explain why in Risks & Open Questions. Draftis workflow state, not body text. Keep draft PRDs off the runnable kanban path through project status or app state.
Issue Title Style
The GitHub issue title is what the board shows most of the time. Keep it short.
- Prefer 4-7 words when possible.
- Prefer an imperative verb + object shape:
Add pipeline checkpoints,Track CI blockers on issues,Expose model selectors in SettingsPanel. - Put the detail in the Executive Summary and body, not in the title.
- Avoid titles chained together with
and/while/duringunless the feature is truly one inseparable unit. - Avoid titles that restate the full implementation loop. The title names the work item; the PRD explains it.
- Keep the
# PRD:name aligned with the final issue title's slugified form. If you shorten the title, shorten the PRD heading too.
Bad:
Open draft PR during execution and ingest PR feedback into stabilization loopTreat CI failures as blocker state on GitHub issue tasks
Better:
Add draft PR feedback loopTrack CI blockers on issues
Required Sections
Every shipcode PRD must have these sections, in this order. Missing sections fail quality gate.
Mapping to Shipcode's Pipeline
A PRD is read by the planner agent. Every section has a downstream consumer:
| PRD section | Feeds | Consumer | |
|---|---|---|---|
| Executive Summary | PlanStructured.objective | Plan display, PR title, kanban card | |
| System Specification | Plan objective, dependencies, step rationale | Planner + reviewer | |
| Goals + Functional Requirements | Plan steps | Planner agent decomposition | |
| Feature Phase Breakdown | Exactly three ordered plan steps | Planner + task graph execution | |
| Success Criteria | PlanStructured.acceptanceCriteria | Verification phase | |
| Out of Scope | PlanStructured.outOfScope | Review phase (rejects scope creep) | |
| Project complexity field | PlanStructured.estimatedComplexity | Review rubric, retry budget | |
| Verification Plan | buildVerificationPrompt(...) input | Verification phase | |
| Non-Goals + Out of Scope | Review gate | Reviewer rejects patches that violate these |
Do not write sections that describe files to change, function names, or implementation choices. Those belong in the plan, not the PRD. If the PRD author can't resist writing pseudo-code, put it under "Risks & Open Questions" as "I suspect we'll need to touch X" — not as a requirement.
Quality Gates
Before marking a PRD ready for the pipeline to consume, every one of these must be true:
- [ ] No placeholder text (
TODO,TBD,<fill this in>) remains in any section. - [ ]
Goalshas at least one measurable bullet. - [ ]
Success Criteriahas at least one bullet, and every bullet is verifiable without judgement — it either passes or fails. "Feels fast" is not verifiable. "p95 latency < 300ms on the issues query" is. - [ ]
Out of Scopehas at least one bullet. EmptyOut of Scopeis a tell that the author didn't scope the feature. - [ ]
User Storieshas at least one story with explicit Acceptance bullets. - [ ]
System Specificationnames the observable states, data contracts, permissions/trust boundaries, and failure behavior that matter for the feature. - [ ]
Feature Phase Breakdowncontains exactly three ordered phases, and each phase has a purpose, scope, and completion signal. - [ ] Every external dependency in
Dependenciesis named (package, PRD path, or URL), not described vaguely. - [ ]
Verification Plannames either test file paths, suite names, or concrete manual steps — not "write some tests".
If any gate fails, keep it in draft/deferred workflow state and do not offer "Start pipeline" in the kanban.
Workflow
When the user says "write a PRD for X"
- Verify GitHub is connected. The user must have completed shipcode onboarding with a repo selected. If not, stop and tell them to finish onboarding first — there is no other place a PRD can live.
- Do not start writing immediately. Run a short elicitation pass first — you need answers before section-filling is meaningful:
- What problem does this solve, and for whom specifically?
- What does success look like — how would we measure it?
- What is explicitly out of scope?
- What's the complexity gut feel (low/medium/high) and why?
- Any hard constraints — deadlines, other projects in flight, package boundaries?
- Check for an existing issue. Run
gh issue list --search "<keywords>" --state allin the target repo. If a matching issue already exists, ask whether to edit it or create a fresh one.
- Kebab-case the PRD name. If the proposed name has spaces, camelCase, or punctuation, kebab-case it:
"Notification Center"→notification-center. This slug goes in the# PRD:heading.
- Compress the issue title before writing the body. Default to a short imperative title, then derive the
# PRD:heading from that final title. Put nuance in the Executive Summary, not the title.
- Draft the PRD body using the template above, in a scratch buffer. Fill every required section. If you can't fill a section, ask the user — don't hallucinate requirements.
- Run the quality gates against the draft. If any fail, keep the issue in draft/deferred workflow state and tell the user which gates failed. If they all pass, mark it ready through native project/app state.
- Create the GitHub issue. Preferred: use the desktop app's Create PRD modal (which calls the
github:create-issueIPC handler — the handler wrapsgh issue createand upserts the cache). Alternative for CLI contexts:gh issue create --title "<Human Readable Title>" --body-file -with the PRD markdown piped on stdin.
- Confirm the outcome to the user with the issue URL. Suggest next step: "Ready to hand this to the planner? Click Start pipeline in the kanban, or say: plan issue #N".
When the user says "plan the X PRD"
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/writing-prds/SKILL.md
Popularity
- Repository stars
- 6
- 7-day trend score
- 10
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/shipshitdev/shipcode/writing-prds)