codexkit 1.0.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 (655) hide show
  1. package/.codex/.env.example +27 -0
  2. package/.codex/.template-manifest.json +631 -0
  3. package/.codex/.version +1 -0
  4. package/.codex/agents/builder.toml +104 -0
  5. package/.codex/agents/debugger.toml +67 -0
  6. package/.codex/agents/general.toml +41 -0
  7. package/.codex/agents/painter.toml +40 -0
  8. package/.codex/agents/planner.toml +60 -0
  9. package/.codex/agents/refactorer.toml +76 -0
  10. package/.codex/agents/reviewer.toml +60 -0
  11. package/.codex/agents/runner.toml +40 -0
  12. package/.codex/agents/scout.toml +133 -0
  13. package/.codex/agents/shipper.toml +69 -0
  14. package/.codex/agents/vision.toml +69 -0
  15. package/.codex/config.toml +146 -0
  16. package/.codex/context/architecture.md +66 -0
  17. package/.codex/context/conventions.md +98 -0
  18. package/.codex/context/current-priorities.md +33 -0
  19. package/.codex/context/decision-log.md +93 -0
  20. package/.codex/context/gotchas.md +42 -0
  21. package/.codex/context/index.md +21 -0
  22. package/.codex/context/session-context.md +11 -0
  23. package/.codex/context/worklog.md +9 -0
  24. package/.codex/hooks/README.md +17 -0
  25. package/.codex/hooks/after_agent.sh +11 -0
  26. package/.codex/hooks/after_tool_use.sh +10 -0
  27. package/.codex/hooks/post_commit.sh +10 -0
  28. package/.codex/hooks/pre_commit.sh +6 -0
  29. package/.codex/hooks/session_start.sh +18 -0
  30. package/.codex/hooks/stop.sh +10 -0
  31. package/.codex/mcp/README.md +143 -0
  32. package/.codex/mcp/basic-memory.toml.example +10 -0
  33. package/.codex/mcp/context7.toml.example +13 -0
  34. package/.codex/mcp/exa.toml.example +12 -0
  35. package/.codex/mcp/memory-bridge.toml.example +15 -0
  36. package/.codex/mcp/memory.toml.example +6 -0
  37. package/.codex/mcp/ref.toml.example +13 -0
  38. package/.codex/mcp/tilth.toml.example +10 -0
  39. package/.codex/memory/README.md +29 -0
  40. package/.codex/memory/_templates/README.md +26 -0
  41. package/.codex/memory/_templates/design.md +15 -0
  42. package/.codex/memory/_templates/gotcha.md +9 -0
  43. package/.codex/memory/_templates/handoff.md +9 -0
  44. package/.codex/memory/_templates/prd.md +13 -0
  45. package/.codex/memory/_templates/project.md +9 -0
  46. package/.codex/memory/_templates/proposal.md +13 -0
  47. package/.codex/memory/_templates/research.md +9 -0
  48. package/.codex/memory/_templates/roadmap.md +11 -0
  49. package/.codex/memory/_templates/session-context.md +7 -0
  50. package/.codex/memory/_templates/state.md +11 -0
  51. package/.codex/memory/_templates/tasks.md +9 -0
  52. package/.codex/memory/_templates/tech-stack.md +9 -0
  53. package/.codex/memory/_templates/user.md +7 -0
  54. package/.codex/memory/project/gotchas.md +5 -0
  55. package/.codex/memory/project/project.md +12 -0
  56. package/.codex/memory/project/roadmap.md +15 -0
  57. package/.codex/memory/project/state.md +22 -0
  58. package/.codex/memory/project/tech-stack.md +19 -0
  59. package/.codex/memory/project/user.md +10 -0
  60. package/.codex/memory/research/.gitkeep +1 -0
  61. package/.codex/memory/session-context.md +18 -0
  62. package/.codex/plans/README.md +7 -0
  63. package/.codex/prompts/compound.md +154 -0
  64. package/.codex/prompts/create.md +238 -0
  65. package/.codex/prompts/design.md +90 -0
  66. package/.codex/prompts/handoff.md +184 -0
  67. package/.codex/prompts/init-context.md +185 -0
  68. package/.codex/prompts/init-user.md +93 -0
  69. package/.codex/prompts/init.md +103 -0
  70. package/.codex/prompts/lfg.md +140 -0
  71. package/.codex/prompts/plan.md +140 -0
  72. package/.codex/prompts/pr.md +150 -0
  73. package/.codex/prompts/research.md +137 -0
  74. package/.codex/prompts/resume.md +105 -0
  75. package/.codex/prompts/review-codebase.md +147 -0
  76. package/.codex/prompts/ship.md +334 -0
  77. package/.codex/prompts/start.md +141 -0
  78. package/.codex/prompts/status.md +102 -0
  79. package/.codex/prompts/ui-inspire.md +151 -0
  80. package/.codex/prompts/ui-review.md +86 -0
  81. package/.codex/prompts/verify.md +181 -0
  82. package/.codex/scripts/append_worklog.sh +20 -0
  83. package/.codex/scripts/apply_worklog_archive.sh +48 -0
  84. package/.codex/scripts/audit_memory_hygiene.sh +102 -0
  85. package/.codex/scripts/build_memory_index.sh +167 -0
  86. package/.codex/scripts/build_prior_related_work.sh +127 -0
  87. package/.codex/scripts/build_startup_brief.sh +52 -0
  88. package/.codex/scripts/close_bead.sh +103 -0
  89. package/.codex/scripts/detect_changed_files.sh +38 -0
  90. package/.codex/scripts/ensure_beads.sh +14 -0
  91. package/.codex/scripts/memory_search.sh +292 -0
  92. package/.codex/scripts/prepare_worklog_archive.sh +115 -0
  93. package/.codex/scripts/search_bead_context.sh +214 -0
  94. package/.codex/scripts/start_bead.sh +129 -0
  95. package/.codex/scripts/sync_bead_context.sh +288 -0
  96. package/.codex/scripts/validate_memory_docs.sh +44 -0
  97. package/.codex/scripts/verify_bead.sh +154 -0
  98. package/.codex/skills/accessibility-audit/SKILL.md +191 -0
  99. package/.codex/skills/agent-browser/SKILL.md +413 -0
  100. package/.codex/skills/agent-teams/SKILL.md +268 -0
  101. package/.codex/skills/augment-context-engine/SKILL.md +115 -0
  102. package/.codex/skills/augment-context-engine/mcp.json +6 -0
  103. package/.codex/skills/beads/SKILL.md +181 -0
  104. package/.codex/skills/beads/references/BEST_PRACTICES.md +27 -0
  105. package/.codex/skills/beads/references/BOUNDARIES.md +219 -0
  106. package/.codex/skills/beads/references/DEPENDENCIES.md +124 -0
  107. package/.codex/skills/beads/references/EXAMPLES.md +45 -0
  108. package/.codex/skills/beads/references/FILE_CLAIMING.md +101 -0
  109. package/.codex/skills/beads/references/GIT_SYNC.md +25 -0
  110. package/.codex/skills/beads/references/HIERARCHY.md +71 -0
  111. package/.codex/skills/beads/references/MULTI_AGENT.md +40 -0
  112. package/.codex/skills/beads/references/RESUMABILITY.md +177 -0
  113. package/.codex/skills/beads/references/SESSION_PROTOCOL.md +61 -0
  114. package/.codex/skills/beads/references/TASK_CREATION.md +38 -0
  115. package/.codex/skills/beads/references/TROUBLESHOOTING.md +38 -0
  116. package/.codex/skills/beads/references/WORKFLOWS.md +226 -0
  117. package/.codex/skills/beads-bridge/SKILL.md +321 -0
  118. package/.codex/skills/brainstorming/SKILL.md +114 -0
  119. package/.codex/skills/bug-triage/SKILL.md +191 -0
  120. package/.codex/skills/chrome-devtools/SKILL.md +76 -0
  121. package/.codex/skills/chrome-devtools/mcp.json +19 -0
  122. package/.codex/skills/cloudflare/SKILL.md +253 -0
  123. package/.codex/skills/cloudflare/references/agents-sdk/README.md +35 -0
  124. package/.codex/skills/cloudflare/references/agents-sdk/api.md +100 -0
  125. package/.codex/skills/cloudflare/references/agents-sdk/configuration.md +99 -0
  126. package/.codex/skills/cloudflare/references/agents-sdk/gotchas.md +59 -0
  127. package/.codex/skills/cloudflare/references/agents-sdk/patterns.md +89 -0
  128. package/.codex/skills/cloudflare/references/ai-gateway/README.md +695 -0
  129. package/.codex/skills/cloudflare/references/ai-search/README.md +14 -0
  130. package/.codex/skills/cloudflare/references/ai-search/api.md +38 -0
  131. package/.codex/skills/cloudflare/references/ai-search/configuration.md +52 -0
  132. package/.codex/skills/cloudflare/references/ai-search/gotchas.md +41 -0
  133. package/.codex/skills/cloudflare/references/ai-search/patterns.md +45 -0
  134. package/.codex/skills/cloudflare/references/analytics-engine/README.md +14 -0
  135. package/.codex/skills/cloudflare/references/analytics-engine/api.md +27 -0
  136. package/.codex/skills/cloudflare/references/analytics-engine/configuration.md +45 -0
  137. package/.codex/skills/cloudflare/references/analytics-engine/gotchas.md +3 -0
  138. package/.codex/skills/cloudflare/references/analytics-engine/patterns.md +36 -0
  139. package/.codex/skills/cloudflare/references/api/README.md +21 -0
  140. package/.codex/skills/cloudflare/references/api/api.md +31 -0
  141. package/.codex/skills/cloudflare/references/api/configuration.md +20 -0
  142. package/.codex/skills/cloudflare/references/api/gotchas.md +28 -0
  143. package/.codex/skills/cloudflare/references/api/patterns.md +47 -0
  144. package/.codex/skills/cloudflare/references/api-shield/README.md +20 -0
  145. package/.codex/skills/cloudflare/references/api-shield/api.md +78 -0
  146. package/.codex/skills/cloudflare/references/api-shield/configuration.md +128 -0
  147. package/.codex/skills/cloudflare/references/api-shield/gotchas.md +51 -0
  148. package/.codex/skills/cloudflare/references/api-shield/patterns.md +145 -0
  149. package/.codex/skills/cloudflare/references/argo-smart-routing/README.md +16 -0
  150. package/.codex/skills/cloudflare/references/argo-smart-routing/api.md +50 -0
  151. package/.codex/skills/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  152. package/.codex/skills/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  153. package/.codex/skills/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  154. package/.codex/skills/cloudflare/references/bindings/README.md +14 -0
  155. package/.codex/skills/cloudflare/references/bindings/api.md +3 -0
  156. package/.codex/skills/cloudflare/references/bindings/configuration.md +58 -0
  157. package/.codex/skills/cloudflare/references/bindings/gotchas.md +35 -0
  158. package/.codex/skills/cloudflare/references/bindings/patterns.md +37 -0
  159. package/.codex/skills/cloudflare/references/bot-management/README.md +71 -0
  160. package/.codex/skills/cloudflare/references/bot-management/api.md +168 -0
  161. package/.codex/skills/cloudflare/references/bot-management/configuration.md +114 -0
  162. package/.codex/skills/cloudflare/references/bot-management/gotchas.md +99 -0
  163. package/.codex/skills/cloudflare/references/bot-management/patterns.md +125 -0
  164. package/.codex/skills/cloudflare/references/browser-rendering/README.md +16 -0
  165. package/.codex/skills/cloudflare/references/browser-rendering/api.md +54 -0
  166. package/.codex/skills/cloudflare/references/browser-rendering/configuration.md +47 -0
  167. package/.codex/skills/cloudflare/references/browser-rendering/gotchas.md +29 -0
  168. package/.codex/skills/cloudflare/references/browser-rendering/patterns.md +29 -0
  169. package/.codex/skills/cloudflare/references/c3/README.md +264 -0
  170. package/.codex/skills/cloudflare/references/cache-reserve/README.md +93 -0
  171. package/.codex/skills/cloudflare/references/cache-reserve/api.md +176 -0
  172. package/.codex/skills/cloudflare/references/cache-reserve/configuration.md +164 -0
  173. package/.codex/skills/cloudflare/references/cache-reserve/gotchas.md +203 -0
  174. package/.codex/skills/cloudflare/references/cache-reserve/patterns.md +180 -0
  175. package/.codex/skills/cloudflare/references/containers/README.md +16 -0
  176. package/.codex/skills/cloudflare/references/containers/api.md +43 -0
  177. package/.codex/skills/cloudflare/references/containers/configuration.md +56 -0
  178. package/.codex/skills/cloudflare/references/containers/gotchas.md +21 -0
  179. package/.codex/skills/cloudflare/references/containers/patterns.md +40 -0
  180. package/.codex/skills/cloudflare/references/cron-triggers/README.md +85 -0
  181. package/.codex/skills/cloudflare/references/cron-triggers/api.md +198 -0
  182. package/.codex/skills/cloudflare/references/cron-triggers/configuration.md +151 -0
  183. package/.codex/skills/cloudflare/references/cron-triggers/gotchas.md +129 -0
  184. package/.codex/skills/cloudflare/references/cron-triggers/patterns.md +122 -0
  185. package/.codex/skills/cloudflare/references/d1/README.md +92 -0
  186. package/.codex/skills/cloudflare/references/d1/api.md +141 -0
  187. package/.codex/skills/cloudflare/references/d1/configuration.md +127 -0
  188. package/.codex/skills/cloudflare/references/d1/gotchas.md +70 -0
  189. package/.codex/skills/cloudflare/references/d1/patterns.md +144 -0
  190. package/.codex/skills/cloudflare/references/ddos/README.md +34 -0
  191. package/.codex/skills/cloudflare/references/ddos/api.md +136 -0
  192. package/.codex/skills/cloudflare/references/ddos/configuration.md +67 -0
  193. package/.codex/skills/cloudflare/references/ddos/gotchas.md +114 -0
  194. package/.codex/skills/cloudflare/references/ddos/patterns.md +158 -0
  195. package/.codex/skills/cloudflare/references/do-storage/README.md +62 -0
  196. package/.codex/skills/cloudflare/references/do-storage/api.md +89 -0
  197. package/.codex/skills/cloudflare/references/do-storage/configuration.md +116 -0
  198. package/.codex/skills/cloudflare/references/do-storage/gotchas.md +93 -0
  199. package/.codex/skills/cloudflare/references/do-storage/patterns.md +112 -0
  200. package/.codex/skills/cloudflare/references/durable-objects/README.md +125 -0
  201. package/.codex/skills/cloudflare/references/durable-objects/api.md +152 -0
  202. package/.codex/skills/cloudflare/references/durable-objects/configuration.md +148 -0
  203. package/.codex/skills/cloudflare/references/durable-objects/gotchas.md +158 -0
  204. package/.codex/skills/cloudflare/references/durable-objects/patterns.md +255 -0
  205. package/.codex/skills/cloudflare/references/email-routing/README.md +18 -0
  206. package/.codex/skills/cloudflare/references/email-routing/api.md +46 -0
  207. package/.codex/skills/cloudflare/references/email-routing/configuration.md +63 -0
  208. package/.codex/skills/cloudflare/references/email-routing/gotchas.md +16 -0
  209. package/.codex/skills/cloudflare/references/email-routing/patterns.md +46 -0
  210. package/.codex/skills/cloudflare/references/email-workers/README.md +598 -0
  211. package/.codex/skills/cloudflare/references/hyperdrive/README.md +62 -0
  212. package/.codex/skills/cloudflare/references/hyperdrive/api.md +137 -0
  213. package/.codex/skills/cloudflare/references/hyperdrive/configuration.md +133 -0
  214. package/.codex/skills/cloudflare/references/hyperdrive/gotchas.md +184 -0
  215. package/.codex/skills/cloudflare/references/hyperdrive/patterns.md +176 -0
  216. package/.codex/skills/cloudflare/references/images/README.md +14 -0
  217. package/.codex/skills/cloudflare/references/images/api.md +3 -0
  218. package/.codex/skills/cloudflare/references/images/configuration.md +45 -0
  219. package/.codex/skills/cloudflare/references/images/gotchas.md +23 -0
  220. package/.codex/skills/cloudflare/references/images/patterns.md +31 -0
  221. package/.codex/skills/cloudflare/references/kv/README.md +60 -0
  222. package/.codex/skills/cloudflare/references/kv/api.md +114 -0
  223. package/.codex/skills/cloudflare/references/kv/configuration.md +92 -0
  224. package/.codex/skills/cloudflare/references/kv/gotchas.md +117 -0
  225. package/.codex/skills/cloudflare/references/kv/patterns.md +139 -0
  226. package/.codex/skills/cloudflare/references/miniflare/README.md +64 -0
  227. package/.codex/skills/cloudflare/references/miniflare/api.md +144 -0
  228. package/.codex/skills/cloudflare/references/miniflare/configuration.md +203 -0
  229. package/.codex/skills/cloudflare/references/miniflare/gotchas.md +187 -0
  230. package/.codex/skills/cloudflare/references/miniflare/patterns.md +211 -0
  231. package/.codex/skills/cloudflare/references/network-interconnect/README.md +60 -0
  232. package/.codex/skills/cloudflare/references/network-interconnect/api.md +240 -0
  233. package/.codex/skills/cloudflare/references/network-interconnect/configuration.md +127 -0
  234. package/.codex/skills/cloudflare/references/network-interconnect/gotchas.md +171 -0
  235. package/.codex/skills/cloudflare/references/network-interconnect/patterns.md +171 -0
  236. package/.codex/skills/cloudflare/references/observability/README.md +18 -0
  237. package/.codex/skills/cloudflare/references/observability/api.md +51 -0
  238. package/.codex/skills/cloudflare/references/observability/configuration.md +60 -0
  239. package/.codex/skills/cloudflare/references/observability/gotchas.md +36 -0
  240. package/.codex/skills/cloudflare/references/observability/patterns.md +42 -0
  241. package/.codex/skills/cloudflare/references/pages/README.md +76 -0
  242. package/.codex/skills/cloudflare/references/pages/api.md +200 -0
  243. package/.codex/skills/cloudflare/references/pages/configuration.md +228 -0
  244. package/.codex/skills/cloudflare/references/pages/gotchas.md +161 -0
  245. package/.codex/skills/cloudflare/references/pages/patterns.md +145 -0
  246. package/.codex/skills/cloudflare/references/pages-functions/README.md +57 -0
  247. package/.codex/skills/cloudflare/references/pages-functions/api.md +201 -0
  248. package/.codex/skills/cloudflare/references/pages-functions/configuration.md +159 -0
  249. package/.codex/skills/cloudflare/references/pages-functions/gotchas.md +151 -0
  250. package/.codex/skills/cloudflare/references/pages-functions/patterns.md +190 -0
  251. package/.codex/skills/cloudflare/references/pipelines/README.md +664 -0
  252. package/.codex/skills/cloudflare/references/pulumi/README.md +107 -0
  253. package/.codex/skills/cloudflare/references/pulumi/api.md +194 -0
  254. package/.codex/skills/cloudflare/references/pulumi/configuration.md +216 -0
  255. package/.codex/skills/cloudflare/references/pulumi/gotchas.md +223 -0
  256. package/.codex/skills/cloudflare/references/pulumi/patterns.md +139 -0
  257. package/.codex/skills/cloudflare/references/queues/README.md +69 -0
  258. package/.codex/skills/cloudflare/references/queues/api.md +138 -0
  259. package/.codex/skills/cloudflare/references/queues/configuration.md +125 -0
  260. package/.codex/skills/cloudflare/references/queues/gotchas.md +112 -0
  261. package/.codex/skills/cloudflare/references/queues/patterns.md +155 -0
  262. package/.codex/skills/cloudflare/references/r2/README.md +61 -0
  263. package/.codex/skills/cloudflare/references/r2/api.md +127 -0
  264. package/.codex/skills/cloudflare/references/r2/configuration.md +76 -0
  265. package/.codex/skills/cloudflare/references/r2/gotchas.md +94 -0
  266. package/.codex/skills/cloudflare/references/r2/patterns.md +127 -0
  267. package/.codex/skills/cloudflare/references/r2-data-catalog/README.md +18 -0
  268. package/.codex/skills/cloudflare/references/r2-data-catalog/api.md +29 -0
  269. package/.codex/skills/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  270. package/.codex/skills/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  271. package/.codex/skills/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  272. package/.codex/skills/cloudflare/references/r2-sql/README.md +512 -0
  273. package/.codex/skills/cloudflare/references/realtime-sfu/README.md +21 -0
  274. package/.codex/skills/cloudflare/references/realtime-sfu/api.md +135 -0
  275. package/.codex/skills/cloudflare/references/realtime-sfu/configuration.md +63 -0
  276. package/.codex/skills/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  277. package/.codex/skills/cloudflare/references/realtime-sfu/patterns.md +102 -0
  278. package/.codex/skills/cloudflare/references/realtimekit/README.md +81 -0
  279. package/.codex/skills/cloudflare/references/realtimekit/api.md +164 -0
  280. package/.codex/skills/cloudflare/references/realtimekit/configuration.md +147 -0
  281. package/.codex/skills/cloudflare/references/realtimekit/gotchas.md +172 -0
  282. package/.codex/skills/cloudflare/references/realtimekit/patterns.md +155 -0
  283. package/.codex/skills/cloudflare/references/sandbox/README.md +90 -0
  284. package/.codex/skills/cloudflare/references/sandbox/api.md +178 -0
  285. package/.codex/skills/cloudflare/references/sandbox/configuration.md +131 -0
  286. package/.codex/skills/cloudflare/references/sandbox/gotchas.md +156 -0
  287. package/.codex/skills/cloudflare/references/sandbox/patterns.md +203 -0
  288. package/.codex/skills/cloudflare/references/secrets-store/README.md +58 -0
  289. package/.codex/skills/cloudflare/references/secrets-store/api.md +182 -0
  290. package/.codex/skills/cloudflare/references/secrets-store/configuration.md +140 -0
  291. package/.codex/skills/cloudflare/references/secrets-store/gotchas.md +129 -0
  292. package/.codex/skills/cloudflare/references/secrets-store/patterns.md +218 -0
  293. package/.codex/skills/cloudflare/references/smart-placement/README.md +91 -0
  294. package/.codex/skills/cloudflare/references/smart-placement/api.md +139 -0
  295. package/.codex/skills/cloudflare/references/smart-placement/configuration.md +129 -0
  296. package/.codex/skills/cloudflare/references/smart-placement/gotchas.md +87 -0
  297. package/.codex/skills/cloudflare/references/smart-placement/patterns.md +135 -0
  298. package/.codex/skills/cloudflare/references/snippets/README.md +15 -0
  299. package/.codex/skills/cloudflare/references/snippets/api.md +47 -0
  300. package/.codex/skills/cloudflare/references/snippets/configuration.md +33 -0
  301. package/.codex/skills/cloudflare/references/snippets/gotchas.md +21 -0
  302. package/.codex/skills/cloudflare/references/snippets/patterns.md +34 -0
  303. package/.codex/skills/cloudflare/references/spectrum/README.md +16 -0
  304. package/.codex/skills/cloudflare/references/spectrum/api.md +24 -0
  305. package/.codex/skills/cloudflare/references/spectrum/configuration.md +43 -0
  306. package/.codex/skills/cloudflare/references/spectrum/gotchas.md +42 -0
  307. package/.codex/skills/cloudflare/references/spectrum/patterns.md +40 -0
  308. package/.codex/skills/cloudflare/references/static-assets/README.md +14 -0
  309. package/.codex/skills/cloudflare/references/static-assets/api.md +3 -0
  310. package/.codex/skills/cloudflare/references/static-assets/configuration.md +47 -0
  311. package/.codex/skills/cloudflare/references/static-assets/gotchas.md +44 -0
  312. package/.codex/skills/cloudflare/references/static-assets/patterns.md +42 -0
  313. package/.codex/skills/cloudflare/references/stream/README.md +103 -0
  314. package/.codex/skills/cloudflare/references/stream/api.md +204 -0
  315. package/.codex/skills/cloudflare/references/stream/configuration.md +127 -0
  316. package/.codex/skills/cloudflare/references/stream/gotchas.md +131 -0
  317. package/.codex/skills/cloudflare/references/stream/patterns.md +152 -0
  318. package/.codex/skills/cloudflare/references/tail-workers/README.md +640 -0
  319. package/.codex/skills/cloudflare/references/terraform/README.md +76 -0
  320. package/.codex/skills/cloudflare/references/terraform/api.md +159 -0
  321. package/.codex/skills/cloudflare/references/terraform/configuration.md +156 -0
  322. package/.codex/skills/cloudflare/references/terraform/gotchas.md +207 -0
  323. package/.codex/skills/cloudflare/references/terraform/patterns.md +135 -0
  324. package/.codex/skills/cloudflare/references/tunnel/README.md +82 -0
  325. package/.codex/skills/cloudflare/references/tunnel/api.md +105 -0
  326. package/.codex/skills/cloudflare/references/tunnel/configuration.md +113 -0
  327. package/.codex/skills/cloudflare/references/tunnel/gotchas.md +115 -0
  328. package/.codex/skills/cloudflare/references/tunnel/patterns.md +157 -0
  329. package/.codex/skills/cloudflare/references/turn/README.md +699 -0
  330. package/.codex/skills/cloudflare/references/turnstile/README.md +14 -0
  331. package/.codex/skills/cloudflare/references/turnstile/api.md +3 -0
  332. package/.codex/skills/cloudflare/references/turnstile/configuration.md +19 -0
  333. package/.codex/skills/cloudflare/references/turnstile/gotchas.md +27 -0
  334. package/.codex/skills/cloudflare/references/turnstile/patterns.md +41 -0
  335. package/.codex/skills/cloudflare/references/vectorize/README.md +682 -0
  336. package/.codex/skills/cloudflare/references/waf/README.md +14 -0
  337. package/.codex/skills/cloudflare/references/waf/api.md +3 -0
  338. package/.codex/skills/cloudflare/references/waf/configuration.md +44 -0
  339. package/.codex/skills/cloudflare/references/waf/gotchas.md +24 -0
  340. package/.codex/skills/cloudflare/references/waf/patterns.md +29 -0
  341. package/.codex/skills/cloudflare/references/web-analytics/README.md +19 -0
  342. package/.codex/skills/cloudflare/references/web-analytics/api.md +52 -0
  343. package/.codex/skills/cloudflare/references/web-analytics/configuration.md +31 -0
  344. package/.codex/skills/cloudflare/references/web-analytics/gotchas.md +28 -0
  345. package/.codex/skills/cloudflare/references/web-analytics/patterns.md +52 -0
  346. package/.codex/skills/cloudflare/references/workerd/README.md +47 -0
  347. package/.codex/skills/cloudflare/references/workerd/api.md +199 -0
  348. package/.codex/skills/cloudflare/references/workerd/configuration.md +185 -0
  349. package/.codex/skills/cloudflare/references/workerd/gotchas.md +203 -0
  350. package/.codex/skills/cloudflare/references/workerd/patterns.md +216 -0
  351. package/.codex/skills/cloudflare/references/workers/README.md +96 -0
  352. package/.codex/skills/cloudflare/references/workers/api.md +137 -0
  353. package/.codex/skills/cloudflare/references/workers/configuration.md +147 -0
  354. package/.codex/skills/cloudflare/references/workers/gotchas.md +99 -0
  355. package/.codex/skills/cloudflare/references/workers/patterns.md +149 -0
  356. package/.codex/skills/cloudflare/references/workers-ai/README.md +116 -0
  357. package/.codex/skills/cloudflare/references/workers-for-platforms/README.md +48 -0
  358. package/.codex/skills/cloudflare/references/workers-for-platforms/api.md +169 -0
  359. package/.codex/skills/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  360. package/.codex/skills/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  361. package/.codex/skills/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  362. package/.codex/skills/cloudflare/references/workers-playground/README.md +16 -0
  363. package/.codex/skills/cloudflare/references/workers-playground/api.md +20 -0
  364. package/.codex/skills/cloudflare/references/workers-playground/configuration.md +3 -0
  365. package/.codex/skills/cloudflare/references/workers-playground/gotchas.md +35 -0
  366. package/.codex/skills/cloudflare/references/workers-playground/patterns.md +42 -0
  367. package/.codex/skills/cloudflare/references/workers-vpc/README.md +579 -0
  368. package/.codex/skills/cloudflare/references/workflows/README.md +62 -0
  369. package/.codex/skills/cloudflare/references/workflows/api.md +125 -0
  370. package/.codex/skills/cloudflare/references/workflows/configuration.md +177 -0
  371. package/.codex/skills/cloudflare/references/workflows/gotchas.md +136 -0
  372. package/.codex/skills/cloudflare/references/workflows/patterns.md +132 -0
  373. package/.codex/skills/cloudflare/references/wrangler/README.md +90 -0
  374. package/.codex/skills/cloudflare/references/wrangler/api.md +140 -0
  375. package/.codex/skills/cloudflare/references/wrangler/configuration.md +128 -0
  376. package/.codex/skills/cloudflare/references/wrangler/gotchas.md +93 -0
  377. package/.codex/skills/cloudflare/references/wrangler/patterns.md +150 -0
  378. package/.codex/skills/cloudflare/references/zaraz/README.md +360 -0
  379. package/.codex/skills/code-navigation/SKILL.md +130 -0
  380. package/.codex/skills/code-review/SKILL.md +208 -0
  381. package/.codex/skills/compaction/SKILL.md +317 -0
  382. package/.codex/skills/condition-based-waiting/SKILL.md +123 -0
  383. package/.codex/skills/condition-based-waiting/example.ts +158 -0
  384. package/.codex/skills/context-engineering/SKILL.md +176 -0
  385. package/.codex/skills/context-initialization/SKILL.md +70 -0
  386. package/.codex/skills/context-management/SKILL.md +163 -0
  387. package/.codex/skills/core-data-expert/SKILL.md +93 -0
  388. package/.codex/skills/core-data-expert/references/batch-operations.md +543 -0
  389. package/.codex/skills/core-data-expert/references/cloudkit-integration.md +259 -0
  390. package/.codex/skills/core-data-expert/references/concurrency.md +522 -0
  391. package/.codex/skills/core-data-expert/references/fetch-requests.md +643 -0
  392. package/.codex/skills/core-data-expert/references/glossary.md +233 -0
  393. package/.codex/skills/core-data-expert/references/migration.md +393 -0
  394. package/.codex/skills/core-data-expert/references/model-configuration.md +597 -0
  395. package/.codex/skills/core-data-expert/references/performance.md +300 -0
  396. package/.codex/skills/core-data-expert/references/persistent-history.md +553 -0
  397. package/.codex/skills/core-data-expert/references/project-audit.md +60 -0
  398. package/.codex/skills/core-data-expert/references/saving.md +574 -0
  399. package/.codex/skills/core-data-expert/references/stack-setup.md +625 -0
  400. package/.codex/skills/core-data-expert/references/testing.md +300 -0
  401. package/.codex/skills/core-data-expert/references/threading.md +589 -0
  402. package/.codex/skills/debugging/SKILL.md +203 -0
  403. package/.codex/skills/deep-research/SKILL.md +384 -0
  404. package/.codex/skills/defense-in-depth/SKILL.md +166 -0
  405. package/.codex/skills/dependency-upgrades/SKILL.md +198 -0
  406. package/.codex/skills/design-system-audit/SKILL.md +153 -0
  407. package/.codex/skills/development-lifecycle/SKILL.md +356 -0
  408. package/.codex/skills/dispatching-parallel-agents/SKILL.md +191 -0
  409. package/.codex/skills/docs-handoff/SKILL.md +175 -0
  410. package/.codex/skills/executing-plans/SKILL.md +247 -0
  411. package/.codex/skills/figma/SKILL.md +224 -0
  412. package/.codex/skills/figma/mcp.json +6 -0
  413. package/.codex/skills/finishing-a-development-branch/SKILL.md +357 -0
  414. package/.codex/skills/frontend-design/SKILL.md +176 -0
  415. package/.codex/skills/gemini-large-context/SKILL.md +216 -0
  416. package/.codex/skills/git-pr-prep/SKILL.md +179 -0
  417. package/.codex/skills/index-knowledge/SKILL.md +413 -0
  418. package/.codex/skills/jira/SKILL.md +283 -0
  419. package/.codex/skills/jira/mcp.json +6 -0
  420. package/.codex/skills/memory-system/SKILL.md +93 -0
  421. package/.codex/skills/mockup-to-code/SKILL.md +184 -0
  422. package/.codex/skills/mqdh/SKILL.md +171 -0
  423. package/.codex/skills/obsidian/SKILL.md +187 -0
  424. package/.codex/skills/obsidian/mcp.json +22 -0
  425. package/.codex/skills/opensrc/SKILL.md +127 -0
  426. package/.codex/skills/opensrc/references/architecture.md +176 -0
  427. package/.codex/skills/opensrc/references/cli-usage.md +176 -0
  428. package/.codex/skills/opensrc/references/registry-support.md +137 -0
  429. package/.codex/skills/pdf-extract/SKILL.md +438 -0
  430. package/.codex/skills/playwright/SKILL.md +320 -0
  431. package/.codex/skills/playwright/mcp.json +16 -0
  432. package/.codex/skills/playwriter/SKILL.md +158 -0
  433. package/.codex/skills/polar/SKILL.md +102 -0
  434. package/.codex/skills/prd/SKILL.md +146 -0
  435. package/.codex/skills/prd-task/SKILL.md +182 -0
  436. package/.codex/skills/prd-task/references/prd-schema.json +124 -0
  437. package/.codex/skills/prompt-leverage/SKILL.md +69 -0
  438. package/.codex/skills/prompt-leverage/agents/openai.yaml +4 -0
  439. package/.codex/skills/prompt-leverage/references/framework.md +91 -0
  440. package/.codex/skills/prompt-leverage/scripts/augment_prompt.py +114 -0
  441. package/.codex/skills/ralph/SKILL.md +296 -0
  442. package/.codex/skills/react-best-practices/AGENTS.md +2410 -0
  443. package/.codex/skills/react-best-practices/README.md +123 -0
  444. package/.codex/skills/react-best-practices/SKILL.md +133 -0
  445. package/.codex/skills/react-best-practices/metadata.json +15 -0
  446. package/.codex/skills/react-best-practices/rules/_sections.md +46 -0
  447. package/.codex/skills/react-best-practices/rules/_template.md +28 -0
  448. package/.codex/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  449. package/.codex/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  450. package/.codex/skills/react-best-practices/rules/async-api-routes.md +38 -0
  451. package/.codex/skills/react-best-practices/rules/async-defer-await.md +80 -0
  452. package/.codex/skills/react-best-practices/rules/async-dependencies.md +36 -0
  453. package/.codex/skills/react-best-practices/rules/async-parallel.md +28 -0
  454. package/.codex/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  455. package/.codex/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  456. package/.codex/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  457. package/.codex/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  458. package/.codex/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  459. package/.codex/skills/react-best-practices/rules/bundle-preload.md +50 -0
  460. package/.codex/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  461. package/.codex/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  462. package/.codex/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  463. package/.codex/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  464. package/.codex/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  465. package/.codex/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  466. package/.codex/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  467. package/.codex/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  468. package/.codex/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  469. package/.codex/skills/react-best-practices/rules/js-early-exit.md +50 -0
  470. package/.codex/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  471. package/.codex/skills/react-best-practices/rules/js-index-maps.md +37 -0
  472. package/.codex/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  473. package/.codex/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  474. package/.codex/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  475. package/.codex/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  476. package/.codex/skills/react-best-practices/rules/rendering-activity.md +26 -0
  477. package/.codex/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  478. package/.codex/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  479. package/.codex/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  480. package/.codex/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  481. package/.codex/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  482. package/.codex/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  483. package/.codex/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  484. package/.codex/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  485. package/.codex/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  486. package/.codex/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  487. package/.codex/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  488. package/.codex/skills/react-best-practices/rules/rerender-memo.md +44 -0
  489. package/.codex/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  490. package/.codex/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  491. package/.codex/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  492. package/.codex/skills/react-best-practices/rules/server-cache-react.md +76 -0
  493. package/.codex/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  494. package/.codex/skills/react-best-practices/rules/server-serialization.md +38 -0
  495. package/.codex/skills/receiving-code-review/SKILL.md +252 -0
  496. package/.codex/skills/refactoring/SKILL.md +217 -0
  497. package/.codex/skills/repo-orientation/SKILL.md +156 -0
  498. package/.codex/skills/requesting-code-review/SKILL.md +397 -0
  499. package/.codex/skills/resend/SKILL.md +177 -0
  500. package/.codex/skills/resend/references/react-email.md +287 -0
  501. package/.codex/skills/resend/references/receive-email.md +248 -0
  502. package/.codex/skills/resend/references/send-email.md +318 -0
  503. package/.codex/skills/root-cause-tracing/SKILL.md +192 -0
  504. package/.codex/skills/root-cause-tracing/find-polluter.sh +63 -0
  505. package/.codex/skills/safe-implementation/SKILL.md +205 -0
  506. package/.codex/skills/session-management/SKILL.md +10 -0
  507. package/.codex/skills/sharing-skills/SKILL.md +214 -0
  508. package/.codex/skills/skill-creator/SKILL.md +156 -0
  509. package/.codex/skills/source-code-research/SKILL.md +293 -0
  510. package/.codex/skills/source-code-research/references/analysis-tips.md +43 -0
  511. package/.codex/skills/source-code-research/references/anti-patterns.md +36 -0
  512. package/.codex/skills/source-code-research/references/common-patterns.md +57 -0
  513. package/.codex/skills/source-code-research/references/example-workflow.md +60 -0
  514. package/.codex/skills/source-code-research/references/further-reading.md +5 -0
  515. package/.codex/skills/source-code-research/references/source-structure.md +45 -0
  516. package/.codex/skills/stitch/SKILL.md +147 -0
  517. package/.codex/skills/stitch/mcp.json +9 -0
  518. package/.codex/skills/structured-edit/SKILL.md +181 -0
  519. package/.codex/skills/subagent-driven-development/SKILL.md +237 -0
  520. package/.codex/skills/supabase/SKILL.md +130 -0
  521. package/.codex/skills/supabase/mcp.json +27 -0
  522. package/.codex/skills/supabase-postgres-best-practices/AGENTS.md +1490 -0
  523. package/.codex/skills/supabase-postgres-best-practices/SKILL.md +65 -0
  524. package/.codex/skills/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
  525. package/.codex/skills/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
  526. package/.codex/skills/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
  527. package/.codex/skills/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
  528. package/.codex/skills/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
  529. package/.codex/skills/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
  530. package/.codex/skills/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
  531. package/.codex/skills/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
  532. package/.codex/skills/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
  533. package/.codex/skills/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
  534. package/.codex/skills/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
  535. package/.codex/skills/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
  536. package/.codex/skills/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
  537. package/.codex/skills/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
  538. package/.codex/skills/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
  539. package/.codex/skills/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
  540. package/.codex/skills/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
  541. package/.codex/skills/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
  542. package/.codex/skills/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
  543. package/.codex/skills/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
  544. package/.codex/skills/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
  545. package/.codex/skills/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
  546. package/.codex/skills/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
  547. package/.codex/skills/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
  548. package/.codex/skills/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
  549. package/.codex/skills/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
  550. package/.codex/skills/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
  551. package/.codex/skills/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
  552. package/.codex/skills/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
  553. package/.codex/skills/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
  554. package/.codex/skills/swarm-coordination/SKILL.md +179 -0
  555. package/.codex/skills/swarm-coordination/references/architecture.md +39 -0
  556. package/.codex/skills/swarm-coordination/references/delegation-worker-protocol.md +145 -0
  557. package/.codex/skills/swarm-coordination/references/dependency-graph.md +50 -0
  558. package/.codex/skills/swarm-coordination/references/drift-check.md +90 -0
  559. package/.codex/skills/swarm-coordination/references/integration-beads.md +20 -0
  560. package/.codex/skills/swarm-coordination/references/launch-flow.md +186 -0
  561. package/.codex/skills/swarm-coordination/references/reconciler.md +172 -0
  562. package/.codex/skills/swarm-coordination/references/tier-enforcement.md +78 -0
  563. package/.codex/skills/swarm-coordination/references/tmux-integration.md +134 -0
  564. package/.codex/skills/swift-concurrency/SKILL.md +266 -0
  565. package/.codex/skills/swift-concurrency/references/actors.md +640 -0
  566. package/.codex/skills/swift-concurrency/references/async-algorithms.md +822 -0
  567. package/.codex/skills/swift-concurrency/references/async-await-basics.md +249 -0
  568. package/.codex/skills/swift-concurrency/references/async-sequences.md +670 -0
  569. package/.codex/skills/swift-concurrency/references/core-data.md +533 -0
  570. package/.codex/skills/swift-concurrency/references/glossary.md +128 -0
  571. package/.codex/skills/swift-concurrency/references/linting.md +142 -0
  572. package/.codex/skills/swift-concurrency/references/memory-management.md +542 -0
  573. package/.codex/skills/swift-concurrency/references/migration.md +1076 -0
  574. package/.codex/skills/swift-concurrency/references/performance.md +574 -0
  575. package/.codex/skills/swift-concurrency/references/sendable.md +578 -0
  576. package/.codex/skills/swift-concurrency/references/tasks.md +604 -0
  577. package/.codex/skills/swift-concurrency/references/testing.md +565 -0
  578. package/.codex/skills/swift-concurrency/references/threading.md +452 -0
  579. package/.codex/skills/swiftui-expert-skill/SKILL.md +329 -0
  580. package/.codex/skills/swiftui-expert-skill/references/animation-advanced.md +351 -0
  581. package/.codex/skills/swiftui-expert-skill/references/animation-basics.md +284 -0
  582. package/.codex/skills/swiftui-expert-skill/references/animation-transitions.md +326 -0
  583. package/.codex/skills/swiftui-expert-skill/references/image-optimization.md +286 -0
  584. package/.codex/skills/swiftui-expert-skill/references/layout-best-practices.md +312 -0
  585. package/.codex/skills/swiftui-expert-skill/references/liquid-glass.md +377 -0
  586. package/.codex/skills/swiftui-expert-skill/references/list-patterns.md +153 -0
  587. package/.codex/skills/swiftui-expert-skill/references/modern-apis.md +400 -0
  588. package/.codex/skills/swiftui-expert-skill/references/performance-patterns.md +377 -0
  589. package/.codex/skills/swiftui-expert-skill/references/scroll-patterns.md +305 -0
  590. package/.codex/skills/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
  591. package/.codex/skills/swiftui-expert-skill/references/state-management.md +447 -0
  592. package/.codex/skills/swiftui-expert-skill/references/text-formatting.md +285 -0
  593. package/.codex/skills/swiftui-expert-skill/references/view-structure.md +276 -0
  594. package/.codex/skills/systematic-debugging/SKILL.md +402 -0
  595. package/.codex/skills/task-planning/SKILL.md +205 -0
  596. package/.codex/skills/test-driven-development/SKILL.md +388 -0
  597. package/.codex/skills/test-strategy/SKILL.md +186 -0
  598. package/.codex/skills/testing-anti-patterns/SKILL.md +320 -0
  599. package/.codex/skills/testing-skills-with-subagents/SKILL.md +405 -0
  600. package/.codex/skills/tilth-cli/SKILL.md +180 -0
  601. package/.codex/skills/tool-priority/SKILL.md +299 -0
  602. package/.codex/skills/ui-inspiration-scout/SKILL.md +203 -0
  603. package/.codex/skills/ui-ux-research/SKILL.md +35 -0
  604. package/.codex/skills/using-git-worktrees/SKILL.md +259 -0
  605. package/.codex/skills/using-skills/SKILL.md +117 -0
  606. package/.codex/skills/v0/SKILL.md +158 -0
  607. package/.codex/skills/v0/mcp.json +6 -0
  608. package/.codex/skills/v1-run/SKILL.md +175 -0
  609. package/.codex/skills/v1-run/mcp.json +6 -0
  610. package/.codex/skills/vercel-deploy-claimable/SKILL.md +124 -0
  611. package/.codex/skills/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  612. package/.codex/skills/verification/SKILL.md +191 -0
  613. package/.codex/skills/verification-before-completion/SKILL.md +236 -0
  614. package/.codex/skills/visual-analysis/SKILL.md +154 -0
  615. package/.codex/skills/web-design-guidelines/SKILL.md +46 -0
  616. package/.codex/skills/writing-plans/SKILL.md +320 -0
  617. package/.codex/skills/writing-skills/SKILL.md +287 -0
  618. package/.codex/skills/writing-skills/anthropic-best-practices.md +1173 -0
  619. package/.codex/skills/writing-skills/graphviz-conventions.dot +172 -0
  620. package/.codex/skills/writing-skills/persuasion-principles.md +220 -0
  621. package/.codex/skills/writing-skills/references/anti-patterns.md +25 -0
  622. package/.codex/skills/writing-skills/references/claude-search-optimization.md +140 -0
  623. package/.codex/skills/writing-skills/references/discovery-workflow.md +11 -0
  624. package/.codex/skills/writing-skills/references/file-organization.md +32 -0
  625. package/.codex/skills/writing-skills/references/flowcharts-and-examples.md +57 -0
  626. package/.codex/skills/writing-skills/references/rationalization-hardening.md +75 -0
  627. package/.codex/skills/writing-skills/references/testing-skill-types.md +52 -0
  628. package/.template-manifest.json +631 -0
  629. package/AGENTS.md +719 -0
  630. package/AGENTS.override.md.example +7 -0
  631. package/CHANGELOG.md +28 -0
  632. package/LICENSE +21 -0
  633. package/README.md +641 -0
  634. package/bin/codexkit +148 -0
  635. package/install/bead-close.sh +20 -0
  636. package/install/bead-search.sh +18 -0
  637. package/install/bead-start.sh +20 -0
  638. package/install/bead-sync.sh +19 -0
  639. package/install/bead-verify.sh +20 -0
  640. package/install/generate-manifest.sh +55 -0
  641. package/install/install-global.sh +150 -0
  642. package/install/install-project.sh +704 -0
  643. package/install/install-remote.sh +152 -0
  644. package/install/patch.sh +478 -0
  645. package/install/plugin.sh +565 -0
  646. package/install/run-codex.sh +68 -0
  647. package/install/template.sh +620 -0
  648. package/install/validate.sh +653 -0
  649. package/package.json +39 -0
  650. package/templates/global/.codex-config-template.toml +87 -0
  651. package/templates/global/AGENTS.override.md +18 -0
  652. package/templates/global/README.md +29 -0
  653. package/templates/project/.codex-config-template.toml +26 -0
  654. package/templates/project/AGENTS.md.template +27 -0
  655. package/templates/project/README.md +24 -0
