claude-dev-env 2.4.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 -49
- 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 +2 -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 +0 -1
- 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/test_agent_frontmatter.py +67 -18
- package/audit-rubrics/category_rubrics/category-o-docstring-vs-impl-drift.md +143 -141
- 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 +1 -0
- package/docs/host-pool-health-monitor.md +102 -0
- package/docs/references/CLAUDE.md +4 -2
- package/docs/references/advisor-tool.md +13 -0
- package/docs/references/code-review-enforcement.md +10 -0
- package/docs/references/team-advisor-skill.md +14 -0
- package/hooks/blocking/CLAUDE.md +1 -0
- package/hooks/blocking/code_review_pr_create_gate.py +7 -3
- package/hooks/blocking/code_review_push_gate.py +9 -4
- package/hooks/blocking/code_review_stamp_directory_write_blocker.py +8 -0
- package/hooks/blocking/config/__init__.py +5 -5
- package/hooks/blocking/config/code_review_enforcement_constants.py +4 -1
- package/hooks/blocking/config/test_code_review_enforcement_constants.py +5 -0
- package/hooks/blocking/config/verified_commit_constants.py +160 -159
- package/hooks/blocking/orchestrator_refresh_reschedule_gate.py +256 -0
- package/hooks/blocking/pre_tool_use_dispatcher.py +24 -24
- package/hooks/blocking/test_code_review_pr_create_gate.py +14 -0
- package/hooks/blocking/test_code_review_push_gate.py +16 -0
- package/hooks/blocking/test_code_review_stamp_directory_write_blocker.py +19 -0
- package/hooks/blocking/test_orchestrator_refresh_reschedule_gate.py +231 -0
- package/hooks/blocking/test_pre_tool_use_dispatcher.py +10 -1
- package/hooks/blocking/test_verdict_directory_write_blocker.py +808 -808
- package/hooks/blocking/test_verification_verdict_store.py +54 -0
- 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/verdict_directory_write_blocker.py +687 -687
- package/hooks/blocking/verification_verdict_store.py +1039 -1036
- package/hooks/blocking/verified_commit_message_accuracy_blocker.py +167 -167
- package/hooks/blocking/verifier_verdict_minter.py +280 -280
- package/hooks/git-hooks/test_pre_push.py +25 -0
- package/hooks/hooks.json +10 -0
- package/hooks/hooks_constants/CLAUDE.md +2 -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/ruff_integration_constants.py +16 -0
- 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 +1 -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/ruff_integration.py +49 -5
- package/hooks/validators/run_all_validators.py +206 -9
- package/hooks/validators/test_directory_exemption_constants.py +185 -0
- package/hooks/validators/test_python_antipattern_checks.py +110 -5
- package/hooks/validators/test_ruff_integration.py +92 -1
- package/hooks/validators/test_run_all_validators.py +115 -68
- 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 -44
- 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/conftest.py +16 -1
- package/scripts/dev_env_scripts_constants/CLAUDE.md +1 -1
- package/scripts/dev_env_scripts_constants/claude_chain_constants.py +9 -0
- package/scripts/resolve_worker_spawn.py +626 -626
- 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_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/skills/CLAUDE.md +2 -0
- package/skills/auditing-claude-config/SKILL.md +114 -114
- package/skills/autoconverge/SKILL.md +427 -427
- package/skills/autoconverge/reference/convergence.md +24 -3
- package/skills/autoconverge/workflow/CLAUDE.md +1 -0
- package/skills/autoconverge/workflow/converge.clean-audit.test.mjs +3 -3
- package/skills/autoconverge/workflow/converge.contract.test.mjs +1263 -1263
- package/skills/autoconverge/workflow/converge.mjs +167 -0
- package/skills/autoconverge/workflow/converge.p2-advance.test.mjs +202 -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/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/workflows/promotion.md +1 -1
- package/skills/release-notes-html/SKILL.md +164 -0
- 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/scripts/test_invoke_code_review.py +0 -966
- package/skills/closeout/reference/issue-body-templates.md +0 -108
|
@@ -18,7 +18,7 @@ resets push-invalidated markers per [ground-rules.md](ground-rules.md) /
|
|
|
18
18
|
at 270s, re-runs the sweep next tick]
|
|
19
19
|
</example>
|
|
20
20
|
|
|
21
|
-
<example> CODE_REVIEW tick, static sweep clean, `/code-review
|
|
21
|
+
<example> CODE_REVIEW tick, static sweep clean, `/code-review ultra --fix`
|
|
22
22
|
applies fixes to the working tree. Claude: [commits the applied fixes in one
|
|
23
23
|
commit, pushes, resets push-invalidated markers per
|
|
24
24
|
[ground-rules.md](ground-rules.md) / [state-schema.md](state-schema.md) (all
|
|
@@ -26,7 +26,7 @@ commit, pushes, resets push-invalidated markers per
|
|
|
26
26
|
stays `phase = CODE_REVIEW`, Step 4 at 270s, returns]
|
|
27
27
|
</example>
|
|
28
28
|
|
|
29
|
-
<example> CODE_REVIEW tick, static sweep clean and `/code-review
|
|
29
|
+
<example> CODE_REVIEW tick, static sweep clean and `/code-review ultra --fix`
|
|
30
30
|
clean (no changes applied). Claude: [sets `code_review_clean_at = HEAD`,
|
|
31
31
|
`phase = BUGTEAM`, runs `Skill({skill: "bugteam", ...})` in same tick]
|
|
32
32
|
</example>
|
|
@@ -94,7 +94,7 @@ applies **Convergence** from `workflows/schedule-wakeup-loop.md`]
|
|
|
94
94
|
|
|
95
95
|
<example> CODE_REVIEW tick, review body says "found 3 potential issues"
|
|
96
96
|
against HEAD (a stale prior finding) but the diff is clean. Claude: [the static
|
|
97
|
-
sweep and `/code-review
|
|
97
|
+
sweep and `/code-review ultra --fix` both pass, sets `code_review_clean_at =
|
|
98
98
|
HEAD`, `phase = BUGTEAM`]
|
|
99
99
|
</example>
|
|
100
100
|
|
|
@@ -32,6 +32,6 @@ files during fix phase in multi-PR mode.
|
|
|
32
32
|
regardless of phase. A new commit **resets the full convergence cycle**: a
|
|
33
33
|
code-review clean, a bugteam clean, and a Bugbot clean on an older SHA do
|
|
34
34
|
**not** count toward convergence on the new `HEAD`. Re-run the static sweep and
|
|
35
|
-
`/code-review
|
|
35
|
+
`/code-review ultra --fix` on `current_head`, then bugteam, then the terminal
|
|
36
36
|
Bugbot gate, all on the same `HEAD` with no intervening push. Re-entering in the
|
|
37
37
|
same tick saves a wakeup cycle.
|
|
@@ -10,11 +10,14 @@
|
|
|
10
10
|
- **All `*_clean_at`, `merge_state_status`, and `bugbot_down` / `codex_down` reset on every push.**
|
|
11
11
|
- **`bugbot run` comment is load-bearing.** Literal phrase exactly —
|
|
12
12
|
empirically the only re-trigger Cursor Bugbot recognizes.
|
|
13
|
-
- **Production edits go through `clean-coder`, except `/code-review
|
|
13
|
+
- **Production edits go through `clean-coder`, except `/code-review ultra --fix`.**
|
|
14
14
|
The lead never hand-edits production files. Every bugbot, bugteam,
|
|
15
|
-
Copilot, or Claude finding spawns `Agent(subagent_type="clean-coder"
|
|
15
|
+
Copilot, or Claude finding spawns `Agent(subagent_type="clean-coder",
|
|
16
|
+
model="sonnet")` — worker-model routing per
|
|
17
|
+
[`skills/orchestrator/SKILL.md`](../../orchestrator/SKILL.md#workflow-agent-routing);
|
|
18
|
+
resolver-supplied sonnet-equivalent on third-party hosts — to
|
|
16
19
|
apply the fix. The CODE_REVIEW phase is the one exception: `/code-review
|
|
17
|
-
|
|
20
|
+
ultra --fix` applies its own findings to the working tree, which the next
|
|
18
21
|
CODE_REVIEW/BUGTEAM cycle re-reviews after the loop resets.
|
|
19
22
|
- **Adapt when reality contradicts on-disk state.** If `state.json`,
|
|
20
23
|
`git`, or `gh` disagree with live PR, escalate as hard blocker per
|
|
@@ -22,7 +25,7 @@
|
|
|
22
25
|
- **Cross-repo cwd routing is routine, not a fork.** When the PR under
|
|
23
26
|
convergence lives in a different repo than the session is rooted in, route
|
|
24
27
|
the working directory into a checkout of the PR's repo automatically —
|
|
25
|
-
`/code-review
|
|
28
|
+
`/code-review ultra --fix`, `git`, and every `clean-coder` fix spawn act on the
|
|
26
29
|
repo of the current working directory. The resolution is fixed
|
|
27
30
|
([per-tick.md § Step 1.5](per-tick.md)): resolve the PR worktree, `cd` into
|
|
28
31
|
it, run local work there. Do not pause, ask, or raise it as a material fork.
|
|
@@ -108,7 +108,10 @@ one agent per PR in single parallel message. Never process any PR inline.
|
|
|
108
108
|
Bugfind subagent completes (findings or clean):
|
|
109
109
|
|
|
110
110
|
- **PRs with findings:** spawn one fix worker per PR via
|
|
111
|
-
`Agent(subagent_type="clean-coder", run_in_background=true
|
|
111
|
+
`Agent(subagent_type="clean-coder", run_in_background=true,
|
|
112
|
+
model="sonnet")` — worker-model routing per
|
|
113
|
+
[`skills/orchestrator/SKILL.md`](../../orchestrator/SKILL.md#workflow-agent-routing);
|
|
114
|
+
resolver-supplied sonnet-equivalent on third-party hosts. Worker:
|
|
112
115
|
1. Reads outcomes XML.
|
|
113
116
|
2. Applies TDD fixes (test first, then production).
|
|
114
117
|
3. Commits, pushes one fix commit.
|
|
@@ -71,7 +71,7 @@ Capture `number`, `head.sha` (= `current_head`), owner/repo, branch.
|
|
|
71
71
|
|
|
72
72
|
The **PR worktree** is the local working tree of the PR's repo on its head
|
|
73
73
|
branch. Every local operation this tick runs there: the CODE_REVIEW static sweep
|
|
74
|
-
and `/code-review
|
|
74
|
+
and `/code-review ultra --fix`, every `clean-coder` fix spawn, and every commit and
|
|
75
75
|
push. `/code-review` and `git` both act on the repo of the current working
|
|
76
76
|
directory, so the working directory must be the PR worktree before any local
|
|
77
77
|
work begins. Re-resolve it every tick — a rebase or a fresh HEAD can move the
|
|
@@ -180,7 +180,7 @@ CODE_REVIEW.
|
|
|
180
180
|
### `phase == CODE_REVIEW`
|
|
181
181
|
|
|
182
182
|
The entry phase of every convergence tick, re-entered after any fix push. It runs
|
|
183
|
-
a deterministic static sweep, then the built-in `/code-review
|
|
183
|
+
a deterministic static sweep, then the built-in `/code-review ultra --fix` on the
|
|
184
184
|
full `origin/main...HEAD` diff at effort high on model opus. `/code-review`
|
|
185
185
|
produces no GitHub review artifact, so there are no code-review threads to
|
|
186
186
|
resolve.
|
|
@@ -196,7 +196,7 @@ a. **Static sweep — runs first, before `/code-review`.** Run the deterministic
|
|
|
196
196
|
`phase = CODE_REVIEW`, and re-run the sweep. When the sweep is clean, run
|
|
197
197
|
the host-aware review below.
|
|
198
198
|
|
|
199
|
-
b. Run the built-in `/code-review
|
|
199
|
+
b. Run the built-in `/code-review ultra --fix` with OPUS on the FULL `origin/main...HEAD`
|
|
200
200
|
diff — every file the PR touches — via the
|
|
201
201
|
[local diff review](https://code.claude.com/docs/en/code-review#review-a-diff-locally).
|
|
202
202
|
The review always runs at effort high on model opus. It reviews the diff and
|
|
@@ -231,14 +231,14 @@ b. Run the built-in `/code-review xhigh --fix` with OPUS on the FULL `origin/mai
|
|
|
231
231
|
Match the first mode whose predicate holds:
|
|
232
232
|
|
|
233
233
|
- **`mode == "in_session"`** (Claude host and session model is opus): run
|
|
234
|
-
`/code-review
|
|
234
|
+
`/code-review ultra --fix` with OPUS in this session with no path arguments so it
|
|
235
235
|
audits the whole branch diff against `origin/main`. After it returns, a
|
|
236
236
|
non-empty `git status --porcelain` means fixes applied (`dirty_tree`
|
|
237
237
|
equivalent). Treat a failed in-session slash command the same as a failed
|
|
238
238
|
review: do not set `code_review_clean_at`.
|
|
239
239
|
- **`mode == "chain"`** (any other host, or a Claude session on any model
|
|
240
240
|
other than opus): the helper already ran the headless review
|
|
241
|
-
(`claude -p "/code-review
|
|
241
|
+
(`claude -p "/code-review ultra --fix" --model opus` through the chain
|
|
242
242
|
runner) with cwd set to the PR worktree. Read `returncode`,
|
|
243
243
|
`served_command`, and `dirty_tree` from the JSON. A successful serve is
|
|
244
244
|
`returncode == 0` with a non-null `served_command`. `dirty_tree` true
|
|
@@ -91,7 +91,7 @@ round as converged. This rule holds every tick, every loop, every PR.
|
|
|
91
91
|
- [ ] **Static sweep fails** → apply shared fix protocol → push → reset markers
|
|
92
92
|
→ stay CODE_REVIEW → Step 5
|
|
93
93
|
- [ ] **`mode == in_session`** (Claude host, session model opus) → run
|
|
94
|
-
`/code-review
|
|
94
|
+
`/code-review ultra --fix` in-session (no path args)
|
|
95
95
|
- [ ] **`mode == chain`** (any other host or non-opus session) → helper
|
|
96
96
|
already ran the headless review; read `returncode`,
|
|
97
97
|
`served_command`, and `dirty_tree` from JSON
|