@tyroneross/build-loop 0.35.0 → 0.36.1

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 (151) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude-plugin/marketplace.json +3 -3
  3. package/.claude-plugin/plugin.json +2 -2
  4. package/.codex-plugin/plugin.json +1 -1
  5. package/AGENTS.md +67 -14
  6. package/README.md +208 -299
  7. package/agents/advisor.md +2 -0
  8. package/agents/alignment-checker.md +2 -0
  9. package/agents/api-assessor.md +3 -1
  10. package/agents/architecture-scout.md +2 -0
  11. package/agents/assessment-orchestrator.md +2 -0
  12. package/agents/build-orchestrator.md +13 -8
  13. package/agents/database-assessor.md +107 -3
  14. package/agents/design-contract-specialist.md +2 -0
  15. package/agents/fact-checker.md +2 -0
  16. package/agents/fix-critique.md +26 -5
  17. package/agents/frontend-assessor.md +3 -1
  18. package/agents/implementer.md +2 -0
  19. package/agents/independent-auditor.md +2 -0
  20. package/agents/mock-scanner.md +2 -0
  21. package/agents/optimize-runner.md +2 -0
  22. package/agents/overfitting-reviewer.md +2 -0
  23. package/agents/performance-assessor.md +3 -1
  24. package/agents/plan-critic.md +2 -0
  25. package/agents/promotion-reviewer.md +2 -0
  26. package/agents/recurring-pattern-detector.md +4 -1
  27. package/agents/retrospective-synthesizer.md +14 -0
  28. package/agents/root-cause-investigator.md +39 -2
  29. package/agents/scope-auditor.md +2 -0
  30. package/agents/security-reviewer.md +3 -0
  31. package/agents/self-improvement-architect.md +2 -0
  32. package/agents/synthesis-critic.md +2 -0
  33. package/agents/transcript-pattern-miner.md +2 -0
  34. package/agents/ui-validator.md +2 -0
  35. package/assets/build-loop-plugin-icon.png +0 -0
  36. package/bin/build-loop-install.js +234 -0
  37. package/commands/run.md +1 -1
  38. package/hooks/git/pre-commit +40 -0
  39. package/hooks/git/pre-push +35 -10
  40. package/hooks/hooks.json +42 -5
  41. package/hooks/pre-edit-architecture.sh +2 -2
  42. package/hooks/route-guard.sh +15 -0
  43. package/hooks/route_guard.py +221 -0
  44. package/hooks/session-start-extensions.sh +10 -0
  45. package/hooks/session-start-git-hooks.sh +6 -1
  46. package/hooks/session-start-rally-point.sh +23 -1
  47. package/hooks/test_session_start_rally_version.sh +123 -0
  48. package/package.json +7 -2
  49. package/plugin-artifacts/codex/.codex-plugin/plugin.json +1 -1
  50. package/plugin-artifacts/codex/AGENTS.md +67 -14
  51. package/plugin-artifacts/codex/README.md +208 -299
  52. package/plugin-artifacts/codex/assets/build-loop-plugin-icon.png +0 -0
  53. package/plugin-artifacts/codex/references/backlog-system.md +285 -0
  54. package/plugin-artifacts/codex/references/capability-routing.md +49 -0
  55. package/plugin-artifacts/codex/references/coordination-rules.md +271 -2
  56. package/plugin-artifacts/codex/references/memory-systems.md +25 -2
  57. package/plugin-artifacts/codex/references/memory.md +14 -0
  58. package/plugin-artifacts/codex/references/model-tier-mapping.md +45 -6
  59. package/plugin-artifacts/codex/references/phase-1-assess.md +19 -1
  60. package/plugin-artifacts/codex/references/phase-2-plan.md +9 -1
  61. package/plugin-artifacts/codex/references/phase-3-execute.md +1 -1
  62. package/plugin-artifacts/codex/references/phase-4-review.md +20 -1
  63. package/plugin-artifacts/codex/references/phase-5-iterate.md +4 -3
  64. package/plugin-artifacts/codex/references/phase-6-learn.md +2 -0
  65. package/plugin-artifacts/codex/references/verify-dispatch.md +85 -0
  66. package/plugin-artifacts/codex/skills/build-loop/SKILL.md +19 -10
  67. package/plugin-artifacts/codex/skills/build-loop/fallbacks.md +1 -1
  68. package/plugin-artifacts/codex/skills/build-loop/references/capability-routing.md +49 -0
  69. package/plugin-artifacts/codex/skills/build-loop/references/experiment-results-template.md +101 -0
  70. package/plugin-artifacts/codex/skills/build-loop/references/memory.md +14 -0
  71. package/plugin-artifacts/codex/skills/build-loop/references/output-style.md +98 -5
  72. package/plugin-artifacts/codex/skills/build-loop/references/phase-1-assess.md +19 -1
  73. package/plugin-artifacts/codex/skills/build-loop/references/phase-2-plan.md +9 -1
  74. package/plugin-artifacts/codex/skills/build-loop/references/phase-3-execute.md +1 -1
  75. package/plugin-artifacts/codex/skills/build-loop/references/phase-4-review.md +20 -1
  76. package/plugin-artifacts/codex/skills/build-loop/references/phase-5-iterate.md +4 -3
  77. package/plugin-artifacts/codex/skills/build-loop/references/phase-6-learn.md +2 -0
  78. package/plugin-artifacts/codex/skills/build-loop/references/verify-dispatch.md +85 -0
  79. package/scripts/build_codex_plugin_artifact.py +7 -0
  80. package/scripts/embed_backend.py +17 -13
  81. package/scripts/lessons_index/query.py +1 -1
  82. package/scripts/memory_graph/__init__.py +2 -2
  83. package/scripts/sync_navgator_lessons.py +4 -4
  84. package/skills/api-registry-bridge/SKILL.md +1 -1
  85. package/skills/auto-decision-capture/SKILL.md +4 -3
  86. package/skills/auto-finding-capture/SKILL.md +119 -0
  87. package/skills/build-loop/SKILL.md +19 -10
  88. package/skills/build-loop/fallbacks.md +1 -1
  89. package/skills/build-loop/references/capability-routing.md +49 -0
  90. package/skills/build-loop/references/experiment-results-template.md +101 -0
  91. package/skills/build-loop/references/memory.md +14 -0
  92. package/skills/build-loop/references/output-style.md +98 -5
  93. package/skills/build-loop/references/phase-1-assess.md +19 -1
  94. package/skills/build-loop/references/phase-2-plan.md +9 -1
  95. package/skills/build-loop/references/phase-3-execute.md +1 -1
  96. package/skills/build-loop/references/phase-4-review.md +20 -1
  97. package/skills/build-loop/references/phase-5-iterate.md +4 -3
  98. package/skills/build-loop/references/phase-6-learn.md +2 -0
  99. package/skills/build-loop/references/verify-dispatch.md +85 -0
  100. package/skills/debug-loop/SKILL.md +4 -2
  101. package/skills/debugging-memory/SKILL.md +24 -12
  102. package/skills/{debugging/assess/SKILL.md → debugging-memory/references/assess.md} +6 -13
  103. package/skills/{debugging/memory/SKILL.md → debugging-memory/references/search.md} +10 -17
  104. package/skills/{debugging/store/SKILL.md → debugging-memory/references/store.md} +5 -13
  105. package/skills/debugging-memory/references/subagent-integration.md +3 -3
  106. package/skills/defenseclaw-bridge/SKILL.md +1 -1
  107. package/skills/{loop-builder → focused-loop-builder}/SKILL.md +6 -6
  108. package/skills/ibr-bridge/SKILL.md +1 -1
  109. package/skills/knowledge/SKILL.md +13 -2
  110. package/skills/{knowledge-review/SKILL.md → knowledge/references/review-mode.md} +8 -20
  111. package/skills/logging-tracer/SKILL.md +20 -4
  112. package/skills/model-bakeoff/SKILL.md +44 -0
  113. package/skills/model-tiering/SKILL.md +55 -20
  114. package/skills/optimize/SKILL.md +2 -2
  115. package/skills/prd-bridge/SKILL.md +1 -1
  116. package/skills/recursive-retrospective/SKILL.md +46 -0
  117. package/skills/recursive-retrospective/references/01-retrospective.md +136 -0
  118. package/skills/recursive-retrospective/references/02-learning-capture.md +72 -0
  119. package/skills/recursive-retrospective/references/03-judge.md +45 -0
  120. package/skills/research/SKILL.md +1 -1
  121. package/skills/root-cause-analysis/SKILL.md +42 -0
  122. package/skills/security-methodology/SKILL.md +10 -1
  123. package/skills/security-scan/SKILL.md +55 -0
  124. package/skills/spec-writing/SKILL.md +42 -1
  125. package/skills/sync-skills/SKILL.md +8 -7
  126. package/commands/assess.md +0 -41
  127. package/commands/compose-handoff.md +0 -113
  128. package/commands/debug.md +0 -20
  129. package/commands/debugger-detail.md +0 -34
  130. package/commands/debugger-scan.md +0 -15
  131. package/commands/debugger-status.md +0 -20
  132. package/commands/debugger.md +0 -32
  133. package/commands/optimize-run.md +0 -31
  134. package/commands/promote-experiment.md +0 -129
  135. package/commands/rally-point.md +0 -301
  136. package/commands/research-run.md +0 -22
  137. package/commands/review-knowledge.md +0 -16
  138. package/commands/self-review.md +0 -51
  139. package/commands/setup-memory.md +0 -32
  140. package/commands/start-prd.md +0 -57
  141. package/commands/test.md +0 -34
  142. package/commands/verify-plan.md +0 -39
  143. package/skills/debugging/debug-loop/SKILL.md +0 -231
  144. package/skills/logging-tracer-bridge/SKILL.md +0 -70
  145. /package/skills/{loop-builder → focused-loop-builder}/presets/active-project-evidence.yaml +0 -0
  146. /package/skills/{loop-builder → focused-loop-builder}/presets/generic-artifact-loop.yaml +0 -0
  147. /package/skills/{loop-builder → focused-loop-builder}/presets/presentation-audit.yaml +0 -0
  148. /package/skills/{loop-builder → focused-loop-builder}/presets/research-synthesis.yaml +0 -0
  149. /package/skills/{loop-builder → focused-loop-builder}/presets/source-ingestion-raw-data-audit.yaml +0 -0
  150. /package/skills/{loop-builder → focused-loop-builder}/references/spec-format.md +0 -0
  151. /package/skills/{loop-builder → focused-loop-builder}/scripts/loop_builder.py +0 -0
