# To Epic

> Plan one coordinated outcome end-to-end into a ready Epic under one standing approval. Use when asked to plan an Epic; not for standalone items — use to-backlog.

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

---


# To Epic

Invoking this skill is the owner's standing approval for the full planning transaction set of one Epic — Epic intake, child work-item intake, refinement, rank placement, every `proposed -> ready` transition — superseding `$backlog`'s per-transaction pauses for exactly these transactions; follow `$backlog` for everything else. It additionally authorizes `$guidance` publication for the subjects the owner names at step 2, and nothing else in `docs/wiki`. It never authorizes cancellation, other wiki mutation, execution claims, or records outside this Epic and its children.

Pause only at the evidence decision (step 2), a `$guidance` rule-replacement pause, and hard blockers; otherwise run to completion and report. Only `$to-product`'s contract covers the rule-replacement pause — never otherwise suppress it. User-invoked only — or by `$to-product`, whose autonomous contract auto-answers every pause.

When at least two planning concerns are independent, invoke `$parallel-execution` for read-only analysis of slicing, dependencies, shared contracts, risks, acceptance, and verification. This context synthesizes the Epic and serializes every evidence decision and `$backlog` mutation.

## Workflow

1. **Epic intake** — Establish the coordinated outcome from the conversation or named sources, then create the `proposed` Epic via `$backlog` intake with provenance. Add its active-index entry as `- [EPIC-NNN: <title>](EPIC-NNN-short-title/) - <outcome>.`; link the Epic directory with the trailing `/`, never its `EPIC-NNN.md` record. If the outcome doesn't need multiple work items, stop and recommend `$to-backlog` instead. If the user names an existing `proposed` Epic, resume at its first incomplete step; reject `ready`, `in-progress`, or terminal Epics.
2. **Evidence decision** — Before proposing any child, inventory the technologies and standards the Epic's outcome implicates, using `$research`'s delta-scoped subject rule — never a whole-stack survey. Apply `$research` step 2's concept triggers; name each implicated standard subject or record why none applies — an empty standards half without a recorded reason is invalid. Report each subject's page state under `docs/wiki/engineering/`: missing, `draft`, version-mismatched against the manifest, stale per `$research`'s thresholds, or current. Then ask the owner one question covering both: run `$guidance` for which of those subjects, and run `$research` on the Epic? Never skip or answer either half yourself, unless `$to-product`'s autonomous contract answers it.
   - `$guidance` → naming a subject is the decision to run `$guidance` for it now, before child intake — deferring it to implementation or acceptance is not an outcome. Run it for the named subjects only, under this invocation's approval; `$research`'s no-wiki-during-planning rule does not apply to `$guidance` pages. Its fresh pages then answer those subjects for research and for child refinement.
   - `$research` yes → run it after guidance; use the findings to inform child slicing.
   - `$research` no → record the decision on the Epic. Children still need individually justified research states; if a version-specific or security-sensitive question surfaces later, ask again for that record — never relabel uncertainty.
3. **Child intake** — Slice the outcome into the smallest coherent, independently valuable Stories/Tasks/Bugs with `parent: EPIC-NNN`, relationships, blockers, and provenance via `$backlog`. Rank placement: the user's stated position, else append in dependency order at the end of the global rank.
4. **Refine to ready** — For each child in rank order: refine against its template and accepted wiki state; resolve research (`complete` from Epic findings or a child-level `$research` run, `not-needed` only with inspecting evidence); resolve `decisions` per `$backlog`'s Definition of Ready, reading existing ADRs first and naming any one a draft would supersede — `decisions: none` only when the significance test records no qualifying decision; every decision confirmed in discussion or named in the record body becomes `decisions: draft` with an ADR-shaped draft under `## Decisions`, never deferred in prose; fill `## Execution` with approach, verification commands, and its conflict domain or fixed interface, citing this invocation as the recorded approval; verify the full Definition of Ready; transition to `ready`. Then refine the Epic — outcome, objective criteria, exclusions, coordination approach, its own Epic-level decisions, and the template's complete provisional execution graph — and set it `ready`. If any graph row is unresolved, keep the Epic `proposed`; implementation revalidates every row against live code. Never allocate or publish an ADR here — publication happens at acceptance.
5. **Report** — Epic and child IDs with type, status, rank position, research state, and decisions state with each drafted decision named; the evidence decision, every guidance page created or refreshed, and every rule-replacement pause with its outcome; commit hashes; final `node scripts/validate-project.mjs` result. Any record left `proposed` gets its named blocker and resumption point.

A failed validator, unresolved research the owner declined, or a missing readiness requirement is a blocker: leave the record `proposed`, keep committed transactions intact, and report — never force `ready`.

End the report with `Next step:` — one copy-pasteable command from the outcome: everything ready → `$implement EPIC-NNN` (local serial execution) or `$implement-with-subagents EPIC-NNN` (fresh subagents, serial on one branch); a record left `proposed` → the exact resume command after its named blocker.