@@ -0,0 +1,129 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ # Script: start_bead
4
+ # Claim a bead and prepare a branch/workspace for execution.
5
+
6
+ PROJECT_ROOT="${CODEXKIT_PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
+ BEAD_ID="${1:-}"
8
+ USE_CURRENT_BRANCH=false
9
+
10
+ if [[ -z "$BEAD_ID" ]]; then
11
+ echo "Usage: $0 <bead-id> [--use-current-branch]" >&2
12
+ exit 1
13
+ fi
14
+ shift || true
15
+
16
+ while [[ $# -gt 0 ]]; do
17
+ case "$1" in
18
+ --use-current-branch)
19
+ USE_CURRENT_BRANCH=true
20
+ ;;
21
+ *)
22
+ echo "Unknown option: $1" >&2
23
+ echo "Usage: $0 <bead-id> [--use-current-branch]" >&2
24
+ exit 1
25
+ ;;
26
+ esac
27
+ shift || true
28
+ done
29
+
30
+ if ! command -v br >/dev/null 2>&1; then
31
+ echo "Missing dependency: br" >&2
32
+ exit 1
33
+ fi
34
+
35
+ ARTIFACT_DIR="$PROJECT_ROOT/.beads/artifacts/$BEAD_ID"
36
+ PRD_FILE="$ARTIFACT_DIR/prd.md"
37
+
38
+ if [[ ! -f "$PRD_FILE" ]]; then
39
+ echo "Missing PRD file: $PRD_FILE" >&2
40
+ exit 1
41
+ fi
42
+
43
+ if ! grep -q '[^[:space:]]' "$PRD_FILE"; then
44
+ echo "PRD file is empty: $PRD_FILE" >&2
45
+ exit 1
46
+ fi
47
+
48
+ dirty_output="$(git -C "$PROJECT_ROOT" status --porcelain)"
49
+ if [[ -n "$dirty_output" ]]; then
50
+ while IFS= read -r dirty_line; do
51
+ [[ -z "$dirty_line" ]] && continue
52
+ dirty_path="${dirty_line:3}"
53
+ if [[ "$dirty_path" != .beads/* ]]; then
54
+ echo "Workspace is dirty outside .beads/. Commit or stash changes before starting a bead." >&2
55
+ exit 1
56
+ fi
57
+ done <<< "$dirty_output"
58
+ fi
59
+
60
+ metadata_json="$(cd "$PROJECT_ROOT" && br show --json "$BEAD_ID" 2>/dev/null || true)"
61
+ if [[ -z "$metadata_json" ]]; then
62
+ echo "Unable to load bead metadata for: $BEAD_ID" >&2
63
+ exit 1
64
+ fi
65
+
66
+ eval "$(
67
+ python3 - "$metadata_json" <<'PY'
68
+ import json
69
+ import re
70
+ import shlex
71
+ import sys
72
+
73
+ raw = sys.argv[1]
74
+ data = json.loads(raw)
75
+ issue = data
76
+ if isinstance(data, dict) and isinstance(data.get("issue"), dict):
77
+ issue = data["issue"]
78
+ elif isinstance(data, dict) and isinstance(data.get("issues"), list) and data["issues"]:
79
+ issue = data["issues"][0]
80
+ elif isinstance(data, list) and data:
81
+ issue = data[0]
82
+
83
+ title = issue.get("title") or issue.get("name") or "untitled"
84
+ issue_type = issue.get("issue_type") or issue.get("type") or "task"
85
+ status = issue.get("status") or "unknown"
86
+
87
+ slug = re.sub(r"[^a-z0-9]+", "-", title.lower()).strip("-")
88
+ if not slug:
89
+ slug = "task"
90
+
91
+ print(f"BEAD_TITLE={shlex.quote(title)}")
92
+ print(f"BEAD_TYPE={shlex.quote(issue_type)}")
93
+ print(f"BEAD_STATUS={shlex.quote(status)}")
94
+ print(f"BEAD_SLUG={shlex.quote(slug)}")
95
+ PY
96
+ )"
97
+
98
+ if [[ "$BEAD_STATUS" != "in_progress" ]]; then
99
+ (cd "$PROJECT_ROOT" && br update "$BEAD_ID" --status in_progress >/dev/null)
100
+ fi
101
+
102
+ BRANCH_NAME="$(git -C "$PROJECT_ROOT" branch --show-current)"
103
+ TARGET_BRANCH="$BRANCH_NAME"
104
+ if ! $USE_CURRENT_BRANCH; then
105
+ case "$BEAD_TYPE" in
106
+ feature) prefix="feat" ;;
107
+ bug) prefix="fix" ;;
108
+ task) prefix="task" ;;
109
+ epic) prefix="epic" ;;
110
+ *) prefix="task" ;;
111
+ esac
112
+ TARGET_BRANCH="$prefix/$BEAD_ID-$BEAD_SLUG"
113
+ if [[ "$BRANCH_NAME" != "$TARGET_BRANCH" ]]; then
114
+ if git -C "$PROJECT_ROOT" show-ref --verify --quiet "refs/heads/$TARGET_BRANCH"; then
115
+ git -C "$PROJECT_ROOT" checkout "$TARGET_BRANCH" >/dev/null
116
+ else
117
+ git -C "$PROJECT_ROOT" checkout -b "$TARGET_BRANCH" >/dev/null
118
+ fi
119
+ fi
120
+ fi
121
+
122
+ mkdir -p "$ARTIFACT_DIR"
123
+ touch "$ARTIFACT_DIR/progress.txt"
124
+
125
+ echo "bead=$BEAD_ID"
126
+ echo "type=$BEAD_TYPE"
127
+ echo "status=in_progress"
128
+ echo "branch=$(git -C "$PROJECT_ROOT" branch --show-current)"
129
+ echo "prd=$PRD_FILE"
@@ -0,0 +1,288 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ # Script: sync_bead_context
4
+ # Summarize a bead's raw artifacts into durable repo context.
5
+
6
+ PROJECT_ROOT="${CODEXKIT_PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
+ BEAD_ID="${1:-}"
8
+
9
+ if [[ -z "$BEAD_ID" ]]; then
10
+ echo "Usage: $0 <bead-id>" >&2
11
+ exit 1
12
+ fi
13
+
14
+ ARTIFACT_DIR="$PROJECT_ROOT/.beads/artifacts/$BEAD_ID"
15
+ SUMMARY_DIR="$PROJECT_ROOT/.codex/memory/research/beads"
16
+ SUMMARY_FILE="$SUMMARY_DIR/$BEAD_ID.md"
17
+ WORKLOG_FILE="$PROJECT_ROOT/.codex/context/worklog.md"
18
+
19
+ if [[ ! -d "$ARTIFACT_DIR" ]]; then
20
+ echo "Missing artifact directory: $ARTIFACT_DIR" >&2
21
+ exit 1
22
+ fi
23
+
24
+ mkdir -p "$SUMMARY_DIR"
25
+ mkdir -p "$(dirname "$WORKLOG_FILE")"
26
+
27
+ metadata_json=""
28
+ if command -v br >/dev/null 2>&1; then
29
+ if metadata_json="$(cd "$PROJECT_ROOT" && br show --json "$BEAD_ID" 2>/dev/null)"; then
30
+ :
31
+ else
32
+ metadata_json=""
33
+ fi
34
+ fi
35
+
36
+ old_hash=""
37
+ if [[ -f "$SUMMARY_FILE" ]]; then
38
+ old_hash="$(shasum -a 256 "$SUMMARY_FILE" | cut -d' ' -f1)"
39
+ fi
40
+
41
+ tmp_summary="$(mktemp)"
42
+ cleanup() {
43
+ rm -f "$tmp_summary"
44
+ }
45
+ trap cleanup EXIT
46
+
47
+ python3 - "$BEAD_ID" "$PROJECT_ROOT" "$ARTIFACT_DIR" "$metadata_json" > "$tmp_summary" <<'PY'
48
+ import json
49
+ import os
50
+ import re
51
+ import sys
52
+ from pathlib import Path
53
+
54
+ bead_id, project_root, artifact_dir, metadata_json = sys.argv[1:]
55
+ artifact_path = Path(artifact_dir)
56
+
57
+
58
+ def load_metadata(raw: str):
59
+ if not raw.strip():
60
+ return {}
61
+ try:
62
+ data = json.loads(raw)
63
+ except json.JSONDecodeError:
64
+ return {}
65
+ if isinstance(data, dict):
66
+ if "id" in data:
67
+ return data
68
+ if isinstance(data.get("issue"), dict):
69
+ return data["issue"]
70
+ if isinstance(data.get("issues"), list) and data["issues"]:
71
+ first = data["issues"][0]
72
+ if isinstance(first, dict):
73
+ return first
74
+ if isinstance(data, list) and data and isinstance(data[0], dict):
75
+ return data[0]
76
+ return {}
77
+
78
+
79
+ def read_text(path: Path) -> str:
80
+ if not path.exists() or not path.is_file():
81
+ return ""
82
+ return path.read_text(encoding="utf-8", errors="replace")
83
+
84
+
85
+ def extract_section(text: str, heading: str) -> str:
86
+ pattern = re.compile(
87
+ rf"^##+\s+{re.escape(heading)}\s*$\n(.*?)(?=^##+\s+|\Z)",
88
+ re.MULTILINE | re.DOTALL,
89
+ )
90
+ match = pattern.search(text)
91
+ if not match:
92
+ return ""
93
+ return match.group(1).strip()
94
+
95
+
96
+ def bulletize(text: str, fallback: str) -> list[str]:
97
+ lines = []
98
+ for raw_line in text.splitlines():
99
+ line = raw_line.strip()
100
+ if not line:
101
+ continue
102
+ if line.startswith(("- ", "* ")):
103
+ lines.append(line)
104
+ elif re.match(r"^\d+\.\s+", line):
105
+ lines.append(f"- {re.sub(r'^\d+\.\s+', '', line)}")
106
+ if lines:
107
+ return lines
108
+ plain = " ".join(part.strip() for part in text.splitlines() if part.strip())
109
+ if plain:
110
+ return [f"- {plain}"]
111
+ return [fallback]
112
+
113
+
114
+ def first_paragraph(text: str, fallback: str) -> str:
115
+ if not text.strip():
116
+ return fallback
117
+ body = []
118
+ for raw_line in text.splitlines():
119
+ line = raw_line.strip()
120
+ if not line:
121
+ if body:
122
+ break
123
+ continue
124
+ if line.startswith("#"):
125
+ continue
126
+ body.append(line)
127
+ if body:
128
+ return " ".join(body)
129
+ return fallback
130
+
131
+
132
+ def trim_paragraph(text: str, fallback: str) -> str:
133
+ cleaned = " ".join(line.strip() for line in text.splitlines() if line.strip())
134
+ return cleaned or fallback
135
+
136
+
137
+ metadata = load_metadata(metadata_json)
138
+ title = metadata.get("title") or bead_id
139
+ status = metadata.get("status") or "unknown"
140
+ issue_type = metadata.get("issue_type") or metadata.get("type") or "unknown"
141
+ description = metadata.get("description") or ""
142
+
143
+ prd_text = read_text(artifact_path / "prd.md")
144
+ research_text = read_text(artifact_path / "research.md")
145
+ design_text = read_text(artifact_path / "design.md")
146
+ notes_text = read_text(artifact_path / "notes.md")
147
+ progress_text = read_text(artifact_path / "progress.txt")
148
+
149
+ handoff_dir = artifact_path / "handoffs"
150
+ handoff_files = sorted(handoff_dir.glob("*")) if handoff_dir.exists() else []
151
+ latest_handoff_text = ""
152
+ latest_handoff_name = ""
153
+ if handoff_files:
154
+ latest_handoff = handoff_files[-1]
155
+ latest_handoff_name = latest_handoff.name
156
+ latest_handoff_text = read_text(latest_handoff)
157
+
158
+ problem = extract_section(prd_text, "Problem Statement")
159
+ if not problem:
160
+ problem = description
161
+ problem = trim_paragraph(problem, "No durable problem statement captured yet.")
162
+
163
+ done_text = extract_section(latest_handoff_text, "Done")
164
+ in_progress_text = extract_section(latest_handoff_text, "In Progress")
165
+ remaining_text = extract_section(latest_handoff_text, "Remaining")
166
+ progress_lines = [line.strip() for line in progress_text.splitlines() if line.strip()]
167
+ recent_progress = progress_lines[-3:] if progress_lines else []
168
+
169
+ outcome_lines = []
170
+ if done_text:
171
+ outcome_lines.extend(bulletize(done_text, "- No completed work recorded"))
172
+ if in_progress_text:
173
+ outcome_lines.extend(bulletize(in_progress_text, "- No in-progress snapshot recorded"))
174
+ if not outcome_lines and recent_progress:
175
+ outcome_lines.extend(f"- {line.lstrip('- ').strip()}" for line in recent_progress)
176
+ if not outcome_lines:
177
+ outcome_lines = [f"- Current bead status: {status}"]
178
+
179
+ decisions_text = extract_section(latest_handoff_text, "Decisions")
180
+ if decisions_text:
181
+ decision_lines = bulletize(decisions_text, "- No durable decisions recorded")
182
+ else:
183
+ proposed_solution = extract_section(prd_text, "Proposed Solution")
184
+ if proposed_solution:
185
+ decision_lines = bulletize(proposed_solution, "- No durable decisions recorded")
186
+ elif design_text:
187
+ decision_lines = bulletize(first_paragraph(design_text, ""), "- No durable decisions recorded")
188
+ else:
189
+ decision_lines = ["- No durable decisions recorded"]
190
+
191
+ affected_text = extract_section(prd_text, "Affected Files")
192
+ files_touched_text = extract_section(latest_handoff_text, "Files Touched")
193
+ file_lines: list[str] = []
194
+ for chunk in (affected_text, files_touched_text):
195
+ for line in bulletize(chunk, ""):
196
+ if line != "":
197
+ file_lines.append(line)
198
+ if not file_lines:
199
+ file_lines = ["- No concrete file list recorded"]
200
+
201
+ follow_up_text = remaining_text or extract_section(prd_text, "Open Questions")
202
+ if not follow_up_text and notes_text:
203
+ follow_up_text = first_paragraph(notes_text, "")
204
+ follow_up_lines = bulletize(follow_up_text, "- No follow-up items recorded")
205
+
206
+ keyword_parts = [bead_id, title, issue_type]
207
+ for line in file_lines:
208
+ path_part = re.sub(r"^- ", "", line).split(" ", 1)[0]
209
+ if "/" in path_part or "." in path_part:
210
+ keyword_parts.append(path_part)
211
+ keywords = []
212
+ seen = set()
213
+ for part in keyword_parts:
214
+ for token in re.split(r"[^A-Za-z0-9._/-]+", part):
215
+ token = token.strip().lower()
216
+ if len(token) < 3:
217
+ continue
218
+ if token not in seen:
219
+ seen.add(token)
220
+ keywords.append(token)
221
+
222
+ source_artifacts = []
223
+ for name in ("prd.md", "research.md", "design.md", "notes.md", "progress.txt"):
224
+ if (artifact_path / name).exists():
225
+ source_artifacts.append(f".beads/artifacts/{bead_id}/{name}")
226
+ if latest_handoff_name:
227
+ source_artifacts.append(f".beads/artifacts/{bead_id}/handoffs/{latest_handoff_name}")
228
+
229
+ print(f"# Bead Summary: {bead_id} — {title}")
230
+ print()
231
+ print("## Bead")
232
+ print()
233
+ print(f"- ID: `{bead_id}`")
234
+ print(f"- Title: {title}")
235
+ print(f"- Status: {status}")
236
+ print(f"- Type: {issue_type}")
237
+ print()
238
+ print("## Problem")
239
+ print()
240
+ print(problem)
241
+ print()
242
+ print("## Outcome")
243
+ print()
244
+ for line in outcome_lines:
245
+ print(line)
246
+ print()
247
+ print("## Key Decisions")
248
+ print()
249
+ for line in decision_lines:
250
+ print(line)
251
+ print()
252
+ print("## Files/Areas Affected")
253
+ print()
254
+ for line in file_lines:
255
+ print(line)
256
+ print()
257
+ print("## Follow-ups")
258
+ print()
259
+ for line in follow_up_lines:
260
+ print(line)
261
+ print()
262
+ print("## Keywords")
263
+ print()
264
+ print("- " + ", ".join(keywords) if keywords else "- No keywords extracted")
265
+ print()
266
+ print("## Source Artifacts")
267
+ print()
268
+ for path in source_artifacts:
269
+ print(f"- `{path}`")
270
+ if not source_artifacts:
271
+ print("- No source artifacts found beyond the bead directory")
272
+ PY
273
+
274
+ mv "$tmp_summary" "$SUMMARY_FILE"
275
+
276
+ new_hash="$(shasum -a 256 "$SUMMARY_FILE" | cut -d' ' -f1)"
277
+ if [[ "$old_hash" != "$new_hash" ]]; then
278
+ timestamp="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
279
+ if [[ ! -f "$WORKLOG_FILE" ]]; then
280
+ {
281
+ echo "# Worklog"
282
+ echo
283
+ } > "$WORKLOG_FILE"
284
+ fi
285
+ echo "- **[$timestamp]** Synced bead context for \`$BEAD_ID\` → \`.codex/memory/research/beads/$BEAD_ID.md\`" >> "$WORKLOG_FILE"
286
+ fi
287
+
288
+ echo "$SUMMARY_FILE"
@@ -0,0 +1,44 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+
4
+ ROOT_DIR="${1:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
5
+ PASS=0
6
+ FAIL=0
7
+
8
+ check() {
9
+ local desc="$1"; shift
10
+ if "$@" >/dev/null 2>&1; then
11
+ echo " PASS $desc"
12
+ PASS=$((PASS + 1))
13
+ else
14
+ echo " FAIL $desc"
15
+ FAIL=$((FAIL + 1))
16
+ fi
17
+ }
18
+
19
+ require_heading() {
20
+ local file="$1" pattern="$2"
21
+ grep -Eq "$pattern" "$file"
22
+ }
23
+
24
+ echo "=== Memory Doc Validation ==="
25
+
26
+ check "project/user.md has Preferences section" require_heading "$ROOT_DIR/memory/project/user.md" '^## Preferences'
27
+ check "project/tech-stack.md has Verification Commands section" require_heading "$ROOT_DIR/memory/project/tech-stack.md" '^## Verification Commands'
28
+ check "project/project.md has Vision section" require_heading "$ROOT_DIR/memory/project/project.md" '^## Vision'
29
+ check "project/roadmap.md has Current Phase section" require_heading "$ROOT_DIR/memory/project/roadmap.md" '^## Current Phase'
30
+ check "project/state.md has Next Actions section" require_heading "$ROOT_DIR/memory/project/state.md" '^## Next Actions'
31
+ check "project/state.md has Blockers section" require_heading "$ROOT_DIR/memory/project/state.md" '^## Blockers'
32
+ check "project/gotchas.md is non-empty" test "$(wc -l < "$ROOT_DIR/memory/project/gotchas.md" | tr -d ' ')" -ge 3
33
+ check "context/session-context.md has Current Focus section" require_heading "$ROOT_DIR/context/session-context.md" '^## Current Focus'
34
+ check "context/session-context.md has Next Actions section" require_heading "$ROOT_DIR/context/session-context.md" '^## Next Actions'
35
+ check "context/decision-log.md has Decisions section" require_heading "$ROOT_DIR/context/decision-log.md" '^## Decisions'
36
+
37
+ if [ "$FAIL" -gt 0 ]; then
38
+ echo
39
+ echo "Memory doc validation failed"
40
+ exit 1
41
+ fi
42
+
43
+ echo
44
+ echo "Memory doc validation passed ($PASS checks)"
@@ -0,0 +1,154 @@
1
+ #!/bin/bash
2
+ set -euo pipefail
3
+ # Script: verify_bead
4
+ # Run project gates and PRD Verify commands, then record a PASS stamp.
5
+
6
+ PROJECT_ROOT="${CODEXKIT_PROJECT_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)}"
7
+ BEAD_ID="${1:-}"
8
+ FULL=false
9
+ NO_CACHE=false
10
+
11
+ if [[ -z "$BEAD_ID" ]]; then
12
+ echo "Usage: $0 <bead-id> [--full] [--no-cache]" >&2
13
+ exit 1
14
+ fi
15
+ shift || true
16
+
17
+ while [[ $# -gt 0 ]]; do
18
+ case "$1" in
19
+ --full)
20
+ FULL=true
21
+ ;;
22
+ --no-cache)
23
+ NO_CACHE=true
24
+ ;;
25
+ --quick)
26
+ ;;
27
+ --fix)
28
+ ;;
29
+ *)
30
+ echo "Unknown option: $1" >&2
31
+ echo "Usage: $0 <bead-id> [--full] [--no-cache]" >&2
32
+ exit 1
33
+ ;;
34
+ esac
35
+ shift || true
36
+ done
37
+
38
+ if ! command -v br >/dev/null 2>&1; then
39
+ echo "Missing dependency: br" >&2
40
+ exit 1
41
+ fi
42
+
43
+ ARTIFACT_DIR="$PROJECT_ROOT/.beads/artifacts/$BEAD_ID"
44
+ PRD_FILE="$ARTIFACT_DIR/prd.md"
45
+ VERIFY_LOG="$PROJECT_ROOT/.beads/verify.log"
46
+
47
+ if [[ ! -f "$PRD_FILE" ]]; then
48
+ echo "Missing PRD file: $PRD_FILE" >&2
49
+ exit 1
50
+ fi
51
+
52
+ status_json="$(cd "$PROJECT_ROOT" && br show --json "$BEAD_ID" 2>/dev/null || true)"
53
+ if [[ -z "$status_json" ]]; then
54
+ echo "Unable to load bead metadata for: $BEAD_ID" >&2
55
+ exit 1
56
+ fi
57
+
58
+ BEAD_STATUS="$(
59
+ python3 - "$status_json" <<'PY'
60
+ import json
61
+ import sys
62
+
63
+ raw = sys.argv[1]
64
+ data = json.loads(raw)
65
+ issue = data
66
+ if isinstance(data, dict) and isinstance(data.get("issue"), dict):
67
+ issue = data["issue"]
68
+ elif isinstance(data, dict) and isinstance(data.get("issues"), list) and data["issues"]:
69
+ issue = data["issues"][0]
70
+ elif isinstance(data, list) and data:
71
+ issue = data[0]
72
+
73
+ print(issue.get("status") or "unknown")
74
+ PY
75
+ )"
76
+
77
+ if [[ "$BEAD_STATUS" != "in_progress" && "$BEAD_STATUS" != "closed" ]]; then
78
+ echo "Bead must be in_progress or closed to verify: $BEAD_STATUS" >&2
79
+ exit 1
80
+ fi
81
+
82
+ CURRENT_STAMP="$(
83
+ cd "$PROJECT_ROOT" &&
84
+ printf '%s\n%s\n%s' \
85
+ "$(git rev-parse HEAD)" \
86
+ "$(git diff HEAD -- '*.ts' '*.tsx' '*.js' '*.jsx')" \
87
+ "$(git ls-files --others --exclude-standard -- '*.ts' '*.tsx' '*.js' '*.jsx' | xargs cat 2>/dev/null)" \
88
+ | shasum -a 256 | cut -d' ' -f1
89
+ )"
90
+ LAST_STAMP="$(tail -1 "$VERIFY_LOG" 2>/dev/null | awk '{print $1}' || true)"
91
+
92
+ if ! $NO_CACHE && ! $FULL && [[ -n "$LAST_STAMP" && "$CURRENT_STAMP" = "$LAST_STAMP" ]]; then
93
+ echo "cached-pass=$CURRENT_STAMP"
94
+ exit 0
95
+ fi
96
+
97
+ run_npm_script_if_present() {
98
+ local script_name="$1"
99
+ if [[ ! -f "$PROJECT_ROOT/package.json" ]]; then
100
+ return 0
101
+ fi
102
+
103
+ local has_script
104
+ has_script="$(
105
+ python3 - "$PROJECT_ROOT/package.json" "$script_name" <<'PY'
106
+ import json
107
+ import sys
108
+
109
+ package_json = sys.argv[1]
110
+ script_name = sys.argv[2]
111
+ with open(package_json, encoding="utf-8") as handle:
112
+ data = json.load(handle)
113
+ print("yes" if script_name in data.get("scripts", {}) else "no")
114
+ PY
115
+ )"
116
+
117
+ if [[ "$has_script" = "yes" ]]; then
118
+ (cd "$PROJECT_ROOT" && npm run "$script_name" >/dev/null)
119
+ fi
120
+ }
121
+
122
+ run_verify_commands() {
123
+ python3 - "$PRD_FILE" <<'PY'
124
+ import re
125
+ import shlex
126
+ import sys
127
+ from pathlib import Path
128
+
129
+ prd_path = Path(sys.argv[1])
130
+ text = prd_path.read_text(encoding="utf-8", errors="replace")
131
+ for raw_line in text.splitlines():
132
+ match = re.match(r"^\s*-\s*Verify:\s*(.+?)\s*$", raw_line)
133
+ if match:
134
+ print(match.group(1))
135
+ PY
136
+ }
137
+
138
+ run_npm_script_if_present typecheck
139
+ run_npm_script_if_present lint
140
+ run_npm_script_if_present test
141
+ run_npm_script_if_present build
142
+
143
+ while IFS= read -r verify_cmd; do
144
+ [[ -z "$verify_cmd" ]] && continue
145
+ (cd "$PROJECT_ROOT" && bash -lc "$verify_cmd" >/dev/null)
146
+ done < <(run_verify_commands)
147
+
148
+ mkdir -p "$(dirname "$VERIFY_LOG")"
149
+ echo "$CURRENT_STAMP $(date -u +%Y-%m-%dT%H:%M:%SZ) PASS" >> "$VERIFY_LOG"
150
+ (cd "$PROJECT_ROOT" && br comments add "$BEAD_ID" "Verification: PASS - gates and Verify commands succeeded" >/dev/null)
151
+
152
+ echo "verified=$BEAD_ID"
153
+ echo "stamp=$CURRENT_STAMP"
154
+ echo "log=$VERIFY_LOG"