@soleur/opencode 0.0.0-stage → 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 (812) hide show
  1. package/.claude-plugin/agents.manifest.json +476 -0
  2. package/.claude-plugin/plugin.json +42 -0
  3. package/README.md +44 -2
  4. package/agents/community/.gitkeep +0 -0
  5. package/agents/engineering/cto.md +87 -0
  6. package/agents/engineering/design/ddd-architect.md +95 -0
  7. package/agents/engineering/discovery/agent-finder.md +214 -0
  8. package/agents/engineering/discovery/functional-discovery.md +182 -0
  9. package/agents/engineering/infra/infra-security.md +151 -0
  10. package/agents/engineering/infra/platform-strategist.md +109 -0
  11. package/agents/engineering/infra/terraform-architect.md +171 -0
  12. package/agents/engineering/prompt-engineer.md +37 -0
  13. package/agents/engineering/research/best-practices-researcher.md +115 -0
  14. package/agents/engineering/research/framework-docs-researcher.md +93 -0
  15. package/agents/engineering/research/git-history-analyzer.md +53 -0
  16. package/agents/engineering/research/learnings-researcher.md +285 -0
  17. package/agents/engineering/research/repo-research-analyst.md +118 -0
  18. package/agents/engineering/review/agent-native-reviewer.md +279 -0
  19. package/agents/engineering/review/architecture-strategist.md +61 -0
  20. package/agents/engineering/review/code-quality-analyst.md +92 -0
  21. package/agents/engineering/review/code-simplicity-reviewer.md +109 -0
  22. package/agents/engineering/review/data-integrity-guardian.md +82 -0
  23. package/agents/engineering/review/data-migration-expert.md +98 -0
  24. package/agents/engineering/review/deployment-verification-agent.md +183 -0
  25. package/agents/engineering/review/dhh-rails-reviewer.md +46 -0
  26. package/agents/engineering/review/kieran-rails-reviewer.md +87 -0
  27. package/agents/engineering/review/legacy-code-expert.md +55 -0
  28. package/agents/engineering/review/observability-coverage-reviewer.md +147 -0
  29. package/agents/engineering/review/pattern-recognition-specialist.md +59 -0
  30. package/agents/engineering/review/performance-oracle.md +130 -0
  31. package/agents/engineering/review/security-sentinel.md +167 -0
  32. package/agents/engineering/review/semgrep-sast.md +36 -0
  33. package/agents/engineering/review/test-design-reviewer.md +150 -0
  34. package/agents/engineering/review/user-impact-reviewer.md +70 -0
  35. package/agents/engineering/workflow/pr-comment-resolver.md +69 -0
  36. package/agents/finance/budget-analyst.md +29 -0
  37. package/agents/finance/cfo.md +44 -0
  38. package/agents/finance/financial-reporter.md +30 -0
  39. package/agents/finance/revenue-analyst.md +30 -0
  40. package/agents/legal/clo.md +115 -0
  41. package/agents/legal/legal-compliance-auditor.md +110 -0
  42. package/agents/legal/legal-document-generator.md +134 -0
  43. package/agents/marketing/analytics-analyst.md +25 -0
  44. package/agents/marketing/brand-architect.md +181 -0
  45. package/agents/marketing/cmo.md +76 -0
  46. package/agents/marketing/conversion-optimizer.md +19 -0
  47. package/agents/marketing/copywriter.md +20 -0
  48. package/agents/marketing/fact-checker.md +70 -0
  49. package/agents/marketing/growth-strategist.md +145 -0
  50. package/agents/marketing/paid-media-strategist.md +28 -0
  51. package/agents/marketing/pricing-strategist.md +17 -0
  52. package/agents/marketing/programmatic-seo-specialist.md +25 -0
  53. package/agents/marketing/retention-strategist.md +23 -0
  54. package/agents/marketing/seo-aeo-analyst.md +164 -0
  55. package/agents/operations/coo.md +50 -0
  56. package/agents/operations/ops-advisor.md +78 -0
  57. package/agents/operations/ops-provisioner.md +101 -0
  58. package/agents/operations/ops-research.md +52 -0
  59. package/agents/operations/service-automator.md +278 -0
  60. package/agents/product/business-validator.md +206 -0
  61. package/agents/product/competitive-intelligence.md +89 -0
  62. package/agents/product/cpo.md +63 -0
  63. package/agents/product/design/ux-design-lead.md +209 -0
  64. package/agents/product/spec-flow-analyzer.md +122 -0
  65. package/agents/sales/cro.md +44 -0
  66. package/agents/sales/deal-architect.md +29 -0
  67. package/agents/sales/outbound-strategist.md +29 -0
  68. package/agents/sales/pipeline-analyst.md +29 -0
  69. package/agents/support/cco.md +48 -0
  70. package/agents/support/community-manager.md +570 -0
  71. package/agents/support/ticket-triage.md +70 -0
  72. package/bin/soleur-opencode.js +29 -0
  73. package/commands/go.md +659 -0
  74. package/commands/help.md +273 -0
  75. package/commands/sync.md +977 -0
  76. package/commands/version.md +103 -0
  77. package/hooks/antigravity-hooks.json +84 -0
  78. package/hooks/antigravity-session-start.sh +15 -0
  79. package/hooks/bare-root-cwd-guard.sh +131 -0
  80. package/hooks/browser-snapshot-credential-guard.sh +200 -0
  81. package/hooks/codex-session-start.sh +9 -0
  82. package/hooks/compaction-state.sh +525 -0
  83. package/hooks/destructive-command-guard.sh +1387 -0
  84. package/hooks/devin-session-start.sh +90 -0
  85. package/hooks/ext-filter-detect.sh +171 -0
  86. package/hooks/hooks.json +133 -0
  87. package/hooks/lib/hook-tool-kind.sh +24 -0
  88. package/hooks/lib/log-rotation.sh +176 -0
  89. package/hooks/lib/shell-argv.pl +576 -0
  90. package/hooks/memory-backstop.sh +1114 -0
  91. package/hooks/operator-stage-approval.sh +391 -0
  92. package/hooks/stop-hook.sh +367 -0
  93. package/hooks/unkept-promise-hook.sh +383 -0
  94. package/hooks/version-banner.sh +127 -0
  95. package/hooks/welcome-hook.sh +50 -0
  96. package/install.js +108 -0
  97. package/lib/agent-registry.ts +154 -0
  98. package/lib/c4-canonical-cli.mjs +34 -0
  99. package/lib/c4-canonical.mjs +46 -0
  100. package/lib/c4-from-components.ts +554 -0
  101. package/lib/go-routing.ts +81 -0
  102. package/lib/grok-inspect-contract.ts +311 -0
  103. package/lib/harness-model-map.ts +101 -0
  104. package/lib/harness-parity.ts +726 -0
  105. package/lib/harness-tool-map.ts +180 -0
  106. package/lib/harness.ts +716 -0
  107. package/lib/heartbeat-live-reconcile.ts +1153 -0
  108. package/lib/heartbeat-manifest.ts +342 -0
  109. package/lib/kb-coverage.ts +252 -0
  110. package/lib/pr-merge-poll.ts +103 -0
  111. package/lib/workflow-fidelity.ts +388 -0
  112. package/opencode/INSTRUCTIONS.md +152 -0
  113. package/opencode/agents/engineering/cto.md +10 -0
  114. package/opencode/agents/engineering/design/ddd-architect.md +10 -0
  115. package/opencode/agents/engineering/discovery/agent-finder.md +10 -0
  116. package/opencode/agents/engineering/discovery/functional-discovery.md +10 -0
  117. package/opencode/agents/engineering/infra/infra-security.md +10 -0
  118. package/opencode/agents/engineering/infra/platform-strategist.md +10 -0
  119. package/opencode/agents/engineering/infra/terraform-architect.md +10 -0
  120. package/opencode/agents/engineering/prompt-engineer.md +10 -0
  121. package/opencode/agents/engineering/research/best-practices-researcher.md +10 -0
  122. package/opencode/agents/engineering/research/framework-docs-researcher.md +10 -0
  123. package/opencode/agents/engineering/research/git-history-analyzer.md +10 -0
  124. package/opencode/agents/engineering/research/learnings-researcher.md +10 -0
  125. package/opencode/agents/engineering/research/repo-research-analyst.md +10 -0
  126. package/opencode/agents/engineering/review/agent-native-reviewer.md +10 -0
  127. package/opencode/agents/engineering/review/architecture-strategist.md +10 -0
  128. package/opencode/agents/engineering/review/code-quality-analyst.md +10 -0
  129. package/opencode/agents/engineering/review/code-simplicity-reviewer.md +10 -0
  130. package/opencode/agents/engineering/review/data-integrity-guardian.md +10 -0
  131. package/opencode/agents/engineering/review/data-migration-expert.md +10 -0
  132. package/opencode/agents/engineering/review/deployment-verification-agent.md +10 -0
  133. package/opencode/agents/engineering/review/dhh-rails-reviewer.md +10 -0
  134. package/opencode/agents/engineering/review/kieran-rails-reviewer.md +10 -0
  135. package/opencode/agents/engineering/review/legacy-code-expert.md +10 -0
  136. package/opencode/agents/engineering/review/observability-coverage-reviewer.md +10 -0
  137. package/opencode/agents/engineering/review/pattern-recognition-specialist.md +10 -0
  138. package/opencode/agents/engineering/review/performance-oracle.md +10 -0
  139. package/opencode/agents/engineering/review/security-sentinel.md +10 -0
  140. package/opencode/agents/engineering/review/semgrep-sast.md +10 -0
  141. package/opencode/agents/engineering/review/test-design-reviewer.md +10 -0
  142. package/opencode/agents/engineering/review/user-impact-reviewer.md +10 -0
  143. package/opencode/agents/engineering/workflow/pr-comment-resolver.md +10 -0
  144. package/opencode/agents/finance/budget-analyst.md +10 -0
  145. package/opencode/agents/finance/cfo.md +10 -0
  146. package/opencode/agents/finance/financial-reporter.md +10 -0
  147. package/opencode/agents/finance/revenue-analyst.md +10 -0
  148. package/opencode/agents/legal/clo.md +10 -0
  149. package/opencode/agents/legal/legal-compliance-auditor.md +10 -0
  150. package/opencode/agents/legal/legal-document-generator.md +10 -0
  151. package/opencode/agents/marketing/analytics-analyst.md +10 -0
  152. package/opencode/agents/marketing/brand-architect.md +10 -0
  153. package/opencode/agents/marketing/cmo.md +10 -0
  154. package/opencode/agents/marketing/conversion-optimizer.md +10 -0
  155. package/opencode/agents/marketing/copywriter.md +10 -0
  156. package/opencode/agents/marketing/fact-checker.md +10 -0
  157. package/opencode/agents/marketing/growth-strategist.md +10 -0
  158. package/opencode/agents/marketing/paid-media-strategist.md +10 -0
  159. package/opencode/agents/marketing/pricing-strategist.md +10 -0
  160. package/opencode/agents/marketing/programmatic-seo-specialist.md +10 -0
  161. package/opencode/agents/marketing/retention-strategist.md +10 -0
  162. package/opencode/agents/marketing/seo-aeo-analyst.md +10 -0
  163. package/opencode/agents/operations/coo.md +10 -0
  164. package/opencode/agents/operations/ops-advisor.md +10 -0
  165. package/opencode/agents/operations/ops-provisioner.md +10 -0
  166. package/opencode/agents/operations/ops-research.md +10 -0
  167. package/opencode/agents/operations/service-automator.md +10 -0
  168. package/opencode/agents/product/business-validator.md +10 -0
  169. package/opencode/agents/product/competitive-intelligence.md +10 -0
  170. package/opencode/agents/product/cpo.md +10 -0
  171. package/opencode/agents/product/design/ux-design-lead.md +10 -0
  172. package/opencode/agents/product/spec-flow-analyzer.md +10 -0
  173. package/opencode/agents/sales/cro.md +10 -0
  174. package/opencode/agents/sales/deal-architect.md +10 -0
  175. package/opencode/agents/sales/outbound-strategist.md +10 -0
  176. package/opencode/agents/sales/pipeline-analyst.md +10 -0
  177. package/opencode/agents/support/cco.md +10 -0
  178. package/opencode/agents/support/community-manager.md +10 -0
  179. package/opencode/agents/support/ticket-triage.md +10 -0
  180. package/opencode/commands/go.md +10 -0
  181. package/opencode/commands/help.md +10 -0
  182. package/opencode/commands/sync.md +10 -0
  183. package/opencode/commands/version.md +11 -0
  184. package/opencode/opencode.json +8 -0
  185. package/opencode/plugin.ts +493 -0
  186. package/package.json +36 -4
  187. package/scripts/admin-merge-ready.sh +545 -0
  188. package/scripts/admin-merge-ready.test.sh +753 -0
  189. package/scripts/affected-tests.sh +908 -0
  190. package/scripts/affected-tests.test.sh +1797 -0
  191. package/scripts/alpha-metrics.sh +78 -0
  192. package/scripts/alpha-metrics.test.sh +115 -0
  193. package/scripts/ancestor-signal-helpers.baseline.txt +16 -0
  194. package/scripts/audit-flag-flip.sh +107 -0
  195. package/scripts/check-red-on-main.sh +316 -0
  196. package/scripts/ci-head-verdict.sh +363 -0
  197. package/scripts/cloud-detect.sh +193 -0
  198. package/scripts/delegation-verify.sh +657 -0
  199. package/scripts/delegation-verify.test.sh +1424 -0
  200. package/scripts/deploy-arm.sh +475 -0
  201. package/scripts/domain-model-drift.sh +419 -0
  202. package/scripts/emit-decision.sh +144 -0
  203. package/scripts/emit-decision.test.sh +144 -0
  204. package/scripts/ext-filter-divergence-corpus.txt +15 -0
  205. package/scripts/ext-filter-divergence.sh +189 -0
  206. package/scripts/generate-c4-from-components.ts +442 -0
  207. package/scripts/grok-fidelity-gate.sh +68 -0
  208. package/scripts/grok-pre-push-gate.sh +232 -0
  209. package/scripts/harness-discovery-smoke.ts +906 -0
  210. package/scripts/harness-parity-census.ts +92 -0
  211. package/scripts/inngest-luks-alert-armed-probe.ts +29 -0
  212. package/scripts/install-opencode-adapter.ts +520 -0
  213. package/scripts/lib/affected-tests/common.sh +365 -0
  214. package/scripts/lib/affected-tests/go.sh +157 -0
  215. package/scripts/lib/affected-tests/js.sh +188 -0
  216. package/scripts/lib/affected-tests/nx-turbo.sh +98 -0
  217. package/scripts/lib/affected-tests/python.sh +185 -0
  218. package/scripts/lib/context-sanitize.sh +49 -0
  219. package/scripts/lib/domain-model-lib.sh +180 -0
  220. package/scripts/lib/ext-filter-grammar.tsv +34 -0
  221. package/scripts/lib/operator-script.sh +1236 -0
  222. package/scripts/lib/proc.sh +580 -0
  223. package/scripts/lib/session-state.sh +748 -0
  224. package/scripts/lib/tmp-classify.sh +843 -0
  225. package/scripts/lib/wrapper-boundary.sh +47 -0
  226. package/scripts/lint-ratchet.py +1547 -0
  227. package/scripts/monitor-pr-checks.sh +441 -0
  228. package/scripts/pipeline-tally.sh +756 -0
  229. package/scripts/pipeline-tally.test.sh +740 -0
  230. package/scripts/plugin-version.sh +528 -0
  231. package/scripts/precommit-guard.sh +113 -0
  232. package/scripts/precommit-guard.test.sh +254 -0
  233. package/scripts/reconcile-live-heartbeats.ts +705 -0
  234. package/scripts/render-c4-model.sh +217 -0
  235. package/scripts/resolve-git-root.sh +55 -0
  236. package/scripts/resolve-regenerable-conflicts.sh +363 -0
  237. package/scripts/resolve-regenerable-conflicts.test.sh +780 -0
  238. package/scripts/ruff-requirements.txt +22 -0
  239. package/scripts/run-in-pid-namespace.sh +98 -0
  240. package/scripts/run-in-pid-namespace.test.sh +290 -0
  241. package/scripts/scan-ancestor-signal-helpers.py +556 -0
  242. package/scripts/scan-ancestor-signal-helpers.test.sh +670 -0
  243. package/scripts/setup-ralph-loop.sh +238 -0
  244. package/scripts/sync-cursor-name-map.ts +316 -0
  245. package/scripts/sync-grok-agent-compat.ts +188 -0
  246. package/scripts/sync-npm-package.ts +178 -0
  247. package/scripts/sync-opencode-adapter.ts +479 -0
  248. package/scripts/sync-pr-behind.sh +534 -0
  249. package/scripts/sync-pr-behind.test.sh +252 -0
  250. package/scripts/taste-profile-update.sh +180 -0
  251. package/scripts/taste-profile-update.test.sh +167 -0
  252. package/scripts/write-budget-marker.sh +23 -0
  253. package/scripts/write-kb-coverage.ts +113 -0
  254. package/skills/admin-ip-refresh/SKILL.md +81 -0
  255. package/skills/admin-ip-refresh/references/admin-ip-refresh-procedure.md +201 -0
  256. package/skills/agent-browser/SKILL.md +698 -0
  257. package/skills/agent-browser/scripts/playwright-mcp-profile-slot.sh +304 -0
  258. package/skills/agent-browser/scripts/playwright-mcp-redact-proxy.py +964 -0
  259. package/skills/agent-browser/scripts/redact-a11y-snapshot.py +443 -0
  260. package/skills/agent-browser/test/fixtures/capture-playwright-mcp-fixtures.py +217 -0
  261. package/skills/agent-browser/test/fixtures/fake-passthrough-proxy.py +24 -0
  262. package/skills/agent-browser/test/fixtures/fake-playwright-mcp.py +131 -0
  263. package/skills/agent-browser/test/fixtures/make-proxy-mutant.py +48 -0
  264. package/skills/agent-browser/test/fixtures/odd-shapes/dialog-link-injection.json +10 -0
  265. package/skills/agent-browser/test/fixtures/odd-shapes/empty-content.json +5 -0
  266. package/skills/agent-browser/test/fixtures/odd-shapes/error-and-result.json +4 -0
  267. package/skills/agent-browser/test/fixtures/odd-shapes/error-code-bool.json +6 -0
  268. package/skills/agent-browser/test/fixtures/odd-shapes/error-code-string.json +6 -0
  269. package/skills/agent-browser/test/fixtures/odd-shapes/error-message-tree.json +6 -0
  270. package/skills/agent-browser/test/fixtures/odd-shapes/error-no-data.json +6 -0
  271. package/skills/agent-browser/test/fixtures/odd-shapes/error-string.json +4 -0
  272. package/skills/agent-browser/test/fixtures/odd-shapes/error-with-data.json +9 -0
  273. package/skills/agent-browser/test/fixtures/odd-shapes/evaluate-escaped-object.json +10 -0
  274. package/skills/agent-browser/test/fixtures/odd-shapes/invalid-utf8.json +4 -0
  275. package/skills/agent-browser/test/fixtures/odd-shapes/link-result.json +10 -0
  276. package/skills/agent-browser/test/fixtures/odd-shapes/list-two-results.json +6 -0
  277. package/skills/agent-browser/test/fixtures/odd-shapes/meta-in-result.json +13 -0
  278. package/skills/agent-browser/test/fixtures/odd-shapes/no-content.json +5 -0
  279. package/skills/agent-browser/test/fixtures/odd-shapes/quoted-key.json +10 -0
  280. package/skills/agent-browser/test/fixtures/odd-shapes/resource-block.json +18 -0
  281. package/skills/agent-browser/test/fixtures/odd-shapes/result-and-method.json +11 -0
  282. package/skills/agent-browser/test/fixtures/odd-shapes/result-string.json +3 -0
  283. package/skills/agent-browser/test/fixtures/odd-shapes/run-code-escaped-one-row.json +10 -0
  284. package/skills/agent-browser/test/fixtures/odd-shapes/run-code-escaped.json +10 -0
  285. package/skills/agent-browser/test/fixtures/odd-shapes/structured-content.json +13 -0
  286. package/skills/agent-browser/test/fixtures/odd-shapes/tools-list-no-tools.json +5 -0
  287. package/skills/agent-browser/test/fixtures/odd-shapes/tree-no-credential.json +10 -0
  288. package/skills/agent-browser/test/fixtures/odd-shapes/two-text-blocks.json +14 -0
  289. package/skills/agent-browser/test/fixtures/odd-shapes/unparsable-line.json +3 -0
  290. package/skills/agent-browser/test/fixtures/odd-shapes/value-contains-brace.json +10 -0
  291. package/skills/agent-browser/test/fixtures/odd-shapes/value-contains-link-substring.json +10 -0
  292. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/close.json +12 -0
  293. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/evaluate.json +12 -0
  294. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/find.json +12 -0
  295. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/framing.json +6 -0
  296. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/initialize.json +14 -0
  297. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/navigate-link.json +12 -0
  298. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/navigate.json +12 -0
  299. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/roots-list-request.json +5 -0
  300. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/screenshot.json +17 -0
  301. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-filename.json +12 -0
  302. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-meta-json.json +12 -0
  303. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot-meta-raw.json +12 -0
  304. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/snapshot.json +12 -0
  305. package/skills/agent-browser/test/fixtures/playwright-mcp-0.0.78/tools-list.json +827 -0
  306. package/skills/agent-browser/test/fixtures/proxy-session-driver.py +138 -0
  307. package/skills/agent-browser/test/fixtures/session-facts.py +102 -0
  308. package/skills/agent-browser/test/playwright-mcp-lifetime.test.sh +1620 -0
  309. package/skills/agent-browser/test/playwright-mcp-redact-proxy.test.sh +1599 -0
  310. package/skills/agent-browser/test/redact-a11y-snapshot.test.sh +527 -0
  311. package/skills/agent-native-architecture/SKILL.md +479 -0
  312. package/skills/agent-native-architecture/references/action-parity-discipline.md +430 -0
  313. package/skills/agent-native-architecture/references/agent-execution-patterns.md +483 -0
  314. package/skills/agent-native-architecture/references/agent-native-testing.md +605 -0
  315. package/skills/agent-native-architecture/references/architecture-patterns.md +493 -0
  316. package/skills/agent-native-architecture/references/dynamic-context-injection.md +358 -0
  317. package/skills/agent-native-architecture/references/files-universal-interface.md +314 -0
  318. package/skills/agent-native-architecture/references/from-primitives-to-domain-tools.md +381 -0
  319. package/skills/agent-native-architecture/references/mcp-tool-design.md +524 -0
  320. package/skills/agent-native-architecture/references/mobile-patterns.md +897 -0
  321. package/skills/agent-native-architecture/references/product-implications.md +478 -0
  322. package/skills/agent-native-architecture/references/refactoring-to-prompt-native.md +342 -0
  323. package/skills/agent-native-architecture/references/self-modification.md +294 -0
  324. package/skills/agent-native-architecture/references/shared-workspace-architecture.md +700 -0
  325. package/skills/agent-native-architecture/references/system-prompt-design.md +263 -0
  326. package/skills/agent-native-audit/SKILL.md +300 -0
  327. package/skills/agent-native-audit/workflows/agent-native-audit.workflow.js +423 -0
  328. package/skills/andrew-kane-gem-writer/SKILL.md +189 -0
  329. package/skills/andrew-kane-gem-writer/references/database-adapters.md +231 -0
  330. package/skills/andrew-kane-gem-writer/references/module-organization.md +121 -0
  331. package/skills/andrew-kane-gem-writer/references/rails-integration.md +183 -0
  332. package/skills/andrew-kane-gem-writer/references/resources.md +126 -0
  333. package/skills/andrew-kane-gem-writer/references/testing-patterns.md +261 -0
  334. package/skills/architecture/SKILL.md +436 -0
  335. package/skills/architecture/references/adr-template.md +154 -0
  336. package/skills/architecture/references/likec4-reference.md +136 -0
  337. package/skills/architecture/references/nfr-reference.md +126 -0
  338. package/skills/archive-kb/SKILL.md +86 -0
  339. package/skills/archive-kb/scripts/archive-kb.sh +300 -0
  340. package/skills/archive-kb/test/archive-kb-partial-run.test.sh +276 -0
  341. package/skills/atdd-developer/SKILL.md +65 -0
  342. package/skills/brainstorm/SKILL.md +701 -0
  343. package/skills/brainstorm/references/brainstorm-brand-workshop.md +153 -0
  344. package/skills/brainstorm/references/brainstorm-domain-config.md +63 -0
  345. package/skills/brainstorm/references/brainstorm-validation-workshop.md +65 -0
  346. package/skills/brainstorm/references/ui-surface-terms.md +42 -0
  347. package/skills/brainstorm-techniques/SKILL.md +231 -0
  348. package/skills/brainstorm-techniques/references/decision-principles.md +150 -0
  349. package/skills/brainstorm-techniques/references/phase-boundaries.md +103 -0
  350. package/skills/brainstorm-techniques/references/standing-delegation.md +407 -0
  351. package/skills/brainstorm-techniques/references/technical-ruling-delegation.md +174 -0
  352. package/skills/campaign-calendar/SKILL.md +145 -0
  353. package/skills/cf-token-scope/SKILL.md +164 -0
  354. package/skills/cf-token-scope/references/widen-playbook.md +114 -0
  355. package/skills/cf-token-scope/scripts/cf-token-scope.sh +253 -0
  356. package/skills/changelog/SKILL.md +142 -0
  357. package/skills/code-to-prd/SKILL.md +66 -0
  358. package/skills/code-to-prd/references/banner-template.md +12 -0
  359. package/skills/code-to-prd/references/prd-template.md +41 -0
  360. package/skills/code-to-prd/scripts/code-to-prd.sh +634 -0
  361. package/skills/code-to-prd/test/code-to-prd.test.sh +447 -0
  362. package/skills/code-to-prd/test/fixture/.env.example +7 -0
  363. package/skills/code-to-prd/test/fixture/app/about/page.tsx +11 -0
  364. package/skills/code-to-prd/test/fixture/app/api/health/route.ts +10 -0
  365. package/skills/code-to-prd/test/fixture/app/page.tsx +14 -0
  366. package/skills/code-to-prd/test/fixture/next.config.mjs +3 -0
  367. package/skills/code-to-prd/test/fixture/package.json +6 -0
  368. package/skills/cohort-status/SKILL.md +62 -0
  369. package/skills/community/SKILL.md +210 -0
  370. package/skills/community/scripts/bsky-community.sh +644 -0
  371. package/skills/community/scripts/bsky-setup.sh +631 -0
  372. package/skills/community/scripts/community-router.sh +93 -0
  373. package/skills/community/scripts/discord-community.sh +487 -0
  374. package/skills/community/scripts/discord-setup.sh +784 -0
  375. package/skills/community/scripts/github-community.sh +706 -0
  376. package/skills/community/scripts/hn-community.sh +233 -0
  377. package/skills/community/scripts/lib/hmac-sha1-b64.sh +126 -0
  378. package/skills/community/scripts/linkedin-community.sh +750 -0
  379. package/skills/community/scripts/linkedin-setup.sh +758 -0
  380. package/skills/community/scripts/x-community.sh +890 -0
  381. package/skills/community/scripts/x-setup.sh +713 -0
  382. package/skills/community/test/community-argv.test.sh +2922 -0
  383. package/skills/community/test/github-community.test.sh +981 -0
  384. package/skills/competitive-analysis/SKILL.md +69 -0
  385. package/skills/competitive-analysis/references/peer-plugin-audit.md +218 -0
  386. package/skills/compound/SKILL.md +673 -0
  387. package/skills/compound/scripts/token-efficiency-report.sh +334 -0
  388. package/skills/compound/test/phase-16.test.sh +379 -0
  389. package/skills/compound-capture/SKILL.md +791 -0
  390. package/skills/compound-capture/assets/critical-pattern-template.md +37 -0
  391. package/skills/compound-capture/assets/resolution-template.md +116 -0
  392. package/skills/compound-capture/references/yaml-schema.md +67 -0
  393. package/skills/compound-capture/schema.yaml +181 -0
  394. package/skills/constraint-scaffold/SKILL.md +175 -0
  395. package/skills/constraint-scaffold/references/boundary-readme.template +35 -0
  396. package/skills/constraint-scaffold/references/constraint-gates-workflow.template +69 -0
  397. package/skills/constraint-scaffold/references/depcruise-config.template +230 -0
  398. package/skills/constraint-scaffold/references/fix-constraints-stage-a.template +240 -0
  399. package/skills/constraint-scaffold/references/fix-constraints-stage-b.template +313 -0
  400. package/skills/constraint-scaffold/references/shared-runner.template +135 -0
  401. package/skills/constraint-scaffold/scripts/constraint-scaffold.sh +589 -0
  402. package/skills/constraint-scaffold/test/bite-proof.test.sh +1338 -0
  403. package/skills/constraint-scaffold/test/boundary.test.sh +734 -0
  404. package/skills/constraint-scaffold/test/emit-fix-constraints.test.sh +193 -0
  405. package/skills/constraint-scaffold/test/generator.test.sh +93 -0
  406. package/skills/constraint-scaffold/test/parity.test.sh +285 -0
  407. package/skills/content-writer/SKILL.md +242 -0
  408. package/skills/content-writer/scripts/blog-jargon-scan.sh +42 -0
  409. package/skills/cron-delete/SKILL.md +56 -0
  410. package/skills/cron-list/SKILL.md +54 -0
  411. package/skills/deepen-plan/SKILL.md +937 -0
  412. package/skills/deepen-plan/workflows/deepen-plan.workflow.js +488 -0
  413. package/skills/deploy/SKILL.md +115 -0
  414. package/skills/deploy/references/hetzner-setup.md +65 -0
  415. package/skills/deploy/scripts/deploy.sh +37 -0
  416. package/skills/deploy-docs/SKILL.md +95 -0
  417. package/skills/dhh-rails-style/SKILL.md +203 -0
  418. package/skills/dhh-rails-style/references/architecture.md +717 -0
  419. package/skills/dhh-rails-style/references/controllers.md +323 -0
  420. package/skills/dhh-rails-style/references/frontend.md +556 -0
  421. package/skills/dhh-rails-style/references/gems.md +316 -0
  422. package/skills/dhh-rails-style/references/models.md +388 -0
  423. package/skills/dhh-rails-style/references/testing.md +354 -0
  424. package/skills/discord-content/SKILL.md +126 -0
  425. package/skills/docs-site/SKILL.md +214 -0
  426. package/skills/drain-labeled-backlog/SKILL.md +203 -0
  427. package/skills/drain-labeled-backlog/scripts/group-by-area.sh +208 -0
  428. package/skills/drain-labeled-backlog/workflows/drain-labeled-backlog.workflow.js +433 -0
  429. package/skills/drain-prs/SKILL.md +142 -0
  430. package/skills/drain-prs/scripts/triage-prs.sh +192 -0
  431. package/skills/drain-prs/test/argv-ceiling.test.sh +183 -0
  432. package/skills/dspy-ruby/SKILL.md +634 -0
  433. package/skills/dspy-ruby/assets/config-template.rb +359 -0
  434. package/skills/dspy-ruby/assets/module-template.rb +326 -0
  435. package/skills/dspy-ruby/assets/signature-template.rb +143 -0
  436. package/skills/dspy-ruby/references/core-concepts.md +268 -0
  437. package/skills/dspy-ruby/references/optimization.md +623 -0
  438. package/skills/dspy-ruby/references/providers.md +335 -0
  439. package/skills/eval-harness/README.md +194 -0
  440. package/skills/eval-harness/SKILL.md +157 -0
  441. package/skills/eval-harness/enums/go-routes.json +13 -0
  442. package/skills/eval-harness/enums/incident-threshold.json +5 -0
  443. package/skills/eval-harness/enums/lane.json +5 -0
  444. package/skills/eval-harness/enums/tool-selection.json +20 -0
  445. package/skills/eval-harness/enums/triage-levels.json +5 -0
  446. package/skills/eval-harness/gated-skills.json +34 -0
  447. package/skills/eval-harness/models.generated.json +5 -0
  448. package/skills/eval-harness/promptfooconfig-go-routing.yaml +35 -0
  449. package/skills/eval-harness/promptfooconfig-incident-threshold.yaml +32 -0
  450. package/skills/eval-harness/promptfooconfig-lane-inference.yaml +33 -0
  451. package/skills/eval-harness/promptfooconfig-ticket-triage.yaml +34 -0
  452. package/skills/eval-harness/promptfooconfig-tool-selection.yaml +33 -0
  453. package/skills/eval-harness/prompts/go-baseline.txt +6 -0
  454. package/skills/eval-harness/prompts/go-skill.txt +21 -0
  455. package/skills/eval-harness/prompts/incident-threshold-baseline.txt +6 -0
  456. package/skills/eval-harness/prompts/incident-threshold-skill.txt +12 -0
  457. package/skills/eval-harness/prompts/lane-inference-baseline.txt +6 -0
  458. package/skills/eval-harness/prompts/lane-inference-skill.txt +15 -0
  459. package/skills/eval-harness/prompts/tool-selection-baseline.txt +19 -0
  460. package/skills/eval-harness/prompts/tool-selection-skill.txt +22 -0
  461. package/skills/eval-harness/prompts/triage-baseline.txt +7 -0
  462. package/skills/eval-harness/prompts/triage-skill.txt +10 -0
  463. package/skills/eval-harness/scripts/eval-gate.cjs +318 -0
  464. package/skills/eval-harness/scripts/extract-block.cjs +87 -0
  465. package/skills/eval-harness/scripts/gate-classification.cjs +28 -0
  466. package/skills/eval-harness/scripts/gen-models.sh +41 -0
  467. package/skills/eval-harness/scripts/gen-skill-prompt.cjs +177 -0
  468. package/skills/eval-harness/scripts/measure-classification.cjs +30 -0
  469. package/skills/eval-harness/scripts/parse-label.cjs +93 -0
  470. package/skills/eval-harness/scripts/verdict.cjs +132 -0
  471. package/skills/eval-harness/tasks/go-routing.jsonl +8 -0
  472. package/skills/eval-harness/tasks/incident-threshold.jsonl +7 -0
  473. package/skills/eval-harness/tasks/lane-inference.jsonl +7 -0
  474. package/skills/eval-harness/tasks/ticket-triage.jsonl +6 -0
  475. package/skills/eval-harness/tasks/tool-selection.jsonl +15 -0
  476. package/skills/eval-harness/test/eval-gate.test.sh +132 -0
  477. package/skills/eval-harness/test/extract-block.test.sh +87 -0
  478. package/skills/eval-harness/test/gate-classification.test.sh +77 -0
  479. package/skills/eval-harness/test/gen-models.test.sh +75 -0
  480. package/skills/eval-harness/test/measure-classification.test.sh +74 -0
  481. package/skills/eval-harness/test/parse-label.test.sh +129 -0
  482. package/skills/eval-harness/test/registry-completeness.test.sh +109 -0
  483. package/skills/eval-harness/test/verdict.test.sh +123 -0
  484. package/skills/every-style-editor/SKILL.md +142 -0
  485. package/skills/every-style-editor/references/EVERY_WRITE_STYLE.md +529 -0
  486. package/skills/feature-tweet/SKILL.md +199 -0
  487. package/skills/feature-video/SKILL.md +412 -0
  488. package/skills/feature-video/scripts/check_deps.sh +281 -0
  489. package/skills/file-todos/SKILL.md +267 -0
  490. package/skills/file-todos/assets/todo-template.md +166 -0
  491. package/skills/fix-issue/SKILL.md +278 -0
  492. package/skills/fix-issue/references/agent-authored-exclusion.md +118 -0
  493. package/skills/fix-issue/references/exclude-label-jq-snippet.md +96 -0
  494. package/skills/flag-bootstrap/SETUP.md +142 -0
  495. package/skills/flag-create/SKILL.md +145 -0
  496. package/skills/flag-create/scripts/create.sh +273 -0
  497. package/skills/flag-delete/SKILL.md +167 -0
  498. package/skills/flag-delete/scripts/delete.sh +288 -0
  499. package/skills/flag-list/SKILL.md +99 -0
  500. package/skills/flag-list/scripts/list.sh +275 -0
  501. package/skills/flag-set-role/SKILL.md +229 -0
  502. package/skills/flag-set-role/scripts/flip.sh +774 -0
  503. package/skills/frontend-anti-slop/SKILL.md +106 -0
  504. package/skills/frontend-anti-slop/references/anti-patterns.md +199 -0
  505. package/skills/frontend-anti-slop/references/slop-rules.md +65 -0
  506. package/skills/frontend-anti-slop/scripts/tier1-scan.ts +525 -0
  507. package/skills/frontend-design/SKILL.md +77 -0
  508. package/skills/gdpr-gate/NOTICE +136 -0
  509. package/skills/gdpr-gate/SKILL.md +341 -0
  510. package/skills/gdpr-gate/references/fields.md +160 -0
  511. package/skills/gdpr-gate/references/layers/api-layer.md +355 -0
  512. package/skills/gdpr-gate/references/layers/auth-sessions.md +290 -0
  513. package/skills/gdpr-gate/references/layers/data-in-transit.md +331 -0
  514. package/skills/gdpr-gate/references/layers/data-lifecycle.md +341 -0
  515. package/skills/gdpr-gate/references/layers/frontend.md +249 -0
  516. package/skills/gdpr-gate/references/layers/testing-seeding.md +256 -0
  517. package/skills/gdpr-gate/references/leakage-vectors.md +248 -0
  518. package/skills/gdpr-gate/references/legacy/legal-consent-v1-prose.md +48 -0
  519. package/skills/gdpr-gate/references/legal-consent.md +140 -0
  520. package/skills/gdpr-gate/references/non-negotiables.md +60 -0
  521. package/skills/gdpr-gate/scripts/gdpr-gate.sh +271 -0
  522. package/skills/gdpr-gate/scripts/notice-frontmatter.sh +337 -0
  523. package/skills/gdpr-gate/scripts/path-denylist.txt +39 -0
  524. package/skills/gdpr-gate/scripts/repo-scan.sh +158 -0
  525. package/skills/gdpr-gate/scripts/vendor-drift-classify.sh +120 -0
  526. package/skills/gdpr-gate/scripts/vendor-pin-integrity.sh +237 -0
  527. package/skills/gemini-imagegen/SKILL.md +283 -0
  528. package/skills/gemini-imagegen/requirements.txt +5 -0
  529. package/skills/gemini-imagegen/scripts/_error_handling.py +146 -0
  530. package/skills/gemini-imagegen/scripts/compose_images.py +150 -0
  531. package/skills/gemini-imagegen/scripts/edit_image.py +137 -0
  532. package/skills/gemini-imagegen/scripts/gemini_images.py +256 -0
  533. package/skills/gemini-imagegen/scripts/generate_image.py +147 -0
  534. package/skills/gemini-imagegen/scripts/multi_turn_chat.py +223 -0
  535. package/skills/gemini-imagegen/scripts/test_error_handling.py +179 -0
  536. package/skills/git-worktree/SKILL.md +534 -0
  537. package/skills/git-worktree/scripts/git-repo-readiness-diag.sh +98 -0
  538. package/skills/git-worktree/scripts/worktree-manager.sh +4773 -0
  539. package/skills/git-worktree/test/create-from-origin-main.test.sh +116 -0
  540. package/skills/git-worktree/test/lease-protects-active.test.sh +1056 -0
  541. package/skills/git-worktree/test/no-repo-fail-loud.test.sh +88 -0
  542. package/skills/git-worktree/test/orphan-reaper-honest-count.test.sh +379 -0
  543. package/skills/git-worktree/test/reap-archive-persistence.test.sh +725 -0
  544. package/skills/git-worktree/test/stale-lock-sweep.test.sh +176 -0
  545. package/skills/go/SKILL.md +54 -0
  546. package/skills/growth/SKILL.md +164 -0
  547. package/skills/harvest-debt/SKILL.md +78 -0
  548. package/skills/harvest-debt/scripts/harvest-debt.sh +114 -0
  549. package/skills/heal-skill/SKILL.md +173 -0
  550. package/skills/help/SKILL.md +46 -0
  551. package/skills/incident/NOTICE +39 -0
  552. package/skills/incident/SKILL.md +395 -0
  553. package/skills/incident/scripts/dry-run.sh +448 -0
  554. package/skills/incident/scripts/redact-engine.py +412 -0
  555. package/skills/incident/scripts/redact-sentinel.sh +44 -0
  556. package/skills/incident/templates/pir.md +139 -0
  557. package/skills/incident/test/fixtures/dry-run-incident.json +26 -0
  558. package/skills/incident/test/fixtures/dry-run-secret-leak.json +26 -0
  559. package/skills/incident/test/fixtures/legacy-bash-scanner.sh +82 -0
  560. package/skills/incident/test/fixtures/positive-corpus.md +87 -0
  561. package/skills/incident/test/redact-sentinel.test.sh +1420 -0
  562. package/skills/invoice/SKILL.md +206 -0
  563. package/skills/kb-glossary/SKILL.md +71 -0
  564. package/skills/kb-glossary/references/glossary-format.md +111 -0
  565. package/skills/kb-glossary/references/rejected-request-register.md +115 -0
  566. package/skills/kb-search/SKILL.md +276 -0
  567. package/skills/kb-search/scripts/kb-search-cache.sh +123 -0
  568. package/skills/legal-audit/SKILL.md +161 -0
  569. package/skills/legal-generate/NOTICE +242 -0
  570. package/skills/legal-generate/SKILL.md +244 -0
  571. package/skills/legal-generate/references/templates/advisor-agreement/template.md +12 -0
  572. package/skills/legal-generate/references/templates/business-associate-agreement/template.md +112 -0
  573. package/skills/legal-generate/references/templates/cookie-notice/template.md +82 -0
  574. package/skills/legal-generate/references/templates/dpa-global/template.md +439 -0
  575. package/skills/legal-generate/references/templates/dpa-us/template.md +222 -0
  576. package/skills/legal-generate/references/templates/employee-offer-letter/template.md +75 -0
  577. package/skills/legal-generate/references/templates/master-services-agreement/template.md +252 -0
  578. package/skills/legal-generate/references/templates/mutual-nda/template.md +66 -0
  579. package/skills/legal-generate/references/templates/one-way-nda/template.md +38 -0
  580. package/skills/legal-generate/references/templates/privacy-policy-gdpr/template.md +427 -0
  581. package/skills/legal-generate/references/templates/privacy-policy-us/template.md +313 -0
  582. package/skills/legal-generate/references/templates/terms-of-use/template.md +75 -0
  583. package/skills/legal-generate/scripts/strip-vendor-credit.sh +96 -0
  584. package/skills/linear-fetch/SKILL.md +247 -0
  585. package/skills/linear-fetch/scripts/assert-no-linear-telemetry.sh +66 -0
  586. package/skills/linear-fetch/scripts/redact-linear-urls.sh +51 -0
  587. package/skills/linear-fetch/scripts/render-caller-template.sh +36 -0
  588. package/skills/linear-fetch/test/assert-no-linear-telemetry.test.sh +113 -0
  589. package/skills/linear-fetch/test/parity.test.sh +112 -0
  590. package/skills/linear-fetch/test/persist-safe-integration.test.sh +191 -0
  591. package/skills/linear-fetch/test/redact-linear-urls.test.sh +226 -0
  592. package/skills/merge-pr/SKILL.md +668 -0
  593. package/skills/model-launch-review/SKILL.md +255 -0
  594. package/skills/model-launch-review/scripts/audit-models.sh +501 -0
  595. package/skills/one-shot/SKILL.md +316 -0
  596. package/skills/one-shot/references/token-discipline.md +74 -0
  597. package/skills/operator-bootstrap/SKILL.md +412 -0
  598. package/skills/operator-bootstrap/template.sh +439 -0
  599. package/skills/operator-digest/SKILL.md +287 -0
  600. package/skills/operator-digest/assets/operator-digest.workflow.yml +175 -0
  601. package/skills/operator-digest/scripts/digest-scrub.sh +119 -0
  602. package/skills/operator-digest/scripts/provision-operator-digest-repo.sh +147 -0
  603. package/skills/operator-rephrase/SKILL.md +98 -0
  604. package/skills/pencil-setup/SKILL.md +201 -0
  605. package/skills/pencil-setup/scripts/check_deps.sh +556 -0
  606. package/skills/pencil-setup/scripts/copy_adapter.sh +80 -0
  607. package/skills/pencil-setup/scripts/package-lock.json +1172 -0
  608. package/skills/pencil-setup/scripts/package.json +14 -0
  609. package/skills/pencil-setup/scripts/pencil-error-enrichment.mjs +21 -0
  610. package/skills/pencil-setup/scripts/pencil-mcp-adapter.mjs +733 -0
  611. package/skills/pencil-setup/scripts/pencil-response-classify.mjs +38 -0
  612. package/skills/pencil-setup/scripts/pencil-save-gate.mjs +26 -0
  613. package/skills/pencil-setup/scripts/sanitize-filename.mjs +25 -0
  614. package/skills/plan/SKILL.md +1140 -0
  615. package/skills/plan/references/differential-migration-testing.md +185 -0
  616. package/skills/plan/references/plan-community-discovery.md +42 -0
  617. package/skills/plan/references/plan-founder-check.md +137 -0
  618. package/skills/plan/references/plan-functional-overlap.md +25 -0
  619. package/skills/plan/references/plan-host-fanout.md +51 -0
  620. package/skills/plan/references/plan-issue-templates.md +779 -0
  621. package/skills/plan/references/plan-network-outage-checklist.md +131 -0
  622. package/skills/plan/references/plan-scope-check.md +126 -0
  623. package/skills/plan/references/plan-sharp-edges.md +325 -0
  624. package/skills/plan/references/plan-signoff-lifecycle.md +12 -0
  625. package/skills/plan/references/webapp-cwv-observability.md +143 -0
  626. package/skills/plan-review/SKILL.md +91 -0
  627. package/skills/plan-review/lib/named-panel.mjs +58 -0
  628. package/skills/plan-review/workflows/plan-review.workflow.js +477 -0
  629. package/skills/postmerge/SKILL.md +642 -0
  630. package/skills/postmerge/references/deploy-status-debugging.md +138 -0
  631. package/skills/postmerge/references/graceful-degradation.md +20 -0
  632. package/skills/postmerge/references/sentry-error-count-delta.md +137 -0
  633. package/skills/preflight/SKILL.md +1553 -0
  634. package/skills/preflight/references/check-13-founder-check.md +286 -0
  635. package/skills/preflight/scripts/founder-check.py +1640 -0
  636. package/skills/preflight/scripts/parse-form-a.awk +107 -0
  637. package/skills/preflight/scripts/probe-verb-gate.sh +108 -0
  638. package/skills/product-roadmap/SKILL.md +357 -0
  639. package/skills/product-roadmap/scripts/roadmap-reconcile.sh +327 -0
  640. package/skills/provision-cloudflare/SKILL.md +67 -0
  641. package/skills/provision-cloudflare/scripts/provision-cloudflare.sh +271 -0
  642. package/skills/provision-doppler/SKILL.md +58 -0
  643. package/skills/provision-doppler/scripts/provision-doppler.sh +358 -0
  644. package/skills/provision-github/SKILL.md +59 -0
  645. package/skills/provision-github/scripts/provision-github.sh +300 -0
  646. package/skills/provision-hetzner/SKILL.md +76 -0
  647. package/skills/provision-hetzner/scripts/provision-hetzner.sh +262 -0
  648. package/skills/provision-hetzner/test/fixture/knowledge-base/legal/tenant-dpa-register.md +26 -0
  649. package/skills/provision-hetzner/test/fixture/provision-hetzner-dry-run.golden +34 -0
  650. package/skills/provision-hetzner/test/provision-hetzner-characterization.test.sh +227 -0
  651. package/skills/qa/SKILL.md +263 -0
  652. package/skills/qa/references/browser-preflight.md +22 -0
  653. package/skills/questionnaire-generate/SKILL.md +328 -0
  654. package/skills/questionnaire-generate/references/questionnaire.template +60 -0
  655. package/skills/rclone/SKILL.md +162 -0
  656. package/skills/rclone/scripts/check_setup.sh +63 -0
  657. package/skills/release-announce/SKILL.md +65 -0
  658. package/skills/release-docs/SKILL.md +92 -0
  659. package/skills/reproduce-bug/SKILL.md +358 -0
  660. package/skills/resolve-debt/SKILL.md +85 -0
  661. package/skills/resolve-debt/scripts/resolve-debt.py +584 -0
  662. package/skills/resolve-parallel/SKILL.md +45 -0
  663. package/skills/resolve-parallel/workflows/resolve-parallel.workflow.js +415 -0
  664. package/skills/resolve-pr-parallel/SKILL.md +68 -0
  665. package/skills/resolve-pr-parallel/workflows/resolve-pr-parallel.workflow.js +419 -0
  666. package/skills/resolve-todo-parallel/SKILL.md +57 -0
  667. package/skills/resolve-todo-parallel/workflows/resolve-todo-parallel.workflow.js +398 -0
  668. package/skills/review/SKILL.md +1621 -0
  669. package/skills/review/references/anti-slop-scanner-hook.md +40 -0
  670. package/skills/review/references/defect-classes-migrations.md +9 -0
  671. package/skills/review/references/generated-input-oracle-surfaces.md +15 -0
  672. package/skills/review/references/review-e2e-testing.md +116 -0
  673. package/skills/review/references/review-todo-structure.md +165 -0
  674. package/skills/review/references/risk-tier-and-fix-rounds.md +95 -0
  675. package/skills/review/references/semgrep-custom-rules.yaml +174 -0
  676. package/skills/review/references/ultrathink-phases.md +98 -0
  677. package/skills/review/references/wfs.md +6 -0
  678. package/skills/review/scripts/emit-review-trailer.sh +499 -0
  679. package/skills/review/scripts/ensure-semgrep.sh +99 -0
  680. package/skills/review/scripts/fix-round-seats.sh +197 -0
  681. package/skills/review/test/emit-review-trailer.test.sh +387 -0
  682. package/skills/review/test/ensure-semgrep.test.sh +111 -0
  683. package/skills/review/test/fix-round-seats.test.sh +237 -0
  684. package/skills/review/workflows/README.md +147 -0
  685. package/skills/review/workflows/review.workflow.js +667 -0
  686. package/skills/schedule/SKILL.md +796 -0
  687. package/skills/seo-aeo/SKILL.md +139 -0
  688. package/skills/seo-aeo/scripts/validate-csp.sh +233 -0
  689. package/skills/seo-aeo/scripts/validate-seo.sh +262 -0
  690. package/skills/ship/SKILL.md +3022 -0
  691. package/skills/ship/references/adr-ordinal-collision.md +47 -0
  692. package/skills/ship/references/affected-gate-contract.md +115 -0
  693. package/skills/ship/references/ci-run-diagnosis.md +29 -0
  694. package/skills/ship/references/ci-workflow-authoring.md +68 -0
  695. package/skills/ship/references/counsel-review-clo-attestation.md +38 -0
  696. package/skills/ship/references/cto-ruling-armed-push.md +5 -0
  697. package/skills/ship/references/decision-challenges-render.md +71 -0
  698. package/skills/ship/references/detached-battery-verdict.md +13 -0
  699. package/skills/ship/references/feature-tweet-draft.md +42 -0
  700. package/skills/ship/references/followthrough-issue-body-template.md +47 -0
  701. package/skills/ship/references/followthrough-stub-template.sh +92 -0
  702. package/skills/ship/references/merge-queue-dequeue.md +39 -0
  703. package/skills/ship/references/operator-holds.md +149 -0
  704. package/skills/ship/references/pipeline-tally-render.md +43 -0
  705. package/skills/ship/references/pr-overlap.md +153 -0
  706. package/skills/ship/references/queue-mode.md +7 -0
  707. package/skills/ship/references/ready-run-wait.md +36 -0
  708. package/skills/ship/references/red-on-main-quarantine.md +110 -0
  709. package/skills/ship/references/register-update-pr-pattern.md +88 -0
  710. package/skills/ship/references/settle-then-admin-merge.md +130 -0
  711. package/skills/ship/references/supabase-column-probe.md +13 -0
  712. package/skills/ship/scripts/auto-close-scan.sh +76 -0
  713. package/skills/ship/scripts/battery-owed.sh +403 -0
  714. package/skills/ship/scripts/hold-gate-eval.sh +410 -0
  715. package/skills/ship/scripts/net-issue-flow.sh +665 -0
  716. package/skills/ship/scripts/pr-overlap-preflight.sh +483 -0
  717. package/skills/ship/scripts/ship-pir-action-items-gate.sh +246 -0
  718. package/skills/ship/scripts/technical-ruling-gate.sh +444 -0
  719. package/skills/skill-creator/SKILL.md +299 -0
  720. package/skills/skill-creator/references/api-security.md +248 -0
  721. package/skills/skill-creator/references/authoring-levers.md +110 -0
  722. package/skills/skill-creator/references/be-clear-and-direct.md +587 -0
  723. package/skills/skill-creator/references/best-practices.md +431 -0
  724. package/skills/skill-creator/references/common-patterns.md +639 -0
  725. package/skills/skill-creator/references/core-principles.md +193 -0
  726. package/skills/skill-creator/references/executable-code.md +188 -0
  727. package/skills/skill-creator/references/iteration-and-testing.md +509 -0
  728. package/skills/skill-creator/references/official-spec.md +193 -0
  729. package/skills/skill-creator/references/recommended-structure.md +180 -0
  730. package/skills/skill-creator/references/skill-structure.md +396 -0
  731. package/skills/skill-creator/references/using-scripts.md +122 -0
  732. package/skills/skill-creator/references/using-templates.md +120 -0
  733. package/skills/skill-creator/references/workflows-and-validation.md +541 -0
  734. package/skills/skill-creator/scripts/init_skill.py +322 -0
  735. package/skills/skill-creator/scripts/package_skill.py +110 -0
  736. package/skills/skill-creator/scripts/quick_validate.py +64 -0
  737. package/skills/skill-creator/templates/router-skill.md +73 -0
  738. package/skills/skill-creator/templates/simple-skill.md +34 -0
  739. package/skills/skill-creator/workflows/add-reference.md +96 -0
  740. package/skills/skill-creator/workflows/add-script.md +104 -0
  741. package/skills/skill-creator/workflows/add-template.md +83 -0
  742. package/skills/skill-creator/workflows/add-workflow.md +128 -0
  743. package/skills/skill-creator/workflows/audit-skill.md +159 -0
  744. package/skills/skill-creator/workflows/create-domain-expertise-skill.md +623 -0
  745. package/skills/skill-creator/workflows/create-new-skill.md +207 -0
  746. package/skills/skill-creator/workflows/get-guidance.md +134 -0
  747. package/skills/skill-creator/workflows/upgrade-to-router.md +170 -0
  748. package/skills/skill-creator/workflows/verify-skill.md +226 -0
  749. package/skills/skill-security-scan/SKILL.md +145 -0
  750. package/skills/skill-security-scan/references/disclaimer.md +21 -0
  751. package/skills/skill-security-scan/references/first-party-allowlist.yaml +38 -0
  752. package/skills/skill-security-scan/references/override-artifact-schema.json +68 -0
  753. package/skills/skill-security-scan/references/override-mechanism.md +171 -0
  754. package/skills/skill-security-scan/references/redirect-domains.yaml +27 -0
  755. package/skills/skill-security-scan/references/regex-patterns.md +136 -0
  756. package/skills/skill-security-scan/references/rules/code-exec.yaml +70 -0
  757. package/skills/skill-security-scan/references/rules/filesystem-boundary.yaml +29 -0
  758. package/skills/skill-security-scan/references/rules/manifest.yaml +44 -0
  759. package/skills/skill-security-scan/references/rules/supply-chain.yaml +36 -0
  760. package/skills/skill-security-scan/references/scan-meta-schema.json +63 -0
  761. package/skills/skill-security-scan/references/test-fixtures/clean-soleur-style.skill.md +23 -0
  762. package/skills/skill-security-scan/references/test-fixtures/clean-third-party.skill.md +26 -0
  763. package/skills/skill-security-scan/references/test-fixtures/malicious-codeexec.skill.md +23 -0
  764. package/skills/skill-security-scan/references/test-fixtures/malicious-curl-pipe-bash.skill.md +69 -0
  765. package/skills/skill-security-scan/references/test-fixtures/malicious-prompt-injection.skill.md +17 -0
  766. package/skills/skill-security-scan/references/test-fixtures/malicious-telemetry-beacon.skill.md +23 -0
  767. package/skills/skill-security-scan/references/typosquat-targets.yaml +65 -0
  768. package/skills/skill-security-scan/scripts/check-codeexec.sh +41 -0
  769. package/skills/skill-security-scan/scripts/check-filesystem-boundary.sh +19 -0
  770. package/skills/skill-security-scan/scripts/check-prompt-injection.sh +95 -0
  771. package/skills/skill-security-scan/scripts/check-supply-chain.sh +219 -0
  772. package/skills/skill-security-scan/scripts/check-telemetry-surface.sh +126 -0
  773. package/skills/skill-security-scan/scripts/lib.sh +197 -0
  774. package/skills/skill-security-scan/scripts/parse-override.sh +231 -0
  775. package/skills/skill-security-scan/scripts/run-scan.sh +342 -0
  776. package/skills/skill-security-scan/scripts/run-self-test.sh +95 -0
  777. package/skills/skill-security-scan/test/argv-ceiling.test.sh +180 -0
  778. package/skills/skill-security-scan/test/meta-dir-reap.test.sh +411 -0
  779. package/skills/skill-security-scan/test/parse-override.test.sh +607 -0
  780. package/skills/skill-security-scan/test/redact-pii-ghs-shape.test.sh +251 -0
  781. package/skills/social-distribute/SKILL.md +485 -0
  782. package/skills/spec-templates/SKILL.md +274 -0
  783. package/skills/sync/SKILL.md +49 -0
  784. package/skills/test-browser/SKILL.md +464 -0
  785. package/skills/test-browser/references/feature-map.md +161 -0
  786. package/skills/test-fix-loop/SKILL.md +159 -0
  787. package/skills/test-fix-loop/references/determinism-checklist.md +154 -0
  788. package/skills/triage/SKILL.md +402 -0
  789. package/skills/trigger-cron/SKILL.md +136 -0
  790. package/skills/trigger-cron/scripts/trigger.sh +198 -0
  791. package/skills/user-set-role/SKILL.md +147 -0
  792. package/skills/user-set-role/scripts/set-role.sh +218 -0
  793. package/skills/user-story-writer/SKILL.md +77 -0
  794. package/skills/ux-audit/SKILL.md +251 -0
  795. package/skills/ux-audit/references/finding.schema.json +62 -0
  796. package/skills/ux-audit/references/route-list.yaml +95 -0
  797. package/skills/ux-audit/scripts/bot-fixture.ts +270 -0
  798. package/skills/ux-audit/scripts/bot-signin.ts +135 -0
  799. package/skills/ux-audit/scripts/dedup-hash.ts +46 -0
  800. package/skills/work/SKILL.md +1479 -0
  801. package/skills/work/references/end-of-work-resume.md +7 -0
  802. package/skills/work/references/hook-test-main-cwd.md +24 -0
  803. package/skills/work/references/key-principles.md +83 -0
  804. package/skills/work/references/property-testing.md +122 -0
  805. package/skills/work/references/sql-security-definer-rpc-scaffold.sql +78 -0
  806. package/skills/work/references/work-agent-teams.md +97 -0
  807. package/skills/work/references/work-lifecycle-parallel.md +147 -0
  808. package/skills/work/references/work-lockfile-bumps.md +97 -0
  809. package/skills/work/references/work-scratch-sandboxes.md +212 -0
  810. package/skills/work/references/work-subagent-fanout.md +61 -0
  811. package/skills/work/references/work-test-harness-sharp-edges.md +73 -0
  812. package/skills/xcode-test/SKILL.md +360 -0
