cfsa-antigravity 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 (378) hide show
  1. package/bin/cli.mjs +324 -0
  2. package/package.json +34 -0
  3. package/template/.agent/instructions/commands.md +48 -0
  4. package/template/.agent/instructions/patterns.md +61 -0
  5. package/template/.agent/instructions/structure.md +29 -0
  6. package/template/.agent/instructions/tech-stack.md +43 -0
  7. package/template/.agent/instructions/workflow.md +41 -0
  8. package/template/.agent/kit-sync.md +15 -0
  9. package/template/.agent/rules/boundary-not-placeholder.md +146 -0
  10. package/template/.agent/rules/completion-checklist.md +48 -0
  11. package/template/.agent/rules/decision-classification.md +103 -0
  12. package/template/.agent/rules/extensibility.md +47 -0
  13. package/template/.agent/rules/question-vs-command.md +81 -0
  14. package/template/.agent/rules/security-first.md +43 -0
  15. package/template/.agent/rules/specificity-standards.md +54 -0
  16. package/template/.agent/rules/tdd-contract-first.md +57 -0
  17. package/template/.agent/rules/vertical-slices.md +42 -0
  18. package/template/.agent/skill-library/MANIFEST.md +480 -0
  19. package/template/.agent/skill-library/README.md +38 -0
  20. package/template/.agent/skill-library/meta/brand-guidelines/SKILL.md +73 -0
  21. package/template/.agent/skill-library/meta/claude-code/README.md +9 -0
  22. package/template/.agent/skill-library/meta/claude-code/agent-development/SKILL.md +415 -0
  23. package/template/.agent/skill-library/meta/claude-code/hook-development/SKILL.md +712 -0
  24. package/template/.agent/skill-library/meta/claude-code/plugin-structure/SKILL.md +476 -0
  25. package/template/.agent/skill-library/meta/git-advanced/SKILL.md +972 -0
  26. package/template/.agent/skill-library/meta/mcp-builder/SKILL.md +236 -0
  27. package/template/.agent/skill-library/meta/product-marketing-context/SKILL.md +241 -0
  28. package/template/.agent/skill-library/meta/regex-patterns/SKILL.md +751 -0
  29. package/template/.agent/skill-library/meta/tmux-processes/SKILL.md +210 -0
  30. package/template/.agent/skill-library/meta/using-tmux-for-interactive-commands/SKILL.md +178 -0
  31. package/template/.agent/skill-library/stack/3d/threejs-pro/SKILL.md +300 -0
  32. package/template/.agent/skill-library/stack/ai/ai-sdk/SKILL.md +77 -0
  33. package/template/.agent/skill-library/stack/ai/langchain/SKILL.md +530 -0
  34. package/template/.agent/skill-library/stack/ai/ollama/SKILL.md +321 -0
  35. package/template/.agent/skill-library/stack/ai/openai-sdk/SKILL.md +549 -0
  36. package/template/.agent/skill-library/stack/analytics/google-analytics/SKILL.md +153 -0
  37. package/template/.agent/skill-library/stack/api/graphql/SKILL.md +1061 -0
  38. package/template/.agent/skill-library/stack/api/trpc/SKILL.md +576 -0
  39. package/template/.agent/skill-library/stack/auth/authjs/SKILL.md +569 -0
  40. package/template/.agent/skill-library/stack/auth/clerk/SKILL.md +590 -0
  41. package/template/.agent/skill-library/stack/auth/firebase-auth/SKILL.md +734 -0
  42. package/template/.agent/skill-library/stack/cms/payload-cms/SKILL.md +573 -0
  43. package/template/.agent/skill-library/stack/cms/shopify/SKILL.md +1193 -0
  44. package/template/.agent/skill-library/stack/cms/wordpress/SKILL.md +1104 -0
  45. package/template/.agent/skill-library/stack/css/sass-scss/SKILL.md +1121 -0
  46. package/template/.agent/skill-library/stack/css/tailwind-css-patterns/SKILL.md +863 -0
  47. package/template/.agent/skill-library/stack/css/tailwind-design-system/SKILL.md +490 -0
  48. package/template/.agent/skill-library/stack/css/vanilla-css/SKILL.md +1078 -0
  49. package/template/.agent/skill-library/stack/databases/clickhouse/SKILL.md +311 -0
  50. package/template/.agent/skill-library/stack/databases/influxdb/SKILL.md +280 -0
  51. package/template/.agent/skill-library/stack/databases/lancedb/SKILL.md +415 -0
  52. package/template/.agent/skill-library/stack/databases/mongodb/SKILL.md +1169 -0
  53. package/template/.agent/skill-library/stack/databases/neo4j/SKILL.md +839 -0
  54. package/template/.agent/skill-library/stack/databases/pgvector/SKILL.md +241 -0
  55. package/template/.agent/skill-library/stack/databases/pinecone/SKILL.md +212 -0
  56. package/template/.agent/skill-library/stack/databases/postgresql/SKILL.md +658 -0
  57. package/template/.agent/skill-library/stack/databases/qdrant/SKILL.md +312 -0
  58. package/template/.agent/skill-library/stack/databases/redis/SKILL.md +1079 -0
  59. package/template/.agent/skill-library/stack/databases/spacetimedb/SKILL.md +532 -0
  60. package/template/.agent/skill-library/stack/databases/sqlite/SKILL.md +1132 -0
  61. package/template/.agent/skill-library/stack/databases/supabase/SKILL.md +640 -0
  62. package/template/.agent/skill-library/stack/databases/surrealdb-expert/SKILL.md +945 -0
  63. package/template/.agent/skill-library/stack/databases/timescaledb/SKILL.md +745 -0
  64. package/template/.agent/skill-library/stack/databases/weaviate/SKILL.md +218 -0
  65. package/template/.agent/skill-library/stack/devops/github-actions/SKILL.md +554 -0
  66. package/template/.agent/skill-library/stack/devops/kubernetes/SKILL.md +950 -0
  67. package/template/.agent/skill-library/stack/devops/nginx/SKILL.md +841 -0
  68. package/template/.agent/skill-library/stack/devops/terraform/SKILL.md +860 -0
  69. package/template/.agent/skill-library/stack/email/resend/SKILL.md +391 -0
  70. package/template/.agent/skill-library/stack/engines/godot/SKILL.md +488 -0
  71. package/template/.agent/skill-library/stack/extensions/chrome-extension/SKILL.md +375 -0
  72. package/template/.agent/skill-library/stack/extensions/vscode-extension/SKILL.md +453 -0
  73. package/template/.agent/skill-library/stack/frameworks/astro-framework/SKILL.md +162 -0
  74. package/template/.agent/skill-library/stack/frameworks/electron/SKILL.md +1286 -0
  75. package/template/.agent/skill-library/stack/frameworks/fastapi/SKILL.md +650 -0
  76. package/template/.agent/skill-library/stack/frameworks/hono/SKILL.md +90 -0
  77. package/template/.agent/skill-library/stack/frameworks/nestjs/SKILL.md +878 -0
  78. package/template/.agent/skill-library/stack/frameworks/nextjs/SKILL.md +635 -0
  79. package/template/.agent/skill-library/stack/frameworks/nuxt/SKILL.md +564 -0
  80. package/template/.agent/skill-library/stack/frameworks/sveltekit/SKILL.md +614 -0
  81. package/template/.agent/skill-library/stack/frameworks/tauri/SKILL.md +920 -0
  82. package/template/.agent/skill-library/stack/gamedev/godot/SKILL.md +1032 -0
  83. package/template/.agent/skill-library/stack/gamedev/unity/SKILL.md +1175 -0
  84. package/template/.agent/skill-library/stack/hosting/aws/SKILL.md +467 -0
  85. package/template/.agent/skill-library/stack/hosting/cloudflare/SKILL.md +201 -0
  86. package/template/.agent/skill-library/stack/hosting/docker-expert/SKILL.md +409 -0
  87. package/template/.agent/skill-library/stack/hosting/vercel/SKILL.md +484 -0
  88. package/template/.agent/skill-library/stack/languages/bash-scripting/SKILL.md +773 -0
  89. package/template/.agent/skill-library/stack/languages/c-cpp/SKILL.md +712 -0
  90. package/template/.agent/skill-library/stack/languages/gdscript/SKILL.md +789 -0
  91. package/template/.agent/skill-library/stack/languages/go/SKILL.md +664 -0
  92. package/template/.agent/skill-library/stack/languages/java/SKILL.md +778 -0
  93. package/template/.agent/skill-library/stack/languages/kotlin/SKILL.md +665 -0
  94. package/template/.agent/skill-library/stack/languages/python/SKILL.md +678 -0
  95. package/template/.agent/skill-library/stack/languages/rust/SKILL.md +673 -0
  96. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/SKILL.md +141 -0
  97. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/advanced-generics.md +90 -0
  98. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/branded-types.md +57 -0
  99. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/builder-pattern.md +71 -0
  100. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/common-pitfalls.md +135 -0
  101. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/conditional-types.md +27 -0
  102. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/decorators.md +98 -0
  103. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/discriminated-unions.md +62 -0
  104. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/mapped-types.md +53 -0
  105. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/performance-best-practices.md +104 -0
  106. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/template-literal-types.md +49 -0
  107. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/testing-types.md +112 -0
  108. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-guards.md +70 -0
  109. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/type-inference.md +101 -0
  110. package/template/.agent/skill-library/stack/languages/typescript-advanced-patterns/references/utility-types.md +98 -0
  111. package/template/.agent/skill-library/stack/languages/vanilla-javascript/SKILL.md +803 -0
  112. package/template/.agent/skill-library/stack/messaging/kafka/SKILL.md +235 -0
  113. package/template/.agent/skill-library/stack/mobile/expo-react-native/SKILL.md +665 -0
  114. package/template/.agent/skill-library/stack/mobile/flutter/SKILL.md +316 -0
  115. package/template/.agent/skill-library/stack/mobile/react-native/SKILL.md +337 -0
  116. package/template/.agent/skill-library/stack/monitoring/posthog/SKILL.md +396 -0
  117. package/template/.agent/skill-library/stack/monitoring/sentry/SKILL.md +509 -0
  118. package/template/.agent/skill-library/stack/observability/datadog/SKILL.md +179 -0
  119. package/template/.agent/skill-library/stack/observability/distributed-tracing/SKILL.md +140 -0
  120. package/template/.agent/skill-library/stack/observability/logging-best-practices/SKILL.md +168 -0
  121. package/template/.agent/skill-library/stack/observability/opentelemetry/SKILL.md +164 -0
  122. package/template/.agent/skill-library/stack/observability/prometheus-grafana/SKILL.md +246 -0
  123. package/template/.agent/skill-library/stack/observability/python-observability/SKILL.md +158 -0
  124. package/template/.agent/skill-library/stack/orm/drizzle-orm/SKILL.md +613 -0
  125. package/template/.agent/skill-library/stack/orm/prisma/SKILL.md +744 -0
  126. package/template/.agent/skill-library/stack/payments/lemonsqueezy/SKILL.md +393 -0
  127. package/template/.agent/skill-library/stack/payments/stripe-integration/SKILL.md +457 -0
  128. package/template/.agent/skill-library/stack/queue/bullmq/SKILL.md +385 -0
  129. package/template/.agent/skill-library/stack/queue/inngest/SKILL.md +438 -0
  130. package/template/.agent/skill-library/stack/realtime/socketio/SKILL.md +595 -0
  131. package/template/.agent/skill-library/stack/search/elasticsearch/SKILL.md +248 -0
  132. package/template/.agent/skill-library/stack/search/meilisearch/SKILL.md +385 -0
  133. package/template/.agent/skill-library/stack/security/crypto-patterns/SKILL.md +437 -0
  134. package/template/.agent/skill-library/stack/security/csp-cors-headers/SKILL.md +588 -0
  135. package/template/.agent/skill-library/stack/security/dependency-auditing/SKILL.md +560 -0
  136. package/template/.agent/skill-library/stack/security/input-sanitization/SKILL.md +430 -0
  137. package/template/.agent/skill-library/stack/security/owasp-web-security/SKILL.md +421 -0
  138. package/template/.agent/skill-library/stack/state/tanstack-query/SKILL.md +637 -0
  139. package/template/.agent/skill-library/stack/state/zustand/SKILL.md +483 -0
  140. package/template/.agent/skill-library/stack/storage/aws-s3/SKILL.md +415 -0
  141. package/template/.agent/skill-library/stack/testing/playwright/SKILL.md +641 -0
  142. package/template/.agent/skill-library/stack/testing/storybook/SKILL.md +923 -0
  143. package/template/.agent/skill-library/stack/testing/testing-library/SKILL.md +872 -0
  144. package/template/.agent/skill-library/stack/testing/vitest/SKILL.md +714 -0
  145. package/template/.agent/skill-library/stack/ui/react-best-practices/SKILL.md +877 -0
  146. package/template/.agent/skill-library/stack/ui/react-composition-patterns/SKILL.md +1107 -0
  147. package/template/.agent/skill-library/stack/ui/react-flow/SKILL.md +425 -0
  148. package/template/.agent/skill-library/stack/ui/shadcn-ui/SKILL.md +703 -0
  149. package/template/.agent/skill-library/surface/api/api-caching/SKILL.md +458 -0
  150. package/template/.agent/skill-library/surface/api/api-documentation-openapi/SKILL.md +697 -0
  151. package/template/.agent/skill-library/surface/api/api-error-handling/SKILL.md +478 -0
  152. package/template/.agent/skill-library/surface/api/api-security-checklist/SKILL.md +147 -0
  153. package/template/.agent/skill-library/surface/api/api-versioning/SKILL.md +420 -0
  154. package/template/.agent/skill-library/surface/api/email-best-practices/SKILL.md +59 -0
  155. package/template/.agent/skill-library/surface/api/rate-limiting-abuse-protection/SKILL.md +147 -0
  156. package/template/.agent/skill-library/surface/api/rest-api-design/SKILL.md +478 -0
  157. package/template/.agent/skill-library/surface/api/webhook-design/SKILL.md +752 -0
  158. package/template/.agent/skill-library/surface/cli/cli-configuration-management/SKILL.md +445 -0
  159. package/template/.agent/skill-library/surface/cli/cli-error-diagnostics/SKILL.md +515 -0
  160. package/template/.agent/skill-library/surface/cli/cli-shell-integration/SKILL.md +479 -0
  161. package/template/.agent/skill-library/surface/cli/cli-ux-design/SKILL.md +477 -0
  162. package/template/.agent/skill-library/surface/desktop/desktop-app-distribution/SKILL.md +416 -0
  163. package/template/.agent/skill-library/surface/desktop/desktop-security-sandboxing/SKILL.md +407 -0
  164. package/template/.agent/skill-library/surface/desktop/desktop-ux-conventions/SKILL.md +361 -0
  165. package/template/.agent/skill-library/surface/desktop/native-os-integration/SKILL.md +563 -0
  166. package/template/.agent/skill-library/surface/extension/browser-extension-patterns/SKILL.md +482 -0
  167. package/template/.agent/skill-library/surface/extension/plugin-architecture-design/SKILL.md +632 -0
  168. package/template/.agent/skill-library/surface/extension/vscode-extension-development/SKILL.md +728 -0
  169. package/template/.agent/skill-library/surface/mobile/app-store-submission/SKILL.md +304 -0
  170. package/template/.agent/skill-library/surface/mobile/mobile-offline-sync/SKILL.md +443 -0
  171. package/template/.agent/skill-library/surface/mobile/mobile-responsive-patterns/SKILL.md +432 -0
  172. package/template/.agent/skill-library/surface/mobile/push-notifications/SKILL.md +495 -0
  173. package/template/.agent/skill-library/surface/web/accessibility-compliance/SKILL.md +827 -0
  174. package/template/.agent/skill-library/surface/web/ai-seo/SKILL.md +398 -0
  175. package/template/.agent/skill-library/surface/web/ai-seo/references/content-patterns.md +285 -0
  176. package/template/.agent/skill-library/surface/web/ai-seo/references/platform-ranking-factors.md +152 -0
  177. package/template/.agent/skill-library/surface/web/analytics-tracking/SKILL.md +309 -0
  178. package/template/.agent/skill-library/surface/web/analytics-tracking/references/event-library.md +260 -0
  179. package/template/.agent/skill-library/surface/web/analytics-tracking/references/ga4-implementation.md +300 -0
  180. package/template/.agent/skill-library/surface/web/analytics-tracking/references/gtm-implementation.md +390 -0
  181. package/template/.agent/skill-library/surface/web/authentication-ui-flows/SKILL.md +530 -0
  182. package/template/.agent/skill-library/surface/web/dark-mode-theming/SKILL.md +516 -0
  183. package/template/.agent/skill-library/surface/web/design-reference-data/SKILL.md +105 -0
  184. package/template/.agent/skill-library/surface/web/design-reference-data/data/charts.csv +26 -0
  185. package/template/.agent/skill-library/surface/web/design-reference-data/data/colors.csv +97 -0
  186. package/template/.agent/skill-library/surface/web/design-reference-data/data/landing.csv +31 -0
  187. package/template/.agent/skill-library/surface/web/design-reference-data/data/styles.csv +59 -0
  188. package/template/.agent/skill-library/surface/web/design-reference-data/data/typography.csv +58 -0
  189. package/template/.agent/skill-library/surface/web/design-reference-data/data/ux-guidelines.csv +100 -0
  190. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/core.py +258 -0
  191. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/design_system.py +1067 -0
  192. package/template/.agent/skill-library/surface/web/design-reference-data/scripts/search.py +106 -0
  193. package/template/.agent/skill-library/surface/web/form-handling-validation/SKILL.md +675 -0
  194. package/template/.agent/skill-library/surface/web/frontend-design/SKILL.md +1393 -0
  195. package/template/.agent/skill-library/surface/web/frontend-design/templates/cppn-hero.tsx +299 -0
  196. package/template/.agent/skill-library/surface/web/frontend-design/templates/wave-hero.tsx +875 -0
  197. package/template/.agent/skill-library/surface/web/frontend-verification/SKILL.md +111 -0
  198. package/template/.agent/skill-library/surface/web/frontend-verification/scripts/ux_audit.py +739 -0
  199. package/template/.agent/skill-library/surface/web/i18n-localization/SKILL.md +154 -0
  200. package/template/.agent/skill-library/surface/web/offline-first-pwa/SKILL.md +657 -0
  201. package/template/.agent/skill-library/surface/web/page-cro/SKILL.md +182 -0
  202. package/template/.agent/skill-library/surface/web/page-cro/references/experiments.md +248 -0
  203. package/template/.agent/skill-library/surface/web/programmatic-seo/SKILL.md +238 -0
  204. package/template/.agent/skill-library/surface/web/programmatic-seo/references/playbooks.md +308 -0
  205. package/template/.agent/skill-library/surface/web/schema-markup/SKILL.md +179 -0
  206. package/template/.agent/skill-library/surface/web/schema-markup/references/schema-examples.md +398 -0
  207. package/template/.agent/skill-library/surface/web/seo-audit/SKILL.md +394 -0
  208. package/template/.agent/skill-library/surface/web/seo-audit/references/ai-writing-detection.md +200 -0
  209. package/template/.agent/skill-library/surface/web/web-performance-optimization/SKILL.md +646 -0
  210. package/template/.agent/skill-library/surface/web/web-scraping/SKILL.md +58 -0
  211. package/template/.agent/skills/accessibility/SKILL.md +522 -0
  212. package/template/.agent/skills/accessibility/references/WCAG.md +162 -0
  213. package/template/.agent/skills/adversarial-review/SKILL.md +90 -0
  214. package/template/.agent/skills/antigravity-workflows/SKILL.md +81 -0
  215. package/template/.agent/skills/antigravity-workflows/resources/implementation-playbook.md +36 -0
  216. package/template/.agent/skills/api-design-principles/SKILL.md +37 -0
  217. package/template/.agent/skills/api-design-principles/assets/api-design-checklist.md +155 -0
  218. package/template/.agent/skills/api-design-principles/assets/rest-api-template.py +182 -0
  219. package/template/.agent/skills/api-design-principles/references/graphql-schema-design.md +583 -0
  220. package/template/.agent/skills/api-design-principles/references/rest-best-practices.md +408 -0
  221. package/template/.agent/skills/api-design-principles/resources/implementation-playbook.md +513 -0
  222. package/template/.agent/skills/api-versioning/SKILL.md +420 -0
  223. package/template/.agent/skills/architecture-mapping/SKILL.md +219 -0
  224. package/template/.agent/skills/bootstrap-agents/SKILL.md +259 -0
  225. package/template/.agent/skills/brainstorming/SKILL.md +236 -0
  226. package/template/.agent/skills/brand-guidelines/SKILL.md +44 -0
  227. package/template/.agent/skills/clean-code/SKILL.md +94 -0
  228. package/template/.agent/skills/code-review-pro/SKILL.md +152 -0
  229. package/template/.agent/skills/concise-planning/SKILL.md +68 -0
  230. package/template/.agent/skills/cross-layer-consistency/SKILL.md +117 -0
  231. package/template/.agent/skills/database-schema-design/SKILL.md +429 -0
  232. package/template/.agent/skills/deployment-procedures/SKILL.md +241 -0
  233. package/template/.agent/skills/design-anti-cliche/SKILL.md +159 -0
  234. package/template/.agent/skills/design-direction/SKILL.md +45 -0
  235. package/template/.agent/skills/error-handling-patterns/SKILL.md +721 -0
  236. package/template/.agent/skills/find-skills/SKILL.md +145 -0
  237. package/template/.agent/skills/git-advanced/SKILL.md +972 -0
  238. package/template/.agent/skills/git-workflow/SKILL.md +420 -0
  239. package/template/.agent/skills/idea-extraction/SKILL.md +271 -0
  240. package/template/.agent/skills/logging-best-practices/SKILL.md +851 -0
  241. package/template/.agent/skills/migration-management/SKILL.md +384 -0
  242. package/template/.agent/skills/minimalist-surgical-development/SKILL.md +69 -0
  243. package/template/.agent/skills/parallel-agents/SKILL.md +165 -0
  244. package/template/.agent/skills/parallel-debugging/SKILL.md +135 -0
  245. package/template/.agent/skills/parallel-feature-development/SKILL.md +166 -0
  246. package/template/.agent/skills/performance-budgeting/SKILL.md +144 -0
  247. package/template/.agent/skills/pipeline-rubrics/SKILL.md +51 -0
  248. package/template/.agent/skills/pipeline-rubrics/references/architecture-rubric.md +19 -0
  249. package/template/.agent/skills/pipeline-rubrics/references/be-rubric.md +21 -0
  250. package/template/.agent/skills/pipeline-rubrics/references/fe-rubric.md +20 -0
  251. package/template/.agent/skills/pipeline-rubrics/references/ia-rubric.md +19 -0
  252. package/template/.agent/skills/pipeline-rubrics/references/scoring.md +28 -0
  253. package/template/.agent/skills/pipeline-rubrics/references/vision-rubric.md +11 -0
  254. package/template/.agent/skills/prd-templates/SKILL.md +88 -0
  255. package/template/.agent/skills/prd-templates/references/architecture-design-template.md +88 -0
  256. package/template/.agent/skills/prd-templates/references/be-spec-template.md +101 -0
  257. package/template/.agent/skills/prd-templates/references/data-placement-template.md +74 -0
  258. package/template/.agent/skills/prd-templates/references/decomposition-templates.md +211 -0
  259. package/template/.agent/skills/prd-templates/references/design-system-decisions.md +198 -0
  260. package/template/.agent/skills/prd-templates/references/engineering-standards-template.md +124 -0
  261. package/template/.agent/skills/prd-templates/references/fe-classification-procedures.md +47 -0
  262. package/template/.agent/skills/prd-templates/references/fe-spec-template.md +84 -0
  263. package/template/.agent/skills/prd-templates/references/infrastructure-report-template.md +71 -0
  264. package/template/.agent/skills/prd-templates/references/operational-templates.md +116 -0
  265. package/template/.agent/skills/prd-templates/references/placeholder-guard-template.md +21 -0
  266. package/template/.agent/skills/prd-templates/references/surface-model.md +61 -0
  267. package/template/.agent/skills/prd-templates/references/vision-template.md +66 -0
  268. package/template/.agent/skills/prompt-engineer/README.md +659 -0
  269. package/template/.agent/skills/prompt-engineer/SKILL.md +249 -0
  270. package/template/.agent/skills/regex-patterns/SKILL.md +751 -0
  271. package/template/.agent/skills/resolve-ambiguity/SKILL.md +278 -0
  272. package/template/.agent/skills/rest-api-design/SKILL.md +478 -0
  273. package/template/.agent/skills/security-scanning-security-hardening/SKILL.md +231 -0
  274. package/template/.agent/skills/session-continuity/SKILL.md +730 -0
  275. package/template/.agent/skills/session-continuity/protocols/01-session-resumption.md +38 -0
  276. package/template/.agent/skills/session-continuity/protocols/02-progress-generation.md +85 -0
  277. package/template/.agent/skills/session-continuity/protocols/03-progress-update.md +70 -0
  278. package/template/.agent/skills/session-continuity/protocols/04-pattern-extraction.md +60 -0
  279. package/template/.agent/skills/session-continuity/protocols/05-session-close.md +37 -0
  280. package/template/.agent/skills/session-continuity/protocols/06-decision-analysis.md +84 -0
  281. package/template/.agent/skills/session-continuity/protocols/07-spec-pipeline-generation.md +48 -0
  282. package/template/.agent/skills/session-continuity/protocols/08-spec-pipeline-update.md +43 -0
  283. package/template/.agent/skills/session-continuity/protocols/09-parallel-claim.md +122 -0
  284. package/template/.agent/skills/session-continuity/protocols/10-placeholder-verification-gate.md +104 -0
  285. package/template/.agent/skills/session-continuity/protocols/ambiguity-gates.md +48 -0
  286. package/template/.agent/skills/skill-creator/LICENSE.txt +202 -0
  287. package/template/.agent/skills/skill-creator/README.md +270 -0
  288. package/template/.agent/skills/skill-creator/SKILL.md +590 -0
  289. package/template/.agent/skills/skill-creator/references/output-patterns.md +82 -0
  290. package/template/.agent/skills/skill-creator/references/workflows.md +28 -0
  291. package/template/.agent/skills/skill-creator/scripts/init_skill.py +303 -0
  292. package/template/.agent/skills/skill-creator/scripts/package_skill.py +110 -0
  293. package/template/.agent/skills/skill-creator/scripts/quick_validate.py +95 -0
  294. package/template/.agent/skills/spec-writing/SKILL.md +110 -0
  295. package/template/.agent/skills/systematic-debugging/CREATION-LOG.md +119 -0
  296. package/template/.agent/skills/systematic-debugging/SKILL.md +297 -0
  297. package/template/.agent/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  298. package/template/.agent/skills/systematic-debugging/condition-based-waiting.md +115 -0
  299. package/template/.agent/skills/systematic-debugging/defense-in-depth.md +122 -0
  300. package/template/.agent/skills/systematic-debugging/find-polluter.sh +63 -0
  301. package/template/.agent/skills/systematic-debugging/root-cause-tracing.md +169 -0
  302. package/template/.agent/skills/systematic-debugging/test-academic.md +14 -0
  303. package/template/.agent/skills/systematic-debugging/test-pressure-1.md +58 -0
  304. package/template/.agent/skills/systematic-debugging/test-pressure-2.md +68 -0
  305. package/template/.agent/skills/systematic-debugging/test-pressure-3.md +69 -0
  306. package/template/.agent/skills/tdd-workflow/SKILL.md +409 -0
  307. package/template/.agent/skills/tech-stack-catalog/SKILL.md +49 -0
  308. package/template/.agent/skills/tech-stack-catalog/references/constraint-questions.md +21 -0
  309. package/template/.agent/skills/tech-stack-catalog/references/dev-tooling-decisions.md +37 -0
  310. package/template/.agent/skills/tech-stack-catalog/references/surface-decision-tables.md +69 -0
  311. package/template/.agent/skills/technical-writer/SKILL.md +242 -0
  312. package/template/.agent/skills/testing-strategist/SKILL.md +932 -0
  313. package/template/.agent/skills/verification-before-completion/SKILL.md +145 -0
  314. package/template/.agent/skills/workflow-automation/SKILL.md +73 -0
  315. package/template/.agent/workflows/audit-ambiguity-execute.md +165 -0
  316. package/template/.agent/workflows/audit-ambiguity-rubrics.md +83 -0
  317. package/template/.agent/workflows/audit-ambiguity.md +64 -0
  318. package/template/.agent/workflows/bootstrap-agents-fill.md +201 -0
  319. package/template/.agent/workflows/bootstrap-agents-provision.md +197 -0
  320. package/template/.agent/workflows/bootstrap-agents.md +66 -0
  321. package/template/.agent/workflows/create-prd-architecture.md +119 -0
  322. package/template/.agent/workflows/create-prd-compile.md +138 -0
  323. package/template/.agent/workflows/create-prd-design-system.md +135 -0
  324. package/template/.agent/workflows/create-prd-security.md +113 -0
  325. package/template/.agent/workflows/create-prd-stack.md +91 -0
  326. package/template/.agent/workflows/create-prd.md +168 -0
  327. package/template/.agent/workflows/decompose-architecture-structure.md +82 -0
  328. package/template/.agent/workflows/decompose-architecture-validate.md +119 -0
  329. package/template/.agent/workflows/decompose-architecture.md +111 -0
  330. package/template/.agent/workflows/evolve-contract.md +98 -0
  331. package/template/.agent/workflows/evolve-feature-cascade.md +140 -0
  332. package/template/.agent/workflows/evolve-feature-classify.md +116 -0
  333. package/template/.agent/workflows/evolve-feature.md +56 -0
  334. package/template/.agent/workflows/ideate-discover.md +144 -0
  335. package/template/.agent/workflows/ideate-extract.md +129 -0
  336. package/template/.agent/workflows/ideate-validate.md +117 -0
  337. package/template/.agent/workflows/ideate.md +113 -0
  338. package/template/.agent/workflows/implement-slice-setup.md +113 -0
  339. package/template/.agent/workflows/implement-slice-tdd.md +198 -0
  340. package/template/.agent/workflows/implement-slice.md +50 -0
  341. package/template/.agent/workflows/plan-phase.md +202 -0
  342. package/template/.agent/workflows/propagate-decision-apply.md +135 -0
  343. package/template/.agent/workflows/propagate-decision-scan.md +147 -0
  344. package/template/.agent/workflows/propagate-decision.md +56 -0
  345. package/template/.agent/workflows/remediate-pipeline-assess.md +138 -0
  346. package/template/.agent/workflows/remediate-pipeline-execute.md +135 -0
  347. package/template/.agent/workflows/remediate-pipeline.md +55 -0
  348. package/template/.agent/workflows/resolve-ambiguity.md +82 -0
  349. package/template/.agent/workflows/sync-kit.md +209 -0
  350. package/template/.agent/workflows/update-architecture-map.md +74 -0
  351. package/template/.agent/workflows/validate-phase.md +219 -0
  352. package/template/.agent/workflows/verify-infrastructure.md +207 -0
  353. package/template/.agent/workflows/write-architecture-spec-deepen.md +139 -0
  354. package/template/.agent/workflows/write-architecture-spec-design.md +202 -0
  355. package/template/.agent/workflows/write-architecture-spec.md +63 -0
  356. package/template/.agent/workflows/write-be-spec-classify.md +165 -0
  357. package/template/.agent/workflows/write-be-spec-write.md +98 -0
  358. package/template/.agent/workflows/write-be-spec.md +76 -0
  359. package/template/.agent/workflows/write-fe-spec-classify.md +170 -0
  360. package/template/.agent/workflows/write-fe-spec-write.md +94 -0
  361. package/template/.agent/workflows/write-fe-spec.md +71 -0
  362. package/template/AGENTS.md +176 -0
  363. package/template/GEMINI.md +177 -0
  364. package/template/docs/README.md +187 -0
  365. package/template/docs/audits/.gitkeep +0 -0
  366. package/template/docs/audits/README.md +10 -0
  367. package/template/docs/plans/.gitkeep +0 -0
  368. package/template/docs/plans/README.md +21 -0
  369. package/template/docs/plans/be/.gitkeep +0 -0
  370. package/template/docs/plans/be/README.md +11 -0
  371. package/template/docs/plans/fe/.gitkeep +0 -0
  372. package/template/docs/plans/fe/README.md +11 -0
  373. package/template/docs/plans/ia/.gitkeep +0 -0
  374. package/template/docs/plans/ia/README.md +17 -0
  375. package/template/docs/plans/ia/deep-dives/.gitkeep +0 -0
  376. package/template/docs/plans/ia/deep-dives/README.md +5 -0
  377. package/template/docs/plans/phases/.gitkeep +0 -0
  378. package/template/docs/plans/phases/README.md +11 -0
