skillstore-cli 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 (231) hide show
  1. package/README.md +95 -0
  2. package/data/bundles/devflow-complete.json +19 -0
  3. package/data/free-skills/devflow-agile/manifest.json +19 -0
  4. package/data/free-skills/devflow-agile/plugin/commands/agile/retro.md +23 -0
  5. package/data/free-skills/devflow-agile/plugin/commands/agile/review.md +21 -0
  6. package/data/free-skills/devflow-agile/plugin/commands/agile/sprint.md +30 -0
  7. package/data/free-skills/devflow-agile/plugin/commands/agile/standup.md +20 -0
  8. package/data/free-skills/devflow-agile/plugin/commands/agile.md +35 -0
  9. package/data/free-skills/devflow-agile/plugin/commands/devflow.md +42 -0
  10. package/data/free-skills/devflow-agile/plugin/skills/developer/SKILL.md +93 -0
  11. package/data/free-skills/devflow-agile/plugin/skills/developer/assets/sample-output.md +182 -0
  12. package/data/free-skills/devflow-agile/plugin/skills/developer/references/clean-architecture.md +361 -0
  13. package/data/free-skills/devflow-agile/plugin/skills/developer/references/clean-code-guide.md +207 -0
  14. package/data/free-skills/devflow-agile/plugin/skills/developer/references/debugging-methodology.md +191 -0
  15. package/data/free-skills/devflow-agile/template/agents/agile-coach.md +76 -0
  16. package/data/free-skills/devflow-agile/template/workflows/agile-sprint-workflow.md +81 -0
  17. package/data/free-skills/devflow-bootstrap/manifest.json +8 -0
  18. package/data/free-skills/devflow-bootstrap/plugin/commands/bootstrap/auto.md +31 -0
  19. package/data/free-skills/devflow-bootstrap/plugin/commands/bootstrap.md +38 -0
  20. package/data/free-skills/devflow-bootstrap/plugin/commands/devflow.md +20 -0
  21. package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/SKILL.md +56 -0
  22. package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/assets/sample-output.md +216 -0
  23. package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/references/architecture-decisions.md +254 -0
  24. package/data/free-skills/devflow-bootstrap/plugin/skills/project-scaffold/references/stack-templates.md +400 -0
  25. package/data/free-skills/devflow-bootstrap/template/agents/bootstrap-specialist.md +56 -0
  26. package/data/free-skills/devflow-bootstrap/template/workflows/bootstrap-workflow.md +70 -0
  27. package/data/free-skills/devflow-docs/manifest.json +8 -0
  28. package/data/free-skills/devflow-docs/plugin/commands/devflow.md +20 -0
  29. package/data/free-skills/devflow-docs/plugin/commands/docs/generate.md +17 -0
  30. package/data/free-skills/devflow-docs/plugin/commands/docs/parse.md +19 -0
  31. package/data/free-skills/devflow-docs/plugin/commands/docs.md +26 -0
  32. package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/SKILL.md +59 -0
  33. package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/assets/sample-output.md +114 -0
  34. package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/references/extraction-techniques.md +115 -0
  35. package/data/free-skills/devflow-docs/plugin/skills/pdf-processor/references/ocr-strategies.md +167 -0
  36. package/data/free-skills/devflow-docs/template/agents/docs-specialist.md +35 -0
  37. package/data/free-skills/devflow-docs/template/workflows/docs-workflow.md +70 -0
  38. package/data/free-skills/devflow-postproject/manifest.json +13 -0
  39. package/data/free-skills/devflow-postproject/plugin/commands/devflow.md +34 -0
  40. package/data/free-skills/devflow-postproject/plugin/commands/postproject/handover.md +21 -0
  41. package/data/free-skills/devflow-postproject/plugin/commands/postproject/retro.md +21 -0
  42. package/data/free-skills/devflow-postproject/plugin/commands/postproject/support.md +21 -0
  43. package/data/free-skills/devflow-postproject/plugin/commands/postproject.md +32 -0
  44. package/data/free-skills/devflow-postproject/plugin/skills/retrospective/SKILL.md +70 -0
  45. package/data/free-skills/devflow-postproject/plugin/skills/retrospective/assets/sample-output.md +79 -0
  46. package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/facilitation-techniques.md +178 -0
  47. package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/lessons-learned-template.md +118 -0
  48. package/data/free-skills/devflow-postproject/plugin/skills/retrospective/references/retro-techniques.md +100 -0
  49. package/data/free-skills/devflow-postproject/template/agents/transition-manager.md +71 -0
  50. package/data/free-skills/devflow-postproject/template/workflows/transition-workflow.md +72 -0
  51. package/data/free-skills/devflow-presale/manifest.json +15 -0
  52. package/data/free-skills/devflow-presale/plugin/commands/devflow.md +47 -0
  53. package/data/free-skills/devflow-presale/plugin/commands/presale/analyze.md +30 -0
  54. package/data/free-skills/devflow-presale/plugin/commands/presale/estimate.md +30 -0
  55. package/data/free-skills/devflow-presale/plugin/commands/presale/price.md +30 -0
  56. package/data/free-skills/devflow-presale/plugin/commands/presale/propose.md +30 -0
  57. package/data/free-skills/devflow-presale/plugin/commands/presale.md +42 -0
  58. package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/SKILL.md +63 -0
  59. package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/assets/sample-output.md +129 -0
  60. package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/references/extraction-framework.md +140 -0
  61. package/data/free-skills/devflow-presale/plugin/skills/requirement-analysis/references/output-template.md +132 -0
  62. package/data/free-skills/devflow-presale/template/agents/presale-lead.md +83 -0
  63. package/data/free-skills/devflow-presale/template/agents/proposal-reviewer.md +63 -0
  64. package/data/free-skills/devflow-presale/template/workflows/presale-workflow.md +70 -0
  65. package/data/registry/categories.json +7 -0
  66. package/data/registry/packages.json +184 -0
  67. package/data/shared/framework/agents/brainstormer.md +74 -0
  68. package/data/shared/framework/agents/code-reviewer.md +87 -0
  69. package/data/shared/framework/agents/debugger.md +84 -0
  70. package/data/shared/framework/agents/docs-manager.md +55 -0
  71. package/data/shared/framework/agents/git-manager.md +59 -0
  72. package/data/shared/framework/agents/planner.md +68 -0
  73. package/data/shared/framework/agents/researcher.md +66 -0
  74. package/data/shared/framework/agents/tester.md +65 -0
  75. package/data/shared/framework/commands/cook/auto.md +27 -0
  76. package/data/shared/framework/commands/cook.md +45 -0
  77. package/data/shared/framework/commands/fix/ci.md +21 -0
  78. package/data/shared/framework/commands/fix/test.md +26 -0
  79. package/data/shared/framework/commands/fix/types.md +29 -0
  80. package/data/shared/framework/commands/fix.md +26 -0
  81. package/data/shared/framework/commands/git/cm.md +37 -0
  82. package/data/shared/framework/commands/git/pr.md +40 -0
  83. package/data/shared/framework/config/CLAUDE.md.template +26 -0
  84. package/data/shared/framework/config/settings.json +41 -0
  85. package/data/shared/framework/config/skillstore.config.json +29 -0
  86. package/data/shared/framework/hooks/discord-notify.sh +85 -0
  87. package/data/shared/framework/hooks/docs-sync.sh +53 -0
  88. package/data/shared/framework/hooks/modularization-hook.js +103 -0
  89. package/data/shared/framework/hooks/notification.js +94 -0
  90. package/data/shared/framework/hooks/quality-gate.js +109 -0
  91. package/data/shared/framework/hooks/scout-block.js +77 -0
  92. package/data/shared/framework/hooks/telegram-notify.sh +77 -0
  93. package/data/shared/framework/protocols/error-recovery.md +80 -0
  94. package/data/shared/framework/protocols/orchestration-protocol.md +112 -0
  95. package/data/shared/framework/quality/review-protocol.md +76 -0
  96. package/data/shared/framework/quality/verification-protocol.md +66 -0
  97. package/data/shared/framework/rules/development-rules.md +75 -0
  98. package/data/shared/framework/skills/backend-development/SKILL.md +77 -0
  99. package/data/shared/framework/skills/backend-development/assets/sample-output.md +175 -0
  100. package/data/shared/framework/skills/backend-development/references/advanced-patterns.md +180 -0
  101. package/data/shared/framework/skills/backend-development/references/api-design-guide.md +160 -0
  102. package/data/shared/framework/skills/backend-development/references/architecture-patterns.md +183 -0
  103. package/data/shared/framework/skills/backend-development/references/observability-resilience.md +155 -0
  104. package/data/shared/framework/skills/backend-development/references/troubleshooting.md +199 -0
  105. package/data/shared/framework/skills/codebase-analysis/SKILL.md +72 -0
  106. package/data/shared/framework/skills/codebase-analysis/assets/sample-output.md +263 -0
  107. package/data/shared/framework/skills/codebase-analysis/references/analysis-techniques.md +241 -0
  108. package/data/shared/framework/skills/codebase-analysis/references/dependency-mapping.md +280 -0
  109. package/data/shared/framework/skills/codebase-analysis/references/tech-debt-assessment.md +208 -0
  110. package/data/shared/framework/skills/databases/SKILL.md +72 -0
  111. package/data/shared/framework/skills/databases/assets/sample-output.md +212 -0
  112. package/data/shared/framework/skills/databases/references/advanced-data-patterns.md +259 -0
  113. package/data/shared/framework/skills/databases/references/query-optimization.md +214 -0
  114. package/data/shared/framework/skills/databases/references/schema-design.md +159 -0
  115. package/data/shared/framework/skills/databases/references/troubleshooting.md +214 -0
  116. package/data/shared/framework/skills/debugging-investigation/SKILL.md +84 -0
  117. package/data/shared/framework/skills/debugging-investigation/assets/sample-output.md +314 -0
  118. package/data/shared/framework/skills/debugging-investigation/references/systematic-debugging.md +197 -0
  119. package/data/shared/framework/skills/debugging-investigation/references/tool-specific-guides.md +202 -0
  120. package/data/shared/framework/skills/debugging-investigation/references/troubleshooting-patterns.md +196 -0
  121. package/data/shared/framework/skills/frontend-development/SKILL.md +67 -0
  122. package/data/shared/framework/skills/frontend-development/assets/sample-output.md +110 -0
  123. package/data/shared/framework/skills/frontend-development/references/component-patterns.md +112 -0
  124. package/data/shared/framework/skills/frontend-development/references/performance-guide.md +169 -0
  125. package/data/shared/framework/skills/frontend-development/references/routing-forms-realtime.md +374 -0
  126. package/data/shared/framework/skills/frontend-development/references/ssr-rsc-patterns.md +284 -0
  127. package/data/shared/framework/skills/frontend-development/references/troubleshooting.md +154 -0
  128. package/data/shared/framework/skills/mobile-development/SKILL.md +67 -0
  129. package/data/shared/framework/skills/mobile-development/assets/sample-output.md +382 -0
  130. package/data/shared/framework/skills/mobile-development/references/mobile-patterns.md +681 -0
  131. package/data/shared/framework/skills/mobile-development/references/mobile-performance.md +524 -0
  132. package/data/shared/framework/skills/mobile-development/references/troubleshooting.md +158 -0
  133. package/data/shared/framework/skills/security-audit/SKILL.md +83 -0
  134. package/data/shared/framework/skills/security-audit/assets/sample-output.md +451 -0
  135. package/data/shared/framework/skills/security-audit/references/owasp-checklist.md +580 -0
  136. package/data/shared/framework/skills/security-audit/references/secure-coding-patterns.md +433 -0
  137. package/data/shared/framework/skills/security-audit/references/vulnerability-remediation.md +331 -0
  138. package/data/shared/framework/skills/ui-generation/SKILL.md +70 -0
  139. package/data/shared/framework/skills/ui-generation/assets/sample-output.md +139 -0
  140. package/data/shared/framework/skills/ui-generation/references/accessibility-responsive.md +127 -0
  141. package/data/shared/framework/skills/ui-generation/references/compound-components.md +252 -0
  142. package/data/shared/framework/skills/ui-generation/references/generation-patterns.md +110 -0
  143. package/data/shared/framework/skills/ui-generation/references/storybook-design-system.md +278 -0
  144. package/data/shared/framework/skills/ui-generation/references/troubleshooting.md +198 -0
  145. package/data/shared/framework/workflows/documentation-management.md +58 -0
  146. package/data/shared/framework/workflows/primary-workflow.md +88 -0
  147. package/dist/commands/activate.d.ts +3 -0
  148. package/dist/commands/activate.d.ts.map +1 -0
  149. package/dist/commands/activate.js +34 -0
  150. package/dist/commands/activate.js.map +1 -0
  151. package/dist/commands/bundle.d.ts +3 -0
  152. package/dist/commands/bundle.d.ts.map +1 -0
  153. package/dist/commands/bundle.js +64 -0
  154. package/dist/commands/bundle.js.map +1 -0
  155. package/dist/commands/install.d.ts +3 -0
  156. package/dist/commands/install.d.ts.map +1 -0
  157. package/dist/commands/install.js +99 -0
  158. package/dist/commands/install.js.map +1 -0
  159. package/dist/commands/list.d.ts +3 -0
  160. package/dist/commands/list.d.ts.map +1 -0
  161. package/dist/commands/list.js +37 -0
  162. package/dist/commands/list.js.map +1 -0
  163. package/dist/commands/search.d.ts +3 -0
  164. package/dist/commands/search.d.ts.map +1 -0
  165. package/dist/commands/search.js +30 -0
  166. package/dist/commands/search.js.map +1 -0
  167. package/dist/commands/status.d.ts +3 -0
  168. package/dist/commands/status.d.ts.map +1 -0
  169. package/dist/commands/status.js +35 -0
  170. package/dist/commands/status.js.map +1 -0
  171. package/dist/commands/update.d.ts +3 -0
  172. package/dist/commands/update.d.ts.map +1 -0
  173. package/dist/commands/update.js +68 -0
  174. package/dist/commands/update.js.map +1 -0
  175. package/dist/download/cache.d.ts +3 -0
  176. package/dist/download/cache.d.ts.map +1 -0
  177. package/dist/download/cache.js +18 -0
  178. package/dist/download/cache.js.map +1 -0
  179. package/dist/download/client.d.ts +2 -0
  180. package/dist/download/client.d.ts.map +1 -0
  181. package/dist/download/client.js +58 -0
  182. package/dist/download/client.js.map +1 -0
  183. package/dist/index.d.ts +3 -0
  184. package/dist/index.d.ts.map +1 -0
  185. package/dist/index.js +23 -0
  186. package/dist/index.js.map +1 -0
  187. package/dist/installer/file-copier.d.ts +6 -0
  188. package/dist/installer/file-copier.d.ts.map +1 -0
  189. package/dist/installer/file-copier.js +32 -0
  190. package/dist/installer/file-copier.js.map +1 -0
  191. package/dist/installer/plugin-installer.d.ts +12 -0
  192. package/dist/installer/plugin-installer.d.ts.map +1 -0
  193. package/dist/installer/plugin-installer.js +33 -0
  194. package/dist/installer/plugin-installer.js.map +1 -0
  195. package/dist/installer/template-installer.d.ts +12 -0
  196. package/dist/installer/template-installer.d.ts.map +1 -0
  197. package/dist/installer/template-installer.js +45 -0
  198. package/dist/installer/template-installer.js.map +1 -0
  199. package/dist/license/crypto.d.ts +16 -0
  200. package/dist/license/crypto.d.ts.map +1 -0
  201. package/dist/license/crypto.js +50 -0
  202. package/dist/license/crypto.js.map +1 -0
  203. package/dist/license/license-store.d.ts +19 -0
  204. package/dist/license/license-store.d.ts.map +1 -0
  205. package/dist/license/license-store.js +99 -0
  206. package/dist/license/license-store.js.map +1 -0
  207. package/dist/license/validator.d.ts +32 -0
  208. package/dist/license/validator.d.ts.map +1 -0
  209. package/dist/license/validator.js +81 -0
  210. package/dist/license/validator.js.map +1 -0
  211. package/dist/registry/loader.d.ts +30 -0
  212. package/dist/registry/loader.d.ts.map +1 -0
  213. package/dist/registry/loader.js +22 -0
  214. package/dist/registry/loader.js.map +1 -0
  215. package/dist/registry/search-engine.d.ts +9 -0
  216. package/dist/registry/search-engine.d.ts.map +1 -0
  217. package/dist/registry/search-engine.js +30 -0
  218. package/dist/registry/search-engine.js.map +1 -0
  219. package/dist/utils/config.d.ts +14 -0
  220. package/dist/utils/config.d.ts.map +1 -0
  221. package/dist/utils/config.js +28 -0
  222. package/dist/utils/config.js.map +1 -0
  223. package/dist/utils/logger.d.ts +9 -0
  224. package/dist/utils/logger.d.ts.map +1 -0
  225. package/dist/utils/logger.js +22 -0
  226. package/dist/utils/logger.js.map +1 -0
  227. package/dist/utils/paths.d.ts +20 -0
  228. package/dist/utils/paths.d.ts.map +1 -0
  229. package/dist/utils/paths.js +79 -0
  230. package/dist/utils/paths.js.map +1 -0
  231. package/package.json +54 -0
