skills/list-draft-prds/SKILL.md
--- name: list-draft-prds description: List open GitHub issues labelled `prd:draft` in the current repo — the agent-native repo's "ideas inbox". Draft PRDs are NEVER auto-picked-up by Ralph, planner-worker, agentic-e2e-flow, or night-shift; they sit waiting to be grilled into real PRDs (Pocock 7-section template) before the label is swapped to the repo's gate label (`ready-for-agent` by default, `Sandcastle` / `swarm` per project). Use when you want to see what ideas are sitting, triage your dra
npx skillsauth add RonanCodes/ronan-skills skills/list-draft-prdsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The "ideas inbox" view for an agent-native repo. Lists open issues labelled prd:draft so the user can decide which one to grill into a real Pocock-shaped PRD.
In the agent-native repo pattern (see agent-native-repo-pocock), GitHub issues ARE the backlog. Two label states gate the queue:
| Label | Meaning | Picked up by autonomous runs? |
|---|---|---|
| prd:draft | Captured idea, NOT yet shaped as a real PRD. Body is freeform notes, not the Pocock 7-section template. | NO. Never. |
| ready-for-agent (or project synonym like Sandcastle, swarm) | Grilled and shaped. Parent PRDs (body opens ## Problem Statement) or slice issues (body opens ## Parent\n\n#<N>). | YES — Ralph, planner-worker, agentic-e2e-flow, night-shift all consume from here. |
Draft PRDs are the user's idea capture. They wait until the user runs /grill on them (which uses grill-with-docs under the hood), at which point the body is rewritten into the 7-section Pocock template and the label is swapped from prd:draft to the gate label.
This skill is the "what's sitting in my drafts" view. It does NOT promote anything itself — promotion is the user's call, driven by /grill.
Detect gh remote. Run gh repo view --json nameWithOwner -q .nameWithOwner — if that errors, exit cleanly with:
"Not in a gh-remote repo.
/ro:list-draft-prdsonly works inside a repo with a GitHub remote. Theprd:draftconvention lives on GitHub issues."
Resolve the draft label. Default prd:draft. Override via --label <name> (rare; the convention is to use prd:draft across all agent-native repos).
gh issue list \
--label prd:draft \
--state open \
--json number,title,updatedAt,body,labels,url \
--limit "${LIMIT:-30}"
Parse the JSON. Sort by updatedAt descending (most recently touched first).
For each draft, render:
#<num> <title> · updated <relative-time>
<first ~2 non-blank lines of body, truncated to ~140 chars total>
labels: prd:draft, <any-others>
<url>
Use a numbered list (1., 2., 3., ...) so the user can refer to "the first one" / "number 2" in conversation.
Relative-time should be human-friendly:
< 1h: "just now" / "23 min ago"< 24h: "5h ago"< 7d: "3d ago"2026-05-12If 0 drafts found, print:
No draft PRDs in this repo.
Capture an idea by writing a fresh GH issue with the `prd:draft` label —
or run `/ro:write-a-prd --draft` (TBD) when that ships. To turn a draft
into a real PRD, run `/grill` on the issue and the body gets rewritten
into Matt Pocock's 7-section template + the label swaps to your repo's
gate label (`ready-for-agent` by default).
Then exit. No question asked.
After listing (and only if N >= 1), ask via AskUserQuestion:
"Which draft do you want to grill into a real PRD?"
Options:
"#<num> — <title>" (cap at first ~60 chars of title)"none, just listing" (the escape hatch)On user pick:
/grill <issue-number> to shape #<num> into a real PRD." and exit. Do NOT invoke /grill directly from this skill — the user controls when grilling starts; this skill is read-only over the issue backlog.The "do not invoke" rule is load-bearing: this skill is the inbox view, not the action. Bundling grill-dispatch here would couple the inbox to a single grill flow and surprise users who wanted to triage manually.
/ro:list-draft-prds # Default: list up to 30 open prd:draft issues
/ro:list-draft-prds --limit 10 # Smaller list
/ro:list-draft-prds --label my-drafts # Custom draft label (rare)
/agentic-e2e-flow checks for open prd:draft issues in its pre-flight and offers to grill one before writing a fresh PRD. If you're not sure whether to start from a draft or from scratch, run /ro:list-draft-prds first to see the inbox.
| Condition | Message |
|---|---|
| No gh remote | "Not in a gh-remote repo. /ro:list-draft-prds only works inside a repo with a GitHub remote." |
| gh not authed | "gh is not authenticated. Run gh auth login first." |
| Label missing (gh returns 0 issues but label doesn't exist) | Distinguish from "0 drafts" by checking gh label list --json name -q '.[].name' first. If label missing, suggest creating it: gh label create prd:draft --color CCCCCC --description "Captured idea, not yet a real PRD". |
Created 2026-05-14 alongside the prd:draft convention. The convention itself is:
prd:draft label (freeform body, NOT the Pocock template)/grill → rewrites body into 7-section template, swaps label prd:draft → ready-for-agent (or project synonym configured in docs/agents/triage-labels.md)See also agent-native-repo-pocock pattern page in llm-wiki-skill-lab.
/grill — the dispatcher that routes to grill-with-docs to promote a draft into a real PRD/ro:write-a-prd — write a fresh PRD from scratch (skipping the draft stage)/agentic-e2e-flow — full end-to-end pipeline; offers to grill a draft as its first gate/ro:ralph, /ro:planner-worker, /ro:night-shift — autonomous runs that exclude prd:draft from their queuestesting
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
development
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
tools
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
research
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".