cc-changelog
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes,…
Plan a rewrite as vertical slices and hand each one to /phx:plan as a requirements seed with binding decisions, contracts and acceptance criteria. Use after /rewrite:architect, or for the next slice.
$ npx -y skills add oliver-kriska/claude-elixir-phoenix --skill roadmap --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/roadmapContext preview
The summary Claude sees to decide when to auto-load this skill.
Plan a rewrite as vertical slices and hand each one to /phx:plan as a requirements seed with binding decisions, contracts and acceptance criteria. Use after /rewrite:architect, or for the next slice.
name: roadmap description: "Plan a rewrite as vertical slices and hand each one to /phx:plan as a requirements seed with binding decisions, contracts and acceptance criteria. Use after /rewrite:architect, or for the next slice." effort: high argument-hint: "[--next | --slice NN | --all] [--no-plan] [--auto]"
Phase 3. Cut the accepted architecture into **vertical slices** that each prove capabilities end to end, then hand one slice at a time to the phx workflow. The handoff is a file contract: `interview.md` that `/phx:plan` already consumes, plus a scratchpad seed. phx is not modified.
/rewrite:architect → /rewrite:roadmap <-- YOU ARE HERE
↓ interview.md + scratchpad.md
/phx:plan → /phx:work → /rewrite:verify → /rewrite:roadmap --next1. **SLICES ARE CAPABILITIES** — each slice delivers user, operator or machine goals end to end, never "all models" or "all controllers" 2. **RISK FIRST** — the first product slice is the riskiest core capability, after a foundation slice 3. **NO FABRICATED INTERVIEW** — the seed says it was generated, keeps ASSUMED and UNDECIDED visible, and has no invented transcript 4. **COMPLETE ONLY WHEN EARNED** — every coverage dimension ≥1, total ≥8, no UNDECIDED row and no unresolved consequential decision in the slice 5. **NEVER OVERWRITE USER WORK** — check an existing plan directory before writing; never hand phx any file but the slice's own `interview.md` 6. **NO HANDOFF ON UNRESOLVED DECISIONS** — never invoke `/phx:plan` while a consequential decision for the slice is ASSUMED, proposed or pending 7. **phx OWNS APPROVAL** — `/phx:plan` stops for approval; never auto-start `/phx:work`
Require ADR-000 with Status `accepted` or `ASSUMED`, `architecture.md` and a clean ledger:
python3 "${CLAUDE_SKILL_DIR}/../architect/scripts/ledger.py" check --rewrite-dir .claude/rewriteIf the check fails, stop and suggest `/rewrite:architect`.
Skip to step 3 with `--next` or `--slice` when `roadmap.md` already exists. Otherwise read `${CLAUDE_SKILL_DIR}/references/slicing.md` and write `.claude/rewrite/roadmap.md` in this conversation (a delegated writer is a `general-purpose` agent with `model: "sonnet"`), in this order:
| # | Slice kind | Typical content | |---|------------|-----------------| | 00 | Foundation | project skeleton per `architecture.md`, Repo(s), legacy schema mapping, auth edge read-only, baseline measurement (or a port-only load script) | | 01 | Oracle fixtures | legacy-produced fixture data, cookie and token vectors, captured payloads (synthetic, no production data); characterization tests on a `weak`/`none` grade | | 02 | First vertical slice | riskiest core capability end to end, including its negative probes | | 03+ | Remaining capabilities | ordered by dependency, then risk | | … | Internal replacement | queues, caches, Redis roles retired with their own gates | | … | Release rehearsal | conversion, backup and restore, rollback, operator commands |
Per slice: `F-` capabilities, ledger IDs, contracts with witnesses, the transition contract (when ADR-000 is staged or coexistence), acceptance criteria, exit gate, and `Blocked by` (UNDECIDED rows, unresolved decisions). The oracle grade (`## Oracles` in `.claude/rewrite/inventory/inventory.md`, as `contracts.md` confirms or downgrades it) sets slice 01, each slice's black-box files and the perf script (slicing.md rule 11). Suites run against the port only.
Size check: count each slice's ledger rows and its likely phx plan tasks (logical work units). Split a slice with more than ~12 ledger rows or more than ~8 tasks into `NNa`/`NNb` (for example `00a` skeleton + Repo, `00b` edge adapters), keeping every ledger ID in exactly one part.
First refresh every slice's `Blocked by` from the current ledger and decisions; a `blocked` slice with nothing left there returns to `ready`, and one a new UNDECIDED row or unresolved decision touches becomes `blocked`.
`--next` (default): the first `ready` or `seeded` slice in table order not blocked by an UNDECIDED row. A `planned` or `in-progress` slice is never re-seeded: report it with its `/phx:work` or `/rewrite:verify NN` command first. `--slice NN`: that one. `--all`: every `ready` or `seeded` slice (seeds only; `/phx:plan` runs for the first). A slice blocked by UNDECIDED rows is reported with its blocking questions instead.
List the slice's unresolved consequential decisions: those that change or remove a guarantee, contract, data, identity, client, cutover, security or operator duty it touches.
| Source | Unresolved when | |--------|-----------------| | `charter.md` | an `ASSUMED:` value the slice relies on | | ADR-000 | Status `ASSUMED`: each assumption covering the slice's cutover, data, identity, clients, contracts or defects | | ADRs cited by the slice's ledger rows | Status `proposed` or `ASSUMED` | | `divergences.md` | a row for the slice's IDs still `pending` |
grep -lE '^\*\*Status\*\*: *(proposed|ASSUMED)' .claude/rewrite/architecture/adr/*.md grep -n "pending" .claude/rewrite/architecture/divergences.md
Write them to `Blocked by` and the seed's Open Questions. Interactive: ask the user to accept or change each (`AskUserQuestion`, at most 4 per call) and record the answer in its ADR or divergence row. `--auto`: leave them; the seed gets Status `IN_PROGRESS`, so a fresh run still leaves one to review.
Slug: `rewrite-{NN}-{kebab-name}`. If `.claude/plans/{slug}/` already has a `plan.md` or a user-edited `interview.md`, ask before replacing. `--auto`: write `interview.rewrite-seed.md` beside it, then stop and report the collision; never hand phx that file or the old one.
Read `${CLAUDE_SKILL_DIR}/references/seed-templates.md` and write:
Docs: phxagents.dev -- install guides per runtime, the runtime compatibility matrix, all 26 Iron Laws, and a browsable skill and agent catalog. Claude Code is great.
CONTRIBUTOR TOOL - Track CC changelog, extract new versions since last check, analyze impact on plugin (breaking changes,…
Run an A/B codex review experiment — holistic codex review vs 3 focused dimension passes (security, ecto, liveview) on the branch…
CONTRIBUTOR TOOL - Validate plugin against latest Claude Code documentation. Catches breaking changes, deprecations, discovers…
Guide plugin development workflow — editing skills, agents, hooks, or eval framework in this repo. Use when modifying files in…
Generate X/Twitter release promotion posts with ASCII tables and CodeSnap rendering. Use when writing release posts, promotion…
CONTRIBUTOR TOOL - Cut a plugin release: bump plugin.json version, finalize CHANGELOG, update README if needed, gate on make ci,…