/deslop-reborn
One iteration of the IronClaw Reborn de-slop loop — take ONE Reborn crate, fan out parallel review sub-agents (thermo-nuclear quality, paranoid architect, interface/contract/invariants, test-coverage/wiring), synthesize, apply fixes/refactors/missing tests, open a PR. Stop.
$ npx -y skills add nearai/ironclaw --agent claude-codeHow it fires
How this command gets triggered: by you, by Claude, or both.
- Fires itselfClaude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/deslop-reborn
Context preview
What this command does when you run it.
One iteration of the IronClaw Reborn de-slop loop — take ONE Reborn crate, fan out parallel review sub-agents (thermo-nuclear quality, paranoid architect, interface/contract/invariants, test-coverage/wiring), synthesize, apply fixes/refactors/missing tests, open a PR. Stop.
Command definition
deslop-reborn.mddescription: One iteration of the IronClaw Reborn de-slop loop — take ONE Reborn crate, fan out parallel review sub-agents (thermo-nuclear quality, paranoid architect, interface/contract/invariants, test-coverage/wiring), synthesize, apply fixes/refactors/missing tests, open a PR. Stop.
disable-model-invocation: true
allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*), Bash(cargo build:*), Bash(git:*), Bash(gh:*), Bash(grep:*), Bash(rg:*), Bash(ls:*), Bash(wc:*), Bash(scripts/reborn-e2e-rust.sh:*), Read, Grep, Glob, Edit, Write, Agent
argument-hint: "[crate name, e.g. ironclaw_turns]"
You are running **ONE iteration** of the IronClaw **Reborn de-slop** loop. Take exactly one **Reborn crate** (in `crates/`) that has **not been de-slopped yet**, review it *deeply and from multiple angles using parallel sub-agents*, then **land one coherent PR** that fixes the findings — simplifications, refactors, contract/README/invariant corrections, and any **missing unit/integration tests** needed to keep the component correct forever. Then **STOP** — a human merges. Do not merge anything.
Unlike a read-only audit or a PR-diff review (`/pr-shepherd`), this loop reviews a **whole crate as it stands on the integration branch** and improves it. The unit of work is a **Reborn crate**, not a diff.
If the user passed a crate name as an argument (`$ARGUMENTS`, e.g. `ironclaw_turns`), de-slop **that** crate and skip the selection cascade in §1 — but still run the §1 Reborn/legacy check to confirm it is a legitimate Reborn target. Otherwise pick one per §1.
0. Environment & state
- **Reborn-only.** All work targets the Reborn stack in `crates/` (root AGENTS.md, "Purpose and
precedence"). The v1 `src/` monolith and its legacy enclave (`ironclaw_engine`, `ironclaw_tui`, `ironclaw_gateway`, `ironclaw_oauth`) have all been removed, so every crate under `crates/` that the workspace builds is a legitimate target. Two caveats you can check in the root `Cargo.toml`: `tools/ironclaw_silk_decoder` is in `exclude`, so workspace-wide `cargo` commands never see it; and a crate with no consumers may be queued for deletion rather than for de-slopping (`grep -rl --include=Cargo.toml "<crate>" crates/ Cargo.toml` — the family layout means `crates/*/Cargo.toml` matches nothing). Verify each candidate's status with the orientation recipe (§1) before picking it.
- **Local gate reality.** You can prove `cargo fmt`, `cargo clippy`, per-crate `cargo test -p <crate>`,
the workspace unit-test tier, and the architecture-boundary test (`cargo test -p ironclaw_architecture_tests`) locally. The **backend-integration tier** (crate-level feature-gated suites, e.g. `cargo test -p ironclaw_hooks --features integration` — the workspace-root `integration` feature is empty and does nothing) needs Docker for its Postgres testcontainers; the **live tier** (`-- --ignored`) needs Postgres + LLM API keys; **Reborn e2e** (`scripts/reborn-e2e-rust.sh`) may need Docker. If a fix touches those paths, implement it fully and mark the gate **"CI-deferred (needs Postgres/Docker/keys)"** in the PR body. Never weaken or delete integration/e2e coverage just because it can't run in this environment. (Tiers: `.claude/rules/testing.md`.)
- Read `.work/deslop-ledger.md` (create the file and `.work/` dir if missing; add `.work/` to
`.gitignore` if it isn't already — the ledger is local scratch, keep it out of PRs). The **DESLOPPED** list records crates this loop has already passed through — **skip them** so two iterations don't re-chew the same crate. Also run `gh pr list` to see in-flight PRs: **don't pick a crate an open PR is actively reshaping** (you would collide on the same files); prefer a crate no open PR holds.
1. Pick ONE un-de-slopped Reborn crate — stop at first viable
List the crates (`ls crates/*/` — the top level is the ten family directories, crates are one level down, plus `crates/extensions/packages/*`). A crate is a **candidate** when ALL hold:
- **it has real consumers.** Verify: `grep -rl --include=Cargo.toml "<crate_name>" crates/ Cargo.toml`
— the legacy enclave is gone (every workspace crate is Reborn), so this check now exists to catch crates with no consumers that may be queued for deletion instead. When unsure, consult the `ironclaw-reborn-orientation` skill.
- **not already in the ledger DESLOPPED list** (§0),
- **not the hot surface of an open PR** (§0) — leave those to the build/review loops,
- it has real source to review (skip thin aggregator/facade crates with ~no `src` — though their
*tests* are fair game for the coverage angle).
**Selection bias:** prefer **smaller / leaf crates first** — they fit entirely in context, gate cleanly, and merge independently. A crate whose `src` is **under ~2k lines** can and SHOULD be read in full (§3). Clear the small, high-leverage crates before taking on the giants (e.g. `ironclaw_composition`, `ironclaw_assistant`, `ironclaw_extension_host`-scale surfaces need targeted reading, not a full load, and may warrant splitting the de-slop across iterations module-by-module). When unsure, prefer a crate that is **load-bearing for invariants** (turns, dispatcher, authorization, approvals, secrets, run_state, event store) over a purely mechanical one — a slop fix there protects the whole system.
If **every** Reborn crate is ledger-recorded or PR-held, this is a **no-de-slop iteration**: record "nothing to de-slop" in the ledger and STOP. Do **not** manufacture a marginal PR to fill the gap.
2. FENCES (hard)
- **De-slop the crate — do not redesign its feature or change its observable contract.** Your mandate
is quality (structure, decomposition, spaghetti, abstraction, file size), **interface hygiene** (public surface not over-exposed; `AGENTS.md`/`CLAUDE.md`/`CONTRACT.md`/`README.md` accurate), **invariant integrity**, and **test coverage** — not re-scoping what the crate does. If you conclude the crate's
Read more
description: One iteration of the IronClaw Reborn de-slop loop — take ONE Reborn crate, fan out parallel review sub-agents (thermo-nuclear quality, paranoid architect, interface/contract/invariants, test-coverage/wiring), synthesize, apply fixes/refactors/missing tests, open a PR. Stop. disable-model-invocation: true allowed-tools: Bash(cargo fmt:*), Bash(cargo clippy:*), Bash(cargo test:*), Bash(cargo build:*), Bash(git:*), Bash(gh:*), Bash(grep:*), Bash(rg:*), Bash(ls:*), Bash(wc:*), Bash(scripts/reborn-e2e-rust.sh:*), Read, Grep, Glob, Edit, Write, Agent argument-hint: "[crate name, e.g. ironclaw_turns]"
You are running **ONE iteration** of the IronClaw **Reborn de-slop** loop. Take exactly one **Reborn crate** (in `crates/`) that has **not been de-slopped yet**, review it *deeply and from multiple angles using parallel sub-agents*, then **land one coherent PR** that fixes the findings — simplifications, refactors, contract/README/invariant corrections, and any **missing unit/integration tests** needed to keep the component correct forever. Then **STOP** — a human merges. Do not merge anything.
Unlike a read-only audit or a PR-diff review (`/pr-shepherd`), this loop reviews a **whole crate as it stands on the integration branch** and improves it. The unit of work is a **Reborn crate**, not a diff.
If the user passed a crate name as an argument (`$ARGUMENTS`, e.g. `ironclaw_turns`), de-slop **that** crate and skip the selection cascade in §1 — but still run the §1 Reborn/legacy check to confirm it is a legitimate Reborn target. Otherwise pick one per §1.
0. Environment & state
- **Reborn-only.** All work targets the Reborn stack in `crates/` (root AGENTS.md, "Purpose and
precedence"). The v1 `src/` monolith and its legacy enclave (`ironclaw_engine`, `ironclaw_tui`, `ironclaw_gateway`, `ironclaw_oauth`) have all been removed, so every crate under `crates/` that the workspace builds is a legitimate target. Two caveats you can check in the root `Cargo.toml`: `tools/ironclaw_silk_decoder` is in `exclude`, so workspace-wide `cargo` commands never see it; and a crate with no consumers may be queued for deletion rather than for de-slopping (`grep -rl --include=Cargo.toml "<crate>" crates/ Cargo.toml` — the family layout means `crates/*/Cargo.toml` matches nothing). Verify each candidate's status with the orientation recipe (§1) before picking it.
- **Local gate reality.** You can prove `cargo fmt`, `cargo clippy`, per-crate `cargo test -p <crate>`,
the workspace unit-test tier, and the architecture-boundary test (`cargo test -p ironclaw_architecture_tests`) locally. The **backend-integration tier** (crate-level feature-gated suites, e.g. `cargo test -p ironclaw_hooks --features integration` — the workspace-root `integration` feature is empty and does nothing) needs Docker for its Postgres testcontainers; the **live tier** (`-- --ignored`) needs Postgres + LLM API keys; **Reborn e2e** (`scripts/reborn-e2e-rust.sh`) may need Docker. If a fix touches those paths, implement it fully and mark the gate **"CI-deferred (needs Postgres/Docker/keys)"** in the PR body. Never weaken or delete integration/e2e coverage just because it can't run in this environment. (Tiers: `.claude/rules/testing.md`.)
- Read `.work/deslop-ledger.md` (create the file and `.work/` dir if missing; add `.work/` to
`.gitignore` if it isn't already — the ledger is local scratch, keep it out of PRs). The **DESLOPPED** list records crates this loop has already passed through — **skip them** so two iterations don't re-chew the same crate. Also run `gh pr list` to see in-flight PRs: **don't pick a crate an open PR is actively reshaping** (you would collide on the same files); prefer a crate no open PR holds.
1. Pick ONE un-de-slopped Reborn crate — stop at first viable
List the crates (`ls crates/*/` — the top level is the ten family directories, crates are one level down, plus `crates/extensions/packages/*`). A crate is a **candidate** when ALL hold:
- **it has real consumers.** Verify: `grep -rl --include=Cargo.toml "<crate_name>" crates/ Cargo.toml`
— the legacy enclave is gone (every workspace crate is Reborn), so this check now exists to catch crates with no consumers that may be queued for deletion instead. When unsure, consult the `ironclaw-reborn-orientation` skill.
- **not already in the ledger DESLOPPED list** (§0),
- **not the hot surface of an open PR** (§0) — leave those to the build/review loops,
- it has real source to review (skip thin aggregator/facade crates with ~no `src` — though their
*tests* are fair game for the coverage angle).
**Selection bias:** prefer **smaller / leaf crates first** — they fit entirely in context, gate cleanly, and merge independently. A crate whose `src` is **under ~2k lines** can and SHOULD be read in full (§3). Clear the small, high-leverage crates before taking on the giants (e.g. `ironclaw_composition`, `ironclaw_assistant`, `ironclaw_extension_host`-scale surfaces need targeted reading, not a full load, and may warrant splitting the de-slop across iterations module-by-module). When unsure, prefer a crate that is **load-bearing for invariants** (turns, dispatcher, authorization, approvals, secrets, run_state, event store) over a purely mechanical one — a slop fix there protects the whole system.
If **every** Reborn crate is ledger-recorded or PR-held, this is a **no-de-slop iteration**: record "nothing to de-slop" in the ledger and STOP. Do **not** manufacture a marginal PR to fill the gap.
2. FENCES (hard)
- **De-slop the crate — do not redesign its feature or change its observable contract.** Your mandate
is quality (structure, decomposition, spaghetti, abstraction, file size), **interface hygiene** (public surface not over-exposed; `AGENTS.md`/`CLAUDE.md`/`CONTRACT.md`/`README.md` accurate), **invariant integrity**, and **test coverage** — not re-scoping what the crate does. If you conclude the crate's
IronClaw is an Agent OS focused on privacy, security and extensibility

