@rfxlamia/skillkit 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 (225) hide show
  1. package/README.md +16 -0
  2. package/agents/creative-copywriter.md +212 -0
  3. package/agents/dario-amodei.md +135 -0
  4. package/agents/doc-simplifier.md +63 -0
  5. package/agents/kotlin-pro.md +433 -0
  6. package/agents/red-team.md +136 -0
  7. package/agents/sam-altman.md +121 -0
  8. package/agents/seo-manager.md +184 -0
  9. package/bin/skillkit.js +3 -0
  10. package/package.json +35 -0
  11. package/skills/adversarial-review/SKILL.md +219 -0
  12. package/skills/baby-education/SKILL.md +260 -0
  13. package/skills/baby-education/references/advanced-techniques.md +323 -0
  14. package/skills/baby-education/references/transformations.md +345 -0
  15. package/skills/been-there-done-that/SKILL.md +455 -0
  16. package/skills/been-there-done-that/references/analysis-patterns.md +162 -0
  17. package/skills/been-there-done-that/references/git-commands.md +132 -0
  18. package/skills/been-there-done-that/references/tree-insertion-logic.md +145 -0
  19. package/skills/coolhunter/SKILL.md +270 -0
  20. package/skills/coolhunter/assets/elicitation-methods.csv +51 -0
  21. package/skills/coolhunter/knowledge/elicitation-methods.md +312 -0
  22. package/skills/coolhunter/references/workflow-execution.md +238 -0
  23. package/skills/coolhunter/workflow-plan-coolhunter.md +232 -0
  24. package/skills/creative-copywriting/SKILL.md +324 -0
  25. package/skills/creative-copywriting/databases/README.md +60 -0
  26. package/skills/creative-copywriting/databases/carousel-structures.csv +16 -0
  27. package/skills/creative-copywriting/databases/emotional-arcs.csv +11 -0
  28. package/skills/creative-copywriting/databases/hook-formulas.csv +51 -0
  29. package/skills/creative-copywriting/databases/power-words.csv +201 -0
  30. package/skills/creative-copywriting/databases/psychological-triggers.csv +21 -0
  31. package/skills/creative-copywriting/databases/read-more-patterns.csv +26 -0
  32. package/skills/creative-copywriting/databases/swipe-triggers.csv +31 -0
  33. package/skills/creative-copywriting/references/carousel-psychology.md +223 -0
  34. package/skills/creative-copywriting/references/hook-anatomy.md +169 -0
  35. package/skills/creative-copywriting/references/power-word-science.md +134 -0
  36. package/skills/creative-copywriting/references/storytelling-frameworks.md +157 -0
  37. package/skills/diverse-content-gen/SKILL.md +201 -0
  38. package/skills/diverse-content-gen/references/advanced-techniques.md +320 -0
  39. package/skills/diverse-content-gen/references/research-findings.md +379 -0
  40. package/skills/diverse-content-gen/references/task-workflows.md +241 -0
  41. package/skills/diverse-content-gen/references/tool-integration.md +419 -0
  42. package/skills/diverse-content-gen/references/troubleshooting.md +426 -0
  43. package/skills/diverse-content-gen/references/vs-core-technique.md +240 -0
  44. package/skills/framework-critical-thinking/SKILL.md +220 -0
  45. package/skills/framework-critical-thinking/references/bias_detector.md +375 -0
  46. package/skills/framework-critical-thinking/references/fallback_handler.md +239 -0
  47. package/skills/framework-critical-thinking/references/memory_curator.md +161 -0
  48. package/skills/framework-critical-thinking/references/metacognitive_monitor.md +297 -0
  49. package/skills/framework-critical-thinking/references/producer_critic_orchestrator.md +333 -0
  50. package/skills/framework-critical-thinking/references/reasoning_router.md +235 -0
  51. package/skills/framework-critical-thinking/references/reasoning_validator.md +97 -0
  52. package/skills/framework-critical-thinking/references/reflection_trigger.md +78 -0
  53. package/skills/framework-critical-thinking/references/self_verification.md +388 -0
  54. package/skills/framework-critical-thinking/references/uncertainty_quantifier.md +207 -0
  55. package/skills/framework-initiative/SKILL.md +231 -0
  56. package/skills/framework-initiative/references/examples.md +150 -0
  57. package/skills/framework-initiative/references/impact-analysis.md +157 -0
  58. package/skills/framework-initiative/references/intent-patterns.md +145 -0
  59. package/skills/framework-initiative/references/star-framework.md +165 -0
  60. package/skills/humanize-docs/SKILL.md +203 -0
  61. package/skills/humanize-docs/references/advanced-techniques.md +13 -0
  62. package/skills/humanize-docs/references/core-transformations.md +368 -0
  63. package/skills/humanize-docs/references/detection-patterns.md +400 -0
  64. package/skills/humanize-docs/references/examples-gallery.md +374 -0
  65. package/skills/imagine/SKILL.md +190 -0
  66. package/skills/imagine/references/artstyle-corporate-memphis.md +625 -0
  67. package/skills/imagine/references/artstyle-crewdson-hyperrealism.md +295 -0
  68. package/skills/imagine/references/artstyle-iphone-social-media.md +426 -0
  69. package/skills/imagine/references/artstyle-sciencesaru.md +276 -0
  70. package/skills/pre-deploy-checklist/README.md +26 -0
  71. package/skills/pre-deploy-checklist/SKILL.md +153 -0
  72. package/skills/pre-deploy-checklist/references/checklist-categories.md +174 -0
  73. package/skills/pre-deploy-checklist/references/domain-prompts.md +216 -0
  74. package/skills/prompt-engineering/SKILL.md +209 -0
  75. package/skills/prompt-engineering/references/advanced-combinations.md +444 -0
  76. package/skills/prompt-engineering/references/chain-of-thought.md +140 -0
  77. package/skills/prompt-engineering/references/decision_matrix.md +220 -0
  78. package/skills/prompt-engineering/references/few-shot.md +346 -0
  79. package/skills/prompt-engineering/references/json-format.md +270 -0
  80. package/skills/prompt-engineering/references/natural-language.md +420 -0
  81. package/skills/prompt-engineering/references/pitfalls.md +365 -0
  82. package/skills/prompt-engineering/references/prompt-chaining.md +498 -0
  83. package/skills/prompt-engineering/references/react.md +108 -0
  84. package/skills/prompt-engineering/references/self-consistency.md +322 -0
  85. package/skills/prompt-engineering/references/tree-of-thoughts.md +386 -0
  86. package/skills/prompt-engineering/references/xml-format.md +220 -0
  87. package/skills/prompt-engineering/references/yaml-format.md +488 -0
  88. package/skills/prompt-engineering/references/zero-shot.md +74 -0
  89. package/skills/quick-spec/SKILL.md +280 -0
  90. package/skills/quick-spec/assets/tech-spec-template.md +74 -0
  91. package/skills/quick-spec/references/step-01-understand.md +189 -0
  92. package/skills/quick-spec/references/step-02-investigate.md +144 -0
  93. package/skills/quick-spec/references/step-03-generate.md +128 -0
  94. package/skills/quick-spec/references/step-04-review.md +173 -0
  95. package/skills/quick-spec/tests/test_scenarios.md +83 -0
  96. package/skills/quick-spec/tests/test_skill.py +136 -0
  97. package/skills/readme-expert/SKILL.md +538 -0
  98. package/skills/readme-expert/knowledge/INDEX.md +192 -0
  99. package/skills/readme-expert/knowledge/application/quality-standards.md +470 -0
  100. package/skills/readme-expert/knowledge/application/script-executor.md +604 -0
  101. package/skills/readme-expert/knowledge/application/template-library.md +822 -0
  102. package/skills/readme-expert/knowledge/foundation/codebase-scanner.md +361 -0
  103. package/skills/readme-expert/knowledge/foundation/validation-checklist.md +481 -0
  104. package/skills/red-teaming/SKILL.md +321 -0
  105. package/skills/red-teaming/references/ai-llm-redteam.md +517 -0
  106. package/skills/red-teaming/references/attack-techniques.md +410 -0
  107. package/skills/red-teaming/references/cybersecurity-redteam.md +383 -0
  108. package/skills/red-teaming/references/tools-frameworks.md +446 -0
  109. package/skills/releasing/.skillkit-mode +1 -0
  110. package/skills/releasing/SKILL.md +225 -0
  111. package/skills/releasing/references/version-detection.md +108 -0
  112. package/skills/screenwriter/SKILL.md +273 -0
  113. package/skills/screenwriter/references/advanced-techniques.md +216 -0
  114. package/skills/screenwriter/references/pipeline-integration.md +266 -0
  115. package/skills/skillkit/.claude-plugin/plugin.json +27 -0
  116. package/skills/skillkit/CHANGELOG.md +484 -0
  117. package/skills/skillkit/SKILL.md +511 -0
  118. package/skills/skillkit/commands/skillkit.md +6 -0
  119. package/skills/skillkit/commands/validate-plan.md +6 -0
  120. package/skills/skillkit/commands/verify.md +6 -0
  121. package/skills/skillkit/knowledge/INDEX.md +352 -0
  122. package/skills/skillkit/knowledge/application/09-case-studies.md +257 -0
  123. package/skills/skillkit/knowledge/application/10-technical-architecture.md +324 -0
  124. package/skills/skillkit/knowledge/application/11-adoption-strategy.md +267 -0
  125. package/skills/skillkit/knowledge/application/12-testing-and-validation.md +276 -0
  126. package/skills/skillkit/knowledge/application/13-competitive-landscape.md +198 -0
  127. package/skills/skillkit/knowledge/foundation/01-why-skills-exist.md +246 -0
  128. package/skills/skillkit/knowledge/foundation/02-skills-vs-subagents-comparison.md +312 -0
  129. package/skills/skillkit/knowledge/foundation/03-skills-vs-subagents-decision-tree.md +346 -0
  130. package/skills/skillkit/knowledge/foundation/04-hybrid-patterns.md +308 -0
  131. package/skills/skillkit/knowledge/foundation/05-token-economics.md +275 -0
  132. package/skills/skillkit/knowledge/foundation/06-platform-constraints.md +237 -0
  133. package/skills/skillkit/knowledge/foundation/07-security-concerns.md +322 -0
  134. package/skills/skillkit/knowledge/foundation/08-when-not-to-use-skills.md +270 -0
  135. package/skills/skillkit/knowledge/plugin-guide.md +614 -0
  136. package/skills/skillkit/knowledge/tools/14-validation-tools-guide.md +150 -0
  137. package/skills/skillkit/knowledge/tools/15-cost-tools-guide.md +157 -0
  138. package/skills/skillkit/knowledge/tools/16-security-tools-guide.md +122 -0
  139. package/skills/skillkit/knowledge/tools/17-pattern-tools-guide.md +161 -0
  140. package/skills/skillkit/knowledge/tools/18-decision-helper-guide.md +243 -0
  141. package/skills/skillkit/knowledge/tools/19-test-generator-guide.md +275 -0
  142. package/skills/skillkit/knowledge/tools/20-split-skill-guide.md +149 -0
  143. package/skills/skillkit/knowledge/tools/21-quality-scorer-guide.md +226 -0
  144. package/skills/skillkit/knowledge/tools/22-migration-helper-guide.md +356 -0
  145. package/skills/skillkit/knowledge/tools/23-subagent-creation-guide.md +448 -0
  146. package/skills/skillkit/knowledge/tools/24-behavioral-testing-guide.md +122 -0
  147. package/skills/skillkit/references/proposal-generation.md +982 -0
  148. package/skills/skillkit/references/rationalization-catalog.md +75 -0
  149. package/skills/skillkit/references/research-methodology.md +661 -0
  150. package/skills/skillkit/references/section-2-full-creation-workflow.md +452 -0
  151. package/skills/skillkit/references/section-3-validation-workflow-existing-skill.md +63 -0
  152. package/skills/skillkit/references/section-4-decision-workflow-skills-vs-subagents.md +64 -0
  153. package/skills/skillkit/references/section-5-migration-workflow-doc-to-skill.md +58 -0
  154. package/skills/skillkit/references/section-6-subagent-creation-workflow.md +499 -0
  155. package/skills/skillkit/references/section-7-knowledge-reference-map.md +72 -0
  156. package/skills/skillkit/scripts/decision_helper.py +799 -0
  157. package/skills/skillkit/scripts/init_skill.py +400 -0
  158. package/skills/skillkit/scripts/init_subagent.py +231 -0
  159. package/skills/skillkit/scripts/migration_helper.py +669 -0
  160. package/skills/skillkit/scripts/package_skill.py +211 -0
  161. package/skills/skillkit/scripts/pattern_detector.py +381 -0
  162. package/skills/skillkit/scripts/pattern_detector_new.py +382 -0
  163. package/skills/skillkit/scripts/pressure_tester.py +157 -0
  164. package/skills/skillkit/scripts/quality_scorer.py +999 -0
  165. package/skills/skillkit/scripts/quick_validate.py +100 -0
  166. package/skills/skillkit/scripts/security_scanner.py +474 -0
  167. package/skills/skillkit/scripts/split_skill.py +540 -0
  168. package/skills/skillkit/scripts/test_generator.py +695 -0
  169. package/skills/skillkit/scripts/token_estimator.py +493 -0
  170. package/skills/skillkit/scripts/utils/__init__.py +49 -0
  171. package/skills/skillkit/scripts/utils/budget_tracker.py +388 -0
  172. package/skills/skillkit/scripts/utils/output_formatter.py +263 -0
  173. package/skills/skillkit/scripts/utils/reference_validator.py +401 -0
  174. package/skills/skillkit/scripts/validate_skill.py +594 -0
  175. package/skills/skillkit/tests/test_behavioral.py +39 -0
  176. package/skills/skillkit/tests/test_scenarios.md +83 -0
  177. package/skills/skillkit/tests/test_skill.py +136 -0
  178. package/skills/social-media-seo/SKILL.md +278 -0
  179. package/skills/social-media-seo/databases/caption-styles.csv +31 -0
  180. package/skills/social-media-seo/databases/engagement-tactics.csv +16 -0
  181. package/skills/social-media-seo/databases/hashtag-strategies.csv +21 -0
  182. package/skills/social-media-seo/databases/hook-formulas.csv +26 -0
  183. package/skills/social-media-seo/databases/keyword-clusters.csv +11 -0
  184. package/skills/social-media-seo/databases/thread-structures.csv +26 -0
  185. package/skills/social-media-seo/databases/viral-patterns.csv +21 -0
  186. package/skills/social-media-seo/references/analytics-guide.md +321 -0
  187. package/skills/social-media-seo/references/instagram-seo.md +235 -0
  188. package/skills/social-media-seo/references/threads-seo.md +305 -0
  189. package/skills/social-media-seo/references/x-twitter-seo.md +337 -0
  190. package/skills/social-media-seo/scripts/query_database.py +191 -0
  191. package/skills/storyteller/SKILL.md +241 -0
  192. package/skills/storyteller/references/transformation-methodology.md +293 -0
  193. package/skills/storyteller/references/visual-vocabulary.md +177 -0
  194. package/skills/thread-pro/SKILL.md +162 -0
  195. package/skills/thread-pro/anti-ai-patterns.md +120 -0
  196. package/skills/thread-pro/hook-formulas.md +138 -0
  197. package/skills/thread-pro/references/anti-ai-patterns.md +120 -0
  198. package/skills/thread-pro/references/hook-formulas.md +138 -0
  199. package/skills/thread-pro/references/thread-structures.md +240 -0
  200. package/skills/thread-pro/references/voice-injection.md +130 -0
  201. package/skills/thread-pro/thread-structures.md +240 -0
  202. package/skills/thread-pro/voice-injection.md +130 -0
  203. package/skills/tinkering/SKILL.md +251 -0
  204. package/skills/tinkering/references/graduation-checklist.md +100 -0
  205. package/skills/validate-plan/.skillkit-mode +1 -0
  206. package/skills/validate-plan/SKILL.md +406 -0
  207. package/skills/validate-plan/references/dry-principles.md +251 -0
  208. package/skills/validate-plan/references/gap-analysis-guide.md +320 -0
  209. package/skills/validate-plan/references/tdd-patterns.md +413 -0
  210. package/skills/validate-plan/references/yagni-checklist.md +330 -0
  211. package/skills/verify-before-ship/.skillkit-mode +1 -0
  212. package/skills/verify-before-ship/SKILL.md +116 -0
  213. package/skills/verify-before-ship/references/anti-rationalization.md +212 -0
  214. package/skills/verify-before-ship/references/verification-gates.md +305 -0
  215. package/skills-manifest.json +217 -0
  216. package/src/banner.js +10 -0
  217. package/src/cli.js +30 -0
  218. package/src/install.js +53 -0
  219. package/src/install.test.js +40 -0
  220. package/src/picker.js +74 -0
  221. package/src/picker.test.js +21 -0
  222. package/src/scope.js +57 -0
  223. package/src/scope.test.js +19 -0
  224. package/src/update.js +34 -0
  225. package/src/update.test.js +24 -0
