resume-cr
Continues an existing Clean Room run from durable artifacts without relying on prior chat history.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-14
- Stars
- ★ 1.6k
- Forks
- 490
01 前言 Front Matter
- name
- resume-cr
- description
- Continues an existing Clean Room run from durable artifacts without relying on prior chat history.
- argument-hint
- [ "existing task-manifest.json or artifact roots" ]
- disable-model-invocation
- true
03 SKILL.md 正文
Clean Room Resume
Resume an existing clean-room run from durable artifacts. Never use prior chat history as the source of truth.
Use the canonical clean-room skill workflow and references in this plugin. Read skills/clean-room/references/CONTROLLER-LOOP.md when the manifest records loop_context or unattended mode. Preserve the same clean-room boundary, role separation, artifact schemas, leakage rules, implementation-root rules, and hook expectations.
If task-manifest.json records controller_policy.mode: "unattended" in Claude Code, prefer launching clean-room-skill run --task-manifest <path> --agent-runtime claude only when loop_context exists and names approved pending or gap units. For ccsilo/OpenRouter sessions, use clean-room-skill run --task-manifest <path> --ccsilo [variant] instead of manual --agent-runtime claude, --agent-config-dir, or CLEAN_ROOM_CLAUDE_EXECUTABLE wiring. Never write ANTHROPIC_AUTH_TOKEN or API keys into ccsilo or Claude settings files. If an unattended manifest lacks loop_context, treat it as incomplete outer-loop state: finish decomposition or selected-slice approval first, or stop with the missing outer-loop fields instead of launching the runner. If clean-room-skill is not on PATH, immediately use npx clean-room-skill@latest run --task-manifest <path> --agent-runtime claude instead of searching for the installed package. Do not search plugin cache paths for schema files, and do not pass --schema-dir /dev/null. The runner uses bundled schemas by default; pass --schema-dir only when the user provides a real schema directory. The main conversation must not perform Agent 1, Agent 2, Agent 3, or Agent 4 work once runner-ready unattended state exists. Do not edit task-manifest.json unit statuses in the main conversation; unit completion must come from runner-managed role artifacts and contaminated-side coverage verification. Do not ask to continue while unattended policy, iteration budget, and approved pending or gap units still permit progress. If the runner or Claude role-agent dispatch is unavailable, stop with BLOCKERS: Claude role-agent dispatch unavailable rather than silently continuing in the main chat.
Discovery Before Load
Before saying no clean-room run exists, perform the canonical clean-room "Run State Discovery Before Wizard" rules. Resolve explicit artifact paths first, then inspect the current working directory and ancestors for .clean-room/local-state.json, then configured clean-room roots, then bounded ~/Documents/CleanRoom/task-* and ~/Documents/CleanRoom/*/tasks/task-* candidates. If the repo-local pointer identifies an external project, scan that project's tasks/ directory before any global fallback.
Treat target-repository .clean-room/tasks/ as noncanonical unless the user explicitly provided that path or .clean-room/local-state.json identifies it as the external task root. Active artifacts belong under the external task root, not under the target repo stub.
If a candidate task-manifest.json is present but invalid, legacy-shaped, or schema-incompatible, report the exact path and validation errors. Do not say no artifacts exist. If no runnable task remains but a valid project is found, report the project root and make the next safe action "create a new task in this project" when the user wants to add more work.
Load Order
Load these artifacts from the paths recorded in task-manifest.json and the configured root environment. Treat missing optional artifacts as blockers only when the current gate requires them. A task may live at <base>/<project>/tasks/<task-id>/ with a shared project-level implementation root; trust the absolute paths recorded in task-manifest.json artifact_paths and never re-derive the layout from folder positions.
task-manifest.jsonpreflight-goal.json, when referenced bytask-manifest.json, only on the contaminated/controller sideinit-config.json, when present, only for drift comparison againsttask-manifest.jsoninitialization_snapshotclean-run-context.json, when present, only on the clean sidesource-index.json, only when referenced by the task manifest and only on the contaminated sidevisual-index.json, only when referenced by the task manifest and only on the contaminated sidecoverage-ledger.jsonevidence-ledger.jsonhandoff-package.jsonand behavior specs when presentskeleton-manifest.jsonwhen presentimplementation-plan.jsonwhen presentimplementation-report.jsonwhen present- latest valid
qc-report.json clean-room-result.json, when presentcontroller-status.json, when present, only on the contaminated/controller side- open abstract delta tickets
If more than one qc-report.json is present, select the valid report with the newest reviewed_at. If reports tie, cannot be validated, or disagree about artifact hashes, stop and report a blocker.
Required Checks
Before choosing work:
- Validate all loaded JSON artifacts against the bundled schemas.
- Validate handoff package paths and SHA-256 values before trusting clean artifacts.
- Confirm source roots, contaminated artifact roots, clean roots, implementation roots, and clean allowed-read roots remain separated.
- Confirm authorization still covers the recorded source scope and allowed actions.
- Report
run_statewhen present; do not infer generation from chat history when it is missing. - Trust
initialization_snapshotbefore any reusableinit-config.json. If they differ, report drift and stop before changing roots, model policy, schema profile, or rule classification. - When
initialization_snapshotrecordsproject_idorproject_root, confirm the on-diskclean-room-project.jsonat the project root still agrees with them and with the shared implementation root. Report drift and stop on mismatch. - Preserve the existing
controller_policy; missing policy meansattended. - Stop if new-run artifacts lack
preflight_goal_ref,preflight_goal_sha256, or the requiredhandoff_sequence. Treat this as legacy or incomplete preflight state and ask for a reviewed preflight goal before resuming. - Validate referenced
preflight-goal.jsonbefore using goal, stack, dependency, license, exactness, output, or hygiene decisions. - Preserve
loop_contextwhen present. In unattended inner-loop mode, selected work must remain insideloop_context.approved_scope_refs. - Stop if clean roles appear to require source, screenshots, contaminated ledgers, contaminated chat history, raw diffs, source excerpts,
source-index.json,visual-index.json, or the fulltask-manifest.json. - Stop if Agent 3 appears to require writing code outside
CLEAN_ROOM_IMPLEMENTATION_ROOTSor running shell outside the bounded Agent 3 shell policy. - Stop if Agent 4 appears to require reading source/contaminated material, writing outside
CLEAN_ROOM_IMPLEMENTATION_ROOTSandCLEAN_ROOM_CLEAN_ROOTS, or running shell outside the bounded Agent 4 polish runner policy. - Stop if
clean-run-context.jsonexposes source roots, visual roots, contaminated roots, source index refs, visual index refs, coverage ledgers, or evidence ledgers. - Stop if Agent 0 appears to have steered Agent 2, Agent 3, or Agent 4 through direct chat, progress feedback, implementation hints, priority changes, or partial implementation reports instead of durable sanitized artifacts.
- Treat non-terminal Agent 3
implementation-report.jsonstates as internal clean-side state, not Agent 0 feedback. - Stop if Agent 1.5 appears to require source roots, visual roots,
source-index.jsoncontents,visual-index.jsoncontents, raw screenshots, contaminated evidence ledgers, private identifier denylist contents, raw diffs, source excerpts, or Agent 1 source-reading chat history. - If
context_management.modeisrole-session-briefs, verify the next role can be launched from a fresh context usingrole-session-brief.jsonand the recorded budgets. Do not use resume chat history as the brief.
Selection Rules
Pick exactly one next safe action:
- One pending, gap, or blocked unit from
task-manifest.jsonandcoverage-ledger.json, limited toloop_context.approved_scope_refswhen present. - One blocked gate when a required artifact, schema validation, handoff hash, leakage review, authorization check, or root-separation check is missing or invalid.
- A final package closeout when implementation is complete, coverage is complete, QC passed, any configured polish review passed, and
clean-room-result.jsonrecords a terminal inner-loop return whenloop_contextis present.
Do not batch units. Do not advance state from memory. Do not reinterpret the source scope.
Before launching another role, Agent 0 may refresh contaminated-side controller-status.json with the current gate, selected unit, coverage state, implementation/QC state, blockers, latest artifact refs, and next safe action. Then create a role-specific role-session-brief.json. Clean roles receive the brief and clean artifact refs only, never full resume state.
Output
Return only this structure:
STATE: attended/unattended, current unit, latest implementation and QC status.
NEXT: one safe action.
BLOCKERS: missing artifacts or invalid checks.
DO NOT: no source text crossing wall, no code writes outside implementation roots.
If no safe next action can be proven, set NEXT to blocked and explain the first blocking gate.
04 同仓库更多 Skills
migrate-to-e2e
Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for /migrate-to-e2e, "migrate our tests to e2e", "port these Maestro flows", "move our TesterArmy tests", or when a project has an e2e config and an older suite still running.
e2e
Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.
create-verification-skill
Generate a project-local verify-<app> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for /create-verification-skill, "make a verification skill for this repo", or when a project has no scripted way to prove UI behavior.
deja-search
deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.
deja-reflect
End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.
revid
Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.