Individual skill
assess
Assess a codebase's readiness for AI agent contributors using the layered contract model, and generate a complexity hotspot SVG treemap (size = LOC, hue = cyclomatic complexity, saturation = recent git churn). TRIGGER when the user types /assess, asks for an AI-readiness review, wants a complexity heatmap or hotspot map, asks 'how complex is this code?', wants migration risk triage, or asks for a codebase snapshot/report. Produces an MD report + SVG that can be opened as a PR in the target repo.
skills/assess/SKILL.md
Source commit 82a6017d2079ff660452106e2f48e3030801feb5
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 5, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 32
- Repository last updated
- Oct 16, 2026
- License
- Apache-2.0
Observed agent integration: claude-code
- agent-skills Repository topic
- agentic-ai Repository topic
- ai-agents Repository topic
- anthropic Repository topic
- claude Repository topic
- claude-code Repository topic
- claude-code-plugin Repository topic
- claude-skills Repository topic
- code-quality Repository topic
- codebase-analysis Repository topic
- legal Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytesSKILL.mdcore · 57,582 bytespyproject.tomlasset · 7,904 bytesreferences/actions-schema.mddoc · 8,612 bytesreferences/consent-lifecycle.mddoc · 6,298 bytesreferences/hotspot-cochange-experiment.mddoc · 11,635 bytesreferences/monorepo-scoping.mddoc · 4,157 bytesreferences/uninstall.mddoc · 4,444 bytesscripts/assess_core.pyruns · 36,950 bytesscripts/assess_emit_workflow.pyruns · 11,714 bytesscripts/assess_finalize.pyruns · 36,004 bytesscripts/assess_gate.pyruns · 13,826 bytesscripts/assess_report.pyruns · 24,175 bytesscripts/complexity-treemap.pyruns · 70,439 bytesscripts/doc-graph-svg.pyruns · 31,175 bytesscripts/lib/README.mddoc · 115,213 bytesscripts/lib/__init__.pyruns · 446 bytesscripts/lib/accretion_ratchet.pyruns · 15,713 bytesscripts/lib/agent_environment.pyruns · 31,067 bytesscripts/lib/agent_harness.pyruns · 26,470 bytesscripts/lib/agent_instructions_grader.pyruns · 27,856 bytesscripts/lib/agent_ops.pyruns · 5,773 bytesscripts/lib/anomaly_detector.pyruns · 3,712 bytesscripts/lib/archetype.pyruns · 16,518 bytesscripts/lib/artifact_schema.pyruns · 3,047 bytesscripts/lib/assess_config.pyruns · 17,025 bytesscripts/lib/badge.pyruns · 8,710 bytesscripts/lib/change_coupling.pyruns · 24,017 bytesscripts/lib/ci_workflow.pyruns · 9,523 bytesscripts/lib/claude_config.pyruns · 22,440 bytesscripts/lib/claude_config_fields.pyruns · 4,158 bytesscripts/lib/command_index.pyruns · 15,275 bytesscripts/lib/command_resolver.pyruns · 32,849 bytesscripts/lib/config_drift.pyruns · 17,986 bytesscripts/lib/context_blocks.pyruns · 16,195 bytesscripts/lib/coupling_analysis.pyruns · 11,225 bytesscripts/lib/coverage_gate.pyruns · 15,558 bytesscripts/lib/coverage_report.pyruns · 8,778 bytesscripts/lib/dart_capabilities.pyruns · 8,980 bytesscripts/lib/dart_complexity.pyruns · 12,738 bytesscripts/lib/decline_markers.pyruns · 7,700 bytesscripts/lib/diff_reliability.pyruns · 6,472 bytesscripts/lib/doc_complexity_join.pyruns · 16,876 bytesscripts/lib/doc_graph.pyruns · 48,442 bytesscripts/lib/doc_graph_layout.pyruns · 5,186 bytesscripts/lib/doc_links.pyruns · 13,734 bytesscripts/lib/doc_provenance.pyruns · 9,401 bytesscripts/lib/doc_staleness.pyruns · 33,606 bytesscripts/lib/evidence_check.pyruns · 14,728 bytesscripts/lib/gap_actions.pyruns · 4,579 bytesscripts/lib/gate_cost.pyruns · 3,901 bytesscripts/lib/generated_files.pyruns · 6,734 bytesscripts/lib/gh_cli.pyruns · 6,400 bytesscripts/lib/git_churn.pyruns · 26,867 bytesscripts/lib/import_credit.pyruns · 17,025 bytesscripts/lib/instruction_budget.pyruns · 7,304 bytesscripts/lib/instruction_claims.pyruns · 19,721 bytesscripts/lib/instruction_content.pyruns · 13,510 bytesscripts/lib/instruction_discovery.pyruns · 18,215 bytesscripts/lib/instruction_files.pyruns · 13,555 bytesscripts/lib/instruction_globs.pyruns · 6,412 bytesscripts/lib/interactivity.pyruns · 4,479 bytesscripts/lib/jvm_capabilities.pyruns · 21,913 bytesscripts/lib/keyhole_signals.pyruns · 71,834 bytesscripts/lib/liveness_scan.pyruns · 35,239 bytesscripts/lib/mutation_cap.pyruns · 7,413 bytesscripts/lib/mutation_refresh.pyruns · 7,851 bytesscripts/lib/ownership_parser.pyruns · 19,846 bytesscripts/lib/promissory_markers.pyruns · 33,188 bytesscripts/lib/python_regions.pyruns · 5,257 bytesscripts/lib/raw_source.pyruns · 16,970 bytesscripts/lib/review_reality.pyruns · 12,092 bytesscripts/lib/run_context_types.pyruns · 21,060 bytesscripts/lib/run_scope.pyruns · 1,911 bytesscripts/lib/run_wiki.pyruns · 13,279 bytesscripts/lib/scan_registry.pyruns · 10,347 bytesscripts/lib/sibling_tests.pyruns · 17,726 bytesscripts/lib/stats_diff.pyruns · 5,801 bytesscripts/lib/structure_drift.pyruns · 31,331 bytesscripts/lib/structure_graph.pyruns · 29,687 bytesscripts/lib/test_focus.pyruns · 16,191 bytesscripts/lib/test_pressure/__init__.pyruns · 2,780 bytesscripts/lib/test_pressure/aggregate.pyruns · 4,808 bytesscripts/lib/test_pressure/common.pyruns · 1,951 bytesscripts/lib/test_pressure/heuristics.pyruns · 19,460 bytesscripts/lib/test_pressure/mutation.pyruns · 24,485 bytesscripts/lib/test_pressure/mutmut3.pyruns · 37,904 bytesscripts/lib/treemap_render.pyruns · 14,758 bytesscripts/lib/understanding_analysis.pyruns · 11,698 bytesscripts/lib/untrusted_hotspot.pyruns · 2,915 bytesscripts/lib/vault_queries.pyruns · 9,692 bytesscripts/lib/wiki_state.pyruns · 7,827 bytesscripts/lib/wiki_writer.pyruns · 44,001 bytessrc/assess_core.pyruns · 36,950 bytessrc/assess_emit_workflow.pyruns · 11,714 bytessrc/assess_finalize.pyruns · 36,004 bytessrc/assess_gate.pyruns · 13,826 bytessrc/assess_report.pyruns · 24,175 bytessrc/complexity-treemap.pyruns · 70,439 bytessrc/doc-graph-svg.pyruns · 31,175 bytessrc/lib/README.mddoc · 115,213 bytessrc/lib/__init__.pyruns · 446 bytessrc/lib/accretion_ratchet.pyruns · 15,713 bytessrc/lib/agent_environment.pyruns · 31,067 bytessrc/lib/agent_harness.pyruns · 26,470 bytessrc/lib/agent_instructions_grader.pyruns · 27,856 bytessrc/lib/agent_ops.pyruns · 5,773 bytessrc/lib/anomaly_detector.pyruns · 3,712 bytessrc/lib/archetype.pyruns · 16,518 bytessrc/lib/artifact_schema.pyruns · 3,047 bytessrc/lib/assess_config.pyruns · 17,025 bytessrc/lib/badge.pyruns · 8,710 bytessrc/lib/change_coupling.pyruns · 24,017 bytessrc/lib/ci_workflow.pyruns · 9,523 bytessrc/lib/claude_config.pyruns · 22,440 bytessrc/lib/claude_config_fields.pyruns · 4,158 bytessrc/lib/command_index.pyruns · 15,275 bytessrc/lib/command_resolver.pyruns · 32,849 bytessrc/lib/config_drift.pyruns · 17,986 bytessrc/lib/context_blocks.pyruns · 16,195 bytessrc/lib/coupling_analysis.pyruns · 11,225 bytessrc/lib/coverage_gate.pyruns · 15,558 bytessrc/lib/coverage_report.pyruns · 8,778 bytessrc/lib/dart_capabilities.pyruns · 8,980 bytessrc/lib/dart_complexity.pyruns · 12,738 bytessrc/lib/decline_markers.pyruns · 7,700 bytessrc/lib/diff_reliability.pyruns · 6,472 bytessrc/lib/doc_complexity_join.pyruns · 16,876 bytessrc/lib/doc_graph.pyruns · 48,442 bytessrc/lib/doc_graph_layout.pyruns · 5,186 bytessrc/lib/doc_links.pyruns · 13,734 bytessrc/lib/doc_provenance.pyruns · 9,401 bytessrc/lib/doc_staleness.pyruns · 33,606 bytessrc/lib/evidence_check.pyruns · 14,728 bytessrc/lib/gap_actions.pyruns · 4,579 bytessrc/lib/gate_cost.pyruns · 3,901 bytessrc/lib/generated_files.pyruns · 6,734 bytessrc/lib/gh_cli.pyruns · 6,400 bytessrc/lib/git_churn.pyruns · 26,867 bytessrc/lib/import_credit.pyruns · 17,025 bytessrc/lib/instruction_budget.pyruns · 7,304 bytessrc/lib/instruction_claims.pyruns · 19,721 bytessrc/lib/instruction_content.pyruns · 13,510 bytessrc/lib/instruction_discovery.pyruns · 18,215 bytessrc/lib/instruction_files.pyruns · 13,555 bytessrc/lib/instruction_globs.pyruns · 6,412 bytessrc/lib/interactivity.pyruns · 4,479 bytessrc/lib/jvm_capabilities.pyruns · 21,913 bytessrc/lib/keyhole_signals.pyruns · 71,834 bytessrc/lib/liveness_scan.pyruns · 35,239 bytessrc/lib/mutation_cap.pyruns · 7,413 bytessrc/lib/mutation_refresh.pyruns · 7,851 bytessrc/lib/ownership_parser.pyruns · 19,846 bytessrc/lib/promissory_markers.pyruns · 33,188 bytessrc/lib/python_regions.pyruns · 5,257 bytessrc/lib/raw_source.pyruns · 16,970 bytessrc/lib/review_reality.pyruns · 12,092 bytessrc/lib/run_context_types.pyruns · 21,060 bytessrc/lib/run_scope.pyruns · 1,911 bytessrc/lib/run_wiki.pyruns · 13,279 bytessrc/lib/scan_registry.pyruns · 10,347 bytessrc/lib/sibling_tests.pyruns · 17,726 bytessrc/lib/stats_diff.pyruns · 5,801 bytessrc/lib/structure_drift.pyruns · 31,331 bytessrc/lib/structure_graph.pyruns · 29,687 bytessrc/lib/test_focus.pyruns · 16,191 bytessrc/lib/test_pressure/__init__.pyruns · 2,780 bytessrc/lib/test_pressure/aggregate.pyruns · 4,808 bytessrc/lib/test_pressure/common.pyruns · 1,951 bytessrc/lib/test_pressure/heuristics.pyruns · 19,460 bytessrc/lib/test_pressure/mutation.pyruns · 24,485 bytessrc/lib/test_pressure/mutmut3.pyruns · 37,904 bytessrc/lib/treemap_render.pyruns · 14,758 bytessrc/lib/understanding_analysis.pyruns · 11,698 bytessrc/lib/untrusted_hotspot.pyruns · 2,915 bytessrc/lib/vault_queries.pyruns · 9,692 bytessrc/lib/wiki_state.pyruns · 7,827 bytessrc/lib/wiki_writer.pyruns · 44,001 bytestemplates/assess-gate.yml.templateasset · 2,281 bytestemplates/hotspot.md.templateasset · 579 bytestemplates/index.md.templateasset · 1,403 bytestemplates/log_entry.md.templateasset · 387 bytestests/README.mddoc · 19,612 bytestests/__init__.pyruns · 0 bytestests/assess_core_helpers.pyruns · 2,020 bytestests/conftest.pyruns · 3,745 bytestests/fixtures/.gitkeepasset · 0 bytestests/fixtures/bad_instructions.mddoc · 210 bytestests/fixtures/claude_config_plugin/.claude-plugin/plugin.jsonasset · 142 bytestests/fixtures/claude_config_plugin/agents/not-loaded.mddoc · 22 bytestests/fixtures/claude_config_plugin/bots/helper.mddoc · 175 bytestests/fixtures/claude_config_plugin/cmds/deploy.mddoc · 108 bytestests/fixtures/claude_config_plugin/commands/not-loaded.mddoc · 73 bytestests/fixtures/coverage.xmlasset · 855 bytestests/fixtures/current_stats.jsonasset · 595 bytestests/fixtures/golden-doc-repo/FIXTURE.mddoc · 2,112 bytestests/fixtures/golden-doc-repo/README.mddoc · 157 bytestests/fixtures/golden-doc-repo/guide.mddoc · 113 bytestests/fixtures/golden-doc-repo/old.mddoc · 120 bytestests/fixtures/golden-doc-repo/src/app.pyruns · 29 bytestests/fixtures/golden-svg-repo/README.mddoc · 2,322 bytestests/fixtures/golden-svg-repo/complex_stable.pyruns · 932 bytestests/fixtures/golden-svg-repo/hot.pyruns · 932 bytestests/fixtures/golden-svg-repo/simple_active.pyruns · 252 bytestests/fixtures/golden-svg-repo/simple_stable.pyruns · 252 bytestests/fixtures/golden/assess-report-baseline.mddoc · 22,164 bytestests/fixtures/golden/decomposition-parity-report.mddoc · 893 bytestests/fixtures/golden/run-context-baseline.jsonasset · 124,826 bytestests/fixtures/good_instructions.mddoc · 664 bytestests/fixtures/hollow_test_repo/src/processor.pyruns · 753 bytestests/fixtures/hollow_test_repo/tests/test_processor.pyruns · 557 bytestests/fixtures/honest_test_repo/src/processor.pyruns · 753 bytestests/fixtures/honest_test_repo/tests/test_processor.pyruns · 546 bytestests/fixtures/instruction_grading/directive_monolith.mddoc · 47,315 bytestests/fixtures/instruction_grading/repo/Makefileruns · 114 bytestests/fixtures/instruction_grading/repo/README.mddoc · 478 bytestests/fixtures/instruction_grading/repo/package.jsonruns · 273 bytestests/fixtures/instruction_grading/repo/src/app.tsruns · 31 bytestests/fixtures/instruction_grading/repo/src/routes/index.tsruns · 26 bytestests/fixtures/instruction_grading/repo/tests/app.test.tsruns · 34 bytestests/fixtures/instruction_grading/verified_commands.mddoc · 1,714 bytestests/fixtures/lcov.infoasset · 113 bytestests/fixtures/lean_with_skills/CLAUDE.mddoc · 1,000 bytestests/fixtures/maven_project/Sample.javaasset · 240 bytestests/fixtures/maven_project/dependency-analyze-output.txtdoc · 794 bytestests/fixtures/maven_project/pom.xmlasset · 2,126 bytestests/fixtures/monolithic_instructions.mddoc · 53,618 bytestests/fixtures/mutmut-junitxml.xmlasset · 1,129 bytestests/fixtures/prior_stats.jsonasset · 601 bytestests/fixtures/structure_drift/ARCHITECTURE_modules.mddoc · 271 bytestests/fixtures/structure_drift/codeowners_emptyasset · 242 bytestests/fixtures/structure_drift/codeowners_mixedasset · 201 bytestests/golden.pyruns · 4,608 bytestests/keyhole_helpers.pyruns · 2,470 bytestests/svg_cascade.pyruns · 2,682 bytestests/test_accretion_ratchet.pyruns · 31,014 bytestests/test_accretion_ratchet_threshold.pyruns · 2,097 bytestests/test_action_contract.pyruns · 7,257 bytestests/test_agent_environment.pyruns · 22,301 bytestests/test_agent_harness.pyruns · 24,507 bytestests/test_agent_instructions_grader.pyruns · 17,946 bytestests/test_agent_ops.pyruns · 4,560 bytestests/test_anomaly_detector.pyruns · 7,588 bytestests/test_archetype.pyruns · 11,335 bytestests/test_assess_config.pyruns · 6,119 bytestests/test_assess_core.pyruns · 30,572 bytestests/test_assess_finalize.pyruns · 51,172 bytestests/test_assess_gate.pyruns · 15,846 bytestests/test_assess_report.pyruns · 27,799 bytestests/test_badge.pyruns · 4,693 bytestests/test_change_coupling.pyruns · 20,387 bytestests/test_ci_workflow.pyruns · 11,378 bytestests/test_claude_config.pyruns · 21,207 bytestests/test_command_index.pyruns · 6,925 bytestests/test_command_resolver.pyruns · 20,748 bytestests/test_complexity_treemap.pyruns · 77,759 bytestests/test_config_drift.pyruns · 21,751 bytestests/test_context_blocks.pyruns · 26,478 bytestests/test_coupling_analysis.pyruns · 9,685 bytestests/test_coverage_gate.pyruns · 11,735 bytestests/test_coverage_report.pyruns · 7,537 bytestests/test_dart_capabilities.pyruns · 10,405 bytestests/test_dart_complexity.pyruns · 4,836 bytestests/test_decline_markers.pyruns · 6,606 bytestests/test_decomposition_parity.pyruns · 5,123 bytestests/test_diff_reliability.pyruns · 7,961 bytestests/test_doc_complexity_join.pyruns · 11,871 bytestests/test_doc_graph.pyruns · 46,286 bytestests/test_doc_graph_layout.pyruns · 5,280 bytestests/test_doc_graph_svg.pyruns · 16,865 bytestests/test_doc_links.pyruns · 3,115 bytestests/test_doc_modularity.pyruns · 3,939 bytestests/test_doc_provenance.pyruns · 4,905 bytestests/test_doc_staleness.pyruns · 34,618 bytestests/test_emit_workflow.pyruns · 13,953 bytestests/test_evidence_check.pyruns · 18,469 bytestests/test_gap_actions.pyruns · 3,517 bytestests/test_gate_cost.pyruns · 6,024 bytestests/test_generated_files.pyruns · 6,951 bytestests/test_git_churn.pyruns · 2,787 bytestests/test_git_commit_info.pyruns · 9,642 bytestests/test_golden_baseline.pyruns · 16,628 bytestests/test_golden_svg_render.pyruns · 14,910 bytestests/test_hotspot_orphan_invariant.pyruns · 13,807 bytestests/test_import_credit.pyruns · 16,113 bytestests/test_instruction_bloat.pyruns · 11,194 bytestests/test_instruction_budget.pyruns · 5,760 bytestests/test_instruction_claims.pyruns · 21,038 bytestests/test_instruction_content.pyruns · 9,488 bytestests/test_instruction_discovery.pyruns · 15,836 bytestests/test_instruction_files.pyruns · 13,015 bytestests/test_instruction_globs.pyruns · 3,389 bytestests/test_interactivity.pyruns · 3,541 bytestests/test_jvm_capabilities.pyruns · 17,075 bytestests/test_keyhole_accretion.pyruns · 6,771 bytestests/test_keyhole_attention.pyruns · 11,375 bytestests/test_keyhole_blocks.pyruns · 3,853 bytestests/test_keyhole_hidden_coupling.pyruns · 20,854 bytestests/test_keyhole_override_contradicts.pyruns · 2,933 bytestests/test_keyhole_render.pyruns · 13,482 bytestests/test_keyhole_suppression.pyruns · 11,604 bytestests/test_keyhole_untrusted_hotspot.pyruns · 2,992 bytestests/test_liveness_scan.pyruns · 21,995 bytestests/test_log_supersede.pyruns · 12,792 bytestests/test_mutation_cap.pyruns · 5,311 bytestests/test_mutation_cap_partial.pyruns · 5,581 bytestests/test_mutation_refresh.pyruns · 18,812 bytestests/test_mutmut3.pyruns · 25,750 bytestests/test_mutmut3_layout.pyruns · 24,516 bytestests/test_mutmut3_runner.pyruns · 16,258 bytestests/test_no_contributions_scan.pyruns · 15,852 bytestests/test_ownership_parser.pyruns · 14,895 bytestests/test_promissory_markers.pyruns · 32,009 bytestests/test_promissory_markers_literals.pyruns · 14,742 bytestests/test_raw_source.pyruns · 15,446 bytestests/test_review_reality.pyruns · 10,089 bytestests/test_run_wiki.pyruns · 28,865 bytestests/test_scan_registry.pyruns · 6,046 bytestests/test_scope.pyruns · 11,567 bytestests/test_scorer_evidence.pyruns · 7,504 bytestests/test_self_architecture.pyruns · 5,513 bytestests/test_self_dogfood.pyruns · 13,470 bytestests/test_sibling_tests.pyruns · 13,003 bytestests/test_smoke.pyruns · 374 bytestests/test_stats_diff.pyruns · 7,187 bytestests/test_structure_drift.pyruns · 36,034 bytestests/test_structure_graph.pyruns · 18,017 bytestests/test_svg_cascade.pyruns · 2,572 bytestests/test_symlink_walks.pyruns · 8,951 bytestests/test_test_focus.pyruns · 21,913 bytestests/test_test_pressure.pyruns · 33,833 bytestests/test_understanding_analysis.pyruns · 11,406 bytestests/test_uninstall.pyruns · 3,125 bytestests/test_vault_queries.pyruns · 4,031 bytestests/test_wiki_state.pyruns · 4,170 bytestests/test_wiki_writer.pyruns · 33,696 bytesuv.lockasset · 187,811 bytes
Read excerpt
# AI Readiness Assessment + Complexity Hotspot
Three artefacts in one pass against a target repo:
1. **Layered contract assessment** - 0-8 score across navigability, runtime liveness, code design, linters, architecture tests, CI, coverage, review bots, and AI project management.
2. **Complexity hotspot SVG** - Codecov-style treemap of the code. Size = LOC. Colour = cyclomatic complexity. Saturation = recent git churn. Vivid red = complex AND active = riskiest to change.
3. **Doc navigability SVG** - a node-graph of the docs. Structure = connectivity (centre = entry, rim = unreachable, dashed ring = orphan, solid edge = link, dotted edge = reference); colour = staleness (vivid red = a frozen doc beside churning code = a *lying map*); size = file length. Folds navigability and the decaying-map signal into one artifact.
Both SVGs are colour-blind-safe by default (OrRd ramp, no red-green).
All land as files inside the target repo. The skill always writes them locally; after writing, **ask the user** whether to open a PR in the target repo with the artefacts.
## The model: truth-pressure, not presence