@heytherevibin/skillforge 0.2.1

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 (402) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/CODE_OF_CONDUCT.md +34 -0
  3. package/CONTRIBUTING.md +38 -0
  4. package/LICENSE +21 -0
  5. package/README.md +337 -0
  6. package/RELEASING.md +93 -0
  7. package/SECURITY.md +31 -0
  8. package/STRATEGY.md +26 -0
  9. package/bin/cli.js +547 -0
  10. package/lib/packs.js +184 -0
  11. package/package.json +38 -0
  12. package/python/app/__init__.py +0 -0
  13. package/python/app/__pycache__/__init__.cpython-312.pyc +0 -0
  14. package/python/app/__pycache__/auth.cpython-312.pyc +0 -0
  15. package/python/app/__pycache__/main.cpython-312.pyc +0 -0
  16. package/python/app/auth.py +63 -0
  17. package/python/app/cli.py +78 -0
  18. package/python/app/db_paths.py +26 -0
  19. package/python/app/events_cli.py +175 -0
  20. package/python/app/main.py +647 -0
  21. package/python/app/materialize.py +138 -0
  22. package/python/app/mcp_server.py +610 -0
  23. package/python/app/route_cli.py +117 -0
  24. package/python/requirements-dev.txt +1 -0
  25. package/python/requirements.txt +7 -0
  26. package/python/tests/test_db_paths.py +41 -0
  27. package/skills/accessibility/SKILL.md +145 -0
  28. package/skills/agent-architecture-audit/SKILL.md +256 -0
  29. package/skills/agent-eval/SKILL.md +144 -0
  30. package/skills/agent-harness-construction/SKILL.md +72 -0
  31. package/skills/agent-introspection-debugging/SKILL.md +152 -0
  32. package/skills/agent-payment-x402/SKILL.md +224 -0
  33. package/skills/agent-sort/SKILL.md +214 -0
  34. package/skills/agentic-engineering/SKILL.md +62 -0
  35. package/skills/agentic-os/SKILL.md +386 -0
  36. package/skills/ai-first-engineering/SKILL.md +50 -0
  37. package/skills/ai-regression-testing/SKILL.md +384 -0
  38. package/skills/android-clean-architecture/SKILL.md +338 -0
  39. package/skills/angular-developer/SKILL.md +153 -0
  40. package/skills/angular-developer/references/angular-animations.md +160 -0
  41. package/skills/angular-developer/references/angular-aria.md +410 -0
  42. package/skills/angular-developer/references/cli.md +86 -0
  43. package/skills/angular-developer/references/component-harnesses.md +59 -0
  44. package/skills/angular-developer/references/component-styling.md +91 -0
  45. package/skills/angular-developer/references/components.md +117 -0
  46. package/skills/angular-developer/references/creating-services.md +97 -0
  47. package/skills/angular-developer/references/data-resolvers.md +69 -0
  48. package/skills/angular-developer/references/define-routes.md +67 -0
  49. package/skills/angular-developer/references/defining-providers.md +72 -0
  50. package/skills/angular-developer/references/di-fundamentals.md +120 -0
  51. package/skills/angular-developer/references/e2e-testing.md +56 -0
  52. package/skills/angular-developer/references/effects.md +83 -0
  53. package/skills/angular-developer/references/hierarchical-injectors.md +43 -0
  54. package/skills/angular-developer/references/host-elements.md +80 -0
  55. package/skills/angular-developer/references/injection-context.md +63 -0
  56. package/skills/angular-developer/references/inputs.md +101 -0
  57. package/skills/angular-developer/references/linked-signal.md +59 -0
  58. package/skills/angular-developer/references/loading-strategies.md +61 -0
  59. package/skills/angular-developer/references/mcp.md +108 -0
  60. package/skills/angular-developer/references/navigate-to-routes.md +69 -0
  61. package/skills/angular-developer/references/outputs.md +86 -0
  62. package/skills/angular-developer/references/reactive-forms.md +122 -0
  63. package/skills/angular-developer/references/rendering-strategies.md +44 -0
  64. package/skills/angular-developer/references/resource.md +77 -0
  65. package/skills/angular-developer/references/route-animations.md +56 -0
  66. package/skills/angular-developer/references/route-guards.md +52 -0
  67. package/skills/angular-developer/references/router-lifecycle.md +45 -0
  68. package/skills/angular-developer/references/router-testing.md +87 -0
  69. package/skills/angular-developer/references/show-routes-with-outlets.md +68 -0
  70. package/skills/angular-developer/references/signal-forms.md +795 -0
  71. package/skills/angular-developer/references/signals-overview.md +94 -0
  72. package/skills/angular-developer/references/tailwind-css.md +69 -0
  73. package/skills/angular-developer/references/template-driven-forms.md +114 -0
  74. package/skills/angular-developer/references/testing-fundamentals.md +65 -0
  75. package/skills/api-connector-builder/SKILL.md +120 -0
  76. package/skills/api-design/SKILL.md +522 -0
  77. package/skills/architecture-decision-records/SKILL.md +178 -0
  78. package/skills/article-writing/SKILL.md +78 -0
  79. package/skills/automation-audit-ops/SKILL.md +141 -0
  80. package/skills/autonomous-agent-harness/SKILL.md +272 -0
  81. package/skills/autonomous-loops/SKILL.md +609 -0
  82. package/skills/backend-patterns/SKILL.md +560 -0
  83. package/skills/benchmark/SKILL.md +92 -0
  84. package/skills/blueprint/SKILL.md +104 -0
  85. package/skills/browser-qa/SKILL.md +86 -0
  86. package/skills/bun-runtime/SKILL.md +83 -0
  87. package/skills/canary-watch/SKILL.md +98 -0
  88. package/skills/carrier-relationship-management/SKILL.md +211 -0
  89. package/skills/cisco-ios-patterns/SKILL.md +163 -0
  90. package/skills/ck/SKILL.md +147 -0
  91. package/skills/ck/commands/forget.mjs +44 -0
  92. package/skills/ck/commands/info.mjs +24 -0
  93. package/skills/ck/commands/init.mjs +143 -0
  94. package/skills/ck/commands/list.mjs +40 -0
  95. package/skills/ck/commands/migrate.mjs +202 -0
  96. package/skills/ck/commands/resume.mjs +36 -0
  97. package/skills/ck/commands/save.mjs +210 -0
  98. package/skills/ck/commands/shared.mjs +387 -0
  99. package/skills/ck/hooks/session-start.mjs +224 -0
  100. package/skills/claude-devfleet/SKILL.md +103 -0
  101. package/skills/click-path-audit/SKILL.md +244 -0
  102. package/skills/clickhouse-io/SKILL.md +438 -0
  103. package/skills/code-tour/SKILL.md +235 -0
  104. package/skills/codebase-onboarding/SKILL.md +232 -0
  105. package/skills/coding-standards/SKILL.md +548 -0
  106. package/skills/compose-multiplatform-patterns/SKILL.md +298 -0
  107. package/skills/connections-optimizer/SKILL.md +188 -0
  108. package/skills/content-engine/SKILL.md +126 -0
  109. package/skills/content-hash-cache-pattern/SKILL.md +160 -0
  110. package/skills/context-budget/SKILL.md +134 -0
  111. package/skills/continuous-agent-loop/SKILL.md +44 -0
  112. package/skills/continuous-learning/SKILL.md +129 -0
  113. package/skills/continuous-learning/config.json +18 -0
  114. package/skills/continuous-learning/evaluate-session.sh +69 -0
  115. package/skills/continuous-learning-v2/SKILL.md +358 -0
  116. package/skills/continuous-learning-v2/agents/observer-loop.sh +322 -0
  117. package/skills/continuous-learning-v2/agents/observer.md +198 -0
  118. package/skills/continuous-learning-v2/agents/session-guardian.sh +150 -0
  119. package/skills/continuous-learning-v2/agents/start-observer.sh +248 -0
  120. package/skills/continuous-learning-v2/config.json +8 -0
  121. package/skills/continuous-learning-v2/hooks/observe.sh +476 -0
  122. package/skills/continuous-learning-v2/scripts/detect-project.sh +288 -0
  123. package/skills/continuous-learning-v2/scripts/instinct-cli.py +1519 -0
  124. package/skills/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  125. package/skills/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  126. package/skills/continuous-learning-v2/scripts/test_parse_instinct.py +1018 -0
  127. package/skills/cost-aware-llm-pipeline/SKILL.md +182 -0
  128. package/skills/cost-tracking/SKILL.md +147 -0
  129. package/skills/council/SKILL.md +202 -0
  130. package/skills/cpp-coding-standards/SKILL.md +722 -0
  131. package/skills/cpp-testing/SKILL.md +323 -0
  132. package/skills/crosspost/SKILL.md +110 -0
  133. package/skills/csharp-testing/SKILL.md +320 -0
  134. package/skills/customer-billing-ops/SKILL.md +139 -0
  135. package/skills/customs-trade-compliance/SKILL.md +262 -0
  136. package/skills/dart-flutter-patterns/SKILL.md +562 -0
  137. package/skills/dashboard-builder/SKILL.md +108 -0
  138. package/skills/data-scraper-agent/SKILL.md +764 -0
  139. package/skills/database-migrations/SKILL.md +428 -0
  140. package/skills/deep-research/SKILL.md +158 -0
  141. package/skills/defi-amm-security/SKILL.md +166 -0
  142. package/skills/deployment-patterns/SKILL.md +426 -0
  143. package/skills/design-system/SKILL.md +81 -0
  144. package/skills/django-celery/SKILL.md +456 -0
  145. package/skills/django-patterns/SKILL.md +733 -0
  146. package/skills/django-security/SKILL.md +592 -0
  147. package/skills/django-tdd/SKILL.md +728 -0
  148. package/skills/django-verification/SKILL.md +468 -0
  149. package/skills/dmux-workflows/SKILL.md +190 -0
  150. package/skills/docker-patterns/SKILL.md +363 -0
  151. package/skills/documentation-lookup/SKILL.md +89 -0
  152. package/skills/dotnet-patterns/SKILL.md +320 -0
  153. package/skills/e2e-testing/SKILL.md +325 -0
  154. package/skills/email-ops/SKILL.md +120 -0
  155. package/skills/energy-procurement/SKILL.md +227 -0
  156. package/skills/enterprise-agent-ops/SKILL.md +49 -0
  157. package/skills/error-handling/SKILL.md +375 -0
  158. package/skills/eval-harness/SKILL.md +269 -0
  159. package/skills/evm-token-decimals/SKILL.md +130 -0
  160. package/skills/exa-search/SKILL.md +106 -0
  161. package/skills/fal-ai-media/SKILL.md +287 -0
  162. package/skills/fastapi-patterns/SKILL.md +327 -0
  163. package/skills/finance-billing-ops/SKILL.md +126 -0
  164. package/skills/flox-environments/SKILL.md +496 -0
  165. package/skills/flutter-dart-code-review/SKILL.md +434 -0
  166. package/skills/foundation-models-on-device/SKILL.md +243 -0
  167. package/skills/frontend-design-direction/SKILL.md +92 -0
  168. package/skills/frontend-patterns/SKILL.md +641 -0
  169. package/skills/frontend-slides/SKILL.md +183 -0
  170. package/skills/frontend-slides/STYLE_PRESETS.md +330 -0
  171. package/skills/frontend-slides/animation-patterns.md +122 -0
  172. package/skills/frontend-slides/html-template.md +419 -0
  173. package/skills/frontend-slides/scripts/export-pdf.sh +418 -0
  174. package/skills/frontend-slides/scripts/extract-pptx.py +96 -0
  175. package/skills/frontend-slides/viewport-base.css +153 -0
  176. package/skills/fsharp-testing/SKILL.md +279 -0
  177. package/skills/gan-style-harness/SKILL.md +278 -0
  178. package/skills/gateguard/SKILL.md +125 -0
  179. package/skills/git-workflow/SKILL.md +714 -0
  180. package/skills/github-ops/SKILL.md +143 -0
  181. package/skills/golang-patterns/SKILL.md +673 -0
  182. package/skills/golang-testing/SKILL.md +719 -0
  183. package/skills/google-workspace-ops/SKILL.md +94 -0
  184. package/skills/healthcare-cdss-patterns/SKILL.md +245 -0
  185. package/skills/healthcare-emr-patterns/SKILL.md +159 -0
  186. package/skills/healthcare-eval-harness/SKILL.md +207 -0
  187. package/skills/healthcare-phi-compliance/SKILL.md +145 -0
  188. package/skills/hermes-imports/SKILL.md +87 -0
  189. package/skills/hexagonal-architecture/SKILL.md +275 -0
  190. package/skills/hipaa-compliance/SKILL.md +78 -0
  191. package/skills/homelab-network-readiness/SKILL.md +169 -0
  192. package/skills/homelab-network-setup/SKILL.md +129 -0
  193. package/skills/homelab-pihole-dns/SKILL.md +274 -0
  194. package/skills/homelab-vlan-segmentation/SKILL.md +311 -0
  195. package/skills/homelab-wireguard-vpn/SKILL.md +305 -0
  196. package/skills/hookify-rules/SKILL.md +128 -0
  197. package/skills/inventory-demand-planning/SKILL.md +246 -0
  198. package/skills/investor-materials/SKILL.md +95 -0
  199. package/skills/investor-outreach/SKILL.md +90 -0
  200. package/skills/ios-icon-gen/SKILL.md +157 -0
  201. package/skills/ios-icon-gen/scripts/generate_icons.swift +258 -0
  202. package/skills/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  203. package/skills/iterative-retrieval/SKILL.md +209 -0
  204. package/skills/java-coding-standards/SKILL.md +382 -0
  205. package/skills/jira-integration/SKILL.md +292 -0
  206. package/skills/jpa-patterns/SKILL.md +150 -0
  207. package/skills/knowledge-ops/SKILL.md +153 -0
  208. package/skills/kotlin-coroutines-flows/SKILL.md +283 -0
  209. package/skills/kotlin-exposed-patterns/SKILL.md +718 -0
  210. package/skills/kotlin-ktor-patterns/SKILL.md +688 -0
  211. package/skills/kotlin-patterns/SKILL.md +710 -0
  212. package/skills/kotlin-testing/SKILL.md +823 -0
  213. package/skills/laravel-patterns/SKILL.md +414 -0
  214. package/skills/laravel-plugin-discovery/SKILL.md +228 -0
  215. package/skills/laravel-security/SKILL.md +284 -0
  216. package/skills/laravel-tdd/SKILL.md +282 -0
  217. package/skills/laravel-verification/SKILL.md +178 -0
  218. package/skills/lead-intelligence/SKILL.md +320 -0
  219. package/skills/lead-intelligence/agents/enrichment-agent.md +85 -0
  220. package/skills/lead-intelligence/agents/mutual-mapper.md +75 -0
  221. package/skills/lead-intelligence/agents/outreach-drafter.md +98 -0
  222. package/skills/lead-intelligence/agents/signal-scorer.md +60 -0
  223. package/skills/liquid-glass-design/SKILL.md +279 -0
  224. package/skills/llm-trading-agent-security/SKILL.md +146 -0
  225. package/skills/logistics-exception-management/SKILL.md +221 -0
  226. package/skills/make-interfaces-feel-better/SKILL.md +151 -0
  227. package/skills/manim-video/SKILL.md +88 -0
  228. package/skills/manim-video/assets/network_graph_scene.py +52 -0
  229. package/skills/market-research/SKILL.md +74 -0
  230. package/skills/mcp-server-patterns/SKILL.md +68 -0
  231. package/skills/messages-ops/SKILL.md +103 -0
  232. package/skills/mle-workflow/SKILL.md +345 -0
  233. package/skills/motion-advanced/SKILL.md +596 -0
  234. package/skills/motion-foundations/SKILL.md +299 -0
  235. package/skills/motion-patterns/SKILL.md +435 -0
  236. package/skills/motion-ui/SKILL.md +574 -0
  237. package/skills/mysql-patterns/SKILL.md +411 -0
  238. package/skills/nanoclaw-repl/SKILL.md +32 -0
  239. package/skills/nestjs-patterns/SKILL.md +229 -0
  240. package/skills/netmiko-ssh-automation/SKILL.md +173 -0
  241. package/skills/network-bgp-diagnostics/SKILL.md +167 -0
  242. package/skills/network-config-validation/SKILL.md +210 -0
  243. package/skills/network-interface-health/SKILL.md +152 -0
  244. package/skills/nextjs-turbopack/SKILL.md +43 -0
  245. package/skills/nodejs-keccak256/SKILL.md +102 -0
  246. package/skills/nutrient-document-processing/SKILL.md +166 -0
  247. package/skills/nuxt4-patterns/SKILL.md +99 -0
  248. package/skills/openclaw-persona-forge/SKILL.md +288 -0
  249. package/skills/openclaw-persona-forge/gacha.py +224 -0
  250. package/skills/openclaw-persona-forge/gacha.sh +5 -0
  251. package/skills/openclaw-persona-forge/references/avatar-style.md +124 -0
  252. package/skills/openclaw-persona-forge/references/boundary-rules.md +53 -0
  253. package/skills/openclaw-persona-forge/references/error-handling.md +53 -0
  254. package/skills/openclaw-persona-forge/references/identity-tension.md +48 -0
  255. package/skills/openclaw-persona-forge/references/naming-system.md +39 -0
  256. package/skills/openclaw-persona-forge/references/output-template.md +166 -0
  257. package/skills/opensource-pipeline/SKILL.md +254 -0
  258. package/skills/perl-patterns/SKILL.md +503 -0
  259. package/skills/perl-security/SKILL.md +502 -0
  260. package/skills/perl-testing/SKILL.md +474 -0
  261. package/skills/plan-orchestrate/SKILL.md +253 -0
  262. package/skills/plankton-code-quality/SKILL.md +236 -0
  263. package/skills/postgres-patterns/SKILL.md +146 -0
  264. package/skills/product-capability/SKILL.md +140 -0
  265. package/skills/product-lens/SKILL.md +91 -0
  266. package/skills/production-audit/SKILL.md +206 -0
  267. package/skills/production-scheduling/SKILL.md +237 -0
  268. package/skills/project-flow-ops/SKILL.md +110 -0
  269. package/skills/prompt-optimizer/SKILL.md +398 -0
  270. package/skills/python-patterns/SKILL.md +749 -0
  271. package/skills/python-testing/SKILL.md +815 -0
  272. package/skills/pytorch-patterns/SKILL.md +395 -0
  273. package/skills/quality-nonconformance/SKILL.md +259 -0
  274. package/skills/quarkus-patterns/SKILL.md +721 -0
  275. package/skills/quarkus-security/SKILL.md +466 -0
  276. package/skills/quarkus-tdd/SKILL.md +810 -0
  277. package/skills/quarkus-verification/SKILL.md +478 -0
  278. package/skills/ralphinho-rfc-pipeline/SKILL.md +66 -0
  279. package/skills/redis-patterns/SKILL.md +402 -0
  280. package/skills/regex-vs-llm-structured-text/SKILL.md +219 -0
  281. package/skills/remotion-video-creation/SKILL.md +43 -0
  282. package/skills/remotion-video-creation/rules/3d.md +86 -0
  283. package/skills/remotion-video-creation/rules/animations.md +29 -0
  284. package/skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx +173 -0
  285. package/skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx +100 -0
  286. package/skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx +108 -0
  287. package/skills/remotion-video-creation/rules/assets.md +78 -0
  288. package/skills/remotion-video-creation/rules/audio.md +172 -0
  289. package/skills/remotion-video-creation/rules/calculate-metadata.md +104 -0
  290. package/skills/remotion-video-creation/rules/can-decode.md +75 -0
  291. package/skills/remotion-video-creation/rules/charts.md +58 -0
  292. package/skills/remotion-video-creation/rules/compositions.md +146 -0
  293. package/skills/remotion-video-creation/rules/display-captions.md +126 -0
  294. package/skills/remotion-video-creation/rules/extract-frames.md +229 -0
  295. package/skills/remotion-video-creation/rules/fonts.md +152 -0
  296. package/skills/remotion-video-creation/rules/get-audio-duration.md +58 -0
  297. package/skills/remotion-video-creation/rules/get-video-dimensions.md +68 -0
  298. package/skills/remotion-video-creation/rules/get-video-duration.md +58 -0
  299. package/skills/remotion-video-creation/rules/gifs.md +138 -0
  300. package/skills/remotion-video-creation/rules/images.md +130 -0
  301. package/skills/remotion-video-creation/rules/import-srt-captions.md +67 -0
  302. package/skills/remotion-video-creation/rules/lottie.md +67 -0
  303. package/skills/remotion-video-creation/rules/measuring-dom-nodes.md +34 -0
  304. package/skills/remotion-video-creation/rules/measuring-text.md +143 -0
  305. package/skills/remotion-video-creation/rules/sequencing.md +106 -0
  306. package/skills/remotion-video-creation/rules/tailwind.md +11 -0
  307. package/skills/remotion-video-creation/rules/text-animations.md +20 -0
  308. package/skills/remotion-video-creation/rules/timing.md +179 -0
  309. package/skills/remotion-video-creation/rules/transcribe-captions.md +19 -0
  310. package/skills/remotion-video-creation/rules/transitions.md +122 -0
  311. package/skills/remotion-video-creation/rules/trimming.md +52 -0
  312. package/skills/remotion-video-creation/rules/videos.md +171 -0
  313. package/skills/repo-scan/SKILL.md +78 -0
  314. package/skills/research-ops/SKILL.md +111 -0
  315. package/skills/returns-reverse-logistics/SKILL.md +239 -0
  316. package/skills/rules-distill/SKILL.md +263 -0
  317. package/skills/rules-distill/scripts/scan-rules.sh +58 -0
  318. package/skills/rules-distill/scripts/scan-skills.sh +129 -0
  319. package/skills/rust-patterns/SKILL.md +498 -0
  320. package/skills/rust-testing/SKILL.md +499 -0
  321. package/skills/safety-guard/SKILL.md +74 -0
  322. package/skills/santa-method/SKILL.md +306 -0
  323. package/skills/scientific-db-pubmed-database/SKILL.md +175 -0
  324. package/skills/scientific-db-uspto-database/SKILL.md +177 -0
  325. package/skills/scientific-pkg-gget/SKILL.md +166 -0
  326. package/skills/scientific-thinking-literature-review/SKILL.md +192 -0
  327. package/skills/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  328. package/skills/search-first/SKILL.md +181 -0
  329. package/skills/security-bounty-hunter/SKILL.md +99 -0
  330. package/skills/security-review/SKILL.md +502 -0
  331. package/skills/security-review/cloud-infrastructure-security.md +361 -0
  332. package/skills/seo/SKILL.md +153 -0
  333. package/skills/skill-comply/SKILL.md +57 -0
  334. package/skills/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  335. package/skills/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  336. package/skills/skill-comply/fixtures/tdd_spec.yaml +44 -0
  337. package/skills/skill-comply/prompts/classifier.md +24 -0
  338. package/skills/skill-comply/prompts/scenario_generator.md +62 -0
  339. package/skills/skill-comply/prompts/spec_generator.md +42 -0
  340. package/skills/skill-comply/pyproject.toml +15 -0
  341. package/skills/skill-comply/scripts/__init__.py +0 -0
  342. package/skills/skill-comply/scripts/classifier.py +85 -0
  343. package/skills/skill-comply/scripts/grader.py +124 -0
  344. package/skills/skill-comply/scripts/parser.py +107 -0
  345. package/skills/skill-comply/scripts/report.py +170 -0
  346. package/skills/skill-comply/scripts/run.py +127 -0
  347. package/skills/skill-comply/scripts/runner.py +186 -0
  348. package/skills/skill-comply/scripts/scenario_generator.py +70 -0
  349. package/skills/skill-comply/scripts/spec_generator.py +72 -0
  350. package/skills/skill-comply/scripts/utils.py +13 -0
  351. package/skills/skill-comply/tests/test_grader.py +197 -0
  352. package/skills/skill-comply/tests/test_parser.py +90 -0
  353. package/skills/skill-comply/tests/test_runner.py +172 -0
  354. package/skills/skill-scout/SKILL.md +139 -0
  355. package/skills/skill-stocktake/SKILL.md +193 -0
  356. package/skills/skill-stocktake/scripts/quick-diff.sh +87 -0
  357. package/skills/skill-stocktake/scripts/save-results.sh +56 -0
  358. package/skills/skill-stocktake/scripts/scan.sh +170 -0
  359. package/skills/social-graph-ranker/SKILL.md +153 -0
  360. package/skills/springboot-patterns/SKILL.md +313 -0
  361. package/skills/springboot-security/SKILL.md +271 -0
  362. package/skills/springboot-tdd/SKILL.md +157 -0
  363. package/skills/springboot-verification/SKILL.md +230 -0
  364. package/skills/strategic-compact/SKILL.md +129 -0
  365. package/skills/strategic-compact/suggest-compact.sh +54 -0
  366. package/skills/swift-actor-persistence/SKILL.md +142 -0
  367. package/skills/swift-concurrency-6-2/SKILL.md +216 -0
  368. package/skills/swift-protocol-di-testing/SKILL.md +189 -0
  369. package/skills/swiftui-patterns/SKILL.md +259 -0
  370. package/skills/tdd-workflow/SKILL.md +462 -0
  371. package/skills/team-builder/SKILL.md +166 -0
  372. package/skills/terminal-ops/SKILL.md +108 -0
  373. package/skills/tinystruct-patterns/SKILL.md +130 -0
  374. package/skills/tinystruct-patterns/references/architecture.md +77 -0
  375. package/skills/tinystruct-patterns/references/data-handling.md +35 -0
  376. package/skills/tinystruct-patterns/references/routing.md +57 -0
  377. package/skills/tinystruct-patterns/references/system-usage.md +74 -0
  378. package/skills/tinystruct-patterns/references/testing.md +59 -0
  379. package/skills/token-budget-advisor/SKILL.md +133 -0
  380. package/skills/ui-demo/SKILL.md +464 -0
  381. package/skills/ui-to-vue/SKILL.md +134 -0
  382. package/skills/unified-notifications-ops/SKILL.md +186 -0
  383. package/skills/verification-loop/SKILL.md +125 -0
  384. package/skills/video-editing/SKILL.md +309 -0
  385. package/skills/videodb/SKILL.md +373 -0
  386. package/skills/videodb/reference/api-reference.md +550 -0
  387. package/skills/videodb/reference/capture-reference.md +407 -0
  388. package/skills/videodb/reference/capture.md +101 -0
  389. package/skills/videodb/reference/editor.md +443 -0
  390. package/skills/videodb/reference/generative.md +331 -0
  391. package/skills/videodb/reference/rtstream-reference.md +564 -0
  392. package/skills/videodb/reference/rtstream.md +65 -0
  393. package/skills/videodb/reference/search.md +230 -0
  394. package/skills/videodb/reference/streaming.md +406 -0
  395. package/skills/videodb/reference/use-cases.md +118 -0
  396. package/skills/videodb/scripts/ws_listener.py +282 -0
  397. package/skills/visa-doc-translate/README.md +86 -0
  398. package/skills/visa-doc-translate/SKILL.md +117 -0
  399. package/skills/vite-patterns/SKILL.md +448 -0
  400. package/skills/windows-desktop-e2e/SKILL.md +787 -0
  401. package/skills/workspace-surface-audit/SKILL.md +124 -0
  402. package/skills/x-api/SKILL.md +233 -0
