Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Creates or reviews the required Clean Room preflight goal contract before source discovery, decomposition, attended execution, or unattended execution.
.claude/skills/hashgraph-online-preflight/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 21% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 46% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -28% | 0% |
Create or validate preflight-goal.json before active clean-room artifacts start.
Preflight stops after a canonical preflight-goal.json is created or validated. Do not create behavior specs, handoff packages, skeleton manifests, implementation plans, coverage ledgers, or clean-run-context artifacts during preflight.
Use the canonical clean-room workflow and read skills/clean-room/references/PREFLIGHT.md when collecting missing goal details. Preserve the clean-room boundary: preflight-goal.json is a controller/contaminated-side artifact and must not be placed in clean-role readable roots.
If the user provides output from CLI clean-room-skill init (or npx clean-room-skill@latest init if the binary is not available), check the generated bootstrap scaffold before creating or copying preflight-goal.json: clean-room-bootstrap.json, contaminated/, clean/, the implementation root, quarantine/, target repo .clean-room/README.md, .clean-room/.gitignore, and .clean-room/local-state.json must exist and agree. In the project layout the task root sits at <base>/<project>/tasks/<task-id>/, the implementation root is the shared project-level implementation/, and clean-room-project.json must exist at the project root. Treat target-repo .clean-room/tasks/ as noncanonical unless explicitly configured; active artifacts belong in the external task root. Treat that scaffold as convenience output only; it is not an active preflight-goal.json, init-config.json, task-manifest.json, or clean-run-context.json.
Record these decisions:
intent_confirmation with explicit-user-answer sources for end goal, target stack, and controller mode, plus user-facing summaries of the goal and target stack.The artifact must use the canonical preflight-goal.schema.json shape. Required top-level keys are goal_id, created_at, end_goal, target_stack, license_policy, dependency_policy, compatibility_policy, feature_policy, code_hygiene_policy, output_policy, controller_policy, and open_questions. Completed preflight inputs and unattended contracts also require intent_confirmation.
Reject non-canonical or legacy-shaped preflight artifacts instead of treating them as complete. Do not accept invented fields such as version, created, source, destination, exactness_policy, output_policy.artifact_base, output_policy.contaminated_root, output_policy.clean_root, or output_policy.quarantine_root as substitutes for canonical fields. Report the missing or invalid canonical fields and stop for review.
Attended runs may continue with recorded open_questions, but each blocking question becomes a pause gate before the affected work starts.
Unattended runs require a complete preflight-goal.json with:
controller_policy.mode: "unattended"controller_policy.unattended_allowed_after_preflight: truecontroller_policy.max_iterationsintent_confirmation showing the end goal, target stack, and controller mode came from explicit user answersopen_questionsDo not infer end goal, target language, runtime, framework, package manager, test framework, license, dependency policy, exactness policy, output directory, or feature add/remove policy from source code. If the user's end goal or target stack is unknown, leave blocking open_questions, keep unattended disabled, and do not write runner-ready task-manifest.json or clean-run-context.json.
Use clean-room-skill init or npx clean-room-skill@latest init to create bootstrap scaffolds before this step. Project layout is canonical: ~/Documents/CleanRoom/<project>/tasks/<task-id>/ holds per-task contaminated/, clean/, and quarantine/, while ~/Documents/CleanRoom/<project>/implementation/ is shared by every task in that project. Do not accept hand-created folders as a bootstrap substitute.
Use the preflight CLI (clean-room-skill if installed, or npx clean-room-skill@latest as fallback) only for template creation or validation/copying:
The safest path is clean-room-skill preflight --template for drafts and clean-room-skill preflight --input for completed contracts.
bashclean-room-skill preflight --template --output ~/Documents/CleanRoom/task-xxxxxxxx/contaminated/preflight-goal.json clean-room-skill preflight --input ./preflight-goal.json --output ~/Documents/CleanRoom/task-xxxxxxxx/contaminated/preflight-goal.json clean-room-skill preflight --template --bootstrap ~/Documents/CleanRoom/task-xxxxxxxx clean-room-skill preflight --template --bootstrap ~/Documents/CleanRoom/<project>/tasks/task-xxxxxxxx
--template writes an attended draft with blocking open questions. It does not support unattended mode. Use --input for completed contracts. --bootstrap accepts either the generated task root or clean-room-bootstrap.json, writes to the generated contaminated artifact root after scaffold validation, and requires completed input contracts to match the bootstrap artifact and implementation roots.
Agent 0 must record preflight_goal_ref, preflight_goal_sha256, and the required handoff_sequence in task-manifest.json.
Clean roles receive only the clean-safe goal subset through clean-run-context.json goal_contract plus code_hygiene_policy and optional Agent 4 local commit policy. Do not send the full preflight-goal.json to Agent 1.5, Agent 2, Agent 3, Agent 4, or clean handoff packages.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-11 | fail→pass | 17,526 | 5,789 | -67% | 1 | 1 | 0% | 1,925 | 2,605 | +35% | 0 | 0 | — |
case-16 | fail→pass | 12,645 | 9,883 | -22% | 1 | 1 | 0% | 2,035 | 2,345 | +15% | 0 | 0 | — |
case-01 | fail→fail | 38,860 | 15,990 | -59% | 1 | 1 | 0% | 2,183 | 1,885 | -14% | 0 | 0 | — |
case-02 | fail→fail | 9,190 | 10,472 | +14% | 1 | 1 | 0% | 1,494 | 1,693 | +13% | 0 | 0 | — |
case-03 | pass→fail | 23,404 | 22,961 | -2% | 1 | 1 | 0% | 3,751 | 3,705 | -1% | 0 | 0 | — |
case-04 | pass→fail | 12,590 | 19,135 | +52% | 1 | 1 | 0% | 2,188 | 4,212 | +93% | 0 | 0 | — |
case-05 | pass→fail | 21,539 | 18,571 | -14% | 1 | 1 | 0% | 2,905 | 3,416 | +18% | 0 | 0 | — |
case-06 | fail→fail | 39,385 | 22,650 | -42% | 1 | 1 | 0% | 1,110 | 4,933 | +344% | 0 | 0 | — |
case-07 | pass→pass | 11,886 | 10,224 | -14% | 1 | 1 | 0% | 1,052 | 2,454 | +133% | 0 | 0 | — |
case-08 | pass→pass | 12,266 | 6,158 | -50% | 1 | 1 | 0% | 1,310 | 2,595 | +98% | 0 | 0 | — |
case-09 | fail→pass | 20,050 | 12,609 | -37% | 1 | 1 | 0% | 2,427 | 2,932 | +21% | 0 | 0 | — |
case-10 | fail→pass | 19,851 | 10,023 | -50% | 1 | 1 | 0% | 1,632 | 2,389 | +46% | 0 | 0 | — |
case-12 | fail→pass | 17,217 | 3,599 | -79% | 1 | 1 | 0% | 3,029 | 2,166 | -28% | 0 | 0 | — |
case-13 | fail→pass | 19,596 | 9,112 | -54% | 1 | 1 | 0% | 2,743 | 2,178 | -21% | 0 | 0 | — |
case-14 | fail→pass | 24,212 | 8,289 | -66% | 1 | 1 | 0% | 1,063 | 2,091 | +97% | 0 | 0 | — |
case-15 | fail→pass | 27,207 | 9,567 | -65% | 1 | 1 | 0% | 1,810 | 2,348 | +30% | 0 | 0 | — |
case-17 | fail→pass | 16,610 | 10,800 | -35% | 1 | 1 | 0% | 1,892 | 2,704 | +43% | 0 | 0 | — |
case-18 | fail→pass | 18,362 | 10,867 | -41% | 1 | 1 | 0% | 2,155 | 2,664 | +24% | 0 | 0 | — |
case-19 | pass→pass | 21,419 | 11,273 | -47% | 1 | 1 | 0% | 2,325 | 2,639 | +14% | 0 | 0 | — |
case-20 | fail→pass | 14,505 | 14,126 | -3% | 1 | 1 | 0% | 2,312 | 3,057 | +32% | 0 | 0 | — |
case-21 | pass→pass | 19,466 | 4,876 | -75% | 1 | 1 | 0% | 2,269 | 2,347 | +3% | 0 | 0 | — |
case-22 | fail→pass | 16,610 | 13,740 | -17% | 1 | 1 | 0% | 1,653 | 3,253 | +97% | 0 | 0 | — |
case-23 | pass→pass | 18,227 | 8,200 | -55% | 1 | 1 | 0% | 2,006 | 2,081 | +4% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +39 percentage points is the difference between those two pass rates over the 20 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.