# Slice

> Vertical-slice planning pipeline that turns rough requirements into slice-local discovery, decisions, UAT, PRD, follow-ups, and a bootstrap prompt before implementation. Use when starting feature work, shaping a vertical slice, converting rough requirements into acceptance criteria, or preparing a fresh-context agent to implement from durable artifacts.

- Skill: `rawgroundbeef/slice` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add rawgroundbeef/slice`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rawgroundbeef/slice/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Product & Planning
- Author: rawgroundbeef (https://skillmd.com/u/rawgroundbeef)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rawgroundbeef/slice

---


# Slice

Use this as the planning-to-implementation pipeline for one coherent vertical
slice. The artifacts are the source of truth; do not rely on conversation
memory once an artifact exists.

Companion skills this pipeline loads: `$grill`, `$uat`, `$prd`, `$review` (and
a repo-specific `threat-model` skill when the repo has one). Repo-specific
conventions — the integration branch name, verification gates, code layout, and
which zone skills to load — come from the repo's `AGENTS.md`.

## Pipeline

### 1. Establish the branch and scope

When the user wants a PR proposal or implementation off a fresh integration branch:

- Read `AGENTS.md` for the repo's conventions (integration branch, verification
  gates, code layout, zone skills).
- Check `git status --short --branch`.
- Fetch the latest integration branch (e.g. `main`) when permitted, then create
  or confirm a feature branch from it.
- Preserve unrelated local files and untracked planning docs.

Name the feature early and choose a stable slug for artifacts. Slice
directories are numbered so the progression of slices is visible at a glance:

- `.planning/{NNNN-feature-slug}/discovery.md`
- `.planning/{NNNN-feature-slug}/decisions.md`
- `.planning/{NNNN-feature-slug}/uat.md`
- `.planning/{NNNN-feature-slug}/prd.md`
- `.planning/{NNNN-feature-slug}/bootstrap.md`
- `.planning/{NNNN-feature-slug}/follow-ups.md`
- `.planning/{NNNN-feature-slug}/mock/` — optional; only when the slice has a
  visual target (design mock, reference screenshots)

`NNNN` is a zero-padded four-digit sequence number. Pick the next number after
the highest existing prefix in `.planning/` (the first slice is `0001`). The
number belongs to the slice, not to PRs — a multi-PR slice keeps one number.

Create the `.planning/{NNNN-feature-slug}/` directory lazily when the first
planning artifact for the slice is written. Keep filenames stable inside the
directory; the number and slug belong to the directory, not each file.

When the slice has a visual target, capture it into `mock/` at kickoff —
pasted screenshots and external design links are perishable and not readable
by a fresh implementation context. Use descriptive kebab-case names
(`mock-1-history-top.png`), referenced by path from `discovery.md` (with the
living design link alongside) and from `uat.md` as the visual pass reference.
The agent's shell may be unable to read screenshot temp dirs or `~/Desktop`
(macOS TCC) — ask the user to drag files in when copying fails. Prose
extraction in `discovery.md` still happens; the pixels back it up.

### 2. Grill first

Load `$grill` and run it against the kickoff brief, ticket, rough
requirements, existing PRD, or current code behavior. Keep grilling until the
problem, constraints, domain terms, and non-goals are clear enough that a human
and agent are using the same language.

Use code and docs to answer questions whenever possible. Ask the user only for
decisions that cannot be resolved from the repo.

Write `.planning/{NNNN-feature-slug}/discovery.md` as the slice-local grill
artifact. Use it for:

- The original requirement set or kickoff brief.
- The refined problem statement.
- Resolved slice-specific terms and constraints.
- Non-goals and open questions.
- Evidence from code or docs that shaped the plan.

Write `.planning/{NNNN-feature-slug}/decisions.md` as the slice-local decision
log. Use it for choices made during the grill, rejected alternatives, and links
to any durable ADRs.

When the slice touches money movement, auth or secrets, PII, or introduces a
new attack surface (new endpoint, webhook, deep link, privileged action), and
the repo has a `threat-model` skill, load it during the grill and run it over
the slice's surface. Record the ranked threats and chosen controls in
`discovery.md` and the accept/mitigate decisions in `decisions.md`; controls
become UAT guardrails and PRD requirements, not afterthoughts.

Update `CONTEXT.md` only when the grill resolves reusable domain glossary
language. Create or update ADRs under `docs/adr/` only when the
`grill` ADR threshold is met. Link those repo-level updates from
`decisions.md`; do not treat `CONTEXT.md` or `docs/adr/` as the slice artifact.

### 3. Write UAT before PRD

Load `$uat` before writing the PRD. Use the grilled context to define the
outside-in acceptance surface: what a human sees, does, verifies, and should not
mistake for a bug.

The point of writing UAT here is alignment. The human should be able to read the
UAT and confirm: yes, this is how the feature should work from a user's
perspective. If that is true, treat it as evidence that the discovery and
decisions are good enough to turn into a PRD. If it is not true, return to the
grill and fix discovery or decisions before writing the PRD.

Write `.planning/{NNNN-feature-slug}/uat.md` unless the user asks for another
location. Make the UAT concrete enough to prove shared understanding before any
implementation plan hardens.

**STOP HERE and ask the human.** Present the UAT and get an explicit "yes,
this is how it should behave" before writing the PRD. Do not proceed on
momentum or inferred approval — the UAT is the alignment gate, and skipping
the human's read defeats its purpose.

The UAT should answer:

- What user-visible workflow proves the slice works?
- What durable side effects must exist or explicitly not exist?
- What guardrails, non-goals, and environment gotchas matter?
- What single pass criterion makes the PR demo-ready?

### 4. Write the PRD from discovery and decisions

Load `$prd` after the UAT is agreed or at least stable enough to guide
acceptance. The PRD is grounded in the grill output: discovery, decisions,
shared domain language, and code evidence. Use the UAT as the human-approved
user-perspective contract that keeps the PRD honest about observable behavior
and pass criteria.

If the PRD and UAT disagree, do not force one to fit the other. Revisit the
upstream artifact that is wrong: discovery may be incomplete, a decision may be
unclear, or the UAT may have accepted the wrong behavior. Resolve the mismatch
before moving on.

Write `.planning/{NNNN-feature-slug}/prd.md` unless the user asks for another
location. Ground it in:

- `.planning/{NNNN-feature-slug}/discovery.md`.
- `.planning/{NNNN-feature-slug}/decisions.md`.
- `CONTEXT.md` terms when the slice relies on shared domain language.
- Relevant ADRs when the slice relies on durable architecture decisions.
- The UAT file by path as acceptance guidance.
- Existing code and module boundaries.
- Explicit non-goals and follow-up slices.

If the work needs multiple PRs, record the slice shape in the PRD and name the
branch order.

### 5. Produce the bootstrap prompt

Write `.planning/{NNNN-feature-slug}/bootstrap.md` only after discovery,
decisions, UAT, and PRD are coherent enough for a fresh implementation session.

The bootstrap is not another PRD. It is the cold-start prompt for a clean
context. Reference artifacts by path instead of inlining them.

Include:

- A short statement of what is being built.
- The artifact read order with one line explaining each path.
- Decisions and constraints that must not be violated.
- The intended PR or branch sequence when the work is split.
- Implementation pointers that were verified from code.
- Any repo-specific zone skills to load before editing relevant areas.
- Required verification gates from `AGENTS.md`.
- Environment gotchas needed to smoke-test the slice.
- Out-of-scope work and follow-ups.
- A final instruction to execute from the documents, not conversation memory.

If the bootstrap cannot be written cleanly, stop and fix the upstream artifact
that is vague or contradictory.

### 6. Adversarial review before handoff

After the bootstrap is written, run an adversarial pass over the full artifact
set before sending the user into a fresh context. Do not treat the bootstrap as
the completed handoff. The reviewer's job is to break the plan, not to polish
prose. Use a fresh-context subagent when available so the review is not
contaminated by conversation memory.

- Read the artifacts cold, in the bootstrap's stated read order.
- Hunt for contradictions between discovery, decisions, UAT, PRD, and
  bootstrap.
- Challenge every implementation pointer that is not backed by code evidence —
  verify it against the codebase or remove it.
- Probe for gaps a cold agent would trip on: missing constraints, unstated
  environment setup, acceptance criteria that cannot actually be observed.
- Ask the closing question: could a fresh context implement this without
  asking the user anything the artifacts should have answered?

Route each finding to the upstream artifact that is wrong and fix it there —
do not patch over it in the bootstrap. The review passes when it stops
producing blocking findings.

**STOP HERE after the review.** Report the outcome to the human before any
implementation begins:

- If blocking findings remain, say planning is not ready, summarize the
  blockers, fix the upstream artifacts, and rerun the adversarial review.
- When the review passes, explicitly tell the human that it passed and provide
  the bootstrap path for the fresh implementation context.

Do not continue into implementation in the planning context, even when an
earlier request broadly authorized the slice. Wait for the handoff into a fresh
context; the adversarial pass and the human-facing pass report are both required
planning gates.

### 7. Clear context, implement, and review

Only after the adversarial review passes and the human has been told, start
implementation from `.planning/{NNNN-feature-slug}/bootstrap.md` in a fresh
context. If the docs are insufficient to implement cold, update the docs instead
of relying on remembered conversation.

Complete the implementation and run the repository's verification gates from
`AGENTS.md`. Then spawn a fresh-context subagent, load `$review` in that
subagent, and review the implementation branch or diff against its integration
branch. Give the reviewer the bootstrap path and raw review scope; do not give
it the implementation agent's conclusions or ask it to fix its own findings.
The implementation agent must not substitute a same-context self-review when a
review subagent is available.

Route the review result as follows:

- Address every **Request changes** finding in the implementation context, rerun
  the verification gates, and spawn another fresh `$review` pass over the
  revised diff.
- Preserve accepted non-blocking findings in the slice's `follow-ups.md` using
  the `$review` skill's durable-follow-up rules.
- If a review subagent is unavailable, run `$review` in the implementation
  context and explicitly disclose that the review was not independent.

Do not hand off the implementation until the latest review returns **APPROVE**
with no Request changes findings. Report the review scope, verdict, verification
results, and any remaining warnings to the human.

## Follow-ups

Maintain `.planning/{NNNN-feature-slug}/follow-ups.md` throughout planning and
implementation. Use it for real findings that should survive the current
session but do not belong in the current slice:

- Bugs discovered while testing or reading adjacent code.
- Deferred slice ideas.
- Product questions.
- Cleanup or refactor notes.
- Environment and testing notes.

Keep each item dated and specific enough to pick up cold. Remove an item only
when it is scheduled into a slice or explicitly rejected.

Use this section order:

- Bugs Discovered
- Deferred Slice Ideas
- Product Questions
- Cleanup / Refactor Notes
- Environment / Testing Notes

## Midstream Rules

- Resume from existing artifacts in pipeline order.
- Do not regenerate an approved artifact unprompted; amend it when it is stale.
- Prefer `.planning/{NNNN-feature-slug}/` artifacts for active PR work.
- Put durable architecture decisions in ADRs, not in bootstrap prose alone.
- Track deferred slices in `.planning/{NNNN-feature-slug}/follow-ups.md` when
  they are real but out of the current PR.
- Keep implementation out of scope until the bootstrap is ready, unless the
  user explicitly asks to skip planning.

## Artifact Map

| Step                     | Artifact                                      |
| ------------------------ | --------------------------------------------- |
| Discovery                | `.planning/{NNNN-feature-slug}/discovery.md`  |
| Decisions                | `.planning/{NNNN-feature-slug}/decisions.md`  |
| UAT                      | `.planning/{NNNN-feature-slug}/uat.md`        |
| PRD                      | `.planning/{NNNN-feature-slug}/prd.md`        |
| Bootstrap                | `.planning/{NNNN-feature-slug}/bootstrap.md`  |
| Deferred work            | `.planning/{NNNN-feature-slug}/follow-ups.md` |
| Visual target (optional) | `.planning/{NNNN-feature-slug}/mock/`         |

## Done Criteria

Planning is ready when discovery, decisions, UAT, PRD, follow-ups, and
bootstrap agree on scope, terms, acceptance, non-goals, and branch order, and
the adversarial review has stopped producing blocking findings. Planning is
ready for handoff only after that passing result has been reported to the human.

Implementation is ready for handoff only after the relevant code is complete,
the repo's verification gates (from `AGENTS.md`) pass, and the latest `$review`
pass returns **APPROVE** with no Request changes findings.

