claude-dev-env 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +53 -48
- package/_shared/pr-loop/scripts/_claude_permissions_common.py +84 -0
- package/_shared/pr-loop/scripts/code_rules_gate.py +4 -2
- package/_shared/pr-loop/scripts/grant_project_claude_permissions.py +306 -306
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/claude_permissions_constants.py +44 -0
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/copilot_quota_constants.py +24 -24
- package/_shared/pr-loop/scripts/pr_loop_shared_constants/stale_worktree_rule_sweep_constants.py +107 -107
- package/_shared/pr-loop/scripts/revoke_project_claude_permissions.py +290 -48
- package/_shared/pr-loop/scripts/tests/test_claude_permissions_common.py +42 -2
- package/_shared/pr-loop/scripts/tests/test_claude_permissions_constants.py +36 -0
- package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +100 -1
- package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +497 -497
- package/_shared/pr-loop/scripts/tests/test_revoke_project_claude_permissions.py +311 -2
- package/_shared/pr-loop/scripts/tests/test_stale_worktree_rule_sweep.py +301 -301
- package/_shared/pr-loop/scripts/tests/test_stale_worktree_rule_sweep_constants.py +85 -85
- package/_shared/pr-loop/worker-spawn.md +1 -1
- package/agents/CLAUDE.md +3 -1
- package/agents/caveman.md +0 -1
- package/agents/clasp-deployment-orchestrator.md +0 -1
- package/agents/clean-coder.md +0 -1
- package/agents/code-advisor.md +0 -1
- package/agents/code-quality-agent.md +1 -2
- package/agents/code-verifier.md +3 -4
- package/agents/deep-research.md +0 -1
- package/agents/docs-agent.md +0 -1
- package/agents/git-commit-crafter.md +0 -1
- package/agents/issue-tracker.md +42 -0
- package/agents/plan-packet-validator.md +0 -1
- package/agents/pr-description-writer.md +0 -1
- package/agents/skill-writer-agent.md +84 -0
- package/agents/test_agent_frontmatter.py +67 -18
- package/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md +105 -3
- package/audit-rubrics/prompts/category-o-docstring-vs-impl-drift.md +29 -13
- package/bin/CLAUDE.md +68 -5
- package/bin/ever-shipped-skills.mjs +1 -0
- package/bin/install-constants.mjs +88 -0
- package/bin/install.mjs +1138 -114
- package/bin/install.prune.test.mjs +869 -19
- package/bin/install.test.mjs +906 -2
- package/commands/implement.md +1 -1
- package/commands/right-size.md +1 -1
- package/docs/CLAUDE.md +2 -0
- package/docs/host-pool-health-monitor.md +102 -0
- package/docs/references/CLAUDE.md +5 -2
- package/docs/references/advisor-tool.md +13 -0
- package/docs/references/code-review-enforcement.md +107 -0
- package/docs/references/team-advisor-skill.md +14 -0
- package/docs/wsl-docker-cowork-starter-matrix.md +89 -0
- package/hooks/blocking/CLAUDE.md +9 -1
- package/hooks/blocking/code_review_enforcement_config_bootstrap.py +53 -0
- package/hooks/blocking/code_review_gate_deny.py +74 -0
- package/hooks/blocking/code_review_pr_create_gate.py +198 -0
- package/hooks/blocking/code_review_push_gate.py +145 -0
- package/hooks/blocking/code_review_stamp_directory_write_blocker.py +348 -0
- package/hooks/blocking/code_review_stamp_store.py +233 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/__init__.py +7 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/conftest.py +15 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/obfuscated_stamp_path_reference.py +212 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/split_directory_change_into_stamp.py +138 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_obfuscated_stamp_path_reference.py +49 -0
- package/hooks/blocking/code_review_stamp_write_blocker_parts/test_split_directory_change_into_stamp.py +38 -0
- package/hooks/blocking/code_verifier_spawn_preflight_gate.py +39 -27
- package/hooks/blocking/config/__init__.py +5 -5
- package/hooks/blocking/config/code_review_enforcement_constants.py +113 -0
- package/hooks/blocking/config/test_code_review_enforcement_constants.py +113 -0
- package/hooks/blocking/config/verified_commit_constants.py +160 -155
- package/hooks/blocking/conftest.py +2 -0
- package/hooks/blocking/convergence_gate_blocker.py +112 -23
- package/hooks/blocking/destructive_command_blocker.py +19 -6
- package/hooks/blocking/orchestrator_refresh_reschedule_gate.py +256 -0
- package/hooks/blocking/pr_description_proof_of_work.py +52 -34
- package/hooks/blocking/pre_tool_use_dispatcher.py +24 -24
- package/hooks/blocking/test_bash_pre_tool_use_dispatcher.py +4 -1
- package/hooks/blocking/test_code_review_enforcement_config_bootstrap.py +62 -0
- package/hooks/blocking/test_code_review_gate_deny.py +54 -0
- package/hooks/blocking/test_code_review_pr_create_gate.py +199 -0
- package/hooks/blocking/test_code_review_push_gate.py +205 -0
- package/hooks/blocking/test_code_review_stamp_directory_write_blocker.py +199 -0
- package/hooks/blocking/test_code_review_stamp_store.py +205 -0
- package/hooks/blocking/test_code_verifier_spawn_preflight_gate.py +124 -2
- package/hooks/blocking/test_convergence_gate_blocker.py +153 -5
- package/hooks/blocking/test_destructive_command_blocker.py +1 -1
- package/hooks/blocking/test_destructive_command_blocker_deny_mode.py +45 -0
- package/hooks/blocking/test_orchestrator_refresh_reschedule_gate.py +231 -0
- package/hooks/blocking/test_pr_description_proof_of_work.py +151 -0
- package/hooks/blocking/test_pre_tool_use_dispatcher.py +17 -8
- package/hooks/blocking/test_verdict_directory_write_blocker.py +808 -808
- package/hooks/blocking/test_verification_verdict_store.py +974 -903
- package/hooks/blocking/test_verified_commit_gate.py +581 -581
- package/hooks/blocking/test_verified_commit_message_accuracy_blocker.py +131 -131
- package/hooks/blocking/test_volatile_path_in_post_blocker.py +114 -2
- package/hooks/blocking/verdict_directory_write_blocker.py +687 -687
- package/hooks/blocking/verification_verdict_store.py +1039 -1014
- package/hooks/blocking/verified_commit_gate_parts/gated_invocations.py +29 -17
- package/hooks/blocking/verified_commit_gate_parts/tests/test_gated_invocations.py +35 -0
- package/hooks/blocking/verified_commit_message_accuracy_blocker.py +167 -167
- package/hooks/blocking/verifier_verdict_minter.py +280 -280
- package/hooks/blocking/volatile_path_in_post_blocker.py +69 -8
- package/hooks/git-hooks/git_hooks_constants/__init__.py +6 -0
- package/hooks/git-hooks/pre_push.py +89 -2
- package/hooks/git-hooks/test_pre_push.py +128 -0
- package/hooks/hooks.json +26 -1
- package/hooks/hooks_constants/CLAUDE.md +3 -1
- package/hooks/hooks_constants/bash_pre_tool_use_dispatcher_constants.py +8 -0
- package/hooks/hooks_constants/code_rules_path_utils_constants.py +1 -0
- package/hooks/hooks_constants/code_verifier_spawn_preflight_gate_constants.py +26 -11
- package/hooks/hooks_constants/convergence_gate_blocker_constants.py +20 -3
- package/hooks/hooks_constants/destructive_command_segment_constants.py +3 -1
- package/hooks/hooks_constants/enter_worktree_prefetch_constants.py +18 -18
- package/hooks/hooks_constants/orchestrator_refresh_reschedule_gate_constants.py +48 -0
- package/hooks/hooks_constants/pr_description_proof_of_work_constants.py +0 -4
- package/hooks/hooks_constants/pre_tool_use_dispatcher_constants.py +4 -0
- package/hooks/hooks_constants/pyproject_config_discovery_constants.py +16 -0
- package/hooks/hooks_constants/ruff_integration_constants.py +16 -0
- package/hooks/hooks_constants/test_bash_pre_tool_use_dispatcher_constants.py +24 -0
- package/hooks/hooks_constants/test_pre_tool_use_dispatcher_constants.py +6 -0
- package/hooks/hooks_constants/volatile_path_in_post_blocker_constants.py +8 -1
- package/hooks/lifecycle/enter_worktree_origin_prefetch.py +163 -146
- package/hooks/lifecycle/test_enter_worktree_origin_prefetch.py +185 -178
- package/hooks/pyproject.toml +1 -0
- package/hooks/validators/CLAUDE.md +2 -0
- package/hooks/validators/config/__init__.py +0 -0
- package/hooks/validators/config/directory_exemption_constants.py +183 -0
- package/hooks/validators/config/test_directory_exemption_constants.py +21 -0
- package/hooks/validators/conftest.py +4 -0
- package/hooks/validators/mypy_integration.py +63 -50
- package/hooks/validators/pyproject_config_discovery.py +101 -0
- package/hooks/validators/ruff_integration.py +257 -25
- package/hooks/validators/run_all_validators.py +223 -19
- package/hooks/validators/test_directory_exemption_constants.py +185 -0
- package/hooks/validators/test_mypy_integration.py +32 -0
- package/hooks/validators/test_pyproject_config_discovery.py +94 -0
- package/hooks/validators/test_python_antipattern_checks.py +110 -5
- package/hooks/validators/test_ruff_integration.py +160 -2
- package/hooks/validators/test_run_all_validators.py +140 -68
- package/hooks/validators/test_run_all_validators_config_discovery.py +123 -0
- package/hooks/validators/test_run_all_validators_pretooluse.py +159 -1
- package/package.json +10 -2
- package/rules/CLAUDE.md +1 -0
- package/rules/docstring-prose-matches-implementation.md +45 -67
- package/rules/durable-post-artifacts.md +7 -0
- package/rules/state-what-is.md +25 -0
- package/rules/verified-commit-gate-skip.md +1 -1
- package/scripts/CLAUDE.md +1 -0
- package/scripts/Capture-PoolHealth.ps1 +410 -0
- package/scripts/_code_review_test_support.py +404 -0
- package/scripts/claude_chain_runner.py +141 -1
- package/scripts/codec_forwarding_test_support.py +83 -0
- package/scripts/conftest.py +23 -0
- package/scripts/dev_env_scripts_constants/CLAUDE.md +2 -2
- package/scripts/dev_env_scripts_constants/claude_chain_constants.py +53 -1
- package/scripts/dev_env_scripts_constants/code_review_constants.py +129 -12
- package/scripts/dev_env_scripts_constants/test_code_review_constants.py +55 -0
- package/scripts/invoke_code_review.py +550 -38
- package/scripts/resolve_worker_spawn.py +626 -619
- package/scripts/spawn_grok_batch.py +672 -672
- package/scripts/test_claude_chain_runner.py +131 -0
- package/scripts/test_invoke_code_review_chain.py +70 -0
- package/scripts/test_invoke_code_review_cli.py +192 -0
- package/scripts/test_invoke_code_review_codec.py +77 -0
- package/scripts/test_invoke_code_review_contract.py +256 -0
- package/scripts/test_invoke_code_review_git.py +123 -0
- package/scripts/test_invoke_code_review_mode.py +99 -0
- package/scripts/test_resolve_worker_spawn.py +1014 -1014
- package/scripts/test_resolve_worker_spawn_codec.py +101 -0
- package/skills/CLAUDE.md +2 -0
- package/skills/auditing-claude-config/SKILL.md +114 -114
- package/skills/autoconverge/SKILL.md +427 -421
- package/skills/autoconverge/reference/convergence.md +26 -4
- package/skills/autoconverge/reference/multi-pr.md +6 -1
- package/skills/autoconverge/reference/stop-conditions.md +16 -10
- package/skills/autoconverge/workflow/CLAUDE.md +1 -0
- package/skills/autoconverge/workflow/converge.clean-audit.test.mjs +4 -4
- package/skills/autoconverge/workflow/converge.codex-gate.test.mjs +175 -3
- package/skills/autoconverge/workflow/converge.contract.test.mjs +1263 -1244
- package/skills/autoconverge/workflow/converge.mjs +191 -8
- package/skills/autoconverge/workflow/converge.p2-advance.test.mjs +202 -0
- package/skills/autoconverge/workflow/converge_multi.mjs +7 -3
- package/skills/autoconverge/workflow/converge_multi.run-input.test.mjs +5 -0
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a11d903476b803493.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a26213978adeef6fb.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a3def0d15ed9d9110.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a41f41b1b708ee3b7.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a758b880abecc3ff7.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-a8897b89656b1bd16.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-abd463d744a1437bc.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/subagents/workflows/wf_881252e6-700/agent-ad19d027ae8ee1816.jsonl +2 -2
- package/skills/autoconverge/workflow/fixtures/wf_run/workflows/wf_881252e6-700.json +265 -265
- package/skills/closeout/SKILL.md +33 -50
- package/skills/codex-review/scripts/codex_review_scripts_constants/run_constants.py +8 -0
- package/skills/codex-review/scripts/run_codex_review.py +233 -1
- package/skills/codex-review/scripts/test_run_codex_review.py +189 -0
- package/skills/condensing-instructions/SKILL.md +81 -0
- package/skills/copilot-review/SKILL.md +119 -119
- package/skills/e-code-review/SKILL.md +52 -0
- package/skills/e-code-review/reference/fix.md +54 -0
- package/skills/e-code-review/reference/loop.md +43 -0
- package/skills/e-code-review/reference/low.md +57 -0
- package/skills/e-code-review/reference/medium.md +153 -0
- package/skills/e-code-review/reference/xhigh.md +182 -0
- package/skills/e-simplify/SKILL.md +97 -0
- package/skills/fresh-branch/CLAUDE.md +2 -0
- package/skills/fresh-branch/SKILL.md +2 -0
- package/skills/fresh-branch/scripts/create_fresh_branch.py +78 -180
- package/skills/fresh-branch/scripts/fresh_branch_git_commands.py +285 -0
- package/skills/fresh-branch/scripts/fresh_branch_scripts_constants/fresh_branch_cli_constants.py +1 -0
- package/skills/fresh-branch/scripts/pytest.ini +4 -0
- package/skills/fresh-branch/scripts/test_create_fresh_branch.py +98 -0
- package/skills/fresh-branch/scripts/test_fresh_branch_git_commands.py +310 -0
- package/skills/issue-tracker/SKILL.md +92 -0
- package/skills/issue-tracker/reference/epic-and-sub-issue-model.md +55 -0
- package/skills/issue-tracker/reference/handoff-schema.md +64 -0
- package/skills/issue-tracker/reference/operation-matrix.md +41 -0
- package/skills/orchestrator/SKILL.md +162 -21
- package/skills/orchestrator/scripts/status_gate.py +625 -0
- package/skills/orchestrator/scripts/status_gate_constants/__init__.py +1 -0
- package/skills/orchestrator/scripts/status_gate_constants/config/__init__.py +1 -0
- package/skills/orchestrator/scripts/status_gate_constants/config/constants.py +47 -0
- package/skills/orchestrator/scripts/test_status_gate.py +439 -0
- package/skills/orchestrator-refresh/SKILL.md +110 -35
- package/skills/plan-to-pr/SKILL.md +155 -0
- package/skills/plan-to-pr/reference/final-validation-tasks.md +15 -0
- package/skills/plan-to-pr/reference/model-routing.md +36 -0
- package/skills/plan-to-pr/reference/packet-contract.md +43 -0
- package/skills/plan-to-pr/reference/packet-schema.json +57 -0
- package/skills/plan-to-pr/reference/process-inventory.md +22 -0
- package/skills/plan-to-pr/reference/review-loop.md +33 -0
- package/skills/plan-to-pr/reference/run-record.schema.json +27 -0
- package/skills/plan-to-pr/reference/self-audit-tasks.md +15 -0
- package/skills/plan-to-pr/reference/task-seeds.md +14 -0
- package/skills/plan-to-pr/reference/task-ticket.md +38 -0
- package/skills/plan-to-pr/scripts/config/__init__.py +1 -0
- package/skills/plan-to-pr/scripts/config/constants.py +193 -0
- package/skills/plan-to-pr/scripts/create_packet.py +173 -0
- package/skills/plan-to-pr/scripts/test_create_packet.py +102 -0
- package/skills/plan-to-pr/scripts/test_validate_packet.py +256 -0
- package/skills/plan-to-pr/scripts/test_validate_protocol.py +135 -0
- package/skills/plan-to-pr/scripts/test_validate_run.py +158 -0
- package/skills/plan-to-pr/scripts/validate_packet.py +655 -0
- package/skills/plan-to-pr/scripts/validate_protocol.py +622 -0
- package/skills/plan-to-pr/scripts/validate_run.py +173 -0
- package/skills/plan-to-pr/test_skill_contract.py +207 -0
- package/skills/plan-to-pr/test_task_ticket_contract.py +151 -0
- package/skills/pr-converge/SKILL.md +472 -469
- package/skills/pr-converge/reference/examples.md +3 -3
- package/skills/pr-converge/reference/fix-protocol.md +1 -1
- package/skills/pr-converge/reference/ground-rules.md +7 -4
- package/skills/pr-converge/reference/multi-pr-orchestration.md +4 -1
- package/skills/pr-converge/reference/per-tick.md +5 -5
- package/skills/pr-converge/reference/progress-checklist.md +1 -1
- package/skills/pr-converge/scripts/check_convergence_gates.py +279 -279
- package/skills/pr-converge/scripts/test_check_convergence_codex.py +507 -507
- package/skills/pr-converge/scripts/test_check_convergence_gates.py +84 -84
- package/skills/pr-converge/test_step5_host_branch.py +1 -1
- package/skills/pr-fix-protocol/SKILL.md +1 -1
- package/skills/privacy-hygiene/SKILL.md +68 -68
- package/skills/prototype/SKILL.md +86 -0
- package/skills/prototype/reference/honest-limitations.md +23 -0
- package/skills/prototype/reference/promotion-tasks.md +23 -0
- package/skills/prototype/scripts/build_sandbox_settings.py +249 -0
- package/skills/prototype/scripts/conftest.py +15 -0
- package/skills/prototype/scripts/launch_sandbox.py +205 -0
- package/skills/prototype/scripts/probe_sandbox_safety.py +311 -0
- package/skills/prototype/scripts/prototype_scripts_constants/__init__.py +1 -0
- package/skills/prototype/scripts/prototype_scripts_constants/config/__init__.py +0 -0
- package/skills/prototype/scripts/prototype_scripts_constants/config/build_sandbox_settings_constants.py +41 -0
- package/skills/prototype/scripts/prototype_scripts_constants/config/launch_sandbox_constants.py +23 -0
- package/skills/prototype/scripts/prototype_scripts_constants/config/probe_sandbox_safety_constants.py +45 -0
- package/skills/prototype/scripts/prototype_scripts_constants/config/prototype_common_constants.py +10 -0
- package/skills/prototype/scripts/test_build_sandbox_settings.py +275 -0
- package/skills/prototype/scripts/test_launch_sandbox.py +303 -0
- package/skills/prototype/scripts/test_probe_sandbox_safety.py +284 -0
- package/skills/prototype/workflows/promotion.md +27 -0
- package/skills/prototype/workflows/sandbox.md +35 -0
- package/skills/release-notes-html/SKILL.md +164 -0
- package/skills/skill-builder/CLAUDE.md +3 -3
- package/skills/skill-builder/SKILL.md +5 -5
- package/skills/skill-builder/references/CLAUDE.md +1 -1
- package/skills/skill-builder/references/delegation-map.md +3 -3
- package/skills/skill-builder/references/description-field.md +1 -1
- package/skills/skill-builder/references/skill-modularity.md +2 -3
- package/skills/skill-builder/workflows/CLAUDE.md +1 -1
- package/skills/skill-builder/workflows/improve-skill.md +1 -1
- package/skills/skill-builder/workflows/new-skill.md +2 -2
- package/skills/task-build/CLAUDE.md +8 -7
- package/skills/task-build/SKILL.md +16 -8
- package/skills/task-build/reference/tool-routing.md +19 -0
- package/skills/team-advisor/SKILL.md +2 -2
- package/scripts/test_invoke_code_review.py +0 -672
- package/skills/closeout/reference/issue-body-templates.md +0 -108
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
`medium effort → 3+5 angles → 1-vote verify`
|
|
2
|
+
|
|
3
|
+
You are reviewing for **precision** at medium effort: every finding you surface
|
|
4
|
+
should be one a maintainer would act on.
|
|
5
|
+
|
|
6
|
+
## Phase 0 — Gather the diff
|
|
7
|
+
|
|
8
|
+
Run `git diff @{upstream}...HEAD` (or `git diff main...HEAD` / `git diff HEAD~1`
|
|
9
|
+
if there's no upstream) to get the unified diff under review. If there are
|
|
10
|
+
uncommitted changes, or the range diff is empty, also run `git diff HEAD` and
|
|
11
|
+
include the working-tree changes in scope — the review often runs before the
|
|
12
|
+
commit. If a PR number, branch name, or file path was passed as an argument,
|
|
13
|
+
review that target instead. Treat this diff as the review scope.
|
|
14
|
+
|
|
15
|
+
## Phase 1 — Find candidates (3 correctness angles + 3 cleanup angles + 1 altitude angle + 1 conventions angle)
|
|
16
|
+
|
|
17
|
+
Run **8 independent finder angles** via the Agent tool. Each surfaces
|
|
18
|
+
candidate findings with `file`, `line`, a one-line `summary`, and a concrete
|
|
19
|
+
`failure_scenario`. If the Agent tool is not available in your current tool
|
|
20
|
+
set, do not error — perform each angle (and each verification) yourself,
|
|
21
|
+
sequentially, in this context.
|
|
22
|
+
|
|
23
|
+
### Angle A — line-by-line diff scan
|
|
24
|
+
|
|
25
|
+
Read every hunk in the diff, line by line. Then Read the enclosing function for
|
|
26
|
+
each hunk — bugs in unchanged lines of a touched function are in scope (the PR
|
|
27
|
+
re-exposes or fails to fix them). For every line ask: what input, state, timing,
|
|
28
|
+
or platform makes this line wrong? Look for inverted/wrong conditions,
|
|
29
|
+
off-by-one, null/undefined deref, missing `await`, falsy-zero checks,
|
|
30
|
+
wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.
|
|
31
|
+
|
|
32
|
+
### Angle B — removed-behavior auditor
|
|
33
|
+
|
|
34
|
+
For every line the diff DELETES or replaces, name the invariant or behavior it
|
|
35
|
+
enforced, then search the new code for where that invariant is re-established.
|
|
36
|
+
If you can't find it, that's a candidate: a removed guard, a dropped error
|
|
37
|
+
path, a narrowed validation, a deleted test that was covering a real case.
|
|
38
|
+
|
|
39
|
+
### Angle C — cross-file tracer
|
|
40
|
+
|
|
41
|
+
For each function the diff changes, find its callers (Grep for the symbol) and
|
|
42
|
+
check whether the change breaks any call site: a new precondition, a changed
|
|
43
|
+
return shape, a new exception, a timing/ordering dependency. Also check callees:
|
|
44
|
+
does a parallel change in the same PR make a call unsafe?
|
|
45
|
+
|
|
46
|
+
### Reuse
|
|
47
|
+
|
|
48
|
+
The angles above hunt for bugs; this one and the next two hunt for cleanup in
|
|
49
|
+
the changed code. Flag new code that re-implements something the codebase
|
|
50
|
+
already has — Grep shared/utility modules and files adjacent to the change,
|
|
51
|
+
and name the existing helper to call instead.
|
|
52
|
+
|
|
53
|
+
### Simplification
|
|
54
|
+
|
|
55
|
+
Flag unnecessary complexity the diff adds: redundant or derivable state,
|
|
56
|
+
copy-paste with slight variation, deep nesting, dead code left behind. Name
|
|
57
|
+
the simpler form that does the same job.
|
|
58
|
+
|
|
59
|
+
### Efficiency
|
|
60
|
+
|
|
61
|
+
Flag wasted work the diff introduces: redundant computation or repeated I/O,
|
|
62
|
+
independent operations run sequentially, blocking work added to startup or
|
|
63
|
+
hot paths. Also flag long-lived objects built from closures or captured
|
|
64
|
+
environments — they keep the entire enclosing scope alive for the object's
|
|
65
|
+
lifetime (a memory leak when that scope holds large values); prefer a
|
|
66
|
+
class/struct that copies only the fields it needs. Name the cheaper
|
|
67
|
+
alternative.
|
|
68
|
+
|
|
69
|
+
### Altitude
|
|
70
|
+
|
|
71
|
+
Check that each change is implemented at the right depth, not as a fragile
|
|
72
|
+
bandaid. Special cases layered on shared infrastructure are a sign the fix
|
|
73
|
+
isn't deep enough — prefer generalizing the underlying mechanism over adding
|
|
74
|
+
special cases.
|
|
75
|
+
|
|
76
|
+
### Conventions (CLAUDE.md)
|
|
77
|
+
|
|
78
|
+
Find the CLAUDE.md files that govern the changed code: the user-level
|
|
79
|
+
~/.claude/CLAUDE.md, the repo-root CLAUDE.md, plus any CLAUDE.md or
|
|
80
|
+
CLAUDE.local.md in a directory that is an ancestor of a changed file (a
|
|
81
|
+
directory's CLAUDE.md only applies to files at or below it). Read each one
|
|
82
|
+
that exists, then check the diff for clear violations of the rules they state.
|
|
83
|
+
|
|
84
|
+
Only flag a violation when you can quote the exact rule and the exact line
|
|
85
|
+
that breaks it — no style preferences, no vague "spirit of the doc"
|
|
86
|
+
inferences. In the finding, name the CLAUDE.md path and quote the rule so the
|
|
87
|
+
report can cite it. If no CLAUDE.md applies, return nothing for this angle.
|
|
88
|
+
|
|
89
|
+
Cleanup, altitude, and conventions candidates use the same
|
|
90
|
+
`file`/`line`/`summary` shape; in `failure_scenario`, state the concrete
|
|
91
|
+
cost (what is duplicated, wasted, harder to maintain, or which CLAUDE.md rule
|
|
92
|
+
is broken) instead of a crash. Correctness bugs always outrank cleanup,
|
|
93
|
+
altitude, and conventions findings.
|
|
94
|
+
|
|
95
|
+
Pass every candidate with a nameable failure scenario through — finders that
|
|
96
|
+
silently drop half-believed candidates bypass the verify step and are the
|
|
97
|
+
dominant cause of misses.
|
|
98
|
+
|
|
99
|
+
## Phase 2 — Verify (1-vote, 3-state)
|
|
100
|
+
|
|
101
|
+
Dedup candidates that point at the same line/mechanism, keeping the one with
|
|
102
|
+
the most concrete failure scenario. For each remaining candidate, run **one
|
|
103
|
+
verifier** via the Agent tool: give it the diff, the relevant
|
|
104
|
+
file(s), and the candidate, and have it return exactly one of:
|
|
105
|
+
|
|
106
|
+
- **CONFIRMED** — can name the inputs/state that trigger it and the wrong
|
|
107
|
+
output or crash. Quote the line.
|
|
108
|
+
- **PLAUSIBLE** — mechanism is real, trigger is uncertain (timing, env,
|
|
109
|
+
config). State what would confirm it.
|
|
110
|
+
- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere.
|
|
111
|
+
Quote the line that proves it.
|
|
112
|
+
|
|
113
|
+
Keep candidates where the vote is CONFIRMED or PLAUSIBLE.
|
|
114
|
+
|
|
115
|
+
## Output
|
|
116
|
+
|
|
117
|
+
Report this review's results — `{level, findings}` — through the structured
|
|
118
|
+
findings-report call: the mechanism that renders a review's results as a typed
|
|
119
|
+
list in the host UI, ranked most-severe first. Each entry has `file`, `line`,
|
|
120
|
+
`summary`, `short_summary` — the claim compressed to ≤60 characters, no
|
|
121
|
+
rationale or consequence clause — `failure_scenario`, and `category` — a short
|
|
122
|
+
kebab-case slug for the angle that produced it (`correctness`,
|
|
123
|
+
`simplification`, `efficiency`, `reuse`, `altitude`, `conventions`, or a more
|
|
124
|
+
specific slug like `test-coverage` when one fits better) — plus `verdict` when
|
|
125
|
+
a verify pass produced one. If nothing survives verification, make that call
|
|
126
|
+
with an empty array. Do not also print the findings as text, and do not create
|
|
127
|
+
or publish an artifact of the review — the structured call is the report.
|
|
128
|
+
|
|
129
|
+
## Applying fixes (--fix)
|
|
130
|
+
|
|
131
|
+
The `--fix` flag was passed. Follow `reference\fix.md` (relative to this
|
|
132
|
+
skill's folder) for the exact fix, commit-gate, and skip-handling behavior —
|
|
133
|
+
it governs which agent applies each fix, how a fix gets committed, how a skip
|
|
134
|
+
is logged, and how outcomes get reported. Do not repeat the findings as text;
|
|
135
|
+
follow that document's reporting rules once fixes land.
|
|
136
|
+
|
|
137
|
+
## If findings are fixed later
|
|
138
|
+
|
|
139
|
+
Whenever a reported finding is fixed later in this session — the user asks you
|
|
140
|
+
to fix it, or later work fixes it incidentally — follow `reference\fix.md`'s
|
|
141
|
+
reporting rules again: report the same findings through the structured
|
|
142
|
+
findings-report call, each carrying an `outcome`. Do not repeat the findings
|
|
143
|
+
as text. Make that call immediately after the fixes land, before any prose
|
|
144
|
+
summary; the host UI's per-finding status updates only from that call.
|
|
145
|
+
|
|
146
|
+
## Looping (`loop`)
|
|
147
|
+
|
|
148
|
+
The `loop` arg was passed. Follow `reference\loop.md` (relative to this
|
|
149
|
+
skill's folder) for how to re-run Phases 0–2, Output, and (if `--fix` is also
|
|
150
|
+
present) `reference\fix.md`'s fix pass, repeatedly — including its exit
|
|
151
|
+
condition, iteration cap, and re-invocation rules. Do not treat a single pass
|
|
152
|
+
through this document as complete while `loop` is active; hand control to that
|
|
153
|
+
document instead of stopping at Output.
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
`xhigh effort → 5+5 angles → 1-vote verify → sweep`
|
|
2
|
+
|
|
3
|
+
You are reviewing for **recall** at extra-high effort: catch every real bug. At
|
|
4
|
+
this level, catching real bugs matters more than avoiding false positives — a
|
|
5
|
+
missed bug ships. Err on the side of surfacing.
|
|
6
|
+
|
|
7
|
+
## Phase 0 — Gather the diff
|
|
8
|
+
|
|
9
|
+
Run `git diff @{upstream}...HEAD` (or `git diff main...HEAD` / `git diff HEAD~1`
|
|
10
|
+
if there's no upstream) to get the unified diff under review. If there are
|
|
11
|
+
uncommitted changes, or the range diff is empty, also run `git diff HEAD` and
|
|
12
|
+
include the working-tree changes in scope — the review often runs before the
|
|
13
|
+
commit. If a PR number, branch name, or file path was passed as an argument,
|
|
14
|
+
review that target instead. Treat this diff as the review scope.
|
|
15
|
+
|
|
16
|
+
## Phase 1 — Find candidates (5 correctness angles + 3 cleanup angles + 1 altitude angle + 1 conventions angle)
|
|
17
|
+
|
|
18
|
+
Run **10 independent finder angles** via the Agent tool. Each surfaces
|
|
19
|
+
candidate findings. Do NOT let one angle's conclusions suppress another's — if
|
|
20
|
+
two angles flag the same line for different reasons, record both. If the Agent
|
|
21
|
+
tool is not available in your current tool set, do not error — perform each
|
|
22
|
+
angle (and each verification) yourself, sequentially, in this context.
|
|
23
|
+
|
|
24
|
+
### Angle A — line-by-line diff scan
|
|
25
|
+
|
|
26
|
+
Read every hunk in the diff, line by line. Then Read the enclosing function for
|
|
27
|
+
each hunk — bugs in unchanged lines of a touched function are in scope (the PR
|
|
28
|
+
re-exposes or fails to fix them). For every line ask: what input, state, timing,
|
|
29
|
+
or platform makes this line wrong? Look for inverted/wrong conditions,
|
|
30
|
+
off-by-one, null/undefined deref, missing `await`, falsy-zero checks,
|
|
31
|
+
wrong-variable copy-paste, error swallowed in catch, unescaped regex metachars.
|
|
32
|
+
|
|
33
|
+
### Angle B — removed-behavior auditor
|
|
34
|
+
|
|
35
|
+
For every line the diff DELETES or replaces, name the invariant or behavior it
|
|
36
|
+
enforced, then search the new code for where that invariant is re-established.
|
|
37
|
+
If you can't find it, that's a candidate: a removed guard, a dropped error
|
|
38
|
+
path, a narrowed validation, a deleted test that was covering a real case.
|
|
39
|
+
|
|
40
|
+
### Angle C — cross-file tracer
|
|
41
|
+
|
|
42
|
+
For each function the diff changes, find its callers (Grep for the symbol) and
|
|
43
|
+
check whether the change breaks any call site: a new precondition, a changed
|
|
44
|
+
return shape, a new exception, a timing/ordering dependency. Also check callees:
|
|
45
|
+
does a parallel change in the same PR make a call unsafe?
|
|
46
|
+
|
|
47
|
+
### Angle D — language-pitfall specialist
|
|
48
|
+
|
|
49
|
+
Scan for the classic pitfalls of the diff's language/framework — for example:
|
|
50
|
+
JS falsy-zero, `==` coercion, closure-captured loop var; Python mutable default
|
|
51
|
+
args, late-binding closures; Go nil-map write, range-var capture; SQL injection;
|
|
52
|
+
timezone/DST drift; float equality. Flag any instance the diff introduces.
|
|
53
|
+
|
|
54
|
+
### Angle E — wrapper/proxy correctness
|
|
55
|
+
|
|
56
|
+
When the PR adds or modifies a type that wraps another (cache, proxy, decorator,
|
|
57
|
+
adapter): check that every method routes to the wrapped instance and not back
|
|
58
|
+
through a registry/session/global — e.g. a caching provider holding a
|
|
59
|
+
`delegate` field that resolves IDs via `session.get(...)` instead of
|
|
60
|
+
`delegate.get(...)` will re-enter the cache or recurse. Also check that the
|
|
61
|
+
wrapper forwards all the methods the callers actually use.
|
|
62
|
+
|
|
63
|
+
### Reuse
|
|
64
|
+
|
|
65
|
+
The angles above hunt for bugs; this one and the next two hunt for cleanup in
|
|
66
|
+
the changed code. Flag new code that re-implements something the codebase
|
|
67
|
+
already has — Grep shared/utility modules and files adjacent to the change,
|
|
68
|
+
and name the existing helper to call instead.
|
|
69
|
+
|
|
70
|
+
### Simplification
|
|
71
|
+
|
|
72
|
+
Flag unnecessary complexity the diff adds: redundant or derivable state,
|
|
73
|
+
copy-paste with slight variation, deep nesting, dead code left behind. Name
|
|
74
|
+
the simpler form that does the same job.
|
|
75
|
+
|
|
76
|
+
### Efficiency
|
|
77
|
+
|
|
78
|
+
Flag wasted work the diff introduces: redundant computation or repeated I/O,
|
|
79
|
+
independent operations run sequentially, blocking work added to startup or
|
|
80
|
+
hot paths. Also flag long-lived objects built from closures or captured
|
|
81
|
+
environments — they keep the entire enclosing scope alive for the object's
|
|
82
|
+
lifetime (a memory leak when that scope holds large values); prefer a
|
|
83
|
+
class/struct that copies only the fields it needs. Name the cheaper
|
|
84
|
+
alternative.
|
|
85
|
+
|
|
86
|
+
### Altitude
|
|
87
|
+
|
|
88
|
+
Check that each change is implemented at the right depth, not as a fragile
|
|
89
|
+
bandaid. Special cases layered on shared infrastructure are a sign the fix
|
|
90
|
+
isn't deep enough — prefer generalizing the underlying mechanism over adding
|
|
91
|
+
special cases.
|
|
92
|
+
|
|
93
|
+
### Conventions (CLAUDE.md)
|
|
94
|
+
|
|
95
|
+
Find the CLAUDE.md files that govern the changed code: the user-level
|
|
96
|
+
~/.claude/CLAUDE.md, the repo-root CLAUDE.md, plus any CLAUDE.md or
|
|
97
|
+
CLAUDE.local.md in a directory that is an ancestor of a changed file (a
|
|
98
|
+
directory's CLAUDE.md only applies to files at or below it). Read each one
|
|
99
|
+
that exists, then check the diff for clear violations of the rules they state.
|
|
100
|
+
|
|
101
|
+
Only flag a violation when you can quote the exact rule and the exact line
|
|
102
|
+
that breaks it — no style preferences, no vague "spirit of the doc"
|
|
103
|
+
inferences. In the finding, name the CLAUDE.md path and quote the rule so the
|
|
104
|
+
report can cite it. If no CLAUDE.md applies, return nothing for this angle.
|
|
105
|
+
|
|
106
|
+
Cleanup, altitude, and conventions candidates use the same
|
|
107
|
+
`file`/`line`/`summary` shape; in `failure_scenario`, state the concrete
|
|
108
|
+
cost (what is duplicated, wasted, harder to maintain, or which CLAUDE.md rule
|
|
109
|
+
is broken) instead of a crash. Correctness bugs always outrank cleanup,
|
|
110
|
+
altitude, and conventions findings.
|
|
111
|
+
|
|
112
|
+
## Phase 2 — Verify (1-vote, 3-state)
|
|
113
|
+
|
|
114
|
+
Dedup candidates that point at the same line/mechanism, keeping the one with
|
|
115
|
+
the most concrete failure scenario. For each remaining candidate, run **one
|
|
116
|
+
verifier** via the Agent tool: give it the diff, the relevant
|
|
117
|
+
file(s), and the candidate, and have it return exactly one of:
|
|
118
|
+
|
|
119
|
+
- **CONFIRMED** — can name the inputs/state that trigger it and the wrong
|
|
120
|
+
output or crash. Quote the line.
|
|
121
|
+
- **PLAUSIBLE** — mechanism is real, trigger is uncertain (timing, env,
|
|
122
|
+
config). State what would confirm it.
|
|
123
|
+
- **REFUTED** — factually wrong (code doesn't say that) or guarded elsewhere.
|
|
124
|
+
Quote the line that proves it.
|
|
125
|
+
|
|
126
|
+
Keep candidates where the vote is CONFIRMED or PLAUSIBLE.
|
|
127
|
+
|
|
128
|
+
This is recall mode — a single non-REFUTED vote carries the finding. Do NOT
|
|
129
|
+
drop on uncertainty.
|
|
130
|
+
|
|
131
|
+
## Phase 3 — Sweep for gaps
|
|
132
|
+
|
|
133
|
+
Run **one more finder** as a fresh reviewer who has the verified list. Re-read
|
|
134
|
+
the diff and enclosing functions looking ONLY for defects not already listed.
|
|
135
|
+
Do not re-derive or re-confirm anything already there — the job is gaps. Focus
|
|
136
|
+
on what the first pass tends to miss: moved/extracted code that dropped a guard
|
|
137
|
+
or anchor; second-tier footguns (dataclass default evaluated once, `hash()`
|
|
138
|
+
non-determinism, lock-scope shrink, predicate methods with side effects);
|
|
139
|
+
setup/teardown asymmetry in tests; config defaults flipped.
|
|
140
|
+
|
|
141
|
+
Surface additional candidates, each naming a defect not already on the list.
|
|
142
|
+
If nothing new, return an empty sweep — do not pad.
|
|
143
|
+
|
|
144
|
+
## Output
|
|
145
|
+
|
|
146
|
+
Report this review's results — `{level, findings}` — through the structured
|
|
147
|
+
findings-report call: the mechanism that renders a review's results as a typed
|
|
148
|
+
list in the host UI, ranked most-severe first. Each entry has `file`, `line`,
|
|
149
|
+
`summary`, `short_summary` — the claim compressed to ≤60 characters, no
|
|
150
|
+
rationale or consequence clause — `failure_scenario`, and `category` — a short
|
|
151
|
+
kebab-case slug for the angle that produced it (`correctness`,
|
|
152
|
+
`simplification`, `efficiency`, `reuse`, `altitude`, `conventions`, or a more
|
|
153
|
+
specific slug like `test-coverage` when one fits better) — plus `verdict` when
|
|
154
|
+
a verify pass produced one. If nothing survives verification, make that call
|
|
155
|
+
with an empty array. Do not also print the findings as text, and do not create
|
|
156
|
+
or publish an artifact of the review — the structured call is the report.
|
|
157
|
+
|
|
158
|
+
## Applying fixes (--fix)
|
|
159
|
+
|
|
160
|
+
The `--fix` flag was passed. Follow `reference\fix.md` (relative to this
|
|
161
|
+
skill's folder) for the exact fix, commit-gate, and skip-handling behavior —
|
|
162
|
+
it governs which agent applies each fix, how a fix gets committed, how a skip
|
|
163
|
+
is logged, and how outcomes get reported. Do not repeat the findings as text;
|
|
164
|
+
follow that document's reporting rules once fixes land.
|
|
165
|
+
|
|
166
|
+
## If findings are fixed later
|
|
167
|
+
|
|
168
|
+
Whenever a reported finding is fixed later in this session — the user asks you
|
|
169
|
+
to fix it, or later work fixes it incidentally — follow `reference\fix.md`'s
|
|
170
|
+
reporting rules again: report the same findings through the structured
|
|
171
|
+
findings-report call, each carrying an `outcome`. Do not repeat the findings
|
|
172
|
+
as text. Make that call immediately after the fixes land, before any prose
|
|
173
|
+
summary; the host UI's per-finding status updates only from that call.
|
|
174
|
+
|
|
175
|
+
## Looping (`loop`)
|
|
176
|
+
|
|
177
|
+
The `loop` arg was passed. Follow `reference\loop.md` (relative to this
|
|
178
|
+
skill's folder) for how to re-run Phases 0–3, Output, and (if `--fix` is also
|
|
179
|
+
present) `reference\fix.md`'s fix pass, repeatedly — including its exit
|
|
180
|
+
condition, iteration cap, and re-invocation rules. Do not treat a single pass
|
|
181
|
+
through this document as complete while `loop` is active; hand control to that
|
|
182
|
+
document instead of stopping at Output.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: e-simplify
|
|
3
|
+
description: >-
|
|
4
|
+
Cleanup-only pass on the current diff — reuse, simplification, efficiency,
|
|
5
|
+
altitude — that fixes what it finds directly; no correctness-bug hunting.
|
|
6
|
+
Triggers: /e-simplify.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# e-simplify
|
|
10
|
+
|
|
11
|
+
**Core principle:** Four parallel cleanup angles (reuse, simplification, efficiency, altitude) over the current diff, applied directly — not a bug hunt, and not a report.
|
|
12
|
+
|
|
13
|
+
## Gotchas
|
|
14
|
+
|
|
15
|
+
- This skill fixes code quality, not correctness. A request for bug-hunting belongs to `/e-code-review`, not here — see the refusal case below.
|
|
16
|
+
- Applying a fix that changes intended behavior, or that reaches well outside the reviewed diff, is worse than leaving a flagged item unfixed — skip and note it instead of stretching the fix to cover it.
|
|
17
|
+
|
|
18
|
+
## When this skill applies
|
|
19
|
+
|
|
20
|
+
Triggers: `/e-simplify` on the current diff (or a PR/branch/path passed as an argument).
|
|
21
|
+
|
|
22
|
+
**Refusal cases — first match wins:**
|
|
23
|
+
|
|
24
|
+
- **Asked to find correctness bugs (crashes, wrong output, security issues) rather than cleanup.** Respond exactly: `That's a correctness review — use /e-code-review, not this skill.`
|
|
25
|
+
|
|
26
|
+
## The process
|
|
27
|
+
|
|
28
|
+
`/simplify → 4 cleanup agents in parallel → apply the fixes`
|
|
29
|
+
|
|
30
|
+
You are improving the quality of the changed code, not hunting for bugs. Review
|
|
31
|
+
it for reuse, simplification, efficiency, and altitude issues, then fix what you
|
|
32
|
+
find. Do not look for correctness bugs — that is what `/code-review` is for.
|
|
33
|
+
|
|
34
|
+
### Phase 0 — Gather the diff
|
|
35
|
+
|
|
36
|
+
Run `git diff @{upstream}...HEAD` (or `git diff main...HEAD` / `git diff HEAD~1`
|
|
37
|
+
if there's no upstream) to get the unified diff under review. If there are
|
|
38
|
+
uncommitted changes, or the range diff is empty, also run `git diff HEAD` and
|
|
39
|
+
include the working-tree changes in scope — the review often runs before the
|
|
40
|
+
commit. If a PR number, branch name, or file path was passed as an argument,
|
|
41
|
+
review that target instead. Treat this diff as the review scope.
|
|
42
|
+
|
|
43
|
+
### Phase 1 — Review (4 cleanup agents in parallel)
|
|
44
|
+
|
|
45
|
+
Launch **4 independent review agents** via the Agent tool, all in a
|
|
46
|
+
single message so they run concurrently. Pass each agent the diff and one of
|
|
47
|
+
the four angles below. Each returns its findings with `file`, `line`, a
|
|
48
|
+
one-line `summary`, and the concrete cost (what is duplicated, wasted, or
|
|
49
|
+
harder to maintain).
|
|
50
|
+
|
|
51
|
+
#### Reuse
|
|
52
|
+
|
|
53
|
+
Flag new code that re-implements something the codebase
|
|
54
|
+
already has — Grep shared/utility modules and files adjacent to the change,
|
|
55
|
+
and name the existing helper to call instead.
|
|
56
|
+
|
|
57
|
+
#### Simplification
|
|
58
|
+
|
|
59
|
+
Flag unnecessary complexity the diff adds: redundant or derivable state,
|
|
60
|
+
copy-paste with slight variation, deep nesting, dead code left behind. Name
|
|
61
|
+
the simpler form that does the same job.
|
|
62
|
+
|
|
63
|
+
#### Efficiency
|
|
64
|
+
|
|
65
|
+
Flag wasted work the diff introduces: redundant computation or repeated I/O,
|
|
66
|
+
independent operations run sequentially, blocking work added to startup or
|
|
67
|
+
hot paths. Also flag long-lived objects built from closures or captured
|
|
68
|
+
environments — they keep the entire enclosing scope alive for the object's
|
|
69
|
+
lifetime (a memory leak when that scope holds large values); prefer a
|
|
70
|
+
class/struct that copies only the fields it needs. Name the cheaper
|
|
71
|
+
alternative.
|
|
72
|
+
|
|
73
|
+
#### Altitude
|
|
74
|
+
|
|
75
|
+
Check that each change is implemented at the right depth, not as a fragile
|
|
76
|
+
bandaid. Special cases layered on shared infrastructure are a sign the fix
|
|
77
|
+
isn't deep enough — prefer generalizing the underlying mechanism over adding
|
|
78
|
+
special cases.
|
|
79
|
+
|
|
80
|
+
### Phase 2 — Apply the fixes
|
|
81
|
+
|
|
82
|
+
Wait for all four agents to complete, dedup findings that point at the same
|
|
83
|
+
line or mechanism, and fix each remaining one directly. Skip any finding whose
|
|
84
|
+
fix would change intended behavior, require changes well outside the reviewed
|
|
85
|
+
diff, or that you judge to be a false positive — note the skip rather than
|
|
86
|
+
arguing with it. Finish with a brief summary of what was fixed and what was
|
|
87
|
+
skipped (or confirm the code was already clean).
|
|
88
|
+
|
|
89
|
+
## File index
|
|
90
|
+
|
|
91
|
+
| File | Purpose |
|
|
92
|
+
|---|---|
|
|
93
|
+
| `SKILL.md` | This hub — the full cleanup procedure, refusal case |
|
|
94
|
+
|
|
95
|
+
## Folder map
|
|
96
|
+
|
|
97
|
+
- `SKILL.md` — hub: full procedure, refusal case.
|
|
@@ -8,5 +8,7 @@ Creates a new branch from fresh-fetched `origin/main` inside an isolated worktre
|
|
|
8
8
|
|---|---|
|
|
9
9
|
| `SKILL.md` | Phases, checklist, execute-vs-read for the CLI, gotchas |
|
|
10
10
|
| `scripts/create_fresh_branch.py` | Deterministic CLI: fetch base, `git worktree add -b`, JSON stdout |
|
|
11
|
+
| `scripts/fresh_branch_git_commands.py` | Git command helpers: fetch, ref checks, `git worktree add -b --no-track` |
|
|
11
12
|
| `scripts/test_create_fresh_branch.py` | Behavioral tests with temporary git repos |
|
|
13
|
+
| `scripts/test_fresh_branch_git_commands.py` | Behavioral tests for the git command helpers |
|
|
12
14
|
| `scripts/fresh_branch_scripts_constants/` | Constants package (`fresh_branch_cli_constants`) for the CLI |
|
|
@@ -113,7 +113,9 @@ Further edits for the new branch belong in `worktree_path`, not in the caller's
|
|
|
113
113
|
| `SKILL.md` | This hub: phases, checklist, constraints, gotchas |
|
|
114
114
|
| `CLAUDE.md` | Package map for agents browsing the skill folder |
|
|
115
115
|
| `scripts/create_fresh_branch.py` | **Execute** — deterministic fetch + worktree branch CLI |
|
|
116
|
+
| `scripts/fresh_branch_git_commands.py` | Git command helpers behind the CLI (fetch, ref checks, worktree add) |
|
|
116
117
|
| `scripts/test_create_fresh_branch.py` | Real-repo tests for agent/path/CLI behavior |
|
|
118
|
+
| `scripts/test_fresh_branch_git_commands.py` | Real-repo tests for the git command helpers |
|
|
117
119
|
| `scripts/fresh_branch_scripts_constants/` | Named constants for the CLI |
|
|
118
120
|
|
|
119
121
|
## Folder map
|