@lovehlmmm/primekit 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 (1595) hide show
  1. package/AGENTS.md +165 -0
  2. package/README.md +66 -0
  3. package/cli/dist/adapters/index.d.ts +5 -0
  4. package/cli/dist/adapters/index.js +55 -0
  5. package/cli/dist/commands/doctor.d.ts +1 -0
  6. package/cli/dist/commands/doctor.js +69 -0
  7. package/cli/dist/commands/import.d.ts +6 -0
  8. package/cli/dist/commands/import.js +81 -0
  9. package/cli/dist/commands/init.d.ts +8 -0
  10. package/cli/dist/commands/init.js +88 -0
  11. package/cli/dist/commands/list.d.ts +1 -0
  12. package/cli/dist/commands/list.js +39 -0
  13. package/cli/dist/commands/uninstall.d.ts +4 -0
  14. package/cli/dist/commands/uninstall.js +47 -0
  15. package/cli/dist/commands/update.d.ts +5 -0
  16. package/cli/dist/commands/update.js +15 -0
  17. package/cli/dist/index.d.ts +2 -0
  18. package/cli/dist/index.js +73 -0
  19. package/cli/dist/utils/backup.d.ts +2 -0
  20. package/cli/dist/utils/backup.js +22 -0
  21. package/cli/dist/utils/manifest.d.ts +16 -0
  22. package/cli/dist/utils/manifest.js +41 -0
  23. package/docs/ARCHITECTURE.md +34 -0
  24. package/docs/USAGE.md +60 -0
  25. package/package.json +48 -0
  26. package/skills/advise/SKILL.md +230 -0
  27. package/skills/agent-browser/SKILL.md +107 -0
  28. package/skills/agent-browser/references/.gitkeep +0 -0
  29. package/skills/agent-browser/references/agent-browser-vs-chrome-devtools.md +71 -0
  30. package/skills/agent-browser/references/browserbase-cloud-setup.md +161 -0
  31. package/skills/agentize/SKILL.md +312 -0
  32. package/skills/agentize/references/agent-centric-design.md +134 -0
  33. package/skills/agentize/references/auth-resolution-chain.md +95 -0
  34. package/skills/agentize/references/challenge-framework.md +68 -0
  35. package/skills/agentize/references/code-mode.md +106 -0
  36. package/skills/agentize/references/deployment-guide.md +94 -0
  37. package/skills/agentize/references/mcp-transports.md +139 -0
  38. package/skills/agentize/references/monorepo-layout.md +164 -0
  39. package/skills/agentize/references/oauth-streamable-http.md +110 -0
  40. package/skills/agentkit/SKILL.md +200 -0
  41. package/skills/agentkit/references/chaining-patterns.md +126 -0
  42. package/skills/agentkit/references/subagent-timing.md +107 -0
  43. package/skills/agentkit/references/task-taxonomy.md +63 -0
  44. package/skills/ai-artist/SKILL.md +132 -0
  45. package/skills/ai-artist/data/awesome-prompts.csv +3592 -0
  46. package/skills/ai-artist/data/platforms.csv +11 -0
  47. package/skills/ai-artist/references/advanced-techniques.md +184 -0
  48. package/skills/ai-artist/references/domain-code.md +66 -0
  49. package/skills/ai-artist/references/domain-data.md +72 -0
  50. package/skills/ai-artist/references/domain-marketing.md +66 -0
  51. package/skills/ai-artist/references/domain-patterns.md +33 -0
  52. package/skills/ai-artist/references/domain-writing.md +68 -0
  53. package/skills/ai-artist/references/image-prompting.md +141 -0
  54. package/skills/ai-artist/references/llm-prompting.md +165 -0
  55. package/skills/ai-artist/references/nano-banana.md +136 -0
  56. package/skills/ai-artist/references/reasoning-techniques.md +201 -0
  57. package/skills/ai-artist/scripts/core.py +197 -0
  58. package/skills/ai-artist/scripts/generate.py +350 -0
  59. package/skills/ai-artist/scripts/search.py +147 -0
  60. package/skills/ai-multimodal/.env.example +13 -0
  61. package/skills/ai-multimodal/SKILL.md +234 -0
  62. package/skills/ai-multimodal/references/audio-processing.md +32 -0
  63. package/skills/ai-multimodal/references/image-generation.md +38 -0
  64. package/skills/ai-multimodal/references/minimax-generation.md +22 -0
  65. package/skills/ai-multimodal/references/music-generation.md +25 -0
  66. package/skills/ai-multimodal/references/video-analysis.md +27 -0
  67. package/skills/ai-multimodal/references/video-generation.md +28 -0
  68. package/skills/ai-multimodal/references/vision-understanding.md +27 -0
  69. package/skills/ai-multimodal/skill.yaml +3 -0
  70. package/skills/ak/SKILL.md +203 -0
  71. package/skills/ak/references/command-reference.md +189 -0
  72. package/skills/ask/SKILL.md +54 -0
  73. package/skills/autoresearch/SKILL.md +61 -0
  74. package/skills/backend-development/SKILL.md +102 -0
  75. package/skills/backend-development/references/backend-api-design.md +495 -0
  76. package/skills/backend-development/references/backend-architecture.md +454 -0
  77. package/skills/backend-development/references/backend-authentication.md +338 -0
  78. package/skills/backend-development/references/backend-code-quality.md +659 -0
  79. package/skills/backend-development/references/backend-debugging.md +904 -0
  80. package/skills/backend-development/references/backend-devops.md +494 -0
  81. package/skills/backend-development/references/backend-mindset.md +387 -0
  82. package/skills/backend-development/references/backend-performance.md +397 -0
  83. package/skills/backend-development/references/backend-security.md +290 -0
  84. package/skills/backend-development/references/backend-technologies.md +256 -0
  85. package/skills/backend-development/references/backend-testing.md +429 -0
  86. package/skills/better-auth/SKILL.md +220 -0
  87. package/skills/better-auth/references/advanced-features.md +553 -0
  88. package/skills/better-auth/references/database-integration.md +577 -0
  89. package/skills/better-auth/references/email-password-auth.md +416 -0
  90. package/skills/better-auth/references/oauth-providers.md +430 -0
  91. package/skills/better-auth/scripts/better_auth_init.py +521 -0
  92. package/skills/better-auth/scripts/requirements.txt +15 -0
  93. package/skills/better-auth/scripts/tests/test_better_auth_init.py +421 -0
  94. package/skills/bootstrap/SKILL.md +168 -0
  95. package/skills/bootstrap/references/shared-phases.md +56 -0
  96. package/skills/bootstrap/references/workflow-auto.md +55 -0
  97. package/skills/bootstrap/references/workflow-fast.md +53 -0
  98. package/skills/bootstrap/references/workflow-full.md +63 -0
  99. package/skills/bootstrap/references/workflow-parallel.md +63 -0
  100. package/skills/brainstorm/SKILL.md +249 -0
  101. package/skills/brainstorm/references/advisory-supervision.md +80 -0
  102. package/skills/brainstorm/references/ultra-verifier-mode.md +167 -0
  103. package/skills/bro/SKILL.md +32 -0
  104. package/skills/chrome-profile/LICENSE +22 -0
  105. package/skills/chrome-profile/SKILL.md +226 -0
  106. package/skills/chrome-profile/profiles.example.json +7 -0
  107. package/skills/chrome-profile/references/architecture.md +86 -0
  108. package/skills/chrome-profile/references/mcp-config-recipes.md +209 -0
  109. package/skills/chrome-profile/references/troubleshooting.md +85 -0
  110. package/skills/chrome-profile/scripts/chrome_profile_cli.py +876 -0
  111. package/skills/chrome-profile/scripts/install.cmd +52 -0
  112. package/skills/chrome-profile/scripts/install.sh +42 -0
  113. package/skills/chrome-profile/scripts/test_chrome_profile.py +397 -0
  114. package/skills/chrome-profile/scripts/uninstall.cmd +53 -0
  115. package/skills/chrome-profile/scripts/uninstall.sh +57 -0
  116. package/skills/clarify/SKILL.md +38 -0
  117. package/skills/code-review/SKILL.md +252 -0
  118. package/skills/code-review/references/checklist-workflow.md +100 -0
  119. package/skills/code-review/references/checklists/api.md +52 -0
  120. package/skills/code-review/references/checklists/base.md +100 -0
  121. package/skills/code-review/references/checklists/web-app.md +54 -0
  122. package/skills/code-review/references/code-review-reception.md +115 -0
  123. package/skills/code-review/references/codebase-scan-workflow.md +30 -0
  124. package/skills/code-review/references/edge-case-scouting.md +119 -0
  125. package/skills/code-review/references/input-mode-resolution.md +135 -0
  126. package/skills/code-review/references/parallel-review-workflow.md +77 -0
  127. package/skills/code-review/references/requesting-code-review.md +116 -0
  128. package/skills/code-review/references/spec-compliance-review.md +43 -0
  129. package/skills/code-review/references/task-management-reviews.md +51 -0
  130. package/skills/code-review/references/verification-before-completion.md +139 -0
  131. package/skills/codex-goal/SKILL.md +76 -0
  132. package/skills/coding-level/SKILL.md +78 -0
  133. package/skills/common/README.md +110 -0
  134. package/skills/common/SKILL.md +11 -0
  135. package/skills/context-engineering/SKILL.md +114 -0
  136. package/skills/context-engineering/references/context-compression.md +84 -0
  137. package/skills/context-engineering/references/context-degradation.md +93 -0
  138. package/skills/context-engineering/references/context-fundamentals.md +75 -0
  139. package/skills/context-engineering/references/context-optimization.md +82 -0
  140. package/skills/context-engineering/references/evaluation.md +89 -0
  141. package/skills/context-engineering/references/memory-systems.md +88 -0
  142. package/skills/context-engineering/references/multi-agent-patterns.md +90 -0
  143. package/skills/context-engineering/references/project-development.md +97 -0
  144. package/skills/context-engineering/references/runtime-awareness.md +202 -0
  145. package/skills/context-engineering/references/tool-design.md +86 -0
  146. package/skills/context-engineering/scripts/compression_evaluator.py +349 -0
  147. package/skills/context-engineering/scripts/context_analyzer.py +317 -0
  148. package/skills/context-engineering/scripts/tests/test_edge_cases.py +246 -0
  149. package/skills/cook/README.md +15 -0
  150. package/skills/cook/SKILL.md +306 -0
  151. package/skills/cook/references/intent-detection.md +109 -0
  152. package/skills/cook/references/plan-state-files-first.md +182 -0
  153. package/skills/cook/references/review-cycle.md +75 -0
  154. package/skills/cook/references/subagent-patterns.md +87 -0
  155. package/skills/cook/references/workflow-routing.md +53 -0
  156. package/skills/cook/references/workflow-steps.md +261 -0
  157. package/skills/copywriting/SKILL.md +96 -0
  158. package/skills/copywriting/references/copy-formulas.md +150 -0
  159. package/skills/copywriting/references/cta-patterns.md +168 -0
  160. package/skills/copywriting/references/email-copy.md +193 -0
  161. package/skills/copywriting/references/headline-templates.md +140 -0
  162. package/skills/copywriting/references/landing-page-copy.md +175 -0
  163. package/skills/copywriting/references/power-words.md +189 -0
  164. package/skills/copywriting/references/social-media-copy.md +222 -0
  165. package/skills/copywriting/references/writing-styles.md +247 -0
  166. package/skills/copywriting/scripts/extract-writing-styles.py +304 -0
  167. package/skills/copywriting/templates/copy-brief.md +49 -0
  168. package/skills/cti-expert/LICENSE +62 -0
  169. package/skills/cti-expert/README.md +1318 -0
  170. package/skills/cti-expert/SKILL.md +927 -0
  171. package/skills/cti-expert/analysis/archive-explorer.md +370 -0
  172. package/skills/cti-expert/analysis/auto-branch-rules.md +198 -0
  173. package/skills/cti-expert/analysis/cross-reference-engine.md +194 -0
  174. package/skills/cti-expert/analysis/deviation-detector.md +187 -0
  175. package/skills/cti-expert/analysis/drift-monitor.md +198 -0
  176. package/skills/cti-expert/analysis/exposure-model.md +195 -0
  177. package/skills/cti-expert/analysis/pattern-library.md +217 -0
  178. package/skills/cti-expert/analysis/risk-trend-tracker.md +169 -0
  179. package/skills/cti-expert/analysis/signature-catalog.md +195 -0
  180. package/skills/cti-expert/analysis/weight-engine.md +198 -0
  181. package/skills/cti-expert/connectors/maltego-export.md +565 -0
  182. package/skills/cti-expert/connectors/notion-schema.md +517 -0
  183. package/skills/cti-expert/connectors/obsidian-setup.md +718 -0
  184. package/skills/cti-expert/engine/case-schema.json +535 -0
  185. package/skills/cti-expert/engine/conflict-resolver.md +445 -0
  186. package/skills/cti-expert/engine/finding-framework.md +386 -0
  187. package/skills/cti-expert/engine/subject-registry.md +640 -0
  188. package/skills/cti-expert/engine/workspace-format.md +447 -0
  189. package/skills/cti-expert/engine/workspace-manager.md +595 -0
  190. package/skills/cti-expert/experience/accessibility/accessible-mode.md +306 -0
  191. package/skills/cti-expert/experience/accessibility/glossary.md +242 -0
  192. package/skills/cti-expert/experience/case-progress.md +190 -0
  193. package/skills/cti-expert/experience/case-templates/tpl-background-check.md +499 -0
  194. package/skills/cti-expert/experience/case-templates/tpl-due-diligence.md +205 -0
  195. package/skills/cti-expert/experience/case-templates/tpl-index.md +195 -0
  196. package/skills/cti-expert/experience/case-templates/tpl-security-review.md +272 -0
  197. package/skills/cti-expert/experience/feedback-system.md +176 -0
  198. package/skills/cti-expert/experience/guidance-system.md +234 -0
  199. package/skills/cti-expert/experience/guided-flows/flow-domain-sweep.md +275 -0
  200. package/skills/cti-expert/experience/guided-flows/flow-image-check.md +306 -0
  201. package/skills/cti-expert/experience/guided-flows/flow-person-lookup.md +286 -0
  202. package/skills/cti-expert/experience/layered-detail.md +205 -0
  203. package/skills/cti-expert/experience/skill-tiers.md +164 -0
  204. package/skills/cti-expert/experience/tutorial.md +198 -0
  205. package/skills/cti-expert/guides/walkthroughs/walkthrough-domain-sweep.md +131 -0
  206. package/skills/cti-expert/guides/walkthroughs/walkthrough-person-lookup.md +124 -0
  207. package/skills/cti-expert/guides/walkthroughs/walkthrough-username-trace.md +130 -0
  208. package/skills/cti-expert/handbook/discovery-paths.md +534 -0
  209. package/skills/cti-expert/handbook/operator-queries.md +337 -0
  210. package/skills/cti-expert/handbook/quick-report.md +96 -0
  211. package/skills/cti-expert/handbook/report-template.md +129 -0
  212. package/skills/cti-expert/handbook/tool-cascade-reference.md +249 -0
  213. package/skills/cti-expert/output/reports/citation-guide.md +145 -0
  214. package/skills/cti-expert/output/reports/export-specs.md +213 -0
  215. package/skills/cti-expert/output/reports/format-catalog.md +161 -0
  216. package/skills/cti-expert/output/reports/leadership-brief-template.md +531 -0
  217. package/skills/cti-expert/output/visuals/attack-path-diagram.md +178 -0
  218. package/skills/cti-expert/output/visuals/attack-surface-map.md +152 -0
  219. package/skills/cti-expert/output/visuals/case-dashboard.md +96 -0
  220. package/skills/cti-expert/output/visuals/chart-templates.md +1001 -0
  221. package/skills/cti-expert/output/visuals/render-engine.md +188 -0
  222. package/skills/cti-expert/output/visuals/ui-components.md +763 -0
  223. package/skills/cti-expert/scripts/cti_docx_charts.py +289 -0
  224. package/skills/cti-expert/scripts/cti_docx_diagrams.py +230 -0
  225. package/skills/cti-expert/scripts/cti_docx_postprocess.py +451 -0
  226. package/skills/cti-expert/scripts/cti_docx_sections.py +319 -0
  227. package/skills/cti-expert/scripts/cti_docx_styles.py +253 -0
  228. package/skills/cti-expert/scripts/generate-cti-docx-hybrid.py +178 -0
  229. package/skills/cti-expert/scripts/generate-cti-docx.py +210 -0
  230. package/skills/cti-expert/scripts/install.sh +322 -0
  231. package/skills/cti-expert/scripts/requirements.txt +6 -0
  232. package/skills/cti-expert/scripts/sample-cti-report-data.json +251 -0
  233. package/skills/cti-expert/techniques/advanced-geolocation-techniques.md +314 -0
  234. package/skills/cti-expert/techniques/agentflow-enrichment.md +150 -0
  235. package/skills/cti-expert/techniques/blockchain-investigation.md +247 -0
  236. package/skills/cti-expert/techniques/cloud-audit.md +175 -0
  237. package/skills/cti-expert/techniques/darknet-investigation.md +397 -0
  238. package/skills/cti-expert/techniques/dependency-audit.md +253 -0
  239. package/skills/cti-expert/techniques/disk-forensics.md +209 -0
  240. package/skills/cti-expert/techniques/domain-advanced.md +250 -0
  241. package/skills/cti-expert/techniques/email-osint.md +482 -0
  242. package/skills/cti-expert/techniques/fx-breach-discovery.md +142 -0
  243. package/skills/cti-expert/techniques/fx-dns-cert-history.md +257 -0
  244. package/skills/cti-expert/techniques/fx-document-forensics.md +64 -0
  245. package/skills/cti-expert/techniques/fx-document-leak-hunt.md +121 -0
  246. package/skills/cti-expert/techniques/fx-dork-sweep.md +157 -0
  247. package/skills/cti-expert/techniques/fx-email-header-analysis.md +91 -0
  248. package/skills/cti-expert/techniques/fx-geolocation.md +70 -0
  249. package/skills/cti-expert/techniques/fx-http-fingerprint.md +91 -0
  250. package/skills/cti-expert/techniques/fx-image-verification.md +87 -0
  251. package/skills/cti-expert/techniques/fx-leak-monitoring.md +84 -0
  252. package/skills/cti-expert/techniques/fx-metadata-parsing.md +96 -0
  253. package/skills/cti-expert/techniques/fx-network-mapping.md +95 -0
  254. package/skills/cti-expert/techniques/fx-social-topology.md +90 -0
  255. package/skills/cti-expert/techniques/fx-visitor-intelligence.md +413 -0
  256. package/skills/cti-expert/techniques/image-forensics-and-face-search.md +224 -0
  257. package/skills/cti-expert/techniques/incident-triage.md +197 -0
  258. package/skills/cti-expert/techniques/ioc-export.md +176 -0
  259. package/skills/cti-expert/techniques/microsoft-tenant-recon.md +86 -0
  260. package/skills/cti-expert/techniques/owasp-audit.md +178 -0
  261. package/skills/cti-expert/techniques/phone-osint.md +316 -0
  262. package/skills/cti-expert/techniques/prompt-injection-audit.md +236 -0
  263. package/skills/cti-expert/techniques/scam-check.md +217 -0
  264. package/skills/cti-expert/techniques/secret-scanning.md +195 -0
  265. package/skills/cti-expert/techniques/social-media-platforms.md +514 -0
  266. package/skills/cti-expert/techniques/threat-intel.md +315 -0
  267. package/skills/cti-expert/techniques/transport-tracking.md +353 -0
  268. package/skills/cti-expert/techniques/username-osint.md +227 -0
  269. package/skills/cti-expert/techniques/web-collection-scrapling.md +164 -0
  270. package/skills/cti-expert/techniques/web-dns-forensics.md +293 -0
  271. package/skills/cti-expert/techniques/web-traffic-analysis.md +180 -0
  272. package/skills/cti-expert/techniques/whois-universal.md +217 -0
  273. package/skills/cti-expert/techniques/wifi-ssid-osint.md +221 -0
  274. package/skills/cti-expert/validation/coverage-matrix.md +196 -0
  275. package/skills/cti-expert/validation/quality-scoring.md +114 -0
  276. package/skills/cti-expert/validation/verification-checklist.md +191 -0
  277. package/skills/cti-expert/workflows/wf-hr-screening.md +124 -0
  278. package/skills/cti-expert/workflows/wf-journalist.md +94 -0
  279. package/skills/cti-expert/workflows/wf-private-investigator.md +133 -0
  280. package/skills/cti-expert/workflows/wf-threat-analyst.md +126 -0
  281. package/skills/databases/SKILL.md +91 -0
  282. package/skills/databases/references/db-design.md +50 -0
  283. package/skills/databases/references/mongodb-aggregation.md +447 -0
  284. package/skills/databases/references/mongodb-atlas.md +465 -0
  285. package/skills/databases/references/mongodb-crud.md +408 -0
  286. package/skills/databases/references/mongodb-indexing.md +442 -0
  287. package/skills/databases/references/postgresql-administration.md +594 -0
  288. package/skills/databases/references/postgresql-performance.md +527 -0
  289. package/skills/databases/references/postgresql-psql-cli.md +467 -0
  290. package/skills/databases/references/postgresql-queries.md +475 -0
  291. package/skills/databases/scripts/db_backup.py +502 -0
  292. package/skills/databases/scripts/db_migrate.py +426 -0
  293. package/skills/databases/scripts/db_performance_check.py +457 -0
  294. package/skills/databases/scripts/requirements.txt +20 -0
  295. package/skills/databases/scripts/tests/coverage-db.json +1 -0
  296. package/skills/databases/scripts/tests/requirements.txt +4 -0
  297. package/skills/databases/scripts/tests/test_db_backup.py +340 -0
  298. package/skills/databases/scripts/tests/test_db_migrate.py +277 -0
  299. package/skills/databases/scripts/tests/test_db_performance_check.py +370 -0
  300. package/skills/debug/SKILL.md +161 -0
  301. package/skills/debug/references/defense-in-depth.md +124 -0
  302. package/skills/debug/references/frontend-verification.md +104 -0
  303. package/skills/debug/references/investigation-methodology.md +102 -0
  304. package/skills/debug/references/log-and-ci-analysis.md +97 -0
  305. package/skills/debug/references/performance-diagnostics.md +113 -0
  306. package/skills/debug/references/reporting-standards.md +122 -0
  307. package/skills/debug/references/root-cause-tracing.md +122 -0
  308. package/skills/debug/references/systematic-debugging.md +102 -0
  309. package/skills/debug/references/task-management-debugging.md +44 -0
  310. package/skills/debug/references/verification.md +123 -0
  311. package/skills/debug/scripts/find-polluter.sh +63 -0
  312. package/skills/debug/scripts/find-polluter.test.md +102 -0
  313. package/skills/deep-swe/LICENSE.txt +21 -0
  314. package/skills/deep-swe/SKILL.md +82 -0
  315. package/skills/deploy/SKILL.md +161 -0
  316. package/skills/deploy/references/platform-config-templates.md +35 -0
  317. package/skills/deploy/references/platforms/aws.md +58 -0
  318. package/skills/deploy/references/platforms/cloudflare.md +41 -0
  319. package/skills/deploy/references/platforms/coolify.md +32 -0
  320. package/skills/deploy/references/platforms/digitalocean.md +45 -0
  321. package/skills/deploy/references/platforms/dokploy.md +29 -0
  322. package/skills/deploy/references/platforms/flyio.md +54 -0
  323. package/skills/deploy/references/platforms/gcp.md +45 -0
  324. package/skills/deploy/references/platforms/github-pages.md +56 -0
  325. package/skills/deploy/references/platforms/heroku.md +31 -0
  326. package/skills/deploy/references/platforms/netlify.md +39 -0
  327. package/skills/deploy/references/platforms/railway.md +38 -0
  328. package/skills/deploy/references/platforms/render.md +39 -0
  329. package/skills/deploy/references/platforms/tose.md +35 -0
  330. package/skills/deploy/references/platforms/vercel.md +37 -0
  331. package/skills/deploy/references/platforms/vultr.md +27 -0
  332. package/skills/design/SKILL.md +368 -0
  333. package/skills/design/data/cip/deliverables.csv +51 -0
  334. package/skills/design/data/cip/industries.csv +21 -0
  335. package/skills/design/data/cip/mockup-contexts.csv +21 -0
  336. package/skills/design/data/cip/styles.csv +21 -0
  337. package/skills/design/data/icon/styles.csv +16 -0
  338. package/skills/design/data/logo/colors.csv +56 -0
  339. package/skills/design/data/logo/industries.csv +56 -0
  340. package/skills/design/data/logo/styles.csv +56 -0
  341. package/skills/design/data/poster/analysis/clusters.json +460 -0
  342. package/skills/design/data/poster/analysis/raw/03830de3c6fa0bec270ba0d7fc0e7846.json +41 -0
  343. package/skills/design/data/poster/analysis/raw/0720a64949fc9de76f4ef558c4a2a255.json +44 -0
  344. package/skills/design/data/poster/analysis/raw/0d2b819566c50e78e085d92cfc86d027.json +44 -0
  345. package/skills/design/data/poster/analysis/raw/11a3b9453165c20f093ba2b23dd88d12.json +43 -0
  346. package/skills/design/data/poster/analysis/raw/1327e16933d7c1a9f29e0b7427088724.json +45 -0
  347. package/skills/design/data/poster/analysis/raw/19b3f41ac3316417b7b3c05b6f259f78.json +45 -0
  348. package/skills/design/data/poster/analysis/raw/1d3081c243a0158eef6ac3f75fc9b210.json +44 -0
  349. package/skills/design/data/poster/analysis/raw/1e087bf80f15859a8c25f64c1f60eb05.json +46 -0
  350. package/skills/design/data/poster/analysis/raw/206bbb22ad70bdf9424a352c53885ded.json +44 -0
  351. package/skills/design/data/poster/analysis/raw/208f93c9e0e26a587c675482bb6159c0.json +46 -0
  352. package/skills/design/data/poster/analysis/raw/20a8613560d7b6950b3bb60f3b305ee9.json +46 -0
  353. package/skills/design/data/poster/analysis/raw/23b7c4cf67425a4586f52b5ab3193485.json +45 -0
  354. package/skills/design/data/poster/analysis/raw/29a4c5c51006e4e614a5d4e5f9a0cf38.json +42 -0
  355. package/skills/design/data/poster/analysis/raw/2ebb49c2e9cee470cfbf140ff55908db.json +45 -0
  356. package/skills/design/data/poster/analysis/raw/2f3b297a6f24872fb8e6b4df1b952ee7.json +43 -0
  357. package/skills/design/data/poster/analysis/raw/2f674e0079d3b0072bc464befc013291.json +44 -0
  358. package/skills/design/data/poster/analysis/raw/310540d28ae16e6c2e287e2848a70d59.json +42 -0
  359. package/skills/design/data/poster/analysis/raw/329159bd006090d76c9f17723b03266e.json +47 -0
  360. package/skills/design/data/poster/analysis/raw/32ce1f4f0710079bfcad7e9cd8b9ac23.json +46 -0
  361. package/skills/design/data/poster/analysis/raw/35021de3de00711b2253f3998a676ac7.json +43 -0
  362. package/skills/design/data/poster/analysis/raw/352817058d62df6c2a2187529ebc0811.json +44 -0
  363. package/skills/design/data/poster/analysis/raw/36097cd2af4616c9352ceef92e5b743e.json +44 -0
  364. package/skills/design/data/poster/analysis/raw/36f617c7bd8eb399694be84da430c4fe.json +42 -0
  365. package/skills/design/data/poster/analysis/raw/3931212aa88036d9380735e577f301c5.json +43 -0
  366. package/skills/design/data/poster/analysis/raw/39dbb26b8a479d276329d352fe530540.json +45 -0
  367. package/skills/design/data/poster/analysis/raw/3dc3adf1e1542239db8acbe7233ef6d3.json +44 -0
  368. package/skills/design/data/poster/analysis/raw/3f168ed33e3a90bca52d731b43b7f8ff.json +46 -0
  369. package/skills/design/data/poster/analysis/raw/43e8f9dec2c7b2b090ec370bd0948920.json +48 -0
  370. package/skills/design/data/poster/analysis/raw/451205c93b056ccbc22cbe473afacf2c.json +45 -0
  371. package/skills/design/data/poster/analysis/raw/451a8579b449a332a95f0b8f1022ce97.json +44 -0
  372. package/skills/design/data/poster/analysis/raw/463e4a2b40d25116c7fb6edc4f62a237.json +43 -0
  373. package/skills/design/data/poster/analysis/raw/4700136bbc2d6987577c3c16f4e187b3.json +43 -0
  374. package/skills/design/data/poster/analysis/raw/49d16faee41a2b99901fca62dc41fcbd.json +45 -0
  375. package/skills/design/data/poster/analysis/raw/4b25a302c481d7aa8913bcd5d5053688.json +43 -0
  376. package/skills/design/data/poster/analysis/raw/4e84eb4cb51d17fdaa195243e9271c0c.json +44 -0
  377. package/skills/design/data/poster/analysis/raw/4f616e824a5d2b3b596b4b07128cd2e2.json +45 -0
  378. package/skills/design/data/poster/analysis/raw/4f7e7f95ec46254afbcb4ed0f2f3556a.json +43 -0
  379. package/skills/design/data/poster/analysis/raw/52df1b896ff6d0d0de31f9e1e38cddc9.json +46 -0
  380. package/skills/design/data/poster/analysis/raw/5364e461254c715eb4302b5daafd8ce1.json +44 -0
  381. package/skills/design/data/poster/analysis/raw/558fa3a048e27a9558d0d568c15b7cf0.json +44 -0
  382. package/skills/design/data/poster/analysis/raw/5737d7fd13c865fff12218cd86d4a176.json +43 -0
  383. package/skills/design/data/poster/analysis/raw/59dda9c5466b0ca79913f3874efa36a1.json +44 -0
  384. package/skills/design/data/poster/analysis/raw/59ea108d8959586d359980808dc84fc3.json +44 -0
  385. package/skills/design/data/poster/analysis/raw/5c9277ead15d4e599740c7d6e698c3fa.json +44 -0
  386. package/skills/design/data/poster/analysis/raw/629edf88f617724399b5b5ee70c9fde9.json +45 -0
  387. package/skills/design/data/poster/analysis/raw/65326a5cf732897196f0fe5d81e1d7b5.json +44 -0
  388. package/skills/design/data/poster/analysis/raw/6ec5149c0f8046824346106d4ccaa9b7.json +44 -0
  389. package/skills/design/data/poster/analysis/raw/6fa6fe57aebc755736959ad860b806fd.json +45 -0
  390. package/skills/design/data/poster/analysis/raw/72f7066f8bfd58ae11cba72b7e986c67.json +45 -0
  391. package/skills/design/data/poster/analysis/raw/74a1e3bb73287a3e587d670074d3e09c.json +45 -0
  392. package/skills/design/data/poster/analysis/raw/75b9a7dbfc4f5298f6092a3dbbda9c80.json +44 -0
  393. package/skills/design/data/poster/analysis/raw/763a0cf095244d0ae0244a89d1863890.json +43 -0
  394. package/skills/design/data/poster/analysis/raw/780f94a12f778c2f2b5514597c6fef4a.json +48 -0
  395. package/skills/design/data/poster/analysis/raw/79bba33787bae383c829457dd6d90c02.json +44 -0
  396. package/skills/design/data/poster/analysis/raw/7a1e91d4e6c39f5d278ab4c833616ebf.json +44 -0
  397. package/skills/design/data/poster/analysis/raw/7a3e1681626bc52e3888dba109a072ba.json +44 -0
  398. package/skills/design/data/poster/analysis/raw/7b4120d6690f603ac417c9395a9b0aa7.json +44 -0
  399. package/skills/design/data/poster/analysis/raw/7bd18b2d9f4c813402f7bc5a4beb5022.json +44 -0
  400. package/skills/design/data/poster/analysis/raw/7e14dd460280476a871db304cd5b266b.json +45 -0
  401. package/skills/design/data/poster/analysis/raw/804ab63a723f046ed504683e5ff029ac.json +44 -0
  402. package/skills/design/data/poster/analysis/raw/80f5c85b6886175b4d4cdb009c33bd4b.json +46 -0
  403. package/skills/design/data/poster/analysis/raw/84f8e5e99ecc1448694574af98c9b261.json +43 -0
  404. package/skills/design/data/poster/analysis/raw/889907f1db801ccf18426d7111f37ad5.json +42 -0
  405. package/skills/design/data/poster/analysis/raw/8a800a072bcb22af6a8851b2d9274af4.json +46 -0
  406. package/skills/design/data/poster/analysis/raw/8ab3a73073a3d2be0f50605265264aa8.json +45 -0
  407. package/skills/design/data/poster/analysis/raw/8e9ab36670f8abb6e30ea8ee0936e76a.json +43 -0
  408. package/skills/design/data/poster/analysis/raw/961cdae977416844899cdf6d27f68c17.json +44 -0
  409. package/skills/design/data/poster/analysis/raw/9befb4c704b8f90d7988ca53b27bbaf8.json +46 -0
  410. package/skills/design/data/poster/analysis/raw/9cd149253f974524620fc7e626e7ab8b.json +45 -0
  411. package/skills/design/data/poster/analysis/raw/9e8eb8cd216c308eb955be98c8b5469c.json +43 -0
  412. package/skills/design/data/poster/analysis/raw/a00214fa42e14653b71e7e19750b2dd1.json +44 -0
  413. package/skills/design/data/poster/analysis/raw/a559e4c0235989ea746a1580a7a5fd67.json +46 -0
  414. package/skills/design/data/poster/analysis/raw/a820e920a16841be386901670b719cf8.json +45 -0
  415. package/skills/design/data/poster/analysis/raw/a886ff142548b39c4502de58a2c84015.json +44 -0
  416. package/skills/design/data/poster/analysis/raw/aaae7f36ab82d74cd378422e615e0c6b.json +47 -0
  417. package/skills/design/data/poster/analysis/raw/ad954edcb87747e9098689cbe4baa5ef.json +44 -0
  418. package/skills/design/data/poster/analysis/raw/ae121a7d8e2061230c1e894400c8a373.json +44 -0
  419. package/skills/design/data/poster/analysis/raw/ae8e1437e0cc1aaded8f58f5009e019d.json +46 -0
  420. package/skills/design/data/poster/analysis/raw/afdad5e00f97585a463bcc08b03f57a9.json +44 -0
  421. package/skills/design/data/poster/analysis/raw/b070823f2005d717d491ba63ceb79335.json +43 -0
  422. package/skills/design/data/poster/analysis/raw/b3f19b9d48b6bd983a43358cca317e8f.json +44 -0
  423. package/skills/design/data/poster/analysis/raw/b512b0981a30a0b48f8b0a8c20fbad39.json +44 -0
  424. package/skills/design/data/poster/analysis/raw/b545932bc5c82b7bb13a2f340f0eb38d.json +44 -0
  425. package/skills/design/data/poster/analysis/raw/b63f0dd0ab98a335966e47f29795f9c2.json +42 -0
  426. package/skills/design/data/poster/analysis/raw/bdc469042c5e3dc7e6e3748b431ae2a6.json +45 -0
  427. package/skills/design/data/poster/analysis/raw/c19c048627cb33e313b02b020789ce71.json +46 -0
  428. package/skills/design/data/poster/analysis/raw/c30fb63c7960e6bad555c859b4001111.json +47 -0
  429. package/skills/design/data/poster/analysis/raw/cbe2866e0e348558718f7e77168f0be7.json +46 -0
  430. package/skills/design/data/poster/analysis/raw/cd3600a62153c51f0a82aace1c49e56a.json +45 -0
  431. package/skills/design/data/poster/analysis/raw/d1f6cc3afc6b1ec24165658ec52495a0.json +46 -0
  432. package/skills/design/data/poster/analysis/raw/d28930761f38f870bd181a91bc20d283.json +47 -0
  433. package/skills/design/data/poster/analysis/raw/d4b8f9a965ada05816219f382658885b.json +44 -0
  434. package/skills/design/data/poster/analysis/raw/d526846fb5a303411a18ffb41c93995d.json +45 -0
  435. package/skills/design/data/poster/analysis/raw/d52d0671f8a0d52c5d1343020b8f3e8e.json +45 -0
  436. package/skills/design/data/poster/analysis/raw/d5c9c14b21ac3a63d3029c736af62814.json +45 -0
  437. package/skills/design/data/poster/analysis/raw/d8209a3ab55acb51fc51a77807842349.json +46 -0
  438. package/skills/design/data/poster/analysis/raw/da140c13475db4beeaf53a923139e6a6.json +45 -0
  439. package/skills/design/data/poster/analysis/raw/daf8de499d7734e187779e1400361420.json +45 -0
  440. package/skills/design/data/poster/analysis/raw/db7b1e073e80bee4fec31bfaabe06565.json +44 -0
  441. package/skills/design/data/poster/analysis/raw/dcba357e7239c0f3b7eddf412558e68c.json +42 -0
  442. package/skills/design/data/poster/analysis/raw/dcc5bc4453e379070d8dac1f8a50704d.json +46 -0
  443. package/skills/design/data/poster/analysis/raw/download.json +46 -0
  444. package/skills/design/data/poster/analysis/raw/e148e8bcff846b7c872c7c1d50452fd4.json +44 -0
  445. package/skills/design/data/poster/analysis/raw/e690c2a063b2e91da0612d818ac8f2f4.json +44 -0
  446. package/skills/design/data/poster/analysis/raw/e697e58f5a500c4b7ba0fb5c02a5506e.json +45 -0
  447. package/skills/design/data/poster/analysis/raw/ecb624bec81a0d5b229dc2fe4ed585fd.json +47 -0
  448. package/skills/design/data/poster/analysis/raw/eed5317c07fd8b093f039a0848e801d8.json +44 -0
  449. package/skills/design/data/poster/analysis/raw/f1853524781a04e99e9279cd6526e447.json +44 -0
  450. package/skills/design/data/poster/analysis/raw/f1a3249b2798d37edb956bfe1ea9d44b.json +44 -0
  451. package/skills/design/data/poster/analysis/raw/f3a81ad0c4189fd3ef83122e4c3f1d18.json +43 -0
  452. package/skills/design/data/poster/analysis/raw/f3e0358f167e6471f7dd6636529a9fc6.json +46 -0
  453. package/skills/design/data/poster/analysis/raw/f99f4bfc2eb5f0b11f8069aab956231b.json +47 -0
  454. package/skills/design/data/poster/analysis/raw/fc92743155daf8ccafe80dad8f7b1907.json +46 -0
  455. package/skills/design/data/poster/poster-layouts.csv +15 -0
  456. package/skills/design/data/poster/poster-palettes.csv +17 -0
  457. package/skills/design/data/poster/poster-styles.csv +23 -0
  458. package/skills/design/data/poster/poster-textures.csv +9 -0
  459. package/skills/design/references/banner-sizes-and-styles.md +118 -0
  460. package/skills/design/references/brand-asset-protocol.md +226 -0
  461. package/skills/design/references/cip-deliverable-guide.md +95 -0
  462. package/skills/design/references/cip-design.md +121 -0
  463. package/skills/design/references/cip-prompt-engineering.md +84 -0
  464. package/skills/design/references/cip-style-guide.md +68 -0
  465. package/skills/design/references/design-critique-guide.md +246 -0
  466. package/skills/design/references/design-routing.md +209 -0
  467. package/skills/design/references/design-workflow.md +194 -0
  468. package/skills/design/references/handoff-gate.md +56 -0
  469. package/skills/design/references/icon-design.md +122 -0
  470. package/skills/design/references/logo-color-psychology.md +101 -0
  471. package/skills/design/references/logo-design.md +92 -0
  472. package/skills/design/references/logo-prompt-engineering.md +158 -0
  473. package/skills/design/references/logo-style-guide.md +109 -0
  474. package/skills/design/references/poster-design.md +86 -0
  475. package/skills/design/references/poster-prompt-engineering.md +69 -0
  476. package/skills/design/references/slides-copywriting-formulas.md +84 -0
  477. package/skills/design/references/slides-create.md +4 -0
  478. package/skills/design/references/slides-html-template.md +295 -0
  479. package/skills/design/references/slides-layout-patterns.md +137 -0
  480. package/skills/design/references/slides-strategies.md +94 -0
  481. package/skills/design/references/slides.md +42 -0
  482. package/skills/design/references/social-photos-design.md +329 -0
  483. package/skills/design/scripts/cip/core.py +215 -0
  484. package/skills/design/scripts/cip/generate.py +484 -0
  485. package/skills/design/scripts/cip/render-html.py +424 -0
  486. package/skills/design/scripts/cip/search.py +127 -0
  487. package/skills/design/scripts/icon/generate.py +487 -0
  488. package/skills/design/scripts/logo/core.py +175 -0
  489. package/skills/design/scripts/logo/generate.py +362 -0
  490. package/skills/design/scripts/logo/search.py +114 -0
  491. package/skills/design/scripts/poster/analyze.py +124 -0
  492. package/skills/design/scripts/poster/cluster.py +432 -0
  493. package/skills/design/scripts/poster/core.py +124 -0
  494. package/skills/design/scripts/poster/generate.py +176 -0
  495. package/skills/design/scripts/poster/search.py +132 -0
  496. package/skills/devops/.env.example +76 -0
  497. package/skills/devops/SKILL.md +98 -0
  498. package/skills/devops/references/browser-rendering.md +305 -0
  499. package/skills/devops/references/cloudflare-d1-kv.md +123 -0
  500. package/skills/devops/references/cloudflare-platform.md +271 -0
  501. package/skills/devops/references/cloudflare-r2-storage.md +280 -0
  502. package/skills/devops/references/cloudflare-workers-advanced.md +312 -0
  503. package/skills/devops/references/cloudflare-workers-apis.md +309 -0
  504. package/skills/devops/references/cloudflare-workers-basics.md +418 -0
  505. package/skills/devops/references/docker-basics.md +297 -0
  506. package/skills/devops/references/docker-compose.md +292 -0
  507. package/skills/devops/references/gcloud-platform.md +297 -0
  508. package/skills/devops/references/gcloud-services.md +304 -0
  509. package/skills/devops/scripts/cloudflare_deploy.py +269 -0
  510. package/skills/devops/scripts/docker_optimize.py +332 -0
  511. package/skills/devops/scripts/requirements.txt +20 -0
  512. package/skills/devops/scripts/tests/requirements.txt +3 -0
  513. package/skills/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
  514. package/skills/devops/scripts/tests/test_docker_optimize.py +436 -0
  515. package/skills/diagram/SKILL.md +186 -0
  516. package/skills/diagram/agents/openai.yaml +4 -0
  517. package/skills/diagram/assets/connector-effects.css +122 -0
  518. package/skills/diagram/assets/effects-demo.html +125 -0
  519. package/skills/diagram/assets/mermaid.min.js +2314 -0
  520. package/skills/diagram/assets/templates/architecture/dark.html +190 -0
  521. package/skills/diagram/assets/templates/architecture/full.html +202 -0
  522. package/skills/diagram/assets/templates/architecture/light.html +191 -0
  523. package/skills/diagram/assets/templates/bar/dark.html +137 -0
  524. package/skills/diagram/assets/templates/bar/full.html +113 -0
  525. package/skills/diagram/assets/templates/bar/light.html +137 -0
  526. package/skills/diagram/assets/templates/data-flow/dark.html +151 -0
  527. package/skills/diagram/assets/templates/data-flow/full.html +193 -0
  528. package/skills/diagram/assets/templates/data-flow/light.html +151 -0
  529. package/skills/diagram/assets/templates/dp-integration/dark.html +88 -0
  530. package/skills/diagram/assets/templates/dp-integration/full.html +98 -0
  531. package/skills/diagram/assets/templates/dp-integration/light.html +88 -0
  532. package/skills/diagram/assets/templates/dp-security-matrix/dark.html +39 -0
  533. package/skills/diagram/assets/templates/dp-security-matrix/full.html +40 -0
  534. package/skills/diagram/assets/templates/dp-security-matrix/light.html +96 -0
  535. package/skills/diagram/assets/templates/flowchart/dark.html +164 -0
  536. package/skills/diagram/assets/templates/flowchart/full.html +167 -0
  537. package/skills/diagram/assets/templates/flowchart/light.html +164 -0
  538. package/skills/diagram/assets/templates/gantt/dark.html +145 -0
  539. package/skills/diagram/assets/templates/gantt/full.html +135 -0
  540. package/skills/diagram/assets/templates/gantt/light.html +145 -0
  541. package/skills/diagram/assets/templates/high-level/dark.html +259 -0
  542. package/skills/diagram/assets/templates/high-level/full.html +255 -0
  543. package/skills/diagram/assets/templates/high-level/light.html +309 -0
  544. package/skills/diagram/assets/templates/it-state/dark.html +98 -0
  545. package/skills/diagram/assets/templates/it-state/full.html +77 -0
  546. package/skills/diagram/assets/templates/it-state/light.html +136 -0
  547. package/skills/diagram/assets/templates/layers/dark.html +131 -0
  548. package/skills/diagram/assets/templates/layers/full.html +134 -0
  549. package/skills/diagram/assets/templates/layers/light.html +131 -0
  550. package/skills/diagram/assets/templates/line/dark.html +119 -0
  551. package/skills/diagram/assets/templates/line/full.html +113 -0
  552. package/skills/diagram/assets/templates/line/light.html +119 -0
  553. package/skills/diagram/assets/templates/loop/dark.html +108 -0
  554. package/skills/diagram/assets/templates/loop/full.html +145 -0
  555. package/skills/diagram/assets/templates/loop/light.html +108 -0
  556. package/skills/diagram/assets/templates/medallion/dark.html +167 -0
  557. package/skills/diagram/assets/templates/medallion/full.html +209 -0
  558. package/skills/diagram/assets/templates/medallion/light.html +167 -0
  559. package/skills/diagram/assets/templates/nested/dark.html +140 -0
  560. package/skills/diagram/assets/templates/nested/full.html +143 -0
  561. package/skills/diagram/assets/templates/nested/light.html +144 -0
  562. package/skills/diagram/assets/templates/org-chart/dark.html +53 -0
  563. package/skills/diagram/assets/templates/org-chart/full.html +53 -0
  564. package/skills/diagram/assets/templates/org-chart/light.html +53 -0
  565. package/skills/diagram/assets/templates/process/dark.html +72 -0
  566. package/skills/diagram/assets/templates/process/full.html +82 -0
  567. package/skills/diagram/assets/templates/process/light.html +72 -0
  568. package/skills/diagram/assets/templates/pyramid/dark.html +127 -0
  569. package/skills/diagram/assets/templates/pyramid/full.html +130 -0
  570. package/skills/diagram/assets/templates/pyramid/light.html +127 -0
  571. package/skills/diagram/assets/templates/quadrant/dark.html +143 -0
  572. package/skills/diagram/assets/templates/quadrant/full.html +146 -0
  573. package/skills/diagram/assets/templates/quadrant/light.html +143 -0
  574. package/skills/diagram/assets/templates/radar/dark.html +147 -0
  575. package/skills/diagram/assets/templates/radar/full.html +143 -0
  576. package/skills/diagram/assets/templates/radar/light.html +147 -0
  577. package/skills/diagram/assets/templates/scatter/dark.html +149 -0
  578. package/skills/diagram/assets/templates/scatter/full.html +124 -0
  579. package/skills/diagram/assets/templates/scatter/light.html +149 -0
  580. package/skills/diagram/assets/templates/sequence/dark.html +230 -0
  581. package/skills/diagram/assets/templates/sequence/full.html +396 -0
  582. package/skills/diagram/assets/templates/sequence/light.html +230 -0
  583. package/skills/diagram/assets/templates/state/dark.html +155 -0
  584. package/skills/diagram/assets/templates/state/full.html +158 -0
  585. package/skills/diagram/assets/templates/state/light.html +155 -0
  586. package/skills/diagram/assets/templates/swimlane/dark.html +180 -0
  587. package/skills/diagram/assets/templates/swimlane/full.html +183 -0
  588. package/skills/diagram/assets/templates/swimlane/light.html +180 -0
  589. package/skills/diagram/assets/templates/timeline/dark.html +143 -0
  590. package/skills/diagram/assets/templates/timeline/full.html +146 -0
  591. package/skills/diagram/assets/templates/timeline/light.html +143 -0
  592. package/skills/diagram/assets/tokens.css +116 -0
  593. package/skills/diagram/references/animation-effects.md +142 -0
  594. package/skills/diagram/references/mermaid-input.md +62 -0
  595. package/skills/diagram/references/per-type-schemas/README.md +60 -0
  596. package/skills/diagram/references/per-type-schemas/architecture.json +50 -0
  597. package/skills/diagram/references/per-type-schemas/bar.json +44 -0
  598. package/skills/diagram/references/per-type-schemas/data-flow.json +71 -0
  599. package/skills/diagram/references/per-type-schemas/dp-integration.json +47 -0
  600. package/skills/diagram/references/per-type-schemas/dp-security-matrix.json +51 -0
  601. package/skills/diagram/references/per-type-schemas/high-level.json +47 -0
  602. package/skills/diagram/references/per-type-schemas/it-state.json +51 -0
  603. package/skills/diagram/references/per-type-schemas/layers.json +41 -0
  604. package/skills/diagram/references/per-type-schemas/line.json +65 -0
  605. package/skills/diagram/references/per-type-schemas/loop.json +19 -0
  606. package/skills/diagram/references/per-type-schemas/medallion.json +48 -0
  607. package/skills/diagram/references/per-type-schemas/nested.json +45 -0
  608. package/skills/diagram/references/per-type-schemas/org-chart.json +48 -0
  609. package/skills/diagram/references/per-type-schemas/process.json +35 -0
  610. package/skills/diagram/references/per-type-schemas/pyramid.json +37 -0
  611. package/skills/diagram/references/per-type-schemas/quadrant.json +78 -0
  612. package/skills/diagram/references/per-type-schemas/radar.json +57 -0
  613. package/skills/diagram/references/per-type-schemas/scatter.json +58 -0
  614. package/skills/diagram/references/per-type-schemas/swimlane.json +50 -0
  615. package/skills/diagram/references/per-type-schemas/timeline.json +50 -0
  616. package/skills/diagram/references/snapshot-hashes.yaml +73 -0
  617. package/skills/diagram/references/snapshot-requirements.txt +2 -0
  618. package/skills/diagram/references/vendoring-metadata.yaml +379 -0
  619. package/skills/diagram/scripts/doctor.py +153 -0
  620. package/skills/diagram/scripts/record.py +151 -0
  621. package/skills/diagram/scripts/render.py +276 -0
  622. package/skills/diagram/scripts/snapshot_test.py +200 -0
  623. package/skills/diagram/scripts/vendor_from_upstream.py +201 -0
  624. package/skills/docs/SKILL.md +123 -0
  625. package/skills/docs/references/agent-context-rules.md +103 -0
  626. package/skills/docs/references/agents-workflow.md +268 -0
  627. package/skills/docs/references/doc-content-rules.md +77 -0
  628. package/skills/docs/references/documentation-management.md +51 -0
  629. package/skills/docs/references/init-workflow.md +60 -0
  630. package/skills/docs/references/llms.md +151 -0
  631. package/skills/docs/references/practical-principles-for-setting-up-and-running-tests.md +85 -0
  632. package/skills/docs/references/summarize-workflow.md +16 -0
  633. package/skills/docs/references/update-workflow.md +58 -0
  634. package/skills/docs-seeker/.env.example +15 -0
  635. package/skills/docs-seeker/SKILL.md +104 -0
  636. package/skills/docs-seeker/package.json +25 -0
  637. package/skills/docs-seeker/references/advanced.md +79 -0
  638. package/skills/docs-seeker/references/context7-patterns.md +68 -0
  639. package/skills/docs-seeker/references/errors.md +68 -0
  640. package/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  641. package/skills/docs-seeker/scripts/detect-topic.js +172 -0
  642. package/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  643. package/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  644. package/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  645. package/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  646. package/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  647. package/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  648. package/skills/docs-seeker/workflows/library-search.md +87 -0
  649. package/skills/docs-seeker/workflows/repo-analysis.md +91 -0
  650. package/skills/docs-seeker/workflows/topic-search.md +77 -0
  651. package/skills/document-skills/SKILL.md +10 -0
  652. package/skills/document-skills/ak-docx/LICENSE.txt +30 -0
  653. package/skills/document-skills/ak-docx/SKILL.md +204 -0
  654. package/skills/document-skills/ak-docx/docx-js.md +350 -0
  655. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  656. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  657. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  658. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  659. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  660. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  661. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  662. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  663. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  664. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  665. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  666. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  667. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  668. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  669. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  670. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  671. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  672. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  673. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  674. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  675. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  676. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  677. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  678. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  679. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  680. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  681. package/skills/document-skills/ak-docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  682. package/skills/document-skills/ak-docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  683. package/skills/document-skills/ak-docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  684. package/skills/document-skills/ak-docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  685. package/skills/document-skills/ak-docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  686. package/skills/document-skills/ak-docx/ooxml/schemas/mce/mc.xsd +75 -0
  687. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  688. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  689. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  690. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  691. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  692. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  693. package/skills/document-skills/ak-docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  694. package/skills/document-skills/ak-docx/ooxml/scripts/pack.py +159 -0
  695. package/skills/document-skills/ak-docx/ooxml/scripts/unpack.py +29 -0
  696. package/skills/document-skills/ak-docx/ooxml/scripts/validate.py +69 -0
  697. package/skills/document-skills/ak-docx/ooxml/scripts/validation/__init__.py +15 -0
  698. package/skills/document-skills/ak-docx/ooxml/scripts/validation/base.py +951 -0
  699. package/skills/document-skills/ak-docx/ooxml/scripts/validation/docx.py +274 -0
  700. package/skills/document-skills/ak-docx/ooxml/scripts/validation/pptx.py +315 -0
  701. package/skills/document-skills/ak-docx/ooxml/scripts/validation/redlining.py +279 -0
  702. package/skills/document-skills/ak-docx/ooxml.md +610 -0
  703. package/skills/document-skills/ak-docx/scripts/__init__.py +1 -0
  704. package/skills/document-skills/ak-docx/scripts/document.py +1276 -0
  705. package/skills/document-skills/ak-docx/scripts/templates/comments.xml +3 -0
  706. package/skills/document-skills/ak-docx/scripts/templates/commentsExtended.xml +3 -0
  707. package/skills/document-skills/ak-docx/scripts/templates/commentsExtensible.xml +3 -0
  708. package/skills/document-skills/ak-docx/scripts/templates/commentsIds.xml +3 -0
  709. package/skills/document-skills/ak-docx/scripts/templates/people.xml +3 -0
  710. package/skills/document-skills/ak-docx/scripts/utilities.py +374 -0
  711. package/skills/document-skills/ak-pdf/LICENSE.txt +30 -0
  712. package/skills/document-skills/ak-pdf/SKILL.md +301 -0
  713. package/skills/document-skills/ak-pdf/forms.md +205 -0
  714. package/skills/document-skills/ak-pdf/reference.md +612 -0
  715. package/skills/document-skills/ak-pdf/scripts/check_bounding_boxes.py +70 -0
  716. package/skills/document-skills/ak-pdf/scripts/check_bounding_boxes_test.py +226 -0
  717. package/skills/document-skills/ak-pdf/scripts/check_fillable_fields.py +12 -0
  718. package/skills/document-skills/ak-pdf/scripts/convert_pdf_to_images.py +35 -0
  719. package/skills/document-skills/ak-pdf/scripts/create_validation_image.py +41 -0
  720. package/skills/document-skills/ak-pdf/scripts/extract_form_field_info.py +152 -0
  721. package/skills/document-skills/ak-pdf/scripts/fill_fillable_fields.py +114 -0
  722. package/skills/document-skills/ak-pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  723. package/skills/document-skills/ak-pptx/LICENSE.txt +30 -0
  724. package/skills/document-skills/ak-pptx/SKILL.md +491 -0
  725. package/skills/document-skills/ak-pptx/html2pptx.md +625 -0
  726. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  727. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  728. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  729. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  730. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  731. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  732. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  733. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  734. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  735. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  736. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  737. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  738. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  739. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  740. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  741. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  742. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  743. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  744. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  745. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  746. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  747. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  748. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  749. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  750. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  751. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  752. package/skills/document-skills/ak-pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  753. package/skills/document-skills/ak-pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  754. package/skills/document-skills/ak-pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  755. package/skills/document-skills/ak-pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  756. package/skills/document-skills/ak-pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  757. package/skills/document-skills/ak-pptx/ooxml/schemas/mce/mc.xsd +75 -0
  758. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  759. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  760. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  761. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  762. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  763. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  764. package/skills/document-skills/ak-pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  765. package/skills/document-skills/ak-pptx/ooxml/scripts/pack.py +159 -0
  766. package/skills/document-skills/ak-pptx/ooxml/scripts/unpack.py +29 -0
  767. package/skills/document-skills/ak-pptx/ooxml/scripts/validate.py +69 -0
  768. package/skills/document-skills/ak-pptx/ooxml/scripts/validation/__init__.py +15 -0
  769. package/skills/document-skills/ak-pptx/ooxml/scripts/validation/base.py +951 -0
  770. package/skills/document-skills/ak-pptx/ooxml/scripts/validation/docx.py +274 -0
  771. package/skills/document-skills/ak-pptx/ooxml/scripts/validation/pptx.py +315 -0
  772. package/skills/document-skills/ak-pptx/ooxml/scripts/validation/redlining.py +279 -0
  773. package/skills/document-skills/ak-pptx/ooxml.md +427 -0
  774. package/skills/document-skills/ak-pptx/scripts/html2pptx.js +979 -0
  775. package/skills/document-skills/ak-pptx/scripts/inventory.py +1020 -0
  776. package/skills/document-skills/ak-pptx/scripts/rearrange.py +231 -0
  777. package/skills/document-skills/ak-pptx/scripts/replace.py +385 -0
  778. package/skills/document-skills/ak-pptx/scripts/thumbnail.py +450 -0
  779. package/skills/document-skills/ak-xlsx/LICENSE.txt +30 -0
  780. package/skills/document-skills/ak-xlsx/SKILL.md +296 -0
  781. package/skills/document-skills/ak-xlsx/recalc.py +191 -0
  782. package/skills/excalidraw/SKILL.md +210 -0
  783. package/skills/excalidraw/references/auto-diagram-guide.md +150 -0
  784. package/skills/excalidraw/references/color-palette.md +128 -0
  785. package/skills/excalidraw/references/design-methodology.md +129 -0
  786. package/skills/excalidraw/references/element-templates.md +182 -0
  787. package/skills/excalidraw/references/file-workflow.md +105 -0
  788. package/skills/excalidraw/references/json-schema.md +85 -0
  789. package/skills/excalidraw/references/mcp-workflow.md +194 -0
  790. package/skills/excalidraw/references/pyproject.toml +7 -0
  791. package/skills/excalidraw/references/render_excalidraw.py +187 -0
  792. package/skills/excalidraw/references/render_template.html +57 -0
  793. package/skills/excalidraw/references/uv.lock +106 -0
  794. package/skills/explore/SKILL.md +44 -0
  795. package/skills/fable-thinking/SKILL.md +399 -0
  796. package/skills/fable-thinking/references/content-taste.md +178 -0
  797. package/skills/fable-thinking/references/design-taste.md +182 -0
  798. package/skills/fable-thinking/references/worked-examples.md +228 -0
  799. package/skills/find-skills/SKILL.md +147 -0
  800. package/skills/find-skills/references/domain-routing.md +108 -0
  801. package/skills/fix/SKILL.md +354 -0
  802. package/skills/fix/references/complexity-assessment.md +73 -0
  803. package/skills/fix/references/mode-selection.md +46 -0
  804. package/skills/fix/references/parallel-exploration.md +87 -0
  805. package/skills/fix/references/review-cycle.md +77 -0
  806. package/skills/fix/references/skill-activation-matrix.md +100 -0
  807. package/skills/fix/references/workflow-ci.md +28 -0
  808. package/skills/fix/references/workflow-deep.md +165 -0
  809. package/skills/fix/references/workflow-logs.md +59 -0
  810. package/skills/fix/references/workflow-quick.md +99 -0
  811. package/skills/fix/references/workflow-standard.md +127 -0
  812. package/skills/fix/references/workflow-test.md +57 -0
  813. package/skills/fix/references/workflow-types.md +33 -0
  814. package/skills/fix/references/workflow-ui.md +59 -0
  815. package/skills/folder-context/LICENSE.txt +21 -0
  816. package/skills/folder-context/SKILL.md +55 -0
  817. package/skills/frontend-design/SKILL.md +276 -0
  818. package/skills/frontend-design/references/ai-multimodal-overview.md +162 -0
  819. package/skills/frontend-design/references/analysis-best-practices.md +80 -0
  820. package/skills/frontend-design/references/analysis-prompts.md +141 -0
  821. package/skills/frontend-design/references/analysis-techniques.md +112 -0
  822. package/skills/frontend-design/references/animejs.md +396 -0
  823. package/skills/frontend-design/references/asset-generation.md +326 -0
  824. package/skills/frontend-design/references/design-extraction-overview.md +67 -0
  825. package/skills/frontend-design/references/design-quality-preflight.md +36 -0
  826. package/skills/frontend-design/references/extraction-best-practices.md +138 -0
  827. package/skills/frontend-design/references/extraction-output-templates.md +162 -0
  828. package/skills/frontend-design/references/extraction-prompts.md +127 -0
  829. package/skills/frontend-design/references/motion-craft.md +166 -0
  830. package/skills/frontend-design/references/technical-accessibility.md +118 -0
  831. package/skills/frontend-design/references/technical-best-practices.md +97 -0
  832. package/skills/frontend-design/references/technical-optimization.md +44 -0
  833. package/skills/frontend-design/references/technical-overview.md +88 -0
  834. package/skills/frontend-design/references/technical-workflows.md +137 -0
  835. package/skills/frontend-design/references/visual-analysis-overview.md +100 -0
  836. package/skills/frontend-design/references/workflow-3d.md +102 -0
  837. package/skills/frontend-design/references/workflow-describe.md +87 -0
  838. package/skills/frontend-design/references/workflow-immersive.md +87 -0
  839. package/skills/frontend-design/references/workflow-quick.md +57 -0
  840. package/skills/frontend-design/references/workflow-screenshot.md +63 -0
  841. package/skills/frontend-design/references/workflow-video.md +74 -0
  842. package/skills/frontend-development/SKILL.md +407 -0
  843. package/skills/frontend-development/resources/common-patterns.md +331 -0
  844. package/skills/frontend-development/resources/complete-examples.md +872 -0
  845. package/skills/frontend-development/resources/component-patterns.md +502 -0
  846. package/skills/frontend-development/resources/data-fetching.md +767 -0
  847. package/skills/frontend-development/resources/file-organization.md +502 -0
  848. package/skills/frontend-development/resources/loading-and-error-states.md +501 -0
  849. package/skills/frontend-development/resources/performance.md +406 -0
  850. package/skills/frontend-development/resources/routing-guide.md +364 -0
  851. package/skills/frontend-development/resources/styling-guide.md +428 -0
  852. package/skills/frontend-development/resources/typescript-standards.md +418 -0
  853. package/skills/git/SKILL.md +133 -0
  854. package/skills/git/references/branch-management.md +88 -0
  855. package/skills/git/references/commit-standards.md +46 -0
  856. package/skills/git/references/gh-cli-guide.md +109 -0
  857. package/skills/git/references/safety-protocols.md +69 -0
  858. package/skills/git/references/workflow-commit.md +58 -0
  859. package/skills/git/references/workflow-merge-pr.md +198 -0
  860. package/skills/git/references/workflow-merge.md +48 -0
  861. package/skills/git/references/workflow-pr.md +58 -0
  862. package/skills/git/references/workflow-push.md +52 -0
  863. package/skills/git/references/workflow-stacked-prs.md +110 -0
  864. package/skills/github/SKILL.md +162 -0
  865. package/skills/github/assets/templates/issue-bug.md +46 -0
  866. package/skills/github/assets/templates/issue-docs.md +29 -0
  867. package/skills/github/assets/templates/issue-enhancement.md +31 -0
  868. package/skills/github/assets/templates/issue-feature.md +49 -0
  869. package/skills/github/assets/templates/pr-body.md +35 -0
  870. package/skills/github/references/admin-operations.md +107 -0
  871. package/skills/github/references/issue-workflows.md +151 -0
  872. package/skills/github/references/pr-workflows.md +89 -0
  873. package/skills/github/references/projects-actions.md +92 -0
  874. package/skills/gkg/SKILL.md +98 -0
  875. package/skills/gkg/references/cli-commands.md +106 -0
  876. package/skills/gkg/references/http-api.md +102 -0
  877. package/skills/gkg/references/language-support.md +57 -0
  878. package/skills/gkg/references/mcp-tools.md +99 -0
  879. package/skills/goal-warmup/SKILL.md +217 -0
  880. package/skills/goal-warmup/fixtures/blocked-missing-credential.md +32 -0
  881. package/skills/goal-warmup/fixtures/blocked-third-party.md +28 -0
  882. package/skills/goal-warmup/fixtures/decision-required.md +28 -0
  883. package/skills/goal-warmup/fixtures/fast-refused-external.md +22 -0
  884. package/skills/goal-warmup/fixtures/ready-local.md +39 -0
  885. package/skills/goal-warmup/fixtures/redteam-scope-change.md +26 -0
  886. package/skills/goal-warmup/references/contract-preserving-review.md +61 -0
  887. package/skills/goal-warmup/references/decisions.md +21 -0
  888. package/skills/goal-warmup/references/fast-path.md +41 -0
  889. package/skills/goal-warmup/references/handoff-packet.md +80 -0
  890. package/skills/goal-warmup/references/outcome-contract.md +50 -0
  891. package/skills/goal-warmup/references/preflight-matrix.md +42 -0
  892. package/skills/google-adk-python/SKILL.md +139 -0
  893. package/skills/google-adk-python/references/agent-types-and-architecture.md +128 -0
  894. package/skills/google-adk-python/references/callbacks-plugins-observability.md +117 -0
  895. package/skills/google-adk-python/references/deployment-cloud-run-vertex-gke.md +138 -0
  896. package/skills/google-adk-python/references/evaluation-testing-cli.md +112 -0
  897. package/skills/google-adk-python/references/multi-agent-and-a2a-protocol.md +145 -0
  898. package/skills/google-adk-python/references/sessions-state-memory-artifacts.md +131 -0
  899. package/skills/google-adk-python/references/tools-and-mcp-integration.md +148 -0
  900. package/skills/graphify/SKILL.md +160 -0
  901. package/skills/handoff/LICENSE.txt +21 -0
  902. package/skills/handoff/SKILL.md +258 -0
  903. package/skills/handoff/references/artifact-schema.md +147 -0
  904. package/skills/handoff/references/redaction-patterns.md +80 -0
  905. package/skills/handover/SKILL.md +274 -0
  906. package/skills/handover/references/job-spec-template.md +155 -0
  907. package/skills/handover/references/runtime-catalog.md +102 -0
  908. package/skills/help/SKILL.md +21 -0
  909. package/skills/html-video/SKILL.md +185 -0
  910. package/skills/hyperframes/SKILL.md +129 -0
  911. package/skills/hyperframes/references/composition-basics.md +77 -0
  912. package/skills/hyperframes/references/env-and-deps.md +55 -0
  913. package/skills/hyperframes/references/heygen-skills.md +36 -0
  914. package/skills/hyperframes/references/render-workflow.md +88 -0
  915. package/skills/hyperframes/scripts/verify-prereqs.mjs +148 -0
  916. package/skills/hyperframes/scripts/verify-prereqs.test.cjs +60 -0
  917. package/skills/implement/SKILL.md +38 -0
  918. package/skills/interview-docs/LICENSE.txt +21 -0
  919. package/skills/interview-docs/SKILL.md +58 -0
  920. package/skills/issue-to-plan/SKILL.md +249 -0
  921. package/skills/journal/SKILL.md +147 -0
  922. package/skills/journal/assets/journal.yaml.example +33 -0
  923. package/skills/journal/references/channels-config.md +107 -0
  924. package/skills/journal/references/config-schema.md +95 -0
  925. package/skills/journal/references/env-cascade.md +61 -0
  926. package/skills/journal/references/media-flags.md +118 -0
  927. package/skills/journal/references/writing-styles-resolver.md +56 -0
  928. package/skills/journal/references/zernio-integration.md +143 -0
  929. package/skills/journal/scripts/env-loader.cjs +150 -0
  930. package/skills/journal/scripts/env-loader.test.cjs +131 -0
  931. package/skills/journal/scripts/generate-image.cjs +195 -0
  932. package/skills/journal/scripts/generate-image.test.cjs +171 -0
  933. package/skills/journal/scripts/generate-video.cjs +288 -0
  934. package/skills/journal/scripts/generate-video.test.cjs +186 -0
  935. package/skills/journal/scripts/media-utils.cjs +153 -0
  936. package/skills/journal/scripts/mini-yaml-parser.cjs +234 -0
  937. package/skills/journal/scripts/post-social.cjs +549 -0
  938. package/skills/journal/scripts/post-social.test.cjs +479 -0
  939. package/skills/journal/scripts/resolve-config.cjs +182 -0
  940. package/skills/journal/scripts/resolve-config.test.cjs +248 -0
  941. package/skills/journal/scripts/split-thread.cjs +254 -0
  942. package/skills/journal/scripts/split-thread.test.cjs +138 -0
  943. package/skills/llms/SKILL.md +124 -0
  944. package/skills/llms/references/llms-txt-specification.md +87 -0
  945. package/skills/llms/scripts/generate-llms-txt.py +350 -0
  946. package/skills/loop/SKILL.md +189 -0
  947. package/skills/loop/references/autonomous-loop-protocol.md +193 -0
  948. package/skills/loop/references/git-memory-pattern.md +109 -0
  949. package/skills/loop/references/guard-and-noise.md +140 -0
  950. package/skills/loop/references/metric-library.md +200 -0
  951. package/skills/loop/references/results-logging.md +74 -0
  952. package/skills/markdown-novel-viewer/SKILL.md +319 -0
  953. package/skills/markdown-novel-viewer/assets/directory-browser.css +215 -0
  954. package/skills/markdown-novel-viewer/assets/favicon.png +0 -0
  955. package/skills/markdown-novel-viewer/assets/novel-theme.css +16 -0
  956. package/skills/markdown-novel-viewer/assets/reader.js +850 -0
  957. package/skills/markdown-novel-viewer/assets/template.html +149 -0
  958. package/skills/markdown-novel-viewer/package.json +15 -0
  959. package/skills/markdown-novel-viewer/scripts/lib/http-server.cjs +434 -0
  960. package/skills/markdown-novel-viewer/scripts/lib/markdown-renderer.cjs +335 -0
  961. package/skills/markdown-novel-viewer/scripts/lib/plan-navigator.cjs +205 -0
  962. package/skills/markdown-novel-viewer/scripts/lib/plan-table-parser.cjs +231 -0
  963. package/skills/markdown-novel-viewer/scripts/lib/port-finder.cjs +48 -0
  964. package/skills/markdown-novel-viewer/scripts/lib/process-mgr.cjs +150 -0
  965. package/skills/markdown-novel-viewer/scripts/server.cjs +411 -0
  966. package/skills/markdown-novel-viewer/scripts/tests/server.test.cjs +327 -0
  967. package/skills/markdown-novel-viewer/tests/http-server.test.cjs +271 -0
  968. package/skills/markdown-novel-viewer/tests/run-tests.cjs +49 -0
  969. package/skills/markdown-novel-viewer/tests/test-framework.cjs +154 -0
  970. package/skills/mcp-builder/LICENSE.txt +202 -0
  971. package/skills/mcp-builder/SKILL.md +336 -0
  972. package/skills/mcp-builder/reference/evaluation.md +584 -0
  973. package/skills/mcp-builder/reference/mcp-best-practices.md +915 -0
  974. package/skills/mcp-builder/reference/node-mcp-server.md +918 -0
  975. package/skills/mcp-builder/reference/python-mcp-server.md +752 -0
  976. package/skills/mcp-builder/scripts/connections.py +151 -0
  977. package/skills/mcp-builder/scripts/evaluation.py +381 -0
  978. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  979. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  980. package/skills/media-processing/SKILL.md +101 -0
  981. package/skills/media-processing/references/common-workflows.md +132 -0
  982. package/skills/media-processing/references/ffmpeg-encoding.md +358 -0
  983. package/skills/media-processing/references/ffmpeg-filters.md +503 -0
  984. package/skills/media-processing/references/ffmpeg-streaming.md +403 -0
  985. package/skills/media-processing/references/format-compatibility.md +375 -0
  986. package/skills/media-processing/references/imagemagick-batch.md +612 -0
  987. package/skills/media-processing/references/imagemagick-editing.md +623 -0
  988. package/skills/media-processing/references/rmbg-background-removal.md +66 -0
  989. package/skills/media-processing/references/troubleshooting.md +109 -0
  990. package/skills/media-processing/scripts/README.md +111 -0
  991. package/skills/media-processing/scripts/batch-remove-background.sh +124 -0
  992. package/skills/media-processing/scripts/batch_resize.py +342 -0
  993. package/skills/media-processing/scripts/media_convert.py +311 -0
  994. package/skills/media-processing/scripts/remove-background.sh +96 -0
  995. package/skills/media-processing/scripts/remove-bg-node.js +158 -0
  996. package/skills/media-processing/scripts/requirements.txt +24 -0
  997. package/skills/media-processing/scripts/tests/requirements.txt +2 -0
  998. package/skills/media-processing/scripts/tests/test_batch_resize.py +372 -0
  999. package/skills/media-processing/scripts/tests/test_media_convert.py +259 -0
  1000. package/skills/media-processing/scripts/tests/test_video_optimize.py +397 -0
  1001. package/skills/media-processing/scripts/video_optimize.py +414 -0
  1002. package/skills/mermaidjs-v11/SKILL.md +125 -0
  1003. package/skills/mermaidjs-v11/references/cli-usage.md +228 -0
  1004. package/skills/mermaidjs-v11/references/configuration.md +232 -0
  1005. package/skills/mermaidjs-v11/references/diagram-types.md +315 -0
  1006. package/skills/mermaidjs-v11/references/examples.md +344 -0
  1007. package/skills/mermaidjs-v11/references/integration.md +310 -0
  1008. package/skills/mintlify/SKILL.md +127 -0
  1009. package/skills/mintlify/references/ai-features-and-integrations-reference.md +756 -0
  1010. package/skills/mintlify/references/api-documentation-components-reference.md +873 -0
  1011. package/skills/mintlify/references/deployment-and-continuous-integration-reference.md +674 -0
  1012. package/skills/mintlify/references/docs-json-configuration-reference.md +724 -0
  1013. package/skills/mintlify/references/mdx-components-reference.md +551 -0
  1014. package/skills/mintlify/references/navigation-structure-and-organization-reference.md +775 -0
  1015. package/skills/mobile-development/SKILL.md +219 -0
  1016. package/skills/mobile-development/references/mobile-android.md +604 -0
  1017. package/skills/mobile-development/references/mobile-best-practices.md +545 -0
  1018. package/skills/mobile-development/references/mobile-debugging.md +1089 -0
  1019. package/skills/mobile-development/references/mobile-frameworks.md +465 -0
  1020. package/skills/mobile-development/references/mobile-ios.md +496 -0
  1021. package/skills/mobile-development/references/mobile-mindset.md +544 -0
  1022. package/skills/orchestrate/SKILL.md +366 -0
  1023. package/skills/orchestrate/references/harness-profiles.md +148 -0
  1024. package/skills/orchestrate/references/internal-routing.md +154 -0
  1025. package/skills/orchestrate/references/job-spec.md +251 -0
  1026. package/skills/orchestrate/references/model-routing.md +199 -0
  1027. package/skills/orchestrate/references/runtime-matrix.md +199 -0
  1028. package/skills/payment-integration/README.md +217 -0
  1029. package/skills/payment-integration/SKILL.md +81 -0
  1030. package/skills/payment-integration/references/multi-provider-order-management-patterns.md +821 -0
  1031. package/skills/payment-integration/references/polar/benefits.md +396 -0
  1032. package/skills/payment-integration/references/polar/best-practices.md +902 -0
  1033. package/skills/payment-integration/references/polar/checkouts.md +266 -0
  1034. package/skills/payment-integration/references/polar/overview.md +184 -0
  1035. package/skills/payment-integration/references/polar/products.md +244 -0
  1036. package/skills/payment-integration/references/polar/sdk.md +436 -0
  1037. package/skills/payment-integration/references/polar/subscriptions.md +340 -0
  1038. package/skills/payment-integration/references/polar/webhooks.md +405 -0
  1039. package/skills/payment-integration/references/sepay/api.md +140 -0
  1040. package/skills/payment-integration/references/sepay/best-practices.md +939 -0
  1041. package/skills/payment-integration/references/sepay/overview.md +138 -0
  1042. package/skills/payment-integration/references/sepay/qr-codes.md +228 -0
  1043. package/skills/payment-integration/references/sepay/sdk.md +213 -0
  1044. package/skills/payment-integration/references/sepay/webhooks.md +208 -0
  1045. package/skills/payment-integration/references/stripe/stripe-best-practices.md +32 -0
  1046. package/skills/payment-integration/references/stripe/stripe-cli.md +148 -0
  1047. package/skills/payment-integration/references/stripe/stripe-js.md +116 -0
  1048. package/skills/payment-integration/references/stripe/stripe-sdks.md +84 -0
  1049. package/skills/payment-integration/references/stripe/stripe-upgrade.md +175 -0
  1050. package/skills/payment-integration/scripts/.env.example +20 -0
  1051. package/skills/payment-integration/scripts/checkout-helper.js +244 -0
  1052. package/skills/payment-integration/scripts/package.json +17 -0
  1053. package/skills/payment-integration/scripts/polar-webhook-verify.js +202 -0
  1054. package/skills/payment-integration/scripts/sepay-webhook-verify.js +193 -0
  1055. package/skills/payment-integration/scripts/test-scripts.js +237 -0
  1056. package/skills/plan/SKILL.md +676 -0
  1057. package/skills/plan/references/archive-workflow.md +81 -0
  1058. package/skills/plan/references/codebase-understanding.md +48 -0
  1059. package/skills/plan/references/output-standards.md +225 -0
  1060. package/skills/plan/references/plan-organization.md +267 -0
  1061. package/skills/plan/references/red-team-personas.md +101 -0
  1062. package/skills/plan/references/red-team-workflow.md +97 -0
  1063. package/skills/plan/references/research-phase.md +49 -0
  1064. package/skills/plan/references/scope-challenge.md +104 -0
  1065. package/skills/plan/references/solution-design.md +83 -0
  1066. package/skills/plan/references/task-management.md +52 -0
  1067. package/skills/plan/references/validate-question-framework.md +80 -0
  1068. package/skills/plan/references/validate-workflow.md +107 -0
  1069. package/skills/plan/references/verification-roles.md +150 -0
  1070. package/skills/plan/references/workflow-modes.md +424 -0
  1071. package/skills/plans-kanban/SKILL.md +110 -0
  1072. package/skills/plans-kanban/package.json +9 -0
  1073. package/skills/plans-kanban/scripts/lib/plan-metadata-extractor.cjs +494 -0
  1074. package/skills/plans-kanban/scripts/lib/plan-parser.cjs +175 -0
  1075. package/skills/plans-kanban/scripts/lib/plan-scanner.cjs +272 -0
  1076. package/skills/plans-kanban/scripts/lib/plan-table-parser.cjs +231 -0
  1077. package/skills/plans-kanban/scripts/open-dashboard.cjs +220 -0
  1078. package/skills/predict/SKILL.md +150 -0
  1079. package/skills/preview/SKILL.md +173 -0
  1080. package/skills/preview/references/generation-modes.md +210 -0
  1081. package/skills/preview/references/html-antv-infographic.md +140 -0
  1082. package/skills/preview/references/html-css-patterns.md +1717 -0
  1083. package/skills/preview/references/html-design-guidelines.md +393 -0
  1084. package/skills/preview/references/html-diagram-design.md +156 -0
  1085. package/skills/preview/references/html-libraries.md +604 -0
  1086. package/skills/preview/references/html-responsive-nav.md +212 -0
  1087. package/skills/preview/references/html-slide-patterns.md +1401 -0
  1088. package/skills/preview/references/vendor/diagram-design-scripts/PROVENANCE.md +27 -0
  1089. package/skills/preview/references/vendor/diagram-design-scripts/UPSTREAM-LICENSE +21 -0
  1090. package/skills/preview/references/vendor/diagram-design-scripts/run-validators.sh +25 -0
  1091. package/skills/preview/references/vendor/diagram-design-scripts/self_check.py +389 -0
  1092. package/skills/preview/references/vendor/diagram-design-scripts/verify-geometry.py +166 -0
  1093. package/skills/preview/references/vendor/diagram-design-scripts/verify-motion.py +525 -0
  1094. package/skills/preview/references/view-mode.md +42 -0
  1095. package/skills/preview/references/visual-explanation-routing.md +39 -0
  1096. package/skills/preview/templates/architecture.html +650 -0
  1097. package/skills/preview/templates/data-table.html +590 -0
  1098. package/skills/preview/templates/mermaid-flowchart.html +768 -0
  1099. package/skills/preview/templates/slide-deck.html +968 -0
  1100. package/skills/problem-solving/SKILL.md +126 -0
  1101. package/skills/problem-solving/references/attribution.md +69 -0
  1102. package/skills/problem-solving/references/collision-zone-thinking.md +79 -0
  1103. package/skills/problem-solving/references/inversion-exercise.md +91 -0
  1104. package/skills/problem-solving/references/meta-pattern-recognition.md +87 -0
  1105. package/skills/problem-solving/references/scale-game.md +95 -0
  1106. package/skills/problem-solving/references/simplification-cascades.md +80 -0
  1107. package/skills/problem-solving/references/when-stuck.md +72 -0
  1108. package/skills/project-management/SKILL.md +137 -0
  1109. package/skills/project-management/references/documentation-triggers.md +33 -0
  1110. package/skills/project-management/references/hydration-workflow.md +45 -0
  1111. package/skills/project-management/references/progress-tracking.md +110 -0
  1112. package/skills/project-management/references/reporting-patterns.md +94 -0
  1113. package/skills/project-management/references/task-operations.md +35 -0
  1114. package/skills/project-organization/SKILL.md +232 -0
  1115. package/skills/project-organization/references/directory-patterns.md +175 -0
  1116. package/skills/project-organization/references/markdown-body-templates.md +314 -0
  1117. package/skills/project-organization/references/naming-conventions.md +140 -0
  1118. package/skills/react-best-practices/AGENTS.md +2249 -0
  1119. package/skills/react-best-practices/README.md +123 -0
  1120. package/skills/react-best-practices/SKILL.md +129 -0
  1121. package/skills/react-best-practices/metadata.json +17 -0
  1122. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  1123. package/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  1124. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  1125. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  1126. package/skills/react-best-practices/rules/async-dependencies.md +36 -0
  1127. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  1128. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  1129. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  1130. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  1131. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  1132. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  1133. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  1134. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  1135. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  1136. package/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  1137. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  1138. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  1139. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  1140. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  1141. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  1142. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  1143. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  1144. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  1145. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  1146. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  1147. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  1148. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  1149. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  1150. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  1151. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  1152. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  1153. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  1154. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  1155. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  1156. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  1157. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  1158. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  1159. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  1160. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  1161. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  1162. package/skills/react-best-practices/rules/sections.md +46 -0
  1163. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  1164. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  1165. package/skills/react-best-practices/rules/server-cache-react.md +26 -0
  1166. package/skills/react-best-practices/rules/server-parallel-fetching.md +79 -0
  1167. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  1168. package/skills/react-best-practices/rules/template.md +28 -0
  1169. package/skills/remotion/SKILL.md +58 -0
  1170. package/skills/remotion/rules/3d.md +86 -0
  1171. package/skills/remotion/rules/animations.md +29 -0
  1172. package/skills/remotion/rules/assets/charts-bar-chart.tsx +173 -0
  1173. package/skills/remotion/rules/assets/text-animations-typewriter.tsx +100 -0
  1174. package/skills/remotion/rules/assets/text-animations-word-highlight.tsx +108 -0
  1175. package/skills/remotion/rules/assets.md +78 -0
  1176. package/skills/remotion/rules/audio.md +172 -0
  1177. package/skills/remotion/rules/calculate-metadata.md +104 -0
  1178. package/skills/remotion/rules/can-decode.md +75 -0
  1179. package/skills/remotion/rules/charts.md +58 -0
  1180. package/skills/remotion/rules/compositions.md +146 -0
  1181. package/skills/remotion/rules/display-captions.md +126 -0
  1182. package/skills/remotion/rules/effects.md +22 -0
  1183. package/skills/remotion/rules/extract-frames.md +229 -0
  1184. package/skills/remotion/rules/fonts.md +152 -0
  1185. package/skills/remotion/rules/get-audio-duration.md +58 -0
  1186. package/skills/remotion/rules/get-video-dimensions.md +68 -0
  1187. package/skills/remotion/rules/get-video-duration.md +58 -0
  1188. package/skills/remotion/rules/gifs.md +138 -0
  1189. package/skills/remotion/rules/images.md +130 -0
  1190. package/skills/remotion/rules/import-srt-captions.md +67 -0
  1191. package/skills/remotion/rules/lottie.md +68 -0
  1192. package/skills/remotion/rules/measuring-dom-nodes.md +35 -0
  1193. package/skills/remotion/rules/measuring-text.md +143 -0
  1194. package/skills/remotion/rules/sequencing.md +106 -0
  1195. package/skills/remotion/rules/tailwind.md +11 -0
  1196. package/skills/remotion/rules/text-animations.md +20 -0
  1197. package/skills/remotion/rules/timing.md +179 -0
  1198. package/skills/remotion/rules/transcribe-captions.md +19 -0
  1199. package/skills/remotion/rules/transitions.md +122 -0
  1200. package/skills/remotion/rules/trimming.md +53 -0
  1201. package/skills/remotion/rules/videos.md +171 -0
  1202. package/skills/repomix/SKILL.md +257 -0
  1203. package/skills/repomix/references/configuration.md +211 -0
  1204. package/skills/repomix/references/usage-patterns.md +232 -0
  1205. package/skills/repomix/scripts/README.md +179 -0
  1206. package/skills/repomix/scripts/repomix_batch.py +455 -0
  1207. package/skills/repomix/scripts/repos.example.json +15 -0
  1208. package/skills/repomix/scripts/requirements.txt +15 -0
  1209. package/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  1210. package/skills/research/SKILL.md +201 -0
  1211. package/skills/research-prompt/LICENSE.txt +21 -0
  1212. package/skills/research-prompt/SKILL.md +57 -0
  1213. package/skills/retro/SKILL.md +150 -0
  1214. package/skills/retro/references/metrics-guide.md +133 -0
  1215. package/skills/retro/references/report-template.md +110 -0
  1216. package/skills/review/SKILL.md +41 -0
  1217. package/skills/review-pr/SKILL.md +567 -0
  1218. package/skills/review-pr/references/anti-ai-slop.md +235 -0
  1219. package/skills/review-pr/references/gh-api-helpers.sh +185 -0
  1220. package/skills/review-pr/references/pr-body-contract.md +53 -0
  1221. package/skills/review-pr/references/project-rules-example.md +101 -0
  1222. package/skills/review-pr/references/writing-language.md +58 -0
  1223. package/skills/scenario/SKILL.md +229 -0
  1224. package/skills/scout/SKILL.md +147 -0
  1225. package/skills/scout/references/external-scouting.md +85 -0
  1226. package/skills/scout/references/internal-scouting.md +148 -0
  1227. package/skills/security/SKILL.md +196 -0
  1228. package/skills/security/references/red-team-personas.md +188 -0
  1229. package/skills/security/references/stride-owasp-checklist.md +128 -0
  1230. package/skills/security-scan/SKILL.md +145 -0
  1231. package/skills/security-scan/references/secret-patterns.md +77 -0
  1232. package/skills/security-scan/references/vulnerability-patterns.md +105 -0
  1233. package/skills/sequential-thinking/.env.example +8 -0
  1234. package/skills/sequential-thinking/README.md +183 -0
  1235. package/skills/sequential-thinking/SKILL.md +101 -0
  1236. package/skills/sequential-thinking/package.json +31 -0
  1237. package/skills/sequential-thinking/references/advanced-strategies.md +79 -0
  1238. package/skills/sequential-thinking/references/advanced-techniques.md +76 -0
  1239. package/skills/sequential-thinking/references/core-patterns.md +95 -0
  1240. package/skills/sequential-thinking/references/examples-api.md +88 -0
  1241. package/skills/sequential-thinking/references/examples-architecture.md +94 -0
  1242. package/skills/sequential-thinking/references/examples-debug.md +90 -0
  1243. package/skills/sequential-thinking/scripts/format-thought.js +159 -0
  1244. package/skills/sequential-thinking/scripts/process-thought.js +236 -0
  1245. package/skills/sequential-thinking/tests/format-thought.test.js +133 -0
  1246. package/skills/sequential-thinking/tests/process-thought.test.js +215 -0
  1247. package/skills/shader/SKILL.md +119 -0
  1248. package/skills/shader/references/glsl-cellular-voronoi-worley-noise-patterns.md +142 -0
  1249. package/skills/shader/references/glsl-colors-rgb-hsb-gradients-mixing-color-spaces.md +143 -0
  1250. package/skills/shader/references/glsl-fbm-fractional-brownian-motion-turbulence-octaves.md +146 -0
  1251. package/skills/shader/references/glsl-fundamentals-data-types-vectors-precision-coordinates.md +104 -0
  1252. package/skills/shader/references/glsl-noise-random-perlin-simplex-cellular-voronoi.md +115 -0
  1253. package/skills/shader/references/glsl-pattern-symmetry-truchet-domain-warping.md +134 -0
  1254. package/skills/shader/references/glsl-patterns-tiling-fract-matrices-transformations.md +133 -0
  1255. package/skills/shader/references/glsl-procedural-textures-clouds-marble-wood-terrain.md +144 -0
  1256. package/skills/shader/references/glsl-shader-builtin-functions-complete-api-reference.md +112 -0
  1257. package/skills/shader/references/glsl-shapes-polygon-star-polar-sdf-combinations.md +124 -0
  1258. package/skills/shader/references/glsl-shapes-sdf-circles-rectangles-polar-distance-fields.md +106 -0
  1259. package/skills/shader/references/glsl-shaping-functions-step-smoothstep-curves-interpolation.md +141 -0
  1260. package/skills/ship/SKILL.md +244 -0
  1261. package/skills/ship/references/auto-detect.md +103 -0
  1262. package/skills/ship/references/dual-stage-workflow.md +86 -0
  1263. package/skills/ship/references/pr-template.md +87 -0
  1264. package/skills/ship/references/release-and-social-workflow.md +117 -0
  1265. package/skills/ship/references/review-and-merge-workflow.md +31 -0
  1266. package/skills/ship/references/ship-workflow.md +294 -0
  1267. package/skills/ship/scripts/compose-build-in-public.cjs +257 -0
  1268. package/skills/ship/scripts/compose-build-in-public.test.cjs +125 -0
  1269. package/skills/shopify/README.md +66 -0
  1270. package/skills/shopify/SKILL.md +327 -0
  1271. package/skills/shopify/references/app-development.md +470 -0
  1272. package/skills/shopify/references/extensions.md +493 -0
  1273. package/skills/shopify/references/themes.md +498 -0
  1274. package/skills/shopify/scripts/requirements.txt +19 -0
  1275. package/skills/shopify/scripts/shopify_init.py +423 -0
  1276. package/skills/shopify/scripts/tests/test_shopify_init.py +385 -0
  1277. package/skills/show-off/SKILL.md +244 -0
  1278. package/skills/show-off/scripts/capture-sections.js +310 -0
  1279. package/skills/show-off/scripts/package.json +16 -0
  1280. package/skills/show-off/scripts/preferences.js +228 -0
  1281. package/skills/show-off/scripts/preferences.test.js +94 -0
  1282. package/skills/skill-creator/LICENSE-MIT.txt +21 -0
  1283. package/skills/skill-creator/LICENSE.txt +202 -0
  1284. package/skills/skill-creator/SKILL.md +156 -0
  1285. package/skills/skill-creator/references/benchmark-optimization-guide.md +86 -0
  1286. package/skills/skill-creator/references/cross-marketplace-distribution.md +262 -0
  1287. package/skills/skill-creator/references/distribution-guide.md +79 -0
  1288. package/skills/skill-creator/references/mcp-skills-integration.md +71 -0
  1289. package/skills/skill-creator/references/metadata-quality-criteria.md +94 -0
  1290. package/skills/skill-creator/references/plugin-marketplace-hosting.md +104 -0
  1291. package/skills/skill-creator/references/plugin-marketplace-overview.md +90 -0
  1292. package/skills/skill-creator/references/plugin-marketplace-schema.md +93 -0
  1293. package/skills/skill-creator/references/plugin-marketplace-sources.md +103 -0
  1294. package/skills/skill-creator/references/plugin-marketplace-troubleshooting.md +76 -0
  1295. package/skills/skill-creator/references/script-dependency-strategy.md +141 -0
  1296. package/skills/skill-creator/references/script-quality-criteria.md +151 -0
  1297. package/skills/skill-creator/references/skill-anatomy-and-requirements.md +77 -0
  1298. package/skills/skill-creator/references/skill-creation-workflow.md +160 -0
  1299. package/skills/skill-creator/references/skill-design-patterns.md +75 -0
  1300. package/skills/skill-creator/references/skill-ecosystem-portability-and-safety.md +60 -0
  1301. package/skills/skill-creator/references/skillmark-benchmark-criteria.md +102 -0
  1302. package/skills/skill-creator/references/structure-organization-criteria.md +114 -0
  1303. package/skills/skill-creator/references/testing-and-iteration.md +78 -0
  1304. package/skills/skill-creator/references/token-efficiency-criteria.md +74 -0
  1305. package/skills/skill-creator/references/troubleshooting-guide.md +81 -0
  1306. package/skills/skill-creator/references/validation-checklist.md +83 -0
  1307. package/skills/skill-creator/references/writing-effective-instructions.md +88 -0
  1308. package/skills/skill-creator/references/yaml-frontmatter-reference.md +92 -0
  1309. package/skills/skill-creator/scripts/encoding_utils.py +36 -0
  1310. package/skills/skill-creator/scripts/init_skill.py +371 -0
  1311. package/skills/skill-creator/scripts/package_skill.py +161 -0
  1312. package/skills/skill-creator/scripts/quick_validate.py +110 -0
  1313. package/skills/sowat/SKILL.md +41 -0
  1314. package/skills/stitch/SKILL.md +193 -0
  1315. package/skills/stitch/data/mcp-config-snippet.json +11 -0
  1316. package/skills/stitch/references/design-to-code-pipeline.md +128 -0
  1317. package/skills/stitch/references/quota-management.md +64 -0
  1318. package/skills/stitch/references/stitch-mcp-setup.md +95 -0
  1319. package/skills/stitch/references/stitch-sdk-api.md +136 -0
  1320. package/skills/stitch/scripts/package.json +17 -0
  1321. package/skills/stitch/scripts/stitch-export.ts +241 -0
  1322. package/skills/stitch/scripts/stitch-generate.ts +242 -0
  1323. package/skills/stitch/scripts/stitch-quota.ts +123 -0
  1324. package/skills/sumup/SKILL.md +48 -0
  1325. package/skills/tanstack/SKILL.md +148 -0
  1326. package/skills/tanstack/references/tanstack-ai.md +97 -0
  1327. package/skills/tanstack/references/tanstack-form.md +125 -0
  1328. package/skills/tanstack/references/tanstack-start.md +100 -0
  1329. package/skills/team/SKILL.md +226 -0
  1330. package/skills/team/references/agent-teams-controls-and-modes.md +53 -0
  1331. package/skills/team/references/agent-teams-examples-and-best-practices.md +145 -0
  1332. package/skills/team/references/agent-teams-official-docs.md +67 -0
  1333. package/skills/team/references/team-coordination-rules.md +92 -0
  1334. package/skills/tech-graph/LICENSE +21 -0
  1335. package/skills/tech-graph/README.md +524 -0
  1336. package/skills/tech-graph/SKILL.md +445 -0
  1337. package/skills/tech-graph/agents/openai.yaml +4 -0
  1338. package/skills/tech-graph/fixtures/agent-memory-types-style4.json +181 -0
  1339. package/skills/tech-graph/fixtures/api-flow-style7.json +40 -0
  1340. package/skills/tech-graph/fixtures/mem0-style1.json +297 -0
  1341. package/skills/tech-graph/fixtures/microservices-style3.json +64 -0
  1342. package/skills/tech-graph/fixtures/multi-agent-style5.json +45 -0
  1343. package/skills/tech-graph/fixtures/system-architecture-style6.json +48 -0
  1344. package/skills/tech-graph/fixtures/tool-call-style2.json +182 -0
  1345. package/skills/tech-graph/references/icons.md +406 -0
  1346. package/skills/tech-graph/references/style-1-flat-icon.md +108 -0
  1347. package/skills/tech-graph/references/style-2-dark-terminal.md +107 -0
  1348. package/skills/tech-graph/references/style-3-blueprint.md +113 -0
  1349. package/skills/tech-graph/references/style-4-notion-clean.md +95 -0
  1350. package/skills/tech-graph/references/style-5-glassmorphism.md +125 -0
  1351. package/skills/tech-graph/references/style-6-claude-official.md +209 -0
  1352. package/skills/tech-graph/references/style-7-openai.md +215 -0
  1353. package/skills/tech-graph/references/style-diagram-matrix.md +135 -0
  1354. package/skills/tech-graph/references/svg-layout-best-practices.md +100 -0
  1355. package/skills/tech-graph/scripts/README.md +244 -0
  1356. package/skills/tech-graph/scripts/generate-diagram.sh +157 -0
  1357. package/skills/tech-graph/scripts/generate-from-template.py +1556 -0
  1358. package/skills/tech-graph/scripts/test-all-styles.sh +135 -0
  1359. package/skills/tech-graph/scripts/validate-svg.sh +292 -0
  1360. package/skills/tech-graph/templates/agent-architecture.svg +28 -0
  1361. package/skills/tech-graph/templates/architecture.svg +23 -0
  1362. package/skills/tech-graph/templates/comparison-matrix.svg +14 -0
  1363. package/skills/tech-graph/templates/data-flow.svg +28 -0
  1364. package/skills/tech-graph/templates/er-diagram.svg +21 -0
  1365. package/skills/tech-graph/templates/flowchart.svg +21 -0
  1366. package/skills/tech-graph/templates/sequence.svg +20 -0
  1367. package/skills/tech-graph/templates/state-machine.svg +20 -0
  1368. package/skills/tech-graph/templates/timeline.svg +19 -0
  1369. package/skills/tech-graph/templates/use-case.svg +21 -0
  1370. package/skills/test/SKILL.md +200 -0
  1371. package/skills/test/references/audit-suite-workflow.md +70 -0
  1372. package/skills/test/references/create-suite-workflow.md +60 -0
  1373. package/skills/test/references/optimize-suite-workflow.md +61 -0
  1374. package/skills/test/references/report-format.md +58 -0
  1375. package/skills/test/references/test-execution-workflow.md +103 -0
  1376. package/skills/test/references/ui-testing-workflow.md +64 -0
  1377. package/skills/threejs/SKILL.md +148 -0
  1378. package/skills/threejs/data/api-reference.csv +61 -0
  1379. package/skills/threejs/data/categories.csv +14 -0
  1380. package/skills/threejs/data/examples-all.csv +557 -0
  1381. package/skills/threejs/data/use-cases.csv +21 -0
  1382. package/skills/threejs/references/00-fundamentals.md +487 -0
  1383. package/skills/threejs/references/01-getting-started.md +177 -0
  1384. package/skills/threejs/references/02-loaders.md +169 -0
  1385. package/skills/threejs/references/03-textures.md +170 -0
  1386. package/skills/threejs/references/04-cameras.md +195 -0
  1387. package/skills/threejs/references/05-lights.md +183 -0
  1388. package/skills/threejs/references/06-animations.md +214 -0
  1389. package/skills/threejs/references/07-math.md +260 -0
  1390. package/skills/threejs/references/08-interaction.md +267 -0
  1391. package/skills/threejs/references/09-postprocessing.md +240 -0
  1392. package/skills/threejs/references/10-controls.md +259 -0
  1393. package/skills/threejs/references/11-materials-advanced.md +270 -0
  1394. package/skills/threejs/references/11-materials.md +519 -0
  1395. package/skills/threejs/references/12-performance.md +269 -0
  1396. package/skills/threejs/references/13-node-materials.md +298 -0
  1397. package/skills/threejs/references/14-physics-vr.md +304 -0
  1398. package/skills/threejs/references/15-specialized-loaders.md +333 -0
  1399. package/skills/threejs/references/16-webgpu.md +302 -0
  1400. package/skills/threejs/references/17-shader.md +641 -0
  1401. package/skills/threejs/references/18-geometry.md +547 -0
  1402. package/skills/threejs/scripts/core.py +236 -0
  1403. package/skills/threejs/scripts/extract_examples.py +688 -0
  1404. package/skills/threejs/scripts/generate_csv_from_json.py +135 -0
  1405. package/skills/threejs/scripts/search.py +77 -0
  1406. package/skills/ui-styling/LICENSE.txt +202 -0
  1407. package/skills/ui-styling/SKILL.md +328 -0
  1408. package/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  1409. package/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1410. package/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1411. package/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  1412. package/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1413. package/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  1414. package/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1415. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1416. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  1417. package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1418. package/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1419. package/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1420. package/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  1421. package/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1422. package/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  1423. package/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  1424. package/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  1425. package/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1426. package/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1427. package/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  1428. package/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1429. package/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  1430. package/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  1431. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1432. package/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  1433. package/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1434. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1435. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1436. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1437. package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1438. package/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1439. package/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1440. package/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1441. package/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  1442. package/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1443. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1444. package/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1445. package/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  1446. package/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  1447. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1448. package/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  1449. package/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1450. package/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  1451. package/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  1452. package/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  1453. package/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  1454. package/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1455. package/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1456. package/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1457. package/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1458. package/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  1459. package/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1460. package/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1461. package/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  1462. package/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1463. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1464. package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1465. package/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1466. package/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  1467. package/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1468. package/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1469. package/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1470. package/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1471. package/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1472. package/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1473. package/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1474. package/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1475. package/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1476. package/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1477. package/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1478. package/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1479. package/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1480. package/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  1481. package/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1482. package/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1483. package/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1484. package/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1485. package/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  1486. package/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1487. package/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1488. package/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1489. package/skills/ui-styling/references/canvas-design-system.md +320 -0
  1490. package/skills/ui-styling/references/shadcn-accessibility.md +471 -0
  1491. package/skills/ui-styling/references/shadcn-components.md +424 -0
  1492. package/skills/ui-styling/references/shadcn-theming.md +373 -0
  1493. package/skills/ui-styling/references/tailwind-customization.md +483 -0
  1494. package/skills/ui-styling/references/tailwind-responsive.md +382 -0
  1495. package/skills/ui-styling/references/tailwind-utilities.md +455 -0
  1496. package/skills/ui-styling/scripts/requirements.txt +17 -0
  1497. package/skills/ui-styling/scripts/shadcn_add.py +292 -0
  1498. package/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
  1499. package/skills/ui-styling/scripts/tests/coverage-ui.json +1 -0
  1500. package/skills/ui-styling/scripts/tests/requirements.txt +3 -0
  1501. package/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  1502. package/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  1503. package/skills/ui-ux-pro-max/SKILL.md +666 -0
  1504. package/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
  1505. package/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
  1506. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  1507. package/skills/ui-ux-pro-max/data/colors.csv +162 -0
  1508. package/skills/ui-ux-pro-max/data/design.csv +1776 -0
  1509. package/skills/ui-ux-pro-max/data/draft.csv +1779 -0
  1510. package/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
  1511. package/skills/ui-ux-pro-max/data/icons.csv +106 -0
  1512. package/skills/ui-ux-pro-max/data/landing.csv +35 -0
  1513. package/skills/ui-ux-pro-max/data/products.csv +162 -0
  1514. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  1515. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  1516. package/skills/ui-ux-pro-max/data/styles.csv +85 -0
  1517. package/skills/ui-ux-pro-max/data/typography.csv +74 -0
  1518. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
  1519. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  1520. package/skills/ui-ux-pro-max/scripts/core.py +247 -0
  1521. package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
  1522. package/skills/ui-ux-pro-max/scripts/search.py +114 -0
  1523. package/skills/use-mcp/SKILL.md +82 -0
  1524. package/skills/use-mcp/assets/tools.json +3146 -0
  1525. package/skills/use-mcp/references/configuration.md +115 -0
  1526. package/skills/use-mcp/references/gemini-cli-integration.md +24 -0
  1527. package/skills/use-mcp/references/mcp-protocol.md +116 -0
  1528. package/skills/use-mcp/scripts/.env.example +10 -0
  1529. package/skills/use-mcp/scripts/cli.ts +195 -0
  1530. package/skills/use-mcp/scripts/mcp-client.ts +230 -0
  1531. package/skills/use-mcp/scripts/package.json +20 -0
  1532. package/skills/use-mcp/scripts/smoke-test.sh +82 -0
  1533. package/skills/use-mcp/scripts/tsconfig.json +15 -0
  1534. package/skills/vibe/SKILL.md +287 -0
  1535. package/skills/watzup/SKILL.md +80 -0
  1536. package/skills/watzup/scripts/lib/checkboxes.cjs +69 -0
  1537. package/skills/watzup/scripts/lib/priority.cjs +149 -0
  1538. package/skills/watzup/scripts/lib/roadmap.cjs +102 -0
  1539. package/skills/watzup/scripts/watzup-scan.cjs +534 -0
  1540. package/skills/watzup/scripts/watzup-scan.test.cjs +392 -0
  1541. package/skills/web-design-guidelines/SKILL.md +43 -0
  1542. package/skills/web-frameworks/SKILL.md +332 -0
  1543. package/skills/web-frameworks/references/nextjs-app-router.md +465 -0
  1544. package/skills/web-frameworks/references/nextjs-data-fetching.md +459 -0
  1545. package/skills/web-frameworks/references/nextjs-optimization.md +511 -0
  1546. package/skills/web-frameworks/references/nextjs-server-components.md +495 -0
  1547. package/skills/web-frameworks/references/remix-icon-integration.md +603 -0
  1548. package/skills/web-frameworks/references/turborepo-caching.md +551 -0
  1549. package/skills/web-frameworks/references/turborepo-pipelines.md +517 -0
  1550. package/skills/web-frameworks/references/turborepo-setup.md +542 -0
  1551. package/skills/web-frameworks/scripts/__init__.py +0 -0
  1552. package/skills/web-frameworks/scripts/nextjs_init.py +547 -0
  1553. package/skills/web-frameworks/scripts/requirements.txt +16 -0
  1554. package/skills/web-frameworks/scripts/tests/coverage-web.json +1 -0
  1555. package/skills/web-frameworks/scripts/tests/requirements.txt +3 -0
  1556. package/skills/web-frameworks/scripts/tests/test_nextjs_init.py +319 -0
  1557. package/skills/web-frameworks/scripts/tests/test_turborepo_migrate.py +374 -0
  1558. package/skills/web-frameworks/scripts/turborepo_migrate.py +394 -0
  1559. package/skills/web-testing/SKILL.md +103 -0
  1560. package/skills/web-testing/references/accessibility-testing.md +84 -0
  1561. package/skills/web-testing/references/api-testing.md +78 -0
  1562. package/skills/web-testing/references/ci-cd-testing-workflows.md +121 -0
  1563. package/skills/web-testing/references/component-testing.md +94 -0
  1564. package/skills/web-testing/references/contract-testing.md +146 -0
  1565. package/skills/web-testing/references/cross-browser-checklist.md +72 -0
  1566. package/skills/web-testing/references/database-testing.md +139 -0
  1567. package/skills/web-testing/references/e2e-testing-playwright.md +119 -0
  1568. package/skills/web-testing/references/functional-testing-checklist.md +88 -0
  1569. package/skills/web-testing/references/interactive-testing-patterns.md +89 -0
  1570. package/skills/web-testing/references/load-testing-k6.md +93 -0
  1571. package/skills/web-testing/references/mobile-gesture-testing.md +85 -0
  1572. package/skills/web-testing/references/performance-core-web-vitals.md +124 -0
  1573. package/skills/web-testing/references/playwright-component-testing.md +115 -0
  1574. package/skills/web-testing/references/pre-release-checklist.md +75 -0
  1575. package/skills/web-testing/references/security-checklists.md +81 -0
  1576. package/skills/web-testing/references/security-testing-overview.md +92 -0
  1577. package/skills/web-testing/references/shadow-dom-testing.md +70 -0
  1578. package/skills/web-testing/references/test-data-management.md +131 -0
  1579. package/skills/web-testing/references/test-flakiness-mitigation.md +86 -0
  1580. package/skills/web-testing/references/testing-pyramid-strategy.md +76 -0
  1581. package/skills/web-testing/references/unit-integration-testing.md +138 -0
  1582. package/skills/web-testing/references/visual-regression.md +92 -0
  1583. package/skills/web-testing/references/vulnerability-payloads.md +93 -0
  1584. package/skills/web-testing/scripts/analyze-test-results.js +280 -0
  1585. package/skills/web-testing/scripts/init-playwright.js +233 -0
  1586. package/skills/web-testing/skill.yaml +17 -0
  1587. package/skills/worktree/SKILL.md +174 -0
  1588. package/skills/worktree/scripts/mini-yaml-parser.cjs +232 -0
  1589. package/skills/worktree/scripts/resolve-worktree-root.cjs +266 -0
  1590. package/skills/worktree/scripts/resolve-worktree-root.test.cjs +257 -0
  1591. package/skills/worktree/scripts/worktree.cjs +1337 -0
  1592. package/skills/worktree/scripts/worktree.test.cjs +1127 -0
  1593. package/skills/xia/SKILL.md +197 -0
  1594. package/skills/xia/intro.html +487 -0
  1595. package/skills/xia/references/challenge-framework.md +40 -0