@@ -0,0 +1,198 @@
1
+ # UI Generation Troubleshooting Guide
2
+
3
+ ## Generated Component Not Matching Design
4
+
5
+ **Iteration strategies when output diverges from intent:**
6
+
7
+ 1. **Visual diff analysis** — Screenshot the generated component, overlay on the design in Figma/browser DevTools.
8
+ - Identify specific gaps: spacing, font size, color, border radius, alignment.
9
+ - Provide concrete pixel/token corrections rather than vague "make it look right".
10
+
11
+ 2. **Incremental refinement approach:**
12
+ - Start with layout structure (flexbox/grid) — get the skeleton right first.
13
+ - Then layer in typography and spacing (use design tokens, not raw values).
14
+ - Then colors and decorative properties.
15
+ - Finally interactive states (hover, focus, active, disabled).
16
+
17
+ 3. **Reference-driven generation:**
18
+ - Provide a similar existing component as reference: "Match the card layout of ProductCard but with these differences..."
19
+ - Include design token names: "Use `--spacing-md` not `16px`".
20
+ - Specify breakpoint behavior explicitly if responsive layout matters.
21
+
22
+ 4. **Validation checklist after generation:**
23
+ - [ ] Padding/margin matches design spec (within 2px tolerance).
24
+ - [ ] Typography uses correct font family, weight, size, line-height.
25
+ - [ ] Colors reference design tokens, not hardcoded hex values.
26
+ - [ ] Interactive states are implemented (hover, focus, disabled).
27
+ - [ ] Component handles edge cases: empty state, overflow text, loading state.
28
+
29
+ ## Accessibility Audit Failures (WCAG)
30
+
31
+ **Common violations and fixes:**
32
+
33
+ 1. **Missing alt text (WCAG 1.1.1):**
34
+ - Fix: Add `alt` to all `<img>`. Decorative images: `alt=""` and `role="presentation"`.
35
+ - Audit: `document.querySelectorAll('img:not([alt])')`.
36
+
37
+ 2. **Insufficient color contrast (WCAG 1.4.3):**
38
+ - Minimum ratios: 4.5:1 normal text, 3:1 large text (18px+ or 14px bold).
39
+ - Fix: Use contrast checker: Chrome DevTools → color picker shows ratio.
40
+ - For generated components: validate all text/background pairs against tokens.
41
+
42
+ 3. **Missing form labels (WCAG 1.3.1):**
43
+ - Every `<input>` needs an associated `<label>` (via `htmlFor`/`id` or wrapping).
44
+ - Fix: `<label htmlFor="email">Email</label><input id="email" />`.
45
+ - For icon-only buttons: add `aria-label="Close dialog"`.
46
+
47
+ 4. **Keyboard navigation broken (WCAG 2.1.1):**
48
+ - All interactive elements must be reachable via Tab and operable via Enter/Space.
49
+ - Fix: Use semantic HTML (`<button>`, `<a>`, `<input>`) instead of `<div onClick>`.
50
+ - Custom components: add `tabIndex={0}`, `role="button"`, `onKeyDown` handler.
51
+
52
+ 5. **Missing focus indicators (WCAG 2.4.7):**
53
+ - Fix: Never set `outline: none` without a visible replacement.
54
+ - Use `focus-visible` for keyboard-only focus rings: `:focus-visible { outline: 2px solid var(--color-focus); }`.
55
+
56
+ **Automated audit command:**
57
+ ```bash
58
+ # Install and run axe-core
59
+ npx @axe-core/cli http://localhost:3000/page
60
+ # Or in browser: axe DevTools extension
61
+ ```
62
+
63
+ ## Responsive Breakpoint Issues
64
+
65
+ **Debugging workflow:**
66
+ 1. Open DevTools → Toggle device toolbar → test each breakpoint.
67
+ 2. Check for horizontal overflow: `document.documentElement.scrollWidth > document.documentElement.clientWidth`.
68
+ 3. Identify the breaking element: add `* { outline: 1px solid red; }` temporarily.
69
+
70
+ **Common issues:**
71
+ 1. **Fixed widths inside flex containers** — Element has `width: 400px` that exceeds viewport on mobile.
72
+ - Fix: Use `max-width: 100%` or relative units.
73
+ 2. **Missing viewport meta tag** — `<meta name="viewport" content="width=device-width, initial-scale=1">`.
74
+ 3. **Breakpoint gaps** — Styles defined for `>768px` and `<480px` but nothing in between.
75
+ - Fix: Use mobile-first approach: base styles for mobile, `min-width` queries for larger.
76
+ 4. **Images not responsive** — Fixed dimensions on `<img>`.
77
+ - Fix: `img { max-width: 100%; height: auto; }`.
78
+
79
+ **Breakpoint testing checklist:**
80
+ - [ ] 320px (small phone)
81
+ - [ ] 375px (standard phone)
82
+ - [ ] 768px (tablet portrait)
83
+ - [ ] 1024px (tablet landscape / small desktop)
84
+ - [ ] 1280px+ (desktop)
85
+
86
+ ## Dark Mode Inconsistencies
87
+
88
+ **Token coverage checklist:**
89
+ 1. **Enumerate all color tokens** — Every color must have a dark mode counterpart.
90
+ ```css
91
+ :root { --bg-primary: #ffffff; --text-primary: #1a1a1a; }
92
+ [data-theme="dark"] { --bg-primary: #1a1a1a; --text-primary: #e5e5e5; }
93
+ ```
94
+ 2. **Hardcoded colors** — Search for any hex/rgb values not using tokens.
95
+ - Audit: Search codebase for `#[0-9a-f]{3,8}` or `rgb(` outside of token definitions.
96
+ 3. **Shadows and borders** — Often forgotten in dark mode. Dark shadows on dark backgrounds are invisible.
97
+ - Fix: Use lighter shadows or subtle borders in dark mode.
98
+ 4. **Images and icons** — SVG icons using `currentColor` adapt automatically. Raster images may need dark variants.
99
+ - Fix: Use `filter: invert(1)` for simple icons, or provide separate dark assets.
100
+ 5. **Third-party components** — Libraries may not respect your theme tokens.
101
+ - Fix: Override library CSS variables or wrap in a themed container.
102
+
103
+ **Testing approach:**
104
+ - Toggle between modes rapidly to catch elements that flash or don't transition.
105
+ - Check in both modes: form inputs, modals, tooltips, dropdowns (easily missed).
106
+
107
+ ## Cross-Browser Rendering Differences
108
+
109
+ **Common discrepancies and fixes:**
110
+
111
+ 1. **Safari flexbox bugs** — `flex-basis: auto` behaves differently; `gap` in flexbox not supported in older Safari.
112
+ - Fix: Use explicit `flex` shorthand, use margin instead of `gap` for broader support.
113
+ 2. **Firefox font rendering** — Fonts appear thinner/different weight.
114
+ - Fix: Use `-moz-osx-font-smoothing: grayscale` for consistency.
115
+ 3. **CSS Grid in older browsers** — Partial support for features like `subgrid`.
116
+ - Fix: Use `@supports (grid-template-rows: subgrid)` for progressive enhancement.
117
+ 4. **Scrollbar styling** — `::-webkit-scrollbar` only works in Chromium/Safari.
118
+ - Fix: Use `scrollbar-width` and `scrollbar-color` for Firefox, keep webkit prefix for others.
119
+
120
+ **Testing approach:**
121
+ ```bash
122
+ # Quick cross-browser testing
123
+ npx playwright test --project=chromium --project=firefox --project=webkit
124
+ ```
125
+
126
+ ## TypeScript Type Errors in Generated Components
127
+
128
+ **Common errors and fixes:**
129
+
130
+ 1. **Props type mismatch** — Component expects `string` but receives `string | undefined`.
131
+ - Fix: Add optional chaining in JSX or provide default value in destructuring.
132
+ 2. **Event handler types** — `(e: any)` loses type safety.
133
+ - Fix: Use specific types: `React.ChangeEvent<HTMLInputElement>`, `React.MouseEvent<HTMLButtonElement>`.
134
+ 3. **Ref typing** — `useRef` returns wrong type.
135
+ - Fix: `const ref = useRef<HTMLDivElement>(null)` — specify the element type.
136
+ 4. **Children prop missing** — `Type '{ children: Element; }' is not assignable`.
137
+ - Fix: Use `React.PropsWithChildren<MyProps>` or add `children: React.ReactNode` to props.
138
+ 5. **Generic component constraints** — Generated generic components lack proper bounds.
139
+ - Fix: `<T extends Record<string, unknown>>` instead of `<T>` for object props.
140
+
141
+ **Quick type check:**
142
+ ```bash
143
+ npx tsc --noEmit --pretty
144
+ ```
145
+
146
+ ## CSS-in-JS Hydration Mismatches
147
+
148
+ **Symptoms:** Flash of unstyled content (FOUC), className mismatch warnings, styles missing on first render.
149
+
150
+ **Causes and fixes by library:**
151
+
152
+ 1. **styled-components / Emotion:**
153
+ - Server and client generate different class names due to different insertion order.
154
+ - Fix: Configure SSR style extraction. For styled-components: use `ServerStyleSheet` in `_document.tsx`.
155
+ - Fix: For Emotion with Next.js: use `@emotion/cache` + `CacheProvider` in app wrapper.
156
+
157
+ 2. **CSS Modules with dynamic imports:**
158
+ - Styles load after component renders, causing flash.
159
+ - Fix: Ensure CSS is imported at the top level, not inside dynamic import boundaries.
160
+
161
+ 3. **Tailwind CSS with SSR:**
162
+ - Purged classes differ between server and client builds.
163
+ - Fix: Ensure `content` paths in `tailwind.config.js` cover all template files consistently.
164
+
165
+ ## Z-Index Stacking Context Issues
166
+
167
+ **Symptoms:** Modal appears behind overlay, dropdown hidden by sibling, tooltip clipped.
168
+
169
+ **Diagnosis:**
170
+ 1. Open DevTools → select the hidden element → check its stacking context.
171
+ 2. An element creates a new stacking context when it has: `position` + `z-index`, `opacity < 1`, `transform`, `filter`, `will-change`, `isolation: isolate`.
172
+ 3. Z-index only competes within the same stacking context — a `z-index: 9999` inside a low-context parent won't beat `z-index: 1` in a higher context.
173
+
174
+ **Fix patterns:**
175
+ 1. **Use a z-index token scale** — Define levels in design tokens:
176
+ ```css
177
+ --z-dropdown: 100;
178
+ --z-sticky: 200;
179
+ --z-modal-backdrop: 300;
180
+ --z-modal: 400;
181
+ --z-popover: 500;
182
+ --z-toast: 600;
183
+ ```
184
+ 2. **Portal for modals/tooltips** — Render in a top-level DOM node outside the component tree to escape stacking contexts. Use `createPortal` in React.
185
+ 3. **Avoid unnecessary stacking contexts** — Don't add `transform: translateZ(0)` or `will-change` without reason; they create new contexts.
186
+ 4. **`isolation: isolate`** — Use on component root to contain z-index within component scope without leaking.
187
+
188
+ **Audit stacking contexts:**
189
+ ```javascript
190
+ // Log all stacking context creators on the page
191
+ document.querySelectorAll('*').forEach(el => {
192
+ const style = getComputedStyle(el);
193
+ if (style.zIndex !== 'auto' || parseFloat(style.opacity) < 1 ||
194
+ style.transform !== 'none' || style.filter !== 'none') {
195
+ console.log(el, 'z-index:', style.zIndex, 'opacity:', style.opacity);
196
+ }
197
+ });
198
+ ```
@@ -0,0 +1,58 @@
1
+ # Documentation Management
2
+
3
+ Process for keeping documentation in sync with the codebase.
4
+
5
+ ---
6
+
7
+ ## Documentation Structure
8
+
9
+ Standard docs in `docs/`:
10
+
11
+ | File | Content | Update when |
12
+ |------|---------|-------------|
13
+ | `architecture.md` | System architecture, components, data flow | Adding/modifying components, new integrations |
14
+ | `setup.md` | Local dev setup, environment requirements | Adding dependencies, env vars, tools |
15
+ | `deployment.md` | Deploy process, environments, rollback | Changing CI/CD, infrastructure |
16
+ | `api.md` | API documentation | Adding/modifying endpoints |
17
+ | `changelog.md` | Version history | Each release/feature/bugfix |
18
+
19
+ ## Auto-Update Triggers
20
+
21
+ ### Required updates
22
+ - New feature implemented → `architecture.md` + `changelog.md`
23
+ - API endpoint added/modified → `api.md`
24
+ - Environment variable added → `setup.md`
25
+ - Deployment process changed → `deployment.md`
26
+
27
+ ### Recommended updates
28
+ - Important bug fix → `changelog.md`
29
+ - Dependency upgrade → `changelog.md`
30
+ - Configuration change → `setup.md`
31
+
32
+ ### No update needed
33
+ - Refactoring with no behavior change
34
+ - Code style/formatting changes
35
+ - Test-only changes
36
+
37
+ ## Update Protocol
38
+
39
+ 1. **Check existing docs** — Read related files
40
+ 2. **Identify sections to update** — Only modify affected parts
41
+ 3. **Update incrementally** — DO NOT rewrite entirely
42
+ 4. **Verify links** — Ensure references remain valid
43
+ 5. **Keep concise** — Bullet points > paragraphs
44
+
45
+ ## Staleness Detection
46
+
47
+ Docs need review if:
48
+ - Doc file not updated in > 30 days but source code has changed
49
+ - Git log shows many commits but no docs update
50
+ - Hook `docs-sync.sh` detects code change without docs change
51
+
52
+ ## Quality Standards
53
+
54
+ - Docs must allow a NEW developer to understand and contribute
55
+ - Each doc file < 500 lines (split if larger)
56
+ - Use relative links for file references
57
+ - Code examples only when needed for clarification (not as filler)
58
+ - Keep tone concise, technical, actionable
@@ -0,0 +1,88 @@
1
+ # Primary Workflow
2
+
3
+ Mandatory development process — 5 sequential steps with quality gates.
4
+
5
+ **Reference:** `rules/development-rules.md` | `protocols/orchestration-protocol.md` | `protocols/error-recovery.md`
6
+
7
+ ---
8
+
9
+ ## Step 1: Plan
10
+
11
+ **Agent:** `planner`
12
+ **Required:** Yes — do not implement without a plan.
13
+
14
+ - Analyze requirements, research codebase
15
+ - Create plan with task breakdown
16
+ - Review plan with user before proceeding
17
+ - **Skip if:** User provides a clear plan or task is simple (< 30 minutes)
18
+
19
+ ## Step 2: Implement
20
+
21
+ **Agent:** Main agent or role-specific agent
22
+ **Input:** Plan from Step 1
23
+
24
+ - Implement according to plan, one task at a time
25
+ - After each task: run build/compile to verify syntax
26
+ - DO NOT create new files when existing files can be edited
27
+ - DO NOT implement outside the scope of the plan
28
+ - Commit after each task is complete (if user agrees)
29
+
30
+ ## Step 3: Test
31
+
32
+ **Agent:** `tester`
33
+ **Required:** Yes — do not skip testing.
34
+
35
+ - Run existing test suite (regression check)
36
+ - Verify test coverage for new code
37
+ - If test fails:
38
+ - Attempt 1: Fix code based on test output
39
+ - Attempt 2: Check if the test itself is wrong
40
+ - Attempt 3: Escalate to user (per `error-recovery.md`)
41
+ - DO NOT use fake data, mocks, or tricks to pass tests
42
+
43
+ ## Step 4: Review
44
+
45
+ **Agent:** `code-reviewer`
46
+ **Required:** Yes when config.strictness >= "balanced"
47
+
48
+ - Review code quality, security, performance
49
+ - Check task completeness (all TODOs done?)
50
+ - If critical issues:
51
+ - Return to Step 2 to fix
52
+ - Then Step 3 again
53
+ - Loop max 2 times, then escalate
54
+
55
+ ## Step 5: Document
56
+
57
+ **Agent:** `docs-manager`
58
+ **Required:** When there are API changes, architecture changes, or new features
59
+
60
+ - Update related docs
61
+ - Update changelog if applicable
62
+ - Not required for minor bugfixes
63
+
64
+ ---
65
+
66
+ ## Workflow Diagram
67
+
68
+ ```
69
+ Plan → Implement → Test → Review → Document
70
+ ↑ |
71
+ └── Fix ──┘ (max 2 loops)
72
+ ```
73
+
74
+ ## Quality Gates
75
+
76
+ | Gate | Pass condition |
77
+ |------|---------------|
78
+ | After Plan | User approves plan |
79
+ | After Implement | Build passes, no syntax errors |
80
+ | After Test | All tests pass |
81
+ | After Review | No critical issues, or issues fixed |
82
+ | After Document | Docs updated for significant changes |
83
+
84
+ ## Override Rules
85
+
86
+ - User can skip any step by explicitly stating so
87
+ - Simple fixes (< 10 LOC): can skip Plan and Review
88
+ - Hotfixes: can skip Document (but create a TODO to update later)
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const activateCommand: Command;
3
+ //# sourceMappingURL=activate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.d.ts","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,eAAe,SA+BxB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { activateLicense } from "../license/license-store.js";
4
+ import { logger } from "../utils/logger.js";
5
+ export const activateCommand = new Command("activate")
6
+ .description("Activate a license key")
7
+ .argument("<license-key>", "License key (format: SS-TIER-HASH-TS-SIG)")
8
+ .action(async (licenseKey) => {
9
+ logger.info("Validating license key...");
10
+ const result = await activateLicense(licenseKey);
11
+ if (result.success) {
12
+ logger.success(result.message);
13
+ if (result.tier) {
14
+ console.log(chalk.dim(`Tier: ${chalk.bold(result.tier)}`));
15
+ switch (result.tier) {
16
+ case "FREE":
17
+ console.log(chalk.dim("Access: Free preview skills only"));
18
+ break;
19
+ case "SINGLE":
20
+ console.log(chalk.dim("Access: All skills in licensed package"));
21
+ break;
22
+ case "BUNDLE":
23
+ console.log(chalk.dim("Access: All skills in all packages"));
24
+ break;
25
+ }
26
+ }
27
+ }
28
+ else {
29
+ logger.error(result.message);
30
+ console.log(chalk.dim("\nFormat: SS-{TIER}-{HASH}-{TIMESTAMP}-{SIGNATURE}"));
31
+ process.exit(1);
32
+ }
33
+ });
34
+ //# sourceMappingURL=activate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activate.js","sourceRoot":"","sources":["../../src/commands/activate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,eAAe,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,EAAE;IACnC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,MAAM;oBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC;oBAC3D,MAAM;gBACR,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;oBACjE,MAAM;gBACR,KAAK,QAAQ;oBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;oBAC7D,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAChE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const bundleCommand: Command;
3
+ //# sourceMappingURL=bundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/commands/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,eAAO,MAAM,aAAa,SA6DtB,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import fse from "fs-extra";
5
+ import { join } from "node:path";
6
+ import { getPackage } from "../registry/loader.js";
7
+ import { installPlugin } from "../installer/plugin-installer.js";
8
+ import { installTemplate } from "../installer/template-installer.js";
9
+ import { logger } from "../utils/logger.js";
10
+ import { getBundlesPath, isNpmMode } from "../utils/paths.js";
11
+ import { downloadPackage } from "../download/client.js";
12
+ import { loadLicenseStore } from "../license/license-store.js";
13
+ export const bundleCommand = new Command("install-bundle")
14
+ .description("Install a bundle of skill packages")
15
+ .argument("<bundle>", "Bundle name (e.g., devflow-complete)")
16
+ .option("--as-plugin", "Install all as plugin")
17
+ .option("--as-template", "Install all as template")
18
+ .option("-d, --dir <dir>", "Target project directory", process.cwd())
19
+ .action(async (bundleName, opts) => {
20
+ const bundlePath = join(getBundlesPath(), `${bundleName}.json`);
21
+ if (!(await fse.pathExists(bundlePath))) {
22
+ logger.error(`Bundle "${bundleName}" not found.`);
23
+ process.exit(1);
24
+ }
25
+ const bundle = await fse.readJson(bundlePath);
26
+ const mode = opts.asTemplate ? "template" : "plugin";
27
+ console.log(chalk.bold(`\nInstalling bundle: ${bundle.displayName}\n`));
28
+ console.log(chalk.dim(`Packages: ${bundle.packages.join(", ")}`));
29
+ console.log(chalk.dim(`Mode: ${mode}\n`));
30
+ for (const pkgName of bundle.packages) {
31
+ const name = pkgName.replace("@skillstore/", "");
32
+ const pkg = await getPackage(pkgName);
33
+ if (!pkg) {
34
+ logger.warn(`Package ${pkgName} not found, skipping.`);
35
+ continue;
36
+ }
37
+ // Download from Supabase if in npm mode
38
+ let sourceDir;
39
+ if (isNpmMode()) {
40
+ const store = await loadLicenseStore();
41
+ if (store.licenses.length > 0) {
42
+ const license = store.licenses.find((l) => l.tier === "BUNDLE") ||
43
+ store.licenses[0];
44
+ const spinner = ora(`Downloading ${name}...`).start();
45
+ try {
46
+ sourceDir = await downloadPackage(name, pkg.version, license.key);
47
+ spinner.succeed(`Downloaded ${name}`);
48
+ }
49
+ catch (err) {
50
+ spinner.fail(`Download failed: ${err.message}`);
51
+ continue;
52
+ }
53
+ }
54
+ }
55
+ const result = mode === "plugin"
56
+ ? await installPlugin(name, opts.dir, sourceDir)
57
+ : await installTemplate(name, opts.dir, sourceDir);
58
+ if (result.success) {
59
+ logger.success(`${pkg.displayName}: ${result.message}`);
60
+ }
61
+ }
62
+ console.log(chalk.bold.green("\nBundle installation complete!\n"));
63
+ });
64
+ //# sourceMappingURL=bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/commands/bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,GAAG,MAAM,UAAU,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAU/D,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KACvD,WAAW,CAAC,oCAAoC,CAAC;KACjD,QAAQ,CAAC,UAAU,EAAE,sCAAsC,CAAC;KAC5D,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;KAClD,MAAM,CAAC,iBAAiB,EAAE,0BAA0B,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,UAAkB,EAAE,IAAI,EAAE,EAAE;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;IAEhE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,WAAW,UAAU,cAAc,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAqB,MAAM,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAChE,MAAM,IAAI,GAA0B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;QAEtC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,uBAAuB,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QAED,wCAAwC;QACxC,IAAI,SAA6B,CAAC;QAClC,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,MAAM,gBAAgB,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,OAAO,GACX,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;oBAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAEpB,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,SAAS,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClE,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,oBAAqB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC3D,SAAS;gBACX,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GACV,IAAI,KAAK,QAAQ;YACf,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;YAChD,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEvD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const installCommand: Command;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,eAAO,MAAM,cAAc,SA4HvB,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { getPackage } from "../registry/loader.js";
5
+ import { installPlugin } from "../installer/plugin-installer.js";
6
+ import { installTemplate } from "../installer/template-installer.js";
7
+ import { addInstalledPackage } from "../utils/config.js";
8
+ import { logger } from "../utils/logger.js";
9
+ import { checkPackageAccess } from "../license/validator.js";
10
+ import { isNpmMode } from "../utils/paths.js";
11
+ import { downloadPackage } from "../download/client.js";
12
+ import { loadLicenseStore } from "../license/license-store.js";
13
+ export const installCommand = new Command("install")
14
+ .description("Install a skill package into your project")
15
+ .argument("<package>", "Package name (e.g., devflow-presale)")
16
+ .option("--as-plugin", "Install as plugin (skills + commands only)")
17
+ .option("--as-template", "Install as template (agents + skills + commands + workflows)")
18
+ .option("--free-only", "Install only free skills (no license required)")
19
+ .option("-d, --dir <dir>", "Target project directory", process.cwd())
20
+ .action(async (packageName, opts) => {
21
+ // Normalize package name
22
+ const name = packageName.replace("@skillstore/", "");
23
+ const pkg = await getPackage(`@skillstore/${name}`);
24
+ if (!pkg) {
25
+ logger.error(`Package "${name}" not found. Run 'skillstore list' to see available packages.`);
26
+ process.exit(1);
27
+ }
28
+ // License check
29
+ const access = await checkPackageAccess(pkg.name, pkg.skills.map((s) => s.name), pkg.freeSkills || []);
30
+ if (!access.allowed && !opts.freeOnly) {
31
+ console.log(chalk.red(`\n License required for ${chalk.bold(pkg.displayName)}\n`));
32
+ if (access.blockedSkills.length > 0) {
33
+ console.log(chalk.yellow(" Blocked skills:"));
34
+ for (const skill of access.blockedSkills) {
35
+ console.log(chalk.yellow(` - ${skill}`));
36
+ }
37
+ }
38
+ if (access.freeSkillsAvailable.length > 0) {
39
+ console.log(chalk.green("\n Free skills available:"));
40
+ for (const skill of access.freeSkillsAvailable) {
41
+ console.log(chalk.green(` - ${skill}`));
42
+ }
43
+ }
44
+ console.log(chalk.cyan(`\n Price: $${pkg.price.single} ${pkg.price.currency} | Activate: skillstore activate <license-key>`));
45
+ console.log(chalk.dim(` Or install free only: skillstore install ${name} --free-only\n`));
46
+ process.exit(1);
47
+ }
48
+ if (opts.freeOnly) {
49
+ logger.info(chalk.yellow("Installing free skills only (--free-only mode)"));
50
+ if (access.freeSkillsAvailable.length > 0) {
51
+ console.log(chalk.dim(" Free skills: " + access.freeSkillsAvailable.join(", ")));
52
+ }
53
+ }
54
+ // Default to plugin mode
55
+ const mode = opts.asTemplate ? "template" : "plugin";
56
+ // Download paid package from Supabase if in npm mode
57
+ let sourceDir;
58
+ if (isNpmMode() && !opts.freeOnly) {
59
+ const store = await loadLicenseStore();
60
+ if (store.licenses.length === 0) {
61
+ logger.error("No license found. Run: skillstore activate <license-key>");
62
+ process.exit(1);
63
+ }
64
+ // Use highest tier license
65
+ const license = store.licenses.find((l) => l.tier === "BUNDLE") ||
66
+ store.licenses[0];
67
+ const spinner = ora("Downloading package...").start();
68
+ try {
69
+ sourceDir = await downloadPackage(name, pkg.version, license.key);
70
+ spinner.succeed("Package downloaded");
71
+ }
72
+ catch (err) {
73
+ spinner.fail(`Download failed: ${err.message}`);
74
+ logger.error("Check your internet connection and license key.");
75
+ process.exit(1);
76
+ }
77
+ }
78
+ logger.info(`Installing ${chalk.bold(pkg.displayName)} as ${chalk.cyan(mode)}...`);
79
+ const result = mode === "plugin"
80
+ ? await installPlugin(name, opts.dir, sourceDir)
81
+ : await installTemplate(name, opts.dir, sourceDir);
82
+ if (result.success) {
83
+ logger.success(result.message);
84
+ await addInstalledPackage({
85
+ name: pkg.name,
86
+ version: pkg.version,
87
+ mode,
88
+ installedAt: new Date().toISOString(),
89
+ projectDir: opts.dir,
90
+ });
91
+ console.log(chalk.dim(`\nInstalled to: ${opts.dir}/.claude/`));
92
+ console.log(chalk.dim("Open Claude Code in this project to start using the skills.\n"));
93
+ }
94
+ else {
95
+ logger.error("Installation failed.");
96
+ process.exit(1);
97
+ }
98
+ });
99
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const listCommand: Command;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,eAAO,MAAM,WAAW,SA+CpB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import { loadRegistry, getPackagesByCategory } from "../registry/loader.js";
4
+ export const listCommand = new Command("list")
5
+ .description("List all available skill packages")
6
+ .option("-c, --category <category>", "Filter by category")
7
+ .action(async (opts) => {
8
+ const { packages, categories } = await loadRegistry();
9
+ const filtered = opts.category
10
+ ? await getPackagesByCategory(opts.category)
11
+ : packages;
12
+ if (filtered.length === 0) {
13
+ console.log(chalk.yellow("No packages found."));
14
+ return;
15
+ }
16
+ console.log(chalk.bold("\n📦 SkillStore Packages\n"));
17
+ for (const pkg of filtered) {
18
+ const cat = categories.find((c) => c.id === pkg.category);
19
+ console.log(chalk.bold.cyan(pkg.displayName) +
20
+ chalk.dim(` (${pkg.name}) v${pkg.version}`));
21
+ console.log(` ${pkg.description}`);
22
+ console.log(chalk.dim(` Category: ${cat?.name ?? pkg.category}`) +
23
+ chalk.dim(` | Skills: ${pkg.skills.length}`) +
24
+ chalk.dim(` | Price: $${pkg.price.single} ${pkg.price.currency}`));
25
+ console.log(chalk.dim(" Free preview: ") +
26
+ chalk.green(pkg.freeSkills.join(", ")));
27
+ console.log(chalk.dim(" Skills:"));
28
+ for (const skill of pkg.skills) {
29
+ const isFree = pkg.freeSkills.includes(skill.name);
30
+ const tag = isFree ? chalk.green(" [FREE]") : "";
31
+ console.log(` - ${skill.name}${tag}: ${skill.description}`);
32
+ }
33
+ console.log();
34
+ }
35
+ console.log(chalk.dim(`Total: ${filtered.length} package(s), ${filtered.reduce((sum, p) => sum + p.skills.length, 0)} skill(s)\n`));
36
+ });
37
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,aAAa,SA8BtB,CAAC"}