dsh-compound-engineering 0.0.0-stage → 0.1.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 (461) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +160 -2
  3. package/README.zh.md +161 -0
  4. package/cordis.patch.yml +6 -0
  5. package/lib/frontmatter.js +167 -0
  6. package/lib/index.js +46 -0
  7. package/lib/provider.js +201 -0
  8. package/package.json +62 -4
  9. package/skills/CODING_STANDARDS.md +68 -0
  10. package/skills/ce-babysit-pr/SKILL.md +59 -0
  11. package/skills/ce-babysit-pr/references/branch-currency.md +22 -0
  12. package/skills/ce-babysit-pr/references/envelope.md +44 -0
  13. package/skills/ce-babysit-pr/references/pipeline.md +15 -0
  14. package/skills/ce-babysit-pr/references/report.md +20 -0
  15. package/skills/ce-babysit-pr/references/settle.md +37 -0
  16. package/skills/ce-babysit-pr/references/setup.md +33 -0
  17. package/skills/ce-babysit-pr/references/stack-commands.md +39 -0
  18. package/skills/ce-babysit-pr/references/stack.md +43 -0
  19. package/skills/ce-babysit-pr/references/tick.md +102 -0
  20. package/skills/ce-babysit-pr/references/watch-loop.md +222 -0
  21. package/skills/ce-babysit-pr/scripts/pr-snapshot +3656 -0
  22. package/skills/ce-bakeoff/SKILL.md +48 -0
  23. package/skills/ce-bakeoff/references/candidates.md +37 -0
  24. package/skills/ce-bakeoff/references/judging.md +19 -0
  25. package/skills/ce-bakeoff/references/output.md +11 -0
  26. package/skills/ce-bakeoff/references/verification.md +15 -0
  27. package/skills/ce-brainstorm/SKILL.md +69 -0
  28. package/skills/ce-brainstorm/references/agents/slack-researcher.md +127 -0
  29. package/skills/ce-brainstorm/references/approaches.md +57 -0
  30. package/skills/ce-brainstorm/references/bakeoff.md +9 -0
  31. package/skills/ce-brainstorm/references/blindspot-pass.md +70 -0
  32. package/skills/ce-brainstorm/references/brainstorm-sections.md +458 -0
  33. package/skills/ce-brainstorm/references/dialogue.md +89 -0
  34. package/skills/ce-brainstorm/references/handoff.md +187 -0
  35. package/skills/ce-brainstorm/references/html-rendering.md +638 -0
  36. package/skills/ce-brainstorm/references/interaction-rules.md +33 -0
  37. package/skills/ce-brainstorm/references/markdown-rendering.md +242 -0
  38. package/skills/ce-brainstorm/references/model-tiers.md +13 -0
  39. package/skills/ce-brainstorm/references/output-mode.md +26 -0
  40. package/skills/ce-brainstorm/references/phase-0.md +104 -0
  41. package/skills/ce-brainstorm/references/plan-write.md +32 -0
  42. package/skills/ce-brainstorm/references/product-pressure-test.md +42 -0
  43. package/skills/ce-brainstorm/references/reasoning-elevation.md +124 -0
  44. package/skills/ce-brainstorm/references/settled-decisions.md +45 -0
  45. package/skills/ce-brainstorm/references/synthesis-summary.md +149 -0
  46. package/skills/ce-brainstorm/references/universal-brainstorming.md +72 -0
  47. package/skills/ce-brainstorm/references/verdict-routing.md +26 -0
  48. package/skills/ce-brainstorm/references/visual-probes.md +164 -0
  49. package/skills/ce-brainstorm/scripts/elevation-dispatch.sh +288 -0
  50. package/skills/ce-brainstorm/scripts/light-webserver.js +1275 -0
  51. package/skills/ce-brainstorm/scripts/packs-resolve.py +737 -0
  52. package/skills/ce-brainstorm/scripts/peer-job-runner.py +2594 -0
  53. package/skills/ce-code-review/SKILL.md +40 -0
  54. package/skills/ce-code-review/references/action-class-rubric.md +67 -0
  55. package/skills/ce-code-review/references/cross-model-recovery.md +38 -0
  56. package/skills/ce-code-review/references/cross-model-review.md +191 -0
  57. package/skills/ce-code-review/references/depth-paths.md +32 -0
  58. package/skills/ce-code-review/references/diff-scope.md +59 -0
  59. package/skills/ce-code-review/references/dispatch-reviewers.md +135 -0
  60. package/skills/ce-code-review/references/findings-schema.json +125 -0
  61. package/skills/ce-code-review/references/finish-input.md +118 -0
  62. package/skills/ce-code-review/references/finish-review.md +202 -0
  63. package/skills/ce-code-review/references/intent-and-plan.md +73 -0
  64. package/skills/ce-code-review/references/modes-and-output.md +156 -0
  65. package/skills/ce-code-review/references/persona-catalog.md +66 -0
  66. package/skills/ce-code-review/references/personas/adversarial-reviewer.md +111 -0
  67. package/skills/ce-code-review/references/personas/agent-native-reviewer.md +173 -0
  68. package/skills/ce-code-review/references/personas/api-contract-reviewer.md +44 -0
  69. package/skills/ce-code-review/references/personas/correctness-reviewer.md +48 -0
  70. package/skills/ce-code-review/references/personas/data-migration-reviewer.md +111 -0
  71. package/skills/ce-code-review/references/personas/deployment-verification-agent.md +157 -0
  72. package/skills/ce-code-review/references/personas/julik-frontend-races-reviewer.md +45 -0
  73. package/skills/ce-code-review/references/personas/learnings-researcher.md +260 -0
  74. package/skills/ce-code-review/references/personas/maintainability-reviewer.md +85 -0
  75. package/skills/ce-code-review/references/personas/performance-reviewer.md +45 -0
  76. package/skills/ce-code-review/references/personas/previous-comments-reviewer.md +59 -0
  77. package/skills/ce-code-review/references/personas/project-standards-reviewer.md +77 -0
  78. package/skills/ce-code-review/references/personas/reliability-reviewer.md +49 -0
  79. package/skills/ce-code-review/references/personas/security-reviewer.md +50 -0
  80. package/skills/ce-code-review/references/personas/swift-ios-reviewer.md +99 -0
  81. package/skills/ce-code-review/references/personas/testing-reviewer.md +51 -0
  82. package/skills/ce-code-review/references/review-output-template.md +172 -0
  83. package/skills/ce-code-review/references/scope.md +176 -0
  84. package/skills/ce-code-review/references/select-and-route.md +93 -0
  85. package/skills/ce-code-review/references/subagent-template.md +206 -0
  86. package/skills/ce-code-review/references/validator-batch-template.md +67 -0
  87. package/skills/ce-code-review/scripts/cross-model-adversarial-review.sh +1275 -0
  88. package/skills/ce-code-review/scripts/findings-mechanics.py +274 -0
  89. package/skills/ce-code-review/scripts/packs-resolve.py +737 -0
  90. package/skills/ce-code-review/scripts/peer-job-runner.py +2594 -0
  91. package/skills/ce-code-review/scripts/review-scope.py +419 -0
  92. package/skills/ce-code-review/scripts/run-log.py +280 -0
  93. package/skills/ce-commit/SKILL.md +60 -0
  94. package/skills/ce-commit-push-pr/SKILL.md +69 -0
  95. package/skills/ce-commit-push-pr/references/apply-and-handoff.md +79 -0
  96. package/skills/ce-commit-push-pr/references/branch-creation.md +47 -0
  97. package/skills/ce-commit-push-pr/references/commit-and-push.md +26 -0
  98. package/skills/ce-commit-push-pr/references/compose.md +29 -0
  99. package/skills/ce-commit-push-pr/references/context.md +42 -0
  100. package/skills/ce-commit-push-pr/references/gh-stack-cli.md +83 -0
  101. package/skills/ce-commit-push-pr/references/pr-description-writing.md +208 -0
  102. package/skills/ce-commit-push-pr/references/stack-submit.md +81 -0
  103. package/skills/ce-compound/SKILL.md +79 -0
  104. package/skills/ce-compound/assets/resolution-template.md +96 -0
  105. package/skills/ce-compound/references/agents/best-practices-researcher.md +115 -0
  106. package/skills/ce-compound/references/agents/data-integrity-guardian.md +68 -0
  107. package/skills/ce-compound/references/agents/framework-docs-researcher.md +93 -0
  108. package/skills/ce-compound/references/agents/pattern-recognition-specialist.md +55 -0
  109. package/skills/ce-compound/references/agents/performance-oracle.md +108 -0
  110. package/skills/ce-compound/references/agents/security-sentinel.md +91 -0
  111. package/skills/ce-compound/references/agents/session-historian.md +82 -0
  112. package/skills/ce-compound/references/assembly.md +127 -0
  113. package/skills/ce-compound/references/concepts-vocabulary.md +98 -0
  114. package/skills/ce-compound/references/enhancement.md +42 -0
  115. package/skills/ce-compound/references/grounding-validation.md +89 -0
  116. package/skills/ce-compound/references/lightweight.md +56 -0
  117. package/skills/ce-compound/references/modes.md +13 -0
  118. package/skills/ce-compound/references/refresh-and-discoverability.md +96 -0
  119. package/skills/ce-compound/references/report.md +115 -0
  120. package/skills/ce-compound/references/research.md +144 -0
  121. package/skills/ce-compound/references/schema.yaml +236 -0
  122. package/skills/ce-compound/references/session-history.md +73 -0
  123. package/skills/ce-compound/references/yaml-schema.md +130 -0
  124. package/skills/ce-compound/scripts/packs-resolve.py +737 -0
  125. package/skills/ce-compound/scripts/session-history/__pycache__/dsh_session.cpython-314.pyc +0 -0
  126. package/skills/ce-compound/scripts/session-history/discover-sessions.sh +290 -0
  127. package/skills/ce-compound/scripts/session-history/discover_dsh.py +123 -0
  128. package/skills/ce-compound/scripts/session-history/dsh_session.py +225 -0
  129. package/skills/ce-compound/scripts/session-history/extract-errors.py +178 -0
  130. package/skills/ce-compound/scripts/session-history/extract-metadata.py +301 -0
  131. package/skills/ce-compound/scripts/session-history/extract-skeleton.py +346 -0
  132. package/skills/ce-compound/scripts/validate-doc-claims.py +497 -0
  133. package/skills/ce-compound/scripts/validate-frontmatter.py +137 -0
  134. package/skills/ce-compound-refresh/SKILL.md +88 -0
  135. package/skills/ce-compound-refresh/assets/resolution-template.md +96 -0
  136. package/skills/ce-compound-refresh/references/classify.md +42 -0
  137. package/skills/ce-compound-refresh/references/commit.md +7 -0
  138. package/skills/ce-compound-refresh/references/concepts-vocabulary.md +116 -0
  139. package/skills/ce-compound-refresh/references/discoverability.md +15 -0
  140. package/skills/ce-compound-refresh/references/investigate.md +23 -0
  141. package/skills/ce-compound-refresh/references/modes.md +27 -0
  142. package/skills/ce-compound-refresh/references/per-action-flows.md +142 -0
  143. package/skills/ce-compound-refresh/references/report.md +23 -0
  144. package/skills/ce-compound-refresh/references/schema.yaml +236 -0
  145. package/skills/ce-compound-refresh/references/scope.md +18 -0
  146. package/skills/ce-compound-refresh/references/worth-audit.md +35 -0
  147. package/skills/ce-compound-refresh/references/yaml-schema.md +130 -0
  148. package/skills/ce-compound-refresh/scripts/validate-doc-claims.py +497 -0
  149. package/skills/ce-compound-refresh/scripts/validate-frontmatter.py +137 -0
  150. package/skills/ce-debug/SKILL.md +122 -0
  151. package/skills/ce-debug/references/anti-patterns.md +91 -0
  152. package/skills/ce-debug/references/defense-in-depth.md +39 -0
  153. package/skills/ce-debug/references/fix.md +21 -0
  154. package/skills/ce-debug/references/investigate.md +114 -0
  155. package/skills/ce-debug/references/investigation-techniques.md +384 -0
  156. package/skills/ce-debug/references/pipeline-mode.md +78 -0
  157. package/skills/ce-debug/references/post-fix-handoff.md +60 -0
  158. package/skills/ce-debug/references/return-to-caller.md +57 -0
  159. package/skills/ce-doc-review/SKILL.md +75 -0
  160. package/skills/ce-doc-review/references/bulk-preview.md +146 -0
  161. package/skills/ce-doc-review/references/cross-model-review.md +207 -0
  162. package/skills/ce-doc-review/references/decision-primer.md +47 -0
  163. package/skills/ce-doc-review/references/dispatch.md +56 -0
  164. package/skills/ce-doc-review/references/document-intake.md +44 -0
  165. package/skills/ce-doc-review/references/findings-schema.json +85 -0
  166. package/skills/ce-doc-review/references/modes.md +20 -0
  167. package/skills/ce-doc-review/references/open-questions-defer.md +158 -0
  168. package/skills/ce-doc-review/references/persona-selection.md +41 -0
  169. package/skills/ce-doc-review/references/personas/adversarial-document-reviewer.md +109 -0
  170. package/skills/ce-doc-review/references/personas/coherence-reviewer.md +69 -0
  171. package/skills/ce-doc-review/references/personas/design-lens-reviewer.md +48 -0
  172. package/skills/ce-doc-review/references/personas/feasibility-reviewer.md +50 -0
  173. package/skills/ce-doc-review/references/personas/product-lens-reviewer.md +85 -0
  174. package/skills/ce-doc-review/references/personas/scope-guardian-reviewer.md +83 -0
  175. package/skills/ce-doc-review/references/personas/security-lens-reviewer.md +41 -0
  176. package/skills/ce-doc-review/references/personas/whole-doc-reviewer.md +25 -0
  177. package/skills/ce-doc-review/references/rendering-floor.md +175 -0
  178. package/skills/ce-doc-review/references/review-output-template.md +123 -0
  179. package/skills/ce-doc-review/references/subagent-template.md +188 -0
  180. package/skills/ce-doc-review/references/synthesis-and-presentation.md +350 -0
  181. package/skills/ce-doc-review/references/walkthrough.md +347 -0
  182. package/skills/ce-doc-review/scripts/cross-model-doc-review.sh +1270 -0
  183. package/skills/ce-doc-review/scripts/packs-resolve.py +737 -0
  184. package/skills/ce-doc-review/scripts/peer-job-runner.py +2594 -0
  185. package/skills/ce-dogfood/SKILL.md +66 -0
  186. package/skills/ce-dogfood/agents/openai.yaml +2 -0
  187. package/skills/ce-dogfood/references/dogfood-report-template.md +97 -0
  188. package/skills/ce-dogfood/references/phases.md +167 -0
  189. package/skills/ce-dogfood/references/test-matrix-taxonomy.md +62 -0
  190. package/skills/ce-dogfood/scripts/packs-resolve.py +737 -0
  191. package/skills/ce-explain/SKILL.md +81 -0
  192. package/skills/ce-explain/references/agents/behavior-trace-scout.md +19 -0
  193. package/skills/ce-explain/references/agents/work-recap-scout.md +23 -0
  194. package/skills/ce-explain/references/check-in.md +18 -0
  195. package/skills/ce-explain/references/destinations.md +35 -0
  196. package/skills/ce-explain/references/explainer-html.md +29 -0
  197. package/skills/ce-explain/references/explainer-markdown.md +24 -0
  198. package/skills/ce-explain/references/intake.md +50 -0
  199. package/skills/ce-explain/references/orchestration.md +46 -0
  200. package/skills/ce-handoff/SKILL.md +54 -0
  201. package/skills/ce-handoff/references/create.md +88 -0
  202. package/skills/ce-handoff/references/resume.md +46 -0
  203. package/skills/ce-ideate/SKILL.md +75 -0
  204. package/skills/ce-ideate/references/agents/issue-intelligence-analyst.md +166 -0
  205. package/skills/ce-ideate/references/agents/learnings-researcher.md +247 -0
  206. package/skills/ce-ideate/references/agents/slack-researcher.md +127 -0
  207. package/skills/ce-ideate/references/agents/web-researcher.md +121 -0
  208. package/skills/ce-ideate/references/decomposition.md +39 -0
  209. package/skills/ce-ideate/references/divergent-ideation.md +112 -0
  210. package/skills/ce-ideate/references/grounding.md +138 -0
  211. package/skills/ce-ideate/references/html-rendering.md +638 -0
  212. package/skills/ce-ideate/references/ideation-sections.md +191 -0
  213. package/skills/ce-ideate/references/issue-intelligence.md +44 -0
  214. package/skills/ce-ideate/references/markdown-rendering.md +242 -0
  215. package/skills/ce-ideate/references/output-mode.md +34 -0
  216. package/skills/ce-ideate/references/post-ideation-workflow.md +169 -0
  217. package/skills/ce-ideate/references/scope-gates.md +148 -0
  218. package/skills/ce-ideate/references/universal-ideation.md +119 -0
  219. package/skills/ce-ideate/references/user-research-artifacts.md +28 -0
  220. package/skills/ce-ideate/references/web-research-cache.md +56 -0
  221. package/skills/ce-noslop/SKILL.md +45 -0
  222. package/skills/ce-noslop/references/patterns.md +61 -0
  223. package/skills/ce-noslop/references/terminology.md +3 -0
  224. package/skills/ce-optimize/SKILL.md +64 -0
  225. package/skills/ce-optimize/references/agents/learnings-researcher.md +247 -0
  226. package/skills/ce-optimize/references/agents/repo-research-analyst.md +258 -0
  227. package/skills/ce-optimize/references/example-expensive-benchmark-spec.yaml +88 -0
  228. package/skills/ce-optimize/references/example-hard-spec.yaml +64 -0
  229. package/skills/ce-optimize/references/example-judge-spec.yaml +83 -0
  230. package/skills/ce-optimize/references/example-text-target-spec.yaml +80 -0
  231. package/skills/ce-optimize/references/experiment-log-schema.yaml +563 -0
  232. package/skills/ce-optimize/references/experiment-prompt-template.md +143 -0
  233. package/skills/ce-optimize/references/judge-prompt-template.md +117 -0
  234. package/skills/ce-optimize/references/loop.md +286 -0
  235. package/skills/ce-optimize/references/measurement.md +168 -0
  236. package/skills/ce-optimize/references/optimize-spec-schema.yaml +570 -0
  237. package/skills/ce-optimize/references/persistence.md +93 -0
  238. package/skills/ce-optimize/references/spec.md +107 -0
  239. package/skills/ce-optimize/references/text-targets.md +51 -0
  240. package/skills/ce-optimize/references/usage-guide.md +147 -0
  241. package/skills/ce-optimize/references/wrap-up.md +54 -0
  242. package/skills/ce-optimize/scripts/decide.mjs +676 -0
  243. package/skills/ce-optimize/scripts/experiment-worktree.sh +330 -0
  244. package/skills/ce-optimize/scripts/measure.sh +140 -0
  245. package/skills/ce-optimize/scripts/parallel-probe.sh +134 -0
  246. package/skills/ce-plan/SKILL.md +60 -0
  247. package/skills/ce-plan/references/agents/agent-native-planning-strategist.md +66 -0
  248. package/skills/ce-plan/references/agents/architecture-strategist.md +46 -0
  249. package/skills/ce-plan/references/agents/best-practices-researcher.md +118 -0
  250. package/skills/ce-plan/references/agents/data-integrity-guardian.md +68 -0
  251. package/skills/ce-plan/references/agents/framework-docs-researcher.md +97 -0
  252. package/skills/ce-plan/references/agents/git-history-analyzer.md +40 -0
  253. package/skills/ce-plan/references/agents/learnings-researcher.md +268 -0
  254. package/skills/ce-plan/references/agents/pattern-recognition-specialist.md +55 -0
  255. package/skills/ce-plan/references/agents/performance-oracle.md +108 -0
  256. package/skills/ce-plan/references/agents/repo-research-analyst.md +262 -0
  257. package/skills/ce-plan/references/agents/security-sentinel.md +91 -0
  258. package/skills/ce-plan/references/agents/slack-researcher.md +131 -0
  259. package/skills/ce-plan/references/agents/spec-flow-analyzer.md +84 -0
  260. package/skills/ce-plan/references/agents/web-researcher.md +125 -0
  261. package/skills/ce-plan/references/approach-altitude.md +55 -0
  262. package/skills/ce-plan/references/bakeoff.md +9 -0
  263. package/skills/ce-plan/references/deepening-workflow.md +263 -0
  264. package/skills/ce-plan/references/final-review.md +134 -0
  265. package/skills/ce-plan/references/html-rendering.md +638 -0
  266. package/skills/ce-plan/references/intake.md +158 -0
  267. package/skills/ce-plan/references/markdown-rendering.md +242 -0
  268. package/skills/ce-plan/references/output-contracts.md +29 -0
  269. package/skills/ce-plan/references/output-mode.md +45 -0
  270. package/skills/ce-plan/references/plan-handoff.md +116 -0
  271. package/skills/ce-plan/references/plan-sections.md +489 -0
  272. package/skills/ce-plan/references/reasoning-elevation.md +124 -0
  273. package/skills/ce-plan/references/research.md +211 -0
  274. package/skills/ce-plan/references/resume.md +61 -0
  275. package/skills/ce-plan/references/settled-decisions.md +45 -0
  276. package/skills/ce-plan/references/structure.md +207 -0
  277. package/skills/ce-plan/references/synthesis-summary.md +260 -0
  278. package/skills/ce-plan/references/universal-planning.md +170 -0
  279. package/skills/ce-plan/scripts/elevation-dispatch.sh +288 -0
  280. package/skills/ce-plan/scripts/packs-resolve.py +737 -0
  281. package/skills/ce-plan/scripts/peer-job-runner.py +2594 -0
  282. package/skills/ce-polish/SKILL.md +22 -0
  283. package/skills/ce-polish/agents/openai.yaml +2 -0
  284. package/skills/ce-polish/references/dev-server-astro.md +58 -0
  285. package/skills/ce-polish/references/dev-server-detection.md +40 -0
  286. package/skills/ce-polish/references/dev-server-next.md +61 -0
  287. package/skills/ce-polish/references/dev-server-nuxt.md +58 -0
  288. package/skills/ce-polish/references/dev-server-procfile.md +59 -0
  289. package/skills/ce-polish/references/dev-server-rails.md +50 -0
  290. package/skills/ce-polish/references/dev-server-remix.md +58 -0
  291. package/skills/ce-polish/references/dev-server-sveltekit.md +58 -0
  292. package/skills/ce-polish/references/dev-server-vite.md +48 -0
  293. package/skills/ce-polish/references/install-riffrec.md +35 -0
  294. package/skills/ce-polish/references/launch-json-schema.md +177 -0
  295. package/skills/ce-polish/references/live-loop.md +98 -0
  296. package/skills/ce-polish/references/live-remote.md +35 -0
  297. package/skills/ce-polish/references/live-start.md +93 -0
  298. package/skills/ce-polish/references/live-stream-contract.md +253 -0
  299. package/skills/ce-polish/references/run.md +67 -0
  300. package/skills/ce-polish/scripts/detect-project-type.sh +277 -0
  301. package/skills/ce-polish/scripts/detect-riffrec.sh +225 -0
  302. package/skills/ce-polish/scripts/live-endpoint.js +2841 -0
  303. package/skills/ce-polish/scripts/read-launch-json.sh +117 -0
  304. package/skills/ce-polish/scripts/resolve-package-manager.sh +95 -0
  305. package/skills/ce-polish/scripts/resolve-port.sh +307 -0
  306. package/skills/ce-pov/SKILL.md +64 -0
  307. package/skills/ce-pov/references/agents/external-evidence-researcher.md +26 -0
  308. package/skills/ce-pov/references/agents/pov-peer.md +43 -0
  309. package/skills/ce-pov/references/agents/precedent-activity-scout.md +21 -0
  310. package/skills/ce-pov/references/agents/project-grounding-scout.md +32 -0
  311. package/skills/ce-pov/references/boundaries.md +36 -0
  312. package/skills/ce-pov/references/cross-model-panel.md +596 -0
  313. package/skills/ce-pov/references/followup.md +9 -0
  314. package/skills/ce-pov/references/grounding.md +47 -0
  315. package/skills/ce-pov/references/intake.md +61 -0
  316. package/skills/ce-pov/references/invocation.md +47 -0
  317. package/skills/ce-pov/references/method.md +68 -0
  318. package/skills/ce-pov/references/pov-schema.json +56 -0
  319. package/skills/ce-pov/references/report.md +7 -0
  320. package/skills/ce-pov/scripts/cross-model-pov.sh +1110 -0
  321. package/skills/ce-pov/scripts/peer-job-runner.py +2594 -0
  322. package/skills/ce-product-pulse/SKILL.md +81 -0
  323. package/skills/ce-product-pulse/agents/openai.yaml +2 -0
  324. package/skills/ce-product-pulse/references/config.md +20 -0
  325. package/skills/ce-product-pulse/references/interview.md +260 -0
  326. package/skills/ce-product-pulse/references/report-template.md +89 -0
  327. package/skills/ce-product-pulse/references/run.md +46 -0
  328. package/skills/ce-product-pulse/references/setup.md +43 -0
  329. package/skills/ce-promote/SKILL.md +90 -0
  330. package/skills/ce-promote/agents/openai.yaml +2 -0
  331. package/skills/ce-promote/references/spiral-cli.md +149 -0
  332. package/skills/ce-proof/SKILL.md +65 -0
  333. package/skills/ce-proof/references/api.md +176 -0
  334. package/skills/ce-proof/references/workflows.md +124 -0
  335. package/skills/ce-prototype/SKILL.md +59 -0
  336. package/skills/ce-prototype/assets/annotate.css +206 -0
  337. package/skills/ce-prototype/assets/annotate.js +837 -0
  338. package/skills/ce-prototype/references/annotation-loop.md +32 -0
  339. package/skills/ce-prototype/references/build.md +39 -0
  340. package/skills/ce-prototype/references/craft-floor.md +43 -0
  341. package/skills/ce-prototype/references/preview.md +118 -0
  342. package/skills/ce-prototype/references/scoping.md +38 -0
  343. package/skills/ce-prototype/references/write-back.md +37 -0
  344. package/skills/ce-prototype/scripts/light-webserver.js +1275 -0
  345. package/skills/ce-resolve-pr-feedback/SKILL.md +60 -0
  346. package/skills/ce-resolve-pr-feedback/references/agents/pr-comment-resolver.md +59 -0
  347. package/skills/ce-resolve-pr-feedback/references/evaluation-rubric.md +141 -0
  348. package/skills/ce-resolve-pr-feedback/references/full-mode.md +336 -0
  349. package/skills/ce-resolve-pr-feedback/references/pipeline-mode.md +23 -0
  350. package/skills/ce-resolve-pr-feedback/references/resume.md +60 -0
  351. package/skills/ce-resolve-pr-feedback/references/return-to-caller.md +111 -0
  352. package/skills/ce-resolve-pr-feedback/references/targeted-mode.md +48 -0
  353. package/skills/ce-resolve-pr-feedback/scripts/get-pr-comments +176 -0
  354. package/skills/ce-resolve-pr-feedback/scripts/get-thread-for-comment +84 -0
  355. package/skills/ce-resolve-pr-feedback/scripts/pending-feedback.py +287 -0
  356. package/skills/ce-resolve-pr-feedback/scripts/reply-to-pr-thread +57 -0
  357. package/skills/ce-resolve-pr-feedback/scripts/resolve-pr-thread +23 -0
  358. package/skills/ce-retune/SKILL.md +42 -0
  359. package/skills/ce-retune/agents/openai.yaml +2 -0
  360. package/skills/ce-retune/references/baseline-mining.md +122 -0
  361. package/skills/ce-retune/references/corpus-audit.md +128 -0
  362. package/skills/ce-retune/references/cut-passes.md +129 -0
  363. package/skills/ce-retune/references/halt-taxonomy.md +123 -0
  364. package/skills/ce-retune/references/noise-floor.md +131 -0
  365. package/skills/ce-retune/references/workflow-shapes.md +73 -0
  366. package/skills/ce-riffrec-feedback-analysis/SKILL.md +33 -0
  367. package/skills/ce-riffrec-feedback-analysis/references/analyzer.md +18 -0
  368. package/skills/ce-riffrec-feedback-analysis/references/compound-engineering-feedback-format.md +116 -0
  369. package/skills/ce-riffrec-feedback-analysis/references/extensive-analysis.md +98 -0
  370. package/skills/ce-riffrec-feedback-analysis/references/install-riffrec.md +27 -0
  371. package/skills/ce-riffrec-feedback-analysis/references/quick-bug-report.md +38 -0
  372. package/skills/ce-riffrec-feedback-analysis/scripts/analyze_riffrec_zip.py +1306 -0
  373. package/skills/ce-setup/SKILL.md +103 -0
  374. package/skills/ce-setup/agents/openai.yaml +2 -0
  375. package/skills/ce-setup/assets/compounding-directive.md +11 -0
  376. package/skills/ce-setup/assets/noslop-directive.md +7 -0
  377. package/skills/ce-setup/assets/pack-rule-template.md +11 -0
  378. package/skills/ce-setup/references/acpx-cache-warm.md +14 -0
  379. package/skills/ce-setup/references/config-template.yaml +210 -0
  380. package/skills/ce-setup/references/legacy-codex-tool-map.md +15 -0
  381. package/skills/ce-setup/references/pack-scaffold.md +45 -0
  382. package/skills/ce-setup/references/repo-fixes.md +121 -0
  383. package/skills/ce-setup/scripts/check-health +929 -0
  384. package/skills/ce-setup/scripts/packs-resolve.py +737 -0
  385. package/skills/ce-simplify-code/SKILL.md +76 -0
  386. package/skills/ce-simplify-code/references/personas/code-quality-reviewer.md +17 -0
  387. package/skills/ce-simplify-code/references/personas/code-reuse-reviewer.md +7 -0
  388. package/skills/ce-simplify-code/references/personas/comment-reviewer.md +24 -0
  389. package/skills/ce-simplify-code/references/personas/efficiency-reviewer.md +11 -0
  390. package/skills/ce-simplify-code/references/personas/test-value-reviewer.md +23 -0
  391. package/skills/ce-simplify-code/references/reviewer-dispatch.md +11 -0
  392. package/skills/ce-simplify-code/references/standalone-report.md +25 -0
  393. package/skills/ce-strategy/SKILL.md +61 -0
  394. package/skills/ce-strategy/references/grounding.md +22 -0
  395. package/skills/ce-strategy/references/interview.md +179 -0
  396. package/skills/ce-strategy/references/strategy-template.md +94 -0
  397. package/skills/ce-strategy/references/update-run.md +33 -0
  398. package/skills/ce-sweep/SKILL.md +93 -0
  399. package/skills/ce-sweep/agents/openai.yaml +2 -0
  400. package/skills/ce-sweep/references/agents/media-analyzer.md +54 -0
  401. package/skills/ce-sweep/references/interview.md +208 -0
  402. package/skills/ce-sweep/references/model-tiers.md +13 -0
  403. package/skills/ce-sweep/references/plan-template.md +62 -0
  404. package/skills/ce-sweep/references/run.md +126 -0
  405. package/skills/ce-sweep/references/sources/email.md +57 -0
  406. package/skills/ce-sweep/references/sources/github-issues.md +59 -0
  407. package/skills/ce-sweep/references/sources/slack.md +61 -0
  408. package/skills/ce-sweep/references/state-schema.md +157 -0
  409. package/skills/ce-sweep/references/subagent-template.md +60 -0
  410. package/skills/ce-sweep/scripts/analyze_riffrec_zip.py +1306 -0
  411. package/skills/ce-sweep/scripts/sweep-state.py +793 -0
  412. package/skills/ce-test-browser/SKILL.md +50 -0
  413. package/skills/ce-test-browser/references/agent-browser-driver.md +47 -0
  414. package/skills/ce-test-browser/references/pipeline-orchestration.md +45 -0
  415. package/skills/ce-test-browser/references/route-and-report.md +129 -0
  416. package/skills/ce-test-browser/scripts/resolve-port.sh +41 -0
  417. package/skills/ce-test-xcode/SKILL.md +26 -0
  418. package/skills/ce-test-xcode/agents/openai.yaml +2 -0
  419. package/skills/ce-test-xcode/references/setup-and-build.md +32 -0
  420. package/skills/ce-test-xcode/references/test-and-report.md +64 -0
  421. package/skills/ce-work/SKILL.md +62 -0
  422. package/skills/ce-work/references/agents/figma-design-sync.md +27 -0
  423. package/skills/ce-work/references/agents/implementation-worker.md +17 -0
  424. package/skills/ce-work/references/cross-model-execution.md +191 -0
  425. package/skills/ce-work/references/execution-engines.md +64 -0
  426. package/skills/ce-work/references/execution-strategy.md +73 -0
  427. package/skills/ce-work/references/implementation-loop.md +107 -0
  428. package/skills/ce-work/references/implementation-result-schema.json +52 -0
  429. package/skills/ce-work/references/input-triage.md +50 -0
  430. package/skills/ce-work/references/non-code-execution.md +23 -0
  431. package/skills/ce-work/references/return-to-caller.md +33 -0
  432. package/skills/ce-work/references/review-findings-followup.md +82 -0
  433. package/skills/ce-work/references/shipping-workflow.md +89 -0
  434. package/skills/ce-work/references/tracker-defer.md +150 -0
  435. package/skills/ce-work/references/work-intake.md +51 -0
  436. package/skills/ce-work/references/workspace-setup.md +27 -0
  437. package/skills/ce-work/scripts/__pycache__/unit_workspace_jobs.cpython-314.pyc +0 -0
  438. package/skills/ce-work/scripts/__pycache__/unit_workspace_state.cpython-314.pyc +0 -0
  439. package/skills/ce-work/scripts/cross-model-work.sh +1385 -0
  440. package/skills/ce-work/scripts/peer-job-runner.py +2594 -0
  441. package/skills/ce-work/scripts/unit-workspace.py +215 -0
  442. package/skills/ce-work/scripts/unit_workspace_ignored.py +93 -0
  443. package/skills/ce-work/scripts/unit_workspace_integration.py +677 -0
  444. package/skills/ce-work/scripts/unit_workspace_jobs.py +1216 -0
  445. package/skills/ce-work/scripts/unit_workspace_lifecycle.py +981 -0
  446. package/skills/ce-work/scripts/unit_workspace_state.py +1379 -0
  447. package/skills/ce-work/scripts/unit_workspace_transaction.py +612 -0
  448. package/skills/ce-worktree/SKILL.md +54 -0
  449. package/skills/lfg/SKILL.md +59 -0
  450. package/skills/lfg/references/debug-return.md +25 -0
  451. package/skills/lfg/references/intake.md +30 -0
  452. package/skills/lfg/references/next-work-handoff.md +96 -0
  453. package/skills/lfg/references/plan-brief.md +36 -0
  454. package/skills/lfg/references/review-followup.md +78 -0
  455. package/skills/lfg/references/shipping.md +65 -0
  456. package/skills/lfg/references/stage-routing.md +49 -0
  457. package/skills/lfg/references/task-visibility.md +11 -0
  458. package/skills/lfg/references/tracker-defer.md +150 -0
  459. package/skills/lfg/references/work-return.md +27 -0
  460. package/skills/wtf/SKILL.md +33 -0
  461. package/skills/wtf/agents/openai.yaml +2 -0
