lastlight 0.16.0 → 0.16.2

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 (385) hide show
  1. package/README.md +71 -692
  2. package/dist/cli-config.js.map +1 -0
  3. package/dist/cli-format.js.map +1 -0
  4. package/dist/{cli/cli-server.d.ts → cli-server.d.ts} +39 -1
  5. package/dist/{cli/cli-server.js → cli-server.js} +105 -5
  6. package/dist/cli-server.js.map +1 -0
  7. package/dist/cli-timeline.js.map +1 -0
  8. package/dist/{cli/cli.js → cli.js} +9 -7
  9. package/dist/cli.js.map +1 -0
  10. package/dist/{cli/fork-cli.d.ts → fork-cli.d.ts} +3 -3
  11. package/dist/{cli/fork-cli.js → fork-cli.js} +28 -27
  12. package/dist/fork-cli.js.map +1 -0
  13. package/dist/{cli/oauth-cli.js → oauth-cli.js} +1 -1
  14. package/dist/oauth-cli.js.map +1 -0
  15. package/dist/{cli/setup.js → setup.js} +10 -4
  16. package/dist/setup.js.map +1 -0
  17. package/dist/{cli/skills-install.d.ts → skills-install.d.ts} +6 -0
  18. package/dist/{cli/skills-install.js → skills-install.js} +6 -2
  19. package/dist/skills-install.js.map +1 -0
  20. package/package.json +20 -65
  21. package/plugins/lastlight/.claude-plugin/plugin.json +1 -1
  22. package/agent-context/rules.md +0 -80
  23. package/agent-context/security.md +0 -69
  24. package/agent-context/soul.md +0 -21
  25. package/config/default.yaml +0 -119
  26. package/deploy/.env.production.example +0 -100
  27. package/deploy/entrypoint.sh +0 -82
  28. package/deploy/native/README.md +0 -160
  29. package/deploy/native/install.sh +0 -110
  30. package/deploy/native/lastlight.env.example +0 -95
  31. package/deploy/native/lastlight.service +0 -50
  32. package/deploy/sandbox-entrypoint.sh +0 -93
  33. package/dist/admin/auth.d.ts +0 -51
  34. package/dist/admin/auth.js +0 -121
  35. package/dist/admin/auth.js.map +0 -1
  36. package/dist/admin/chat-session-reader.d.ts +0 -39
  37. package/dist/admin/chat-session-reader.js +0 -84
  38. package/dist/admin/chat-session-reader.js.map +0 -1
  39. package/dist/admin/docker.d.ts +0 -61
  40. package/dist/admin/docker.js +0 -187
  41. package/dist/admin/docker.js.map +0 -1
  42. package/dist/admin/index.d.ts +0 -9
  43. package/dist/admin/index.js +0 -59
  44. package/dist/admin/index.js.map +0 -1
  45. package/dist/admin/routes.d.ts +0 -81
  46. package/dist/admin/routes.js +0 -1381
  47. package/dist/admin/routes.js.map +0 -1
  48. package/dist/admin/sessions.d.ts +0 -89
  49. package/dist/admin/sessions.js +0 -204
  50. package/dist/admin/sessions.js.map +0 -1
  51. package/dist/admin/tail.d.ts +0 -12
  52. package/dist/admin/tail.js +0 -145
  53. package/dist/admin/tail.js.map +0 -1
  54. package/dist/admin/version.d.ts +0 -22
  55. package/dist/admin/version.js +0 -92
  56. package/dist/admin/version.js.map +0 -1
  57. package/dist/cli/cli-config.js.map +0 -1
  58. package/dist/cli/cli-format.js.map +0 -1
  59. package/dist/cli/cli-server.js.map +0 -1
  60. package/dist/cli/cli-timeline.js.map +0 -1
  61. package/dist/cli/cli.js.map +0 -1
  62. package/dist/cli/fork-cli.js.map +0 -1
  63. package/dist/cli/oauth-cli.js.map +0 -1
  64. package/dist/cli/setup.js.map +0 -1
  65. package/dist/cli/skills-install.js.map +0 -1
  66. package/dist/config/config-resolve.d.ts +0 -28
  67. package/dist/config/config-resolve.js +0 -47
  68. package/dist/config/config-resolve.js.map +0 -1
  69. package/dist/config/config.d.ts +0 -157
  70. package/dist/config/config.js +0 -581
  71. package/dist/config/config.js.map +0 -1
  72. package/dist/config/core-pin.d.ts +0 -16
  73. package/dist/config/core-pin.js +0 -85
  74. package/dist/config/core-pin.js.map +0 -1
  75. package/dist/config/overlay-assets.d.ts +0 -20
  76. package/dist/config/overlay-assets.js +0 -114
  77. package/dist/config/overlay-assets.js.map +0 -1
  78. package/dist/config/overlay-bootstrap.d.ts +0 -44
  79. package/dist/config/overlay-bootstrap.js +0 -304
  80. package/dist/config/overlay-bootstrap.js.map +0 -1
  81. package/dist/connectors/github-webhook.d.ts +0 -45
  82. package/dist/connectors/github-webhook.js +0 -321
  83. package/dist/connectors/github-webhook.js.map +0 -1
  84. package/dist/connectors/index.d.ts +0 -18
  85. package/dist/connectors/index.js +0 -41
  86. package/dist/connectors/index.js.map +0 -1
  87. package/dist/connectors/messaging/base.d.ts +0 -42
  88. package/dist/connectors/messaging/base.js +0 -139
  89. package/dist/connectors/messaging/base.js.map +0 -1
  90. package/dist/connectors/messaging/delivery.d.ts +0 -14
  91. package/dist/connectors/messaging/delivery.js +0 -38
  92. package/dist/connectors/messaging/delivery.js.map +0 -1
  93. package/dist/connectors/messaging/index.d.ts +0 -4
  94. package/dist/connectors/messaging/index.js +0 -4
  95. package/dist/connectors/messaging/index.js.map +0 -1
  96. package/dist/connectors/messaging/session-manager.d.ts +0 -53
  97. package/dist/connectors/messaging/session-manager.js +0 -255
  98. package/dist/connectors/messaging/session-manager.js.map +0 -1
  99. package/dist/connectors/messaging/types.d.ts +0 -58
  100. package/dist/connectors/messaging/types.js +0 -7
  101. package/dist/connectors/messaging/types.js.map +0 -1
  102. package/dist/connectors/slack/connector.d.ts +0 -142
  103. package/dist/connectors/slack/connector.js +0 -494
  104. package/dist/connectors/slack/connector.js.map +0 -1
  105. package/dist/connectors/slack/index.d.ts +0 -2
  106. package/dist/connectors/slack/index.js +0 -3
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/slack/mrkdwn.d.ts +0 -19
  109. package/dist/connectors/slack/mrkdwn.js +0 -240
  110. package/dist/connectors/slack/mrkdwn.js.map +0 -1
  111. package/dist/connectors/types.d.ts +0 -61
  112. package/dist/connectors/types.js +0 -2
  113. package/dist/connectors/types.js.map +0 -1
  114. package/dist/cron/fanout.d.ts +0 -33
  115. package/dist/cron/fanout.js +0 -55
  116. package/dist/cron/fanout.js.map +0 -1
  117. package/dist/cron/jobs.d.ts +0 -18
  118. package/dist/cron/jobs.js +0 -37
  119. package/dist/cron/jobs.js.map +0 -1
  120. package/dist/cron/scheduler.d.ts +0 -45
  121. package/dist/cron/scheduler.js +0 -105
  122. package/dist/cron/scheduler.js.map +0 -1
  123. package/dist/engine/agent-executor.d.ts +0 -34
  124. package/dist/engine/agent-executor.js +0 -246
  125. package/dist/engine/agent-executor.js.map +0 -1
  126. package/dist/engine/chat/chat-runner.d.ts +0 -132
  127. package/dist/engine/chat/chat-runner.js +0 -424
  128. package/dist/engine/chat/chat-runner.js.map +0 -1
  129. package/dist/engine/chat/chat-skills.d.ts +0 -45
  130. package/dist/engine/chat/chat-skills.js +0 -184
  131. package/dist/engine/chat/chat-skills.js.map +0 -1
  132. package/dist/engine/chat/chat.d.ts +0 -54
  133. package/dist/engine/chat/chat.js +0 -316
  134. package/dist/engine/chat/chat.js.map +0 -1
  135. package/dist/engine/chat/message-batcher.d.ts +0 -32
  136. package/dist/engine/chat/message-batcher.js +0 -109
  137. package/dist/engine/chat/message-batcher.js.map +0 -1
  138. package/dist/engine/dispatcher.d.ts +0 -73
  139. package/dist/engine/dispatcher.js +0 -663
  140. package/dist/engine/dispatcher.js.map +0 -1
  141. package/dist/engine/event-shim.d.ts +0 -117
  142. package/dist/engine/event-shim.js +0 -435
  143. package/dist/engine/event-shim.js.map +0 -1
  144. package/dist/engine/executors/orchestrator.d.ts +0 -81
  145. package/dist/engine/executors/orchestrator.js +0 -365
  146. package/dist/engine/executors/orchestrator.js.map +0 -1
  147. package/dist/engine/executors/shared.d.ts +0 -189
  148. package/dist/engine/executors/shared.js +0 -616
  149. package/dist/engine/executors/shared.js.map +0 -1
  150. package/dist/engine/github/git-auth.d.ts +0 -62
  151. package/dist/engine/github/git-auth.js +0 -161
  152. package/dist/engine/github/git-auth.js.map +0 -1
  153. package/dist/engine/github/github-app-client.d.ts +0 -23
  154. package/dist/engine/github/github-app-client.js +0 -33
  155. package/dist/engine/github/github-app-client.js.map +0 -1
  156. package/dist/engine/github/github-tools.d.ts +0 -18
  157. package/dist/engine/github/github-tools.js +0 -263
  158. package/dist/engine/github/github-tools.js.map +0 -1
  159. package/dist/engine/github/github.d.ts +0 -1193
  160. package/dist/engine/github/github.js +0 -357
  161. package/dist/engine/github/github.js.map +0 -1
  162. package/dist/engine/github/profiles.d.ts +0 -279
  163. package/dist/engine/github/profiles.js +0 -42
  164. package/dist/engine/github/profiles.js.map +0 -1
  165. package/dist/engine/github/review-poster.d.ts +0 -98
  166. package/dist/engine/github/review-poster.js +0 -177
  167. package/dist/engine/github/review-poster.js.map +0 -1
  168. package/dist/engine/llm.d.ts +0 -79
  169. package/dist/engine/llm.js +0 -269
  170. package/dist/engine/llm.js.map +0 -1
  171. package/dist/engine/oauth.d.ts +0 -43
  172. package/dist/engine/oauth.js +0 -103
  173. package/dist/engine/oauth.js.map +0 -1
  174. package/dist/engine/router.d.ts +0 -29
  175. package/dist/engine/router.js +0 -680
  176. package/dist/engine/router.js.map +0 -1
  177. package/dist/engine/screen/classifier.d.ts +0 -93
  178. package/dist/engine/screen/classifier.js +0 -215
  179. package/dist/engine/screen/classifier.js.map +0 -1
  180. package/dist/engine/screen/screen.d.ts +0 -41
  181. package/dist/engine/screen/screen.js +0 -93
  182. package/dist/engine/screen/screen.js.map +0 -1
  183. package/dist/evals-api.d.ts +0 -24
  184. package/dist/evals-api.js +0 -22
  185. package/dist/evals-api.js.map +0 -1
  186. package/dist/index.d.ts +0 -1
  187. package/dist/index.js +0 -940
  188. package/dist/index.js.map +0 -1
  189. package/dist/managed-repos.d.ts +0 -30
  190. package/dist/managed-repos.js +0 -72
  191. package/dist/managed-repos.js.map +0 -1
  192. package/dist/notify/blocks.d.ts +0 -23
  193. package/dist/notify/blocks.js +0 -118
  194. package/dist/notify/blocks.js.map +0 -1
  195. package/dist/notify/index.d.ts +0 -17
  196. package/dist/notify/index.js +0 -7
  197. package/dist/notify/index.js.map +0 -1
  198. package/dist/notify/model.d.ts +0 -57
  199. package/dist/notify/model.js +0 -89
  200. package/dist/notify/model.js.map +0 -1
  201. package/dist/notify/notifier.d.ts +0 -18
  202. package/dist/notify/notifier.js +0 -100
  203. package/dist/notify/notifier.js.map +0 -1
  204. package/dist/notify/render.d.ts +0 -21
  205. package/dist/notify/render.js +0 -59
  206. package/dist/notify/render.js.map +0 -1
  207. package/dist/notify/transports/github.d.ts +0 -26
  208. package/dist/notify/transports/github.js +0 -27
  209. package/dist/notify/transports/github.js.map +0 -1
  210. package/dist/notify/transports/slack.d.ts +0 -27
  211. package/dist/notify/transports/slack.js +0 -37
  212. package/dist/notify/transports/slack.js.map +0 -1
  213. package/dist/notify/types.d.ts +0 -119
  214. package/dist/notify/types.js +0 -16
  215. package/dist/notify/types.js.map +0 -1
  216. package/dist/providers.d.ts +0 -125
  217. package/dist/providers.js +0 -279
  218. package/dist/providers.js.map +0 -1
  219. package/dist/sandbox/docker.d.ts +0 -180
  220. package/dist/sandbox/docker.js +0 -517
  221. package/dist/sandbox/docker.js.map +0 -1
  222. package/dist/sandbox/egress-allowlist.d.ts +0 -74
  223. package/dist/sandbox/egress-allowlist.js +0 -164
  224. package/dist/sandbox/egress-allowlist.js.map +0 -1
  225. package/dist/sandbox/egress-firewall-config.d.ts +0 -127
  226. package/dist/sandbox/egress-firewall-config.js +0 -434
  227. package/dist/sandbox/egress-firewall-config.js.map +0 -1
  228. package/dist/sandbox/images.d.ts +0 -23
  229. package/dist/sandbox/images.js +0 -55
  230. package/dist/sandbox/images.js.map +0 -1
  231. package/dist/sandbox/index.d.ts +0 -112
  232. package/dist/sandbox/index.js +0 -332
  233. package/dist/sandbox/index.js.map +0 -1
  234. package/dist/sandbox/sandbox.d.ts +0 -214
  235. package/dist/sandbox/sandbox.js +0 -453
  236. package/dist/sandbox/sandbox.js.map +0 -1
  237. package/dist/sandbox/smol.d.ts +0 -162
  238. package/dist/sandbox/smol.js +0 -485
  239. package/dist/sandbox/smol.js.map +0 -1
  240. package/dist/session-log.d.ts +0 -63
  241. package/dist/session-log.js +0 -290
  242. package/dist/session-log.js.map +0 -1
  243. package/dist/state/approval-store.d.ts +0 -88
  244. package/dist/state/approval-store.js +0 -149
  245. package/dist/state/approval-store.js.map +0 -1
  246. package/dist/state/build-assets.d.ts +0 -50
  247. package/dist/state/build-assets.js +0 -154
  248. package/dist/state/build-assets.js.map +0 -1
  249. package/dist/state/db.d.ts +0 -81
  250. package/dist/state/db.js +0 -155
  251. package/dist/state/db.js.map +0 -1
  252. package/dist/state/execution-store.d.ts +0 -257
  253. package/dist/state/execution-store.js +0 -527
  254. package/dist/state/execution-store.js.map +0 -1
  255. package/dist/state/migrate.d.ts +0 -15
  256. package/dist/state/migrate.js +0 -175
  257. package/dist/state/migrate.js.map +0 -1
  258. package/dist/state/workflow-run-store.d.ts +0 -216
  259. package/dist/state/workflow-run-store.js +0 -403
  260. package/dist/state/workflow-run-store.js.map +0 -1
  261. package/dist/telemetry/index.d.ts +0 -38
  262. package/dist/telemetry/index.js +0 -253
  263. package/dist/telemetry/index.js.map +0 -1
  264. package/dist/telemetry/pi-events.d.ts +0 -12
  265. package/dist/telemetry/pi-events.js +0 -134
  266. package/dist/telemetry/pi-events.js.map +0 -1
  267. package/dist/workflows/dag.d.ts +0 -37
  268. package/dist/workflows/dag.js +0 -118
  269. package/dist/workflows/dag.js.map +0 -1
  270. package/dist/workflows/loader.d.ts +0 -53
  271. package/dist/workflows/loader.js +0 -421
  272. package/dist/workflows/loader.js.map +0 -1
  273. package/dist/workflows/loop-eval.d.ts +0 -28
  274. package/dist/workflows/loop-eval.js +0 -74
  275. package/dist/workflows/loop-eval.js.map +0 -1
  276. package/dist/workflows/phase-executor.d.ts +0 -222
  277. package/dist/workflows/phase-executor.js +0 -1153
  278. package/dist/workflows/phase-executor.js.map +0 -1
  279. package/dist/workflows/phase-ref.d.ts +0 -50
  280. package/dist/workflows/phase-ref.js +0 -91
  281. package/dist/workflows/phase-ref.js.map +0 -1
  282. package/dist/workflows/resume.d.ts +0 -58
  283. package/dist/workflows/resume.js +0 -313
  284. package/dist/workflows/resume.js.map +0 -1
  285. package/dist/workflows/runner.d.ts +0 -63
  286. package/dist/workflows/runner.js +0 -381
  287. package/dist/workflows/runner.js.map +0 -1
  288. package/dist/workflows/schema.d.ts +0 -344
  289. package/dist/workflows/schema.js +0 -460
  290. package/dist/workflows/schema.js.map +0 -1
  291. package/dist/workflows/simple.d.ts +0 -90
  292. package/dist/workflows/simple.js +0 -393
  293. package/dist/workflows/simple.js.map +0 -1
  294. package/dist/workflows/target-policy.d.ts +0 -74
  295. package/dist/workflows/target-policy.js +0 -80
  296. package/dist/workflows/target-policy.js.map +0 -1
  297. package/dist/workflows/templates.d.ts +0 -88
  298. package/dist/workflows/templates.js +0 -127
  299. package/dist/workflows/templates.js.map +0 -1
  300. package/dist/workflows/triggers.d.ts +0 -21
  301. package/dist/workflows/triggers.js +0 -45
  302. package/dist/workflows/triggers.js.map +0 -1
  303. package/dist/workflows/verdict.d.ts +0 -19
  304. package/dist/workflows/verdict.js +0 -30
  305. package/dist/workflows/verdict.js.map +0 -1
  306. package/dist/worktree/manager.d.ts +0 -43
  307. package/dist/worktree/manager.js +0 -127
  308. package/dist/worktree/manager.js.map +0 -1
  309. package/docker-compose.yml +0 -274
  310. package/sandbox.Dockerfile +0 -68
  311. package/skills/README.md +0 -42
  312. package/skills/browser-qa/SKILL.md +0 -208
  313. package/skills/browser-qa/scripts/agent-browser.mjs +0 -531
  314. package/skills/building/SKILL.md +0 -95
  315. package/skills/chat/SKILL.md +0 -36
  316. package/skills/code-review/SKILL.md +0 -82
  317. package/skills/debug-production/SKILL.md +0 -108
  318. package/skills/demo/SKILL.md +0 -228
  319. package/skills/demo/scripts/compose-demo.sh +0 -243
  320. package/skills/issue-answer/SKILL.md +0 -91
  321. package/skills/issue-comment/SKILL.md +0 -49
  322. package/skills/issue-triage/SKILL.md +0 -149
  323. package/skills/issue-triage/references/AGENT-BRIEF.md +0 -65
  324. package/skills/pr-comment/SKILL.md +0 -64
  325. package/skills/pr-review/SKILL.md +0 -148
  326. package/skills/pr-review/references/findings-schema.md +0 -89
  327. package/skills/qa-test/SKILL.md +0 -97
  328. package/skills/repo-health/SKILL.md +0 -67
  329. package/skills/security-feedback/SKILL.md +0 -173
  330. package/skills/security-feedback/references/templates.md +0 -77
  331. package/skills/security-review/SKILL.md +0 -215
  332. package/skills/security-review/references/issue-format.md +0 -302
  333. package/skills/verify/SKILL.md +0 -118
  334. package/workflows/answer.yaml +0 -44
  335. package/workflows/build.yaml +0 -129
  336. package/workflows/cron-health.yaml +0 -6
  337. package/workflows/cron-review.yaml +0 -8
  338. package/workflows/cron-security.yaml +0 -6
  339. package/workflows/cron-triage.yaml +0 -8
  340. package/workflows/demo.yaml +0 -62
  341. package/workflows/examples/bash-smoke.yaml +0 -41
  342. package/workflows/examples/parallel-review.yaml +0 -36
  343. package/workflows/examples/tdd-loop.yaml +0 -17
  344. package/workflows/explore.yaml +0 -80
  345. package/workflows/issue-comment.yaml +0 -15
  346. package/workflows/issue-triage.yaml +0 -22
  347. package/workflows/pr-comment.yaml +0 -16
  348. package/workflows/pr-fix.yaml +0 -17
  349. package/workflows/pr-review.yaml +0 -50
  350. package/workflows/prompts/answer.md +0 -68
  351. package/workflows/prompts/architect.md +0 -44
  352. package/workflows/prompts/classifier.md +0 -60
  353. package/workflows/prompts/classify-adds-info.md +0 -17
  354. package/workflows/prompts/demo.md +0 -125
  355. package/workflows/prompts/executor.md +0 -42
  356. package/workflows/prompts/explore-ask.md +0 -99
  357. package/workflows/prompts/explore-publish.md +0 -31
  358. package/workflows/prompts/explore-read.md +0 -120
  359. package/workflows/prompts/explore-synthesize.md +0 -88
  360. package/workflows/prompts/fix.md +0 -18
  361. package/workflows/prompts/guardrails.md +0 -96
  362. package/workflows/prompts/pr-fix.md +0 -26
  363. package/workflows/prompts/pr.md +0 -39
  364. package/workflows/prompts/qa-browser.md +0 -95
  365. package/workflows/prompts/qa-synth.md +0 -44
  366. package/workflows/prompts/qa-test.md +0 -60
  367. package/workflows/prompts/re-reviewer.md +0 -33
  368. package/workflows/prompts/reviewer.md +0 -60
  369. package/workflows/prompts/verify-browser.md +0 -93
  370. package/workflows/prompts/verify-synth.md +0 -44
  371. package/workflows/prompts/verify.md +0 -63
  372. package/workflows/qa-test.yaml +0 -94
  373. package/workflows/repo-health.yaml +0 -15
  374. package/workflows/security-feedback.yaml +0 -25
  375. package/workflows/security-review.yaml +0 -37
  376. package/workflows/verify.yaml +0 -93
  377. /package/dist/{cli/cli-config.d.ts → cli-config.d.ts} +0 -0
  378. /package/dist/{cli/cli-config.js → cli-config.js} +0 -0
  379. /package/dist/{cli/cli-format.d.ts → cli-format.d.ts} +0 -0
  380. /package/dist/{cli/cli-format.js → cli-format.js} +0 -0
  381. /package/dist/{cli/cli-timeline.d.ts → cli-timeline.d.ts} +0 -0
  382. /package/dist/{cli/cli-timeline.js → cli-timeline.js} +0 -0
  383. /package/dist/{cli/cli.d.ts → cli.d.ts} +0 -0
  384. /package/dist/{cli/oauth-cli.d.ts → oauth-cli.d.ts} +0 -0
  385. /package/dist/{cli/setup.d.ts → setup.d.ts} +0 -0
