@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,226 @@
1
+ # Workflow: Verify Skill Content Accuracy
2
+
3
+ <required_reading>
4
+ **Read these reference files NOW:**
5
+
6
+ 1. references/skill-structure.md
7
+ </required_reading>
8
+
9
+ <purpose>
10
+ Audit checks structure. **Verify checks truth.**
11
+
12
+ Skills contain claims about external things: APIs, CLI tools, frameworks, services. These change over time. This workflow checks if a skill's content is still accurate.
13
+ </purpose>
14
+
15
+ <process>
16
+ ## Step 1: Select the Skill
17
+
18
+ ```bash
19
+ ls ~/.claude/skills/
20
+ ```
21
+
22
+ Present numbered list, ask: "Which skill should I verify for accuracy?"
23
+
24
+ ## Step 2: Read and Categorize
25
+
26
+ Read the entire skill (SKILL.md + workflows/ + references/):
27
+
28
+ ```bash
29
+ cat ~/.claude/skills/{skill-name}/SKILL.md
30
+ cat ~/.claude/skills/{skill-name}/workflows/*.md 2>/dev/null
31
+ cat ~/.claude/skills/{skill-name}/references/*.md 2>/dev/null
32
+ ```
33
+
34
+ Categorize by primary dependency type:
35
+
36
+ | Type | Examples | Verification Method |
37
+ |------|----------|---------------------|
38
+ | **API/Service** | manage-stripe, manage-gohighlevel | Context7 + WebSearch |
39
+ | **CLI Tools** | build-macos-apps (xcodebuild, swift) | Run commands |
40
+ | **Framework** | build-iphone-apps (SwiftUI, UIKit) | Context7 for docs |
41
+ | **Integration** | setup-stripe-payments | WebFetch + Context7 |
42
+ | **Pure Process** | create-agent-skills | No external deps |
43
+
44
+ Report: "This skill is primarily [type]-based. I'll verify using [method]."
45
+
46
+ ## Step 3: Extract Verifiable Claims
47
+
48
+ Scan skill content and extract:
49
+
50
+ **CLI Tools mentioned:**
51
+
52
+ - Tool names (xcodebuild, swift, npm, etc.)
53
+ - Specific flags/options documented
54
+ - Expected output patterns
55
+
56
+ **API Endpoints:**
57
+
58
+ - Service names (Stripe, Meta, etc.)
59
+ - Specific endpoints documented
60
+ - Authentication methods
61
+ - SDK versions
62
+
63
+ **Framework Patterns:**
64
+
65
+ - Framework names (SwiftUI, React, etc.)
66
+ - Specific APIs/patterns documented
67
+ - Version-specific features
68
+
69
+ **File Paths/Structures:**
70
+
71
+ - Expected project structures
72
+ - Config file locations
73
+
74
+ Present: "Found X verifiable claims to check."
75
+
76
+ ## Step 4: Verify by Type
77
+
78
+ ### For CLI Tools
79
+
80
+ ```bash
81
+ # Check tool exists
82
+ which {tool-name}
83
+
84
+ # Check version
85
+ {tool-name} --version
86
+
87
+ # Verify documented flags work
88
+ {tool-name} --help | grep "{documented-flag}"
89
+ ```
90
+
91
+ ### For API/Service Skills
92
+
93
+ Use Context7 to fetch current documentation:
94
+
95
+ ```
96
+ mcp__context7__resolve-library-id: {service-name}
97
+ mcp__context7__get-library-docs: {library-id}, topic: {relevant-topic}
98
+ ```
99
+
100
+ Compare skill's documented patterns against current docs:
101
+
102
+ - Are endpoints still valid?
103
+ - Has authentication changed?
104
+ - Are there deprecated methods being used?
105
+
106
+ ### For Framework Skills
107
+
108
+ Use Context7:
109
+
110
+ ```
111
+ mcp__context7__resolve-library-id: {framework-name}
112
+ mcp__context7__get-library-docs: {library-id}, topic: {specific-api}
113
+ ```
114
+
115
+ Check:
116
+
117
+ - Are documented APIs still current?
118
+ - Have patterns changed?
119
+ - Are there newer recommended approaches?
120
+
121
+ ### For Integration Skills
122
+
123
+ WebSearch for recent changes:
124
+
125
+ ```
126
+ "[service name] API changes 2026"
127
+ "[service name] breaking changes"
128
+ "[service name] deprecated endpoints"
129
+ ```
130
+
131
+ Then Context7 for current SDK patterns.
132
+
133
+ ### For Services with Status Pages
134
+
135
+ WebFetch official docs/changelog if available.
136
+
137
+ ## Step 5: Generate Freshness Report
138
+
139
+ Present findings:
140
+
141
+ ```
142
+ ## Verification Report: {skill-name}
143
+
144
+ ### ✅ Verified Current
145
+ - [Claim]: [Evidence it's still accurate]
146
+
147
+ ### ⚠️ May Be Outdated
148
+ - [Claim]: [What changed / newer info found]
149
+ → Current: [what docs now say]
150
+
151
+ ### ❌ Broken / Invalid
152
+ - [Claim]: [Why it's wrong]
153
+ → Fix: [What it should be]
154
+
155
+ ### ℹ️ Could Not Verify
156
+ - [Claim]: [Why verification wasn't possible]
157
+
158
+ ---
159
+ **Overall Status:** [Fresh / Needs Updates / Significantly Stale]
160
+ **Last Verified:** [Today's date]
161
+ ```
162
+
163
+ ## Step 6: Offer Updates
164
+
165
+ If issues found:
166
+
167
+ "Found [N] items that need updating. Would you like me to:"
168
+
169
+ 1. **Update all** - Apply all corrections
170
+ 2. **Review each** - Show each change before applying
171
+ 3. **Just the report** - No changes
172
+
173
+ If updating:
174
+
175
+ - Make changes based on verified current information
176
+ - Add verification date comment if appropriate
177
+ - Report what was updated
178
+
179
+ ## Step 7: Suggest Verification Schedule
180
+
181
+ Based on skill type, recommend:
182
+
183
+ | Skill Type | Recommended Frequency |
184
+ |------------|----------------------|
185
+ | API/Service | Every 1-2 months |
186
+ | Framework | Every 3-6 months |
187
+ | CLI Tools | Every 6 months |
188
+ | Pure Process | Annually |
189
+
190
+ "This skill should be re-verified in approximately [timeframe]."
191
+ </process>
192
+
193
+ <verification_shortcuts>
194
+
195
+ ## Quick Verification Commands
196
+
197
+ **Check if CLI tool exists and get version:**
198
+
199
+ ```bash
200
+ which {tool} && {tool} --version
201
+ ```
202
+
203
+ **Context7 pattern for any library:**
204
+
205
+ ```
206
+ 1. resolve-library-id: "{library-name}"
207
+ 2. get-library-docs: "{id}", topic: "{specific-feature}"
208
+ ```
209
+
210
+ **WebSearch patterns:**
211
+
212
+ - Breaking changes: "{service} breaking changes 2026"
213
+ - Deprecations: "{service} deprecated API"
214
+ - Current best practices: "{framework} best practices 2026"
215
+ </verification_shortcuts>
216
+
217
+ <success_criteria>
218
+ Verification is complete when:
219
+
220
+ - [ ] Skill categorized by dependency type
221
+ - [ ] Verifiable claims extracted
222
+ - [ ] Each claim checked with appropriate method
223
+ - [ ] Freshness report generated
224
+ - [ ] Updates applied (if requested)
225
+ - [ ] User knows when to re-verify
226
+ </success_criteria>
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: skill-security-scan
3
+ description: "This skill should be used when scanning Claude Code skills or agent files for advisory security risks: code-execution, prompt-injection, supply-chain, filesystem-boundary, telemetry. Emits LOW-RISK | REVIEW | HIGH-RISK."
4
+ ---
5
+
6
+ <!-- soleur-cloud-mode:start -->
7
+ **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.
8
+ <!-- soleur-cloud-mode:end -->
9
+
10
+ <!-- grok-harness-invoke:start -->
11
+ **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.
12
+ <!-- grok-harness-invoke:end -->
13
+
14
+ # skill-security-scan
15
+
16
+ <!--
17
+ Pattern provenance: portions of the detection-pattern taxonomy and the five-category
18
+ breakdown are adapted from alirezarezvani/claude-skills (skill-security-auditor),
19
+ licensed under the MIT License. The verbatim license text is preserved at
20
+ [LICENSES/skill-security-auditor.MIT.txt](../../../../LICENSES/skill-security-auditor.MIT.txt).
21
+ No verbatim code is copied; only the conceptual taxonomy and category framing.
22
+ -->
23
+
24
+ Advisory static-analysis gate that scans a SKILL.md or agent markdown file for five
25
+ categories of security risk. Emits one of `LOW-RISK | REVIEW | HIGH-RISK` plus a
26
+ findings report, with a mandatory advisory disclaimer footer. **Advisory only:**
27
+ output is not a security audit, certification, or warranty. The skill executes in
28
+ the operator's environment under the operator's account; the operator remains
29
+ responsible for review.
30
+
31
+ ## Detection categories
32
+
33
+ 1. **Code-execution anti-patterns** — dynamic-eval primitives, shell-spawn with
34
+ user-controlled args, obfuscation signatures. See
35
+ [references/rules/code-exec.yaml](./references/rules/code-exec.yaml).
36
+ 2. **Prompt-injection** — frontmatter role-hijack and body proximity-gated patterns,
37
+ with Soleur prose allowlist. See
38
+ [references/regex-patterns.md](./references/regex-patterns.md).
39
+ 3. **Supply-chain risk** — osv.dev batch query against parsed manifest references,
40
+ with ecosystem allowlist + REVIEW-on-unknown + network-error-as-REVIEW.
41
+ 4. **Filesystem boundary violations** — path traversal, symlink-out, write attempts
42
+ to credential dotfiles. See
43
+ [references/rules/filesystem-boundary.yaml](./references/rules/filesystem-boundary.yaml).
44
+ 5. **Third-Party Telemetry Surface** — utm-tagged links, redirect-tracking domains,
45
+ outbound-beacon URLs, vendor-branding footers. URL host-aware allowlist (not raw
46
+ substring match — adversarial `https://attacker.com/?ref=soleur.ai` is detected
47
+ as host=attacker.com). See
48
+ [references/first-party-allowlist.yaml](./references/first-party-allowlist.yaml).
49
+
50
+ ## Verdict semantics
51
+
52
+ | Verdict | Meaning | Operator action |
53
+ |---|---|---|
54
+ | `LOW-RISK` | No findings, or only finding-level metadata WARN tags | Proceed silently |
55
+ | `REVIEW` | At least one category emitted REVIEW | Read findings; decide |
56
+ | `HIGH-RISK` | At least one category emitted HIGH-RISK | Block-by-default; override via structured artifact |
57
+
58
+ Aggregation rule: max-severity across the five categories wins. Per-finding
59
+ `severity: WARN` contributes `REVIEW` to the aggregate verdict, never `HIGH-RISK`
60
+ alone.
61
+
62
+ ## Invocation
63
+
64
+ Scan a file:
65
+
66
+ ```bash
67
+ bash "${CLAUDE_PLUGIN_ROOT}/skills/skill-security-scan/scripts/run-scan.sh" < path/to/SKILL.md
68
+ ```
69
+
70
+ Scan stdin content (used by `soleur:engineering:discovery:agent-finder` post-fetch / `skill-creator` post-scaffold
71
+ integrations):
72
+
73
+ ```bash
74
+ echo "$skill_md_content" | bash "${CLAUDE_PLUGIN_ROOT}/skills/skill-security-scan/scripts/run-scan.sh"
75
+ ```
76
+
77
+ **No verdict line means REVIEW.** If the output carries no `LOW-RISK`/`REVIEW`/`HIGH-RISK` verdict — the script
78
+ crashed, or the shell printed `No such file or directory` because the plugin root did not resolve — treat the
79
+ skill as **REVIEW**, never LOW-RISK (ADR-179 A18).
80
+
81
+ Output: markdown findings table on stdout, mandatory advisory disclaimer footer
82
+ (non-removable), and `.scan-meta.json` persisted under
83
+ `$XDG_RUNTIME_DIR/skill-security-scan-<pid>/` (or `SKILL_SCAN_META_BASE` when
84
+ set; `/tmp` when neither is set). Retention is bounded by the scanner's own
85
+ startup age-reap: `skill-security-scan-*` dirs older than
86
+ `SKILL_SCAN_META_REAP_MIN` minutes (default 10080 = 7 days) are reaped at the
87
+ next invocation, and the same knob bounds a sibling sweep under
88
+ `${TMPDIR:-/tmp}` covering `skill-scan-*` scratch orphans, stranded
89
+ `skill-security-scan-*` crossover dirs, and `sss-write.*.err` hook captures
90
+ (#6789, #6760). One knob, two scopes: shrinking it shrinks BOTH the Art. 32
91
+ evidence window and the scratch floor — and both sweeps clamp to a 60-minute
92
+ minimum because a lower floor can reap a concurrent scan's live scratch or
93
+ live meta dir.
94
+ The dir is deliberately NOT EXIT-trap-cleaned: the override flow reads the
95
+ path after the scan exits.
96
+
97
+ ## Override mechanism
98
+
99
+ When the scanner returns `HIGH-RISK` and the operator judges the finding to be a
100
+ false-positive or accepted-risk, override by committing a structured artifact:
101
+
102
+ ```
103
+ knowledge-base/engineering/security/skill-overrides/YYYY-MM-DD-<slug>.md
104
+ ```
105
+
106
+ The artifact is the sole audit-trail (no git trailer involved — squash-merge-safe).
107
+ Schema: [references/override-artifact-schema.json](./references/override-artifact-schema.json).
108
+ Process: [references/override-mechanism.md](./references/override-mechanism.md).
109
+
110
+ ## Self-defense
111
+
112
+ The scanner is itself an attack surface. Defenses:
113
+
114
+ - **Rule-pack SHA pinning** via [references/rules/manifest.yaml](./references/rules/manifest.yaml).
115
+ `run-scan.sh` validates rule-file SHAs at every run; tampering → REVIEW with
116
+ reason `rule pack tampered`.
117
+ - **OSV untrusted-input handling**: schema validation, body-size cap, ecosystem
118
+ allowlist (unknown ecosystem → REVIEW, never LOW-RISK), network-failure →
119
+ REVIEW.
120
+ - **Fail-loud self-test**:
121
+ [scripts/run-self-test.sh](./scripts/run-self-test.sh) runs the scanner over
122
+ known-malicious + known-clean fixtures; any false-negative or false-positive on
123
+ the seed set fails the test loudly. Wired into CI per
124
+ `.github/workflows/skill-security-scan-corpus.yml`.
125
+
126
+ ## PII redaction
127
+
128
+ Findings persisted to `.scan-meta.json` and override artifacts run through
129
+ email/IP/IBAN-shape redaction before write (per gdpr-gate `GDPR-DataMin-1`).
130
+ Operator-facing stdout is unredacted; persisted forms are redacted. Sentry mirrors
131
+ of scanner errors use `reportSilentFallback(err, { feature: 'skill-security-scan',
132
+ extra: { ...redacted } })`.
133
+
134
+ ## Integrations
135
+
136
+ - `skill-creator` Step 5: post-validation scan before packaging.
137
+ - `soleur:engineering:discovery:agent-finder` §4b.5: cooperative-fast-path scan post-fetch / pre-write.
138
+ - PreToolUse hook on `Write` to `.claude/skills/**` and `.claude/agents/**`:
139
+ load-bearing block-on-HIGH-RISK gate at the tool layer.
140
+ - Lefthook commit-time advisory: belt-and-suspenders for IDE / CLI commit paths.
141
+ - CI pre-merge required check + post-merge audit: defense-in-depth against
142
+ tool-layer bypass.
143
+
144
+ See [references/override-mechanism.md](./references/override-mechanism.md) for
145
+ operator workflows.
@@ -0,0 +1,21 @@
1
+ # Mandatory advisory disclaimer (CLO Decision 1)
2
+
3
+ This text is appended verbatim by `run-scan.sh` to every scanner output. It is
4
+ the SINGLE point of insertion (per plan Sharp Edge #9). Per-script outputs do
5
+ NOT include the disclaimer; the aggregator does.
6
+
7
+ ```
8
+ ---
9
+ Advisory static analysis only. LOW-RISK does not constitute a security audit,
10
+ certification, or warranty of safety. The skill executes in your environment
11
+ under your account; you remain responsible for review.
12
+
13
+ Scanner version: <version> Rule pack: <sha-prefix> Scanned: <ISO-8601>
14
+ ```
15
+
16
+ The token `<version>` is replaced with the value of `scanner_version` from the
17
+ manifest. `<sha-prefix>` is the first 12 hex chars of the rule-pack manifest
18
+ SHA. `<ISO-8601>` is the scan timestamp in `date -u +"%Y-%m-%dT%H:%M:%SZ"`.
19
+
20
+ The disclaimer is required regardless of verdict — including LOW-RISK — so
21
+ that downstream consumers cannot infer "no warning" as a positive certification.
@@ -0,0 +1,38 @@
1
+ # First-party allowlist for category 5 (telemetry-surface).
2
+ #
3
+ # Matched on URL host segment after parsing (NOT raw substring).
4
+ # Adversarial `https://attacker.com/redirect?ref=soleur.ai` MUST trip detection
5
+ # (host = attacker.com, NOT in this list). See R14 / Sharp Edge #23.
6
+ #
7
+ # Hosts use domain-suffix matching: a literal entry `soleur.ai` matches
8
+ # `soleur.ai` and any subdomain `*.soleur.ai`. The wildcard form `*.soleur.ai`
9
+ # is equivalent and provided for documentation clarity.
10
+
11
+ domains:
12
+ - soleur.ai
13
+ - "*.soleur.ai"
14
+ - soleur.dev
15
+ - "*.soleur.dev"
16
+ - github.com # Soleur is hosted on github.com/jikig-ai
17
+ - github.io # for github pages docs
18
+ - jikigai.com
19
+ - "*.jikigai.com"
20
+ - anthropic.com # Claude Code surface
21
+ - "*.anthropic.com"
22
+ - claude.com # Claude Code surface
23
+ - "*.claude.com"
24
+
25
+ # Approved utm_campaign IDs. utm-tagged links to non-allowlisted campaigns
26
+ # emit REVIEW (never HIGH-RISK on their own).
27
+ utm_campaigns:
28
+ - soleur-launch
29
+ - soleur-blog
30
+ - soleur-docs
31
+ - soleur-discord
32
+ - soleur-github
33
+ - soleur-x
34
+ - soleur-bluesky
35
+ - soleur-linkedin
36
+ - soleur-hn
37
+ - soleur-indiehackers
38
+ - soleur-reddit
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://soleur.ai/schemas/skill-security-scan/override-artifact.json",
4
+ "title": "Skill Security Scan Override Artifact",
5
+ "description": "Frontmatter schema for knowledge-base/engineering/security/skill-overrides/YYYY-MM-DD-<slug>.md. The artifact alone is the audit-trail; no git trailer is involved (squash-merge-safe).",
6
+ "type": "object",
7
+ "required": [
8
+ "skill",
9
+ "source",
10
+ "findings_json",
11
+ "justification",
12
+ "approver",
13
+ "scanner_version",
14
+ "rule_pack_sha256",
15
+ "verdict",
16
+ "timestamp"
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "skill": {
21
+ "type": "string",
22
+ "pattern": "^[a-z][a-z0-9-]*$",
23
+ "description": "Skill slug. Lowercase + hyphens only; rejects regex meta-chars to prevent bash interpolation hazards in filename matching."
24
+ },
25
+ "source": {
26
+ "type": "string",
27
+ "minLength": 1,
28
+ "description": "URL or 'skill-creator' (where the skill content originated)."
29
+ },
30
+ "findings_json": {
31
+ "description": "Inline JSON copy of the .scan-meta.json findings_summary at override time, or a path string referencing the .scan-meta.json file.",
32
+ "oneOf": [
33
+ { "type": "string" },
34
+ { "type": "object" }
35
+ ]
36
+ },
37
+ "justification": {
38
+ "type": "string",
39
+ "minLength": 1,
40
+ "description": "Free-text rationale explaining why the operator accepts the HIGH-RISK or REVIEW verdict."
41
+ },
42
+ "approver": {
43
+ "type": "string",
44
+ "format": "email",
45
+ "description": "git config user.email of the operator approving the override."
46
+ },
47
+ "scanner_version": {
48
+ "type": "string",
49
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
50
+ "description": "Semver of the scanner at override time."
51
+ },
52
+ "rule_pack_sha256": {
53
+ "type": "string",
54
+ "pattern": "^[a-f0-9]{8,64}$",
55
+ "description": "SHA-256 (or sha-prefix ≥8 chars) of the rule-pack manifest at override time. Mismatch with current manifest indicates stale findings; operator must re-run scanner and update the artifact."
56
+ },
57
+ "verdict": {
58
+ "type": "string",
59
+ "enum": ["HIGH-RISK", "REVIEW"],
60
+ "description": "Verdict the operator is overriding. LOW-RISK never requires an override."
61
+ },
62
+ "timestamp": {
63
+ "type": "string",
64
+ "format": "date-time",
65
+ "description": "ISO-8601 timestamp of override creation."
66
+ }
67
+ }
68
+ }
@@ -0,0 +1,171 @@
1
+ # skill-security-scan override mechanism
2
+
3
+ When the scanner returns `HIGH-RISK` or `REVIEW` and the operator judges the
4
+ finding to be a false-positive or accepted-risk, override by committing a
5
+ **structured artifact** under `knowledge-base/engineering/security/skill-overrides/`.
6
+
7
+ The artifact alone is the audit-trail. **No git trailer is involved** — the
8
+ `Skill-Security-Ack:` trailer was dropped during plan review (DHH + simplicity
9
+ HIGH-confidence cut, Kieran P0-2). This eliminates squash-merge invariant
10
+ concerns: the artifact appears in `git diff main...HEAD --diff-filter=A`
11
+ regardless of merge strategy.
12
+
13
+ ## Artifact location and naming
14
+
15
+ ```
16
+ knowledge-base/engineering/security/skill-overrides/YYYY-MM-DD-<slug>.md
17
+ ```
18
+
19
+ - `YYYY-MM-DD` — ISO-8601 date the override was created.
20
+ - `<slug>` — skill slug, lowercase + hyphens only, regex `^[a-z][a-z0-9-]*$`.
21
+ Capital letters and regex meta-characters are rejected (prevents bash
22
+ interpolation hazards in the filename match).
23
+
24
+ ## Artifact frontmatter schema
25
+
26
+ Validated against [override-artifact-schema.json](./override-artifact-schema.json).
27
+
28
+ ```yaml
29
+ ---
30
+ skill: <slug>
31
+ source: <url-or-skill-creator>
32
+ findings_json: <inline-JSON-or-path-to-.scan-meta.json>
33
+ justification: <free-text explaining why operator accepts the verdict>
34
+ approver: <git config user.email>
35
+ scanner_version: 0.1.0
36
+ rule_pack_sha256: <prefix ≥ 8 chars from .scan-meta.json>
37
+ verdict: HIGH-RISK | REVIEW
38
+ timestamp: <ISO-8601>
39
+ ---
40
+
41
+ # Override: <skill-slug>
42
+
43
+ ## Findings (verdict: <verdict>)
44
+ <path to .scan-meta.json — see "PII safety" below>
45
+
46
+ ## Justification
47
+ <free-text rationale>
48
+ ```
49
+
50
+ ## Operator workflow
51
+
52
+ 1. Operator hits HIGH-RISK on a third-party skill they want to install.
53
+ 2. Scanner emits findings + suggested override-artifact path + the runtime
54
+ path to the redacted `.scan-meta.json` (printed on stdout).
55
+ 3. Operator inspects the findings, decides override is appropriate.
56
+ 4. Operator creates the artifact (manual or via `skill-creator` Step 5):
57
+
58
+ ```bash
59
+ cat > knowledge-base/engineering/security/skill-overrides/$(date -u +%Y-%m-%d)-<slug>.md <<EOF
60
+ ---
61
+ skill: <slug>
62
+ source: <where-the-skill-came-from>
63
+ findings_json: <path-to-redacted-.scan-meta.json>
64
+ justification: <rationale>
65
+ approver: $(git config user.email)
66
+ scanner_version: 0.1.0
67
+ rule_pack_sha256: <prefix-from-scan-meta>
68
+ verdict: HIGH-RISK
69
+ timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)
70
+ ---
71
+
72
+ # Override: <slug>
73
+
74
+ ## Findings
75
+ <path to .scan-meta.json>
76
+
77
+ ## Justification
78
+ <text>
79
+ EOF
80
+ ```
81
+
82
+ 5. Operator commits the artifact in the same PR as the skill install.
83
+ 6. CI pre-merge gate (job `skill-security-scan` in `pr-quality-guards.yml`) and the PreToolUse
84
+ hook on Write run `parse-override.sh` to validate. Valid artifact → install
85
+ accepted.
86
+
87
+ ### PII safety — findings provenance
88
+
89
+ The `findings_json` field MUST carry **redacted bytes from the persisted
90
+ `.scan-meta.json`** — never an inline copy typed from scanner stdout. Reason:
91
+ scanner stdout (which the operator sees during review) is intentionally
92
+ unredacted for in-terminal inspection; the persisted `.scan-meta.json` runs
93
+ through `redact_pii()` (email, IPv4, IBAN, JWT, Anthropic/OpenAI keys, GitHub
94
+ PAT/OAuth, GitLab PAT, Doppler tokens, Slack tokens, AWS keys). Copy-pasting
95
+ from terminal scrollback lands raw PII / secrets in a permanent git artifact
96
+ retained "for repository lifetime" per Art. 32 evidence retention. The
97
+ path form is the default because it cannot be mis-pasted.
98
+
99
+ `parse-override.sh` enforces this: artifacts whose body contains a raw email
100
+ pattern outside the `approver:` field are rejected with `invalid_schema`.
101
+
102
+ The path form is valid only inside the retention window: the scanner's startup
103
+ reap removes `skill-security-scan-*` dirs older than `SKILL_SCAN_META_REAP_MIN`
104
+ minutes (default 10080 = 7 days), and `$XDG_RUNTIME_DIR` is cleared on logout
105
+ regardless (#6789, #6760). For a reference that must outlive the window, embed
106
+ the findings inline — the schema's `oneOf` admits an object form — copied from
107
+ the **redacted `.scan-meta.json`**, never from scanner stdout (the mandate
108
+ above is about where the bytes come from, not the YAML shape). Two mechanics
109
+ matter: the presence check (#10167) counts `findings_json` present iff the
110
+ `findings_json:` key line carries non-whitespace, non-null content OR a
111
+ following *indented* line does before the block ends — so both the inline
112
+ `findings_json: {…}` form and the block mapping (`findings_json:` then
113
+ indented `key: value` lines) are accepted, while `findings_json:` bare,
114
+ whitespace-only, `null`/`~`, a same-line comment (`findings_json: # …`,
115
+ reads as null), or `findings_json:{…}` (no separation space — YAML reads that
116
+ as a scalar, not a mapping) still report missing. And the
117
+ source bytes must still be the redacted file.
118
+
119
+ ## Multiple overrides per PR
120
+
121
+ A single PR may install multiple skills. Each skill's override is one artifact
122
+ file. `parse-override.sh` enumerates all matched artifacts independently;
123
+ there is no shared state.
124
+
125
+ ## Stale findings
126
+
127
+ If the rule pack updates between override creation and PR merge, the artifact's
128
+ `rule_pack_sha256` will no longer match the current `manifest.yaml` SHA.
129
+ `parse-override.sh` reports this as `stale_findings` and the CI gate fails with
130
+ an instruction to re-run the scan and update the artifact.
131
+
132
+ ## Retention
133
+
134
+ Override artifacts are retained for the **repository lifetime** as Article 32
135
+ evidence (GDPR Art. 6(1)(c) lawful basis: legal obligation; Art. 6(1)(f):
136
+ legitimate interest in maintaining audit trail). Future operators must NOT
137
+ bulk-delete them. PII in the embedded `findings_json` is redacted at scan-time
138
+ per `GDPR-DataMin-1` (email/IPv4/IBAN-shape).
139
+
140
+ ## Defense-in-depth
141
+
142
+ The override mechanism is the LAST gate. Earlier gates:
143
+
144
+ 1. **PreToolUse hook on Write** (`.claude/hooks/skill-security-scan-write.sh`)
145
+ — load-bearing tool-layer block on `HIGH-RISK without override artifact`.
146
+ 2. **Cooperative-fast-path in soleur:engineering:discovery:agent-finder §4b.5** — surfaces findings to
147
+ operator before the Write attempt.
148
+ 3. **Cooperative-fast-path in skill-creator Step 5** — same as above for
149
+ scaffold workflows.
150
+ 4. **Lefthook commit-time advisory** (`.claude/hooks/skill-security-scan.sh`)
151
+ — belt-and-suspenders for IDE / manual `git commit` paths.
152
+ 5. **CI pre-merge required check** (job `skill-security-scan` in `pr-quality-guards.yml`) —
153
+ Layer C: blocks merge if any new HIGH-RISK skill install lacks a valid
154
+ override artifact.
155
+ 6. **CI post-merge audit** (`skill-security-scan-postmerge.yml`) — Layer D:
156
+ re-validates on push to main. Auto-files `compliance/critical` issue if
157
+ pre-merge gate was bypassed via admin merge or force-push.
158
+ 7. **Branch protection** — `main` requires the `skill-security-scan PR gate` check (job `skill-security-scan` in `pr-quality-guards.yml`)
159
+ pre-merge status check. Bypassing requires explicit admin action that
160
+ auto-files a compliance issue.
161
+
162
+ ## Future extensions (NOT implemented in v1)
163
+
164
+ The original brainstorm and CTO Decision 12 contemplated a `soleur:plan`-aware
165
+ skip-and-warn mode for the scanner. Phase 6 of the plan removed this for v1
166
+ because `soleur:plan` does not scaffold or fetch skills — those code paths
167
+ live in `skill-creator` and `soleur:engineering:discovery:agent-finder` only. If a future plan-time
168
+ scaffolding workflow emerges, re-evaluate this design with a tracking issue.
169
+ The `SKILL_SECURITY_SCAN_PLAN_MODE` env-flag idea is preserved here as
170
+ documented future-extension guidance only; it is not implemented in this v1
171
+ release.