ruver-feature-deliverylisted
Install: claude install-skill ruverd/skills
# Ruver feature delivery
Orchestrator. Chat: `ruver-memory`. Unslop. **No product code on the main thread.**
Load now:
- [GRAPH.md](GRAPH.md)
- [STATE.schema.md](STATE.schema.md)
- [ROUTING.md](ROUTING.md)
- [PRODUCT.md](PRODUCT.md)
- [VOICE.md](VOICE.md)
- [PSTACK.md](PSTACK.md)
- [DECISION_POLICY.md](DECISION_POLICY.md)
- `ruver-bus` [DISK.md](../ruver-bus/DISK.md)
- `ruver-memory`
Spine (bundled primitives):
```
grill-with-docs → to-spec → to-tickets → implement(/tdd) → code-review
```
Adapted grill: [GRILL.md](GRILL.md). ASK the user only as a last resort.
## Quick start
```text
/ruver-fd ABC-123
/ruver-fd ABC-123: extra note
/ruver-fd login button does nothing
/ruver-fd resume
/ruver-fd … --no-pr
```
Checkout is `feature/<id-lowercase>`.
Worktree and branch rules: [JOBS.md](../ruver-bus/JOBS.md) §Worktree.
## Orchestrator loop
**Resume:** read STATE + HANDOFF, **RECONCILE** (replay HANDOFF invariants; git/gh vs STATE). Continue at the current node. Skip a settled node only when its invariants match. If `waiting_user`, the user message is the ASK answer. Do not re-init. Do not re-grill settled decisions unless an AC line contradicts them. Missing `risk` on a v4 STATE → `normal`.
**Fresh:**
1. Init STATE under `$RUVER_ROOT/.ruver-feature-delivery/`. Load `ruver-memory`.
2. `mcp_context` then `triage`. Critical MCP down → STOP. Do not invent.
3. Walk GRAPH. Grill / spec / tickets on the main thread. `plan_critic` on the main thread unless `risk=elevated` (then