@softspark/ai-toolkit 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 (327) hide show
  1. package/AGENTS.md +412 -0
  2. package/CHANGELOG.md +68 -0
  3. package/LICENSE +21 -0
  4. package/README.md +632 -0
  5. package/action.yml +53 -0
  6. package/app/.claude-plugin/plugin.json +44 -0
  7. package/app/ARCHITECTURE.md +306 -0
  8. package/app/CLAUDE.md.template +23 -0
  9. package/app/agents/ai-engineer.md +128 -0
  10. package/app/agents/backend-specialist.md +193 -0
  11. package/app/agents/business-intelligence.md +54 -0
  12. package/app/agents/chaos-monkey.md +67 -0
  13. package/app/agents/chief-of-staff.md +51 -0
  14. package/app/agents/code-archaeologist.md +127 -0
  15. package/app/agents/code-reviewer.md +184 -0
  16. package/app/agents/command-expert.md +131 -0
  17. package/app/agents/data-analyst.md +205 -0
  18. package/app/agents/data-scientist.md +151 -0
  19. package/app/agents/database-architect.md +317 -0
  20. package/app/agents/debugger.md +238 -0
  21. package/app/agents/devops-implementer.md +194 -0
  22. package/app/agents/documenter.md +364 -0
  23. package/app/agents/explorer-agent.md +145 -0
  24. package/app/agents/fact-checker.md +172 -0
  25. package/app/agents/frontend-specialist.md +209 -0
  26. package/app/agents/game-developer.md +216 -0
  27. package/app/agents/incident-responder.md +226 -0
  28. package/app/agents/infrastructure-architect.md +127 -0
  29. package/app/agents/infrastructure-validator.md +247 -0
  30. package/app/agents/llm-ops-engineer.md +237 -0
  31. package/app/agents/mcp-expert.md +228 -0
  32. package/app/agents/mcp-server-architect.md +195 -0
  33. package/app/agents/mcp-testing-engineer.md +292 -0
  34. package/app/agents/meta-architect.md +58 -0
  35. package/app/agents/ml-engineer.md +136 -0
  36. package/app/agents/mobile-developer.md +190 -0
  37. package/app/agents/night-watchman.md +55 -0
  38. package/app/agents/nlp-engineer.md +154 -0
  39. package/app/agents/orchestrator.md +437 -0
  40. package/app/agents/performance-optimizer.md +254 -0
  41. package/app/agents/predictive-analyst.md +57 -0
  42. package/app/agents/product-manager.md +194 -0
  43. package/app/agents/project-planner.md +287 -0
  44. package/app/agents/prompt-engineer.md +103 -0
  45. package/app/agents/qa-automation-engineer.md +182 -0
  46. package/app/agents/rag-engineer.md +201 -0
  47. package/app/agents/research-synthesizer.md +138 -0
  48. package/app/agents/search-specialist.md +101 -0
  49. package/app/agents/security-architect.md +62 -0
  50. package/app/agents/security-auditor.md +293 -0
  51. package/app/agents/seo-specialist.md +111 -0
  52. package/app/agents/system-governor.md +57 -0
  53. package/app/agents/tech-lead.md +62 -0
  54. package/app/agents/technical-researcher.md +103 -0
  55. package/app/agents/test-engineer.md +264 -0
  56. package/app/constitution.md +38 -0
  57. package/app/hooks/_profile-check.sh +11 -0
  58. package/app/hooks/guard-destructive.sh +74 -0
  59. package/app/hooks/guard-path.sh +73 -0
  60. package/app/hooks/post-tool-use.sh +35 -0
  61. package/app/hooks/pre-compact.sh +31 -0
  62. package/app/hooks/quality-check.sh +22 -0
  63. package/app/hooks/quality-gate.sh +49 -0
  64. package/app/hooks/save-session.sh +24 -0
  65. package/app/hooks/session-end.sh +37 -0
  66. package/app/hooks/session-start.sh +29 -0
  67. package/app/hooks/subagent-start.sh +16 -0
  68. package/app/hooks/subagent-stop.sh +16 -0
  69. package/app/hooks/track-usage.sh +50 -0
  70. package/app/hooks/user-prompt-submit.sh +25 -0
  71. package/app/hooks.json +178 -0
  72. package/app/mcp-defaults.json +23 -0
  73. package/app/output-styles/golden-rules.md +43 -0
  74. package/app/plugins/README.md +19 -0
  75. package/app/plugins/csharp-pack/README.md +11 -0
  76. package/app/plugins/csharp-pack/plugin.json +18 -0
  77. package/app/plugins/enterprise-pack/README.md +16 -0
  78. package/app/plugins/enterprise-pack/hooks/output-style.sh +6 -0
  79. package/app/plugins/enterprise-pack/hooks/status-line.sh +8 -0
  80. package/app/plugins/enterprise-pack/plugin.json +24 -0
  81. package/app/plugins/frontend-pack/README.md +14 -0
  82. package/app/plugins/frontend-pack/plugin.json +22 -0
  83. package/app/plugins/java-pack/README.md +11 -0
  84. package/app/plugins/java-pack/plugin.json +18 -0
  85. package/app/plugins/kotlin-pack/README.md +11 -0
  86. package/app/plugins/kotlin-pack/plugin.json +18 -0
  87. package/app/plugins/memory-pack/README.md +24 -0
  88. package/app/plugins/memory-pack/hooks/observation-capture.sh +67 -0
  89. package/app/plugins/memory-pack/hooks/session-summary.sh +71 -0
  90. package/app/plugins/memory-pack/plugin.json +22 -0
  91. package/app/plugins/memory-pack/scripts/init_db.py +81 -0
  92. package/app/plugins/memory-pack/scripts/strip_private.py +22 -0
  93. package/app/plugins/memory-pack/skills/mem-search/SKILL.md +70 -0
  94. package/app/plugins/research-pack/README.md +14 -0
  95. package/app/plugins/research-pack/plugin.json +22 -0
  96. package/app/plugins/ruby-pack/README.md +11 -0
  97. package/app/plugins/ruby-pack/plugin.json +18 -0
  98. package/app/plugins/rust-pack/README.md +11 -0
  99. package/app/plugins/rust-pack/plugin.json +18 -0
  100. package/app/plugins/security-pack/README.md +15 -0
  101. package/app/plugins/security-pack/plugin.json +23 -0
  102. package/app/plugins/swift-pack/README.md +11 -0
  103. package/app/plugins/swift-pack/plugin.json +18 -0
  104. package/app/rules/claude-toolkit-rules.md +21 -0
  105. package/app/rules/git-conventions.md +5 -0
  106. package/app/rules/quality-gates.md +10 -0
  107. package/app/skills/_lib/__init__.py +1 -0
  108. package/app/skills/_lib/detect_utils.py +150 -0
  109. package/app/skills/agent-creator/SKILL.md +82 -0
  110. package/app/skills/analyze/SKILL.md +92 -0
  111. package/app/skills/analyze/scripts/complexity.py +165 -0
  112. package/app/skills/api-patterns/SKILL.md +305 -0
  113. package/app/skills/app-builder/SKILL.md +187 -0
  114. package/app/skills/architecture-audit/SKILL.md +141 -0
  115. package/app/skills/architecture-decision/SKILL.md +55 -0
  116. package/app/skills/architecture-decision/templates/adr-template.md +36 -0
  117. package/app/skills/biz-scan/SKILL.md +30 -0
  118. package/app/skills/briefing/SKILL.md +27 -0
  119. package/app/skills/build/SKILL.md +97 -0
  120. package/app/skills/build/scripts/detect-build.py +151 -0
  121. package/app/skills/chaos/SKILL.md +32 -0
  122. package/app/skills/ci/SKILL.md +77 -0
  123. package/app/skills/ci/scripts/ci-detect.py +135 -0
  124. package/app/skills/ci/templates/github-actions-node.yml +38 -0
  125. package/app/skills/ci/templates/github-actions-python.yml +42 -0
  126. package/app/skills/ci-cd-patterns/SKILL.md +299 -0
  127. package/app/skills/clean-code/SKILL.md +110 -0
  128. package/app/skills/clean-code/reference/dart.md +18 -0
  129. package/app/skills/clean-code/reference/go.md +23 -0
  130. package/app/skills/clean-code/reference/php.md +32 -0
  131. package/app/skills/clean-code/reference/python.md +180 -0
  132. package/app/skills/clean-code/reference/typescript.md +26 -0
  133. package/app/skills/command-creator/SKILL.md +83 -0
  134. package/app/skills/commit/SKILL.md +98 -0
  135. package/app/skills/commit/scripts/pre-commit-check.py +87 -0
  136. package/app/skills/commit/templates/conventional-commit.md +52 -0
  137. package/app/skills/csharp-patterns/SKILL.md +450 -0
  138. package/app/skills/database-patterns/SKILL.md +297 -0
  139. package/app/skills/debug/SKILL.md +154 -0
  140. package/app/skills/debug/scripts/error-parser.py +187 -0
  141. package/app/skills/debugging-tactics/SKILL.md +136 -0
  142. package/app/skills/deploy/SKILL.md +130 -0
  143. package/app/skills/deploy/scripts/pre_deploy_check.py +171 -0
  144. package/app/skills/deploy/templates/deployment-checklist.md +31 -0
  145. package/app/skills/design-an-interface/SKILL.md +105 -0
  146. package/app/skills/design-engineering/SKILL.md +260 -0
  147. package/app/skills/docker-devops/SKILL.md +303 -0
  148. package/app/skills/docs/SKILL.md +145 -0
  149. package/app/skills/docs/scripts/doc-inventory.py +176 -0
  150. package/app/skills/docs/templates/adr-template.md +36 -0
  151. package/app/skills/docs/templates/readme-template.md +67 -0
  152. package/app/skills/documentation-standards/SKILL.md +191 -0
  153. package/app/skills/ecommerce-patterns/SKILL.md +209 -0
  154. package/app/skills/evaluate/SKILL.md +132 -0
  155. package/app/skills/evolve/SKILL.md +27 -0
  156. package/app/skills/explain/SKILL.md +54 -0
  157. package/app/skills/explain/scripts/dependency-graph.py +215 -0
  158. package/app/skills/explore/SKILL.md +112 -0
  159. package/app/skills/explore/scripts/visualize.py +117 -0
  160. package/app/skills/fix/SKILL.md +78 -0
  161. package/app/skills/fix/scripts/error-classifier.py +191 -0
  162. package/app/skills/flutter-patterns/SKILL.md +254 -0
  163. package/app/skills/git-mastery/SKILL.md +70 -0
  164. package/app/skills/grill-me/SKILL.md +38 -0
  165. package/app/skills/health/SKILL.md +91 -0
  166. package/app/skills/health/scripts/health_check.py +162 -0
  167. package/app/skills/hive-mind/SKILL.md +56 -0
  168. package/app/skills/hook-creator/SKILL.md +107 -0
  169. package/app/skills/index/SKILL.md +74 -0
  170. package/app/skills/instinct-review/SKILL.md +77 -0
  171. package/app/skills/java-patterns/SKILL.md +442 -0
  172. package/app/skills/kotlin-patterns/SKILL.md +446 -0
  173. package/app/skills/lint/SKILL.md +103 -0
  174. package/app/skills/lint/scripts/detect-linters.py +112 -0
  175. package/app/skills/mcp-patterns/SKILL.md +270 -0
  176. package/app/skills/mem-search/SKILL.md +70 -0
  177. package/app/skills/migrate/SKILL.md +90 -0
  178. package/app/skills/migrate/scripts/migration-status.py +195 -0
  179. package/app/skills/migration-patterns/SKILL.md +260 -0
  180. package/app/skills/night-watch/SKILL.md +28 -0
  181. package/app/skills/observability-patterns/SKILL.md +203 -0
  182. package/app/skills/onboard/SKILL.md +76 -0
  183. package/app/skills/orchestrate/SKILL.md +86 -0
  184. package/app/skills/panic/SKILL.md +30 -0
  185. package/app/skills/performance-profiling/SKILL.md +59 -0
  186. package/app/skills/plan/SKILL.md +110 -0
  187. package/app/skills/plan/templates/plan-template.md +40 -0
  188. package/app/skills/plan-writing/SKILL.md +201 -0
  189. package/app/skills/plugin-creator/SKILL.md +78 -0
  190. package/app/skills/pr/SKILL.md +129 -0
  191. package/app/skills/pr/scripts/pr-summary.py +175 -0
  192. package/app/skills/prd-to-issues/SKILL.md +108 -0
  193. package/app/skills/prd-to-plan/SKILL.md +120 -0
  194. package/app/skills/predict/SKILL.md +30 -0
  195. package/app/skills/qa-session/SKILL.md +110 -0
  196. package/app/skills/rag-patterns/SKILL.md +203 -0
  197. package/app/skills/refactor/SKILL.md +124 -0
  198. package/app/skills/refactor/scripts/refactor-scan.py +210 -0
  199. package/app/skills/refactor-plan/SKILL.md +112 -0
  200. package/app/skills/repeat/SKILL.md +149 -0
  201. package/app/skills/research-mastery/SKILL.md +56 -0
  202. package/app/skills/review/SKILL.md +141 -0
  203. package/app/skills/review/scripts/diff-analyzer.py +170 -0
  204. package/app/skills/rollback/SKILL.md +87 -0
  205. package/app/skills/rollback/scripts/rollback_info.py +149 -0
  206. package/app/skills/ruby-patterns/SKILL.md +454 -0
  207. package/app/skills/rust-patterns/SKILL.md +446 -0
  208. package/app/skills/search/SKILL.md +64 -0
  209. package/app/skills/security-patterns/SKILL.md +91 -0
  210. package/app/skills/security-patterns/reference/authentication.md +37 -0
  211. package/app/skills/security-patterns/reference/authorization.md +22 -0
  212. package/app/skills/security-patterns/reference/input-validation.md +30 -0
  213. package/app/skills/security-patterns/reference/oauth-csrf-audit.md +131 -0
  214. package/app/skills/skill-creator/SKILL.md +154 -0
  215. package/app/skills/skill-creator/templates/dashboard/index.html +130 -0
  216. package/app/skills/skill-creator/templates/reasoning-engine/assets/example.json +12 -0
  217. package/app/skills/skill-creator/templates/reasoning-engine/search.py +110 -0
  218. package/app/skills/subagent-development/SKILL.md +225 -0
  219. package/app/skills/subagent-development/reference/code-quality-reviewer-prompt.md +145 -0
  220. package/app/skills/subagent-development/reference/implementer-prompt.md +118 -0
  221. package/app/skills/subagent-development/reference/spec-reviewer-prompt.md +100 -0
  222. package/app/skills/swarm/SKILL.md +81 -0
  223. package/app/skills/swift-patterns/SKILL.md +500 -0
  224. package/app/skills/tdd/SKILL.md +174 -0
  225. package/app/skills/tdd/reference/deep-modules.md +32 -0
  226. package/app/skills/tdd/reference/interface-design.md +32 -0
  227. package/app/skills/tdd/reference/mocking.md +52 -0
  228. package/app/skills/tdd/reference/refactoring.md +10 -0
  229. package/app/skills/tdd/reference/tests.md +59 -0
  230. package/app/skills/teams/SKILL.md +101 -0
  231. package/app/skills/test/SKILL.md +107 -0
  232. package/app/skills/test/scripts/detect-runner.py +113 -0
  233. package/app/skills/testing-patterns/SKILL.md +73 -0
  234. package/app/skills/testing-patterns/reference/flutter-testing.md +33 -0
  235. package/app/skills/testing-patterns/reference/go-testing.md +52 -0
  236. package/app/skills/testing-patterns/reference/php-phpunit.md +39 -0
  237. package/app/skills/testing-patterns/reference/python-pytest.md +228 -0
  238. package/app/skills/testing-patterns/reference/typescript-vitest.md +50 -0
  239. package/app/skills/triage-issue/SKILL.md +120 -0
  240. package/app/skills/typescript-patterns/SKILL.md +256 -0
  241. package/app/skills/ubiquitous-language/SKILL.md +74 -0
  242. package/app/skills/verification-before-completion/SKILL.md +108 -0
  243. package/app/skills/workflow/SKILL.md +250 -0
  244. package/app/skills/write-a-prd/SKILL.md +129 -0
  245. package/app/skills/write-a-prd/reference/visual-companion.md +78 -0
  246. package/app/skills/write-a-prd/scripts/frame-template.html +111 -0
  247. package/app/skills/write-a-prd/scripts/visual-server.cjs +79 -0
  248. package/app/templates/skill/generator/SKILL.md.template +40 -0
  249. package/app/templates/skill/knowledge/SKILL.md.template +52 -0
  250. package/app/templates/skill/linter/SKILL.md.template +34 -0
  251. package/app/templates/skill/reviewer/SKILL.md.template +51 -0
  252. package/app/templates/skill/workflow/SKILL.md.template +49 -0
  253. package/benchmarks/README.md +111 -0
  254. package/benchmarks/ecosystem-dashboard.json +148 -0
  255. package/benchmarks/ecosystem-harvest.json +148 -0
  256. package/benchmarks/results.json +38 -0
  257. package/benchmarks/run.py +351 -0
  258. package/bin/ai-toolkit.js +345 -0
  259. package/kb/best-practices/README.md +11 -0
  260. package/kb/howto/README.md +11 -0
  261. package/kb/procedures/maintenance-sop.md +306 -0
  262. package/kb/reference/agents-catalog.md +124 -0
  263. package/kb/reference/anti-pattern-registry-format.md +221 -0
  264. package/kb/reference/architecture-overview.md +232 -0
  265. package/kb/reference/benchmark-config.md +62 -0
  266. package/kb/reference/ci-integration.md +66 -0
  267. package/kb/reference/claude-ecosystem-benchmark-snapshot.md +80 -0
  268. package/kb/reference/claude-ecosystem-expansion-foundations.md +102 -0
  269. package/kb/reference/commands-catalog.md +21 -0
  270. package/kb/reference/distribution-model.md +63 -0
  271. package/kb/reference/global-install-model.md +56 -0
  272. package/kb/reference/hierarchical-override-pattern.md +200 -0
  273. package/kb/reference/hooks-catalog.md +306 -0
  274. package/kb/reference/integrations.md +88 -0
  275. package/kb/reference/language-packs.md +52 -0
  276. package/kb/reference/merge-friendly-install-model.md +58 -0
  277. package/kb/reference/plugin-pack-conventions.md +151 -0
  278. package/kb/reference/quick-wins-implementation-summary.md +70 -0
  279. package/kb/reference/skill-templates.md +50 -0
  280. package/kb/reference/skills-catalog.md +215 -0
  281. package/kb/reference/skills-unification.md +57 -0
  282. package/kb/reference/stats.md +69 -0
  283. package/kb/reference/sync.md +76 -0
  284. package/kb/troubleshooting/README.md +11 -0
  285. package/llms-full.txt +3068 -0
  286. package/llms.txt +39 -0
  287. package/package.json +75 -0
  288. package/scripts/_common.py +160 -0
  289. package/scripts/add_rule.py +50 -0
  290. package/scripts/benchmark_config.py +127 -0
  291. package/scripts/benchmark_ecosystem.py +288 -0
  292. package/scripts/check_deps.py +260 -0
  293. package/scripts/create_skill.py +118 -0
  294. package/scripts/doctor.py +504 -0
  295. package/scripts/eject.py +113 -0
  296. package/scripts/emission.py +256 -0
  297. package/scripts/evaluate_skills.py +260 -0
  298. package/scripts/frontmatter.py +58 -0
  299. package/scripts/generate_agents_md.py +91 -0
  300. package/scripts/generate_aider_conf.py +51 -0
  301. package/scripts/generate_cline.py +35 -0
  302. package/scripts/generate_copilot.py +30 -0
  303. package/scripts/generate_cursor_rules.py +35 -0
  304. package/scripts/generate_gemini.py +28 -0
  305. package/scripts/generate_llms_txt.py +164 -0
  306. package/scripts/generate_roo_modes.py +80 -0
  307. package/scripts/generate_windsurf.py +35 -0
  308. package/scripts/generator_base.py +140 -0
  309. package/scripts/harvest_ecosystem.py +50 -0
  310. package/scripts/inject_rule_cli.py +101 -0
  311. package/scripts/inject_section_cli.py +47 -0
  312. package/scripts/injection.py +180 -0
  313. package/scripts/install.py +236 -0
  314. package/scripts/install_git_hooks.py +71 -0
  315. package/scripts/install_steps/__init__.py +5 -0
  316. package/scripts/install_steps/ai_tools.py +261 -0
  317. package/scripts/install_steps/hooks.py +90 -0
  318. package/scripts/install_steps/markers.py +79 -0
  319. package/scripts/install_steps/symlinks.py +87 -0
  320. package/scripts/merge-hooks.py +192 -0
  321. package/scripts/plugin.py +642 -0
  322. package/scripts/plugin_schema.py +138 -0
  323. package/scripts/remove_rule.py +58 -0
  324. package/scripts/stats.py +81 -0
  325. package/scripts/sync.py +215 -0
  326. package/scripts/uninstall.py +292 -0
  327. package/scripts/validate.py +700 -0