@@ -0,0 +1,330 @@
1
+ #!/bin/bash
2
+
3
+ # Experiment Worktree Manager
4
+ # Creates, cleans up, and manages worktrees for optimization experiments.
5
+ # Each experiment gets an isolated worktree with copied shared resources.
6
+ #
7
+ # Usage:
8
+ # experiment-worktree.sh create <spec_name> <exp_index> <base_branch> [shared_file ...]
9
+ # experiment-worktree.sh cleanup <spec_name> <exp_index>
10
+ # experiment-worktree.sh cleanup-all <spec_name>
11
+ # experiment-worktree.sh count
12
+ #
13
+ # Worktrees are created at: .worktrees/optimize-<spec>-exp-<NNN>/
14
+ # Branches are named: optimize-exp/<spec>/exp-<NNN>
15
+
16
+ set -euo pipefail
17
+
18
+ RED='\033[0;31m'
19
+ GREEN='\033[0;32m'
20
+ YELLOW='\033[1;33m'
21
+ BLUE='\033[0;34m'
22
+ NC='\033[0m'
23
+
24
+ GIT_ROOT=$(git rev-parse --show-toplevel 2>/dev/null) || {
25
+ echo -e "${RED}Error: Not in a git repository${NC}" >&2
26
+ exit 1
27
+ }
28
+
29
+ WORKTREE_DIR="$GIT_ROOT/.worktrees"
30
+
31
+ # Every path this script deletes is built from these two inputs, so they are
32
+ # checked before any path is composed: a name or shared path that can climb
33
+ # out of its directory would turn a cleanup into a delete of something else.
34
+ require_spec_name() {
35
+ if [[ ! "$1" =~ ^[a-z0-9][a-z0-9-]*$ ]]; then
36
+ echo -e "${RED}Error: spec name must be lowercase kebab-case: $1${NC}" >&2
37
+ exit 1
38
+ fi
39
+ }
40
+
41
+ require_relative_inside() {
42
+ case "/$1/" in
43
+ //*|*/../*|*/./*)
44
+ echo -e "${RED}Error: shared path must be relative and stay inside the repo: $1${NC}" >&2
45
+ exit 1
46
+ ;;
47
+ esac
48
+ }
49
+
50
+ # Last-resort removal when git cannot remove a worktree. Only ever a direct
51
+ # child of .worktrees that this script named.
52
+ remove_experiment_dir() {
53
+ local target="$1"
54
+ if [[ "$(dirname "$target")" != "$WORKTREE_DIR" ]] || [[ "$(basename "$target")" != optimize-*-exp-* ]] || [[ -L "$target" ]]; then
55
+ echo -e "${RED}Error: refusing to remove a path outside $WORKTREE_DIR: $target${NC}" >&2
56
+ return 1
57
+ fi
58
+ rm -rf "$target"
59
+ }
60
+
61
+ experiment_branch_name() {
62
+ local spec_name="${1:?Error: spec_name required}"
63
+ local padded_index="${2:?Error: padded_index required}"
64
+
65
+ # Keep experiment refs outside optimize/<spec> so they do not collide
66
+ # with the long-lived optimization branch namespace.
67
+ echo "optimize-exp/${spec_name}/exp-${padded_index}"
68
+ }
69
+
70
+ ensure_worktree_exclude() {
71
+ local exclude_file
72
+ exclude_file=$(git rev-parse --git-path info/exclude)
73
+
74
+ mkdir -p "$(dirname "$exclude_file")"
75
+
76
+ if ! grep -q "^\.worktrees$" "$exclude_file" 2>/dev/null; then
77
+ echo ".worktrees" >> "$exclude_file"
78
+ fi
79
+ }
80
+
81
+ is_registered_worktree() {
82
+ local worktree_path="${1:?Error: worktree_path required}"
83
+
84
+ git worktree list --porcelain | awk -v target="$worktree_path" '
85
+ $1 == "worktree" && $2 == target { found = 1 }
86
+ END { exit(found ? 0 : 1) }
87
+ '
88
+ }
89
+
90
+ is_branch_checked_out() {
91
+ local branch_name="${1:?Error: branch_name required}"
92
+ local branch_ref="refs/heads/$branch_name"
93
+
94
+ git worktree list --porcelain | awk -v target="$branch_ref" '
95
+ $1 == "branch" && $2 == target { found = 1 }
96
+ END { exit(found ? 0 : 1) }
97
+ '
98
+ }
99
+
100
+ reset_worktree_to_base() {
101
+ local worktree_path="${1:?Error: worktree_path required}"
102
+ local branch_name="${2:?Error: branch_name required}"
103
+ local base_branch="${3:?Error: base_branch required}"
104
+ local current_branch
105
+
106
+ current_branch=$(git -C "$worktree_path" symbolic-ref --quiet --short HEAD 2>/dev/null || true)
107
+ if [[ "$current_branch" != "$branch_name" ]]; then
108
+ echo -e "${RED}Error: Existing worktree is on unexpected branch: ${current_branch:-detached} (expected $branch_name)${NC}" >&2
109
+ echo -e "${RED}Clean up the stale worktree before rerunning this experiment.${NC}" >&2
110
+ return 1
111
+ fi
112
+
113
+ echo -e "${YELLOW}Resetting existing experiment worktree to base: $branch_name -> $base_branch${NC}" >&2
114
+ git -C "$worktree_path" reset --hard "$base_branch" >/dev/null
115
+ git -C "$worktree_path" clean -fdx >/dev/null
116
+ }
117
+
118
+ # Create an experiment worktree
119
+ create_worktree() {
120
+ local spec_name="${1:?Error: spec_name required}"
121
+ local exp_index="${2:?Error: exp_index required}"
122
+ local base_branch="${3:?Error: base_branch required}"
123
+ shift 3
124
+ require_spec_name "$spec_name"
125
+ local shared_file
126
+ for shared_file in "$@"; do
127
+ require_relative_inside "$shared_file"
128
+ done
129
+
130
+ local padded_index
131
+ padded_index=$(printf "%03d" "$exp_index")
132
+ local worktree_name="optimize-${spec_name}-exp-${padded_index}"
133
+ local branch_name
134
+ branch_name=$(experiment_branch_name "$spec_name" "$padded_index")
135
+ local worktree_path="$WORKTREE_DIR/$worktree_name"
136
+
137
+ # Check if worktree already exists
138
+ if [[ -d "$worktree_path" ]]; then
139
+ if ! git -C "$worktree_path" rev-parse --is-inside-work-tree >/dev/null 2>&1 || \
140
+ ! is_registered_worktree "$worktree_path"; then
141
+ echo -e "${RED}Error: Existing path is not a valid registered git worktree: $worktree_path${NC}" >&2
142
+ echo -e "${RED}Remove or repair that directory before rerunning the experiment.${NC}" >&2
143
+ return 1
144
+ fi
145
+
146
+ echo -e "${YELLOW}Worktree already exists: $worktree_path${NC}" >&2
147
+ reset_worktree_to_base "$worktree_path" "$branch_name" "$base_branch"
148
+ else
149
+ mkdir -p "$WORKTREE_DIR"
150
+ ensure_worktree_exclude
151
+
152
+ # Create worktree from the base branch
153
+ if ! git worktree add -b "$branch_name" "$worktree_path" "$base_branch" --quiet 2>/dev/null; then
154
+ if git show-ref --verify --quiet "refs/heads/$branch_name"; then
155
+ if is_branch_checked_out "$branch_name"; then
156
+ echo -e "${RED}Error: Existing experiment branch is already checked out: $branch_name${NC}" >&2
157
+ echo -e "${RED}Clean up the stale worktree before rerunning this experiment.${NC}" >&2
158
+ return 1
159
+ fi
160
+
161
+ echo -e "${YELLOW}Resetting existing experiment branch to base: $branch_name -> $base_branch${NC}" >&2
162
+ git branch -f "$branch_name" "$base_branch" >/dev/null
163
+ git worktree add "$worktree_path" "$branch_name" --quiet
164
+ else
165
+ echo -e "${RED}Error: Failed to create worktree for $branch_name from $base_branch${NC}" >&2
166
+ return 1
167
+ fi
168
+ fi
169
+ fi
170
+
171
+ # Copy .env files from main repo
172
+ for f in "$GIT_ROOT"/.env*; do
173
+ if [[ -f "$f" ]]; then
174
+ local basename
175
+ basename=$(basename "$f")
176
+ if [[ "$basename" != ".env.example" ]]; then
177
+ cp "$f" "$worktree_path/$basename"
178
+ fi
179
+ fi
180
+ done
181
+
182
+ # Copy shared files
183
+ for shared_file in "$@"; do
184
+ if [[ -f "$GIT_ROOT/$shared_file" ]]; then
185
+ local dir
186
+ dir=$(dirname "$worktree_path/$shared_file")
187
+ mkdir -p "$dir"
188
+ cp "$GIT_ROOT/$shared_file" "$worktree_path/$shared_file"
189
+ elif [[ -d "$GIT_ROOT/$shared_file" ]]; then
190
+ local dir
191
+ dir=$(dirname "$worktree_path/$shared_file")
192
+ mkdir -p "$dir"
193
+ rm -rf "$worktree_path/$shared_file"
194
+ cp -R "$GIT_ROOT/$shared_file" "$worktree_path/$shared_file"
195
+ fi
196
+ done
197
+
198
+ echo "$worktree_path"
199
+ }
200
+
201
+ # Clean up a single experiment worktree
202
+ cleanup_worktree() {
203
+ local spec_name="${1:?Error: spec_name required}"
204
+ local exp_index="${2:?Error: exp_index required}"
205
+ require_spec_name "$spec_name"
206
+
207
+ local padded_index
208
+ padded_index=$(printf "%03d" "$exp_index")
209
+ local worktree_name="optimize-${spec_name}-exp-${padded_index}"
210
+ local branch_name
211
+ branch_name=$(experiment_branch_name "$spec_name" "$padded_index")
212
+ local worktree_path="$WORKTREE_DIR/$worktree_name"
213
+
214
+ if [[ -d "$worktree_path" ]]; then
215
+ git worktree remove "$worktree_path" --force 2>/dev/null || {
216
+ # If worktree remove fails, try manual cleanup
217
+ remove_experiment_dir "$worktree_path" 2>/dev/null || true
218
+ git worktree prune 2>/dev/null || true
219
+ }
220
+ fi
221
+
222
+ # Delete the experiment branch
223
+ git branch -D "$branch_name" 2>/dev/null || true
224
+
225
+ echo -e "${GREEN}Cleaned up: $worktree_name${NC}" >&2
226
+ }
227
+
228
+ # Clean up all experiment worktrees for a spec
229
+ cleanup_all() {
230
+ local spec_name="${1:?Error: spec_name required}"
231
+ require_spec_name "$spec_name"
232
+ local prefix="optimize-${spec_name}-exp-"
233
+ local count=0
234
+
235
+ if [[ ! -d "$WORKTREE_DIR" ]]; then
236
+ echo -e "${YELLOW}No worktrees directory found${NC}" >&2
237
+ return 0
238
+ fi
239
+
240
+ for worktree_path in "$WORKTREE_DIR"/${prefix}*; do
241
+ if [[ -d "$worktree_path" ]]; then
242
+ local worktree_name
243
+ worktree_name=$(basename "$worktree_path")
244
+ # Extract index from name
245
+ local index_str="${worktree_name#$prefix}"
246
+
247
+ git worktree remove "$worktree_path" --force 2>/dev/null || {
248
+ remove_experiment_dir "$worktree_path" 2>/dev/null || true
249
+ }
250
+
251
+ # Delete the branch
252
+ local branch_name
253
+ branch_name=$(experiment_branch_name "$spec_name" "$index_str")
254
+ git branch -D "$branch_name" 2>/dev/null || true
255
+
256
+ count=$((count + 1))
257
+ fi
258
+ done
259
+
260
+ git worktree prune 2>/dev/null || true
261
+
262
+ # Clean up empty worktree directory
263
+ if [[ -d "$WORKTREE_DIR" ]] && [[ -z "$(ls -A "$WORKTREE_DIR" 2>/dev/null)" ]]; then
264
+ rmdir "$WORKTREE_DIR" 2>/dev/null || true
265
+ fi
266
+
267
+ echo -e "${GREEN}Cleaned up $count experiment worktree(s) for $spec_name${NC}" >&2
268
+ }
269
+
270
+ # Count total worktrees (for budget check)
271
+ count_worktrees() {
272
+ local count=0
273
+ if [[ -d "$WORKTREE_DIR" ]]; then
274
+ for worktree_path in "$WORKTREE_DIR"/*; do
275
+ if [[ -d "$worktree_path" ]] && [[ -e "$worktree_path/.git" ]]; then
276
+ count=$((count + 1))
277
+ fi
278
+ done
279
+ fi
280
+ echo "$count"
281
+ }
282
+
283
+ # Main
284
+ main() {
285
+ local command="${1:-help}"
286
+
287
+ case "$command" in
288
+ create)
289
+ shift
290
+ create_worktree "$@"
291
+ ;;
292
+ cleanup)
293
+ shift
294
+ cleanup_worktree "$@"
295
+ ;;
296
+ cleanup-all)
297
+ shift
298
+ cleanup_all "$@"
299
+ ;;
300
+ count)
301
+ count_worktrees
302
+ ;;
303
+ help)
304
+ cat << 'EOF'
305
+ Experiment Worktree Manager
306
+
307
+ Usage:
308
+ experiment-worktree.sh create <spec_name> <exp_index> <base_branch> [shared_file ...]
309
+ experiment-worktree.sh cleanup <spec_name> <exp_index>
310
+ experiment-worktree.sh cleanup-all <spec_name>
311
+ experiment-worktree.sh count
312
+
313
+ Commands:
314
+ create Create an experiment worktree with copied shared files
315
+ cleanup Remove a single experiment worktree and its branch
316
+ cleanup-all Remove all experiment worktrees for a spec
317
+ count Count total active worktrees (for budget checking)
318
+
319
+ Worktrees: .worktrees/optimize-<spec>-exp-<NNN>/
320
+ Branches: optimize-exp/<spec>/exp-<NNN>
321
+ EOF
322
+ ;;
323
+ *)
324
+ echo -e "${RED}Unknown command: $command${NC}" >&2
325
+ exit 1
326
+ ;;
327
+ esac
328
+ }
329
+
330
+ main "$@"
@@ -0,0 +1,140 @@
1
+ #!/bin/bash
2
+
3
+ # Measurement Runner
4
+ # Runs a measurement command, captures JSON output, and handles timeouts.
5
+ # The orchestrating agent (not this script) evaluates gates and handles
6
+ # stability repeats.
7
+ #
8
+ # Usage: measure.sh <command> <timeout_seconds> [working_directory] [KEY=VALUE ...]
9
+ #
10
+ # Arguments:
11
+ # command - Shell command to run (e.g., "python evaluate.py")
12
+ # timeout_seconds - Maximum seconds before killing the command
13
+ # working_directory - Directory to run the command in (default: .)
14
+ # KEY=VALUE - Optional environment variables to set before running
15
+ #
16
+ # Output:
17
+ # stdout: Raw JSON output from the measurement command
18
+ # stderr: Passed through from the measurement command
19
+ # exit code: Same as the measurement command (124 for timeout, 125 when
20
+ # CE_OPTIMIZE_CENSOR_AFTER fires before timeout_seconds)
21
+
22
+ set -euo pipefail
23
+
24
+ # Parse arguments
25
+ COMMAND="${1:?Error: command argument required}"
26
+ TIMEOUT="${2:?Error: timeout_seconds argument required}"
27
+ shift 2
28
+
29
+ WORKDIR="."
30
+ if [[ $# -gt 0 ]] && [[ "$1" != *=* ]]; then
31
+ WORKDIR="$1"
32
+ shift
33
+ fi
34
+
35
+ # Set any KEY=VALUE environment variables
36
+ for arg in "$@"; do
37
+ if [[ "$arg" == *=* ]]; then
38
+ export "$arg"
39
+ fi
40
+ done
41
+
42
+ # Change to working directory
43
+ cd "$WORKDIR" || {
44
+ echo "Error: cannot cd to $WORKDIR" >&2
45
+ exit 1
46
+ }
47
+
48
+ run_timed_command() {
49
+ local timeout_bin="$1"
50
+ if [[ -n "${CENSOR_STATUS_FILE:-}" ]]; then
51
+ "$timeout_bin" "$TIMEOUT" bash -c 'bash -c "$1"; printf "%s\n" "$?" > "$2"; exit 0' _ "$COMMAND" "$CENSOR_STATUS_FILE"
52
+ return
53
+ fi
54
+ "$timeout_bin" "$TIMEOUT" bash -c "$COMMAND"
55
+ }
56
+
57
+ run_with_timeout() {
58
+ if command -v timeout >/dev/null 2>&1; then
59
+ run_timed_command timeout
60
+ return
61
+ fi
62
+
63
+ if command -v gtimeout >/dev/null 2>&1; then
64
+ run_timed_command gtimeout
65
+ return
66
+ fi
67
+
68
+ PY=""
69
+ for c in python3 python py; do
70
+ if command -v "$c" >/dev/null 2>&1 && "$c" -c '' >/dev/null 2>&1; then
71
+ PY="$c"
72
+ break
73
+ fi
74
+ done
75
+ if [ -n "$PY" ]; then
76
+ "$PY" - "$TIMEOUT" "$COMMAND" "${CENSOR_STATUS_FILE:-}" <<'PY'
77
+ import os
78
+ import signal
79
+ import subprocess
80
+ import sys
81
+
82
+ timeout_seconds = float(sys.argv[1])
83
+ command = sys.argv[2]
84
+ status_file = sys.argv[3] if len(sys.argv) > 3 and sys.argv[3] else ""
85
+ proc = subprocess.Popen(["bash", "-c", command], start_new_session=True)
86
+
87
+ try:
88
+ rc = proc.wait(timeout=timeout_seconds)
89
+ if status_file:
90
+ with open(status_file, "w", encoding="utf-8") as fh:
91
+ fh.write(f"{rc}\n")
92
+ sys.exit(0)
93
+ sys.exit(rc)
94
+ except subprocess.TimeoutExpired:
95
+ os.killpg(proc.pid, signal.SIGTERM)
96
+ try:
97
+ proc.wait(timeout=5)
98
+ except subprocess.TimeoutExpired:
99
+ os.killpg(proc.pid, signal.SIGKILL)
100
+ proc.wait()
101
+ sys.exit(124)
102
+ PY
103
+ return
104
+ fi
105
+
106
+ echo "Error: no timeout implementation available (tried timeout, gtimeout, and a working Python 3 interpreter)" >&2
107
+ exit 1
108
+ }
109
+
110
+ # Optional futility bound: CE_OPTIMIZE_CENSOR_AFTER=<seconds> kills a live
111
+ # run that has already exceeded a predeclared noncompetitive bound. Distinct
112
+ # from timeout_seconds (the spec's hard cap). Exit 125 means censored; 124
113
+ # still means the configured timeout fired.
114
+ CENSOR_AFTER="${CE_OPTIMIZE_CENSOR_AFTER:-}"
115
+ CENSORING=0
116
+ CENSOR_STATUS_FILE=""
117
+ if [[ -n "$CENSOR_AFTER" ]] && awk -v a="$CENSOR_AFTER" -v t="$TIMEOUT" 'BEGIN { exit !(a ~ /^[0-9]+(\.[0-9]+)?$/ && t+0 == t && a+0 > 0 && a+0 < t+0) }'; then
118
+ TIMEOUT="$CENSOR_AFTER"
119
+ CENSORING=1
120
+ CENSOR_STATUS_FILE=$(mktemp "${TMPDIR:-/tmp}/ce-optimize-censor-XXXXXX")
121
+ fi
122
+
123
+ # Run the measurement command with timeout
124
+ # timeout returns 124 if the command times out
125
+ # We pass stdout and stderr through directly
126
+ set +e
127
+ run_with_timeout
128
+ status=$?
129
+ set -e
130
+ if [[ $CENSORING -eq 1 ]]; then
131
+ if [[ -s "$CENSOR_STATUS_FILE" ]]; then
132
+ status=$(cat "$CENSOR_STATUS_FILE")
133
+ elif [[ $status -eq 124 ]]; then
134
+ echo "Error: measurement censored after ${CENSOR_AFTER}s (noncompetitive bound)" >&2
135
+ rm -f "$CENSOR_STATUS_FILE"
136
+ exit 125
137
+ fi
138
+ rm -f "$CENSOR_STATUS_FILE"
139
+ fi
140
+ exit "$status"
@@ -0,0 +1,134 @@
1
+ #!/bin/bash
2
+
3
+ # Parallelism Probe
4
+ # Detects common parallelism blockers in the target project.
5
+ # Output is advisory -- the skill presents results to the user for approval.
6
+ #
7
+ # Usage: parallel-probe.sh <project_directory> [measurement_command] [measurement_workdir] [shared_file ...]
8
+ #
9
+ # Arguments:
10
+ # project_directory - Root directory of the project to probe
11
+ # measurement_command - The measurement command from the spec (optional, for port detection)
12
+ # measurement_workdir - Measurement working directory relative to project root (default: .)
13
+ # shared_file - Explicitly declared shared files that parallel runs depend on
14
+ #
15
+ # Output:
16
+ # JSON to stdout with:
17
+ # mode: "parallel" | "serial" | "user-decision"
18
+ # blockers: [ { type, description, suggestion } ]
19
+
20
+ set -euo pipefail
21
+
22
+ PROJECT_DIR="${1:?Error: project_directory argument required}"
23
+ MEASUREMENT_CMD="${2:-}"
24
+ MEASUREMENT_WORKDIR="${3:-.}"
25
+
26
+ shift 3 2>/dev/null || shift $# 2>/dev/null || true
27
+ SHARED_FILES=()
28
+ if [[ $# -gt 0 ]]; then
29
+ SHARED_FILES=("$@")
30
+ fi
31
+
32
+ cd "$PROJECT_DIR" || {
33
+ echo '{"mode":"serial","blockers":[{"type":"error","description":"Cannot access project directory","suggestion":"Check path"}]}'
34
+ exit 0
35
+ }
36
+
37
+ PY=""
38
+ for c in python3 python py; do
39
+ if command -v "$c" >/dev/null 2>&1 && "$c" -c '' >/dev/null 2>&1; then
40
+ PY="$c"
41
+ break
42
+ fi
43
+ done
44
+ if [ -z "$PY" ]; then
45
+ echo '{"mode":"serial","blockers":[{"type":"missing_dependency","description":"A working Python 3 interpreter is required for structured probe output","suggestion":"Install Python 3 (python3, python, or py on PATH) or skip the probe and review parallel-readiness manually"}],"blocker_count":1}'
46
+ exit 0
47
+ fi
48
+
49
+ BLOCKERS="[]"
50
+ SCAN_PATHS=()
51
+
52
+ add_blocker() {
53
+ local type="$1"
54
+ local desc="$2"
55
+ local suggestion="$3"
56
+ BLOCKERS=$(echo "$BLOCKERS" | "$PY" -c "
57
+ import json, sys
58
+ b = json.load(sys.stdin)
59
+ b.append({'type': '$type', 'description': '''$desc''', 'suggestion': '''$suggestion'''})
60
+ print(json.dumps(b))
61
+ " 2>/dev/null || echo "$BLOCKERS")
62
+ }
63
+
64
+ add_scan_path() {
65
+ local candidate="$1"
66
+
67
+ if [[ -z "$candidate" ]]; then
68
+ return
69
+ fi
70
+
71
+ if [[ -e "$candidate" ]]; then
72
+ SCAN_PATHS+=("$candidate")
73
+ fi
74
+ }
75
+
76
+ add_scan_path "$MEASUREMENT_WORKDIR"
77
+
78
+ if [[ ${#SHARED_FILES[@]} -gt 0 ]]; then
79
+ for shared_file in "${SHARED_FILES[@]}"; do
80
+ add_scan_path "$shared_file"
81
+ done
82
+ fi
83
+
84
+ if [[ ${#SCAN_PATHS[@]} -eq 0 ]]; then
85
+ SCAN_PATHS=(".")
86
+ fi
87
+
88
+ # Check 1: Hardcoded ports in measurement command
89
+ if [[ -n "$MEASUREMENT_CMD" ]]; then
90
+ # Look for common port patterns in the command itself
91
+ if echo "$MEASUREMENT_CMD" | grep -qE '(--port(?:\s+|=)[0-9]+|:\s*[0-9]{4,5}|PORT=[0-9]+|localhost:[0-9]+)'; then
92
+ add_blocker "port" "Measurement command contains hardcoded port reference" "Parameterize port via environment variable (e.g., PORT=\$EVAL_PORT)"
93
+ fi
94
+ fi
95
+
96
+ # Check 2: SQLite databases in the measurement workdir or declared shared files
97
+ SQLITE_FILES=$(find "${SCAN_PATHS[@]}" -maxdepth 4 -type f \( -name '*.db' -o -name '*.sqlite' -o -name '*.sqlite3' \) ! -path '*/.git/*' ! -path '*/node_modules/*' ! -path '*/.claude/*' ! -path '*/.context/*' ! -path '*/.worktrees/*' 2>/dev/null | head -10 || true)
98
+ if [[ -n "$SQLITE_FILES" ]]; then
99
+ FILE_COUNT=$(echo "$SQLITE_FILES" | wc -l | tr -d ' ')
100
+ add_blocker "shared_file" "Found $FILE_COUNT SQLite database file(s)" "Copy database files into each experiment worktree"
101
+ fi
102
+
103
+ # Check 3: Lock/PID files in the measurement workdir or declared shared files
104
+ LOCK_FILES=$(find "${SCAN_PATHS[@]}" -maxdepth 4 -type f \( -name '*.lock' -o -name '*.pid' \) ! -path '*/.git/*' ! -path '*/node_modules/*' ! -path '*/.claude/*' ! -path '*/.context/*' ! -path '*/.worktrees/*' ! -name 'package-lock.json' ! -name 'yarn.lock' ! -name 'bun.lock' ! -name 'bun.lockb' ! -name 'Gemfile.lock' ! -name 'poetry.lock' ! -name 'Cargo.lock' 2>/dev/null | head -10 || true)
105
+ if [[ -n "$LOCK_FILES" ]]; then
106
+ FILE_COUNT=$(echo "$LOCK_FILES" | wc -l | tr -d ' ')
107
+ add_blocker "lock_file" "Found $FILE_COUNT lock/PID file(s) that may cause contention" "Ensure measurement command cleans up lock files, or run in serial mode"
108
+ fi
109
+
110
+ # Check 4: Exclusive resource hints in the measurement command
111
+ if [[ -n "$MEASUREMENT_CMD" ]] && echo "$MEASUREMENT_CMD" | grep -qiE '(cuda|gpu|tensorflow|torch|nvidia-smi|CUDA_VISIBLE_DEVICES)'; then
112
+ add_blocker "exclusive_resource" "Measurement command appears to use GPU or another exclusive accelerator" "GPU is typically an exclusive resource -- consider serial mode or device parameterization"
113
+ fi
114
+
115
+ # Determine mode
116
+ BLOCKER_COUNT=$(echo "$BLOCKERS" | "$PY" -c "import json,sys; print(len(json.load(sys.stdin)))" 2>/dev/null || echo "0")
117
+
118
+ if [[ "$BLOCKER_COUNT" == "0" ]]; then
119
+ MODE="parallel"
120
+ elif echo "$BLOCKERS" | "$PY" -c "import json,sys; b=json.load(sys.stdin); exit(0 if any(x['type']=='exclusive_resource' for x in b) else 1)" 2>/dev/null; then
121
+ MODE="serial"
122
+ else
123
+ MODE="user-decision"
124
+ fi
125
+
126
+ # Output JSON result
127
+ "$PY" -c "
128
+ import json
129
+ print(json.dumps({
130
+ 'mode': '$MODE',
131
+ 'blockers': $BLOCKERS,
132
+ 'blocker_count': $BLOCKER_COUNT
133
+ }, indent=2))
134
+ "
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: ce-plan
3
+ description: "Create structured plans for multi-step work, including software and non-software tasks. Use when asked to plan, break down implementation, plan from requirements, or deepen an existing plan; prefer ce-brainstorm for exploratory framing."
4
+ argument-hint: "[optional: feature description, requirements doc path, plan path to deepen, or any task to plan] [output:html]"
5
+ ---
6
+
7
+ # Create Technical Plan
8
+
9
+ **The current year is 2026.**
10
+
11
+ **Outcome:** a plan for carrying out and checking the agreed work while preserving its outcome and constraints. Resolve technical choices from evidence; leave adequate instructions unchanged. `ce-brainstorm` defines **WHAT**, `ce-plan` plans **HOW**, and `ce-work` executes. A prior brainstorm is optional.
12
+
13
+ **An explicit invocation always produces a plan.** Never classify a direct invocation as "not a planning task" and route out. It may select any output contract below, and the smallest valid plan is a few sentences in chat.
14
+
15
+ **Research, decide, and write the plan — never implement.** Do not write production code, run tests, or learn from execution-time results. Directional pseudo-code and grammar sketches may communicate design; changing code to see what happens belongs in `ce-work`.
16
+
17
+ ## Mandatory Completion Contract
18
+
19
+ A run is complete when its output contract's done condition is met. Every normal interactive branch that produces a plan artifact or checkpoint is incomplete until the user has been asked what to do next. A request that already authorizes the next action is that answer. For a Durable software implementation-plan run that continues past the resume check, that means the Phase 5.4 menu has been presented and the selected action has actually fired. For Direct, the change stated and the handoff offered; for a Chat brief, the brief and its one-line save-or-`ce-work` offer in chat. Neither presents the Phase 5.4 menu. Non-software plans and approach-level plans end with the handoff their reference workflow defines. A run that only answers a question may end after the answer unless its reference requires a save or share step.
20
+
21
+ Writing the file, checking confidence, and running or explicitly skipping `ce-doc-review` are intermediate milestones. In pipeline mode, the run is complete only when the plan, the confidence check, and the non-interactive document-review state have been returned to the caller, which decides what happens next.
22
+
23
+ ## Interaction Method
24
+
25
+ Ask one question at a time through the host's blocking question tool already in the current tool list. Match by capability; never probe a user-facing tool to discover it. If none is listed or a real question call errors, render numbered choices in chat; never silently skip a required question. If no feature description was supplied, ask what to plan and wait.
26
+
27
+ ## Output Contract
28
+
29
+ Decide which output contract applies at the start of scoping (Phase 0.6), before choosing depth and before the scoping synthesis. It applies only when no resume route (Phase 0.1) fired and the source check (Phase 0.2) found no upstream artifact. Ground it with bounded inline reads of what the request names, without dispatching a subagent. Select one:
30
+
31
+ - **Direct** — the work can be stated, done, and verified in one pass with no decision the user would weigh. State the change in a few sentences and offer the handoff to `ce-work` or the user; execution starts only with implementation authority, as `references/output-contracts.md` defines.
32
+ - **Chat brief** — bounded work with at most one decision the user would weigh and no risk surface. Deliver it in chat and stop.
33
+ - **Durable** — everything else. Continue the workflow below.
34
+
35
+ `references/output-contracts.md` defines Direct and Chat brief; read it when either is selected. When the tier is still uncertain after those reads, take the heavier one. If a read surfaces a decision the user would weigh, a risk surface, or multi-pass verification, move to the heavier tier before emitting anything. Durable regardless of size: a run with no synchronous user to act on chat this turn (pipeline, headless, goal- or scheduler-driven), a request whose wording asks for a plan, a plan file, or an output format, a request that continues an existing plan's item, and a risk surface — authentication, payments, migrations, external contracts.
36
+
37
+ ## Workflow
38
+
39
+ Phases run in order unless a reference routes out or short-circuits. Read a phase's required reference in full when you enter that phase; a read made before that phase does not satisfy it, and a reference named for the final steps is read again at its step even when already in context. If a required reference cannot be read, stop before the action it governs and report the blocker and recovery path; never reconstruct the missing rules from memory. In pipeline mode, every required-reference failure returns `status: blocked`, `phase`, `blocker`, and `recovery_path`; include `artifact_path` and preserve the artifact when one exists. Report blocked even when an artifact exists.
40
+
41
+ ### Phase 0: Output, Resume, and Scope
42
+
43
+ 1. **Output first.** Read `references/output-mode.md` before interpreting any phase. It defines token parsing, output and confirmation precedence, renderer selection, artifact location, and when a repository may be resolved.
44
+ 2. **Resume, deepen, approach, and domain.** Read `references/resume.md` before acting. It defines resuming an existing plan, enriching a requirements-only plan, deepening, approach-level planning, and the software/non-software split. Follow any terminal route it selects; otherwise continue.
45
+ 3. **Source and scope.** Read `references/intake.md` before Phase 0.2 and follow it through Phase 0.7. It defines finding and preserving the upstream artifact, routing out to bootstrap work, blocking questions, depth, named resources, and the scoping synthesis; the Output Contract decision above happens inside it. Do not pass a decision point that has not resolved.
46
+
47
+ ### Phases 1-4: Research and Compose
48
+
49
+ 4. Read `references/research.md` before gathering context.
50
+ 5. Read `references/structure.md` before resolving questions or structuring the plan.
51
+ 6. Compose from `references/plan-sections.md` plus the format-rendering reference selected by `output-mode.md`.
52
+
53
+ ### Phase 5: Review, Write, Deepen, and Hand Off
54
+
55
+ 7. Read `references/final-review.md` before the pre-write review; it defines Phase 5.1 through 5.3.2. On an interactive run from a brainstorm, the user sees the Phase 5.1.5 scoping synthesis in chat before the write: a confirmation to wait on, or its one-line auto-proceed announcement.
56
+ 8. **Model elevation.** Immediately before authoring, read `references/reasoning-elevation.md`, resolve the choice at this boundary, and follow it. Do not author until activation resolution has completed and any selected dispatch or transparent fallback has settled.
57
+ 9. In pipeline mode, evidence that invalidates a decision settled earlier in the session stops the write. Return the exact token `settled-decision-invalidated`, the decision, and the reason; do not resolve it silently.
58
+ 10. Write the plan before presenting options, then complete the confidence path `final-review.md` defines.
59
+
60
+ **STOP. Read `references/plan-handoff.md` immediately before Phase 5.3.8 and 5.4** (document review and the handoff menu). Document review is mandatory for a Durable plan and the default is non-interactive (`mode:non-interactive`). In interactive software runs, ask exactly: "Plan ready at `<absolute path to plan>`. What would you like to do next?" Present its menu and wait. If the selection arrives after a user turn, reload `references/plan-handoff.md` before acting. Rendering the menu, receiving a selection, or announcing a route is not completion; execute the selected action.