claude-dev-env 1.93.0 → 1.94.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.
Files changed (220) hide show
  1. package/_shared/pr-loop/CLAUDE.md +1 -0
  2. package/_shared/pr-loop/audit-contract.md +1 -1
  3. package/_shared/pr-loop/gh-payloads.md +3 -3
  4. package/_shared/pr-loop/post-audit-thread-contract.md +51 -0
  5. package/_shared/pr-loop/scripts/README.md +2 -2
  6. package/_shared/pr-loop/scripts/code_rules_gate.py +127 -13
  7. package/_shared/pr-loop/scripts/fix_hookspath.py +47 -12
  8. package/_shared/pr-loop/scripts/pr_loop_shared_constants/code_rules_gate_constants.py +4 -0
  9. package/_shared/pr-loop/scripts/tests/test_code_rules_gate.py +146 -69
  10. package/_shared/pr-loop/scripts/tests/test_fix_hookspath.py +497 -374
  11. package/_shared/pr-loop/state-schema.md +3 -22
  12. package/bin/CLAUDE.md +1 -1
  13. package/bin/install.mjs +2 -7
  14. package/bin/install.test.mjs +10 -4
  15. package/hooks/blocking/CLAUDE.md +2 -0
  16. package/hooks/blocking/pii_commit_command.py +398 -0
  17. package/hooks/blocking/pii_payload_scan.py +133 -0
  18. package/hooks/blocking/pii_prevention_blocker.py +151 -449
  19. package/hooks/blocking/pii_scanner.py +26 -1
  20. package/hooks/blocking/test_code_rules_enforcer_dead_config_field.py +2 -2
  21. package/hooks/blocking/test_pii_prevention_blocker.py +299 -0
  22. package/hooks/blocking/test_pii_scanner.py +27 -2
  23. package/hooks/blocking/test_verdict_directory_write_blocker.py +42 -7
  24. package/hooks/hooks_constants/CLAUDE.md +2 -2
  25. package/hooks/hooks_constants/code_rules_path_utils_constants.py +0 -2
  26. package/hooks/hooks_constants/local_identity.py +65 -15
  27. package/hooks/hooks_constants/pii_prevention_constants.py +20 -8
  28. package/hooks/hooks_constants/pr_description_enforcer_constants.py +1 -1
  29. package/hooks/hooks_constants/test_local_identity.py +68 -0
  30. package/package.json +1 -1
  31. package/scripts/CLAUDE.md +10 -1
  32. package/scripts/Get-SessionAccount.ps1 +210 -0
  33. package/scripts/tests/CLAUDE.md +15 -1
  34. package/scripts/tests/Get-SessionAccount.Tests.ps1 +350 -0
  35. package/skills/CLAUDE.md +3 -25
  36. package/skills/anthropic-plan/SKILL.md +1 -13
  37. package/skills/autoconverge/CLAUDE.md +5 -2
  38. package/skills/autoconverge/SKILL.md +112 -387
  39. package/skills/autoconverge/reference/CLAUDE.md +4 -1
  40. package/skills/autoconverge/reference/closing-report.md +9 -2
  41. package/skills/autoconverge/reference/convergence.md +26 -22
  42. package/skills/autoconverge/reference/headless-safety.md +44 -0
  43. package/skills/autoconverge/reference/multi-pr.md +88 -0
  44. package/skills/autoconverge/reference/self-closing-loop.md +84 -0
  45. package/skills/autoconverge/reference/stop-conditions.md +21 -13
  46. package/skills/autoconverge/workflow/converge.clean-audit.test.mjs +87 -27
  47. package/skills/autoconverge/workflow/converge.contract.test.mjs +40 -10
  48. package/skills/autoconverge/workflow/converge.copilot-gate.test.mjs +179 -47
  49. package/skills/autoconverge/workflow/converge.fix-progress.test.mjs +1 -1
  50. package/skills/autoconverge/workflow/converge.mjs +284 -94
  51. package/skills/bugteam/CLAUDE.md +1 -1
  52. package/skills/bugteam/CONSTRAINTS.md +3 -3
  53. package/skills/bugteam/PROMPTS.md +8 -19
  54. package/skills/bugteam/SKILL.md +13 -14
  55. package/skills/bugteam/reference/CLAUDE.md +1 -1
  56. package/skills/bugteam/reference/audit-and-teammates.md +2 -2
  57. package/skills/bugteam/reference/copilot-gap-analysis.md +2 -0
  58. package/skills/bugteam/reference/github-pr-reviews.md +56 -38
  59. package/skills/bugteam/reference/team-setup.md +11 -11
  60. package/skills/bugteam/scripts/CLAUDE.md +6 -6
  61. package/skills/bugteam/scripts/README.md +20 -8
  62. package/skills/bugteam/scripts/bugteam_code_rules_gate.py +13 -1463
  63. package/skills/bugteam/scripts/bugteam_fix_hookspath.py +23 -358
  64. package/skills/bugteam/scripts/bugteam_preflight.py +13 -315
  65. package/skills/bugteam/scripts/bugteam_scripts_constants/CLAUDE.md +2 -3
  66. package/skills/bugteam/scripts/test_bugteam_code_rules_gate.py +34 -1053
  67. package/skills/bugteam/scripts/test_bugteam_fix_hookspath.py +30 -347
  68. package/skills/bugteam/scripts/test_bugteam_preflight.py +30 -305
  69. package/skills/copilot-finding-triage/SKILL.md +80 -28
  70. package/skills/copilot-finding-triage/reference/tier-rubric.md +70 -11
  71. package/skills/copilot-finding-triage/templates/notification.md +8 -3
  72. package/skills/everything-search/SKILL.md +1 -2
  73. package/skills/grokify/SKILL.md +58 -0
  74. package/skills/grokify/templates/handoff-template.md +92 -0
  75. package/skills/orchestrator/SKILL.md +12 -8
  76. package/skills/orchestrator-refresh/SKILL.md +3 -3
  77. package/skills/pr-converge/SKILL.md +132 -233
  78. package/skills/pr-converge/reference/convergence-gates.md +102 -66
  79. package/skills/pr-converge/reference/examples.md +37 -25
  80. package/skills/pr-converge/reference/fix-protocol.md +7 -7
  81. package/skills/pr-converge/reference/multi-pr-orchestration.md +10 -4
  82. package/skills/pr-converge/reference/per-tick.md +64 -41
  83. package/skills/pr-converge/reference/state-schema.md +27 -2
  84. package/skills/pr-converge/scripts/CLAUDE.md +8 -0
  85. package/skills/pr-converge/scripts/README.md +4 -3
  86. package/skills/pr-converge/scripts/_pr_converge_path_setup.py +23 -0
  87. package/skills/pr-converge/scripts/check_convergence.py +189 -645
  88. package/skills/pr-converge/scripts/check_convergence_gates.py +235 -0
  89. package/skills/pr-converge/scripts/check_convergence_thread_gates.py +219 -0
  90. package/skills/pr-converge/scripts/conftest.py +8 -0
  91. package/skills/pr-converge/scripts/pr_converge_scripts_constants/CLAUDE.md +1 -0
  92. package/skills/pr-converge/scripts/pr_converge_scripts_constants/convergence_gate_constants.py +36 -0
  93. package/skills/pr-converge/scripts/test__pr_converge_path_setup.py +26 -0
  94. package/skills/pr-converge/scripts/test_check_convergence.py +73 -228
  95. package/skills/pr-converge/scripts/test_check_convergence_contract.py +321 -0
  96. package/skills/pr-converge/scripts/test_check_convergence_gates.py +68 -0
  97. package/skills/pr-converge/scripts/test_check_convergence_thread_gates.py +75 -0
  98. package/skills/privacy-hygiene/SKILL.md +8 -7
  99. package/skills/reviewer-gates/SKILL.md +26 -8
  100. package/skills/session-log/SKILL.md +11 -12
  101. package/skills/session-tidy/SKILL.md +40 -30
  102. package/skills/skill-builder/CLAUDE.md +13 -10
  103. package/skills/skill-builder/SKILL.md +31 -31
  104. package/skills/skill-builder/references/CLAUDE.md +10 -6
  105. package/skills/skill-builder/references/delegation-map.md +13 -4
  106. package/skills/skill-builder/references/description-field.md +113 -0
  107. package/skills/skill-builder/references/self-audit-checklist.md +21 -4
  108. package/skills/skill-builder/references/skill-modularity.md +113 -0
  109. package/skills/skill-builder/references/skill-types.md +4 -0
  110. package/skills/skill-builder/templates/CLAUDE.md +4 -4
  111. package/skills/skill-builder/templates/gap-analysis.md +25 -1
  112. package/skills/skill-builder/workflows/CLAUDE.md +6 -4
  113. package/skills/skill-builder/workflows/improve-skill.md +17 -16
  114. package/skills/skill-builder/workflows/new-skill.md +34 -10
  115. package/skills/skill-builder/workflows/polish-skill.md +59 -43
  116. package/skills/usage-pause/SKILL.md +10 -14
  117. package/skills/bdd-protocol/CLAUDE.md +0 -26
  118. package/skills/bdd-protocol/SKILL.md +0 -30
  119. package/skills/bdd-protocol/references/CLAUDE.md +0 -10
  120. package/skills/bdd-protocol/references/anti-patterns.md +0 -26
  121. package/skills/bdd-protocol/references/example-mapping.md +0 -23
  122. package/skills/bg-agent/CLAUDE.md +0 -17
  123. package/skills/bg-agent/SKILL.md +0 -69
  124. package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_code_rules_gate_constants.py +0 -55
  125. package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_fix_hookspath_constants.py +0 -26
  126. package/skills/bugteam/scripts/bugteam_scripts_constants/bugteam_preflight_constants.py +0 -35
  127. package/skills/caveman/CLAUDE.md +0 -15
  128. package/skills/caveman/SKILL.md +0 -38
  129. package/skills/code/CLAUDE.md +0 -17
  130. package/skills/code/SKILL.md +0 -178
  131. package/skills/deep-research/CLAUDE.md +0 -17
  132. package/skills/deep-research/SKILL.md +0 -80
  133. package/skills/findbugs/CLAUDE.md +0 -20
  134. package/skills/findbugs/SKILL.md +0 -241
  135. package/skills/fixbugs/CLAUDE.md +0 -19
  136. package/skills/fixbugs/SKILL.md +0 -142
  137. package/skills/gh-paginate/CLAUDE.md +0 -18
  138. package/skills/gh-paginate/SKILL.md +0 -84
  139. package/skills/gotcha/CLAUDE.md +0 -33
  140. package/skills/gotcha/SKILL.md +0 -73
  141. package/skills/implement/CLAUDE.md +0 -27
  142. package/skills/implement/SKILL.md +0 -66
  143. package/skills/implement/scripts/CLAUDE.md +0 -22
  144. package/skills/implement/scripts/append_note.py +0 -133
  145. package/skills/implement/scripts/implement_scripts_constants/CLAUDE.md +0 -22
  146. package/skills/implement/scripts/implement_scripts_constants/__init__.py +0 -0
  147. package/skills/implement/scripts/implement_scripts_constants/notes_constants.py +0 -12
  148. package/skills/implement/scripts/test_append_note.py +0 -191
  149. package/skills/log-audit/CLAUDE.md +0 -20
  150. package/skills/log-audit/SKILL.md +0 -66
  151. package/skills/log-audit/reference/CLAUDE.md +0 -9
  152. package/skills/log-audit/reference/charter.md +0 -52
  153. package/skills/log-audit/scripts/CLAUDE.md +0 -27
  154. package/skills/log-audit/scripts/cluster_recurrences.py +0 -261
  155. package/skills/log-audit/scripts/collect_log_window.py +0 -199
  156. package/skills/log-audit/scripts/log_audit_constants/CLAUDE.md +0 -12
  157. package/skills/log-audit/scripts/log_audit_constants/__init__.py +0 -0
  158. package/skills/log-audit/scripts/log_audit_constants/cluster_recurrences_constants.py +0 -23
  159. package/skills/log-audit/scripts/log_audit_constants/collect_log_window_constants.py +0 -24
  160. package/skills/log-audit/scripts/log_audit_constants/mine_copilot_findings_constants.py +0 -49
  161. package/skills/log-audit/scripts/mine_copilot_findings.py +0 -302
  162. package/skills/log-audit/scripts/test_cluster_recurrences.py +0 -160
  163. package/skills/log-audit/scripts/test_collect_log_window.py +0 -111
  164. package/skills/log-audit/scripts/test_mine_copilot_findings.py +0 -126
  165. package/skills/logifix/CLAUDE.md +0 -36
  166. package/skills/logifix/SKILL.md +0 -69
  167. package/skills/logifix/scripts/CLAUDE.md +0 -16
  168. package/skills/logifix/scripts/logifix.ps1 +0 -205
  169. package/skills/monitor-open-prs/CLAUDE.md +0 -34
  170. package/skills/monitor-open-prs/SKILL.md +0 -88
  171. package/skills/monitor-open-prs/scripts/CLAUDE.md +0 -17
  172. package/skills/monitor-open-prs/scripts/discover_open_prs.py +0 -69
  173. package/skills/monitor-open-prs/scripts/test_discover_open_prs.py +0 -149
  174. package/skills/monitor-open-prs/test_skill_contract.py +0 -27
  175. package/skills/post-audit-findings/SKILL.md +0 -80
  176. package/skills/pr-consistency-audit/CLAUDE.md +0 -34
  177. package/skills/pr-consistency-audit/SKILL.md +0 -116
  178. package/skills/pr-consistency-audit/reference/CLAUDE.md +0 -16
  179. package/skills/pr-consistency-audit/reference/detection-rules.md +0 -96
  180. package/skills/pr-consistency-audit/reference/illustrations.md +0 -78
  181. package/skills/pr-fix-protocol/SKILL.md +0 -65
  182. package/skills/pr-review-responder/CLAUDE.md +0 -35
  183. package/skills/pr-review-responder/EXAMPLES.md +0 -590
  184. package/skills/pr-review-responder/PRINCIPLES.md +0 -533
  185. package/skills/pr-review-responder/README.md +0 -168
  186. package/skills/pr-review-responder/SKILL.md +0 -203
  187. package/skills/pr-review-responder/TESTING.md +0 -350
  188. package/skills/pr-scope-resolve/SKILL.md +0 -45
  189. package/skills/pre-compact/CLAUDE.md +0 -24
  190. package/skills/pre-compact/SKILL.md +0 -134
  191. package/skills/qbug/CLAUDE.md +0 -40
  192. package/skills/qbug/SKILL.md +0 -387
  193. package/skills/qbug/test_qbug_skill_audit_schema.py +0 -152
  194. package/skills/qbug/test_qbug_skill_post_fix_audit.py +0 -103
  195. package/skills/refine/CLAUDE.md +0 -44
  196. package/skills/refine/SKILL.md +0 -262
  197. package/skills/refine/templates/CLAUDE.md +0 -17
  198. package/skills/refine/templates/implementation-notes-template.html +0 -56
  199. package/skills/refine/templates/plan-template.md +0 -60
  200. package/skills/research-mode/CLAUDE.md +0 -35
  201. package/skills/research-mode/SKILL.md +0 -53
  202. package/skills/structure-prompt/CLAUDE.md +0 -42
  203. package/skills/structure-prompt/SKILL.md +0 -44
  204. package/skills/structure-prompt/reference/CLAUDE.md +0 -28
  205. package/skills/structure-prompt/reference/adversarial-tuning.md +0 -62
  206. package/skills/structure-prompt/reference/block-classification.md +0 -27
  207. package/skills/structure-prompt/reference/canonical-case.md +0 -48
  208. package/skills/structure-prompt/reference/citation-depth.md +0 -70
  209. package/skills/structure-prompt/reference/cleanup.md +0 -33
  210. package/skills/structure-prompt/reference/constraints.md +0 -33
  211. package/skills/structure-prompt/reference/directives.md +0 -37
  212. package/skills/structure-prompt/reference/examples.md +0 -72
  213. package/skills/structure-prompt/reference/instantiation.md +0 -51
  214. package/skills/structure-prompt/reference/output-contract.md +0 -72
  215. package/skills/structure-prompt/reference/per-category.md +0 -23
  216. package/skills/structure-prompt/reference/persona.md +0 -38
  217. package/skills/structure-prompt/reference/research.md +0 -33
  218. package/skills/structure-prompt/reference/structure.md +0 -28
  219. package/skills/verified-build/CLAUDE.md +0 -33
  220. package/skills/verified-build/SKILL.md +0 -33
@@ -1,6 +1,15 @@
1
1
  # State across ticks
2
2
 
3
- **Dual persistence:** Single-PR `/pr-converge` writes loop state to
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)/(d), and Step 7a), `thread_sweep`, and
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/` — `_xml_utils.py` for XML serialization, `_cli_utils.py` for CLI guards, `_path_resolver.py` for canonical path resolution. These serve `/bugteam`, `/qbug`, `/findbugs`, and `/fixbugs` equally.
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))