@@ -1,125 +0,0 @@
1
- You are recording a short **demo video** of a PR or feature — driving the
2
- repo's web UI in a **real headless browser**, screen-recording the session, and
3
- compositing a titled mp4. Read the `demo` skill for the director procedure and
4
- the `compose-demo.sh` wrapper, the `browser-qa` skill for the driver contract,
5
- and the `building` skill for install/run — then follow them.
6
-
7
- **Stay in the browser.** Your deliverable is a *moving* demonstration of
8
- behaviour, not a code walkthrough. Don't quote or analyse source files — show
9
- what the running app does.
10
-
11
- ## What to demo
12
-
13
- {{#if commentBody}}
14
- **Request / notes:**
15
- {{commentBody}}
16
- {{/if}}
17
- {{#if issueTitle}}**Issue/PR title:** {{issueTitle}}{{/if}}
18
- {{#if issueBody}}
19
- **Issue/PR body:**
20
- {{issueBody}}
21
- {{/if}}
22
-
23
- Target repo: **{{owner}}/{{repo}}** at branch {{branch}}
24
- {{#if issueNumber}}Target issue/PR: **#{{issueNumber}}**{{/if}}
25
-
26
- Read the PR (description, diff, linked issue) from the context above. Decide the
27
- single thing the video must prove — the moment that only happens if the change
28
- works as claimed — and whether the story is a `single` walkthrough (default) or a
29
- `side-by-side` before/after comparison (only for a genuine regression/refactor).
30
-
31
- ## First: confirm the browser + ffmpeg are available
32
-
33
- Run the driver's probe before anything else (the `browser-qa` skill is staged
34
- into this phase's bundle — find its absolute path from the available-skills
35
- catalogue):
36
-
37
- ```
38
- node <browser-qa skill dir>/scripts/agent-browser.mjs doctor
39
- ```
40
-
41
- If `doctor` exits non-zero, the toolchain isn't present: say so plainly and
42
- stop — **do not fake a recording.** This phase only runs on the docker QA image,
43
- so `doctor` should pass.
44
-
45
- ## Workspace + run the app
46
-
47
- You are already inside the **{{repo}}** repo — the harness pre-cloned it and your
48
- cwd is the repo root (no `cd`){{#if baseBranch}}, **checked out at the PR head
49
- branch `{{branch}}`**, so the workspace already holds the PR's code: this checkout
50
- *is* your "after" state{{/if}}. Follow the `building` skill to install
51
- dependencies and start the dev-server in the background; poll with `curl` until
52
- it answers on `localhost:<port>`.
53
-
54
- {{#if baseBranch}}**This is a PR → record a `side-by-side` before/after.** Record
55
- the **after** first, straight from the current checkout (`{{branch}}`) — do not
56
- re-checkout for it. Then record the **before** from the base branch
57
- `{{baseBranch}}`. The pre-clone is shallow + single-branch, so the base isn't
58
- present locally yet — fetch it explicitly by ref (never trust an ambiguously
59
- named local branch):
60
-
61
- ```
62
- git fetch --depth 1 origin {{baseBranch}}
63
- git checkout -B {{baseBranch}}-base FETCH_HEAD
64
- ```
65
-
66
- Re-run `building`'s install + restart the dev-server after switching. When you
67
- composite, the **first** clip is the left/BEFORE panel and the **second** is the
68
- right/AFTER panel.
69
-
70
- **Verify before you ship:** the disambiguating change must actually appear in the
71
- *after* recording and be absent from the *before* (use the driver's `text`/
72
- `assertText` to read it on both). If both states look identical, your checkout is
73
- wrong — STOP and fix it; do not ship a side-by-side that proves nothing.{{/if}}
74
-
75
- ## Capture and compose
76
-
77
- Author a `flow.json` (shape in the `browser-qa` skill) that scripts the
78
- interaction like a director — record the baseline first, hold after state
79
- changes (use `{"pause": 1200}` steps), verify between steps. Recording
80
- auto-enables the driver's demo mode, so a **visible cursor** animates to each
81
- target and a beat is held between steps — prefer `type` over `fill` so typing
82
- shows on screen. Record with `--record-dir`:
83
-
84
- ```
85
- node <browser-qa skill dir>/scripts/agent-browser.mjs run flow.json \
86
- --base-url http://localhost:<port> --record-dir /tmp/demo-cap
87
- ```
88
-
89
- Then composite the raw webm into the final mp4 with the `demo` skill's wrapper,
90
- writing it into **`{{issueDir}}/demo.mp4`** (the harness harvests that dir):
91
-
92
- ```
93
- <demo skill dir>/scripts/compose-demo.sh \
94
- --output {{issueDir}}/demo.mp4 --title "<PR # — what it does>" \
95
- --subtitle "<one line>" --layout single --speed 1 --target-size-mb 5 \
96
- /tmp/demo-cap/session.webm
97
- ```
98
-
99
- Self-check the result with `ffprobe` (the wrapper prints a summary): resolution
100
- sane, duration watchable (~15–90s), and **size ≤ 5 MB** so GitHub embeds it. If
101
- it's over, re-run with a lower `--target-size-mb` or a higher `--speed`.
102
-
103
- ## How your report is delivered — read carefully
104
-
105
- Your **final message is the report**, and the harness posts it for you{{#if issueNumber}} as a
106
- comment on **#{{issueNumber}}**{{/if}}{{#if !issueNumber}} back into the thread this request came from{{/if}}.
107
- Use the `demo` skill's report shape — a one-line environment summary, a sentence
108
- on what the video shows and the moment to watch, the video, and a one-line
109
- "not covered". **Keep it tight.**
110
-
111
- **Embed the video inline so it plays in the comment.**
112
- {{#if artifactBaseUrl}}Your `{{issueDir}}/demo.mp4` is served publicly at
113
- `{{artifactBaseUrl}}/demo.mp4`. Include a raw HTML video tag on its own line —
114
- `<video src="{{artifactBaseUrl}}/demo.mp4" controls></video>` — plus a plain
115
- link beneath it as a fallback: `[demo.mp4]({{artifactBaseUrl}}/demo.mp4)`. GitHub
116
- renders `<video>` in comments. Do **NOT** wrap the tag in backticks or a code
117
- fence (inside a code span it shows as literal text instead of playing).{{/if}}{{#if !artifactBaseUrl}}No
118
- public URL is configured, so reference the video by filename (`demo.mp4`) and
119
- note it's in the run's Artifacts view.{{/if}}
120
-
121
- **Do NOT post it yourself** with `github_add_issue_comment` — that would
122
- double-post. Never stage or fabricate a result the feature didn't produce; if
123
- something doesn't work, the honest demo shows it. If the video couldn't be
124
- recorded or persisted (no server-mode build assets), say so plainly and describe
125
- what you observed instead of pretending a clip exists.
@@ -1,42 +0,0 @@
1
- You are the EXECUTOR. Implement precisely what the architect's plan requires.
2
-
3
- You are already inside the {{repo}} repo at branch {{branch}} — the harness
4
- pre-cloned it and your cwd is the repo root. Git is configured.
5
-
6
- Start by reading {{issueDir}}/architect-plan.md.
7
-
8
- WORK FROM THE PLAN — it contains an exhaustive file manifest and the exact
9
- commands:
10
- - Implement the plan's file manifest directly. Read a file only immediately
11
- before you edit it; do NOT re-explore areas the plan already mapped.
12
- - Use grep/find only to fill genuine gaps the plan didn't cover (if the plan
13
- is missing a sibling file, fix it there and proceed).
14
- - Use the test/lint/typecheck commands the plan copied from the guardrails
15
- report — no need to re-open guardrails-report.md unless the plan omitted them.
16
-
17
- Follow the **building** skill for the mechanics: install dependencies first,
18
- write the failing test before implementing (TDD), and run the full
19
- test/lint/typecheck gate once before committing — all of it must pass before you
20
- commit or claim done.
21
-
22
- Before committing, also honour the building skill's **decomposition budget** and
23
- **type-safety** rules: keep functions under ~15 cyclomatic complexity (a
24
- function that parses, validates, and emits is three functions — extract helpers),
25
- and never use `as any` or other compiler-silencing assertions to pass the gate or
26
- to skip a validator the same code defines. If the repo's only test path needs an
27
- unavailable external service, add a runnable unit/CLI test with in-memory
28
- fixtures rather than declaring the change unverified.
29
-
30
- AFTER THE GATE PASSES:
31
- 1. Write {{issueDir}}/executor-summary.md:
32
- - What was done, files changed
33
- - Test / lint / typecheck results (paste actual output)
34
- - Any deviations from the plan, known issues
35
- 2. Update {{issueDir}}/status.md: current_phase = executor
36
- 3. git add -A && git commit -m "feat: implement #{{issueNumber}}
37
-
38
- Tested: {test command} -> {result}
39
- Scope-risk: {low|medium|high}"
40
- 4. git push origin HEAD
41
-
42
- OUTPUT: List of files changed, test/lint/typecheck results, commit hash.
@@ -1,99 +0,0 @@
1
- You are running a socratic questioning loop to help a maintainer shape a
2
- half-formed idea into a detailed spec. This is iteration {{iteration}} of
3
- {{maxIterations}}.
4
-
5
- The **{{owner}}/{{repo}}** repo is checked out at `{{repo}}/` (a
6
- subdirectory of your cwd) — the previous read phase ensured it.
7
-
8
- **Important paths** (relative to the workspace cwd):
9
- - Repo root: `{{repo}}/` (cd into it to use git)
10
- - Context doc: `{{issueDir}}/explore-context.md`
11
-
12
- Start by reading the context doc for architecture, key code excerpts, and
13
- existing patterns. Only read additional source files if the context doc
14
- doesn't cover what you need.
15
-
16
- ## Baseline from the initial read
17
-
18
- {{baseline}}
19
-
20
- ## Q&A accumulated so far in this thread
21
-
22
- {{#if scratch.socratic.qa}}
23
- ```
24
- {{scratch.socratic.qa}}
25
- ```
26
- {{/if}}
27
- {{#if !scratch.socratic.qa}}
28
- _(no questions answered yet — this is the first round)_
29
- {{/if}}
30
-
31
- ## Your task
32
-
33
- One of two things, depending on whether you have enough signal to write a
34
- good spec:
35
-
36
- ### If you DON'T have enough signal yet
37
-
38
- Walk down the design tree one branch at a time, resolving dependencies
39
- between decisions in order — answering an upstream decision often changes
40
- what the downstream questions even are.
41
-
42
- **First, try to answer the question yourself.** If reading the code would
43
- settle it, read the code instead of asking. Only put a question to the user
44
- when the codebase genuinely can't decide it.
45
-
46
- **Then, of the questions that remain, only ASK about the high-stakes ones**
47
- — decisions where guessing wrong would be costly or hard to reverse, or
48
- where the design genuinely forks. **Low-stakes decisions you decide
49
- yourself**: pick the sensible default (usually "follow the existing
50
- pattern"), and record it in `{{issueDir}}/explore-context.md` under a
51
- `## Decisions made during exploration` section (create it if absent), as
52
- `<decision> → <what you chose> (<one-line why>)`. The user can override
53
- any of these later; surfacing them in the spec is enough.
54
-
55
- When you do ask, ask **one primary question per turn**, and **always give
56
- your recommended answer** with a one-line rationale grounded in the code
57
- you read. If a second question is trivially coupled to the first (you can't
58
- sensibly answer one without the other), you may tack it on as a short
59
- follow-up — but never a flat list of unrelated questions. Keep it
60
- conversational; the user replies in the same thread.
61
-
62
- Shape of a good turn:
63
-
64
- > I see `FooService` already handles this today. I'd **extend** it rather
65
- > than add a parallel service — it already owns the auth path. Sound right?
66
- > ↳ If we extend, I'd reuse its existing 5-min cache rather than add a new
67
- > one (assuming that's fine).
68
-
69
- Good questions pin down scope ("only X, or also Y?"), surface hidden
70
- constraints ("must this stay backwards-compatible with Z?"), flush out
71
- users / success criteria ("who uses this, and what makes them say it
72
- worked?"), and reference specific code you found.
73
-
74
- If you discover new relevant code, **append it to
75
- `{{issueDir}}/explore-context.md`** so the synthesize phase has it too.
76
-
77
- **Do NOT output the word READY** on this path. Just the question.
78
-
79
- ### If you DO have enough signal
80
-
81
- Output the literal word `READY` on its own line at the very end of your
82
- message, optionally preceded by a short "I think I have enough to write
83
- this up — moving to draft." note. The `READY` marker ends the loop and
84
- advances to the synthesis phase.
85
-
86
- ## Rules
87
-
88
- - Never ask the same question twice — check the accumulated Q&A first.
89
- - Ask **one** primary question per turn (plus an optional tightly-coupled
90
- follow-up). Never dump a list of unrelated questions.
91
- - Every question carries your recommended answer — never ask open-endedly
92
- without saying what you'd do.
93
- - Prefer deciding low-stakes items yourself (recorded in the context doc)
94
- over asking. Only escalate genuinely high-stakes / forking decisions.
95
- - If the user says "we're done", "just write it up", or "your
96
- recommendations look good" in their most recent answer, output READY
97
- immediately.
98
- - Don't preamble or recap — the user can see the thread already.
99
- - Use the cloned repo to make your questions specific and grounded.
@@ -1,31 +0,0 @@
1
- You are publishing an approved spec that the previous phase wrote to
2
- `{{issueDir}}/explore-spec.md`.
3
-
4
- ## Your task
5
-
6
- 1. Read the spec file at `{{issueDir}}/explore-spec.md` (relative to the cwd).
7
- 2. Decide the destination based on where this explore was triggered from:
8
-
9
- ### GitHub-originated (triggered by a comment on an existing issue)
10
-
11
- If `{{issueNumber}}` is set and non-zero (and not a Slack-originated run),
12
- post the spec as a **comment on issue #{{issueNumber}}** in
13
- `{{owner}}/{{repo}}` using the `github_add_issue_comment` MCP tool.
14
-
15
- ### Slack-originated (triggered in a Slack thread)
16
-
17
- If there's no `{{issueNumber}}` (or it's `0`), the run originated from a
18
- Slack mention. Create a **new GitHub issue** in the configured destination
19
- repo — check the environment variable `EXPLORE_DEFAULT_REPO` for the
20
- `owner/name` to use, unless the baseline identified a specific target repo.
21
- The new issue body should be the spec contents plus a trailer line crediting
22
- the Slack thread as the source.
23
-
24
- ## Rules
25
-
26
- - Read the spec file first — don't paraphrase it from memory.
27
- - On success, output a short message with the link. For example:
28
- `**Spec published:** https://github.com/owner/repo/issues/123`
29
- This output is sent directly to the user in Slack/GitHub, so make it
30
- useful — include the URL.
31
- - On failure, output the error plainly. Don't retry silently.
@@ -1,120 +0,0 @@
1
- You are helping a maintainer think through a half-formed idea. Before we ask
2
- any clarifying questions, you need to clone the target repo, explore the
3
- relevant code, and write a detailed context document that all subsequent
4
- phases will reference.
5
-
6
- ## Step 1 — Prepare the workspace
7
-
8
- The repo lives (or will live) in a `{{repo}}/` subdirectory under your
9
- cwd. Check first:
10
-
11
- ```
12
- ls -la
13
- ```
14
-
15
- - If you see `{{repo}}/.git/` already, the harness pre-cloned it.
16
- `cd {{repo}}` and continue.
17
- - Otherwise clone it into a `{{repo}}/` subdirectory and cd in:
18
-
19
- ```
20
- git clone https://github.com/{{owner}}/{{repo}}.git {{repo}}
21
- cd {{repo}}
22
- ```
23
-
24
- Git credentials are already configured.
25
-
26
- All subsequent file paths in this prompt are relative to the cwd.
27
-
28
- {{#if issueNumber}}
29
- ## Step 2 — Read the issue
30
-
31
- Fetch issue #{{issueNumber}} using the GitHub MCP tools to get the latest
32
- title, body, and comments.
33
- {{/if}}
34
-
35
- ## Source material
36
-
37
- {{#if issueTitle}}**Issue title:** {{issueTitle}}{{/if}}
38
- {{#if issueBody}}
39
- **Issue body:**
40
-
41
- ```
42
- {{issueBody}}
43
- ```
44
- {{/if}}
45
- {{#if commentBody}}
46
- **Most recent comment / Slack message that triggered this explore:**
47
-
48
- ```
49
- {{commentBody}}
50
- ```
51
- {{/if}}
52
-
53
- ## Step 3 — Deep codebase exploration
54
-
55
- Read the source material above, then explore the codebase thoroughly to
56
- understand everything relevant to the idea. Look at:
57
-
58
- - Directory structure and key entry points
59
- - Files, modules, and types that relate to the idea
60
- - Existing patterns, conventions, and abstractions the idea would build on
61
- - Database schemas, API routes, or config that would be affected
62
- - Tests and how they're structured in the relevant areas
63
-
64
- ## Step 4 — Write the context document
65
-
66
- First create the scratch directory at the WORKSPACE root (alongside
67
- `{{repo}}/`, not inside it):
68
-
69
- ```
70
- mkdir -p ../{{issueDir}} # if you're inside the {{repo}}/ subdir
71
- # OR, if you cd'd back out:
72
- mkdir -p {{issueDir}}
73
- ```
74
-
75
- Then write a detailed context file to **`{{issueDir}}/explore-context.md`**
76
- relative to the workspace root (i.e. `../{{issueDir}}/explore-context.md`
77
- when you're inside the repo subdir). This file is the primary reference for
78
- all subsequent phases — they should rarely need to re-explore the codebase.
79
-
80
- Structure it as:
81
-
82
- ```markdown
83
- # Explore context: <short description of the idea>
84
-
85
- ## Idea summary
86
- <2-3 sentences distilling what the user wants>
87
-
88
- ## Codebase overview
89
- <Brief description of the repo's purpose and structure>
90
-
91
- ## Relevant architecture
92
- <How the parts of the codebase that matter for this idea fit together.
93
- Include file paths, key types/interfaces, function signatures, data flow.>
94
-
95
- ## Key code excerpts
96
- <Paste the most relevant snippets (with file paths and line numbers) that
97
- a later agent would need to understand the design space. Don't be shy —
98
- include enough that the next phase doesn't have to re-read these files.>
99
-
100
- ## Existing patterns to follow
101
- <Conventions, naming, testing approach, etc. from the codebase that the
102
- new work should match.>
103
-
104
- ## What we know
105
- - <bullet>
106
-
107
- ## What's unclear
108
- - <bullet>
109
- ```
110
-
111
- Be thorough — the quality of the socratic questions and the final spec
112
- depend entirely on how well this document captures the relevant code.
113
-
114
- ## Step 5 — Output the baseline
115
-
116
- After writing the context file, output a brief baseline summary (the
117
- "What we know" and "What's unclear" sections) as your reply. This is what
118
- the socratic loop will see as `{{baseline}}`.
119
-
120
- Do not ask questions yet. Do not write a spec yet.
@@ -1,88 +0,0 @@
1
- You are writing the detailed spec for an idea that's been shaped through a
2
- socratic Q&A loop with a maintainer.
3
-
4
- The **{{owner}}/{{repo}}** repo is checked out at `{{repo}}/` (a
5
- subdirectory of your cwd).
6
-
7
- **Important paths** (relative to the workspace cwd):
8
- - Repo root: `{{repo}}/` (cd into it to use git)
9
- - Context doc: `{{issueDir}}/explore-context.md`
10
- - Spec output: `{{issueDir}}/explore-spec.md`
11
-
12
- Start by reading the context doc — it contains the architecture, key code
13
- excerpts, and existing patterns captured during the initial read and
14
- updated during the socratic loop. Only read additional source files if the
15
- context doc doesn't cover what you need.
16
-
17
- ## Baseline understanding
18
-
19
- {{baseline}}
20
-
21
- ## Full Q&A transcript
22
-
23
- ```
24
- {{scratch.socratic.qa}}
25
- ```
26
-
27
- ## Your task
28
-
29
- Read the relevant parts of the codebase to ground the spec in reality.
30
- Then produce a detailed spec document. The structure below is the target —
31
- hit every heading, even if a section is "none" or "to be decided". Write it
32
- to `{{issueDir}}/explore-spec.md` using the Write tool.
33
-
34
- ```
35
- # <short title summarizing the idea>
36
-
37
- ## Problem
38
- <2-4 sentences — what's broken or missing today, whose pain this fixes>
39
-
40
- ## Users
41
- <who will use this and in what context>
42
-
43
- ## Goals
44
- - <goal 1>
45
- - <goal 2>
46
-
47
- ## Non-goals
48
- - <explicit non-goal 1>
49
- - <explicit non-goal 2>
50
-
51
- ## Proposed design
52
- <prose description — the how. Reference specific files, modules, and
53
- patterns from the codebase. Break into subsections if useful.>
54
-
55
- ## Key files to modify
56
- | File | Change |
57
- |------|--------|
58
- | path/to/file | what changes |
59
-
60
- ## Decisions made during exploration
61
- <Low-stakes decisions the agent resolved itself during the Q&A loop rather
62
- than asking — pull these from the `## Decisions made during exploration`
63
- section of the context doc. Format as `<decision> → <choice> (<why>)`. The
64
- maintainer can override any of these. Omit the heading only if there were
65
- none.>
66
-
67
- ## Acceptance criteria
68
- - <observable outcome 1>
69
- - <observable outcome 2>
70
-
71
- ## Open questions
72
- - <anything the Q&A didn't resolve>
73
-
74
- ## Out of scope
75
- - <things that are related but intentionally deferred>
76
- ```
77
-
78
- ## Rules
79
-
80
- - Write the file to `{{issueDir}}/explore-spec.md`
81
- — don't inline it in your reply.
82
- - Reference actual code paths from the repo, not hypothetical ones.
83
- - After writing the file, output a short summary (3-6 lines) saying what
84
- the spec covers. The next phase (post-approval publish) will read the
85
- file, not your reply.
86
- - Don't invent facts that aren't grounded in the Q&A or codebase. If a
87
- section is uncertain, write "To be decided during implementation" rather
88
- than guessing.
@@ -1,18 +0,0 @@
1
- You are the EXECUTOR (fix cycle {{fixCycle}}). Fix ONLY the issues reported by the reviewer.
2
-
3
- You are already inside the {{repo}} repo at branch {{branch}} — the harness
4
- pre-cloned it and your cwd is the repo root. Git is configured.
5
-
6
- Start by reading {{issueDir}}/reviewer-verdict.md — fix ONLY those issues. The
7
- test/lint/typecheck commands are in {{issueDir}}/guardrails-report.md (and the
8
- architect plan).
9
-
10
- Follow the **building** skill: run the full test/lint/typecheck gate once before
11
- committing — all of it must pass before you commit.
12
-
13
- AFTER THE GATE PASSES:
14
- 1. APPEND to {{issueDir}}/executor-summary.md under heading "## Fix Cycle {{fixCycle}}" (what was fixed, test/lint/typecheck results)
15
- 2. Update status.md: current_phase = fix_loop_{{fixCycle}}
16
- 3. git add -A && git commit -m "fix: address review feedback for #{{issueNumber}} (cycle {{fixCycle}})" && git push origin HEAD
17
-
18
- OUTPUT: What was fixed, test/lint/typecheck results.
@@ -1,96 +0,0 @@
1
- You are running a PRE-FLIGHT GUARDRAILS CHECK before implementation work begins.
2
-
3
- You are already inside the {{repo}} repo at branch {{branch}} — the harness
4
- pre-cloned it and your cwd is the repo root. Read CLAUDE.md (and
5
- CONTRIBUTING.md if present) for project-specific guidance.
6
-
7
- THE ISSUE THIS BUILD WILL IMPLEMENT (use it to judge the escape hatch below):
8
- {{contextSnapshot}}
9
-
10
- SKIP CHECK — if {{issueDir}}/status.md already exists and contains
11
- guardrails_status: READY, output "READY — guardrails already verified" and stop.
12
-
13
- INSTALL DEPENDENCIES FIRST (do this before running ANY check command):
14
- The harness pre-clones the repo but does NOT install dependencies, so the
15
- test/lint/typecheck binaries (vitest, oxlint, tsc, eslint, ruff, …) will not
16
- resolve until you install them. Detect the ecosystem and run the install:
17
- - Node — pick the package manager from the lockfile: `pnpm-lock.yaml` → `pnpm install`,
18
- `yarn.lock` → `yarn install`, `package-lock.json` (or none) → `npm ci`
19
- (fall back to `npm install` if `npm ci` fails for a lockfile mismatch).
20
- - Python — `pip install -e .` / `pip install -r requirements.txt`, or `poetry install` / `uv sync`.
21
- - Rust — cargo fetches on first build; no separate step.
22
- Only AFTER a successful install should you judge whether a command "runs". A
23
- binary that is missing *after* dependencies installed cleanly is a real gap; a
24
- binary missing *because deps were never installed* is NOT — do not BLOCK on it.
25
- If the install itself fails (bad lockfile, missing manifest), that IS a blocking
26
- guardrail — report it as such.
27
-
28
- CHECK THESE GUARDRAILS:
29
-
30
- The rule for each check below: **if it is present, it MUST pass; if it is not
31
- present, that's fine.** A configured command that FAILS is a blocker. A command
32
- that simply doesn't exist is NOT a blocker.
33
-
34
- 1. **Test Framework** — Does the repo have a test runner (vitest, jest, pytest,
35
- cargo test, etc.)? Do test files exist? Does the test command run AND pass?
36
- (Tests are the primary signal — a repo with no test framework at all is the
37
- one absent-tooling case that still blocks, since there's nothing to verify
38
- the build against.)
39
-
40
- 2. **Linting** — Is a linter configured (eslint, biome, ruff, clippy, etc.)?
41
- If configured, the lint command MUST pass → a failing lint BLOCKS. If no
42
- linter is configured at all, that's fine — note it and do NOT block.
43
-
44
- 3. **Type Checking** — Is type checking configured (tsconfig.json + tsc, mypy,
45
- cargo check, etc.)? If configured, the typecheck command MUST pass → a
46
- failing typecheck BLOCKS. If not configured at all, that's fine — note it
47
- and do NOT block.
48
-
49
- 4. **CI Pipeline** (informational only) — Does .github/workflows/ exist with test/lint steps?
50
-
51
- AFTER CHECKING:
52
- 1. mkdir -p {{issueDir}}
53
- 2. Write {{issueDir}}/guardrails-report.md with the status of each check
54
- 3. Write {{issueDir}}/status.md with current_phase: guardrails AND guardrails_status: READY or BLOCKED
55
- {{#if !externalizeArtifacts}}4. git add .lastlight/ && git commit -m "docs: guardrails check for #{{issueNumber}}"
56
- 5. git push -u origin HEAD{{/if}}{{#if externalizeArtifacts}}4. Do NOT git add or commit {{issueDir}}/ — the harness persists it to the Last Light server automatically.{{/if}}
57
-
58
- ESCAPE HATCH — bootstrap tasks (CHECK THIS FIRST):
59
- If THE ISSUE ABOVE is itself asking to ADD the tooling you're checking for —
60
- set up tests / a test harness, linting, type-checking, CI, an AGENTS.md, etc. —
61
- then missing tooling is the expected STARTING state, not a blocker. The whole
62
- point of the build is to create it. In that case:
63
- - Do NOT output BLOCKED, and do NOT create a separate guardrails issue.
64
- - In guardrails-report.md, mark this a BOOTSTRAP build: list what's missing and
65
- state that the executor must ESTABLISH this tooling as the task — there are no
66
- existing test/lint/typecheck commands to rely on yet.
67
- - Write guardrails_status: READY and OUTPUT: READY so the build proceeds to the
68
- architect.
69
- This applies even when there is no `lastlight:bootstrap` label and the title has
70
- no `guardrails:` prefix — judge it from the issue's intent.
71
-
72
- Otherwise (the issue is normal feature/bug work, not about adding tooling):
73
-
74
- Apply the present-must-pass rule. BLOCK if ANY of these hold:
75
- - there is no test framework at all, or the test command is broken / fails;
76
- - a linter IS configured but the lint command fails;
77
- - type checking IS configured but the typecheck command fails;
78
- - the dependency install itself failed.
79
-
80
- A check that is simply ABSENT (no linter configured, no typecheck configured) is
81
- NOT a blocker — note it in the report and proceed. Do not create a guardrails
82
- issue merely because lint or typecheck tooling is missing.
83
-
84
- IF A BLOCKING CONDITION ABOVE HOLDS:
85
- - Use the MCP tool github_create_issue to create a guardrails issue in the repo with:
86
- - title prefixed exactly with "guardrails:" (e.g. "guardrails: no test framework configured")
87
- - labels including {{bootstrapLabel}} so subsequent build attempts on this issue
88
- can detect that the task IS to set up guardrails (the orchestrator will then
89
- skip the BLOCKED gate and let the executor install the missing tooling).
90
- - Use github_add_issue_comment on issue #{{issueNumber}} to link the guardrails issue
91
- - OUTPUT must include: BLOCKED
92
-
93
- OTHERWISE — every check that EXISTS passes (absent lint/typecheck is fine):
94
- - OUTPUT must include: READY
95
-
96
- OUTPUT: Exactly one of READY or BLOCKED, followed by a brief summary of what was found.
@@ -1,26 +0,0 @@
1
- You are fixing a PR based on a maintainer's request.
2
-
3
- You are already inside the {{repo}} repo at branch {{branch}} — the harness
4
- pre-cloned the PR's head ref and your cwd is the repo root. Git is configured.
5
- Read CLAUDE.md (and CONTRIBUTING.md if present) for project-specific guidance.
6
-
7
- CONTEXT:
8
- - PR #{{prNumber}}: {{prTitle}}
9
- - Maintainer request: {{commentBody}}
10
- {{ciSection}}
11
- {{#if ciSection}}
12
- NOTE: The CI failures above are the primary issue — fix those first.
13
- {{/if}}
14
- INSTRUCTIONS:
15
- 1. Understand what the maintainer is asking for
16
- 2. Read the relevant code and make the fix — keep changes minimal and focused
17
- 3. Follow the **building** skill: install dependencies, then run the full
18
- test/lint/typecheck gate — do NOT commit until it all passes
19
-
20
- AFTER FIXING:
21
- 1. git add -A && git commit -m "fix: address feedback on PR #{{prNumber}}
22
-
23
- {{commentBody}}"
24
- 2. git push origin HEAD
25
-
26
- OUTPUT: Brief summary of what was fixed and test results.