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 queuesdevelopment
--- name: worktree description: Coordinate multiple agents on one repo via a worktree-lock pool, so two agents never clobber each other's working tree. Acquire the first free slot (main, then beta/gamma… worktrees, created on demand), work there on your own branch, release when you've pushed. Use before modifying any repo that might be in use by another agent (factory, dataforce, etc.), or whenever you're told a repo is being worked on. Backed by `ro worktree`. category: development argument-hin
testing
--- name: ship description: Ship a feature branch the local-CI-first way — run the full local gate, push, open a PR, squash-merge, then deploy, without waiting on GitHub Actions. Use when a branch is ready for main and you want it merged and deployed now. Reads CI policy from `ro ci` (default skips remote CI because GitHub Actions billing keeps hitting limits). Sibling to /ro:gh-ship (waits on GitHub checks) and /ro:cf-ship (the deploy half). Triggers on "ship it", "ship this", "merge and deploy
testing
--- name: setup-logging description: Set up (or audit) the observability stack in a TanStack Start + Cloudflare Workers app so it is "diagnosable by default" — structured logging (logtape) with a request context carrying trace_id + userId + tenant/orgId, a trace_id propagated FE→BE→logs→Sentry→PostHog, Cloudflare Workers observability enabled, and Sentry + PostHog wired. Two modes: `setup` (wire it into an app) and `audit` (check an existing app + report gaps). Use when scaffolding a new app, wh
development
Manage credentials INSIDE the active ~/.claude/.env file — read which token/account to use for a given app (Simplicity vs Dataforce vs Ronan-personal), add or update a secret WITHOUT it passing through the chat (an interactive Terminal window prompts for it), and track secrets that were exposed in a transcript so they get rotated. Sibling to /ro:context (which switches WHICH env file is active). Use when the user wants to add an API key/token/secret, asks "which credential do I use for X", needs the env organized/labelled, or a secret was pasted into the chat and should be rotated.