@@ -0,0 +1,1127 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Test suite for worktree.cjs
4
+ * Run: node .claude/skills/ak-worktree/scripts/worktree.test.cjs
5
+ */
6
+
7
+ const { execSync } = require('child_process');
8
+ const path = require('path');
9
+ const fs = require('fs');
10
+ const os = require('os');
11
+
12
+ const SCRIPT_PATH = path.join(__dirname, 'worktree.cjs');
13
+ const STANDALONE_DIR = path.dirname(path.dirname(__dirname)); // worktree dir
14
+ const MONOREPO_DIR = process.env.MONOREPO_DIR || '/path/to/claudekit';
15
+ const CURRENT_GIT_ROOT = execSync('git rev-parse --show-toplevel', {
16
+ encoding: 'utf-8',
17
+ cwd: STANDALONE_DIR,
18
+ stdio: ['pipe', 'pipe', 'pipe']
19
+ }).trim();
20
+
21
+ let passed = 0;
22
+ let failed = 0;
23
+ const results = [];
24
+
25
+ // Test helper
26
+ function run(args, options = {}) {
27
+ const cwd = options.cwd || STANDALONE_DIR;
28
+ try {
29
+ const output = execSync(`node "${SCRIPT_PATH}" ${args}`, {
30
+ encoding: 'utf-8',
31
+ cwd,
32
+ stdio: ['pipe', 'pipe', 'pipe']
33
+ });
34
+ return { success: true, output: output.trim(), exitCode: 0 };
35
+ } catch (error) {
36
+ return {
37
+ success: false,
38
+ output: error.stdout?.toString().trim() || '',
39
+ stderr: error.stderr?.toString().trim() || '',
40
+ exitCode: error.status || 1
41
+ };
42
+ }
43
+ }
44
+
45
+ function test(name, fn) {
46
+ try {
47
+ fn();
48
+ passed++;
49
+ results.push({ name, status: 'PASS' });
50
+ console.log(` ✓ ${name}`);
51
+ } catch (error) {
52
+ failed++;
53
+ results.push({ name, status: 'FAIL', error: error.message });
54
+ console.log(` ✗ ${name}`);
55
+ console.log(` Error: ${error.message}`);
56
+ }
57
+ }
58
+
59
+ function assert(condition, message) {
60
+ if (!condition) throw new Error(message || 'Assertion failed');
61
+ }
62
+
63
+ function assertJSON(str) {
64
+ try {
65
+ return JSON.parse(str);
66
+ } catch {
67
+ throw new Error(`Invalid JSON: ${str.slice(0, 100)}...`);
68
+ }
69
+ }
70
+
71
+ // Isolated fixtures for worktree.root config precedence tests: a throwaway
72
+ // git repo (never the real agentkit repo) plus a throwaway HOME, so these
73
+ // tests can freely write .agentkit/config.yaml without touching real state.
74
+ function mkTempGitRepo() {
75
+ const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'ak-wt-test-repo-'));
76
+ execSync('git init -q', { cwd: dir, stdio: ['pipe', 'pipe', 'pipe'] });
77
+ return dir;
78
+ }
79
+
80
+ function mkTempHome() {
81
+ return fs.mkdtempSync(path.join(os.tmpdir(), 'ak-wt-test-home-'));
82
+ }
83
+
84
+ function writeWorktreeRootConfig(dir, root) {
85
+ fs.mkdirSync(path.join(dir, '.agentkit'), { recursive: true });
86
+ fs.writeFileSync(path.join(dir, '.agentkit', 'config.yaml'), `worktree:\n root: ${root}\n`);
87
+ }
88
+
89
+ function runInRepo(repoDir, homeDir, args) {
90
+ try {
91
+ const output = execSync(`node "${SCRIPT_PATH}" ${args}`, {
92
+ encoding: 'utf-8',
93
+ cwd: repoDir,
94
+ env: { ...process.env, HOME: homeDir, USERPROFILE: homeDir },
95
+ stdio: ['pipe', 'pipe', 'pipe']
96
+ });
97
+ return { success: true, output: output.trim() };
98
+ } catch (error) {
99
+ return {
100
+ success: false,
101
+ output: error.stdout?.toString().trim() || '',
102
+ stderr: error.stderr?.toString().trim() || ''
103
+ };
104
+ }
105
+ }
106
+
107
+ // ============================================
108
+ // INFO COMMAND TESTS
109
+ // ============================================
110
+ console.log('\n📋 INFO Command Tests');
111
+
112
+ test('info returns valid JSON', () => {
113
+ const result = run('info --json');
114
+ assert(result.success, 'Command should succeed');
115
+ const json = assertJSON(result.output);
116
+ assert(json.info === true, 'Should have info: true');
117
+ });
118
+
119
+ test('info detects repo type', () => {
120
+ const result = run('info --json');
121
+ const json = assertJSON(result.output);
122
+ assert(['standalone', 'monorepo'].includes(json.repoType), 'Should detect repo type');
123
+ });
124
+
125
+ test('info detects base branch', () => {
126
+ const result = run('info --json');
127
+ const json = assertJSON(result.output);
128
+ assert(json.baseBranch, 'Should detect base branch');
129
+ assert(['dev', 'develop', 'main', 'master'].includes(json.baseBranch), 'Should be valid branch');
130
+ });
131
+
132
+ test('info finds env files', () => {
133
+ const result = run('info --json');
134
+ const json = assertJSON(result.output);
135
+ assert(Array.isArray(json.envFiles), 'Should have envFiles array');
136
+ });
137
+
138
+ test('info detects dirty state', () => {
139
+ const result = run('info --json');
140
+ const json = assertJSON(result.output);
141
+ assert(typeof json.dirtyState === 'boolean', 'Should have dirtyState boolean');
142
+ });
143
+
144
+ test('info detects monorepo from monorepo root', () => {
145
+ if (!fs.existsSync(MONOREPO_DIR)) return; // Skip if not available
146
+ const result = run('info --json', { cwd: MONOREPO_DIR });
147
+ const json = assertJSON(result.output);
148
+ assert(json.repoType === 'monorepo', 'Should detect monorepo');
149
+ assert(json.projects.length > 0, 'Should have projects');
150
+ });
151
+
152
+ test('monorepo uses internal worktrees directory', () => {
153
+ if (!fs.existsSync(MONOREPO_DIR)) return; // Skip if not available
154
+ const result = run('info --json', { cwd: MONOREPO_DIR });
155
+ const json = assertJSON(result.output);
156
+ // Monorepo should use worktrees/ inside the repo, not sibling
157
+ assert(json.worktreeRoot === path.join(MONOREPO_DIR, 'worktrees'),
158
+ `Expected ${path.join(MONOREPO_DIR, 'worktrees')}, got ${json.worktreeRoot}`);
159
+ assert(json.worktreeRootSource === 'monorepo internal',
160
+ `Expected 'monorepo internal', got ${json.worktreeRootSource}`);
161
+ });
162
+
163
+ test('info returns text output without --json', () => {
164
+ const result = run('info');
165
+ assert(result.success, 'Command should succeed');
166
+ assert(result.output.includes('Repository Info'), 'Should have text output');
167
+ });
168
+
169
+ // ============================================
170
+ // LIST COMMAND TESTS
171
+ // ============================================
172
+ console.log('\n📂 LIST Command Tests');
173
+
174
+ test('list returns valid JSON', () => {
175
+ const result = run('list --json');
176
+ assert(result.success, 'Command should succeed');
177
+ const json = assertJSON(result.output);
178
+ assert(json.success === true, 'Should have success: true');
179
+ assert(Array.isArray(json.worktrees), 'Should have worktrees array');
180
+ });
181
+
182
+ test('list worktrees have required fields', () => {
183
+ const result = run('list --json');
184
+ const json = assertJSON(result.output);
185
+ if (json.worktrees.length > 0) {
186
+ const wt = json.worktrees[0];
187
+ assert(wt.path, 'Worktree should have path');
188
+ assert(wt.commit, 'Worktree should have commit');
189
+ assert(wt.branch, 'Worktree should have branch');
190
+ }
191
+ });
192
+
193
+ test('list returns text output without --json', () => {
194
+ const result = run('list');
195
+ assert(result.success, 'Command should succeed');
196
+ assert(result.output.includes('worktrees'), 'Should have text output');
197
+ });
198
+
199
+ // ============================================
200
+ // STATUS COMMAND TESTS
201
+ // ============================================
202
+ console.log('\n🩺 STATUS Command Tests');
203
+
204
+ test('status returns valid JSON', () => {
205
+ const result = run('status --json');
206
+ assert(result.success, 'Command should succeed');
207
+ const json = assertJSON(result.output);
208
+ assert(json.success === true, 'Should have success: true');
209
+ assert(json.currentWorktree, 'Should include currentWorktree');
210
+ assert(Array.isArray(json.worktrees), 'Should include worktrees array');
211
+ });
212
+
213
+ test('status reports current worktree health fields', () => {
214
+ const result = run('status --json');
215
+ const json = assertJSON(result.output);
216
+ const current = json.currentWorktree;
217
+ assert(current.path === CURRENT_GIT_ROOT, `Should normalize current path to ${CURRENT_GIT_ROOT}`);
218
+ assert(typeof current.isCurrentWorktree === 'boolean', 'Should flag current worktree');
219
+ assert(typeof current.isMainWorktree === 'boolean', 'Should flag main worktree');
220
+ assert(typeof current.branchExists === 'boolean', 'Should report branch existence');
221
+ assert(typeof current.dirtyState === 'boolean', 'Should report dirty state');
222
+ assert(typeof current.ahead === 'number', 'Should report ahead count');
223
+ assert(typeof current.behind === 'number', 'Should report behind count');
224
+ });
225
+
226
+ test('status includes normalized path entry for current worktree', () => {
227
+ const result = run('status --json');
228
+ const json = assertJSON(result.output);
229
+ assert(json.worktrees.some(w => w.path === CURRENT_GIT_ROOT), 'Should include normalized current worktree path');
230
+ });
231
+
232
+ test('status returns text output without --json', () => {
233
+ const result = run('status');
234
+ assert(result.success, 'Command should succeed');
235
+ assert(result.output.includes('Worktree Status'), 'Should have text output');
236
+ });
237
+
238
+ // ============================================
239
+ // CREATE COMMAND TESTS
240
+ // ============================================
241
+ console.log('\n🆕 CREATE Command Tests');
242
+
243
+ test('create requires feature name', () => {
244
+ const result = run('create --json');
245
+ assert(!result.success, 'Should fail without feature');
246
+ const json = assertJSON(result.output);
247
+ assert(json.error.code === 'MISSING_FEATURE', 'Should have MISSING_FEATURE error');
248
+ });
249
+
250
+ test('create dry-run does not create worktree', () => {
251
+ const result = run('create test-dry-run --prefix feat --dry-run --json');
252
+ assert(result.success, 'Dry-run should succeed');
253
+ const json = assertJSON(result.output);
254
+ assert(json.dryRun === true, 'Should have dryRun: true');
255
+ assert(json.wouldCreate, 'Should have wouldCreate object');
256
+ });
257
+
258
+ test('create dry-run shows correct branch name', () => {
259
+ const result = run('create my-feature --prefix fix --dry-run --json');
260
+ const json = assertJSON(result.output);
261
+ assert(json.wouldCreate.branch === 'fix/my-feature', 'Branch should be fix/my-feature');
262
+ });
263
+
264
+ test('create sanitizes feature name - spaces', () => {
265
+ const result = run('create "my cool feature" --dry-run --json');
266
+ const json = assertJSON(result.output);
267
+ assert(json.wouldCreate.branch.includes('my-cool-feature'), 'Should sanitize spaces');
268
+ });
269
+
270
+ test('create sanitizes feature name - uppercase', () => {
271
+ const result = run('create "MyFeature" --dry-run --json');
272
+ const json = assertJSON(result.output);
273
+ assert(json.wouldCreate.branch.includes('myfeature'), 'Should lowercase');
274
+ });
275
+
276
+ test('create sanitizes feature name - special chars', () => {
277
+ const result = run('create "feat@#$test" --dry-run --json');
278
+ const json = assertJSON(result.output);
279
+ assert(!json.wouldCreate.branch.includes('@'), 'Should remove special chars');
280
+ });
281
+
282
+ test('create respects --prefix flag', () => {
283
+ const prefixes = ['feat', 'fix', 'docs', 'refactor', 'test', 'chore', 'perf'];
284
+ for (const prefix of prefixes) {
285
+ const result = run(`create test-${prefix} --prefix ${prefix} --dry-run --json`);
286
+ const json = assertJSON(result.output);
287
+ assert(json.wouldCreate.branch.startsWith(`${prefix}/`), `Should use ${prefix} prefix`);
288
+ }
289
+ });
290
+
291
+ test('create shows base branch', () => {
292
+ const result = run('create test-base --dry-run --json');
293
+ const json = assertJSON(result.output);
294
+ assert(json.wouldCreate.baseBranch, 'Should show base branch');
295
+ });
296
+
297
+ test('create shows worktree path', () => {
298
+ const result = run('create test-path --dry-run --json');
299
+ const json = assertJSON(result.output);
300
+ assert(json.wouldCreate.worktreePath, 'Should show worktree path');
301
+ assert(json.wouldCreate.worktreePath.includes('worktrees'), 'Path should include worktrees dir');
302
+ });
303
+
304
+ test('create dry-run surfaces checkout-submodules flag', () => {
305
+ const result = run('create test-submodules --dry-run --json --checkout-submodules');
306
+ assert(result.success, 'Should succeed');
307
+ const json = assertJSON(result.output);
308
+ assert(json.wouldCreate.checkoutSubmodules === true, 'Should show checkoutSubmodules flag');
309
+ });
310
+
311
+ test('create dry-run shows explicit base branch source', () => {
312
+ const result = run('create test-explicit-base --dry-run --json --base dev');
313
+ assert(result.success, 'Should succeed with explicit base');
314
+ const json = assertJSON(result.output);
315
+ assert(json.wouldCreate.baseBranch === 'dev', 'Should use explicit base branch');
316
+ assert(json.wouldCreate.baseBranchSource === 'explicit', 'Should mark baseBranchSource as explicit');
317
+ });
318
+
319
+ test('create rejects invalid explicit base branch input', () => {
320
+ const result = run('create test-invalid-base --json --base "--oops"');
321
+ assert(!result.success, 'Should fail with invalid base branch');
322
+ const json = assertJSON(result.output);
323
+ assert(json.error.code === 'INVALID_BASE_BRANCH', 'Should report INVALID_BASE_BRANCH');
324
+ });
325
+
326
+ test('create rejects nonexistent explicit base branch', () => {
327
+ const result = run('create test-missing-base --json --base branch-that-should-not-exist-xyz');
328
+ assert(!result.success, 'Should fail with nonexistent base branch');
329
+ const json = assertJSON(result.output);
330
+ assert(json.error.code === 'BASE_BRANCH_NOT_FOUND', 'Should report BASE_BRANCH_NOT_FOUND');
331
+ });
332
+
333
+ test('create in monorepo requires project', () => {
334
+ if (!fs.existsSync(MONOREPO_DIR)) return;
335
+ const result = run('create --json', { cwd: MONOREPO_DIR });
336
+ assert(!result.success, 'Should fail without project in monorepo');
337
+ const json = assertJSON(result.output);
338
+ assert(json.error.code === 'MISSING_ARGS', 'Should have MISSING_ARGS error');
339
+ });
340
+
341
+ test('create in monorepo with project works', () => {
342
+ if (!fs.existsSync(MONOREPO_DIR)) return;
343
+ const result = run('create engineer test-mono --prefix feat --dry-run --json', { cwd: MONOREPO_DIR });
344
+ assert(result.success, 'Should succeed with project');
345
+ const json = assertJSON(result.output);
346
+ assert(json.wouldCreate.project === 'claudekit-engineer', 'Should detect project');
347
+ });
348
+
349
+ test('create detects invalid project', () => {
350
+ if (!fs.existsSync(MONOREPO_DIR)) return;
351
+ const result = run('create nonexistent test-invalid --json', { cwd: MONOREPO_DIR });
352
+ assert(!result.success, 'Should fail with invalid project');
353
+ const json = assertJSON(result.output);
354
+ assert(json.error.code === 'PROJECT_NOT_FOUND', 'Should have PROJECT_NOT_FOUND error');
355
+ });
356
+
357
+ // ============================================
358
+ // REMOVE COMMAND TESTS
359
+ // ============================================
360
+ console.log('\n🗑️ REMOVE Command Tests');
361
+
362
+ test('remove requires worktree name', () => {
363
+ const result = run('remove --json');
364
+ assert(!result.success, 'Should fail without name');
365
+ const json = assertJSON(result.output);
366
+ assert(json.error.code === 'MISSING_WORKTREE', 'Should have MISSING_WORKTREE error');
367
+ });
368
+
369
+ test('remove dry-run does not remove worktree', () => {
370
+ // First get a worktree name from list
371
+ const listResult = run('list --json');
372
+ const listJson = assertJSON(listResult.output);
373
+ const removable = listJson.worktrees.find(w => !w.isMainWorktree);
374
+
375
+ if (removable) {
376
+ const name = path.basename(removable.path);
377
+ const result = run(`remove "${name}" --dry-run --json`);
378
+ assert(result.success, 'Dry-run should succeed');
379
+ const json = assertJSON(result.output);
380
+ assert(json.dryRun === true, 'Should have dryRun: true');
381
+ assert(json.wouldRemove, 'Should have wouldRemove object');
382
+ }
383
+ });
384
+
385
+ test('remove handles not found', () => {
386
+ const result = run('remove nonexistent-worktree-xyz --json');
387
+ assert(!result.success, 'Should fail for nonexistent');
388
+ const json = assertJSON(result.output);
389
+ assert(json.error.code === 'WORKTREE_NOT_FOUND', 'Should have WORKTREE_NOT_FOUND error');
390
+ });
391
+
392
+ test('remove error includes available worktrees', () => {
393
+ const result = run('remove nonexistent-worktree-xyz --json');
394
+ const json = assertJSON(result.output);
395
+ assert(Array.isArray(json.error.availableWorktrees), 'Should list available worktrees');
396
+ });
397
+
398
+ // ============================================
399
+ // PRUNE COMMAND TESTS
400
+ // ============================================
401
+ console.log('\n🧹 PRUNE Command Tests');
402
+
403
+ test('prune dry-run returns valid JSON', () => {
404
+ const result = run('prune --dry-run --json');
405
+ assert(result.success, 'Dry-run should succeed');
406
+ const json = assertJSON(result.output);
407
+ assert(json.success === true, 'Should have success: true');
408
+ assert(json.dryRun === true, 'Should have dryRun: true');
409
+ assert(Array.isArray(json.entries), 'Should include entries array');
410
+ });
411
+
412
+ test('prune text output is readable', () => {
413
+ const result = run('prune --dry-run');
414
+ assert(result.success, 'Dry-run should succeed');
415
+ assert(result.output.includes('Prune'), 'Should have readable prune output');
416
+ });
417
+
418
+ // ============================================
419
+ // AUTO-FEATURES TESTS (env templates)
420
+ // ============================================
421
+ console.log('\n🤖 Auto-Features Tests');
422
+
423
+ test('create dry-run succeeds', () => {
424
+ const result = run('create test-env-feature --prefix feat --dry-run --json');
425
+ assert(result.success, 'Dry-run should succeed');
426
+ const json = assertJSON(result.output);
427
+ assert(json.dryRun === true, 'Should have dryRun: true');
428
+ });
429
+
430
+ test('create ignores unsafe --env traversal entries', () => {
431
+ const result = run('create env-guard --prefix feat --dry-run --json --env "../.env,secrets/.env,.env.local"');
432
+ assert(result.success, 'Dry-run should succeed');
433
+ const json = assertJSON(result.output);
434
+ assert(Array.isArray(json.warnings), 'Should include warnings');
435
+ assert(json.warnings.some(w => w.includes('unsafe env file')), 'Should warn for unsafe env entries');
436
+ });
437
+
438
+ // ============================================
439
+ // WORKTREE ROOT DETECTION TESTS
440
+ // ============================================
441
+ console.log('\n📍 Worktree Root Detection Tests');
442
+
443
+ test('info shows worktreeRoot and worktreeRootSource', () => {
444
+ const result = run('info --json');
445
+ const json = assertJSON(result.output);
446
+ assert(json.worktreeRoot, 'Should have worktreeRoot');
447
+ assert(json.worktreeRootSource, 'Should have worktreeRootSource');
448
+ assert(typeof json.worktreeRoot === 'string', 'worktreeRoot should be string');
449
+ assert(json.worktreeRoot.includes('worktrees'), 'worktreeRoot should include worktrees');
450
+ });
451
+
452
+ test('create --worktree-root overrides default location', () => {
453
+ const customRoot = '/tmp/test-worktrees';
454
+ const result = run(`create test-custom-root --prefix feat --dry-run --json --worktree-root "${customRoot}"`);
455
+ assert(result.success, 'Should succeed with custom root');
456
+ const json = assertJSON(result.output);
457
+ assert(json.wouldCreate.worktreePath.startsWith(customRoot), 'Path should use custom root');
458
+ assert(json.wouldCreate.worktreeRootSource === '--worktree-root flag', 'Source should be flag');
459
+ });
460
+
461
+ test('create --worktree-root with relative path resolves to absolute', () => {
462
+ const result = run('create test-relative --prefix feat --dry-run --json --worktree-root "./custom-worktrees"');
463
+ assert(result.success, 'Should succeed');
464
+ const json = assertJSON(result.output);
465
+ assert(path.isAbsolute(json.wouldCreate.worktreePath), 'Path should be absolute');
466
+ });
467
+
468
+ test('create dry-run shows worktreeRootSource', () => {
469
+ const result = run('create test-source --prefix feat --dry-run --json');
470
+ assert(result.success, 'Should succeed');
471
+ const json = assertJSON(result.output);
472
+ assert(json.wouldCreate.worktreeRootSource, 'Should show worktreeRootSource');
473
+ });
474
+
475
+ test('superproject detection in submodule', () => {
476
+ // Test from claudekit-engineer submodule
477
+ const submodulePath = path.join(MONOREPO_DIR, 'claudekit-engineer');
478
+ if (!fs.existsSync(submodulePath)) return;
479
+ const result = run('info --json', { cwd: submodulePath });
480
+ const json = assertJSON(result.output);
481
+ // Should detect parent monorepo as superproject
482
+ assert(json.worktreeRootSource.includes('superproject') || json.worktreeRootSource === 'monorepo root',
483
+ 'Should detect superproject or monorepo root');
484
+ });
485
+
486
+ test('WORKTREE_ROOT env var overrides detection', () => {
487
+ const envRoot = '/tmp/env-worktrees';
488
+ try {
489
+ const output = execSync(`WORKTREE_ROOT="${envRoot}" node "${SCRIPT_PATH}" create test-env --prefix feat --dry-run --json`, {
490
+ encoding: 'utf-8',
491
+ cwd: STANDALONE_DIR,
492
+ stdio: ['pipe', 'pipe', 'pipe']
493
+ });
494
+ const json = JSON.parse(output.trim());
495
+ assert(json.wouldCreate.worktreePath.startsWith(envRoot), 'Should use env var root');
496
+ assert(json.wouldCreate.worktreeRootSource === 'WORKTREE_ROOT env', 'Source should be env');
497
+ } catch (error) {
498
+ // May fail if script path issue - skip
499
+ }
500
+ });
501
+
502
+ test('invalid WORKTREE_ROOT env var fails safely', () => {
503
+ const invalidRoot = '/etc/passwd';
504
+ try {
505
+ execSync(`WORKTREE_ROOT="${invalidRoot}" node "${SCRIPT_PATH}" info --json`, {
506
+ encoding: 'utf-8',
507
+ cwd: STANDALONE_DIR,
508
+ stdio: ['pipe', 'pipe', 'pipe']
509
+ });
510
+ assert(false, 'Should fail with invalid WORKTREE_ROOT');
511
+ } catch (error) {
512
+ const json = assertJSON(error.stdout.toString());
513
+ assert(json.error.code === 'INVALID_WORKTREE_ROOT', 'Should have INVALID_WORKTREE_ROOT');
514
+ }
515
+ });
516
+
517
+ test('create --worktree-root validates path existence', () => {
518
+ // Use a deeply nested non-existent path that can't be created
519
+ const invalidRoot = '/nonexistent/deeply/nested/path/that/does/not/exist';
520
+ const result = run(`create test-invalid-root --prefix feat --json --worktree-root "${invalidRoot}"`);
521
+ assert(!result.success, 'Should fail with invalid path');
522
+ const json = assertJSON(result.output);
523
+ assert(json.error.code === 'INVALID_WORKTREE_ROOT', 'Should have INVALID_WORKTREE_ROOT error');
524
+ });
525
+
526
+ test('info reports agentkit project config as worktreeRootSource', () => {
527
+ const repo = mkTempGitRepo();
528
+ const home = mkTempHome();
529
+ writeWorktreeRootConfig(repo, '../project-worktrees');
530
+ const result = runInRepo(repo, home, 'info --json');
531
+ assert(result.success, 'info should succeed');
532
+ const json = assertJSON(result.output);
533
+ assert(json.worktreeRootSource === 'agentkit project config', `unexpected source: ${json.worktreeRootSource}`);
534
+ assert(json.worktreeRoot === path.resolve(repo, '../project-worktrees'), `unexpected root: ${json.worktreeRoot}`);
535
+ });
536
+
537
+ test('info reports agentkit user config as worktreeRootSource', () => {
538
+ const repo = mkTempGitRepo();
539
+ const home = mkTempHome();
540
+ const userRoot = path.join(os.tmpdir(), 'ak-wt-portable-drive');
541
+ writeWorktreeRootConfig(home, userRoot);
542
+ const result = runInRepo(repo, home, 'info --json');
543
+ assert(result.success, 'info should succeed');
544
+ const json = assertJSON(result.output);
545
+ assert(json.worktreeRootSource === 'agentkit user config', `unexpected source: ${json.worktreeRootSource}`);
546
+ assert(json.worktreeRoot === userRoot, `unexpected root: ${json.worktreeRoot}`);
547
+ });
548
+
549
+ test('AGENTKIT_HOME overrides where user worktree.root config is read from', () => {
550
+ // When AGENTKIT_HOME is set, the AgentKit home is that directory itself
551
+ // (config.yaml lives directly under it), not `$HOME/.agentkit`. A user
552
+ // worktree.root written to the real $HOME/.agentkit/config.yaml must be
553
+ // ignored in favor of $AGENTKIT_HOME/config.yaml.
554
+ const repo = mkTempGitRepo();
555
+ const home = mkTempHome();
556
+ const agentkitHome = fs.mkdtempSync(path.join(os.tmpdir(), 'ak-wt-test-akhome-'));
557
+ const decoyRoot = path.join(os.tmpdir(), 'ak-wt-decoy-should-not-win');
558
+ writeWorktreeRootConfig(home, decoyRoot); // would resolve as $HOME/.agentkit/config.yaml
559
+ fs.writeFileSync(path.join(agentkitHome, 'config.yaml'), 'worktree:\n root: ' + path.join(os.tmpdir(), 'ak-wt-real-akhome-root') + '\n');
560
+ const output = execSync(`node "${SCRIPT_PATH}" info --json`, {
561
+ encoding: 'utf-8',
562
+ cwd: repo,
563
+ env: { ...process.env, HOME: home, USERPROFILE: home, AGENTKIT_HOME: agentkitHome },
564
+ stdio: ['pipe', 'pipe', 'pipe']
565
+ });
566
+ const json = assertJSON(output.trim());
567
+ assert(json.worktreeRootSource === 'agentkit user config', `unexpected source: ${json.worktreeRootSource}`);
568
+ assert(
569
+ json.worktreeRoot === path.join(os.tmpdir(), 'ak-wt-real-akhome-root'),
570
+ `expected AGENTKIT_HOME config to win, got ${json.worktreeRoot}`
571
+ );
572
+ });
573
+
574
+ test('project worktree.root config overrides user worktree.root config', () => {
575
+ const repo = mkTempGitRepo();
576
+ const home = mkTempHome();
577
+ writeWorktreeRootConfig(repo, '../project-wins-worktrees');
578
+ writeWorktreeRootConfig(home, path.join(os.tmpdir(), 'ak-wt-user-loses'));
579
+ const result = runInRepo(repo, home, 'info --json');
580
+ const json = assertJSON(result.output);
581
+ assert(json.worktreeRootSource === 'agentkit project config', `expected project to win, got ${json.worktreeRootSource}`);
582
+ assert(json.worktreeRoot === path.resolve(repo, '../project-wins-worktrees'), `unexpected root: ${json.worktreeRoot}`);
583
+ });
584
+
585
+ test('absolute worktree.root at project scope is skipped with a warning', () => {
586
+ const repo = mkTempGitRepo();
587
+ const home = mkTempHome();
588
+ writeWorktreeRootConfig(repo, path.join(os.tmpdir(), 'ak-wt-untrusted-absolute'));
589
+ const result = runInRepo(repo, home, 'info --json');
590
+ assert(result.success, 'info should still succeed (warning, not a hard error)');
591
+ const json = assertJSON(result.output);
592
+ assert(json.worktreeRootSource !== 'agentkit project config', 'absolute project-scope value must not win');
593
+ assert(Array.isArray(json.warnings) && json.warnings.length > 0, 'should surface a warning');
594
+ assert(/project scope only honors a relative path/.test(json.warnings[0]), 'warning should explain the rejection');
595
+ });
596
+
597
+ test('--worktree-root flag overrides worktree.root config', () => {
598
+ const repo = mkTempGitRepo();
599
+ const home = mkTempHome();
600
+ writeWorktreeRootConfig(repo, '../config-worktrees');
601
+ const flagRoot = os.tmpdir();
602
+ const result = runInRepo(repo, home, `create test-flag-wins --prefix feat --dry-run --json --worktree-root "${flagRoot}"`);
603
+ const json = assertJSON(result.output);
604
+ assert(json.wouldCreate.worktreeRootSource === '--worktree-root flag', `unexpected source: ${json.wouldCreate.worktreeRootSource}`);
605
+ });
606
+
607
+ test('worktree.root config outranks WORKTREE_ROOT env var', () => {
608
+ // Precedence is flag > project config > user config > WORKTREE_ROOT env >
609
+ // built-in chain, so a set config value must win over the env var here.
610
+ const repo = mkTempGitRepo();
611
+ const home = mkTempHome();
612
+ writeWorktreeRootConfig(repo, '../config-worktrees');
613
+ const envRoot = os.tmpdir();
614
+ try {
615
+ const output = execSync(`node "${SCRIPT_PATH}" create test-config-outranks-env --prefix feat --dry-run --json`, {
616
+ encoding: 'utf-8',
617
+ cwd: repo,
618
+ env: { ...process.env, HOME: home, USERPROFILE: home, WORKTREE_ROOT: envRoot },
619
+ stdio: ['pipe', 'pipe', 'pipe']
620
+ });
621
+ const json = JSON.parse(output.trim());
622
+ assert(json.wouldCreate.worktreeRootSource === 'agentkit project config', `unexpected source: ${json.wouldCreate.worktreeRootSource}`);
623
+ } catch (error) {
624
+ assert(false, `command should succeed: ${error.stderr || error.message}`);
625
+ }
626
+ });
627
+
628
+ test('WORKTREE_ROOT env var still wins when no worktree.root config is set', () => {
629
+ const repo = mkTempGitRepo();
630
+ const home = mkTempHome();
631
+ const envRoot = os.tmpdir();
632
+ try {
633
+ const output = execSync(`node "${SCRIPT_PATH}" create test-env-wins-no-config --prefix feat --dry-run --json`, {
634
+ encoding: 'utf-8',
635
+ cwd: repo,
636
+ env: { ...process.env, HOME: home, USERPROFILE: home, WORKTREE_ROOT: envRoot },
637
+ stdio: ['pipe', 'pipe', 'pipe']
638
+ });
639
+ const json = JSON.parse(output.trim());
640
+ assert(json.wouldCreate.worktreeRootSource === 'WORKTREE_ROOT env', `unexpected source: ${json.wouldCreate.worktreeRootSource}`);
641
+ } catch (error) {
642
+ assert(false, `command should succeed: ${error.stderr || error.message}`);
643
+ }
644
+ });
645
+
646
+ test('a worktree.root value with shell metacharacters cannot execute code (real create, not dry-run)', () => {
647
+ // A project's committed .agentkit/config.yaml is untrusted input (it can
648
+ // arrive from a cloned repo). worktreeRoot must never reach a shell -
649
+ // otherwise a value like this one plants an arbitrary file the moment
650
+ // someone runs `create` in the clone. This exercises the real (non
651
+ // --dry-run) create path so the actual `git worktree add` invocation runs.
652
+ const repo = mkTempGitRepo();
653
+ execSync('git config user.email test@example.com', { cwd: repo, stdio: ['pipe', 'pipe', 'pipe'] });
654
+ execSync('git config user.name test', { cwd: repo, stdio: ['pipe', 'pipe', 'pipe'] });
655
+ execSync('git commit -q --allow-empty -m init', { cwd: repo, stdio: ['pipe', 'pipe', 'pipe'] });
656
+ const home = mkTempHome();
657
+ const parentDir = path.dirname(repo);
658
+ writeWorktreeRootConfig(repo, '../wt";touch PWNED-RCE;echo "');
659
+ runInRepo(repo, home, 'create pocfeat --prefix feat --json');
660
+ const canaryLocations = [repo, parentDir, home, os.tmpdir()].map((dir) => path.join(dir, 'PWNED-RCE'));
661
+ for (const canary of canaryLocations) {
662
+ assert(!fs.existsSync(canary), `shell metacharacters in worktree.root must not execute a command (found ${canary})`);
663
+ }
664
+ });
665
+
666
+ // ============================================
667
+ // ERROR HANDLING TESTS
668
+ // ============================================
669
+ console.log('\n⚠️ Error Handling Tests');
670
+
671
+ test('unknown command returns error', () => {
672
+ const result = run('unknowncommand --json');
673
+ assert(!result.success, 'Should fail');
674
+ const json = assertJSON(result.output);
675
+ assert(json.error.code === 'UNKNOWN_COMMAND', 'Should have UNKNOWN_COMMAND error');
676
+ });
677
+
678
+ test('no command returns error', () => {
679
+ const result = run('--json');
680
+ assert(!result.success, 'Should fail');
681
+ const json = assertJSON(result.output);
682
+ assert(json.error.code === 'UNKNOWN_COMMAND', 'Should have UNKNOWN_COMMAND error');
683
+ });
684
+
685
+ test('errors have suggestion field', () => {
686
+ const result = run('create --json');
687
+ const json = assertJSON(result.output);
688
+ assert(json.error.suggestion, 'Error should have suggestion');
689
+ });
690
+
691
+ test('success commands return exit code 0', () => {
692
+ const result = run('info --json');
693
+ assert(result.exitCode === 0, 'Exit code should be 0');
694
+ });
695
+
696
+ test('error commands return exit code 1', () => {
697
+ const result = run('create --json');
698
+ assert(result.exitCode === 1, 'Exit code should be 1');
699
+ });
700
+
701
+ test('non-git directory returns error', () => {
702
+ const result = run('info --json', { cwd: '/tmp' });
703
+ assert(!result.success, 'Should fail in non-git dir');
704
+ const json = assertJSON(result.output);
705
+ assert(json.error.code === 'NOT_GIT_REPO', 'Should have NOT_GIT_REPO error');
706
+ });
707
+
708
+ // ============================================
709
+ // EDGE CASE: FEATURE NAME HANDLING
710
+ // ============================================
711
+ console.log('\n🔤 Feature Name Edge Cases');
712
+
713
+ test('create handles empty string feature', () => {
714
+ const result = run('create "" --json');
715
+ assert(!result.success, 'Should fail with empty feature');
716
+ const json = assertJSON(result.output);
717
+ assert(json.error.code === 'MISSING_FEATURE', 'Should have MISSING_FEATURE error');
718
+ });
719
+
720
+ test('create handles very long feature name (truncates to 50 chars)', () => {
721
+ const longName = 'a'.repeat(100);
722
+ const result = run(`create "${longName}" --dry-run --json`);
723
+ assert(result.success, 'Should succeed');
724
+ const json = assertJSON(result.output);
725
+ const branchPart = json.wouldCreate.branch.split('/')[1];
726
+ assert(branchPart.length <= 50, 'Feature part should be max 50 chars');
727
+ });
728
+
729
+ test('create handles unicode characters', () => {
730
+ const result = run('create "测试功能-тест" --dry-run --json');
731
+ assert(result.success, 'Should succeed');
732
+ const json = assertJSON(result.output);
733
+ // Unicode gets converted to dashes
734
+ assert(!json.wouldCreate.branch.includes('测'), 'Should not contain unicode');
735
+ });
736
+
737
+ test('create handles leading/trailing dashes', () => {
738
+ const result = run('create "---feature---" --dry-run --json');
739
+ assert(result.success, 'Should succeed');
740
+ const json = assertJSON(result.output);
741
+ assert(!json.wouldCreate.branch.endsWith('/-'), 'Should not end with dash');
742
+ assert(!json.wouldCreate.branch.includes('//'), 'Should not have double slashes');
743
+ });
744
+
745
+ test('create handles only special characters', () => {
746
+ const result = run('create "@#$%^&*()" --dry-run --json');
747
+ assert(!result.success, 'Should fail when sanitized feature is empty');
748
+ const json = assertJSON(result.output);
749
+ assert(json.error.code === 'INVALID_FEATURE_NAME', 'Should report invalid feature name');
750
+ });
751
+
752
+ test('create handles numbers only', () => {
753
+ const result = run('create "12345" --dry-run --json');
754
+ assert(result.success, 'Should succeed');
755
+ const json = assertJSON(result.output);
756
+ assert(json.wouldCreate.branch.includes('12345'), 'Should keep numbers');
757
+ });
758
+
759
+ test('create handles mixed case camelCase', () => {
760
+ const result = run('create "myNewFeature" --dry-run --json');
761
+ assert(result.success, 'Should succeed');
762
+ const json = assertJSON(result.output);
763
+ assert(json.wouldCreate.branch.includes('mynewfeature'), 'Should be lowercase');
764
+ });
765
+
766
+ // ============================================
767
+ // --no-prefix: MULTI-SEGMENT BRANCH NAMES
768
+ // ============================================
769
+ console.log('\n🔀 --no-prefix Multi-Segment Branch Names');
770
+
771
+ test('--no-prefix preserves forward slashes in branch name', () => {
772
+ const result = run('create "dev/feat/999-test-slash-preserve" --no-prefix --dry-run --json');
773
+ assert(result.success, 'Should succeed');
774
+ const json = assertJSON(result.output);
775
+ assert(json.wouldCreate.branch === 'dev/feat/999-test-slash-preserve', `Should preserve slashes, got: ${json.wouldCreate.branch}`);
776
+ });
777
+
778
+ test('--no-prefix preserves case with slashes', () => {
779
+ const result = run('create "User/Fix/MyBug" --no-prefix --dry-run --json');
780
+ assert(result.success, 'Should succeed');
781
+ const json = assertJSON(result.output);
782
+ assert(json.wouldCreate.branch === 'User/Fix/MyBug', `Should preserve case and slashes, got: ${json.wouldCreate.branch}`);
783
+ });
784
+
785
+ test('--no-prefix flattens slashes in worktree directory name', () => {
786
+ const result = run('create "kai/feat/my-feature" --no-prefix --dry-run --json');
787
+ assert(result.success, 'Should succeed');
788
+ const json = assertJSON(result.output);
789
+ // Worktree path should NOT contain nested directories from branch slashes
790
+ const worktreeName = json.wouldCreate.worktreePath.split('/').pop();
791
+ assert(!worktreeName.includes('/'), 'Worktree dir name should not contain slashes');
792
+ assert(worktreeName.includes('kai-feat-my-feature'), `Should flatten slashes to dashes, got: ${worktreeName}`);
793
+ });
794
+
795
+ test('--no-prefix collapses consecutive slashes', () => {
796
+ const result = run('create "kai///feat//my-feature" --no-prefix --dry-run --json');
797
+ assert(result.success, 'Should succeed');
798
+ const json = assertJSON(result.output);
799
+ assert(!json.wouldCreate.branch.includes('//'), `Should not have consecutive slashes, got: ${json.wouldCreate.branch}`);
800
+ });
801
+
802
+ test('--no-prefix trims leading/trailing slashes', () => {
803
+ const result = run('create "/kai/feat/my-feature/" --no-prefix --dry-run --json');
804
+ assert(result.success, 'Should succeed');
805
+ const json = assertJSON(result.output);
806
+ assert(!json.wouldCreate.branch.startsWith('/'), 'Should not start with slash');
807
+ assert(!json.wouldCreate.branch.endsWith('/'), 'Should not end with slash');
808
+ });
809
+
810
+ test('--no-prefix rejects path traversal (..)', () => {
811
+ const result = run('create "kai/../../../etc/passwd" --no-prefix --dry-run --json');
812
+ assert(!result.success, 'Should fail with path traversal');
813
+ const json = assertJSON(result.output);
814
+ assert(json.error.code === 'INVALID_FEATURE_NAME', 'Should report invalid feature name');
815
+ });
816
+
817
+ test('--no-prefix still works for simple names (no slashes)', () => {
818
+ const result = run('create "ND-1377-cleanup-docs" --no-prefix --dry-run --json');
819
+ assert(result.success, 'Should succeed');
820
+ const json = assertJSON(result.output);
821
+ assert(json.wouldCreate.branch === 'ND-1377-cleanup-docs', `Should work without slashes, got: ${json.wouldCreate.branch}`);
822
+ });
823
+
824
+ test('--no-prefix preserves dots in branch names', () => {
825
+ const result = run('create "release/v1.2.3" --no-prefix --dry-run --json');
826
+ assert(result.success, 'Should succeed');
827
+ const json = assertJSON(result.output);
828
+ assert(json.wouldCreate.branch === 'release/v1.2.3', `Should preserve dots, got: ${json.wouldCreate.branch}`);
829
+ });
830
+
831
+ // ============================================
832
+ // EDGE CASE: PATH HANDLING
833
+ // ============================================
834
+ console.log('\n📁 Path Handling Edge Cases');
835
+
836
+ test('create handles path with spaces via --worktree-root', () => {
837
+ const pathWithSpaces = '/tmp/my worktree dir';
838
+ const result = run(`create test-spaces --prefix feat --dry-run --json --worktree-root "${pathWithSpaces}"`);
839
+ assert(result.success, 'Should succeed with quoted path');
840
+ const json = assertJSON(result.output);
841
+ assert(json.wouldCreate.worktreePath.includes('my worktree dir'), 'Should preserve spaces');
842
+ });
843
+
844
+ test('create handles home directory expansion', () => {
845
+ // Script uses path.resolve which doesn't expand ~, so this tests current behavior
846
+ const result = run('create test-home --prefix feat --dry-run --json --worktree-root "~/test-worktrees"');
847
+ assert(result.success, 'Should succeed');
848
+ const json = assertJSON(result.output);
849
+ // ~/test-worktrees should be resolved relative to cwd, not expanded
850
+ assert(json.wouldCreate.worktreePath, 'Should have worktree path');
851
+ });
852
+
853
+ test('create validates file path as worktree root', () => {
854
+ // /etc/passwd exists but is a file, not directory
855
+ const result = run('create test-file --prefix feat --json --worktree-root "/etc/passwd"');
856
+ assert(!result.success, 'Should fail when path is file');
857
+ const json = assertJSON(result.output);
858
+ assert(json.error.code === 'INVALID_WORKTREE_ROOT', 'Should have INVALID_WORKTREE_ROOT');
859
+ assert(json.error.message.includes('not a directory'), 'Should mention not a directory');
860
+ });
861
+
862
+ test('create handles current directory as worktree root', () => {
863
+ const result = run('create test-current --prefix feat --dry-run --json --worktree-root "."');
864
+ assert(result.success, 'Should succeed');
865
+ const json = assertJSON(result.output);
866
+ assert(path.isAbsolute(json.wouldCreate.worktreePath), 'Should resolve to absolute');
867
+ });
868
+
869
+ // ============================================
870
+ // EDGE CASE: BRANCH PREFIX HANDLING
871
+ // ============================================
872
+ console.log('\n🏷️ Branch Prefix Edge Cases');
873
+
874
+ test('create uses default prefix when --prefix missing value', () => {
875
+ // --prefix without value should use 'feat' default
876
+ const result = run('create test-default-prefix --dry-run --json');
877
+ assert(result.success, 'Should succeed');
878
+ const json = assertJSON(result.output);
879
+ assert(json.wouldCreate.branch.startsWith('feat/'), 'Should default to feat');
880
+ });
881
+
882
+ test('create handles invalid prefix gracefully', () => {
883
+ // Prefix is sanitized before use.
884
+ const result = run('create test-custom-prefix --prefix custom --dry-run --json');
885
+ assert(result.success, 'Should succeed');
886
+ const json = assertJSON(result.output);
887
+ assert(json.wouldCreate.branch.startsWith('custom/'), 'Should use custom prefix');
888
+ });
889
+
890
+ // ============================================
891
+ // EDGE CASE: MONOREPO SCENARIOS
892
+ // ============================================
893
+ console.log('\n📦 Monorepo Edge Cases');
894
+
895
+ test('create with partial project match in monorepo', () => {
896
+ if (!fs.existsSync(MONOREPO_DIR)) return;
897
+ // 'cli' should match 'claudekit-cli'
898
+ const result = run('create cli test-partial --prefix feat --dry-run --json', { cwd: MONOREPO_DIR });
899
+ assert(result.success, 'Should succeed with partial match');
900
+ const json = assertJSON(result.output);
901
+ assert(json.wouldCreate.project === 'claudekit-cli', 'Should find claudekit-cli');
902
+ });
903
+
904
+ test('create detects multiple project matches', () => {
905
+ if (!fs.existsSync(MONOREPO_DIR)) return;
906
+ // 'claudekit' matches multiple projects
907
+ const result = run('create claudekit test-multi --prefix feat --json', { cwd: MONOREPO_DIR });
908
+ assert(!result.success, 'Should fail with multiple matches');
909
+ const json = assertJSON(result.output);
910
+ assert(json.error.code === 'MULTIPLE_PROJECTS_MATCH', 'Should have MULTIPLE_PROJECTS_MATCH error');
911
+ assert(json.error.matchingProjects.length > 1, 'Should list multiple matches');
912
+ });
913
+
914
+ test('info shows project env files in monorepo', () => {
915
+ if (!fs.existsSync(MONOREPO_DIR)) return;
916
+ const result = run('info --json', { cwd: MONOREPO_DIR });
917
+ const json = assertJSON(result.output);
918
+ assert(json.projectEnvFiles !== undefined, 'Should have projectEnvFiles');
919
+ });
920
+
921
+ // ============================================
922
+ // EDGE CASE: WORKTREE REMOVAL
923
+ // ============================================
924
+ console.log('\n🗑️ Remove Edge Cases');
925
+
926
+ test('remove matches by full path', () => {
927
+ const listResult = run('list --json');
928
+ const listJson = assertJSON(listResult.output);
929
+ const removable = listJson.worktrees.find(w => !w.isMainWorktree);
930
+
931
+ if (removable) {
932
+ const result = run(`remove "${removable.path}" --dry-run --json`);
933
+ assert(result.success, 'Should match by full path');
934
+ const json = assertJSON(result.output);
935
+ assert(json.wouldRemove.worktreePath === removable.path, 'Should match exact path');
936
+ }
937
+ });
938
+
939
+ test('remove matches by branch name', () => {
940
+ const listResult = run('list --json');
941
+ const listJson = assertJSON(listResult.output);
942
+ const removable = listJson.worktrees.find(w => w.branch && !w.isMainWorktree);
943
+
944
+ if (removable && removable.branch !== 'detached') {
945
+ const branchPart = removable.branch.split('/').pop(); // Get last part of branch
946
+ const result = run(`remove "${branchPart}" --dry-run --json`);
947
+ // May match or have multiple matches - both are valid behaviors
948
+ assert(result.output, 'Should have output');
949
+ }
950
+ });
951
+
952
+ test('remove is case insensitive', () => {
953
+ const result = run('remove NONEXISTENT-WORKTREE-XYZ --json');
954
+ assert(!result.success, 'Should fail');
955
+ const json = assertJSON(result.output);
956
+ assert(json.error.code === 'WORKTREE_NOT_FOUND', 'Should search case-insensitively');
957
+ });
958
+
959
+ // ============================================
960
+ // EDGE CASE: DIRTY STATE HANDLING
961
+ // ============================================
962
+ console.log('\n📝 Dirty State Edge Cases');
963
+
964
+ test('info provides dirty state details', () => {
965
+ const result = run('info --json');
966
+ const json = assertJSON(result.output);
967
+ assert(typeof json.dirtyState === 'boolean', 'Should have dirtyState');
968
+ if (json.dirtyState) {
969
+ assert(json.dirtyDetails, 'Should have dirtyDetails when dirty');
970
+ assert(typeof json.dirtyDetails.modified === 'number', 'Should have modified count');
971
+ assert(typeof json.dirtyDetails.staged === 'number', 'Should have staged count');
972
+ assert(typeof json.dirtyDetails.untracked === 'number', 'Should have untracked count');
973
+ }
974
+ });
975
+
976
+ test('create includes warning for dirty state', () => {
977
+ // This test depends on repo state - if clean, warning won't appear
978
+ const result = run('create test-dirty-check --dry-run --json');
979
+ assert(result.success, 'Should succeed');
980
+ const json = assertJSON(result.output);
981
+ // warnings may or may not exist depending on repo state
982
+ if (json.warnings) {
983
+ assert(Array.isArray(json.warnings), 'warnings should be array');
984
+ }
985
+ });
986
+
987
+ // ============================================
988
+ // EDGE CASE: JSON VS TEXT OUTPUT
989
+ // ============================================
990
+ console.log('\n📤 Output Format Edge Cases');
991
+
992
+ test('info text output includes all sections', () => {
993
+ const result = run('info');
994
+ assert(result.success, 'Should succeed');
995
+ assert(result.output.includes('Repository Info'), 'Should have repo info');
996
+ assert(result.output.includes('Type:'), 'Should have type');
997
+ assert(result.output.includes('Base branch:'), 'Should have base branch');
998
+ assert(result.output.includes('Worktree location:'), 'Should have worktree location');
999
+ });
1000
+
1001
+ test('list text output is readable', () => {
1002
+ const result = run('list');
1003
+ assert(result.success, 'Should succeed');
1004
+ assert(result.output.includes('worktrees'), 'Should mention worktrees');
1005
+ });
1006
+
1007
+ test('error text output is readable', () => {
1008
+ const result = run('create');
1009
+ assert(!result.success, 'Should fail');
1010
+ assert(result.stderr.includes('Error') || result.output.includes('Error'), 'Should have error text');
1011
+ });
1012
+
1013
+ // ============================================
1014
+ // EDGE CASE: EXISTING BRANCH SCENARIOS
1015
+ // ============================================
1016
+ console.log('\n🌿 Branch Existence Edge Cases');
1017
+
1018
+ test('create dry-run shows if branch exists', () => {
1019
+ const result = run('create test-branch-exist --prefix feat --dry-run --json');
1020
+ assert(result.success, 'Should succeed');
1021
+ const json = assertJSON(result.output);
1022
+ assert(typeof json.wouldCreate.branchExists === 'boolean', 'Should indicate branch existence');
1023
+ });
1024
+
1025
+ // ============================================
1026
+ // EDGE CASE: CONCURRENT/RACE CONDITIONS
1027
+ // ============================================
1028
+ console.log('\n⚡ Concurrent Access Tests');
1029
+
1030
+ test('multiple info calls return consistent data', () => {
1031
+ const result1 = run('info --json');
1032
+ const result2 = run('info --json');
1033
+ assert(result1.success && result2.success, 'Both should succeed');
1034
+ const json1 = assertJSON(result1.output);
1035
+ const json2 = assertJSON(result2.output);
1036
+ assert(json1.repoType === json2.repoType, 'Repo type should be consistent');
1037
+ assert(json1.baseBranch === json2.baseBranch, 'Base branch should be consistent');
1038
+ assert(json1.worktreeRoot === json2.worktreeRoot, 'Worktree root should be consistent');
1039
+ });
1040
+
1041
+ test('list returns consistent worktree count', () => {
1042
+ const result1 = run('list --json');
1043
+ const result2 = run('list --json');
1044
+ assert(result1.success && result2.success, 'Both should succeed');
1045
+ const json1 = assertJSON(result1.output);
1046
+ const json2 = assertJSON(result2.output);
1047
+ assert(json1.worktrees.length === json2.worktrees.length, 'Worktree count should be consistent');
1048
+ });
1049
+
1050
+ // ============================================
1051
+ // USER SCENARIO: REAL-WORLD WORKFLOWS
1052
+ // ============================================
1053
+ console.log('\n👤 User Scenario Tests');
1054
+
1055
+ test('scenario: new user creates first worktree', () => {
1056
+ // Step 1: Check info
1057
+ const infoResult = run('info --json');
1058
+ assert(infoResult.success, 'Info should succeed');
1059
+ const info = assertJSON(infoResult.output);
1060
+
1061
+ // Step 2: Dry-run create
1062
+ const createResult = run('create add-login-feature --prefix feat --dry-run --json');
1063
+ assert(createResult.success, 'Create dry-run should succeed');
1064
+ const create = assertJSON(createResult.output);
1065
+ assert(create.wouldCreate.branch === 'feat/add-login-feature', 'Branch should be correctly named');
1066
+ assert(create.wouldCreate.baseBranch === info.baseBranch, 'Should use detected base branch');
1067
+ });
1068
+
1069
+ test('scenario: user fixes bug in submodule', () => {
1070
+ const submodulePath = path.join(MONOREPO_DIR, 'claudekit-engineer');
1071
+ if (!fs.existsSync(submodulePath)) return;
1072
+
1073
+ // From submodule, create a fix branch
1074
+ const result = run('create fix-auth-bug --prefix fix --dry-run --json', { cwd: submodulePath });
1075
+ assert(result.success, 'Should succeed from submodule');
1076
+ const json = assertJSON(result.output);
1077
+ assert(json.wouldCreate.branch.startsWith('fix/'), 'Should have fix prefix');
1078
+ // Worktree should go to superproject
1079
+ assert(json.wouldCreate.worktreeRootSource.includes('superproject') ||
1080
+ json.wouldCreate.worktreeRootSource.includes('monorepo'),
1081
+ 'Should use superproject worktrees dir');
1082
+ });
1083
+
1084
+ test('scenario: user cleans up old worktrees', () => {
1085
+ // List worktrees first
1086
+ const listResult = run('list --json');
1087
+ assert(listResult.success, 'List should succeed');
1088
+ const list = assertJSON(listResult.output);
1089
+
1090
+ // Try to remove a nonexistent worktree (simulating cleanup)
1091
+ const removeResult = run('remove old-feature-xyz --json');
1092
+ assert(!removeResult.success, 'Should fail for nonexistent');
1093
+ const remove = assertJSON(removeResult.output);
1094
+ assert(remove.error.availableWorktrees, 'Should show available worktrees for cleanup');
1095
+ });
1096
+
1097
+ test('scenario: user with WORKTREE_ROOT env var', () => {
1098
+ const customRoot = '/tmp/custom-worktrees';
1099
+ try {
1100
+ const output = execSync(
1101
+ `WORKTREE_ROOT="${customRoot}" node "${SCRIPT_PATH}" info --json`,
1102
+ { encoding: 'utf-8', cwd: STANDALONE_DIR, stdio: ['pipe', 'pipe', 'pipe'] }
1103
+ );
1104
+ const json = JSON.parse(output.trim());
1105
+ assert(json.worktreeRoot === customRoot, 'Should use env var');
1106
+ assert(json.worktreeRootSource === 'WORKTREE_ROOT env', 'Should indicate env source');
1107
+ } catch (error) {
1108
+ // Skip if env var handling fails
1109
+ }
1110
+ });
1111
+
1112
+ // ============================================
1113
+ // SUMMARY
1114
+ // ============================================
1115
+ console.log('\n' + '='.repeat(50));
1116
+ console.log(`\n📊 Test Results: ${passed} passed, ${failed} failed\n`);
1117
+
1118
+ if (failed > 0) {
1119
+ console.log('Failed tests:');
1120
+ results.filter(r => r.status === 'FAIL').forEach(r => {
1121
+ console.log(` - ${r.name}: ${r.error}`);
1122
+ });
1123
+ process.exit(1);
1124
+ } else {
1125
+ console.log('✅ All tests passed!\n');
1126
+ process.exit(0);
1127
+ }