@@ -1,301 +0,0 @@
1
- ---
2
- description: "Inspect or invoke build-loop's multi-session coordination (Rally Point + per-run coord file). Subcommands: status (default), watch, heartbeat, ack-inbox, announce, init, lead, escalate, boundary, docs, help."
3
- allowed-tools: Bash, Read
4
- argument-hint: "[status|watch|heartbeat|announce|init|lead|escalate|boundary|docs|help] [args]"
5
- model: inherit
6
- ---
7
-
8
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
9
-
10
- Parse `{{ARGUMENTS}}` as `<subcommand> [args...]`. **If `<subcommand>` is omitted or empty, default to `status`** (the no-args case — most common interactive use).
11
-
12
- ## Subcommands
13
-
14
- ### `status` (default — no-args runs this)
15
-
16
- Cheap (~100-token) sensor poll. Reports active peer sessions, unresolved verifier verdicts, dirty files, task-heartbeat health, and the active coord file path. Run this BEFORE any step-boundary decision (next-step recommendation, subagent dispatch, commit, version bump, archive/delete).
17
-
18
- Executes:
19
-
20
- ```bash
21
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/coordination_status.py \
22
- --workdir "$PWD" \
23
- --session-id "user-rally-$(date +%s)" \
24
- --json
25
- ```
26
-
27
- (If the user passed `--coordination-file=<path>`, `--task-ref=<id>`, or
28
- `--task-heartbeat-grace-seconds=<seconds>` in subcommand args, forward it.)
29
-
30
- Example output (clear):
31
-
32
- ```json
33
- {
34
- "status": "clear",
35
- "active_peers": [],
36
- "unresolved": [],
37
- "coordination_file": null
38
- }
39
- ```
40
-
41
- Example output (warn — peer overlap on owned files):
42
-
43
- ```json
44
- {
45
- "status": "warn",
46
- "active_peers": [{"session_id": "codex-...", "tool": "codex", "phase": "review"}],
47
- "overlaps": [{"peer": "codex-...", "files": ["scripts/foo.py"], "severity": "warning"}],
48
- "required_action": "review_peer_overlap_or_dirty_files"
49
- }
50
- ```
51
-
52
- ### `watch`
53
-
54
- Continuous cheap sensor loop. Use this while waiting on another coding host,
55
- during active shared-file work, or whenever an inbox message is expected. The
56
- watcher prints only state transitions, revision changes, dirty-file risk, and
57
- inbox unread count. When `--task-ref` is set, it also wakes on task-heartbeat
58
- health changes.
59
-
60
- Executes:
61
-
62
- ```bash
63
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/coordination_watch.py \
64
- --workdir "$PWD" \
65
- --session-id "user-rally-$(date +%s)" \
66
- --tool "claude_code" \
67
- --interval 5 \
68
- --jsonl \
69
- --baseline-current
70
- ```
71
-
72
- If the user passed `--tool=<name>`, `--files-in-flight=<csv>`,
73
- `--coordination-file=<path>`, `--task-ref=<id>`, or
74
- `--task-heartbeat-grace-seconds=<seconds>` in subcommand args, forward them. Claude Code uses
75
- `--tool claude_code`; Codex uses `--tool codex`; other hosts should choose a
76
- stable lowercase tool id.
77
-
78
- When the watcher emits an event with a higher `revision`,
79
- `direct_inbox_unread_count > 0`, or `broadcast_inbox_unread_count > 0`, run
80
- `status`, read the addressed inbox plus `inbox/all.jsonl`, and respond through
81
- the channel before continuing. Watch/status output also includes
82
- `inbox_latest_messages`: compact metadata and a short preview for the newest
83
- direct/broadcast inbox records. Treat it as a doorbell only; read the inbox
84
- file for full payloads before acting. After the message is handled, run
85
- `ack-inbox` so old direct notes do not keep appearing as unread.
86
-
87
- ### `heartbeat`
88
-
89
- Write a structured task heartbeat for long-running work. This is separate from
90
- presence: presence answers "process can still write"; heartbeat answers "the
91
- agent is still on the claimed task and when the next check-in is due."
92
-
93
- Use it at the start of a long-running task, then at least every 10 minutes or
94
- after each meaningful phase boundary. Set `--task-ref` to the claim, issue,
95
- pillar, or run id that status/watch should expect.
96
-
97
- Executes:
98
-
99
- ```bash
100
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/agent_rally.py heartbeat \
101
- --workdir "$PWD" \
102
- --session-id "user-rally-$(date +%s)" \
103
- --tool "claude_code" \
104
- --model "inherit" \
105
- --run-id "<run-id>" \
106
- --task-ref "<claim-or-issue-id>" \
107
- --status running \
108
- --progress "<short progress since last check-in>" \
109
- --evidence "<csv refs: files/tests/commits/handoffs>" \
110
- --json
111
- ```
112
-
113
- Use `--status blocked --attention-reason "<why>"` or
114
- `--status needs_attention --attention-reason "<why>"` when a human or lead must
115
- act. Use `--not-on-task` only to make drift explicit.
116
-
117
- ### `ack-inbox`
118
-
119
- Mark the current direct/broadcast inbox tail as seen for this tool/session.
120
- This writes an ack cursor under `inbox/.acks/`; it does not rewrite or delete
121
- the append-only inbox messages.
122
-
123
- Executes:
124
-
125
- ```bash
126
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/agent_rally.py ack-inbox \
127
- --workdir "$PWD" \
128
- --session-id "user-rally-$(date +%s)" \
129
- --tool "claude_code" \
130
- --json
131
- ```
132
-
133
- Run this only after reading and acting on the current inbox payloads. Pass
134
- `--no-broadcast` when a broadcast message should remain visible.
135
-
136
- ### `announce [message]`
137
-
138
- Publish lightweight Rally Point presence + a `kind=handoff` rally record for the current app slug, without creating a durable coordination file. Use this when another host (Codex, Claude Code, CI verifier) needs to see that this agent is present before work ownership is split, or when dogfooding coordination from outside a full build-loop run.
139
-
140
- Executes:
141
-
142
- ```bash
143
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/coordination_rally.py \
144
- --workdir "$PWD" \
145
- --session-id "user-rally-$(date +%s)" \
146
- --tool "claude_code" \
147
- --model "inherit" \
148
- --to "peer" \
149
- --message "<message or 'Agent is present and ready to coordinate.'>" \
150
- --json
151
- ```
152
-
153
- If the user passed `--owns=<csv>` or `--does-not-own=<csv>` in subcommand args, forward those values as `--owns` / `--does-not-own`. If omitted, the rally is presence-only and owns no files.
154
-
155
- Example output:
156
-
157
- ```json
158
- {
159
- "action": "rally-point-posted",
160
- "app_slug": "example-ios-app",
161
- "channel_revision": 1,
162
- "presence_written": true
163
- }
164
- ```
165
-
166
- ### `init <topic> <scope-one-liner>`
167
-
168
- Bootstrap a NEW coord file at `.build-loop/coordination/<topic>-YYYY-MM-DD.md` from `references/coordination-file-template.md`. Writes own presence, posts a `kind=handoff` record so peers see it. **Idempotent and atomic** (per v0.12.10): if the coord file already exists OR a concurrent peer creates it between our check and our write, joins (writes presence + posts `phase=joined-existing-coord`) instead of overwriting.
169
-
170
- Executes:
171
-
172
- ```bash
173
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/coordination_bootstrap.py \
174
- --workdir "$PWD" \
175
- --topic "<topic-slug>" \
176
- --scope "<scope-one-liner>" \
177
- --session-id "user-rally-$(date +%s)" \
178
- --json
179
- ```
180
-
181
- Example invocation: `/build-loop:rally-point init v0130-feature-x "Add new feature X across orchestrator + bootstrap + tests"`
182
-
183
- Example output:
184
-
185
- ```json
186
- {
187
- "coord_file": ".build-loop/coordination/v0130-feature-x-2026-05-21.md",
188
- "action": "bootstrapped",
189
- "channel_revision": 65,
190
- "session_id": "user-rally-1779320000"
191
- }
192
- ```
193
-
194
- ### `lead <claim|renew|transfer|relinquish|status>`
195
-
196
- Operate the leadership lease (G1). A multi-agent run has exactly ONE lead
197
- with a liveness lease; "lead" used to be implicit in whoever opened the
198
- coord file. The orchestrator auto-claims at Phase 1, renews at each
199
- phase-start, and relinquishes at Phase D closeout — use this command for
200
- manual lead inspection, an out-of-band takeover, or dogfooding.
201
-
202
- All `lead` ops shell out to the host-neutral CLI:
203
-
204
- ```bash
205
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/agent_rally.py lead <op> \
206
- --workdir "$PWD" \
207
- --session-id "user-rally-$(date +%s)" \
208
- --tool "claude_code" \
209
- --run-id "<run-id>"
210
- ```
211
-
212
- - `claim` — become lead if the channel has no lead or the lease expired.
213
- Returns `{"claimed": bool, "lead": {...}}`. A second claim while a valid
214
- lease is held returns `claimed: false` with the incumbent.
215
- - `renew` — extend the current lease (lead only; `--renew-every-minutes`,
216
- default 15). `renew_every_minutes` is the lease clock — distinct from the
217
- `watch` poll cadence.
218
- - `transfer` — hand the lead to another session (`--to-session-id`,
219
- `--to-tool`, `--to-model`); rejected from a non-lead.
220
- - `relinquish` — give up the lead so the next `claim` succeeds immediately.
221
- - `status` — read the current lead + `lease_valid`.
222
-
223
- Example: `/build-loop:rally-point lead status`
224
-
225
- ### `escalate <reason>`
226
-
227
- Post a `kind=escalation` change record (G3) — "needs lead or user
228
- attention now", distinct from routine `phase`/`feedback`. An open
229
- escalation makes `status` report `blocked` until acknowledged.
230
-
231
- ```bash
232
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/agent_rally.py escalate \
233
- --workdir "$PWD" \
234
- --session-id "user-rally-$(date +%s)" \
235
- --tool "claude_code" \
236
- --run-id "<run-id>" \
237
- --reason "<why this needs attention>"
238
- ```
239
-
240
- ### `boundary`
241
-
242
- Validate the embedded mini-plugin boundary used to keep Rally Point and the
243
- watcher extractable while they still ship inside build-loop.
244
-
245
- ```bash
246
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/agent_rally.py boundary \
247
- --repo "${CLAUDE_PLUGIN_ROOT}" \
248
- --check \
249
- --json
250
- ```
251
-
252
- This checks `scripts/rally_point/plugin_boundary.json` and reports the
253
- current `agent-rally-point` and `agent-rally-watcher` extraction surfaces.
254
-
255
- ### `docs`
256
-
257
- Prints the binding coordination constitution at `references/coordination-rules.md`. Use this when onboarding a peer (Codex, second Claude session, CI verifier) so they read the same rules — the verdict-gating operating rule, the `post()` helper mandate, MECE packets for every write-handoff, release-surface verification, Phase D closeout.
258
-
259
- Executes:
260
-
261
- ```bash
262
- cat ${CLAUDE_PLUGIN_ROOT}/references/coordination-rules.md
263
- ```
264
-
265
- ### `help`
266
-
267
- Shows the subcommand reference table (replaces what the no-args case used to do pre-v0.12.10).
268
-
269
- Outputs:
270
-
271
- ```
272
- /build-loop:rally-point — inspect or invoke build-loop's multi-session coordination
273
-
274
- Subcommands:
275
- status (default) Sensor poll: active peers, unresolved verdicts, coord file
276
- watch Continuous sensor loop for peer/inbox changes
277
- heartbeat Write a long-running task check-in
278
- announce [message] Publish Rally Point presence + handoff without coord file
279
- init <topic> <scope> Bootstrap a coord file from template; atomic + idempotent
280
- lead <op> Inspect or update the leadership lease
281
- escalate <reason> Post an urgent coordination escalation
282
- boundary Validate embedded agent-rally extraction boundaries
283
- docs Print the binding coordination constitution
284
- help This message
285
-
286
- No-args invocation runs `status` (the most common interactive use).
287
-
288
- When auto-invoke is enough:
289
- The build-orchestrator agent auto-invokes coordination at three trigger
290
- points (Phase 1 Assess preamble, Phase 3 chunk-close, Phase 4 Review-A).
291
- See agents/build-orchestrator.md §"Auto-invoke coordination". Use `watch`
292
- when waiting on an async peer response or targeted inbox message. Use
293
- `status`, `heartbeat`, `announce`, or `init` for manual peer setup, debugging
294
- coordination state, or onboarding a fresh verifier session.
295
- ```
296
-
297
- ## Dispatch
298
-
299
- Based on the parsed subcommand (or `status` when `{{ARGUMENTS}}` is empty), run the corresponding bash command above using the Bash tool. Quote the result and surface key fields (status / coord_file / unresolved) in the response.
300
-
301
- For `status`, if `unresolved: []` is non-empty, hold and resolve them before the user's intended step proceeds.
@@ -1,22 +0,0 @@
1
- ---
2
- name: research-run
3
- description: "(Advanced override — `/build-loop:run` auto-routes here; use this only to force the mode.) Generate a repo-grounded research packet without committing to build. Pre-decision analysis."
4
- argument-hint: "[topic]"
5
- ---
6
-
7
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
8
-
9
- Load the `build-loop:research` skill.
10
-
11
- {{#if ARGUMENTS}}
12
- Topic: `{{ARGUMENTS}}`
13
-
14
- Run the research packet workflow:
15
- 1. Scan the repo for context relevant to the topic
16
- 2. Classify the task type
17
- 3. Generate a structured research packet (Bottom line, What I found, Best path, Why, Risks, Confidence, Next action)
18
- 4. Archive to `.build-loop/research/`
19
- 5. Present the packet — user decides next step: build, optimize, or shelve
20
- {{else}}
21
- No topic specified. Ask the user what they want to research or evaluate.
22
- {{/if}}
@@ -1,16 +0,0 @@
1
- ---
2
- description: "Surface review-needing items across episodic memory: review queue, decision rot, open conflicts, stale procedures."
3
- argument-hint: "[--rot-threshold-days N] [--no-db]"
4
- ---
5
-
6
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
7
-
8
- Load the `build-loop:knowledge-review` skill.
9
-
10
- {{#if ARGUMENTS}}
11
- Run with arguments: `{{ARGUMENTS}}`
12
- {{else}}
13
- Run with defaults (`--rot-threshold-days 90`).
14
- {{/if}}
15
-
16
- Invoke `python3 scripts/knowledge_review.py --workdir "$PWD" {{ARGUMENTS}}` and present the markdown output to the user. Read-only; do not auto-resolve any item.
@@ -1,51 +0,0 @@
1
- ---
2
- description: "Periodic self-review: mine recent build activity for issues and efficiency signals, optionally apply SAFE improvements. Use --install/--uninstall/--status to manage the launchd schedule."
3
- argument-hint: "[light|deep] [--install|--uninstall|--status]"
4
- ---
5
-
6
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
7
-
8
- {{#if ARGUMENTS}}
9
- {{#contains ARGUMENTS "--install"}}
10
- Run `python3 scripts/install_self_review.py install --json` in the current repo and report the result.
11
- {{else}}
12
- {{#contains ARGUMENTS "--uninstall"}}
13
- Run `python3 scripts/install_self_review.py uninstall --json` in the current repo and report the result.
14
- {{else}}
15
- {{#contains ARGUMENTS "--status"}}
16
- Run `python3 scripts/install_self_review.py status --json` in the current repo and report loaded/not-loaded state for both scheduled jobs.
17
- {{else}}
18
- Determine mode from ARGUMENTS: if it contains "deep" use `deep`, otherwise use `light`.
19
- Determine mode from ARGUMENTS: if it contains "deep" use `deep`, otherwise use `light`.
20
- Run `python3 scripts/self_review/__main__.py --mode <mode> --workdir . --json` and display the digest path and queued proposal count. If mode is deep, also describe the queued proposals and their classify_hint values.
21
- {{/contains}}
22
- {{/contains}}
23
- {{/contains}}
24
- {{else}}
25
- Run `python3 scripts/self_review/__main__.py --mode light --workdir . --json` and display the digest path and queued proposal count.
26
- {{/if}}
27
-
28
- ---
29
-
30
- ## Reference
31
-
32
- **Manual trigger (light — daily digest, no apply)**
33
- ```
34
- /build-loop:self-review light
35
- ```
36
-
37
- **Manual trigger (deep — full review; routes SAFE proposals through /build-loop:run)**
38
- ```
39
- /build-loop:self-review deep
40
- ```
41
-
42
- **Launchd schedule management**
43
- ```
44
- /build-loop:self-review --install # install both launchd jobs (reads .build-loop/config.json)
45
- /build-loop:self-review --status # check loaded/not-loaded
46
- /build-loop:self-review --uninstall # remove jobs and plists
47
- ```
48
-
49
- Scheduled runs are fully autonomous: the deep job (Sunday 03:00 by default) runs the gatherer, then calls `claude -p` with the apply prompt to route SAFE proposals through `/build-loop:run`, which applies + commits + collapses. Push behavior is governed by `selfReview.autonomy` in `.build-loop/config.json` (`apply_push` / `apply_local` / `propose`). RISKY and DECISION proposals are never applied autonomously — they stay queued for manual review.
50
-
51
- See `skills/build-loop/references/self-review.md` for the full config schema, graceful-degradation notes, and the APPLY PROMPT.
@@ -1,32 +0,0 @@
1
- ---
2
- description: "Set up or verify the build-loop central memory store (build-loop-memory). Guided and idempotent — copies only the packaged public seed, never overwrites your content. Safe to re-run."
3
- argument-hint: "[--check]"
4
- ---
5
-
6
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
7
-
8
- {{#if ARGUMENTS}}
9
- {{#contains ARGUMENTS "--check"}}
10
- Run `python3 "${CLAUDE_PLUGIN_ROOT:-$PWD}/scripts/install_memory.py" --check` and report the memory store status: which template files and which lanes (`indexes/`, `projects/`) exist vs are missing. Do not write anything.
11
- {{else}}
12
- Run `python3 "${CLAUDE_PLUGIN_ROOT:-$PWD}/scripts/install_memory.py" --guided` and report what was seeded vs already present, then surface the installer's printed next steps to the user.
13
- {{/contains}}
14
- {{else}}
15
- Run `python3 "${CLAUDE_PLUGIN_ROOT:-$PWD}/scripts/install_memory.py" --guided` and report what was seeded vs already present, then surface the installer's printed next steps to the user.
16
- {{/if}}
17
-
18
- ---
19
-
20
- ## Reference
21
-
22
- **Guided setup (idempotent — public seed only, no personal content):**
23
- ```
24
- /build-loop:setup-memory
25
- ```
26
-
27
- **Status check (no writes):**
28
- ```
29
- /build-loop:setup-memory --check
30
- ```
31
-
32
- The store lives at `memory_store_root()`. Resolution: an env override (`$BUILD_LOOP_MEMORY_STORE_ROOT` / `$BUILD_LOOP_MEMORY_ROOT` / `$AGENT_MEMORY_ROOT`), else a pre-existing legacy `~/dev/git-folder/build-loop-memory` if it is already on disk, else the neutral fresh-install default `~/.build-loop-memory`. On a fresh machine it is also bootstrapped automatically on session start by `hooks/session-start-memory.sh` when entirely absent; this command is the manual / repair path and the way to see what's present. Research packets, project lessons, decisions, and debugging memory all persist under this store.
@@ -1,57 +0,0 @@
1
- ---
2
- name: start-prd
3
- description: "Start a living PRD for the current project by answering 3-5 strategic questions. Loads the prd-builder skill if installed."
4
- argument-hint: "[appname]"
5
- ---
6
-
7
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
8
-
9
- Load the `prd-builder` skill from RossLabs-AI-Toolkit if available. If unavailable, fall back to the inline guidance below.
10
-
11
- {{#if ARGUMENTS}}
12
- App name: `{{ARGUMENTS}}`
13
-
14
- Run the prd-builder workflow for this app:
15
- 1. Confirm the skill applies (check trigger conditions).
16
- 2. Ask Q1-3 in a single message, formatted as draft inferences (not blank prompts) based on whatever you know about the project from the codebase + memory.
17
- 3. Wait for the user to redirect or confirm.
18
- 4. Optionally ask Q4-5 if Q1-3 leave specific gaps the user wants pinned down.
19
- 5. Draft the PRD at `docs/prd-{{ARGUMENTS}}.md` per the prd-builder Output Specification.
20
- 6. Run the Fidelity check; deepen any section that fails prediction.
21
- 7. Add a project-level pointer in `CLAUDE.md` (or `.claude/CLAUDE.md`): *"For non-trivial changes, read `docs/prd-{{ARGUMENTS}}.md` and apply its LLM Navigation Map."*
22
- 8. (If applicable) bidirectionally link to existing research packets, audit docs, or operationalization documents.
23
- {{else}}
24
- No app name provided. Either:
25
- - Provide an appname argument: `/build-loop:start-prd myapp` → drafts `docs/prd-myapp.md`
26
- - Or ask the user what app this PRD is for, then proceed with the workflow above.
27
- {{/if}}
28
-
29
- ## Fallback when prd-builder skill is not installed
30
-
31
- If the `prd-builder` skill is unavailable in this session, walk the user through the 3 core questions inline:
32
-
33
- **Q1 — Who and when (persona + trigger):** Describe the primary user (role, life stage, what they already use that this competes with). List 1-3 trigger moments that make them open the app. List 3-7 explicit "is NOT" exclusions.
34
-
35
- **Q2 — Outcome (the measurable change):** Pick ONE measurable change after N weeks/months of usage. Number, behavior, or self-perception.
36
-
37
- **Q3 — Stance (the philosophy):** Three sentences:
38
- 1. Privacy/Data: "We will/won't [send/store/share] X because Y."
39
- 2. Complexity: "Regular users will/won't see [advanced feature class] because Y."
40
- 3. Cost: "App is [free/freemium/paid/subscription/...] because Y."
41
-
42
- Then draft a markdown PRD at `docs/prd-{{ARGUMENTS}}.md` with:
43
- - Frontmatter (name, status, revision, last_updated, load_when, evolves_when, core_principles)
44
- - Body sections: How to use this PRD, LLM Navigation Map, Section Index, Fidelity check, Intent, North Star, Persona, Outcome, Methodology, Stance, Non-goals (illustrative), Roadmap stance, One-line summary, Open questions, Pivot log, Document maintenance.
45
-
46
- Cite `~/dev/git-folder/RossLabs-AI-Toolkit/skills/prd-builder/SKILL.md` for the full output spec.
47
-
48
- After drafting, run the Fidelity check by predicting answers to:
49
- - Should the next major release prioritize speed or accuracy?
50
- - Should new features add complexity or simplify existing ones?
51
- - Should the home screen show many metrics or one north-star indicator?
52
- - Should we accept a feature request from a vocal user who doesn't fit the persona?
53
- - When should the app degrade gracefully vs fail loudly?
54
- - When should we move work from on-device to cloud (or vice versa)?
55
- - Should onboarding be opinionated or open?
56
-
57
- If you can predict each cleanly with PRD section citations, the PRD passes. If not, deepen the failing section.
package/commands/test.md DELETED
@@ -1,34 +0,0 @@
1
- ---
2
- description: "(Advanced override — `/build-loop:run` auto-routes here on 'test plugin'/'validate plugin' language; use this to force the mode.) Run build-loop's plugin-tests static-analysis suite against the current repo (skill resolution, manifest, MCP, triggers, bridges, agent surfaces, cache pruning)"
3
- allowed-tools: Bash, Read
4
- argument-hint: "[--strict] [<test-name>]"
5
- ---
6
-
7
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
8
-
9
- Load the `build-loop:plugin-tests` skill.
10
-
11
- {{#if ARGUMENTS}}
12
- Args: `{{ARGUMENTS}}`
13
-
14
- If `<test-name>` is one of `skill-resolution`, `plugin-manifest`, `mcp-registration`, `trigger-phrases`, `bridge-preflight`, `agent-surface-policy`, `cache-prune`, run only that single script. Otherwise treat the args as flags for the runner.
15
-
16
- Example:
17
- - `/build-loop:test skill-resolution` — run only the namesake-collision test
18
- - `/build-loop:test --strict` — exit non-zero on any soft warning (CI gate)
19
- {{else}}
20
- Run the full plugin-test suite from the repo root:
21
-
22
- ```bash
23
- for t in scripts/test_skill_resolution.py scripts/test_plugin_manifest.py \
24
- scripts/test_mcp_registration.py scripts/test_trigger_phrases.py \
25
- scripts/test_bridge_preflight.py scripts/test_agent_surface_policy.py \
26
- scripts/test_prune_plugin_cache.py scripts/test_prune_codex_plugin_cache.py; do
27
- echo "=== $(basename $t) ==="
28
- python3 "$t" || EXIT=1
29
- done
30
- exit ${EXIT:-0}
31
- ```
32
-
33
- Surface failures with the script name + test name + the assertion message. On any failure, suggest the fix path documented in the test's docstring.
34
- {{/if}}
@@ -1,39 +0,0 @@
1
- ---
2
- name: verify-plan
3
- description: "Deterministic verifier for plan markdown — grep-checkable rules (delete-with-callers, numeric-drift, route-change-evidence, package-state, missing-evidence). Run before accepting a Phase 2 plan."
4
- argument-hint: "<plan.md>"
5
- ---
6
-
7
- <!-- SPDX-FileCopyrightText: 2025-2026 Tyrone Ross, Jr <46267523+tyroneross@users.noreply.github.com> | SPDX-License-Identifier: Apache-2.0 -->
8
-
9
- Load the `plan-verify` skill from `${CLAUDE_PLUGIN_ROOT}/skills/plan-verify/SKILL.md` for context.
10
-
11
- {{#if ARGUMENTS}}
12
- Plan file: `{{ARGUMENTS}}`
13
-
14
- Run:
15
-
16
- ```bash
17
- python3 ${CLAUDE_PLUGIN_ROOT}/scripts/plan_verify.py {{ARGUMENTS}} --repo "$PWD" --json
18
- ```
19
-
20
- Then:
21
-
22
- 1. Report the summary (BLOCKER / WARN / INFO counts and per-rule breakdown).
23
- 2. If exit code is 1, list each BLOCKER with claim_text + line + rule_id and stop — do NOT proceed to Phase 3.
24
- 3. If exit code is 0, surface WARN findings as advisory and proceed.
25
- 4. If exit code is 2, treat as verifier outage and surface to the user.
26
-
27
- For non-deterministic checks (alternatives considered, MECE scope, marker adequacy),
28
- follow up by dispatching the `plan-critic` agent with the same plan + this script's JSON output.
29
- {{else}}
30
- No plan file specified.
31
-
32
- Usage: `/plan-verify <path-to-plan.md>`
33
-
34
- Example: `/plan-verify .build-loop/plan.md`
35
-
36
- The verifier exits 0 if there are no BLOCKERs, 1 if BLOCKERs are present, 2 on verifier error.
37
-
38
- To inspect rules, read `${CLAUDE_PLUGIN_ROOT}/skills/plan-verify/SKILL.md`.
39
- {{/if}}