@@ -0,0 +1,253 @@
1
+ ---
2
+ name: plan-orchestrate
3
+ description: Read a plan document, decompose it into steps, design a per-step agent chain from the the toolset catalogue, and emit ready-to-paste /orchestrate custom prompts. Generative only — never invokes /orchestrate itself. Use when the user has a multi-step plan and wants to drive it through orchestrate without composing chains by hand.
4
+ origin: the toolset
5
+ ---
6
+
7
+ # Plan Orchestrate
8
+
9
+ Bridge a plan document to `/orchestrate custom` by emitting one ready-to-paste invocation per step. The skill is generative only — it never executes `/orchestrate`. The user pastes each line when ready.
10
+
11
+ ## When to Activate
12
+
13
+ - User has a multi-step plan document (PRD, RFC, implementation plan) and wants to drive it through `/orchestrate`.
14
+ - User says "orchestrate this plan", "give me orchestrate prompts for each step", "compose chains for this plan".
15
+ - A step-by-step plan exists but the user does not want to manually pick agents per step.
16
+
17
+ Skip when:
18
+ - The work is one ad-hoc step → call `/orchestrate custom` directly.
19
+ - The plan is unreadable or empty. Lack of explicit numbering alone is not a skip condition — see the "No clear steps" edge case below.
20
+
21
+ ## Inputs
22
+
23
+ ```
24
+ <plan-doc-path> [--lang=python|typescript|go|rust|cpp|java|kotlin|flutter|auto] [--scope=all|step:<n>|range:<a>-<b>] [--dry-run]
25
+ ```
26
+
27
+ - `<plan-doc-path>` — required; relative or absolute path (`@docs/...` accepted).
28
+ - `--lang` — reviewer language variant; defaults to `auto` (detected from project).
29
+ - `--scope` — limits emitted steps; defaults to `all`.
30
+ - `--dry-run` — print decomposition + chain rationale only; do not emit final prompts.
31
+
32
+ ## Authoritative `/orchestrate` shape (do not deviate)
33
+
34
+ ```
35
+ {ORCH_CMD} custom "<agent1>,<agent2>,...,<agentN>" "<task description>"
36
+ ```
37
+
38
+ Where `{ORCH_CMD}` is determined in Phase 0 (see below). The command string in the emitted output **always uses one concrete form** — never both, never a placeholder.
39
+
40
+ - `custom` is a sequential chain; each agent's HANDOFF feeds the next.
41
+ - Comma-separated agent list. No spaces preferred; one space tolerated.
42
+ - No `--mode` / `--gate` / `--agents=...` flags exist — never invent them.
43
+ - Agent names come from the catalogue in this skill. Embedded double quotes in the task description are escaped as `\"`.
44
+
45
+ ## the toolset install form and namespacing
46
+
47
+ Two install forms determine the prefix on **both** the slash command and every agent name. The two MUST stay in sync — one form per output, never mixed:
48
+
49
+ Let `<claude-home>` denote the Claude Code home directory: `~/.claude` on macOS/Linux, `%USERPROFILE%\.claude` on Windows. Resolve it the way the host platform resolves the user home directory (do not hardcode `~`).
50
+
51
+ | Form | Detection | `{ORCH_CMD}` | Agent name format |
52
+ |---|---|---|---|
53
+ | Legacy bare install | Above absent; agent files under `<claude-home>/agents/` | `/orchestrate` | `<name>` |
54
+
55
+
56
+ ## Available agent catalogue (must pick from these)
57
+
58
+ General:
59
+ - `planner` — requirement restatement, risk decomposition, step planning
60
+ - `architect` — architecture, system design, refactor proposals
61
+ - `tdd-guide` — write tests → implement → 80%+ coverage
62
+ - `code-reviewer` — generic code review
63
+ - `security-reviewer` — security audit, OWASP, secret leakage
64
+ - `refactor-cleaner` — dead code, duplicates, knip-class cleanup
65
+ - `doc-updater` — documentation, codemap, README
66
+ - `docs-lookup` — third-party library API lookups (Context7)
67
+ - `e2e-runner` — end-to-end test orchestration
68
+ - `database-reviewer` — PostgreSQL schema, migration, performance
69
+ - `harness-optimizer` — local agent harness configuration
70
+ - `loop-operator` — long-running autonomous loops
71
+ - `chief-of-staff` — multi-channel triage (rarely a fit for plan steps)
72
+
73
+ Build error resolvers:
74
+ - `build-error-resolver` (generic) / `cpp-build-resolver` / `go-build-resolver` / `java-build-resolver` / `kotlin-build-resolver` / `rust-build-resolver` / `pytorch-build-resolver`
75
+
76
+ Code reviewers:
77
+ - `python-reviewer` / `typescript-reviewer` / `go-reviewer` / `rust-reviewer` / `cpp-reviewer` / `java-reviewer` / `kotlin-reviewer` / `flutter-reviewer`
78
+
79
+ A misspelled agent name fails `/orchestrate`. Cross-check against this list before emitting.
80
+
81
+ ## How It Works
82
+
83
+ ### Phase 0 — Detect the toolset mode + language
84
+
85
+ 1. Read `<plan-doc-path>`. If missing or empty, report and stop.
86
+ 2. Detect the toolset install form once and freeze it into `SKILLFORGE_MODE`. Algorithm (run in order, stop at the first match):
87
+ 2. Else if `<claude-home>/agents/` exists and contains at least one the toolset agent file (e.g. `tdd-guide.md`, `code-reviewer.md`) → `SKILLFORGE_MODE=legacy`.
88
+ 3. Else → default to `SKILLFORGE_MODE=legacy` and emit a one-line warning at the top of the output: `> Warning: could not detect the toolset install; defaulting to legacy form. If you use the plugin install, edit the prefixes manually.`
89
+ 4. If both markers exist (mixed install), `plugin` wins — the plugin namespace is the only one that resolves agent names without fuzzy matching.
90
+
91
+ From this point on, every emitted line uses the matching prefix on **both** the slash command and every agent name. **Never emit both forms in the same output.**
92
+ 3. Resolve `--lang`. When `auto`, run a polyglot-aware detection:
93
+ - Probe markers: `pyproject.toml` / `uv.lock` / `requirements.txt` → python; `package.json` → typescript; `go.mod` → go; `Cargo.toml` → rust; `CMakeLists.txt` or top-level `*.cpp` → cpp; `pom.xml` / `build.gradle` (Java) → java; `build.gradle.kts` or top-level Kotlin → kotlin; `pubspec.yaml` → flutter.
94
+ - **Polyglot tie-break**: if more than one marker matches, pick the language whose source files outnumber the others (count via `git ls-files`, excluding `vendor/`, `node_modules/`, `dist/`, `build/`, `.venv/`, generated files, and obvious test fixtures). On a tie or when no language exceeds 60% of source files, set `lang=unknown`.
95
+ - No marker matched → set `lang=unknown`.
96
+ - `lang=unknown` is a sentinel — it is **not** an agent name. Phase 2 rules 4 and 5 turn it into `code-reviewer` / `build-error-resolver` at chain composition time.
97
+ 4. Detect a **PyTorch sub-profile**: when `lang=python` and any of `pyproject.toml` / `requirements.txt` / `uv.lock` declares a dependency on `torch`, set `pytorch=true`. This only affects `build` chain selection (Phase 2 rule below); the reviewer remains `python-reviewer`.
98
+
99
+ ### Phase 1 — Decompose steps
100
+
101
+ Identify "step units" in priority order:
102
+
103
+ 1. Explicit numbering: `## Step N` / `### Phase N` / `## N. ...` / top-level ordered list.
104
+ 2. A "Step" column in a table.
105
+ 3. `---`-separated blocks with verb-led headings.
106
+ 4. Otherwise treat each H2 as one step.
107
+
108
+ Per step extract `id` (1-based), `title` (≤ 80 chars), `intent` (1–3 sentences), `tags`.
109
+
110
+ ### Phase 2 — Tag and pick chain
111
+
112
+ Tag by intent (multi-tag allowed; chain built from primary + stacked secondaries):
113
+
114
+ Trigger words below are matched case-insensitively. Multilingual plans are supported by matching the word stems in any language as long as the meaning aligns with the listed English trigger words.
115
+
116
+ | Tag | Trigger words | Default chain |
117
+ |---|---|---|
118
+ | `design` | architecture, design, choose, evaluate, RFC | `planner,architect` |
119
+ | `plan` | plan, breakdown, milestone | `planner` |
120
+ | `impl` | implement, build, add, create, port | `tdd-guide,<lang>-reviewer` |
121
+ | `test` | test, coverage, e2e, integration | `tdd-guide,e2e-runner` |
122
+ | `refactor` | refactor, cleanup, dedupe, split | `architect,refactor-cleaner,<lang>-reviewer` |
123
+ | `migration` | migrate, upgrade, rewrite, port | `architect,tdd-guide,<lang>-reviewer` |
124
+ | `db` | schema, migration, index, SQL, Postgres, alembic, sqlmodel | `database-reviewer,<lang>-reviewer` |
125
+ | `security` | encrypt, auth, secret, OWASP, PII | `security-reviewer,<lang>-reviewer` |
126
+ | `build` | build, compile, lint failure, CI | `<lang>-build-resolver` (falls back to `build-error-resolver`) |
127
+ | `docs` | docs, readme, codemap, changelog | `doc-updater` |
128
+ | `lookup` | lookup, reference, API usage | `docs-lookup` |
129
+ | `review` | review, audit, verify | `<lang>-reviewer,code-reviewer` |
130
+ | `loop` | loop, autonomous, watchdog | `loop-operator` |
131
+
132
+ Chain composition rules:
133
+ 1. **Primary tag selection**: when a step matches multiple tags, the **first one in table order** (top of the table = highest priority) is the primary; the rest are secondaries. Composition rules 2 and 3 below handle specific multi-tag combinations explicitly; otherwise, append secondary chains in tag table order.
134
+ 2. `impl` + `security` → `tdd-guide,<lang>-reviewer,security-reviewer`.
135
+ 3. `impl` + `db` → `tdd-guide,database-reviewer,<lang>-reviewer`.
136
+ 4. **Deduplicate** the resulting chain (preserve first occurrence). E.g. `review` + `lang=unknown` would yield `code-reviewer,code-reviewer` after rule 5; deduplication collapses it to `code-reviewer`.
137
+ 5. `<lang>-reviewer` resolves to `code-reviewer` when `lang=unknown`.
138
+ 6. `<lang>-build-resolver` resolves to `build-error-resolver` when `lang=unknown`. **Special case**: if Phase 0 set `pytorch=true`, use `pytorch-build-resolver` for `build` chains regardless of `<lang>`. There is no `python-build-resolver`; `--lang=python` without `pytorch=true` resolves to `build-error-resolver`.
139
+ 7. **Zero-tag steps**: if no trigger word matches, set chain to `code-reviewer` and write `no tag matched; default review-only chain` under "Chain rationale".
140
+ 8. Chain length ≤ 4 after deduplication. If exceeded, drop weakest tag (`lookup` and `docs` first).
141
+ 9. Do not pair `planner` and `architect` in an `impl` chain (token waste). Pair them only on `design` steps.
142
+ 10. Steps tagged `impl`, `refactor`, or `migration` end with a **reviewer-class** agent — any of `<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`. The most domain-specific reviewer wins the tail position (e.g. rule 2's `impl+security` ends with `security-reviewer`; rule 3's `impl+db` ends with `<lang>-reviewer` because `database-reviewer` already gates the migration earlier in the chain). `test` and `build` steps are gated by their own validators (`e2e-runner` and the build resolver respectively) and do not require an additional reviewer.
143
+
144
+ ### Phase 3 — Compress task description
145
+
146
+ Each emitted `<task description>` must:
147
+ - Be self-contained (the first agent does not need the plan document open).
148
+ - Start with `[Plan: <path>#step-<id>]`.
149
+ - Include 1–3 verifiable Acceptance criteria.
150
+ - Include a Scope guard (`Out of scope: ...`) **only if the plan declares one for this step**. Inherit verbatim. If the plan has no out-of-scope statement, omit the clause entirely — do not invent one.
151
+ - Be 200–600 characters; one line; embedded `"` escaped as `\"`; no literal newlines.
152
+
153
+ ### Phase 4 — Output
154
+
155
+ Emit Markdown using **the form determined by `SKILLFORGE_MODE`**. The output uses one form throughout — every `{ORCH_CMD}` and every agent name is rendered with the matching prefix from Phase 0. **Do not emit both forms; do not include "this is plugin form" / "strip the prefix" instructions in the rendered output.**
156
+
157
+ Concrete rendering rules:
158
+
159
+ - The overview-table "Chain" column uses the same `{AGENT(name)}` rendering.
160
+ - Per-step bash blocks contain only the runnable command. **No `# plugin form` or `# legacy form` comments** — the form is implicit and uniform across the whole output.
161
+
162
+ Output structure:
163
+
164
+ ````markdown
165
+ # Plan-Orchestrate Result
166
+
167
+ **Plan**: `<path>`
168
+ **Lang**: `<detected-or-given>`
169
+ **the toolset mode**: `<plugin | legacy>`
170
+ **Steps**: <N>
171
+ **Scope**: <all | step:n | range:a-b>
172
+
173
+ ## Steps overview
174
+
175
+ | # | Title | Tags | Chain |
176
+ |---|---|---|---|
177
+ | 1 | ... | impl, db | `{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}` |
178
+ | ... | | | |
179
+
180
+ ---
181
+
182
+ ## Step 1 — <title>
183
+
184
+ **Intent**: <1–3 sentences>
185
+ **Tags**: <a, b>
186
+ **Chain rationale**: <why this chain; which agent closes the loop>
187
+
188
+ ```bash
189
+ {ORCH_CMD} custom "{AGENT(tdd-guide)},{AGENT(database-reviewer)},{AGENT(python-reviewer)}" "[Plan: docs/foo.md#step-1] <compressed task description>; Acceptance: <1–3 items>; Out of scope: <…>"
190
+ ```
191
+ ````
192
+
193
+ > The `{ORCH_CMD}` and `{AGENT(...)}` notation above describes the substitution this skill performs at runtime. The actual emitted Markdown contains the resolved strings, never the placeholders.
194
+
195
+ Append a final "Batch execution" block aggregating every step's command in order so the user can paste them all at once. **Skip the Batch block in overview-only mode** (see "Large plan" edge case): when only the overview table is being emitted, there are no per-step commands to aggregate.
196
+
197
+ ### Phase 5 — Self-check (run before emitting)
198
+
199
+ - [ ] Resolved `{ORCH_CMD}` and every resolved `{AGENT(...)}` use the **same** form (`plugin` or `legacy`) — never mixed in one output.
200
+ - [ ] No `# plugin form` / `# legacy form` annotations and no "strip the prefix" instructions remain in the rendered output.
201
+ - [ ] No invented `--mode` / `--gate` / `--agents=...` fields.
202
+ - [ ] Each task description is single-line, double-quoted, with embedded `"` escaped.
203
+ - [ ] Each task description begins with `[Plan: <path>#step-<id>]` and includes Acceptance (1–3 items). The `Out of scope:` clause is present only when inherited from the plan.
204
+ - [ ] No duplicate agent in any chain after Phase 2 dedup.
205
+ - [ ] Chain length ≤ 4.
206
+ - [ ] Steps tagged `impl`/`refactor`/`migration` end with a reviewer-class agent (`<lang>-reviewer`, `code-reviewer`, `security-reviewer`, or `database-reviewer`). `test` and `build` are exempt — see Phase 2 rule 10.
207
+ - [ ] Zero-tag steps emit `code-reviewer` with the rationale `no tag matched; default review-only chain`.
208
+ - [ ] Overview table lists every step in the plan, regardless of `--scope`.
209
+ - [ ] Per-step detail block count matches the resolved `--scope` (full plan when `--scope=all`; one block for `step:n`; range size for `range:a-b`). In overview-only mode, no per-step blocks and no Batch block are emitted.
210
+
211
+ ## Edge cases
212
+
213
+ - **No clear steps**: prefer H2/H3 splitting; if still ambiguous, report "no structured steps detected" with the document outline and ask the user to confirm running by outline.
214
+ - **Large plan (>1500 lines)**: enter **overview-only mode** — emit only the overview table and ask the user to narrow with `--scope` before re-running for details. In this mode, skip per-step detail blocks and skip the Batch execution block.
215
+ - **Step too broad** (e.g. "complete all backend work"): do not force a single chain. Suggest splitting into N.a and N.b and propose a split.
216
+ - **Polyglot project where `--lang=auto` cannot pick a winner**: set `lang=unknown`; reviewer resolves to `code-reviewer` and build resolver to `build-error-resolver`. Mention the fallback under "Chain rationale".
217
+
218
+ ## Examples
219
+
220
+ ### Example 1 — Plugin mode, Python plan
221
+
222
+ Input:
223
+ ```
224
+ plan-orchestrate @docs/plan/example-feature.md --lang=python
225
+ ```
226
+
227
+ Excerpt of expected output:
228
+ ````markdown
229
+ ## Step 2 — Encrypt sensitive UserProfile fields
230
+
231
+ **Intent**: Introduce an `EncryptedString` SQLAlchemy type and AES-GCM encrypt `birth_datetime` / `location` before persistence; load the key from an environment variable.
232
+ **Tags**: impl, security, db
233
+ **Chain rationale**: Security-sensitive write path, so `security-reviewer` closes the chain; `database-reviewer` validates the alembic migration; `python-reviewer` covers typing and PEP 8.
234
+
235
+ ```bash
236
+ ```
237
+ ````
238
+
239
+ ### Example 2 — Legacy mode, same step
240
+
241
+ If `SKILLFORGE_MODE=legacy` were detected, the same step would be emitted as a single uniform command (no plugin-prefixed forms anywhere in the output):
242
+
243
+ ```bash
244
+ /orchestrate custom "tdd-guide,database-reviewer,python-reviewer,security-reviewer" "[Plan: docs/plan/example-feature.md#step-2] ..."
245
+ ```
246
+
247
+ The two examples above illustrate **the two possible outputs** for two different environments. A single skill invocation produces only one of them, end to end.
248
+
249
+ ## Notes
250
+
251
+ - Generative only. Never invoke `/orchestrate` from inside this skill.
252
+ - Match the language of the plan document for task descriptions (agent names always remain English).
253
+ - Do not insert "Co-Authored-By" lines or emoji in the output unless the user explicitly asks.
@@ -0,0 +1,236 @@
1
+ ---
2
+ name: plankton-code-quality
3
+ description: "Write-time code quality enforcement using Plankton — auto-formatting, linting, and Claude-powered fixes on every file edit via hooks."
4
+ origin: community
5
+ ---
6
+
7
+ # Plankton Code Quality Skill
8
+
9
+ Integration reference for Plankton (credit: @alxfazio), a write-time code quality enforcement system for Claude Code. Plankton runs formatters and linters on every file edit via PostToolUse hooks, then spawns Claude subprocesses to fix violations the agent didn't catch.
10
+
11
+ ## When to Use
12
+
13
+ - You want automatic formatting and linting on every file edit (not just at commit time)
14
+ - You need defense against agents modifying linter configs to pass instead of fixing code
15
+ - You want tiered model routing for fixes (Haiku for simple style, Sonnet for logic, Opus for types)
16
+ - You work with multiple languages (Python, TypeScript, Shell, YAML, JSON, TOML, Markdown, Dockerfile)
17
+
18
+ ## How It Works
19
+
20
+ ### Three-Phase Architecture
21
+
22
+ Every time Claude Code edits or writes a file, Plankton's `multi_linter.sh` PostToolUse hook runs:
23
+
24
+ ```
25
+ Phase 1: Auto-Format (Silent)
26
+ ├─ Runs formatters (ruff format, biome, shfmt, taplo, markdownlint)
27
+ ├─ Fixes 40-50% of issues silently
28
+ └─ No output to main agent
29
+
30
+ Phase 2: Collect Violations (JSON)
31
+ ├─ Runs linters and collects unfixable violations
32
+ ├─ Returns structured JSON: {line, column, code, message, linter}
33
+ └─ Still no output to main agent
34
+
35
+ Phase 3: Delegate + Verify
36
+ ├─ Spawns claude -p subprocess with violations JSON
37
+ ├─ Routes to model tier based on violation complexity:
38
+ │ ├─ Haiku: formatting, imports, style (E/W/F codes) — 120s timeout
39
+ │ ├─ Sonnet: complexity, refactoring (C901, PLR codes) — 300s timeout
40
+ │ └─ Opus: type system, deep reasoning (unresolved-attribute) — 600s timeout
41
+ ├─ Re-runs Phase 1+2 to verify fixes
42
+ └─ Exit 0 if clean, Exit 2 if violations remain (reported to main agent)
43
+ ```
44
+
45
+ ### What the Main Agent Sees
46
+
47
+ | Scenario | Agent sees | Hook exit |
48
+ |----------|-----------|-----------|
49
+ | No violations | Nothing | 0 |
50
+ | All fixed by subprocess | Nothing | 0 |
51
+ | Violations remain after subprocess | `[hook] N violation(s) remain` | 2 |
52
+ | Advisory (duplicates, old tooling) | `[hook:advisory] ...` | 0 |
53
+
54
+ The main agent only sees issues the subprocess couldn't fix. Most quality problems are resolved transparently.
55
+
56
+ ### Config Protection (Defense Against Rule-Gaming)
57
+
58
+ LLMs will modify `.ruff.toml` or `biome.json` to disable rules rather than fix code. Plankton blocks this with three layers:
59
+
60
+ 1. **PreToolUse hook** — `protect_linter_configs.sh` blocks edits to all linter configs before they happen
61
+ 2. **Stop hook** — `stop_config_guardian.sh` detects config changes via `git diff` at session end
62
+ 3. **Protected files list** — `.ruff.toml`, `biome.json`, `.shellcheckrc`, `.yamllint`, `.hadolint.yaml`, and more
63
+
64
+ ### Package Manager Enforcement
65
+
66
+ A PreToolUse hook on Bash blocks legacy package managers:
67
+ - `pip`, `pip3`, `poetry`, `pipenv` → Blocked (use `uv`)
68
+ - `npm`, `yarn`, `pnpm` → Blocked (use `bun`)
69
+ - Allowed exceptions: `npm audit`, `npm view`, `npm publish`
70
+
71
+ ## Setup
72
+
73
+ ### Quick Start
74
+
75
+ > **Note:** Plankton requires manual installation from its repository. Review the code before installing.
76
+
77
+ ```bash
78
+ # Install core dependencies
79
+ brew install jaq ruff uv
80
+
81
+ # Install Python linters
82
+ uv sync --all-extras
83
+
84
+ # Start Claude Code — hooks activate automatically
85
+ claude
86
+ ```
87
+
88
+ No install command, no plugin config. The hooks in `.claude/settings.json` are picked up automatically when you run Claude Code in the Plankton directory.
89
+
90
+ ### Per-Project Integration
91
+
92
+ To use Plankton hooks in your own project:
93
+
94
+ 1. Copy `.claude/hooks/` directory to your project
95
+ 2. Copy `.claude/settings.json` hook configuration
96
+ 3. Copy linter config files (`.ruff.toml`, `biome.json`, etc.)
97
+ 4. Install the linters for your languages
98
+
99
+ ### Language-Specific Dependencies
100
+
101
+ | Language | Required | Optional |
102
+ |----------|----------|----------|
103
+ | Python | `ruff`, `uv` | `ty` (types), `vulture` (dead code), `bandit` (security) |
104
+ | TypeScript/JS | `biome` | `oxlint`, `semgrep`, `knip` (dead exports) |
105
+ | Shell | `shellcheck`, `shfmt` | — |
106
+ | YAML | `yamllint` | — |
107
+ | Markdown | `markdownlint-cli2` | — |
108
+ | Dockerfile | `hadolint` (>= 2.12.0) | — |
109
+ | TOML | `taplo` | — |
110
+ | JSON | `jaq` | — |
111
+
112
+ ## Pairing with the toolset
113
+
114
+ ### Complementary, Not Overlapping
115
+
116
+ | Concern | the toolset | Plankton |
117
+ |---------|-----|----------|
118
+ | Code quality enforcement | PostToolUse hooks (Prettier, tsc) | PostToolUse hooks (20+ linters + subprocess fixes) |
119
+ | Security scanning | the security scanner, security-reviewer agent | Bandit (Python), Semgrep (TypeScript) |
120
+ | Config protection | — | PreToolUse blocks + Stop hook detection |
121
+ | Package manager | Detection + setup | Enforcement (blocks legacy PMs) |
122
+ | CI integration | — | Pre-commit hooks for git |
123
+ | Model routing | Manual (`/model opus`) | Automatic (violation complexity → tier) |
124
+
125
+ ### Recommended Combination
126
+
127
+ 1. Install the toolset as your plugin (agents, skills, commands, rules)
128
+ 2. Add Plankton hooks for write-time quality enforcement
129
+ 3. Use the security scanner for security audits
130
+ 4. Use the toolset's verification-loop as a final gate before PRs
131
+
132
+ ### Avoiding Hook Conflicts
133
+
134
+ If running both the toolset and Plankton hooks:
135
+ - the toolset's Prettier hook and Plankton's biome formatter may conflict on JS/TS files
136
+ - Resolution: disable the toolset's Prettier PostToolUse hook when using Plankton (Plankton's biome is more comprehensive)
137
+ - Both can coexist on different file types (the toolset handles what Plankton doesn't cover)
138
+
139
+ ## Configuration Reference
140
+
141
+ Plankton's `.claude/hooks/config.json` controls all behavior:
142
+
143
+ ```json
144
+ {
145
+ "languages": {
146
+ "python": true,
147
+ "shell": true,
148
+ "yaml": true,
149
+ "json": true,
150
+ "toml": true,
151
+ "dockerfile": true,
152
+ "markdown": true,
153
+ "typescript": {
154
+ "enabled": true,
155
+ "js_runtime": "auto",
156
+ "biome_nursery": "warn",
157
+ "semgrep": true
158
+ }
159
+ },
160
+ "phases": {
161
+ "auto_format": true,
162
+ "subprocess_delegation": true
163
+ },
164
+ "subprocess": {
165
+ "tiers": {
166
+ "haiku": { "timeout": 120, "max_turns": 10 },
167
+ "sonnet": { "timeout": 300, "max_turns": 10 },
168
+ "opus": { "timeout": 600, "max_turns": 15 }
169
+ },
170
+ "volume_threshold": 5
171
+ }
172
+ }
173
+ ```
174
+
175
+ **Key settings:**
176
+ - Disable languages you don't use to speed up hooks
177
+ - `volume_threshold` — violations > this count auto-escalate to a higher model tier
178
+ - `subprocess_delegation: false` — skip Phase 3 entirely (just report violations)
179
+
180
+ ## Environment Overrides
181
+
182
+ | Variable | Purpose |
183
+ |----------|---------|
184
+ | `HOOK_SKIP_SUBPROCESS=1` | Skip Phase 3, report violations directly |
185
+ | `HOOK_SUBPROCESS_TIMEOUT=N` | Override tier timeout |
186
+ | `HOOK_DEBUG_MODEL=1` | Log model selection decisions |
187
+ | `HOOK_SKIP_PM=1` | Bypass package manager enforcement |
188
+
189
+ ## References
190
+
191
+ - Plankton (credit: @alxfazio)
192
+ - Plankton REFERENCE.md — Full architecture documentation (credit: @alxfazio)
193
+ - Plankton SETUP.md — Detailed installation guide (credit: @alxfazio)
194
+
195
+ ## the toolset v1.8 Additions
196
+
197
+ ### Copyable Hook Profile
198
+
199
+ Set strict quality behavior:
200
+
201
+ ```bash
202
+ export SKILLFORGE_HOOK_PROFILE=strict
203
+ export SKILLFORGE_QUALITY_GATE_FIX=true
204
+ export SKILLFORGE_QUALITY_GATE_STRICT=true
205
+ ```
206
+
207
+ ### Language Gate Table
208
+
209
+ - TypeScript/JavaScript: Biome preferred, Prettier fallback
210
+ - Python: Ruff format/check
211
+ - Go: gofmt
212
+
213
+ ### Config Tamper Guard
214
+
215
+ During quality enforcement, flag changes to config files in same iteration:
216
+
217
+ - `biome.json`, `.eslintrc*`, `prettier.config*`, `tsconfig.json`, `pyproject.toml`
218
+
219
+ If config is changed to suppress violations, require explicit review before merge.
220
+
221
+ ### CI Integration Pattern
222
+
223
+ Use the same commands in CI as local hooks:
224
+
225
+ 1. run formatter checks
226
+ 2. run lint/type checks
227
+ 3. fail fast on strict mode
228
+ 4. publish remediation summary
229
+
230
+ ### Health Metrics
231
+
232
+ Track:
233
+ - edits flagged by gates
234
+ - average remediation time
235
+ - repeat violations by category
236
+ - merge blocks due to gate failures
@@ -0,0 +1,146 @@
1
+ ---
2
+ name: postgres-patterns
3
+ description: PostgreSQL database patterns for query optimization, schema design, indexing, and security. Based on Supabase best practices.
4
+ ---
5
+
6
+ # PostgreSQL Patterns
7
+
8
+ Quick reference for PostgreSQL best practices. For detailed guidance, use the `database-reviewer` agent.
9
+
10
+ ## When to Activate
11
+
12
+ - Writing SQL queries or migrations
13
+ - Designing database schemas
14
+ - Troubleshooting slow queries
15
+ - Implementing Row Level Security
16
+ - Setting up connection pooling
17
+
18
+ ## Quick Reference
19
+
20
+ ### Index Cheat Sheet
21
+
22
+ | Query Pattern | Index Type | Example |
23
+ |--------------|------------|---------|
24
+ | `WHERE col = value` | B-tree (default) | `CREATE INDEX idx ON t (col)` |
25
+ | `WHERE col > value` | B-tree | `CREATE INDEX idx ON t (col)` |
26
+ | `WHERE a = x AND b > y` | Composite | `CREATE INDEX idx ON t (a, b)` |
27
+ | `WHERE jsonb @> '{}'` | GIN | `CREATE INDEX idx ON t USING gin (col)` |
28
+ | `WHERE tsv @@ query` | GIN | `CREATE INDEX idx ON t USING gin (col)` |
29
+ | Time-series ranges | BRIN | `CREATE INDEX idx ON t USING brin (col)` |
30
+
31
+ ### Data Type Quick Reference
32
+
33
+ | Use Case | Correct Type | Avoid |
34
+ |----------|-------------|-------|
35
+ | IDs | `bigint` | `int`, random UUID |
36
+ | Strings | `text` | `varchar(255)` |
37
+ | Timestamps | `timestamptz` | `timestamp` |
38
+ | Money | `numeric(10,2)` | `float` |
39
+ | Flags | `boolean` | `varchar`, `int` |
40
+
41
+ ### Common Patterns
42
+
43
+ **Composite Index Order:**
44
+ ```sql
45
+ -- Equality columns first, then range columns
46
+ CREATE INDEX idx ON orders (status, created_at);
47
+ -- Works for: WHERE status = 'pending' AND created_at > '2024-01-01'
48
+ ```
49
+
50
+ **Covering Index:**
51
+ ```sql
52
+ CREATE INDEX idx ON users (email) INCLUDE (name, created_at);
53
+ -- Avoids table lookup for SELECT email, name, created_at
54
+ ```
55
+
56
+ **Partial Index:**
57
+ ```sql
58
+ CREATE INDEX idx ON users (email) WHERE deleted_at IS NULL;
59
+ -- Smaller index, only includes active users
60
+ ```
61
+
62
+ **RLS Policy (Optimized):**
63
+ ```sql
64
+ CREATE POLICY policy ON orders
65
+ USING ((SELECT auth.uid()) = user_id); -- Wrap in SELECT!
66
+ ```
67
+
68
+ **UPSERT:**
69
+ ```sql
70
+ INSERT INTO settings (user_id, key, value)
71
+ VALUES (123, 'theme', 'dark')
72
+ ON CONFLICT (user_id, key)
73
+ DO UPDATE SET value = EXCLUDED.value;
74
+ ```
75
+
76
+ **Cursor Pagination:**
77
+ ```sql
78
+ SELECT * FROM products WHERE id > $last_id ORDER BY id LIMIT 20;
79
+ -- O(1) vs OFFSET which is O(n)
80
+ ```
81
+
82
+ **Queue Processing:**
83
+ ```sql
84
+ UPDATE jobs SET status = 'processing'
85
+ WHERE id = (
86
+ SELECT id FROM jobs WHERE status = 'pending'
87
+ ORDER BY created_at LIMIT 1
88
+ FOR UPDATE SKIP LOCKED
89
+ ) RETURNING *;
90
+ ```
91
+
92
+ ### Anti-Pattern Detection
93
+
94
+ ```sql
95
+ -- Find unindexed foreign keys
96
+ SELECT conrelid::regclass, a.attname
97
+ FROM pg_constraint c
98
+ JOIN pg_attribute a ON a.attrelid = c.conrelid AND a.attnum = ANY(c.conkey)
99
+ WHERE c.contype = 'f'
100
+ AND NOT EXISTS (
101
+ SELECT 1 FROM pg_index i
102
+ WHERE i.indrelid = c.conrelid AND a.attnum = ANY(i.indkey)
103
+ );
104
+
105
+ -- Find slow queries
106
+ SELECT query, mean_exec_time, calls
107
+ FROM pg_stat_statements
108
+ WHERE mean_exec_time > 100
109
+ ORDER BY mean_exec_time DESC;
110
+
111
+ -- Check table bloat
112
+ SELECT relname, n_dead_tup, last_vacuum
113
+ FROM pg_stat_user_tables
114
+ WHERE n_dead_tup > 1000
115
+ ORDER BY n_dead_tup DESC;
116
+ ```
117
+
118
+ ### Configuration Template
119
+
120
+ ```sql
121
+ -- Connection limits (adjust for RAM)
122
+ ALTER SYSTEM SET max_connections = 100;
123
+ ALTER SYSTEM SET work_mem = '8MB';
124
+
125
+ -- Timeouts
126
+ ALTER SYSTEM SET idle_in_transaction_session_timeout = '30s';
127
+ ALTER SYSTEM SET statement_timeout = '30s';
128
+
129
+ -- Monitoring
130
+ CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
131
+
132
+ -- Security defaults
133
+ REVOKE ALL ON SCHEMA public FROM public;
134
+
135
+ SELECT pg_reload_conf();
136
+ ```
137
+
138
+ ## Related
139
+
140
+ - Agent: `database-reviewer` - Full database review workflow
141
+ - Skill: `clickhouse-io` - ClickHouse analytics patterns
142
+ - Skill: `backend-patterns` - API and backend patterns
143
+
144
+ ---
145
+
146
+ *Based on Supabase Agent Skills (credit: Supabase team) (MIT License)*