@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.
- package/AGENTS.md +412 -0
- package/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +632 -0
- package/action.yml +53 -0
- package/app/.claude-plugin/plugin.json +44 -0
- package/app/ARCHITECTURE.md +306 -0
- package/app/CLAUDE.md.template +23 -0
- package/app/agents/ai-engineer.md +128 -0
- package/app/agents/backend-specialist.md +193 -0
- package/app/agents/business-intelligence.md +54 -0
- package/app/agents/chaos-monkey.md +67 -0
- package/app/agents/chief-of-staff.md +51 -0
- package/app/agents/code-archaeologist.md +127 -0
- package/app/agents/code-reviewer.md +184 -0
- package/app/agents/command-expert.md +131 -0
- package/app/agents/data-analyst.md +205 -0
- package/app/agents/data-scientist.md +151 -0
- package/app/agents/database-architect.md +317 -0
- package/app/agents/debugger.md +238 -0
- package/app/agents/devops-implementer.md +194 -0
- package/app/agents/documenter.md +364 -0
- package/app/agents/explorer-agent.md +145 -0
- package/app/agents/fact-checker.md +172 -0
- package/app/agents/frontend-specialist.md +209 -0
- package/app/agents/game-developer.md +216 -0
- package/app/agents/incident-responder.md +226 -0
- package/app/agents/infrastructure-architect.md +127 -0
- package/app/agents/infrastructure-validator.md +247 -0
- package/app/agents/llm-ops-engineer.md +237 -0
- package/app/agents/mcp-expert.md +228 -0
- package/app/agents/mcp-server-architect.md +195 -0
- package/app/agents/mcp-testing-engineer.md +292 -0
- package/app/agents/meta-architect.md +58 -0
- package/app/agents/ml-engineer.md +136 -0
- package/app/agents/mobile-developer.md +190 -0
- package/app/agents/night-watchman.md +55 -0
- package/app/agents/nlp-engineer.md +154 -0
- package/app/agents/orchestrator.md +437 -0
- package/app/agents/performance-optimizer.md +254 -0
- package/app/agents/predictive-analyst.md +57 -0
- package/app/agents/product-manager.md +194 -0
- package/app/agents/project-planner.md +287 -0
- package/app/agents/prompt-engineer.md +103 -0
- package/app/agents/qa-automation-engineer.md +182 -0
- package/app/agents/rag-engineer.md +201 -0
- package/app/agents/research-synthesizer.md +138 -0
- package/app/agents/search-specialist.md +101 -0
- package/app/agents/security-architect.md +62 -0
- package/app/agents/security-auditor.md +293 -0
- package/app/agents/seo-specialist.md +111 -0
- package/app/agents/system-governor.md +57 -0
- package/app/agents/tech-lead.md +62 -0
- package/app/agents/technical-researcher.md +103 -0
- package/app/agents/test-engineer.md +264 -0
- package/app/constitution.md +38 -0
- package/app/hooks/_profile-check.sh +11 -0
- package/app/hooks/guard-destructive.sh +74 -0
- package/app/hooks/guard-path.sh +73 -0
- package/app/hooks/post-tool-use.sh +35 -0
- package/app/hooks/pre-compact.sh +31 -0
- package/app/hooks/quality-check.sh +22 -0
- package/app/hooks/quality-gate.sh +49 -0
- package/app/hooks/save-session.sh +24 -0
- package/app/hooks/session-end.sh +37 -0
- package/app/hooks/session-start.sh +29 -0
- package/app/hooks/subagent-start.sh +16 -0
- package/app/hooks/subagent-stop.sh +16 -0
- package/app/hooks/track-usage.sh +50 -0
- package/app/hooks/user-prompt-submit.sh +25 -0
- package/app/hooks.json +178 -0
- package/app/mcp-defaults.json +23 -0
- package/app/output-styles/golden-rules.md +43 -0
- package/app/plugins/README.md +19 -0
- package/app/plugins/csharp-pack/README.md +11 -0
- package/app/plugins/csharp-pack/plugin.json +18 -0
- package/app/plugins/enterprise-pack/README.md +16 -0
- package/app/plugins/enterprise-pack/hooks/output-style.sh +6 -0
- package/app/plugins/enterprise-pack/hooks/status-line.sh +8 -0
- package/app/plugins/enterprise-pack/plugin.json +24 -0
- package/app/plugins/frontend-pack/README.md +14 -0
- package/app/plugins/frontend-pack/plugin.json +22 -0
- package/app/plugins/java-pack/README.md +11 -0
- package/app/plugins/java-pack/plugin.json +18 -0
- package/app/plugins/kotlin-pack/README.md +11 -0
- package/app/plugins/kotlin-pack/plugin.json +18 -0
- package/app/plugins/memory-pack/README.md +24 -0
- package/app/plugins/memory-pack/hooks/observation-capture.sh +67 -0
- package/app/plugins/memory-pack/hooks/session-summary.sh +71 -0
- package/app/plugins/memory-pack/plugin.json +22 -0
- package/app/plugins/memory-pack/scripts/init_db.py +81 -0
- package/app/plugins/memory-pack/scripts/strip_private.py +22 -0
- package/app/plugins/memory-pack/skills/mem-search/SKILL.md +70 -0
- package/app/plugins/research-pack/README.md +14 -0
- package/app/plugins/research-pack/plugin.json +22 -0
- package/app/plugins/ruby-pack/README.md +11 -0
- package/app/plugins/ruby-pack/plugin.json +18 -0
- package/app/plugins/rust-pack/README.md +11 -0
- package/app/plugins/rust-pack/plugin.json +18 -0
- package/app/plugins/security-pack/README.md +15 -0
- package/app/plugins/security-pack/plugin.json +23 -0
- package/app/plugins/swift-pack/README.md +11 -0
- package/app/plugins/swift-pack/plugin.json +18 -0
- package/app/rules/claude-toolkit-rules.md +21 -0
- package/app/rules/git-conventions.md +5 -0
- package/app/rules/quality-gates.md +10 -0
- package/app/skills/_lib/__init__.py +1 -0
- package/app/skills/_lib/detect_utils.py +150 -0
- package/app/skills/agent-creator/SKILL.md +82 -0
- package/app/skills/analyze/SKILL.md +92 -0
- package/app/skills/analyze/scripts/complexity.py +165 -0
- package/app/skills/api-patterns/SKILL.md +305 -0
- package/app/skills/app-builder/SKILL.md +187 -0
- package/app/skills/architecture-audit/SKILL.md +141 -0
- package/app/skills/architecture-decision/SKILL.md +55 -0
- package/app/skills/architecture-decision/templates/adr-template.md +36 -0
- package/app/skills/biz-scan/SKILL.md +30 -0
- package/app/skills/briefing/SKILL.md +27 -0
- package/app/skills/build/SKILL.md +97 -0
- package/app/skills/build/scripts/detect-build.py +151 -0
- package/app/skills/chaos/SKILL.md +32 -0
- package/app/skills/ci/SKILL.md +77 -0
- package/app/skills/ci/scripts/ci-detect.py +135 -0
- package/app/skills/ci/templates/github-actions-node.yml +38 -0
- package/app/skills/ci/templates/github-actions-python.yml +42 -0
- package/app/skills/ci-cd-patterns/SKILL.md +299 -0
- package/app/skills/clean-code/SKILL.md +110 -0
- package/app/skills/clean-code/reference/dart.md +18 -0
- package/app/skills/clean-code/reference/go.md +23 -0
- package/app/skills/clean-code/reference/php.md +32 -0
- package/app/skills/clean-code/reference/python.md +180 -0
- package/app/skills/clean-code/reference/typescript.md +26 -0
- package/app/skills/command-creator/SKILL.md +83 -0
- package/app/skills/commit/SKILL.md +98 -0
- package/app/skills/commit/scripts/pre-commit-check.py +87 -0
- package/app/skills/commit/templates/conventional-commit.md +52 -0
- package/app/skills/csharp-patterns/SKILL.md +450 -0
- package/app/skills/database-patterns/SKILL.md +297 -0
- package/app/skills/debug/SKILL.md +154 -0
- package/app/skills/debug/scripts/error-parser.py +187 -0
- package/app/skills/debugging-tactics/SKILL.md +136 -0
- package/app/skills/deploy/SKILL.md +130 -0
- package/app/skills/deploy/scripts/pre_deploy_check.py +171 -0
- package/app/skills/deploy/templates/deployment-checklist.md +31 -0
- package/app/skills/design-an-interface/SKILL.md +105 -0
- package/app/skills/design-engineering/SKILL.md +260 -0
- package/app/skills/docker-devops/SKILL.md +303 -0
- package/app/skills/docs/SKILL.md +145 -0
- package/app/skills/docs/scripts/doc-inventory.py +176 -0
- package/app/skills/docs/templates/adr-template.md +36 -0
- package/app/skills/docs/templates/readme-template.md +67 -0
- package/app/skills/documentation-standards/SKILL.md +191 -0
- package/app/skills/ecommerce-patterns/SKILL.md +209 -0
- package/app/skills/evaluate/SKILL.md +132 -0
- package/app/skills/evolve/SKILL.md +27 -0
- package/app/skills/explain/SKILL.md +54 -0
- package/app/skills/explain/scripts/dependency-graph.py +215 -0
- package/app/skills/explore/SKILL.md +112 -0
- package/app/skills/explore/scripts/visualize.py +117 -0
- package/app/skills/fix/SKILL.md +78 -0
- package/app/skills/fix/scripts/error-classifier.py +191 -0
- package/app/skills/flutter-patterns/SKILL.md +254 -0
- package/app/skills/git-mastery/SKILL.md +70 -0
- package/app/skills/grill-me/SKILL.md +38 -0
- package/app/skills/health/SKILL.md +91 -0
- package/app/skills/health/scripts/health_check.py +162 -0
- package/app/skills/hive-mind/SKILL.md +56 -0
- package/app/skills/hook-creator/SKILL.md +107 -0
- package/app/skills/index/SKILL.md +74 -0
- package/app/skills/instinct-review/SKILL.md +77 -0
- package/app/skills/java-patterns/SKILL.md +442 -0
- package/app/skills/kotlin-patterns/SKILL.md +446 -0
- package/app/skills/lint/SKILL.md +103 -0
- package/app/skills/lint/scripts/detect-linters.py +112 -0
- package/app/skills/mcp-patterns/SKILL.md +270 -0
- package/app/skills/mem-search/SKILL.md +70 -0
- package/app/skills/migrate/SKILL.md +90 -0
- package/app/skills/migrate/scripts/migration-status.py +195 -0
- package/app/skills/migration-patterns/SKILL.md +260 -0
- package/app/skills/night-watch/SKILL.md +28 -0
- package/app/skills/observability-patterns/SKILL.md +203 -0
- package/app/skills/onboard/SKILL.md +76 -0
- package/app/skills/orchestrate/SKILL.md +86 -0
- package/app/skills/panic/SKILL.md +30 -0
- package/app/skills/performance-profiling/SKILL.md +59 -0
- package/app/skills/plan/SKILL.md +110 -0
- package/app/skills/plan/templates/plan-template.md +40 -0
- package/app/skills/plan-writing/SKILL.md +201 -0
- package/app/skills/plugin-creator/SKILL.md +78 -0
- package/app/skills/pr/SKILL.md +129 -0
- package/app/skills/pr/scripts/pr-summary.py +175 -0
- package/app/skills/prd-to-issues/SKILL.md +108 -0
- package/app/skills/prd-to-plan/SKILL.md +120 -0
- package/app/skills/predict/SKILL.md +30 -0
- package/app/skills/qa-session/SKILL.md +110 -0
- package/app/skills/rag-patterns/SKILL.md +203 -0
- package/app/skills/refactor/SKILL.md +124 -0
- package/app/skills/refactor/scripts/refactor-scan.py +210 -0
- package/app/skills/refactor-plan/SKILL.md +112 -0
- package/app/skills/repeat/SKILL.md +149 -0
- package/app/skills/research-mastery/SKILL.md +56 -0
- package/app/skills/review/SKILL.md +141 -0
- package/app/skills/review/scripts/diff-analyzer.py +170 -0
- package/app/skills/rollback/SKILL.md +87 -0
- package/app/skills/rollback/scripts/rollback_info.py +149 -0
- package/app/skills/ruby-patterns/SKILL.md +454 -0
- package/app/skills/rust-patterns/SKILL.md +446 -0
- package/app/skills/search/SKILL.md +64 -0
- package/app/skills/security-patterns/SKILL.md +91 -0
- package/app/skills/security-patterns/reference/authentication.md +37 -0
- package/app/skills/security-patterns/reference/authorization.md +22 -0
- package/app/skills/security-patterns/reference/input-validation.md +30 -0
- package/app/skills/security-patterns/reference/oauth-csrf-audit.md +131 -0
- package/app/skills/skill-creator/SKILL.md +154 -0
- package/app/skills/skill-creator/templates/dashboard/index.html +130 -0
- package/app/skills/skill-creator/templates/reasoning-engine/assets/example.json +12 -0
- package/app/skills/skill-creator/templates/reasoning-engine/search.py +110 -0
- package/app/skills/subagent-development/SKILL.md +225 -0
- package/app/skills/subagent-development/reference/code-quality-reviewer-prompt.md +145 -0
- package/app/skills/subagent-development/reference/implementer-prompt.md +118 -0
- package/app/skills/subagent-development/reference/spec-reviewer-prompt.md +100 -0
- package/app/skills/swarm/SKILL.md +81 -0
- package/app/skills/swift-patterns/SKILL.md +500 -0
- package/app/skills/tdd/SKILL.md +174 -0
- package/app/skills/tdd/reference/deep-modules.md +32 -0
- package/app/skills/tdd/reference/interface-design.md +32 -0
- package/app/skills/tdd/reference/mocking.md +52 -0
- package/app/skills/tdd/reference/refactoring.md +10 -0
- package/app/skills/tdd/reference/tests.md +59 -0
- package/app/skills/teams/SKILL.md +101 -0
- package/app/skills/test/SKILL.md +107 -0
- package/app/skills/test/scripts/detect-runner.py +113 -0
- package/app/skills/testing-patterns/SKILL.md +73 -0
- package/app/skills/testing-patterns/reference/flutter-testing.md +33 -0
- package/app/skills/testing-patterns/reference/go-testing.md +52 -0
- package/app/skills/testing-patterns/reference/php-phpunit.md +39 -0
- package/app/skills/testing-patterns/reference/python-pytest.md +228 -0
- package/app/skills/testing-patterns/reference/typescript-vitest.md +50 -0
- package/app/skills/triage-issue/SKILL.md +120 -0
- package/app/skills/typescript-patterns/SKILL.md +256 -0
- package/app/skills/ubiquitous-language/SKILL.md +74 -0
- package/app/skills/verification-before-completion/SKILL.md +108 -0
- package/app/skills/workflow/SKILL.md +250 -0
- package/app/skills/write-a-prd/SKILL.md +129 -0
- package/app/skills/write-a-prd/reference/visual-companion.md +78 -0
- package/app/skills/write-a-prd/scripts/frame-template.html +111 -0
- package/app/skills/write-a-prd/scripts/visual-server.cjs +79 -0
- package/app/templates/skill/generator/SKILL.md.template +40 -0
- package/app/templates/skill/knowledge/SKILL.md.template +52 -0
- package/app/templates/skill/linter/SKILL.md.template +34 -0
- package/app/templates/skill/reviewer/SKILL.md.template +51 -0
- package/app/templates/skill/workflow/SKILL.md.template +49 -0
- package/benchmarks/README.md +111 -0
- package/benchmarks/ecosystem-dashboard.json +148 -0
- package/benchmarks/ecosystem-harvest.json +148 -0
- package/benchmarks/results.json +38 -0
- package/benchmarks/run.py +351 -0
- package/bin/ai-toolkit.js +345 -0
- package/kb/best-practices/README.md +11 -0
- package/kb/howto/README.md +11 -0
- package/kb/procedures/maintenance-sop.md +306 -0
- package/kb/reference/agents-catalog.md +124 -0
- package/kb/reference/anti-pattern-registry-format.md +221 -0
- package/kb/reference/architecture-overview.md +232 -0
- package/kb/reference/benchmark-config.md +62 -0
- package/kb/reference/ci-integration.md +66 -0
- package/kb/reference/claude-ecosystem-benchmark-snapshot.md +80 -0
- package/kb/reference/claude-ecosystem-expansion-foundations.md +102 -0
- package/kb/reference/commands-catalog.md +21 -0
- package/kb/reference/distribution-model.md +63 -0
- package/kb/reference/global-install-model.md +56 -0
- package/kb/reference/hierarchical-override-pattern.md +200 -0
- package/kb/reference/hooks-catalog.md +306 -0
- package/kb/reference/integrations.md +88 -0
- package/kb/reference/language-packs.md +52 -0
- package/kb/reference/merge-friendly-install-model.md +58 -0
- package/kb/reference/plugin-pack-conventions.md +151 -0
- package/kb/reference/quick-wins-implementation-summary.md +70 -0
- package/kb/reference/skill-templates.md +50 -0
- package/kb/reference/skills-catalog.md +215 -0
- package/kb/reference/skills-unification.md +57 -0
- package/kb/reference/stats.md +69 -0
- package/kb/reference/sync.md +76 -0
- package/kb/troubleshooting/README.md +11 -0
- package/llms-full.txt +3068 -0
- package/llms.txt +39 -0
- package/package.json +75 -0
- package/scripts/_common.py +160 -0
- package/scripts/add_rule.py +50 -0
- package/scripts/benchmark_config.py +127 -0
- package/scripts/benchmark_ecosystem.py +288 -0
- package/scripts/check_deps.py +260 -0
- package/scripts/create_skill.py +118 -0
- package/scripts/doctor.py +504 -0
- package/scripts/eject.py +113 -0
- package/scripts/emission.py +256 -0
- package/scripts/evaluate_skills.py +260 -0
- package/scripts/frontmatter.py +58 -0
- package/scripts/generate_agents_md.py +91 -0
- package/scripts/generate_aider_conf.py +51 -0
- package/scripts/generate_cline.py +35 -0
- package/scripts/generate_copilot.py +30 -0
- package/scripts/generate_cursor_rules.py +35 -0
- package/scripts/generate_gemini.py +28 -0
- package/scripts/generate_llms_txt.py +164 -0
- package/scripts/generate_roo_modes.py +80 -0
- package/scripts/generate_windsurf.py +35 -0
- package/scripts/generator_base.py +140 -0
- package/scripts/harvest_ecosystem.py +50 -0
- package/scripts/inject_rule_cli.py +101 -0
- package/scripts/inject_section_cli.py +47 -0
- package/scripts/injection.py +180 -0
- package/scripts/install.py +236 -0
- package/scripts/install_git_hooks.py +71 -0
- package/scripts/install_steps/__init__.py +5 -0
- package/scripts/install_steps/ai_tools.py +261 -0
- package/scripts/install_steps/hooks.py +90 -0
- package/scripts/install_steps/markers.py +79 -0
- package/scripts/install_steps/symlinks.py +87 -0
- package/scripts/merge-hooks.py +192 -0
- package/scripts/plugin.py +642 -0
- package/scripts/plugin_schema.py +138 -0
- package/scripts/remove_rule.py +58 -0
- package/scripts/stats.py +81 -0
- package/scripts/sync.py +215 -0
- package/scripts/uninstall.py +292 -0
- 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
|
+
```
|