skills/matt-pocock-coding-workflow/SKILL.md
--- name: matt-pocock-coding-workflow description: End-to-end Matt Pocock coding workflow as a single orchestrated skill. Chains grill-me, write-a-prd, slice-into-issues, ralph, and close-the-loop in order. Asks once at the start whether to run in-the-loop (human reviews per issue) or AFK (full night-shift Ralph). Use when starting a new feature, project, or substantial change and you want the disciplined grill, slice, loop, verify shape instead of jumping straight to code. Triggers on: "build t
npx skillsauth add RonanCodes/ronan-skills skills/matt-pocock-coding-workflowInstall 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 full Matt Pocock workflow as one skill. Grill the brief, write the PRD, slice into vertical issues, run the Ralph loop, close the loop.
The point is the discipline, not the tools. Each phase is a contract with the next. A loose PRD is fatal for AFK runs. Horizontal slices leave the agent coding blind. Pocock Flow refuses to skip steps.
This is the orchestration spine of the local factory — the family of agent-loop skills that run autonomously on Ronan's machine. Siblings: /ro:ralph, /ro:planner-worker (alias /ro:swarm), /ro:night-shift, /ro:day-shift. They share artefact shape, gitignore rules, and PR conventions. See /ro:ralph § "Run artefacts (the canonical shape)" for the canonical reference.
The companion is the remote factory — the Factory app (tracked separately) that runs the equivalent flow as a cloud service.
Skip for: bug fixes, lookups, single-file edits, anything where the spec is already clear.
0. Day-shift → day-shift (agent + human grill; only if backlog has open issues)
1. Grill → grill-me (human in chat)
2. Plan → write-a-prd (human + agent)
3. Slice → slice-into-issues (agent, human reviews)
4. Choose mode → in-loop or AFK? (one question)
5. Loop → ralph (sequential or kanban) (agent, mode-dependent oversight)
6. Close → close-the-loop (agent + human spot-check)
Each step's output is the next step's input. No step is skippable.
Phase 0 (day-shift) is new as of 2026-05-19. It runs ONLY when the repo has open GitHub issues that may need grilling, promoting, or escalating before the rest of the chain fires. On a greenfield repo with no backlog, skip Phase 0 and start at Phase 1 (grill).
prd:draft is NEVER picked upThis skill orchestrates Ralph at step 5. prd:draft issues are NEVER picked up by the underlying Ralph (or planner-worker) loop. Drafts are ideas captured in the agent-native repo's inbox — freeform body, NOT Pocock's 7-section template, NOT yet grilled.
To promote a draft into ready work, the user runs /grill on the issue (which is what step 1 of this skill does anyway when given a draft issue number). The grill-with-docs flow rewrites the body into the 7-section template, then the user swaps the label from prd:draft to the gate label (ready-for-agent by default, or the project synonym configured in docs/agents/triage-labels.md).
Tip: if you're starting this workflow and not sure whether to grill an existing idea or write a fresh PRD, run /ro:list-draft-prds first to see the drafts inbox for the current repo. Then step 1 of this skill grills the picked draft instead of starting from a blank prompt.
The downstream Ralph step honours this exclusion via gh query filters; see /ro:ralph § "Filter / scope: prd:draft is NEVER picked up" for the query-level guards.
Probe whether there's an existing backlog to shape:
open_count=$(gh issue list --state open --json number --jq 'length' 2>/dev/null || echo 0)
If open_count > 0, invoke /ro:day-shift BEFORE the grill phase. The day-shift skill:
prd:draft / ready-for-human / blocked-on-human / swarm / needs-triage.swarm-labelled issue has the close-the-loop AC block; flips missing ones to needs-info.prd:draft and needs-triage issues (max 3 rounds via AskUserQuestion) and either promotes them to swarm or escalates them to blocked-on-human with a named human action.blocked-on-human issues.Why this is Phase 0 and not optional: the night-shift / Ralph chain only ships what the AC list says. If yesterday's ready-for-human issue is still parked, the loop ignores it. If a prd:draft looks superficially ready, the loop dispatches against an ungrilled spec. Day-shift surfaces those before the chain commits to building anything.
If open_count == 0 (greenfield repo, no backlog): skip Phase 0 entirely, start at Phase 1 (grill).
See [[night-shift-retro-and-day-shift]] for the full async chain this slots into. The skill defers to /ro:repo-mode, so work-mode repos read .ralph/issues/*.md instead of gh issue list.
Invoke /grill-me. The grilling step decides what the PRD is allowed to contain. Stop conditions:
Do not proceed to step 2 until the user explicitly accepts the resolved decisions.
Invoke /write-a-prd --quick (or --plan if the brief needs more structure). The PRD must contain:
Pause for the human to confirm the PRD before slicing.
Invoke /slice-into-issues. The slicing skill takes the PRD and:
.ralph/issues/ (or the project's configured issue directory).Pause for the human to review the module map and the issue files before looping.
Research spikes: if the PRD needs investigation before (or alongside) implementation — pedagogy research, competitor teardown, an architecture spike — emit those as kind:research issues. They route to the research-worker flow in Step 5 (deep research → cited doc in docs/research/ + LLM wiki, no tests) per [[canon:research-tasks]], and their docs feed the downstream implementation slices.
Use AskUserQuestion to ask the user:
"Run the loop in-the-loop (human reviews per issue) or AFK (full night-shift Ralph)?"
Three answers:
The chosen mode determines step 5's flags.
If the user passed --afk or --in-loop on the command line, skip this question.
Invoke /ralph with the chosen mode:
/ralph --mode single (one issue, then stop)./ralph --mode fresh --kanban --reviewer opus (Kanban backlog, fresh context per issue, Opus reviewer gate).--mode single x3, then --mode fresh --kanban for the rest.While Ralph runs:
Invoke /close-the-loop. Verifies:
If close-the-loop finds failures, surface them clearly. Don't auto-fix in this skill; the user decides whether to loop back or accept.
--mode fresh and verify each iteration spawns a NEW Agent tool call. See /ro:ralph § Lessons (2026-05-12) for the full pattern.git push origin main directly to "unblock". Don't. The audit trail becomes unreadable and CI gating breaks. Every change goes through PR + CI green + squash-merge, including chores.on: push: branches: [main] AND on: pull_request: triggers. If only push, the first story is to add the pull_request trigger; otherwise CI cannot gate merges and the whole flow degrades to "merge and pray".llm-wiki-ai-research:human-in-the-loop-vs-afk-codingllm-wiki-ai-research:push-vs-pull-coding-standardsllm-wiki-ai-research:vertical-slices-tracer-bulletsllm-wiki-ai-research:phase-n-ralph-loopllm-wiki-ai-research:smart-zone-dumb-zonellm-wiki-ai-research:deep-modules-for-aiWorkshop source-note: llm-wiki-ai-research:matt-pocock-ai-coding-workflow
development
--- 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.