@@ -0,0 +1,305 @@
1
+ # Verification Gates — Full Specifications
2
+
3
+ Complete reference for each of the 7 production safety gates.
4
+ Each gate specifies: what to check, how to collect evidence, and what constitutes a pass.
5
+
6
+ ## Table of Contents
7
+
8
+ - [G1: Tests Pass](#g1-tests-pass)
9
+ - [G2: Security Scan Clean](#g2-security-scan-clean)
10
+ - [G3: No Breaking Changes](#g3-no-breaking-changes)
11
+ - [G4: Environment Config Validated](#g4-environment-config-validated)
12
+ - [G5: Staging Deployment Verified](#g5-staging-deployment-verified)
13
+ - [G6: Rollback Plan Documented](#g6-rollback-plan-documented)
14
+ - [G7: Code Review Approved](#g7-code-review-approved)
15
+
16
+ ---
17
+
18
+ ## G1: Tests Pass
19
+
20
+ **What to check:**
21
+ - All unit tests pass
22
+ - All integration tests pass
23
+ - Any e2e tests covering the changed functionality pass
24
+ - No test is skipped or marked xfail without a pre-existing, documented reason
25
+
26
+ **How to collect evidence:**
27
+ ```bash
28
+ # CI output (preferred)
29
+ # Navigate to CI run → copy the final test summary
30
+
31
+ # Local run
32
+ npm test # Node/JS
33
+ pytest -v # Python
34
+ go test ./... # Go
35
+ ./gradlew test # Java/Kotlin
36
+ bundle exec rspec # Ruby
37
+ ```
38
+
39
+ **Pass criteria:**
40
+ - All tests show PASS/GREEN
41
+ - Zero unexpected failures
42
+ - Zero unexplained skips
43
+
44
+ **Fail criteria (DO NOT SHIP if any are true):**
45
+ - Any test failing
46
+ - CI run not triggered (no output = no evidence)
47
+ - "Tests will pass, I'm sure" without running them
48
+
49
+ **Evidence template:**
50
+ ```
51
+ GATE G1 Tests: CLEARED
52
+ Evidence:
53
+ [paste CI summary or local output here]
54
+ Example: ✓ 247 passed, 0 failed — CI run #4521
55
+ ```
56
+
57
+ ---
58
+
59
+ ## G2: Security Scan Clean
60
+
61
+ **What to check:**
62
+ - No critical or high severity CVEs in dependencies
63
+ - No hardcoded secrets, tokens, or credentials in diff
64
+ - No new SQL injection / XSS / command injection patterns
65
+
66
+ **How to collect evidence:**
67
+ ```bash
68
+ # Dependency vulnerability scan
69
+ npm audit --audit-level=high # Node
70
+ safety check # Python
71
+ snyk test # Any (Snyk CLI)
72
+ trivy fs . # Any (Trivy)
73
+
74
+ # Secret detection
75
+ git diff HEAD~1 | grep -i "password\|secret\|token\|api_key"
76
+ trufflehog git --since-commit HEAD~1 .
77
+ ```
78
+
79
+ **Pass criteria:**
80
+ - Zero critical/high CVEs
81
+ - No secrets detected in diff
82
+ - Medium CVEs reviewed and accepted or mitigated
83
+
84
+ **Fail criteria (DO NOT SHIP if any are true):**
85
+ - Any critical or high CVE present
86
+ - Unreviewed secrets detected in diff
87
+ - Scan was not run ("it's fine, no dependencies changed")
88
+
89
+ **Evidence template:**
90
+ ```
91
+ GATE G2 Security: CLEARED
92
+ Evidence:
93
+ Dependency scan: 0 critical, 0 high (2 low — accepted)
94
+ Secret scan: clean
95
+ Tool: npm audit — 2026-03-13
96
+ ```
97
+
98
+ ---
99
+
100
+ ## G3: No Breaking Changes
101
+
102
+ **What to check:**
103
+ - API contracts not broken (no removed endpoints, no changed required fields)
104
+ - Database schema migrations are backwards compatible or coordinated
105
+ - No removed/renamed env vars that consumers depend on
106
+ - Public interfaces (exported functions, types) not broken
107
+
108
+ **How to collect evidence:**
109
+ ```bash
110
+ # API diff
111
+ git diff HEAD~1 -- "**/*.openapi.*" "**/*swagger*" "**/*schema*"
112
+
113
+ # Database migration review
114
+ cat migrations/latest.sql # Confirm no DROP TABLE, no NOT NULL without default
115
+
116
+ # Contract tests (if present)
117
+ npm run test:contract
118
+ pact verify
119
+ ```
120
+
121
+ **Pass criteria:**
122
+ - No uncoordinated breaking changes
123
+ - Any breaking changes have a migration plan and all consumers updated
124
+
125
+ **Fail criteria (DO NOT SHIP if any are true):**
126
+ - Removed API endpoints with active consumers
127
+ - Additing NOT NULL column without default to existing table
128
+ - Removed env var that dependent services use
129
+
130
+ **Evidence template:**
131
+ ```
132
+ GATE G3 Breaking Changes: CLEARED
133
+ Evidence:
134
+ API diff: no breaking changes in openapi.yaml
135
+ DB migration: adds nullable column only
136
+ Contract tests: 12/12 passing
137
+ ```
138
+
139
+ ---
140
+
141
+ ## G4: Environment Config Validated
142
+
143
+ **What to check:**
144
+ - All required env vars for production are set
145
+ - Config diff between staging and production is intentional
146
+ - Feature flags, secrets, and infrastructure config reviewed
147
+ - No staging-only config leaking to production
148
+
149
+ **How to collect evidence:**
150
+ ```bash
151
+ # Compare env files (sanitize secrets before pasting)
152
+ diff .env.staging .env.production | grep "^[<>]" | sed 's/=.*/=***/'
153
+
154
+ # Kubernetes/Docker: review configmap/secret diff
155
+ kubectl diff -f k8s/production/
156
+
157
+ # Terraform: plan output
158
+ terraform plan -var-file=production.tfvars
159
+ ```
160
+
161
+ **Pass criteria:**
162
+ - All required vars confirmed present in production config
163
+ - Any diff between staging and production is expected and documented
164
+
165
+ **Fail criteria (DO NOT SHIP if any are true):**
166
+ - New env var added in code but not set in production
167
+ - Unknown config difference between staging and production
168
+ - "It's the same config as staging" without checking
169
+
170
+ **Evidence template:**
171
+ ```
172
+ GATE G4 Config: CLEARED
173
+ Evidence:
174
+ New vars added: FEATURE_X_ENABLED (set to true in prod config ✓)
175
+ Config diff: 1 intentional difference — DEBUG=false in prod, true in staging
176
+ ```
177
+
178
+ ---
179
+
180
+ ## G5: Staging Deployment Verified
181
+
182
+ **What to check:**
183
+ - Code was deployed to staging before production
184
+ - Smoke tests pass on staging (critical user paths work)
185
+ - No error spike in staging logs after deploy
186
+
187
+ **How to collect evidence:**
188
+ ```bash
189
+ # Staging deploy confirmation
190
+ curl -s https://staging.yourapp.com/health | jq .
191
+
192
+ # Check staging logs for errors
193
+ kubectl logs -n staging deployment/api --since=10m | grep -i error | tail -20
194
+
195
+ # Smoke test
196
+ curl -s https://staging.yourapp.com/api/v1/ping
197
+ ```
198
+
199
+ **Pass criteria:**
200
+ - Staging health endpoint returns 200
201
+ - Critical user path (login, checkout, etc.) works manually
202
+ - No new error pattern in logs
203
+
204
+ **Fail criteria (DO NOT SHIP if any are true):**
205
+ - Code never deployed to staging ("we'll test in prod")
206
+ - Staging shows errors that haven't been investigated
207
+ - "Staging and prod are different so staging tests don't count"
208
+
209
+ **Evidence template:**
210
+ ```
211
+ GATE G5 Staging: CLEARED
212
+ Evidence:
213
+ Staging deploy: 2026-03-13 14:32 UTC — build #891
214
+ Health: {"status":"ok","version":"1.4.2"}
215
+ Smoke test: login ✓, checkout ✓, API /ping ✓
216
+ Logs: 0 new errors in last 10 min
217
+ ```
218
+
219
+ ---
220
+
221
+ ## G6: Rollback Plan Documented
222
+
223
+ **What to check:**
224
+ - Rollback steps are written down and specific
225
+ - Rollback has been validated (at minimum, reviewed for feasibility)
226
+ - Who executes the rollback and how to trigger it is clear
227
+
228
+ **Rollback plan minimum requirements:**
229
+ 1. Command or action to revert (specific, not "undo the change")
230
+ 2. Expected time to complete rollback
231
+ 3. How to verify rollback succeeded
232
+ 4. Who to notify
233
+
234
+ **How to collect evidence:**
235
+ ```bash
236
+ # Git rollback
237
+ git revert HEAD --no-edit && git push origin main
238
+
239
+ # Kubernetes rollback
240
+ kubectl rollout undo deployment/api -n production
241
+ kubectl rollout status deployment/api -n production
242
+
243
+ # Feature flag toggle
244
+ curl -X POST https://flags.yourapp.com/api/FEATURE_X/disable
245
+ ```
246
+
247
+ **Pass criteria:**
248
+ - Specific commands documented, not "revert the commit"
249
+ - Steps are executable by someone other than the author
250
+ - Database rollback steps included if schema changed
251
+
252
+ **Fail criteria (DO NOT SHIP if any are true):**
253
+ - No rollback plan written ("we'll figure it out if needed")
254
+ - Rollback plan is "we can just redeploy the old version" without specific commands
255
+ - DB migration with no rollback migration
256
+
257
+ **Evidence template:**
258
+ ```
259
+ GATE G6 Rollback: CLEARED
260
+ Evidence:
261
+ Rollback steps:
262
+ 1. kubectl rollout undo deployment/api -n production
263
+ 2. Verify: curl https://api.yourapp.com/health → {"version":"1.4.1"}
264
+ 3. Notify: #incidents Slack channel
265
+ Estimated rollback time: ~3 minutes
266
+ ```
267
+
268
+ ---
269
+
270
+ ## G7: Code Review Approved
271
+
272
+ **What to check:**
273
+ - At least one reviewer (not the author) approved the PR
274
+ - Review was substantive (not rubber-stamp)
275
+ - Security-sensitive code had appropriate reviewer
276
+
277
+ **How to collect evidence:**
278
+ ```bash
279
+ # GitHub
280
+ gh pr view <PR_NUMBER> --json reviews,reviewDecision
281
+
282
+ # GitLab
283
+ glab mr view <MR_IID>
284
+ ```
285
+
286
+ **Pass criteria:**
287
+ - Minimum 1 approval from non-author
288
+ - Approval is on the current commit (no force-push after approval)
289
+ - PR has no blocking comments unresolved
290
+
291
+ **Fail criteria (DO NOT SHIP if any are true):**
292
+ - No PR created ("it's a small fix")
293
+ - PR approved by the author themselves
294
+ - Unresolved blocking comments
295
+ - Approved on an older commit, force-pushed after
296
+
297
+ **Evidence template:**
298
+ ```
299
+ GATE G7 Code Review: CLEARED
300
+ Evidence:
301
+ PR: github.com/org/repo/pull/847
302
+ Approvals: @alice (2026-03-13 13:15 UTC)
303
+ Blocking comments: 0
304
+ Commit approved: a3f9d21 (current HEAD ✓)
305
+ ```
@@ -0,0 +1,217 @@
1
+ {
2
+ "skills": [
3
+ {
4
+ "name": "adversarial-review",
5
+ "description": "Adversarial review protocol for brainstorming, product planning, and technical architecture.",
6
+ "category": "quality",
7
+ "type": "skill",
8
+ "path": "skills/adversarial-review"
9
+ },
10
+ {
11
+ "name": "baby-education",
12
+ "description": "Makes agent explain concepts with extreme clarity for beginners learning new topics or projects. Uses analogies-first approach, visual mental models, and ELI5 style to transform complex technical explanations into accessible learning experiences. Trigger when user is new to a technology, starting a project, or explicitly requests simple explanations.",
13
+ "category": "engineering",
14
+ "type": "skill",
15
+ "path": "skills/baby-education"
16
+ },
17
+ {
18
+ "name": "been-there-done-that",
19
+ "description": "Guides an agent to document developer progress objectively after completing",
20
+ "category": "productivity",
21
+ "type": "skill",
22
+ "path": "skills/been-there-done-that"
23
+ },
24
+ {
25
+ "name": "coolhunter",
26
+ "description": "Trend intelligence and cultural signal detection for emerging news and behaviors.",
27
+ "category": "creative",
28
+ "type": "skill",
29
+ "path": "skills/coolhunter"
30
+ },
31
+ {
32
+ "name": "creative-copywriting",
33
+ "description": "Master persuasive writing for social media with proven hooks, storytelling frameworks, and",
34
+ "category": "creative",
35
+ "type": "skill",
36
+ "path": "skills/creative-copywriting"
37
+ },
38
+ {
39
+ "name": "diverse-content-gen",
40
+ "description": "Agent workflow for generating highly diverse creative content using Verbalized Sampling (VS) technique. Use when user requests multiple variations, brainstorming, creative ideas, or when standard prompting produces repetitive outputs. Increases diversity by 1.6-2.1× while maintaining quality. Works for: blog posts, social media captions, stories, campaign ideas, product descriptions, taglines, and open-ended creative tasks.",
41
+ "category": "creative",
42
+ "type": "skill",
43
+ "path": "skills/diverse-content-gen"
44
+ },
45
+ {
46
+ "name": "framework-critical-thinking",
47
+ "description": "Architectural framework for building AI agents with critical thinking capabilities - structured reasoning selection (CoT/ToT/GoT), metacognitive monitoring, self-verification, and cognitive bias detection. Use when building or enhancing AI agents that require reliable, self-correcting, and transparent reasoning.",
48
+ "category": "agent",
49
+ "type": "skill",
50
+ "path": "skills/framework-critical-thinking"
51
+ },
52
+ {
53
+ "name": "framework-initiative",
54
+ "description": "Framework for agents to understand implicit user intent, think before acting, and consider action impact. Uses STAR framework (Stop-Think-Analyze-Respond) to prevent literal execution that doesn't match context. Use when agent receives ambiguous requests, abstract commands like \"fix\", \"improve\", \"delete all\", or actions with potential wide-scope impact. Trigger on code modification requests without explicit scope constraints.",
55
+ "category": "agent",
56
+ "type": "skill",
57
+ "path": "skills/framework-initiative"
58
+ },
59
+ {
60
+ "name": "humanize-docs",
61
+ "description": "Transform AI-to-AI documentation into human-readable prose with personality.",
62
+ "category": "documentation",
63
+ "type": "skill",
64
+ "path": "skills/humanize-docs"
65
+ },
66
+ {
67
+ "name": "imagine",
68
+ "description": "Prepare detailed, professional prompts for Google Imagen 3/4 image generation. Supports character, environment, and object prompts using natural language with technical photography specifications. Extensible support for multiple art styles via reference files.",
69
+ "category": "creative",
70
+ "type": "skill",
71
+ "path": "skills/imagine"
72
+ },
73
+ {
74
+ "name": "pre-deploy-checklist",
75
+ "description": "Intelligent pre-deployment QA checklist generator. Explores the codebase,",
76
+ "category": "deployment",
77
+ "type": "skill",
78
+ "path": "skills/pre-deploy-checklist"
79
+ },
80
+ {
81
+ "name": "prompt-engineering",
82
+ "description": "Use when you need to design effective LLM prompts. Intelligently selects optimal prompting methods (Chain of Thought, Few-Shot, Zero-Shot, ReAct, Tree of Thoughts, Self-Consistency) and output formats (XML, JSON, YAML, Natural Language) based on task complexity, target LLM, accuracy requirements, and available context. Trigger on prompt design, prompt optimization, or when choosing between prompting techniques.",
83
+ "category": "engineering",
84
+ "type": "skill",
85
+ "path": "skills/prompt-engineering"
86
+ },
87
+ {
88
+ "name": "quick-spec",
89
+ "description": "Create implementation-ready technical specifications through conversational discovery, code investigation, and structured documentation. USE WHEN user needs to plan a feature, create tech-spec, or prepare implementation-ready documentation. Triggers on \"buat spec\", \"create tech spec\", \"plan feature\", \"specification\", or when user describes a feature to build without clear implementation plan.",
90
+ "category": "planning",
91
+ "type": "skill",
92
+ "path": "skills/quick-spec"
93
+ },
94
+ {
95
+ "name": "readme-expert",
96
+ "description": "Create comprehensive, accurate README.md files with anti-hallucination validation.",
97
+ "category": "documentation",
98
+ "type": "skill",
99
+ "path": "skills/readme-expert"
100
+ },
101
+ {
102
+ "name": "red-teaming",
103
+ "description": "Comprehensive red teaming methodology for both cybersecurity and AI/LLM systems. Use when conducting adversary emulation, vulnerability assessment, attack simulation, or security validation. Trigger on requests for penetration testing, threat modeling, security audits, MITRE ATT&CK operations, LLM safety testing, prompt injection attacks, or compliance validation (OWASP, NIST, TIBER, DORA, EU AI Act). Apply when users ask to \"test like an attacker\", \"red team our system\", \"validate security posture\", \"assess LLM vulnerabilities\", or \"simulate cyber attacks\". Includes planning frameworks, execution strategies, reporting templates, and progressive references to specialized attack techniques and tools.",
104
+ "category": "security",
105
+ "type": "skill",
106
+ "path": "skills/red-teaming"
107
+ },
108
+ {
109
+ "name": "releasing",
110
+ "description": "Automate the full release workflow: version bumping (major/minor/patch), changelog generation,",
111
+ "category": "deployment",
112
+ "type": "skill",
113
+ "path": "skills/releasing"
114
+ },
115
+ {
116
+ "name": "screenwriter",
117
+ "description": "Transform creative ideas into professional, production-ready screenplays optimized for AI video generation pipelines. Converts raw concepts into structured scene-by-scene narratives with rich visual descriptions, proper screenplay formatting, and XML-tagged output for seamless integration with image/video generation tools (imagine, arch-v).",
118
+ "category": "creative",
119
+ "type": "skill",
120
+ "path": "skills/screenwriter"
121
+ },
122
+ {
123
+ "name": "skillkit",
124
+ "description": "Research-driven toolkit for creating and validating skills and subagents with",
125
+ "category": "core",
126
+ "type": "skill",
127
+ "path": "skills/skillkit"
128
+ },
129
+ {
130
+ "name": "social-media-seo",
131
+ "description": "Optimize social media content for maximum discoverability and engagement using 2025-proven SEO strategies.",
132
+ "category": "creative",
133
+ "type": "skill",
134
+ "path": "skills/social-media-seo"
135
+ },
136
+ {
137
+ "name": "storyteller",
138
+ "description": "Transform abstract/metaphorical narrative into concrete visual story structure.",
139
+ "category": "creative",
140
+ "type": "skill",
141
+ "path": "skills/storyteller"
142
+ },
143
+ {
144
+ "name": "thread-pro",
145
+ "description": "Transform boring AI writing into viral threads with strong hooks and relatable voice.",
146
+ "category": "creative",
147
+ "type": "skill",
148
+ "path": "skills/thread-pro"
149
+ },
150
+ {
151
+ "name": "tinkering",
152
+ "description": "Safe experimentation framework for AI agents. Creates isolated sandbox",
153
+ "category": "experimentation",
154
+ "type": "skill",
155
+ "path": "skills/tinkering"
156
+ },
157
+ {
158
+ "name": "validate-plan",
159
+ "description": "Validate implementation plans against DRY, YAGNI, TDD principles and best practices. Use when reviewing development plans created by writing-plans or similar planning workflows to identify gaps, anti-patterns, and improvement opportunities before execution.",
160
+ "category": "planning",
161
+ "type": "skill",
162
+ "path": "skills/validate-plan"
163
+ },
164
+ {
165
+ "name": "verify-before-ship",
166
+ "description": "Enforce agent to complete all 7 production safety gates with evidence before any deployment. Use when about to deploy, push to production, merge a release branch, or ship any change to a live environment. Blocks rationalized shortcuts under time, authority, sunk-cost, or exhaustion pressure.",
167
+ "category": "deployment",
168
+ "type": "skill",
169
+ "path": "skills/verify-before-ship"
170
+ }
171
+ ],
172
+ "agents": [
173
+ {
174
+ "name": "creative-copywriter",
175
+ "description": "Intelligent creative copywriting orchestration for social media. Use this subagent when users need: (1) Hook creation with psychological triggers, (2) Carousel storytelling with swipe optimization, (3) Power word selection for specific emotions, (4) A/B test variations with different emotional angles, or (5) Complete content narratives with hooks and CTAs. Examples: <example>Context: User wants Instagram carousel hooks. user: 'Create hooks for my productivity carousel' assistant: 'I'll use the creative-copywriter subagent to query hook formulas and generate variations with different emotional triggers' <commentary>Since this requires querying hook-formulas.csv, power-words.csv, and synthesizing platform-specific optimization, use creative-copywriter for psychology-backed recommendations.</commentary></example> <example>Context: User needs swipe-worthy carousel structure. user: 'Help me structure a transformation carousel about my weight loss journey' assistant: 'Let me use the creative-copywriter subagent to recommend storytelling frameworks and swipe triggers' <commentary>Since this involves querying carousel-structures.csv, swipe-triggers.csv, and emotional-arcs.csv, use creative-copywriter proactively.</commentary></example> <example>Context: User wants multiple hook variations to test. user: 'Generate 3 different hooks for my business failure story' assistant: 'I'll engage the creative-copywriter subagent to create variations using different psychological triggers' <commentary>Since this requires multi-database querying and variation generation with different emotional angles, use creative-copywriter to provide psychology-backed options.</commentary></example>",
176
+ "type": "agent",
177
+ "path": "agents/creative-copywriter.md"
178
+ },
179
+ {
180
+ "name": "dario-amodei",
181
+ "description": "Use this agent when you need safety-first, deliberate decision-making with transparency, intellectual rigor, and democratic oversight principles. Examples: <example>Context: User deciding on AI model deployment timing. user: 'We have technical capability ready, should we launch now?' assistant: 'I'll engage the dario-amodei agent to evaluate safety-readiness beyond technical capability' <commentary>Since this requires assessing whether deployment safety research is sufficient, use the dario-amodei agent to provide perspective on responsible sequencing and risk mitigation.</commentary></example> <example>Context: User structuring AI governance. user: 'How should we organize decision-making authority for AI development?' assistant: 'Let me use the dario-amodei agent for governance design' <commentary>Since this involves balancing efficiency with oversight, use the dario-amodei agent to provide insights on distributed decision-making and accountability structures.</commentary></example> <example>Context: User navigating regulatory landscape. user: 'Should we support or oppose new AI regulations?' assistant: 'I'll engage the dario-amodei agent to evaluate regulatory engagement strategy' <commentary>Since this requires understanding responsible regulation advocacy, use the dario-amodei agent to provide perspective on how regulation can enable beneficial AI while managing risks.</commentary></example>",
182
+ "type": "agent",
183
+ "path": "agents/dario-amodei.md"
184
+ },
185
+ {
186
+ "name": "doc-simplifier",
187
+ "description": "Use this agent when you have functional documentation that's too verbose and needs condensing to improve clarity and reduce cognitive load. Examples: <example>Context: User has a technical research document that's 1200+ lines with repetitive sections. user:",
188
+ "type": "agent",
189
+ "path": "agents/doc-simplifier.md"
190
+ },
191
+ {
192
+ "name": "kotlin-pro",
193
+ "description": ">",
194
+ "type": "agent",
195
+ "path": "agents/kotlin-pro.md"
196
+ },
197
+ {
198
+ "name": "red-team",
199
+ "description": "<use_when>\\n <description>Use this agent when you need systematic security testing, threat modeling, adversary emulation, vulnerability assessment, or security validation. Covers both traditional cybersecurity red teaming (MITRE ATT&CK, penetration testing) and modern AI/LLM security testing (prompt injection, jailbreaking, OWASP Top 10 LLM).</description>\\n \\n <example>\\n <context>User is tasked with assessing organization's security posture and needs structured red team planning</context>\\n <user>",
200
+ "type": "agent",
201
+ "path": "agents/red-team.md"
202
+ },
203
+ {
204
+ "name": "sam-altman",
205
+ "description": "Use this agent when you need velocity-first, market-driven decision-making with transformational leadership and aggressive execution strategies. Examples: <example>Context: User needs to decide on product launch timing. user: 'Should we delay the launch to add more safety features?' assistant: 'I'll engage the sam-altman agent to evaluate the velocity-risk tradeoff' <commentary>Since this involves balancing speed-to-market with risk management, use the sam-altman agent to provide perspective on aggressive execution while managing downsides.</commentary></example> <example>Context: User planning market entry strategy. user: 'How should we position ourselves against competitors in the AI space?' assistant: 'Let me use the sam-altman agent for competitive strategy guidance' <commentary>Since this requires understanding market dynamics and aggressive positioning, use the sam-altman agent to provide insights on capturing market share and building competitive moats.</commentary></example> <example>Context: User facing organizational governance decisions. user: 'Our board wants more control over product decisions' assistant: 'I'll engage the sam-altman agent to navigate governance dynamics' <commentary>Since this involves balancing stakeholder interests with execution velocity, use the sam-altman agent to provide perspective on maintaining decisional authority while managing relationships.</commentary></example>",
206
+ "type": "agent",
207
+ "path": "agents/sam-altman.md"
208
+ },
209
+ {
210
+ "name": "seo-manager",
211
+ "description": "Intelligent social media SEO content orchestration. Use this subagent when users need: (1) Platform-specific content optimization (Instagram, X/Twitter, Threads), (2) Multi-database querying for caption formulas, thread structures, viral patterns, (3) A/B test variation generation, (4) Evidence-based recommendations with metrics, or (5) Comprehensive SEO strategy for social media posts. Examples: <example>Context: User wants optimized Instagram caption for educational content. user: 'Create Instagram caption about SEO tips for high engagement' assistant: 'I'll use the seo-manager subagent to query our proven formula databases and generate optimized variations' <commentary>Since this requires querying caption-styles.csv, hook-formulas.csv, and synthesizing platform-specific optimization, use seo-manager for data-driven recommendations.</commentary></example> <example>Context: User needs viral Twitter thread structure. user: 'Help me structure a Twitter thread about content marketing' assistant: 'Let me use the seo-manager subagent to recommend proven thread architectures' <commentary>Since this involves querying thread-structures.csv and applying X/Twitter-specific SEO principles, use seo-manager proactively.</commentary></example> <example>Context: User wants multiple caption variations to A/B test. user: 'Generate 3 different Instagram captions for my product launch' assistant: 'I'll engage the seo-manager subagent to create variations from different proven styles' <commentary>Since this requires multi-database querying and variation generation, use seo-manager to provide evidence-based options.</commentary></example>",
212
+ "type": "agent",
213
+ "path": "agents/seo-manager.md"
214
+ }
215
+ ],
216
+ "generatedAt": "2026-03-14T18:10:24.737Z"
217
+ }
package/src/banner.js ADDED
@@ -0,0 +1,10 @@
1
+ export function printBanner(version) {
2
+ console.log(`
3
+ \x1b[33m
4
+ ▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄▄▄
5
+ ███▄▄ ██▄█▀ ██ ██ ██ ██▄█▀ ██ ██
6
+ ▄▄██▀ ██ ██ ██ ██▄▄▄ ██▄▄▄ ██ ██ ██ ██
7
+ \x1b[0m
8
+ \x1b[90mv${version} · Claude Code Skills Installer\x1b[0m
9
+ `)
10
+ }
package/src/cli.js ADDED
@@ -0,0 +1,30 @@
1
+ import { intro, outro, cancel, isCancel, log } from '@clack/prompts'
2
+ import { readFileSync } from 'fs'
3
+ import { join, dirname } from 'path'
4
+ import { fileURLToPath } from 'url'
5
+ import { printBanner } from './banner.js'
6
+ import { selectScope } from './scope.js'
7
+ import { pickInstallables } from './picker.js'
8
+ import { installSelected } from './install.js'
9
+ import { checkForUpdates } from './update.js'
10
+
11
+ const __dirname = dirname(fileURLToPath(import.meta.url))
12
+ const { version } = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8'))
13
+
14
+ export async function run() {
15
+ printBanner(version)
16
+ await checkForUpdates()
17
+
18
+ intro('SkillKit Installer')
19
+
20
+ const scope = await selectScope()
21
+ if (isCancel(scope)) { cancel('Cancelled.'); process.exit(0) }
22
+
23
+ const selected = await pickInstallables()
24
+ if (isCancel(selected)) { cancel('Cancelled.'); process.exit(0) }
25
+
26
+ const { installed } = await installSelected(selected, scope)
27
+
28
+ outro(`Done! ${installed} item(s) installed to ${scope.scope} scope.`)
29
+ log.info(`Restart Claude Code to pick up new skills.`)
30
+ }
package/src/install.js ADDED
@@ -0,0 +1,53 @@
1
+ import { cpSync, mkdirSync, existsSync } from 'fs'
2
+ import { join, dirname } from 'path'
3
+ import { fileURLToPath } from 'url'
4
+ import { spinner, log } from '@clack/prompts'
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url))
7
+ const PACKAGE_ROOT = join(__dirname, '..')
8
+
9
+ export async function installSelected({ skills, agents }, { skillsDir, agentsDir }) {
10
+ // Validate inputs
11
+ if (!Array.isArray(skills)) throw new TypeError('skills must be an array')
12
+ if (!Array.isArray(agents)) throw new TypeError('agents must be an array')
13
+
14
+ const s = spinner()
15
+ s.start('Installing...')
16
+
17
+ let installed = 0
18
+ const skipped = []
19
+
20
+ for (const skill of skills) {
21
+ if (!skill.name || !skill.path) {
22
+ skipped.push(`invalid-skill-${installed}`)
23
+ continue
24
+ }
25
+ const src = join(PACKAGE_ROOT, skill.path)
26
+ const dest = join(skillsDir, skill.name)
27
+ if (!existsSync(src)) { skipped.push(skill.name); continue }
28
+ mkdirSync(dest, { recursive: true })
29
+ cpSync(src, dest, { recursive: true })
30
+ installed++
31
+ }
32
+
33
+ for (const agent of agents) {
34
+ if (!agent.name || !agent.path) {
35
+ skipped.push(`invalid-agent-${installed}`)
36
+ continue
37
+ }
38
+ const src = join(PACKAGE_ROOT, agent.path)
39
+ const dest = join(agentsDir, agent.name + '.md')
40
+ if (!existsSync(src)) { skipped.push(agent.name); continue }
41
+ mkdirSync(agentsDir, { recursive: true })
42
+ cpSync(src, dest)
43
+ installed++
44
+ }
45
+
46
+ s.stop(`Installed ${installed} item(s)`)
47
+
48
+ if (skipped.length > 0) {
49
+ log.warn(`Skipped (not found in package): ${skipped.join(', ')}`)
50
+ }
51
+
52
+ return { installed, skipped }
53
+ }
@@ -0,0 +1,40 @@
1
+ import { test } from 'node:test'
2
+ import assert from 'node:assert'
3
+ import { mkdtempSync, writeFileSync, mkdirSync, existsSync, rmSync } from 'fs'
4
+ import { join } from 'path'
5
+ import { tmpdir } from 'os'
6
+ import { installSelected } from './install.js'
7
+
8
+ function createTempDir() {
9
+ return mkdtempSync(join(tmpdir(), 'skillkit-test-'))
10
+ }
11
+
12
+ test('installSelected validates skills is an array', async () => {
13
+ await assert.rejects(
14
+ installSelected({ skills: 'not-array', agents: [] }, { skillsDir: '/tmp', agentsDir: '/tmp' }),
15
+ /skills must be an array/
16
+ )
17
+ })
18
+
19
+ test('installSelected validates agents is an array', async () => {
20
+ await assert.rejects(
21
+ installSelected({ skills: [], agents: 'not-array' }, { skillsDir: '/tmp', agentsDir: '/tmp' }),
22
+ /agents must be an array/
23
+ )
24
+ })
25
+
26
+ test('installSelected skips invalid skill objects', async () => {
27
+ const skillsDir = createTempDir()
28
+ const agentsDir = createTempDir()
29
+
30
+ const result = await installSelected(
31
+ { skills: [{ name: null }, { name: 'valid', path: 'skills/valid' }], agents: [] },
32
+ { skillsDir, agentsDir }
33
+ )
34
+
35
+ assert.strictEqual(result.installed, 0)
36
+ assert.strictEqual(result.skipped.length, 2)
37
+
38
+ rmSync(skillsDir, { recursive: true })
39
+ rmSync(agentsDir, { recursive: true })
40
+ })