@@ -0,0 +1,791 @@
1
+ ---
2
+ name: compound-capture
3
+ description: "This skill should be used when capturing solved problems as categorized documentation with YAML frontmatter for fast lookup. It auto-documents solutions after confirmation and builds searchable institutional knowledge."
4
+ allowed-tools:
5
+ - Read # Parse conversation context
6
+ - Write # Create resolution docs
7
+ - Bash # Create directories
8
+ - Grep # Search existing docs
9
+ preconditions:
10
+ - Problem has been solved (not in-progress)
11
+ - Solution has been verified working
12
+ ---
13
+
14
+ <!-- soleur-cloud-mode:start -->
15
+ **Cloud Mode (Devin):** before pipeline work run `bash "${CLAUDE_PLUGIN_ROOT}/scripts/cloud-detect.sh"`. If `CLAUDE_PLUGIN_ROOT` is unset (cloud exec shells do not export it), resolve the root by IDENTITY, never by script basename: for `d` in `"$HOME/.local/share/devin/cli/plugins/cache"` and `/opt/.devin/plugins`, skip unless `[ -d "$d" ]`, then `MANIFEST="$(find "$d" -path '*/.claude-plugin/plugin.json' -exec grep -l '"name"[[:space:]]*:[[:space:]]*"soleur"' {} + 2>/dev/null | head -1)"`, `ROOT="${MANIFEST%/.claude-plugin/plugin.json}"` — one resolution, two consumers: `$ROOT/scripts/cloud-detect.sh` and `$ROOT/scripts/precommit-guard.sh`. (Shape check, not authentication: a planted `{"name":"soleur"}` dir passes — ADR-179 A11.) `local` or `not-local:no-devin-env` proceeds normally; any other `not-local:<reason>` applies `<plugin-root>/devin/INSTRUCTIONS.md` §Cloud Mode: emit the `--banner`, fan out sequentially with `Reviewed-Coverage: sequential-fallback` disclosure (never claim an independent review ran), `message_user` ack before any secrets read or production mutation, and run `precommit-guard.sh` before any `git commit` — hooks do not fire in cloud.
16
+ <!-- soleur-cloud-mode:end -->
17
+
18
+ <!-- grok-harness-invoke:start -->
19
+ **Grok Build (`plugins/soleur/lib/harness.ts` `invokeSkill()`):** Read this SKILL.md in this process and run it to completion. A one-segment `soleur:<name>` in this document names a SKILL — on Grok Build, Read `plugins/soleur/skills/<name>/SKILL.md` in this process; it is not a nested tool_use. A multi-segment id such as `soleur:<domain>:<name>` names an AGENT: spawn it, never Read it, and on Grok Build spawn_subagent takes the id with its colons replaced by hyphens (`agentIdToGrokSubagentType`). **Claude Code:** Skill tool for a skill (`soleur:<name>`), Task tool with `subagent_type` for an agent. Forbidden is executing a subset, not the Read.
20
+ <!-- grok-harness-invoke:end -->
21
+
22
+ # compound-capture Skill
23
+
24
+ **Purpose:** Automatically document solved problems to build searchable institutional knowledge with category-based organization (enum-validated problem types).
25
+
26
+ ## Headless Mode Detection
27
+
28
+ If `$ARGUMENTS` contains `--headless`, set `HEADLESS_MODE=true`. Strip `--headless` from `$ARGUMENTS` before processing remaining args. Headless mode affects Steps 2, 3, 5, 8, and auto-consolidation Step E.
29
+
30
+ ## Overview
31
+
32
+ This skill captures problem solutions immediately after confirmation, creating structured documentation that serves as a searchable knowledge base for future sessions.
33
+
34
+ **Organization:** Single-file architecture - each problem documented as one markdown file in its symptom category directory (e.g., `knowledge-base/project/learnings/performance-issues/n-plus-one-briefs.md`). Files use YAML frontmatter for metadata and searchability.
35
+
36
+ ---
37
+
38
+ <critical_sequence name="documentation-capture" enforce_order="strict">
39
+
40
+ ## Documentation Capture Process
41
+
42
+ <step number="1" required="true">
43
+ ### Step 1: Detect Confirmation
44
+
45
+ **Auto-invoke after phrases:**
46
+
47
+ - "that worked"
48
+ - "it's fixed"
49
+ - "working now"
50
+ - "problem solved"
51
+ - "that did it"
52
+
53
+ **OR manual:** `/doc-fix` command
54
+
55
+ **Non-trivial problems only:**
56
+
57
+ - Multiple investigation attempts needed
58
+ - Tricky debugging that took time
59
+ - Non-obvious solution
60
+ - Future sessions would benefit
61
+
62
+ **Skip documentation for:**
63
+
64
+ - Simple typos
65
+ - Obvious syntax errors
66
+ - Trivial fixes immediately corrected
67
+ </step>
68
+
69
+ <step number="2" required="true" depends_on="1">
70
+ ### Step 2: Gather Context
71
+
72
+ Extract from conversation history:
73
+
74
+ **Check for session-state.md:** Run `git branch --show-current`. If on a `feat-*` branch, check if `knowledge-base/project/specs/feat-<name>/session-state.md` exists. If it does, read it and incorporate forwarded errors from `### Errors` and decisions from `### Decisions` into the context below. These came from preceding pipeline phases whose context was compacted.
75
+
76
+ **Required information:**
77
+
78
+ - **Module name**: Which module or component had the problem
79
+ - **Symptom**: Observable error/behavior (exact error messages)
80
+ - **Investigation attempts**: What didn't work and why
81
+ - **Root cause**: Technical explanation of actual problem
82
+ - **Solution**: What fixed it (code/config changes)
83
+ - **Prevention**: How to avoid in future
84
+
85
+ **Session errors (beyond the target problem):**
86
+
87
+ Scan conversation history AND session-state.md (if present) for errors unrelated to the main problem investigation documented above. Only capture errors that are NOT part of the investigation attempts. Skip trivial errors immediately corrected (typos in commands, expected test failures during TDD).
88
+
89
+ Extract for each error found:
90
+
91
+ - Describe what went wrong (1 sentence)
92
+ - Note what was done to recover
93
+ - Suggest how to prevent it in future sessions (1 sentence)
94
+
95
+ If no session errors are found, output "Session errors: none detected" (do not skip silently — the explicit acknowledgment prevents the model from accidentally dropping errors by judging the session as clean).
96
+
97
+ **Environment details:**
98
+
99
+ - Rails version
100
+ - Stage (0-6 or post-implementation)
101
+ - OS version
102
+ - File/line references
103
+
104
+ **BLOCKING REQUIREMENT:** If critical context is missing (module name, exact error, stage, or resolution steps):
105
+
106
+ **Headless mode:** Infer missing fields from session context (conversation history, session-state.md, git log). Skip any field that cannot be reasonably inferred — do not prompt. Proceed to Step 3 with whatever context is available.
107
+
108
+ **Interactive mode:** Ask user and WAIT for response before proceeding to Step 3:
109
+
110
+ ```
111
+ I need a few details to document this properly:
112
+
113
+ 1. Which module had this issue? [ModuleName]
114
+ 2. What was the exact error message or symptom?
115
+ 3. What stage were you in? (0-6 or post-implementation)
116
+
117
+ [Continue after user provides details]
118
+ ```
119
+
120
+ </step>
121
+
122
+ <step number="3" required="false" depends_on="2">
123
+ ### Step 3: Check Existing Docs
124
+
125
+ Search knowledge-base/project/learnings/ for similar issues. **Prefer faceted search** when the current learning carries a specific `tags:` or `category:` value — facet filters cut noise before grep runs and keep related-doc lookups focused:
126
+
127
+ ```bash
128
+ # Faceted (preferred when the learning has a tag or category)
129
+ soleur:kb-search --tag eager-loading
130
+ soleur:kb-search --category performance-issues n+1
131
+ ```
132
+
133
+ Fall back to raw grep when no facet fits or the facet artifact is missing:
134
+
135
+ ```bash
136
+ # Keyword grep (fallback)
137
+ grep -r "exact error phrase" knowledge-base/project/learnings/
138
+
139
+ # Symptom category browse
140
+ ls knowledge-base/project/learnings/[category]/
141
+ ```
142
+
143
+ Valid tag/category values are listed in `knowledge-base/kb-tags.txt` and `knowledge-base/kb-categories.txt`. Both are untracked caches (ADR-235) and may be absent on a fresh checkout — run `bash scripts/ensure-kb-index.sh --soft` first, which regenerates them only when stale and prints nothing when fresh.
144
+
145
+ **IF similar issue found:**
146
+
147
+ **Headless mode:** Auto-select "Create new doc with cross-reference" without prompting.
148
+
149
+ **Interactive mode:** Present decision options:
150
+
151
+ ```
152
+ Found similar issue: knowledge-base/project/learnings/[path]
153
+
154
+ What's next?
155
+ 1. Create new doc with cross-reference (recommended)
156
+ 2. Update existing doc (only if same root cause)
157
+ 3. Other
158
+
159
+ Choose (1-3): _
160
+ ```
161
+
162
+ WAIT for user response, then execute chosen action.
163
+
164
+ **ELSE** (no similar issue found):
165
+
166
+ Proceed directly to Step 4 (no user interaction needed).
167
+ </step>
168
+
169
+ <step number="4" required="true" depends_on="2">
170
+ ### Step 4: Generate Filename
171
+
172
+ Format: `[sanitized-symptom]-[module]-[YYYYMMDD].md`
173
+
174
+ **Sanitization rules:**
175
+
176
+ - Lowercase
177
+ - Replace spaces with hyphens
178
+ - Remove special characters except hyphens
179
+ - Truncate to reasonable length (< 80 chars)
180
+
181
+ **Examples:**
182
+
183
+ - `missing-include-BriefSystem-20251110.md`
184
+ - `parameter-not-saving-state-EmailProcessing-20251110.md`
185
+ - `webview-crash-on-resize-Assistant-20251110.md`
186
+ </step>
187
+
188
+ <step number="5" required="true" depends_on="4" blocking="true">
189
+ ### Step 5: Validate YAML Schema
190
+
191
+ **CRITICAL:** All docs require validated YAML frontmatter with enum validation.
192
+
193
+ <validation_gate name="yaml-schema" blocking="true">
194
+
195
+ **Validate against schema:**
196
+ Load `schema.yaml` and classify the problem against the enum values defined in [yaml-schema.md](./references/yaml-schema.md). Ensure all required fields are present and match allowed values exactly.
197
+
198
+ **BLOCK if validation fails:**
199
+
200
+ ```
201
+ ❌ YAML validation failed
202
+
203
+ Errors:
204
+ - problem_type: must be one of schema enums, got "compilation_error"
205
+ - severity: must be one of [critical, high, medium, low], got "invalid"
206
+ - symptoms: must be array with 1-5 items, got string
207
+
208
+ Please provide corrected values.
209
+ ```
210
+
211
+ **GATE ENFORCEMENT:** Do NOT proceed to Step 6 (Create Documentation) until YAML frontmatter passes all validation rules defined in `schema.yaml`.
212
+
213
+ **Headless mode exception:** If `HEADLESS_MODE=true` and YAML validation fails after auto-correction attempts, skip the problematic learning and continue with remaining work. Log the skipped learning for manual review.
214
+
215
+ </validation_gate>
216
+ </step>
217
+
218
+ <step number="6" required="true" depends_on="5">
219
+ ### Step 6: Create Documentation
220
+
221
+ **Determine category from problem_type:** Use the category mapping defined in [yaml-schema.md](./references/yaml-schema.md) (lines 49-61).
222
+
223
+ **Create documentation file:**
224
+
225
+ Determine the category from the validated YAML `problem_type` field and generate a filename. Then:
226
+
227
+ 1. Create the category directory: `mkdir -p knowledge-base/project/learnings/<category>`
228
+ 2. Write the documentation file to `knowledge-base/project/learnings/<category>/<filename>.md` using the template from [resolution-template.md](./assets/resolution-template.md)
229
+
230
+ Replace `<category>` with the mapped category and `<filename>` with the generated filename.
231
+
232
+ **Result:**
233
+
234
+ - Single file in category directory
235
+ - Enum validation ensures consistent categorization
236
+
237
+ **Create documentation:** Populate the structure from [resolution-template.md](./assets/resolution-template.md) with context gathered in Step 2 and validated YAML frontmatter from Step 5.
238
+ </step>
239
+
240
+ <step number="7" required="false" depends_on="6">
241
+ ### Step 7: Cross-Reference & Critical Pattern Detection
242
+
243
+ If similar issues found in Step 3:
244
+
245
+ **Update existing doc:**
246
+
247
+ Append a "See also" cross-reference link to the similar document, using the new document's filename and path.
248
+
249
+ **Update new doc:**
250
+ Already includes cross-reference from Step 6.
251
+
252
+ **Update patterns if applicable:**
253
+
254
+ If this represents a common pattern (3+ similar issues):
255
+
256
+ ```bash
257
+ # Add to knowledge-base/project/learnings/patterns/common-solutions.md
258
+ cat >> knowledge-base/project/learnings/patterns/common-solutions.md << 'EOF'
259
+
260
+ ## [Pattern Name]
261
+
262
+ **Common symptom:** [Description]
263
+ **Root cause:** [Technical explanation]
264
+ **Solution pattern:** [General approach]
265
+
266
+ **Examples:**
267
+ - [Link to doc 1]
268
+ - [Link to doc 2]
269
+ - [Link to doc 3]
270
+ EOF
271
+ ```
272
+
273
+ **Critical Pattern Detection (Optional Proactive Suggestion):**
274
+
275
+ If this issue has automatic indicators suggesting it might be critical:
276
+
277
+ - Severity: `critical` in YAML
278
+ - Affects multiple modules OR foundational stage (Stage 2 or 3)
279
+ - Non-obvious solution
280
+
281
+ Then in the decision menu, add a note:
282
+
283
+ ```
284
+ 💡 This might be worth adding to Required Reading (Option 2)
285
+ ```
286
+
287
+ But **NEVER auto-promote**. User decides via decision menu (Option 2).
288
+
289
+ **Template for critical pattern addition:**
290
+
291
+ When user selects Option 3 (Add to Required Reading), use the template from [critical-pattern-template.md](./assets/critical-pattern-template.md) to structure the pattern entry. Number it sequentially based on existing patterns in `knowledge-base/project/learnings/patterns/critical-patterns.md`.
292
+ </step>
293
+
294
+ <step number="8" required="false" depends_on="6">
295
+ ### Step 8: Route Learning to Definition
296
+
297
+ After capturing and cross-referencing the learning, route the insight to the skill, agent, or command definition that needs it. This ensures definitions improve over time with sharp-edge gotchas that prevent repeated mistakes.
298
+
299
+ **Skip this step if:**
300
+
301
+ - `plugins/soleur/` directory does not exist
302
+ - No skills, agents, or commands were invoked in this session
303
+
304
+ <!-- markdownlint-disable-next-line MD001 -- h4 under h3 is correct; linter resets at <step> tags -->
305
+ #### 8.1 Detect Active Components
306
+
307
+ - **Name a skill or command as `soleur:<name>` and an agent by its registry id, nothing else** — no slash, dollar or at-sign prefix, no bare agent leaf — the adapter renders the harness form (`formatSkillInvocation` / `spawnAgent`, `plugins/soleur/lib/harness.ts`); a doc that writes one harness's form names a component the other three cannot resolve (ADR-226). If a shell variable or glob collides with a skill name, brace or rename it (`"${work}"`) — never widen the gate's boundary set. `plugins/soleur/test/harness-parity-tree.test.ts` is the gate; `bun plugins/soleur/scripts/harness-parity-census.ts --fix` repairs the mechanical shapes.
308
+
309
+ Identify which skills, agents, or commands were invoked in this session by examining the conversation history.
310
+
311
+ Map detected component names to file paths:
312
+
313
+ - Skill `soleur:foo` -> `plugins/soleur/skills/foo/SKILL.md`
314
+ - Agent `soleur:engineering:review:baz` -> `plugins/soleur/agents/engineering/review/baz.md`
315
+ - Command `soleur:bar` -> `plugins/soleur/commands/bar.md`
316
+
317
+ If no components detected, skip to the decision menu.
318
+
319
+ **If the learning is about what a word means** — the session settled, sharpened or disputed an internal term — the target is not a component definition: invoke `soleur:kb-glossary` and route it to `knowledge-base/project/glossary.md` as a pointer to the file that settles the term, then continue with any component insight that remains.
320
+
321
+ #### 8.2 Select Target
322
+
323
+ If one component detected: propose it as the routing target.
324
+
325
+ If multiple detected: use **AskUserQuestion** to present a numbered list ordered by relevance to the learning content. Include an option to skip.
326
+
327
+ **Headless mode:** If `HEADLESS_MODE=true` and multiple components detected, select the component most relevant to the learning content using LLM judgment. If one component detected, use it. Do not prompt.
328
+
329
+ If the target file does not exist at the expected path, warn and skip.
330
+
331
+ #### 8.3 Propose Edit
332
+
333
+ Route **two categories** of insights to each target:
334
+
335
+ **A. Solution insight** (the main learning):
336
+
337
+ 1. Read the target definition file
338
+ 2. Find the most relevant existing section for a new bullet -- do not create new sections
339
+ 3. If no section with bullets exists in the target file, warn and skip this target
340
+ 4. Draft a one-line bullet capturing the sharp edge -- non-obvious gotcha only, skip if the insight is general knowledge the model already knows
341
+ 5. Display the proposed edit showing the section name, existing bullets, and the new bullet
342
+
343
+ **B. Error prevention** (from session errors):
344
+
345
+ 1. Check the learning file's `## Session Errors` section. For each error with a `**Prevention:**` line, determine if the error could have been prevented by a skill instruction in the target definition.
346
+ 2. If yes, draft a one-line bullet for the target's Sharp Edges or equivalent section (e.g., "Verify relative paths by tracing each `../` step before prescribing them in plans.").
347
+ 3. If the target has no section suitable for preventive bullets, skip.
348
+ 4. Display the proposed edit alongside the solution edit.
349
+
350
+ This dual-routing ensures session errors feed back into the definitions that caused them, not just the learning archive.
351
+
352
+ #### 8.4 Apply
353
+
354
+ **Gated-block guard (proposer-agnostic eval gate).** Before applying, run `node plugins/soleur/skills/eval-harness/scripts/eval-gate.cjs --check <target-file>`. If `gated:false`, apply normally. If `gated:true`, you MUST run the gate for the proposed edit — do NOT eyeball whether the classifier block changed and assume `accept`. Write the proposed-edited file to a temp path and run `eval-gate.cjs --candidate-file <tmp> --target <target> --target-task <synthesized row>`: the SCRIPT (not the agent) decides the identical-block short-circuit (when Step 8.3's bullet lands *outside* the `soleur:go` routing table / triage rubric block — the common case — the script extracts an identical block and returns `accept` with no API spend; when the block did change, the script runs promptfoo and computes the verdict in `verdict.cjs`). Then follow heal-skill step 6.0 (buffer pre-check → accept-applies / reject-logs-to-`.claude/.skill-edit-rejections.jsonl`-and-does-NOT-stamp-`synced_to`). **Headless (`HEADLESS_MODE=true`) — fail CLOSED:** if the gate did not run to an `accept:true` (e.g. unattended, to avoid spending the gate's API budget), DO NOT apply the gated-block edit — DEFER it (record a one-line deferred note; the edit is preserved in the learning context and re-attempted interactively; the #5703 CI backstop re-asserts at PR time). Fail-closed on any gate error. The gate validates a prose-rule change to a classifier surface only; it never displaces a deterministic hook fix.
355
+
356
+ Apply the proposed edit to the definition file. Filing a GitHub issue is NOT an option in either mode -- the backlog-growth pressure that produced 22 stale `compound: route-to-definition proposal` issues by 2026-05 is the original problem this step exists to avoid. If Step 8.3 produced a draft, it has already cleared the "skip if no suitable section / insight is general knowledge" gate; that gate is the only safety hatch.
357
+
358
+ **Headless mode (`HEADLESS_MODE=true`):** Before writing, assert the resolved target path is prefixed by `plugins/soleur/skills/`, `plugins/soleur/agents/`, or `plugins/soleur/commands/` — refuse otherwise. Then write the edit to the target file directly without prompting. The prefix check enforces `hr-write-boundary-sentinel-sweep-all-write-sites` for this new write surface; the Step 8.1 path map is the implicit allowlist, this assertion makes it explicit.
359
+
360
+ **Interactive mode:** Use **AskUserQuestion** with options:
361
+
362
+ - **Accept** -- Apply the edit to the definition file
363
+ - **Skip** -- Do not modify the definition; the learning is still captured in knowledge-base/project/learnings/
364
+ - **Edit** -- Modify the bullet text, then re-display for confirmation
365
+
366
+ In both modes, after writing the edit, update the learning file's `synced_to` frontmatter to prevent `soleur:sync` from re-proposing this pair:
367
+
368
+ - If `synced_to` array exists in frontmatter: append the definition name
369
+ - If frontmatter exists but `synced_to` is absent: add `synced_to: [definition-name]`
370
+ - If no YAML frontmatter block exists: prepend a minimal `---` block with only `synced_to: [definition-name]`
371
+
372
+ Do NOT commit -- the edits are staged for the normal workflow completion protocol.
373
+ </step>
374
+
375
+ </critical_sequence>
376
+
377
+ ---
378
+
379
+ ## Automatic Consolidation (feature branches)
380
+
381
+ After documentation is complete and before the decision menu, automatically consolidate and archive KB artifacts on feature branches. This replaces the former manual Option 2 in the decision menu.
382
+
383
+ **Branch detection:**
384
+
385
+ Run `git branch --show-current` to get the current branch. If it does not start with `feat-`, `feat/`, `fix-`, or `fix/`, skip consolidation entirely.
386
+
387
+ **If on a feature branch (`feat-*`, `feat/*`, `fix-*`, or `fix/*`), run the following steps automatically:**
388
+
389
+ ### Auto-Consolidation Step A: Artifact Discovery
390
+
391
+ Extract the slug from the current branch name by stripping the branch type prefix. Handle all prefix variants:
392
+
393
+ - `feat/` -- strip prefix (e.g., `feat/domain-leaders` becomes `domain-leaders`)
394
+ - `feat-` -- strip prefix (e.g., `feat-domain-leaders` becomes `domain-leaders`)
395
+ - `fix/` -- strip prefix (e.g., `fix/typo` becomes `typo`)
396
+ - `fix-` -- strip prefix (e.g., `fix-typo` becomes `typo`)
397
+
398
+ Glob for related artifacts:
399
+
400
+ Search for artifacts matching the feature slug. Replace `<slug>` with the actual feature slug derived from the branch name:
401
+
402
+ ```bash
403
+ find knowledge-base/project/brainstorms/ -name "*<slug>*" -not -path "*/archive/*" 2>/dev/null
404
+ find knowledge-base/project/plans/ -name "*<slug>*" -not -path "*/archive/*" 2>/dev/null
405
+ test -d "knowledge-base/project/specs/feat-<slug>" && echo "knowledge-base/project/specs/feat-<slug>/"
406
+ ```
407
+
408
+ **If no artifacts found:** Skip consolidation silently and proceed to the decision menu.
409
+
410
+ **If artifacts found:** Present the discovered list:
411
+
412
+ ```text
413
+ Found artifacts for feat-<slug>:
414
+
415
+ 1. knowledge-base/project/brainstorms/2026-02-09-<slug>-brainstorm.md
416
+ 2. knowledge-base/project/plans/2026-02-09-feat-<slug>-plan.md
417
+ 3. knowledge-base/project/specs/feat-<slug>/
418
+
419
+ Proceed with consolidation? (Y/n/add more)
420
+ ```
421
+
422
+ Replace `<slug>` with the actual feature slug throughout.
423
+
424
+ If user selects "add more," prompt for additional file paths and append to the list.
425
+
426
+ ### Auto-Consolidation Step B: Knowledge Extraction
427
+
428
+ A single agent reads ALL discovered artifacts and proposes updates to:
429
+
430
+ - `knowledge-base/project/constitution.md` -- new Always/Never/Prefer rules under the appropriate domain
431
+ - `knowledge-base/project/components/*.md` -- new component documentation entries
432
+ - `knowledge-base/project/README.md` -- architectural insights or pattern notes
433
+
434
+ The agent produces proposals as structured markdown blocks. Each proposal specifies:
435
+
436
+ - **Target file**: Which project file to update
437
+ - **Section**: Where in the file to insert (e.g., "Architecture > Always")
438
+ - **Content**: The exact text to add
439
+
440
+ ### Auto-Consolidation Step C: Approval Flow
441
+
442
+ Present proposals one at a time:
443
+
444
+ ```text
445
+ Proposal 1 of N:
446
+
447
+ Target: knowledge-base/project/constitution.md
448
+ Section: Architecture > Always
449
+ Content:
450
+ - Archive completed feature artifacts after consolidation to prevent knowledge-base bloat
451
+
452
+ Accept / Skip / Edit? _
453
+ ```
454
+
455
+ **Accept:** Apply the proposal immediately (see Step D).
456
+
457
+ **Skip:** Move to the next proposal. The skipped content is not applied.
458
+
459
+ **Edit:** User provides corrected text. Re-display the edited proposal for Accept/Skip.
460
+
461
+ **Idempotency check:** Before applying, perform a simple substring check against the target file. If similar content already exists, flag it:
462
+
463
+ ```text
464
+ Similar content found in constitution.md:
465
+ "Archive outdated learnings to knowledge-base/project/learnings/archive/"
466
+
467
+ Still apply this proposal? (Y/n)
468
+ ```
469
+
470
+ ### Auto-Consolidation Step D: Apply Accepted Proposals
471
+
472
+ Apply each accepted proposal immediately after approval:
473
+
474
+ - **Constitution updates:** Append the rule to the correct domain/category section
475
+ - **Component doc updates:** Add new entries to the relevant component file
476
+ - **Overview README updates:** Add architectural notes to the appropriate section
477
+
478
+ ### Auto-Consolidation Step E: Archival
479
+
480
+ Archive ALL discovered artifacts regardless of how many proposals were accepted or skipped.
481
+
482
+ Run the archival script from the repository root:
483
+
484
+ ```bash
485
+ bash "${CLAUDE_PLUGIN_ROOT}/skills/archive-kb/scripts/archive-kb.sh"
486
+ ```
487
+
488
+ The script discovers artifacts matching the current branch's feature slug, creates archive directories, and moves each artifact with a timestamped prefix using `git mv`. It handles untracked files automatically. If the script exits non-zero, display the error and stop -- do not proceed to Step F.
489
+
490
+ **Context-aware archival confirmation:**
491
+
492
+ **Headless mode:** Auto-archive without prompting (equivalent to answering "Y").
493
+
494
+ **Interactive mode:**
495
+
496
+ If at least one proposal was accepted:
497
+
498
+ ```text
499
+ Overview files updated. Archive the source artifacts? (Y/n)
500
+ ```
501
+
502
+ If all proposals were skipped:
503
+
504
+ ```text
505
+ No project updates applied. Still archive the source artifacts? (Y/n)
506
+ ```
507
+
508
+ ### Auto-Consolidation Step F: Commit
509
+
510
+ All changes (project edits + archival moves) go into a single commit:
511
+
512
+ ```bash
513
+ git add -A knowledge-base/
514
+ git commit -m "compound: consolidate and archive feat-<slug> artifacts"
515
+ ```
516
+
517
+ Replace `<slug>` with the actual feature slug.
518
+
519
+ This ensures `git revert` restores everything in one operation.
520
+
521
+ After commit, proceed to the decision menu.
522
+
523
+ ---
524
+
525
+ <decision_gate name="post-documentation" wait_for_user="true">
526
+
527
+ ## Decision Menu After Capture
528
+
529
+ **Headless mode:** If `HEADLESS_MODE=true`, auto-select "Continue workflow" without presenting the menu.
530
+
531
+ **Interactive mode:** After successful documentation, present options and WAIT for user response:
532
+
533
+ ```
534
+ ✓ Solution documented
535
+
536
+ File created:
537
+ - knowledge-base/project/learnings/[category]/[filename].md
538
+
539
+ What's next?
540
+ 1. Continue workflow (recommended)
541
+ 2. Add to Required Reading - Promote to critical patterns (critical-patterns.md)
542
+ 3. Link related issues - Connect to similar problems
543
+ 4. Add to existing skill - Add to a learning skill (e.g., hotwire-native)
544
+ 5. Create new skill - Extract into new learning skill
545
+ 6. View documentation - See what was captured
546
+ 7. Other
547
+ ```
548
+
549
+ **Note:** Consolidation and archival of KB artifacts now runs automatically before this menu on `feat-*` branches. See "Automatic Consolidation" section above.
550
+
551
+ **Handle responses:**
552
+
553
+ **Option 1: Continue workflow**
554
+
555
+ - Return to calling skill/workflow
556
+ - Documentation is complete
557
+
558
+ **Option 2: Add to Required Reading** ⭐ PRIMARY PATH FOR CRITICAL PATTERNS
559
+
560
+ User selects this when:
561
+
562
+ - System made this mistake multiple times across different modules
563
+ - Solution is non-obvious but must be followed every time
564
+ - Foundational requirement (Rails, Rails API, threading, etc.)
565
+
566
+ Action:
567
+
568
+ 1. Extract pattern from the documentation
569
+ 2. Format as ❌ WRONG vs ✅ CORRECT with code examples
570
+ 3. Add to `knowledge-base/project/learnings/patterns/critical-patterns.md`
571
+ 4. Add cross-reference back to this doc
572
+ 5. Confirm: "✓ Added to Required Reading. All subagents will see this pattern before code generation."
573
+
574
+ **Option 3: Link related issues**
575
+
576
+ - Prompt: "Which doc to link? (provide filename or describe)"
577
+ - Search knowledge-base/project/learnings/ for the doc
578
+ - Add cross-reference to both docs
579
+ - Confirm: "✓ Cross-reference added"
580
+
581
+ **Option 4: Add to existing skill**
582
+
583
+ User selects this when the documented solution relates to an existing learning skill:
584
+
585
+ Action:
586
+
587
+ 1. Prompt: "Which skill? (hotwire-native, etc.)"
588
+ 2. Determine which reference file to update (resources.md, patterns.md, or examples.md)
589
+ 3. Add link and brief description to appropriate section
590
+ 4. Confirm: "✓ Added to [skill-name] skill in [file]"
591
+
592
+ Example: For Hotwire Native Tailwind variants solution:
593
+
594
+ - Add to `hotwire-native/references/resources.md` under "Project-Specific Resources"
595
+ - Add to `hotwire-native/references/examples.md` with link to solution doc
596
+
597
+ **Option 5: Create new skill**
598
+
599
+ User selects this when the solution represents the start of a new learning domain:
600
+
601
+ Action:
602
+
603
+ 1. Prompt: "What should the new skill be called? (e.g., stripe-billing, email-processing)"
604
+ 2. Run `python3 "${CLAUDE_PLUGIN_ROOT}/skills/skill-creator/scripts/init_skill.py" [skill-name]`
605
+ 3. Create initial reference files with this solution as first example
606
+ 4. Confirm: "✓ Created new [skill-name] skill with this solution as first example"
607
+
608
+ **Option 6: View documentation**
609
+
610
+ - Display the created documentation
611
+ - Present decision menu again
612
+
613
+ **Option 7: Other**
614
+
615
+ - Ask what they'd like to do
616
+
617
+ </decision_gate>
618
+
619
+ ---
620
+
621
+ <integration_protocol>
622
+
623
+ ## Integration Points
624
+
625
+ **Invoked by:**
626
+
627
+ - soleur:compound command (primary interface)
628
+ - Manual invocation in conversation after solution confirmed
629
+ - Can be triggered by detecting confirmation phrases like "that worked", "it's fixed", etc.
630
+
631
+ **Invokes:**
632
+
633
+ - None (terminal skill - does not delegate to other skills)
634
+
635
+ **Handoff expectations:**
636
+ All context needed for documentation should be present in conversation history before invocation.
637
+
638
+ </integration_protocol>
639
+
640
+ ---
641
+
642
+ <success_criteria>
643
+
644
+ ## Success Criteria
645
+
646
+ Documentation is successful when ALL of the following are true:
647
+
648
+ - ✅ YAML frontmatter validated (all required fields, correct formats)
649
+ - ✅ File created in knowledge-base/project/learnings/[category]/[filename].md
650
+ - ✅ Enum values match schema.yaml exactly
651
+ - ✅ Code examples included in solution section
652
+ - ✅ Cross-references added if related issues found
653
+ - ✅ User presented with decision menu and action confirmed
654
+
655
+ </success_criteria>
656
+
657
+ ---
658
+
659
+ ## Error Handling
660
+
661
+ **Missing context:**
662
+
663
+ - Ask user for missing details
664
+ - Don't proceed until critical info provided
665
+
666
+ **YAML validation failure:**
667
+
668
+ - Show specific errors
669
+ - Present retry with corrected values
670
+ - BLOCK until valid
671
+
672
+ **Similar issue ambiguity:**
673
+
674
+ - Present multiple matches
675
+ - Let user choose: new doc, update existing, or link as duplicate
676
+
677
+ **Module not in modules documentation:**
678
+
679
+ - Warn but don't block
680
+ - Proceed with documentation
681
+ - Suggest: "Add [Module] to modules documentation if not there"
682
+
683
+ ---
684
+
685
+ ## Execution Guidelines
686
+
687
+ **MUST do:**
688
+
689
+ - Validate YAML frontmatter (BLOCK if invalid per Step 5 validation gate)
690
+ - Extract exact error messages from conversation
691
+ - Include code examples in solution section
692
+ - Create directories before writing files (`mkdir -p`)
693
+ - Ask user and WAIT if critical context missing
694
+
695
+ **MUST NOT do:**
696
+
697
+ - Skip YAML validation (validation gate is blocking)
698
+ - Use vague descriptions (not searchable)
699
+ - Omit code examples or cross-references
700
+
701
+ ---
702
+
703
+ ## Quality Guidelines
704
+
705
+ **Good documentation has:**
706
+
707
+ - ✅ Exact error messages (copy-paste from output)
708
+ - ✅ Specific file:line references
709
+ - ✅ Observable symptoms (what you saw, not interpretations)
710
+ - ✅ Failed attempts documented (helps avoid wrong paths)
711
+ - ✅ Technical explanation (not just "what" but "why")
712
+ - ✅ Code examples (before/after if applicable)
713
+ - ✅ Prevention guidance (how to catch early)
714
+ - ✅ Cross-references (related issues)
715
+
716
+ **Avoid:**
717
+
718
+ - ❌ Vague descriptions ("something was wrong")
719
+ - ❌ Missing technical details ("fixed the code")
720
+ - ❌ No context (which version? which file?)
721
+ - ❌ Just code dumps (explain why it works)
722
+ - ❌ No prevention guidance
723
+ - ❌ No cross-references
724
+
725
+ ---
726
+
727
+ ## Example Scenario
728
+
729
+ **User:** "That worked! The N+1 query is fixed."
730
+
731
+ **Skill activates:**
732
+
733
+ 1. **Detect confirmation:** "That worked!" triggers auto-invoke
734
+ 2. **Gather context:**
735
+ - Module: Brief System
736
+ - Symptom: Brief generation taking >5 seconds, N+1 query when loading email threads
737
+ - Failed attempts: Added pagination (didn't help), checked background job performance
738
+ - Solution: Added eager loading with `includes(:emails)` on Brief model
739
+ - Root cause: Missing eager loading causing separate database query per email thread
740
+ 3. **Check existing:** No similar issue found
741
+ 4. **Generate filename:** `n-plus-one-brief-generation-BriefSystem-20251110.md`
742
+ 5. **Validate YAML:**
743
+
744
+ ```yaml
745
+ module: Brief System
746
+ date: 2025-11-10
747
+ problem_type: performance_issue
748
+ component: rails_model
749
+ symptoms:
750
+ - "N+1 query when loading email threads"
751
+ - "Brief generation taking >5 seconds"
752
+ root_cause: missing_include
753
+ severity: high
754
+ tags: [n-plus-one, eager-loading, performance]
755
+ ```
756
+
757
+ ✅ Valid
758
+ 6. **Create documentation:**
759
+ - `knowledge-base/project/learnings/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md`
760
+ 7. **Cross-reference:** None needed (no similar issues)
761
+
762
+ **Output:**
763
+
764
+ ```text
765
+ ✓ Solution documented
766
+
767
+ File created:
768
+ - knowledge-base/project/learnings/performance-issues/n-plus-one-brief-generation-BriefSystem-20251110.md
769
+
770
+ What's next?
771
+ 1. Continue workflow (recommended)
772
+ 2. Add to Required Reading - Promote to critical patterns (critical-patterns.md)
773
+ 3. Link related issues - Connect to similar problems
774
+ 4. Add to existing skill - Add to a learning skill (e.g., hotwire-native)
775
+ 5. Create new skill - Extract into new learning skill
776
+ 6. View documentation - See what was captured
777
+ 7. Other
778
+ ```
779
+
780
+ ---
781
+
782
+ ## Future Enhancements
783
+
784
+ **Not in Phase 7 scope, but potential:**
785
+
786
+ - Search by date range
787
+ - Filter by severity
788
+ - Tag-based search interface
789
+ - Metrics (most common issues, resolution time)
790
+ - Export to shareable format (community knowledge sharing)
791
+ - Import community solutions