claude-dev-env 1.93.1 → 1.95.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/_shared/advisor/CLAUDE.md +2 -2
- package/_shared/advisor/advisor-protocol.md +35 -27
- package/_shared/advisor/scripts/config/advisor_scripts_constants/model_tier_run_validator_constants.py +3 -2
- package/_shared/advisor/scripts/model_tier_run_validator.py +23 -15
- package/_shared/advisor/scripts/tests/test_model_tier_run_validator.py +81 -17
- package/_shared/pr-loop/CLAUDE.md +1 -0
- package/_shared/pr-loop/audit-contract.md +1 -1
- package/_shared/pr-loop/gh-payloads.md +3 -3
- package/_shared/pr-loop/post-audit-thread-contract.md +51 -0
- package/_shared/pr-loop/scripts/README.md +2 -2
- package/_shared/pr-loop/scripts/fix_hookspath.py +47 -12
- package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +0 -69
- package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +497 -374
- package/_shared/pr-loop/state-schema.md +3 -22
- package/bin/CLAUDE.md +11 -2
- package/bin/ever-shipped-skills.mjs +70 -0
- package/bin/install.mjs +138 -13
- package/bin/install.prune.test.mjs +457 -0
- package/bin/install.test.mjs +10 -4
- package/docs/CODE_RULES.md +1 -1
- package/hooks/blocking/CLAUDE.md +2 -0
- package/hooks/blocking/code_rules_enforcer.py +4 -0
- package/hooks/blocking/code_rules_shared.py +82 -0
- package/hooks/blocking/code_rules_test_layout.py +9 -3
- package/hooks/blocking/pii_commit_command.py +398 -0
- package/hooks/blocking/pii_payload_scan.py +133 -0
- package/hooks/blocking/pii_prevention_blocker.py +151 -449
- package/hooks/blocking/plain_language_blocker.py +138 -4
- package/hooks/blocking/sensitive_file_protector.py +114 -48
- package/hooks/blocking/tdd_enforcer.py +9 -2
- package/hooks/blocking/test_code_rules_enforcer_scratchpad.py +105 -0
- package/hooks/blocking/test_code_rules_shared.py +181 -0
- package/hooks/blocking/test_pii_prevention_blocker.py +299 -0
- package/hooks/blocking/test_plain_language_blocker_allowlist.py +184 -0
- package/hooks/blocking/test_sensitive_file_protector.py +185 -0
- package/hooks/blocking/test_tdd_enforcer_scratchpad.py +105 -0
- package/hooks/blocking/test_verdict_directory_write_blocker.py +42 -7
- package/hooks/hooks_constants/CLAUDE.md +4 -2
- package/hooks/hooks_constants/code_rules_path_utils_constants.py +0 -2
- package/hooks/hooks_constants/harness_scratchpad_constants.py +17 -0
- package/hooks/hooks_constants/local_identity.py +65 -15
- package/hooks/hooks_constants/pii_prevention_constants.py +16 -0
- package/hooks/hooks_constants/plain_language_blocker_constants.py +5 -0
- package/hooks/hooks_constants/pr_description_enforcer_constants.py +1 -1
- package/hooks/hooks_constants/sensitive_file_protector_constants.py +42 -0
- package/hooks/hooks_constants/test_local_identity.py +68 -0
- package/hooks/pyproject.toml +75 -4
- package/hooks/validators/CLAUDE.md +1 -1
- package/hooks/validators/README.md +2 -0
- package/hooks/validators/python_style_checks.py +114 -136
- package/hooks/validators/python_style_helpers.py +95 -0
- package/hooks/validators/test_python_style_checks.py +0 -164
- package/hooks/validators/test_python_style_checks_decorator_gap.py +119 -0
- package/hooks/validators/test_python_style_fixes.py +251 -0
- package/hooks/validators/test_python_style_helpers.py +125 -0
- package/package.json +1 -1
- package/rules/CLAUDE.md +1 -0
- package/rules/anti-corollary-tests.md +69 -0
- package/rules/bdd.md +1 -3
- package/rules/code-reviews.md +1 -1
- package/rules/gh-paginate.md +1 -1
- package/rules/plain-language.md +2 -0
- package/scripts/CLAUDE.md +10 -1
- package/scripts/Get-SessionAccount.ps1 +210 -0
- package/scripts/tests/CLAUDE.md +15 -1
- package/scripts/tests/Get-SessionAccount.Tests.ps1 +350 -0
- package/skills/CLAUDE.md +6 -27
- package/skills/anthropic-plan/SKILL.md +1 -13
- package/skills/autoconverge/CLAUDE.md +5 -2
- package/skills/autoconverge/SKILL.md +112 -387
- package/skills/autoconverge/reference/CLAUDE.md +4 -1
- package/skills/autoconverge/reference/closing-report.md +9 -2
- package/skills/autoconverge/reference/convergence.md +26 -22
- package/skills/autoconverge/reference/headless-safety.md +44 -0
- package/skills/autoconverge/reference/multi-pr.md +88 -0
- package/skills/autoconverge/reference/self-closing-loop.md +84 -0
- package/skills/autoconverge/reference/stop-conditions.md +21 -13
- package/skills/autoconverge/workflow/converge.clean-audit.test.mjs +87 -27
- package/skills/autoconverge/workflow/converge.contract.test.mjs +40 -10
- package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +179 -47
- package/skills/autoconverge/workflow/converge.fix-progress.test.mjs +1 -1
- package/skills/autoconverge/workflow/converge.mjs +286 -96
- package/skills/bugteam/CLAUDE.md +1 -1
- package/skills/bugteam/CONSTRAINTS.md +3 -3
- package/skills/bugteam/PROMPTS.md +8 -19
- package/skills/bugteam/SKILL.md +13 -14
- package/skills/bugteam/reference/CLAUDE.md +1 -1
- package/skills/bugteam/reference/README.md +2 -3
- package/skills/bugteam/reference/audit-and-teammates.md +2 -2
- package/skills/bugteam/reference/copilot-gap-analysis.md +2 -0
- package/skills/bugteam/reference/github-pr-reviews.md +56 -38
- package/skills/bugteam/reference/team-setup.md +11 -11
- package/skills/bugteam/scripts/CLAUDE.md +6 -6
- package/skills/bugteam/scripts/README.md +20 -8
- package/skills/bugteam/scripts/bugteam_code_rules_gate.py +13 -1463
- package/skills/bugteam/scripts/bugteam_fix_hookspath.py +23 -358
- package/skills/bugteam/scripts/bugteam_preflight.py +13 -315
- package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +2 -3
- package/skills/bugteam/scripts/test_bugteam_code_rules_gate.py +34 -1053
- package/skills/bugteam/scripts/test_bugteam_fix_hookspath.py +30 -347
- package/skills/bugteam/scripts/test_bugteam_preflight.py +30 -305
- package/skills/closeout/SKILL.md +153 -0
- package/skills/closeout/reference/handoff-prompt-template.md +72 -0
- package/skills/closeout/reference/issue-body-templates.md +108 -0
- package/skills/closeout/reference/pii-redaction-checklist.md +36 -0
- package/skills/copilot-finding-triage/SKILL.md +80 -28
- package/skills/copilot-finding-triage/reference/tier-rubric.md +70 -11
- package/skills/copilot-finding-triage/templates/notification.md +8 -3
- package/skills/everything-search/SKILL.md +1 -2
- package/skills/grokify/SKILL.md +58 -0
- package/skills/grokify/templates/handoff-template.md +92 -0
- package/skills/orchestrator/SKILL.md +35 -25
- package/skills/orchestrator-refresh/SKILL.md +15 -11
- package/skills/pr-converge/CLAUDE.md +1 -1
- package/skills/pr-converge/SKILL.md +132 -233
- package/skills/pr-converge/reference/convergence-gates.md +102 -66
- package/skills/pr-converge/reference/examples.md +37 -25
- package/skills/pr-converge/reference/fix-protocol.md +7 -7
- package/skills/pr-converge/reference/multi-pr-orchestration.md +10 -4
- package/skills/pr-converge/reference/per-tick.md +64 -41
- package/skills/pr-converge/reference/state-schema.md +27 -2
- package/skills/pr-converge/scripts/CLAUDE.md +8 -0
- package/skills/pr-converge/scripts/README.md +4 -3
- package/skills/pr-converge/scripts/_pr_converge_path_setup.py +23 -0
- package/skills/pr-converge/scripts/check_convergence.py +189 -645
- package/skills/pr-converge/scripts/check_convergence_gates.py +235 -0
- package/skills/pr-converge/scripts/check_convergence_thread_gates.py +219 -0
- package/skills/pr-converge/scripts/conftest.py +8 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -0
- package/skills/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +36 -0
- package/skills/pr-converge/scripts/test__pr_converge_path_setup.py +26 -0
- package/skills/pr-converge/scripts/test_check_convergence.py +73 -228
- package/skills/pr-converge/scripts/test_check_convergence_contract.py +321 -0
- package/skills/pr-converge/scripts/test_check_convergence_gates.py +68 -0
- package/skills/pr-converge/scripts/test_check_convergence_thread_gates.py +75 -0
- package/skills/pr-fix-protocol/SKILL.md +20 -20
- package/skills/privacy-hygiene/SKILL.md +4 -3
- package/skills/reviewer-gates/SKILL.md +26 -8
- package/skills/session-log/SKILL.md +11 -12
- package/skills/session-tidy/SKILL.md +40 -30
- package/skills/skill-builder/CLAUDE.md +13 -10
- package/skills/skill-builder/SKILL.md +31 -31
- package/skills/skill-builder/references/CLAUDE.md +10 -6
- package/skills/skill-builder/references/delegation-map.md +13 -4
- package/skills/skill-builder/references/description-field.md +113 -0
- package/skills/skill-builder/references/self-audit-checklist.md +21 -4
- package/skills/skill-builder/references/skill-modularity.md +113 -0
- package/skills/skill-builder/references/skill-types.md +4 -0
- package/skills/skill-builder/templates/CLAUDE.md +4 -4
- package/skills/skill-builder/templates/gap-analysis.md +25 -1
- package/skills/skill-builder/workflows/CLAUDE.md +6 -4
- package/skills/skill-builder/workflows/improve-skill.md +17 -16
- package/skills/skill-builder/workflows/new-skill.md +34 -10
- package/skills/skill-builder/workflows/polish-skill.md +59 -43
- package/skills/team-advisor/SKILL.md +15 -11
- package/skills/usage-pause/SKILL.md +10 -14
- package/system-prompts/software-engineer.xml +7 -6
- package/hooks/validators/test_verify_paths.py +0 -32
- package/hooks/validators/verify_paths.py +0 -57
- package/skills/bdd-protocol/CLAUDE.md +0 -26
- package/skills/bdd-protocol/SKILL.md +0 -30
- package/skills/bdd-protocol/references/CLAUDE.md +0 -10
- package/skills/bdd-protocol/references/anti-patterns.md +0 -26
- package/skills/bdd-protocol/references/example-mapping.md +0 -23
- package/skills/bg-agent/CLAUDE.md +0 -17
- package/skills/bg-agent/SKILL.md +0 -69
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_code_rules_gate_constants.py +0 -55
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_fix_hookspath_constants.py +0 -26
- package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_preflight_constants.py +0 -35
- package/skills/caveman/CLAUDE.md +0 -15
- package/skills/caveman/SKILL.md +0 -38
- package/skills/code/CLAUDE.md +0 -17
- package/skills/code/SKILL.md +0 -178
- package/skills/deep-research/CLAUDE.md +0 -17
- package/skills/deep-research/SKILL.md +0 -80
- package/skills/findbugs/CLAUDE.md +0 -20
- package/skills/findbugs/SKILL.md +0 -241
- package/skills/fixbugs/CLAUDE.md +0 -19
- package/skills/fixbugs/SKILL.md +0 -142
- package/skills/gh-paginate/CLAUDE.md +0 -18
- package/skills/gh-paginate/SKILL.md +0 -84
- package/skills/gotcha/CLAUDE.md +0 -33
- package/skills/gotcha/SKILL.md +0 -73
- package/skills/implement/CLAUDE.md +0 -27
- package/skills/implement/SKILL.md +0 -66
- package/skills/implement/scripts/CLAUDE.md +0 -22
- package/skills/implement/scripts/append_note.py +0 -133
- package/skills/implement/scripts/implement_scripts_constants/CLAUDE.md +0 -22
- package/skills/implement/scripts/implement_scripts_constants/__init__.py +0 -0
- package/skills/implement/scripts/implement_scripts_constants/notes_constants.py +0 -12
- package/skills/implement/scripts/test_append_note.py +0 -191
- package/skills/log-audit/CLAUDE.md +0 -20
- package/skills/log-audit/SKILL.md +0 -66
- package/skills/log-audit/reference/CLAUDE.md +0 -9
- package/skills/log-audit/reference/charter.md +0 -52
- package/skills/log-audit/scripts/CLAUDE.md +0 -27
- package/skills/log-audit/scripts/cluster_recurrences.py +0 -261
- package/skills/log-audit/scripts/collect_log_window.py +0 -199
- package/skills/log-audit/scripts/log_audit_constants/CLAUDE.md +0 -12
- package/skills/log-audit/scripts/log_audit_constants/__init__.py +0 -0
- package/skills/log-audit/scripts/log_audit_constants/cluster_recurrences_constants.py +0 -23
- package/skills/log-audit/scripts/log_audit_constants/collect_log_window_constants.py +0 -24
- package/skills/log-audit/scripts/log_audit_constants/mine_copilot_findings_constants.py +0 -49
- package/skills/log-audit/scripts/mine_copilot_findings.py +0 -302
- package/skills/log-audit/scripts/test_cluster_recurrences.py +0 -160
- package/skills/log-audit/scripts/test_collect_log_window.py +0 -111
- package/skills/log-audit/scripts/test_mine_copilot_findings.py +0 -126
- package/skills/logifix/CLAUDE.md +0 -36
- package/skills/logifix/SKILL.md +0 -69
- package/skills/logifix/scripts/CLAUDE.md +0 -16
- package/skills/logifix/scripts/logifix.ps1 +0 -205
- package/skills/monitor-open-prs/CLAUDE.md +0 -34
- package/skills/monitor-open-prs/SKILL.md +0 -88
- package/skills/monitor-open-prs/scripts/CLAUDE.md +0 -17
- package/skills/monitor-open-prs/scripts/discover_open_prs.py +0 -69
- package/skills/monitor-open-prs/scripts/test_discover_open_prs.py +0 -149
- package/skills/monitor-open-prs/test_skill_contract.py +0 -27
- package/skills/post-audit-findings/SKILL.md +0 -80
- package/skills/pr-consistency-audit/CLAUDE.md +0 -34
- package/skills/pr-consistency-audit/SKILL.md +0 -116
- package/skills/pr-consistency-audit/reference/CLAUDE.md +0 -16
- package/skills/pr-consistency-audit/reference/detection-rules.md +0 -96
- package/skills/pr-consistency-audit/reference/illustrations.md +0 -78
- package/skills/pr-review-responder/CLAUDE.md +0 -35
- package/skills/pr-review-responder/EXAMPLES.md +0 -590
- package/skills/pr-review-responder/PRINCIPLES.md +0 -533
- package/skills/pr-review-responder/README.md +0 -168
- package/skills/pr-review-responder/SKILL.md +0 -203
- package/skills/pr-review-responder/TESTING.md +0 -350
- package/skills/pr-scope-resolve/SKILL.md +0 -45
- package/skills/pre-compact/CLAUDE.md +0 -24
- package/skills/pre-compact/SKILL.md +0 -134
- package/skills/qbug/CLAUDE.md +0 -40
- package/skills/qbug/SKILL.md +0 -387
- package/skills/qbug/test_qbug_skill_audit_schema.py +0 -152
- package/skills/qbug/test_qbug_skill_post_fix_audit.py +0 -103
- package/skills/refine/CLAUDE.md +0 -44
- package/skills/refine/SKILL.md +0 -262
- package/skills/refine/templates/CLAUDE.md +0 -17
- package/skills/refine/templates/implementation-notes-template.html +0 -56
- package/skills/refine/templates/plan-template.md +0 -60
- package/skills/research-mode/CLAUDE.md +0 -35
- package/skills/research-mode/SKILL.md +0 -53
- package/skills/structure-prompt/CLAUDE.md +0 -42
- package/skills/structure-prompt/SKILL.md +0 -44
- package/skills/structure-prompt/reference/CLAUDE.md +0 -28
- package/skills/structure-prompt/reference/adversarial-tuning.md +0 -62
- package/skills/structure-prompt/reference/block-classification.md +0 -27
- package/skills/structure-prompt/reference/canonical-case.md +0 -48
- package/skills/structure-prompt/reference/citation-depth.md +0 -70
- package/skills/structure-prompt/reference/cleanup.md +0 -33
- package/skills/structure-prompt/reference/constraints.md +0 -33
- package/skills/structure-prompt/reference/directives.md +0 -37
- package/skills/structure-prompt/reference/examples.md +0 -72
- package/skills/structure-prompt/reference/instantiation.md +0 -51
- package/skills/structure-prompt/reference/output-contract.md +0 -72
- package/skills/structure-prompt/reference/per-category.md +0 -23
- package/skills/structure-prompt/reference/persona.md +0 -38
- package/skills/structure-prompt/reference/research.md +0 -33
- package/skills/structure-prompt/reference/structure.md +0 -28
- package/skills/verified-build/CLAUDE.md +0 -33
- package/skills/verified-build/SKILL.md +0 -33
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
# State across ticks
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Contents
|
|
4
|
+
|
|
5
|
+
- [Dual persistence](#dual-persistence)
|
|
6
|
+
- [Fields](#fields)
|
|
7
|
+
- [Read/write lifecycle](#readwrite-lifecycle)
|
|
8
|
+
- [Handoff files](#handoff-files)
|
|
9
|
+
|
|
10
|
+
## Dual persistence
|
|
11
|
+
|
|
12
|
+
Single-PR `/pr-converge` writes loop state to
|
|
4
13
|
`$CLAUDE_JOB_DIR/pr-converge-state.json`; that file is the source of truth
|
|
5
14
|
for `phase`, heads, counters, status. Multi-PR mode additionally maintains
|
|
6
15
|
`<TMPDIR>/pr-converge-<session_id>/state.json` for orchestrator coordination
|
|
@@ -9,6 +18,8 @@ across PRs. Both files share most of the fields below; the
|
|
|
9
18
|
live ONLY in the single-PR `$CLAUDE_JOB_DIR/pr-converge-state.json` file
|
|
10
19
|
(see those field entries below for details).
|
|
11
20
|
|
|
21
|
+
## Fields
|
|
22
|
+
|
|
12
23
|
- `phase`: `BUGBOT`, `CODE_REVIEW`, `BUGTEAM`, or `COPILOT_WAIT`. Start
|
|
13
24
|
`CODE_REVIEW` on first tick. `BUGBOT` is the terminal external-confirmation
|
|
14
25
|
phase reached after BUGTEAM converges; the internal `CODE_REVIEW` and
|
|
@@ -18,8 +29,20 @@ live ONLY in the single-PR `$CLAUDE_JOB_DIR/pr-converge-state.json` file
|
|
|
18
29
|
- `code_review_clean_at`: HEAD SHA where the `/code-review` pass last
|
|
19
30
|
reported clean (no validated findings), or `null`. Reset to `null` on
|
|
20
31
|
every push.
|
|
32
|
+
- `bugteam_clean_at`: HEAD SHA where bugteam last reported clean, or `null`.
|
|
33
|
+
Reset to `null` on every push.
|
|
21
34
|
- `copilot_clean_at`: HEAD SHA where Copilot last reported clean, or `null`.
|
|
22
35
|
Reset to `null` on every push.
|
|
36
|
+
- `merge_state_status`: last-observed `mergeable_state` from
|
|
37
|
+
`pull_request_read(method="get")` (e.g. `clean`, `dirty`, `blocked`,
|
|
38
|
+
`behind`, `unknown`, `unstable`), or `null` before the first check. Reset
|
|
39
|
+
to `null` on every push. Gate (c) in [convergence-gates.md](convergence-gates.md)
|
|
40
|
+
invokes rebase on `dirty`; other non-`clean` values (`blocked`, `behind`,
|
|
41
|
+
`unknown`, `unstable`) are hard blockers.
|
|
42
|
+
- `current_head`: SHA of the last-known PR HEAD. Each tick refreshes it from
|
|
43
|
+
`pull_request_read(method="get")` → `.head.sha`, and again after any push
|
|
44
|
+
that moves HEAD. Clean-at stamps, wait counters, and phase gates compare
|
|
45
|
+
against this value.
|
|
23
46
|
- `copilot_wait_count`: integer, init `0`. Consecutive COPILOT_WAIT ticks
|
|
24
47
|
with no Copilot review surfaced at `current_head`. Escalate as hard blocker
|
|
25
48
|
at `>= 3`. Reset to `0` when a Copilot review surfaces at `current_head`
|
|
@@ -95,11 +118,13 @@ live ONLY in the single-PR `$CLAUDE_JOB_DIR/pr-converge-state.json` file
|
|
|
95
118
|
`{agent_id, created_tick, last_used_tick}` for the persistent per-step
|
|
96
119
|
agents the loop resumes across ticks. Exactly three step keys:
|
|
97
120
|
`fix_executor` (the clean-coder that applies findings in Step 4 dirty,
|
|
98
|
-
Step 6 findings, gates (a)/(
|
|
121
|
+
Step 6 findings, gates (a)/(b)/(e), and Step 7a), `thread_sweep`, and
|
|
99
122
|
`copilot_watch`. `agent_id` is the id the `Agent` tool returned at spawn;
|
|
100
123
|
`created_tick` is the `tick_count` at spawn; `last_used_tick` is bumped
|
|
101
124
|
on every `SendMessage` resume.
|
|
102
125
|
|
|
126
|
+
## Read/write lifecycle
|
|
127
|
+
|
|
103
128
|
Single-PR tick begins by reading `$CLAUDE_JOB_DIR/pr-converge-state.json`
|
|
104
129
|
if it exists and ends by writing the updated state back to that same file
|
|
105
130
|
before scheduling the next wakeup. Multi-PR mode additionally coordinates
|
|
@@ -8,13 +8,21 @@ Python helper scripts for the `pr-converge` skill, plus their tests and a PowerS
|
|
|
8
8
|
|---|---|
|
|
9
9
|
| `check_bugbot_ci.py` | Checks bugbot CI check-run status on a given SHA |
|
|
10
10
|
| `check_convergence.py` | Evaluates whether all convergence gates pass on the current HEAD |
|
|
11
|
+
| `check_convergence_gates.py` | GitHub REST leaf checks (review and Bugbot) the convergence gates call |
|
|
12
|
+
| `check_convergence_thread_gates.py` | GitHub GraphQL and REST leaf checks (review threads and pending reviewers) the convergence gates call |
|
|
11
13
|
| `check_pending_reviews.py` | Fetches pending review requests and reviewer states |
|
|
12
14
|
| `fetch_copilot_reviews.py` | Fetches Copilot reviewer reviews filtered to the current HEAD |
|
|
13
15
|
| `post_fix_reply.py` | Posts an inline reply to a review comment thread |
|
|
14
16
|
| `reflow_skill_md.py` | Reformats `SKILL.md` to enforce a line width limit |
|
|
15
17
|
| `README.md` | MCP tool reference for PR operations used by the scripts |
|
|
18
|
+
| `_pr_converge_path_setup.py` | Adds the scripts directory to `sys.path` for direct script imports |
|
|
19
|
+
| `conftest.py` | Puts the scripts directory on `sys.path` so pytest collects the suite |
|
|
16
20
|
| `test_check_bugbot_ci.py` | Tests for `check_bugbot_ci.py` |
|
|
17
21
|
| `test_check_convergence.py` | Tests for `check_convergence.py` |
|
|
22
|
+
| `test_check_convergence_contract.py` | Contract pins for `check_convergence.py` gate wiring |
|
|
23
|
+
| `test_check_convergence_gates.py` | Tests for `check_convergence_gates.py` |
|
|
24
|
+
| `test_check_convergence_thread_gates.py` | Tests for `check_convergence_thread_gates.py` |
|
|
25
|
+
| `test__pr_converge_path_setup.py` | Tests for `_pr_converge_path_setup.py` |
|
|
18
26
|
| `test_cursor_agents_continue.py` | Tests for the cursor-agents-continue toolset |
|
|
19
27
|
| `test_reflow_skill_md.py` | Tests for `reflow_skill_md.py` |
|
|
20
28
|
| `caller-window-pid.ps1` | Gets the PID of the calling terminal window |
|
|
@@ -84,8 +84,7 @@ Fetch via MCP:
|
|
|
84
84
|
pull_request_read(method="get_review_comments", pullNumber=NUMBER, owner=OWNER, repo=REPO)
|
|
85
85
|
→ filter threads where `is_resolved == false`
|
|
86
86
|
|
|
87
|
-
Sweep semantics and per-thread handling live in the `pr-fix-protocol`
|
|
88
|
-
skill's unresolved-thread sweep (`../../pr-fix-protocol/SKILL.md`).
|
|
87
|
+
Sweep semantics and per-thread handling live in the shared fix protocol ([`../../../_shared/pr-loop/fix-protocol.md`](../../../_shared/pr-loop/fix-protocol.md) step 12; skill deltas in [`../reference/fix-protocol.md`](../reference/fix-protocol.md)).
|
|
89
88
|
|
|
90
89
|
### Request Copilot review: `gh api` REST endpoint
|
|
91
90
|
|
|
@@ -99,7 +98,9 @@ Check for an existing pending review first with
|
|
|
99
98
|
|
|
100
99
|
## Shared modules
|
|
101
100
|
|
|
102
|
-
Shared Python utilities live under `_shared/pr-loop/scripts/` —
|
|
101
|
+
Shared Python utilities live under `skills/_shared/pr-loop/scripts/` —
|
|
102
|
+
`_xml_utils.py` for XML serialization, `_cli_utils.py` for CLI guards,
|
|
103
|
+
`_path_resolver.py` for canonical path resolution.
|
|
103
104
|
|
|
104
105
|
## Tests
|
|
105
106
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"""Put the pr-converge script directories on sys.path for standalone runs.
|
|
2
|
+
|
|
3
|
+
Importing this module makes the skill's constants package and the shared
|
|
4
|
+
``reviews_disabled`` module resolvable when a script in this directory runs
|
|
5
|
+
as ``__main__``. Each directory is added once, guarded against duplicates.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import sys
|
|
9
|
+
from pathlib import Path
|
|
10
|
+
|
|
11
|
+
_scripts_directory = Path(__file__).resolve().parent
|
|
12
|
+
_skill_directory = _scripts_directory.parent
|
|
13
|
+
_claude_dev_env_directory = _scripts_directory.parent.parent.parent
|
|
14
|
+
_shared_pr_loop_scripts_directory = (
|
|
15
|
+
_claude_dev_env_directory / "_shared" / "pr-loop" / "scripts"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
if str(_scripts_directory) not in sys.path:
|
|
19
|
+
sys.path.insert(0, str(_scripts_directory))
|
|
20
|
+
if str(_skill_directory) not in sys.path:
|
|
21
|
+
sys.path.insert(0, str(_skill_directory))
|
|
22
|
+
if str(_shared_pr_loop_scripts_directory) not in sys.path:
|
|
23
|
+
sys.path.insert(0, str(_shared_pr_loop_scripts_directory))
|