@@ -0,0 +1,260 @@
1
+ ---
2
+ name: design-engineering
3
+ description: "Loaded when user asks about UI animations or CSS design craft"
4
+ effort: medium
5
+ user-invocable: false
6
+ ---
7
+
8
+ # Design Engineering Skill
9
+
10
+ Based on Emil Kowalski's design engineering philosophy — UI polish, component craftsmanship, and the compound value of invisible details.
11
+
12
+ ## Core Principles
13
+
14
+ - **Taste is trainable.** Develops through studying exceptional work, reverse-engineering animations, and intentional practice.
15
+ - **Invisible details create love.** Most UI refinements users never consciously register — but combined they produce something stunning.
16
+ - **Beauty differentiates.** When functionality is table stakes, aesthetic excellence becomes genuine leverage.
17
+
18
+ ## Animation Decision Framework
19
+
20
+ ### Frequency determines approach
21
+
22
+ | Usage Pattern | Strategy |
23
+ |---|---|
24
+ | 100+ daily | No animation |
25
+ | Tens daily | Drastically reduce |
26
+ | Occasional | Standard animation |
27
+ | Rare/first-time | Add delight |
28
+
29
+ **Never animate keyboard-initiated actions** — they repeat hundreds of times daily, making animation feel sluggish.
30
+
31
+ ### Purpose validation
32
+
33
+ Every animation requires justification: spatial consistency, state indication, explanation, user feedback, or preventing jarring transitions. "It looks cool" alone disqualifies frequent interactions.
34
+
35
+ ### Easing rules
36
+
37
+ | Direction | Easing | Why |
38
+ |---|---|---|
39
+ | Entering elements | `ease-out` | Immediate feedback |
40
+ | On-screen movement | `ease-in-out` | Natural acceleration |
41
+ | Hover/color changes | `ease` | Smooth transition |
42
+ | Constant motion | `linear` | No acceleration |
43
+
44
+ **Critical:** Abandon default CSS easings. Use custom curves:
45
+
46
+ ```css
47
+ /* Punchy entrance */
48
+ transition-timing-function: cubic-bezier(0.23, 1, 0.32, 1);
49
+ ```
50
+
51
+ **Never use `ease-in`** — it delays initial movement exactly when attention peaks, making interfaces feel sluggish.
52
+
53
+ ### Duration guidelines
54
+
55
+ | Element | Timing |
56
+ |---|---|
57
+ | Button press | 100-160ms |
58
+ | Tooltips, small popovers | 125-200ms |
59
+ | Dropdowns, selects | 150-250ms |
60
+ | Modals, drawers | 200-500ms |
61
+
62
+ UI animations should stay **under 300ms**. Speed perception matters as much as actual speed.
63
+
64
+ ## Component Patterns
65
+
66
+ ### Buttons must respond
67
+
68
+ ```css
69
+ button:active {
70
+ transform: scale(0.97);
71
+ }
72
+ ```
73
+
74
+ Tactile feedback confirming interface responsiveness.
75
+
76
+ ### Never scale from zero
77
+
78
+ ```css
79
+ /* Bad */
80
+ .enter { transform: scale(0); opacity: 0; }
81
+
82
+ /* Good — natural entrance */
83
+ .enter { transform: scale(0.95); opacity: 0; }
84
+ ```
85
+
86
+ Real-world objects don't vanish and reappear. Start from `scale(0.95)`.
87
+
88
+ ### Popovers scale from triggers
89
+
90
+ ```css
91
+ .popover {
92
+ transform-origin: var(--radix-popover-content-transform-origin);
93
+ }
94
+ ```
95
+
96
+ Exception: modals keep centered origin (viewport-anchored, not trigger-anchored).
97
+
98
+ ### Tooltip optimization
99
+
100
+ Initial tooltip includes delay; subsequent hovers skip both delay and animation via `[data-instant]` attribute — perceived speed without defeating accidental activation prevention.
101
+
102
+ ## Transform Mastery
103
+
104
+ ### Percentage translations
105
+
106
+ ```css
107
+ /* Moves by own height — perfect for toasts, drawers */
108
+ transform: translateY(100%);
109
+ ```
110
+
111
+ No hardcoded pixel values needed.
112
+
113
+ ### Scale affects children
114
+
115
+ Unlike `width`/`height`, `scale()` proportionally scales content, icons, and text. Intentional feature, not a bug.
116
+
117
+ ### 3D transforms
118
+
119
+ ```css
120
+ .orbit {
121
+ transform-style: preserve-3d;
122
+ }
123
+ ```
124
+
125
+ Enables orbit animations and coin flips without JavaScript.
126
+
127
+ ## Clip-path Animation
128
+
129
+ `clip-path: inset(top right bottom left)` creates rectangular clipping regions:
130
+
131
+ ### Tab color transitions
132
+
133
+ Stack tab lists, clip the active copy, animate clip-path on change for seamless color shifting.
134
+
135
+ ### Hold-to-delete
136
+
137
+ ```css
138
+ .delete-overlay {
139
+ clip-path: inset(0 100% 0 0);
140
+ transition: clip-path 2s linear;
141
+ }
142
+ .delete-button:active .delete-overlay {
143
+ clip-path: inset(0 0 0 0);
144
+ }
145
+ /* Release snaps back fast */
146
+ .delete-overlay {
147
+ transition: clip-path 200ms ease-out;
148
+ }
149
+ ```
150
+
151
+ ### Image reveals
152
+
153
+ ```css
154
+ .reveal {
155
+ clip-path: inset(0 0 100% 0); /* hidden */
156
+ }
157
+ .reveal.visible {
158
+ clip-path: inset(0 0 0 0); /* revealed */
159
+ }
160
+ ```
161
+
162
+ ### Comparison sliders
163
+
164
+ Overlay images, clip top one by adjusting right inset based on drag position.
165
+
166
+ ## Performance Rules
167
+
168
+ ### GPU acceleration
169
+
170
+ Only animate `transform` and `opacity` — these skip layout and paint. Animating `padding`, `margin`, `height`, `width` triggers full rendering pipeline.
171
+
172
+ ### CSS variables caveat
173
+
174
+ Changing parent CSS variables recalculates styles on all children. Update `transform` directly on elements instead.
175
+
176
+ ### Framer Motion gotcha
177
+
178
+ Shorthand properties (`x`, `y`, `scale`) use main-thread `requestAnimationFrame`, not GPU:
179
+
180
+ ```tsx
181
+ // Bad — main thread
182
+ <motion.div animate={{ x: 100 }} />
183
+
184
+ // Good — GPU accelerated
185
+ <motion.div animate={{ transform: "translateX(100px)" }} />
186
+ ```
187
+
188
+ ### CSS beats JavaScript
189
+
190
+ CSS animations run off-thread and remain smooth during page loads. Framer Motion drops frames when browser is busy. Use CSS for predetermined animations; JavaScript for dynamic, interruptible ones.
191
+
192
+ ## Accessibility
193
+
194
+ ### Reduced motion
195
+
196
+ Keep opacity and color transitions (aid comprehension). Remove movement and position animations:
197
+
198
+ ```css
199
+ @media (prefers-reduced-motion: reduce) {
200
+ * {
201
+ animation-duration: 0.01ms !important;
202
+ transition-duration: 0.01ms !important;
203
+ }
204
+ }
205
+ ```
206
+
207
+ ### Touch hover protection
208
+
209
+ ```css
210
+ @media (hover: hover) and (pointer: fine) {
211
+ .card:hover {
212
+ transform: translateY(-2px);
213
+ }
214
+ }
215
+ ```
216
+
217
+ Touch triggers false hover positives — always gate hover animations.
218
+
219
+ ## Building Loved Components
220
+
221
+ Five principles (from Sonner, 13M+ weekly downloads):
222
+
223
+ 1. **Developer experience first** — minimal setup friction, insert once, use globally
224
+ 2. **Excellent defaults** — ship beautifully configured out-of-box
225
+ 3. **Identity through naming** — a memorable name resonates
226
+ 4. **Invisible edge cases** — pause timers when hidden, handle pointer capture during drag
227
+ 5. **Transitions over keyframes** — rapid additions cause keyframe restart from zero; transitions retarget smoothly
228
+
229
+ ### Cohesion
230
+
231
+ Animation personality should match component identity. Playful components can bounce; professional dashboards stay crisp.
232
+
233
+ ### Asymmetric timing
234
+
235
+ Deliberate actions stay slow (2s linear for hold-to-delete), system responses snap fast (200ms ease-out for release).
236
+
237
+ ## Review Checklist
238
+
239
+ | Issue | Resolution |
240
+ |---|---|
241
+ | `transition: all` | Specify properties: `transition: transform 200ms ease-out` |
242
+ | `scale(0)` entries | Start `scale(0.95)` with `opacity: 0` |
243
+ | `ease-in` on UI | Switch to `ease-out` or custom curve |
244
+ | Popover `transform-origin: center` | Use trigger-aware CSS variable |
245
+ | Animation on keyboard actions | Remove entirely |
246
+ | Duration > 300ms UI | Reduce to 150-250ms |
247
+ | Hover without media query | Add `@media (hover: hover) and (pointer: fine)` |
248
+ | Keyframes on rapid triggers | Use CSS transitions |
249
+ | Framer `x`/`y` under load | Use `transform: "translateX()"` |
250
+ | Identical enter/exit speed | Make exit faster (e.g., 2s enter, 200ms exit) |
251
+ | Simultaneous element appearance | Stagger 30-80ms between items |
252
+
253
+ ## Anti-Patterns
254
+
255
+ - `transition: all` — animates unintended properties, hurts performance
256
+ - `ease-in` on UI elements — delays feedback when attention peaks
257
+ - Animating `height`/`width`/`margin` — triggers layout recalculation
258
+ - Same duration for enter and exit — exits should be faster
259
+ - Hover effects without `@media (hover: hover)` — breaks touch devices
260
+ - Framer Motion shorthands under load — drops frames on main thread
@@ -0,0 +1,303 @@
1
+ ---
2
+ name: docker-devops
3
+ description: "Loaded when user asks about Docker, containers, or DevOps patterns"
4
+ effort: medium
5
+ user-invocable: false
6
+ ---
7
+
8
+ # Docker & DevOps Skill
9
+
10
+ ## Dockerfile Best Practices
11
+
12
+ ### Multi-Stage Build (Node.js)
13
+
14
+ ```dockerfile
15
+ # Build stage
16
+ FROM node:20-alpine AS builder
17
+ WORKDIR /app
18
+ COPY package*.json ./
19
+ RUN npm ci
20
+ COPY . .
21
+ RUN npm run build
22
+
23
+ # Production stage
24
+ FROM node:20-alpine AS runner
25
+ WORKDIR /app
26
+ ENV NODE_ENV=production
27
+
28
+ # Non-root user
29
+ RUN addgroup -g 1001 -S nodejs
30
+ RUN adduser -S nextjs -u 1001
31
+
32
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
33
+ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
34
+ COPY --from=builder --chown=nextjs:nodejs /app/public ./public
35
+
36
+ USER nextjs
37
+ EXPOSE 3000
38
+ CMD ["node", "server.js"]
39
+ ```
40
+
41
+ ### Multi-Stage Build (Python)
42
+
43
+ ```dockerfile
44
+ # Build stage
45
+ FROM python:3.12-slim AS builder
46
+ WORKDIR /app
47
+ RUN pip install --no-cache-dir poetry
48
+ COPY pyproject.toml poetry.lock ./
49
+ RUN poetry export -f requirements.txt -o requirements.txt
50
+
51
+ # Production stage
52
+ FROM python:3.12-slim
53
+ WORKDIR /app
54
+
55
+ # Non-root user
56
+ RUN useradd -m -u 1000 appuser
57
+
58
+ COPY --from=builder /app/requirements.txt .
59
+ RUN pip install --no-cache-dir -r requirements.txt
60
+
61
+ COPY --chown=appuser:appuser . .
62
+ USER appuser
63
+
64
+ EXPOSE 8000
65
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Docker Compose Patterns
71
+
72
+ ### Development Setup
73
+
74
+ ```yaml
75
+ version: '3.8'
76
+
77
+ services:
78
+ app:
79
+ build:
80
+ context: .
81
+ dockerfile: Dockerfile.dev
82
+ volumes:
83
+ - .:/app
84
+ - /app/node_modules
85
+ ports:
86
+ - "3000:3000"
87
+ environment:
88
+ - NODE_ENV=development
89
+ - DATABASE_URL=postgresql://postgres:postgres@db:5432/app
90
+ depends_on:
91
+ - db
92
+ - redis
93
+
94
+ db:
95
+ image: postgres:16-alpine
96
+ volumes:
97
+ - postgres_data:/var/lib/postgresql/data
98
+ environment:
99
+ POSTGRES_USER: postgres
100
+ POSTGRES_PASSWORD: postgres
101
+ POSTGRES_DB: app
102
+ ports:
103
+ - "5432:5432"
104
+
105
+ redis:
106
+ image: redis:7-alpine
107
+ ports:
108
+ - "6379:6379"
109
+
110
+ volumes:
111
+ postgres_data:
112
+ ```
113
+
114
+ ### Production Setup
115
+
116
+ ```yaml
117
+ version: '3.8'
118
+
119
+ services:
120
+ app:
121
+ image: ${REGISTRY}/app:${TAG}
122
+ restart: unless-stopped
123
+ ports:
124
+ - "3000:3000"
125
+ environment:
126
+ - NODE_ENV=production
127
+ - DATABASE_URL=${DATABASE_URL}
128
+ healthcheck:
129
+ test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
130
+ interval: 30s
131
+ timeout: 10s
132
+ retries: 3
133
+ deploy:
134
+ resources:
135
+ limits:
136
+ cpus: '1'
137
+ memory: 512M
138
+ ```
139
+
140
+ ---
141
+
142
+ ## CI/CD Patterns
143
+
144
+ ### GitHub Actions (Node.js)
145
+
146
+ ```yaml
147
+ name: CI/CD
148
+
149
+ on:
150
+ push:
151
+ branches: [main]
152
+ pull_request:
153
+ branches: [main]
154
+
155
+ jobs:
156
+ test:
157
+ runs-on: ubuntu-latest
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+ - uses: actions/setup-node@v4
161
+ with:
162
+ node-version: '20'
163
+ cache: 'npm'
164
+ - run: npm ci
165
+ - run: npm run lint
166
+ - run: npm run test
167
+ - run: npm run build
168
+
169
+ deploy:
170
+ needs: test
171
+ if: github.ref == 'refs/heads/main'
172
+ runs-on: ubuntu-latest
173
+ steps:
174
+ - uses: actions/checkout@v4
175
+ - name: Deploy to production
176
+ run: |
177
+ # Deploy commands
178
+ ```
179
+
180
+ ### GitHub Actions (Python)
181
+
182
+ ```yaml
183
+ name: CI/CD
184
+
185
+ on:
186
+ push:
187
+ branches: [main]
188
+ pull_request:
189
+
190
+ jobs:
191
+ test:
192
+ runs-on: ubuntu-latest
193
+ steps:
194
+ - uses: actions/checkout@v4
195
+ - uses: actions/setup-python@v5
196
+ with:
197
+ python-version: '3.12'
198
+ - name: Install dependencies
199
+ run: |
200
+ pip install poetry
201
+ poetry install
202
+ - name: Lint
203
+ run: poetry run ruff check .
204
+ - name: Type check
205
+ run: poetry run mypy .
206
+ - name: Test
207
+ run: poetry run pytest --cov
208
+ ```
209
+
210
+ ---
211
+
212
+ ## Infrastructure as Code
213
+
214
+ ### Terraform Basic Structure
215
+
216
+ ```
217
+ infrastructure/
218
+ ├── main.tf
219
+ ├── variables.tf
220
+ ├── outputs.tf
221
+ ├── providers.tf
222
+ ├── modules/
223
+ │ ├── networking/
224
+ │ ├── compute/
225
+ │ └── database/
226
+ └── environments/
227
+ ├── dev/
228
+ ├── staging/
229
+ └── prod/
230
+ ```
231
+
232
+ ### Terraform Best Practices
233
+
234
+ ```hcl
235
+ # variables.tf
236
+ variable "environment" {
237
+ description = "Environment name"
238
+ type = string
239
+ validation {
240
+ condition = contains(["dev", "staging", "prod"], var.environment)
241
+ error_message = "Environment must be dev, staging, or prod."
242
+ }
243
+ }
244
+
245
+ # main.tf
246
+ resource "aws_instance" "app" {
247
+ ami = var.ami_id
248
+ instance_type = var.instance_type
249
+
250
+ tags = {
251
+ Name = "${var.project}-${var.environment}-app"
252
+ Environment = var.environment
253
+ ManagedBy = "terraform"
254
+ }
255
+ }
256
+ ```
257
+
258
+ ---
259
+
260
+ ## Health Checks
261
+
262
+ ### HTTP Health Check
263
+
264
+ ```python
265
+ # FastAPI
266
+ @app.get("/health")
267
+ async def health_check():
268
+ return {
269
+ "status": "healthy",
270
+ "timestamp": datetime.utcnow().isoformat(),
271
+ "version": settings.VERSION
272
+ }
273
+
274
+ @app.get("/ready")
275
+ async def readiness_check():
276
+ # Check database
277
+ try:
278
+ await db.execute("SELECT 1")
279
+ except Exception:
280
+ raise HTTPException(503, "Database not ready")
281
+
282
+ return {"status": "ready"}
283
+ ```
284
+
285
+ ### Docker Health Check
286
+
287
+ ```dockerfile
288
+ HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
289
+ CMD curl -f http://localhost:3000/health || exit 1
290
+ ```
291
+
292
+ ---
293
+
294
+ ## Security Checklist
295
+
296
+ - [ ] No secrets in Dockerfile or compose
297
+ - [ ] Non-root user in container
298
+ - [ ] Minimal base image (alpine, distroless)
299
+ - [ ] Pinned image versions
300
+ - [ ] Read-only filesystem where possible
301
+ - [ ] Resource limits defined
302
+ - [ ] Health checks configured
303
+ - [ ] Logs to stdout/stderr
@@ -0,0 +1,145 @@
1
+ ---
2
+ name: docs
3
+ description: "Generate and update README, API docs, and architecture notes"
4
+ user-invocable: true
5
+ effort: high
6
+ argument-hint: "[type: readme/api/architecture-note]"
7
+ agent: documenter
8
+ context: fork
9
+ allowed-tools: Read, Write, Grep, Glob
10
+ ---
11
+
12
+ # Generate Documentation
13
+
14
+ $ARGUMENTS
15
+
16
+ Generate or update documentation.
17
+
18
+ ## Usage
19
+
20
+ ```
21
+ /docs [type] [target]
22
+ ```
23
+
24
+ ## What This Command Does
25
+
26
+ 1. **Analyzes** code structure
27
+ 2. **Extracts** documentation info
28
+ 3. **Generates** documentation files
29
+ 4. **Updates** existing docs
30
+
31
+ ## Documentation Types
32
+
33
+ | Type | Description |
34
+ |------|-------------|
35
+ | `readme` | Generate/update README |
36
+ | `api` | API documentation |
37
+ | `architecture-note` | Architecture note |
38
+ | `changelog` | Generate changelog |
39
+ | `comments` | Add code comments |
40
+ | `kb` | Knowledge base entry (enforces KB structure) |
41
+
42
+ ## KB Document Rules (MANDATORY)
43
+
44
+ When creating or updating documents in the `kb/` directory, follow the `documentation-standards` knowledge skill (auto-loaded). Key rules:
45
+
46
+ - **7 required frontmatter fields:** title, category, service, tags, created, last_updated, description
47
+ - **5 valid categories:** reference, howto, procedures, troubleshooting, best-practices
48
+ - **Category must match directory** (e.g., `category: howto` → `kb/howto/`)
49
+ - **English only.** No exceptions.
50
+ - **validate.sh rejects docs without valid frontmatter.**
51
+
52
+ Full spec: see `app/skills/documentation-standards/SKILL.md`.
53
+
54
+ ## Templates
55
+
56
+ ### README Generation
57
+ ```markdown
58
+ # [Project Name]
59
+
60
+ [Auto-generated description]
61
+
62
+ ## Installation
63
+ [Detected from package manager]
64
+
65
+ ## Usage
66
+ [Extracted from code/examples]
67
+
68
+ ## API
69
+ [Extracted from code]
70
+
71
+ ## License
72
+ [Detected]
73
+ ```
74
+
75
+ ### Architecture Note Template
76
+ ```markdown
77
+ # Architecture Note: [TITLE]
78
+
79
+ ## Status
80
+ Proposed
81
+
82
+ ## Context
83
+ [What is the issue?]
84
+
85
+ ## Decision
86
+ [What was decided?]
87
+
88
+ ## Consequences
89
+ [What are the results?]
90
+
91
+ ## Date
92
+ [Today's date]
93
+ ```
94
+
95
+ ## Output Format
96
+
97
+ ```markdown
98
+ ## Documentation Report
99
+
100
+ ### Generated
101
+ - [file 1]
102
+ - [file 2]
103
+
104
+ ### Updated
105
+ - [file 3]: [what changed]
106
+
107
+ ### Skipped
108
+ - [file 4]: [reason]
109
+
110
+ ### Next Steps
111
+ - [ ] Review generated docs
112
+ - [ ] Add missing details
113
+ - [ ] Commit changes
114
+ ```
115
+
116
+ ## Configuration
117
+
118
+ Documentation settings in:
119
+ - `.claude/settings.json`
120
+ - Project's doc config
121
+
122
+ ## REVIEW BEFORE COMMIT
123
+
124
+ Generated documentation should be reviewed.
125
+ AI may miss context or make assumptions.
126
+
127
+ ## Documentation Inventory
128
+
129
+ Run the bundled script to audit documentation coverage and find gaps:
130
+
131
+ ```bash
132
+ python3 ${CLAUDE_SKILL_DIR}/scripts/doc-inventory.py .
133
+ ```
134
+
135
+ ## Parallel Documentation (large codebases)
136
+
137
+ If the inventory script reports `doc_coverage_percent < 50` and the project has multiple modules, use Agent Teams for parallel documentation:
138
+
139
+ ```
140
+ Create an agent team for documentation:
141
+ - Teammate 1 (documenter): "Document the [module-1] directory. Generate docstrings for all public functions." Use Sonnet.
142
+ - Teammate 2 (documenter): "Document the [module-2] directory. Generate docstrings for all public functions." Use Sonnet.
143
+ - Teammate 3 (documenter): "Generate README sections: installation, usage, API reference." Use Opus.
144
+ Teammates should NOT overlap — each owns their assigned scope.
145
+ ```