@@ -0,0 +1,712 @@
1
+ ---
2
+ name: Hook Development
3
+ description: This skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
4
+ version: 0.1.0
5
+ ---
6
+
7
+ # Hook Development for Claude Code Plugins
8
+
9
+ ## Overview
10
+
11
+ Hooks are event-driven automation scripts that execute in response to Claude Code events. Use hooks to validate operations, enforce policies, add context, and integrate external tools into workflows.
12
+
13
+ **Key capabilities:**
14
+ - Validate tool calls before execution (PreToolUse)
15
+ - React to tool results (PostToolUse)
16
+ - Enforce completion standards (Stop, SubagentStop)
17
+ - Load project context (SessionStart)
18
+ - Automate workflows across the development lifecycle
19
+
20
+ ## Hook Types
21
+
22
+ ### Prompt-Based Hooks (Recommended)
23
+
24
+ Use LLM-driven decision making for context-aware validation:
25
+
26
+ ```json
27
+ {
28
+ "type": "prompt",
29
+ "prompt": "Evaluate if this tool use is appropriate: $TOOL_INPUT",
30
+ "timeout": 30
31
+ }
32
+ ```
33
+
34
+ **Supported events:** Stop, SubagentStop, UserPromptSubmit, PreToolUse
35
+
36
+ **Benefits:**
37
+ - Context-aware decisions based on natural language reasoning
38
+ - Flexible evaluation logic without bash scripting
39
+ - Better edge case handling
40
+ - Easier to maintain and extend
41
+
42
+ ### Command Hooks
43
+
44
+ Execute bash commands for deterministic checks:
45
+
46
+ ```json
47
+ {
48
+ "type": "command",
49
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh",
50
+ "timeout": 60
51
+ }
52
+ ```
53
+
54
+ **Use for:**
55
+ - Fast deterministic validations
56
+ - File system operations
57
+ - External tool integrations
58
+ - Performance-critical checks
59
+
60
+ ## Hook Configuration Formats
61
+
62
+ ### Plugin hooks.json Format
63
+
64
+ **For plugin hooks** in `hooks/hooks.json`, use wrapper format:
65
+
66
+ ```json
67
+ {
68
+ "description": "Brief explanation of hooks (optional)",
69
+ "hooks": {
70
+ "PreToolUse": [...],
71
+ "Stop": [...],
72
+ "SessionStart": [...]
73
+ }
74
+ }
75
+ ```
76
+
77
+ **Key points:**
78
+ - `description` field is optional
79
+ - `hooks` field is required wrapper containing actual hook events
80
+ - This is the **plugin-specific format**
81
+
82
+ **Example:**
83
+ ```json
84
+ {
85
+ "description": "Validation hooks for code quality",
86
+ "hooks": {
87
+ "PreToolUse": [
88
+ {
89
+ "matcher": "Write",
90
+ "hooks": [
91
+ {
92
+ "type": "command",
93
+ "command": "${CLAUDE_PLUGIN_ROOT}/hooks/validate.sh"
94
+ }
95
+ ]
96
+ }
97
+ ]
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### Settings Format (Direct)
103
+
104
+ **For user settings** in `.claude/settings.json`, use direct format:
105
+
106
+ ```json
107
+ {
108
+ "PreToolUse": [...],
109
+ "Stop": [...],
110
+ "SessionStart": [...]
111
+ }
112
+ ```
113
+
114
+ **Key points:**
115
+ - No wrapper - events directly at top level
116
+ - No description field
117
+ - This is the **settings format**
118
+
119
+ **Important:** The examples below show the hook event structure that goes inside either format. For plugin hooks.json, wrap these in `{"hooks": {...}}`.
120
+
121
+ ## Hook Events
122
+
123
+ ### PreToolUse
124
+
125
+ Execute before any tool runs. Use to approve, deny, or modify tool calls.
126
+
127
+ **Example (prompt-based):**
128
+ ```json
129
+ {
130
+ "PreToolUse": [
131
+ {
132
+ "matcher": "Write|Edit",
133
+ "hooks": [
134
+ {
135
+ "type": "prompt",
136
+ "prompt": "Validate file write safety. Check: system paths, credentials, path traversal, sensitive content. Return 'approve' or 'deny'."
137
+ }
138
+ ]
139
+ }
140
+ ]
141
+ }
142
+ ```
143
+
144
+ **Output for PreToolUse:**
145
+ ```json
146
+ {
147
+ "hookSpecificOutput": {
148
+ "permissionDecision": "allow|deny|ask",
149
+ "updatedInput": {"field": "modified_value"}
150
+ },
151
+ "systemMessage": "Explanation for Claude"
152
+ }
153
+ ```
154
+
155
+ ### PostToolUse
156
+
157
+ Execute after tool completes. Use to react to results, provide feedback, or log.
158
+
159
+ **Example:**
160
+ ```json
161
+ {
162
+ "PostToolUse": [
163
+ {
164
+ "matcher": "Edit",
165
+ "hooks": [
166
+ {
167
+ "type": "prompt",
168
+ "prompt": "Analyze edit result for potential issues: syntax errors, security vulnerabilities, breaking changes. Provide feedback."
169
+ }
170
+ ]
171
+ }
172
+ ]
173
+ }
174
+ ```
175
+
176
+ **Output behavior:**
177
+ - Exit 0: stdout shown in transcript
178
+ - Exit 2: stderr fed back to Claude
179
+ - systemMessage included in context
180
+
181
+ ### Stop
182
+
183
+ Execute when main agent considers stopping. Use to validate completeness.
184
+
185
+ **Example:**
186
+ ```json
187
+ {
188
+ "Stop": [
189
+ {
190
+ "matcher": "*",
191
+ "hooks": [
192
+ {
193
+ "type": "prompt",
194
+ "prompt": "Verify task completion: tests run, build succeeded, questions answered. Return 'approve' to stop or 'block' with reason to continue."
195
+ }
196
+ ]
197
+ }
198
+ ]
199
+ }
200
+ ```
201
+
202
+ **Decision output:**
203
+ ```json
204
+ {
205
+ "decision": "approve|block",
206
+ "reason": "Explanation",
207
+ "systemMessage": "Additional context"
208
+ }
209
+ ```
210
+
211
+ ### SubagentStop
212
+
213
+ Execute when subagent considers stopping. Use to ensure subagent completed its task.
214
+
215
+ Similar to Stop hook, but for subagents.
216
+
217
+ ### UserPromptSubmit
218
+
219
+ Execute when user submits a prompt. Use to add context, validate, or block prompts.
220
+
221
+ **Example:**
222
+ ```json
223
+ {
224
+ "UserPromptSubmit": [
225
+ {
226
+ "matcher": "*",
227
+ "hooks": [
228
+ {
229
+ "type": "prompt",
230
+ "prompt": "Check if prompt requires security guidance. If discussing auth, permissions, or API security, return relevant warnings."
231
+ }
232
+ ]
233
+ }
234
+ ]
235
+ }
236
+ ```
237
+
238
+ ### SessionStart
239
+
240
+ Execute when Claude Code session begins. Use to load context and set environment.
241
+
242
+ **Example:**
243
+ ```json
244
+ {
245
+ "SessionStart": [
246
+ {
247
+ "matcher": "*",
248
+ "hooks": [
249
+ {
250
+ "type": "command",
251
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/load-context.sh"
252
+ }
253
+ ]
254
+ }
255
+ ]
256
+ }
257
+ ```
258
+
259
+ **Special capability:** Persist environment variables using `$CLAUDE_ENV_FILE`:
260
+ ```bash
261
+ echo "export PROJECT_TYPE=nodejs" >> "$CLAUDE_ENV_FILE"
262
+ ```
263
+
264
+ See `examples/load-context.sh` for complete example.
265
+
266
+ ### SessionEnd
267
+
268
+ Execute when session ends. Use for cleanup, logging, and state preservation.
269
+
270
+ ### PreCompact
271
+
272
+ Execute before context compaction. Use to add critical information to preserve.
273
+
274
+ ### Notification
275
+
276
+ Execute when Claude sends notifications. Use to react to user notifications.
277
+
278
+ ## Hook Output Format
279
+
280
+ ### Standard Output (All Hooks)
281
+
282
+ ```json
283
+ {
284
+ "continue": true,
285
+ "suppressOutput": false,
286
+ "systemMessage": "Message for Claude"
287
+ }
288
+ ```
289
+
290
+ - `continue`: If false, halt processing (default true)
291
+ - `suppressOutput`: Hide output from transcript (default false)
292
+ - `systemMessage`: Message shown to Claude
293
+
294
+ ### Exit Codes
295
+
296
+ - `0` - Success (stdout shown in transcript)
297
+ - `2` - Blocking error (stderr fed back to Claude)
298
+ - Other - Non-blocking error
299
+
300
+ ## Hook Input Format
301
+
302
+ All hooks receive JSON via stdin with common fields:
303
+
304
+ ```json
305
+ {
306
+ "session_id": "abc123",
307
+ "transcript_path": "/path/to/transcript.txt",
308
+ "cwd": "/current/working/dir",
309
+ "permission_mode": "ask|allow",
310
+ "hook_event_name": "PreToolUse"
311
+ }
312
+ ```
313
+
314
+ **Event-specific fields:**
315
+
316
+ - **PreToolUse/PostToolUse:** `tool_name`, `tool_input`, `tool_result`
317
+ - **UserPromptSubmit:** `user_prompt`
318
+ - **Stop/SubagentStop:** `reason`
319
+
320
+ Access fields in prompts using `$TOOL_INPUT`, `$TOOL_RESULT`, `$USER_PROMPT`, etc.
321
+
322
+ ## Environment Variables
323
+
324
+ Available in all command hooks:
325
+
326
+ - `$CLAUDE_PROJECT_DIR` - Project root path
327
+ - `$CLAUDE_PLUGIN_ROOT` - Plugin directory (use for portable paths)
328
+ - `$CLAUDE_ENV_FILE` - SessionStart only: persist env vars here
329
+ - `$CLAUDE_CODE_REMOTE` - Set if running in remote context
330
+
331
+ **Always use ${CLAUDE_PLUGIN_ROOT} in hook commands for portability:**
332
+
333
+ ```json
334
+ {
335
+ "type": "command",
336
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
337
+ }
338
+ ```
339
+
340
+ ## Plugin Hook Configuration
341
+
342
+ In plugins, define hooks in `hooks/hooks.json`:
343
+
344
+ ```json
345
+ {
346
+ "PreToolUse": [
347
+ {
348
+ "matcher": "Write|Edit",
349
+ "hooks": [
350
+ {
351
+ "type": "prompt",
352
+ "prompt": "Validate file write safety"
353
+ }
354
+ ]
355
+ }
356
+ ],
357
+ "Stop": [
358
+ {
359
+ "matcher": "*",
360
+ "hooks": [
361
+ {
362
+ "type": "prompt",
363
+ "prompt": "Verify task completion"
364
+ }
365
+ ]
366
+ }
367
+ ],
368
+ "SessionStart": [
369
+ {
370
+ "matcher": "*",
371
+ "hooks": [
372
+ {
373
+ "type": "command",
374
+ "command": "bash ${CLAUDE_PLUGIN_ROOT}/scripts/load-context.sh",
375
+ "timeout": 10
376
+ }
377
+ ]
378
+ }
379
+ ]
380
+ }
381
+ ```
382
+
383
+ Plugin hooks merge with user's hooks and run in parallel.
384
+
385
+ ## Matchers
386
+
387
+ ### Tool Name Matching
388
+
389
+ **Exact match:**
390
+ ```json
391
+ "matcher": "Write"
392
+ ```
393
+
394
+ **Multiple tools:**
395
+ ```json
396
+ "matcher": "Read|Write|Edit"
397
+ ```
398
+
399
+ **Wildcard (all tools):**
400
+ ```json
401
+ "matcher": "*"
402
+ ```
403
+
404
+ **Regex patterns:**
405
+ ```json
406
+ "matcher": "mcp__.*__delete.*" // All MCP delete tools
407
+ ```
408
+
409
+ **Note:** Matchers are case-sensitive.
410
+
411
+ ### Common Patterns
412
+
413
+ ```json
414
+ // All MCP tools
415
+ "matcher": "mcp__.*"
416
+
417
+ // Specific plugin's MCP tools
418
+ "matcher": "mcp__plugin_asana_.*"
419
+
420
+ // All file operations
421
+ "matcher": "Read|Write|Edit"
422
+
423
+ // Bash commands only
424
+ "matcher": "Bash"
425
+ ```
426
+
427
+ ## Security Best Practices
428
+
429
+ ### Input Validation
430
+
431
+ Always validate inputs in command hooks:
432
+
433
+ ```bash
434
+ #!/bin/bash
435
+ set -euo pipefail
436
+
437
+ input=$(cat)
438
+ tool_name=$(echo "$input" | jq -r '.tool_name')
439
+
440
+ # Validate tool name format
441
+ if [[ ! "$tool_name" =~ ^[a-zA-Z0-9_]+$ ]]; then
442
+ echo '{"decision": "deny", "reason": "Invalid tool name"}' >&2
443
+ exit 2
444
+ fi
445
+ ```
446
+
447
+ ### Path Safety
448
+
449
+ Check for path traversal and sensitive files:
450
+
451
+ ```bash
452
+ file_path=$(echo "$input" | jq -r '.tool_input.file_path')
453
+
454
+ # Deny path traversal
455
+ if [[ "$file_path" == *".."* ]]; then
456
+ echo '{"decision": "deny", "reason": "Path traversal detected"}' >&2
457
+ exit 2
458
+ fi
459
+
460
+ # Deny sensitive files
461
+ if [[ "$file_path" == *".env"* ]]; then
462
+ echo '{"decision": "deny", "reason": "Sensitive file"}' >&2
463
+ exit 2
464
+ fi
465
+ ```
466
+
467
+ See `examples/validate-write.sh` and `examples/validate-bash.sh` for complete examples.
468
+
469
+ ### Quote All Variables
470
+
471
+ ```bash
472
+ # GOOD: Quoted
473
+ echo "$file_path"
474
+ cd "$CLAUDE_PROJECT_DIR"
475
+
476
+ # BAD: Unquoted (injection risk)
477
+ echo $file_path
478
+ cd $CLAUDE_PROJECT_DIR
479
+ ```
480
+
481
+ ### Set Appropriate Timeouts
482
+
483
+ ```json
484
+ {
485
+ "type": "command",
486
+ "command": "bash script.sh",
487
+ "timeout": 10
488
+ }
489
+ ```
490
+
491
+ **Defaults:** Command hooks (60s), Prompt hooks (30s)
492
+
493
+ ## Performance Considerations
494
+
495
+ ### Parallel Execution
496
+
497
+ All matching hooks run **in parallel**:
498
+
499
+ ```json
500
+ {
501
+ "PreToolUse": [
502
+ {
503
+ "matcher": "Write",
504
+ "hooks": [
505
+ {"type": "command", "command": "check1.sh"}, // Parallel
506
+ {"type": "command", "command": "check2.sh"}, // Parallel
507
+ {"type": "prompt", "prompt": "Validate..."} // Parallel
508
+ ]
509
+ }
510
+ ]
511
+ }
512
+ ```
513
+
514
+ **Design implications:**
515
+ - Hooks don't see each other's output
516
+ - Non-deterministic ordering
517
+ - Design for independence
518
+
519
+ ### Optimization
520
+
521
+ 1. Use command hooks for quick deterministic checks
522
+ 2. Use prompt hooks for complex reasoning
523
+ 3. Cache validation results in temp files
524
+ 4. Minimize I/O in hot paths
525
+
526
+ ## Temporarily Active Hooks
527
+
528
+ Create hooks that activate conditionally by checking for a flag file or configuration:
529
+
530
+ **Pattern: Flag file activation**
531
+ ```bash
532
+ #!/bin/bash
533
+ # Only active when flag file exists
534
+ FLAG_FILE="$CLAUDE_PROJECT_DIR/.enable-strict-validation"
535
+
536
+ if [ ! -f "$FLAG_FILE" ]; then
537
+ # Flag not present, skip validation
538
+ exit 0
539
+ fi
540
+
541
+ # Flag present, run validation
542
+ input=$(cat)
543
+ # ... validation logic ...
544
+ ```
545
+
546
+ **Pattern: Configuration-based activation**
547
+ ```bash
548
+ #!/bin/bash
549
+ # Check configuration for activation
550
+ CONFIG_FILE="$CLAUDE_PROJECT_DIR/.claude/plugin-config.json"
551
+
552
+ if [ -f "$CONFIG_FILE" ]; then
553
+ enabled=$(jq -r '.strictMode // false' "$CONFIG_FILE")
554
+ if [ "$enabled" != "true" ]; then
555
+ exit 0 # Not enabled, skip
556
+ fi
557
+ fi
558
+
559
+ # Enabled, run hook logic
560
+ input=$(cat)
561
+ # ... hook logic ...
562
+ ```
563
+
564
+ **Use cases:**
565
+ - Enable strict validation only when needed
566
+ - Temporary debugging hooks
567
+ - Project-specific hook behavior
568
+ - Feature flags for hooks
569
+
570
+ **Best practice:** Document activation mechanism in plugin README so users know how to enable/disable temporary hooks.
571
+
572
+ ## Hook Lifecycle and Limitations
573
+
574
+ ### Hooks Load at Session Start
575
+
576
+ **Important:** Hooks are loaded when Claude Code session starts. Changes to hook configuration require restarting Claude Code.
577
+
578
+ **Cannot hot-swap hooks:**
579
+ - Editing `hooks/hooks.json` won't affect current session
580
+ - Adding new hook scripts won't be recognized
581
+ - Changing hook commands/prompts won't update
582
+ - Must restart Claude Code: exit and run `claude` again
583
+
584
+ **To test hook changes:**
585
+ 1. Edit hook configuration or scripts
586
+ 2. Exit Claude Code session
587
+ 3. Restart: `claude` or `cc`
588
+ 4. New hook configuration loads
589
+ 5. Test hooks with `claude --debug`
590
+
591
+ ### Hook Validation at Startup
592
+
593
+ Hooks are validated when Claude Code starts:
594
+ - Invalid JSON in hooks.json causes loading failure
595
+ - Missing scripts cause warnings
596
+ - Syntax errors reported in debug mode
597
+
598
+ Use `/hooks` command to review loaded hooks in current session.
599
+
600
+ ## Debugging Hooks
601
+
602
+ ### Enable Debug Mode
603
+
604
+ ```bash
605
+ claude --debug
606
+ ```
607
+
608
+ Look for hook registration, execution logs, input/output JSON, and timing information.
609
+
610
+ ### Test Hook Scripts
611
+
612
+ Test command hooks directly:
613
+
614
+ ```bash
615
+ echo '{"tool_name": "Write", "tool_input": {"file_path": "/test"}}' | \
616
+ bash ${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh
617
+
618
+ echo "Exit code: $?"
619
+ ```
620
+
621
+ ### Validate JSON Output
622
+
623
+ Ensure hooks output valid JSON:
624
+
625
+ ```bash
626
+ output=$(./your-hook.sh < test-input.json)
627
+ echo "$output" | jq .
628
+ ```
629
+
630
+ ## Quick Reference
631
+
632
+ ### Hook Events Summary
633
+
634
+ | Event | When | Use For |
635
+ |-------|------|---------|
636
+ | PreToolUse | Before tool | Validation, modification |
637
+ | PostToolUse | After tool | Feedback, logging |
638
+ | UserPromptSubmit | User input | Context, validation |
639
+ | Stop | Agent stopping | Completeness check |
640
+ | SubagentStop | Subagent done | Task validation |
641
+ | SessionStart | Session begins | Context loading |
642
+ | SessionEnd | Session ends | Cleanup, logging |
643
+ | PreCompact | Before compact | Preserve context |
644
+ | Notification | User notified | Logging, reactions |
645
+
646
+ ### Best Practices
647
+
648
+ **DO:**
649
+ - ✅ Use prompt-based hooks for complex logic
650
+ - ✅ Use ${CLAUDE_PLUGIN_ROOT} for portability
651
+ - ✅ Validate all inputs in command hooks
652
+ - ✅ Quote all bash variables
653
+ - ✅ Set appropriate timeouts
654
+ - ✅ Return structured JSON output
655
+ - ✅ Test hooks thoroughly
656
+
657
+ **DON'T:**
658
+ - ❌ Use hardcoded paths
659
+ - ❌ Trust user input without validation
660
+ - ❌ Create long-running hooks
661
+ - ❌ Rely on hook execution order
662
+ - ❌ Modify global state unpredictably
663
+ - ❌ Log sensitive information
664
+
665
+ ## Additional Resources
666
+
667
+ ### Reference Files
668
+
669
+ For detailed patterns and advanced techniques, consult:
670
+
671
+ - **`references/patterns.md`** - Common hook patterns (8+ proven patterns)
672
+ - **`references/migration.md`** - Migrating from basic to advanced hooks
673
+ - **`references/advanced.md`** - Advanced use cases and techniques
674
+
675
+ ### Example Hook Scripts
676
+
677
+ Working examples in `examples/`:
678
+
679
+ - **`validate-write.sh`** - File write validation example
680
+ - **`validate-bash.sh`** - Bash command validation example
681
+ - **`load-context.sh`** - SessionStart context loading example
682
+
683
+ ### Utility Scripts
684
+
685
+ Development tools in `scripts/`:
686
+
687
+ - **`validate-hook-schema.sh`** - Validate hooks.json structure and syntax
688
+ - **`test-hook.sh`** - Test hooks with sample input before deployment
689
+ - **`hook-linter.sh`** - Check hook scripts for common issues and best practices
690
+
691
+ ### External Resources
692
+
693
+ - **Official Docs**: https://docs.claude.com/en/docs/claude-code/hooks
694
+ - **Examples**: See security-guidance plugin in marketplace
695
+ - **Testing**: Use `claude --debug` for detailed logs
696
+ - **Validation**: Use `jq` to validate hook JSON output
697
+
698
+ ## Implementation Workflow
699
+
700
+ To implement hooks in a plugin:
701
+
702
+ 1. Identify events to hook into (PreToolUse, Stop, SessionStart, etc.)
703
+ 2. Decide between prompt-based (flexible) or command (deterministic) hooks
704
+ 3. Write hook configuration in `hooks/hooks.json`
705
+ 4. For command hooks, create hook scripts
706
+ 5. Use ${CLAUDE_PLUGIN_ROOT} for all file references
707
+ 6. Validate configuration with `scripts/validate-hook-schema.sh hooks/hooks.json`
708
+ 7. Test hooks with `scripts/test-hook.sh` before deployment
709
+ 8. Test in Claude Code with `claude --debug`
710
+ 9. Document hooks in plugin README
711
+
712
+ Focus on prompt-based hooks for most use cases. Reserve command hooks for performance-critical or deterministic checks.