@substrate-kit/cli 0.1.0 → 0.1.2

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 (41) hide show
  1. package/.claude-plugin/plugin.json +9 -0
  2. package/README.md +33 -0
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +3 -22
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/add.d.ts.map +1 -1
  7. package/dist/commands/add.js +9 -6
  8. package/dist/commands/add.js.map +1 -1
  9. package/dist/commands/create.d.ts +2 -2
  10. package/dist/commands/create.d.ts.map +1 -1
  11. package/dist/commands/create.js +22 -409
  12. package/dist/commands/create.js.map +1 -1
  13. package/dist/commands/docs.js +1 -1
  14. package/dist/commands/docs.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +30 -2
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/mcp/server.js +1 -1
  19. package/dist/mcp/tools/install.d.ts.map +1 -1
  20. package/dist/mcp/tools/install.js +4 -6
  21. package/dist/mcp/tools/install.js.map +1 -1
  22. package/dist/mcp/tools/search.js +1 -1
  23. package/dist/mcp/tools/search.js.map +1 -1
  24. package/dist/utils/shadcn.d.ts +7 -0
  25. package/dist/utils/shadcn.d.ts.map +1 -0
  26. package/dist/utils/shadcn.js +16 -0
  27. package/dist/utils/shadcn.js.map +1 -0
  28. package/package.json +38 -35
  29. package/registry.json +1986 -0
  30. package/skills/3d-scene/SKILL.md +6 -0
  31. package/skills/animation/SKILL.md +6 -0
  32. package/skills/canvas-2d/SKILL.md +7 -1
  33. package/skills/composing-panels/SKILL.md +14 -8
  34. package/skills/create-custom-tool/SKILL.md +6 -0
  35. package/skills/data-visualisation/SKILL.md +6 -0
  36. package/skills/image-generation/SKILL.md +6 -0
  37. package/skills/install-components/SKILL.md +199 -0
  38. package/skills/scaffold-playground/SKILL.md +12 -6
  39. package/skills/substrate-controls/SKILL.md +1 -3
  40. package/skills/theming/SKILL.md +6 -0
  41. package/skills/wire-interactions/SKILL.md +6 -0
@@ -1,414 +1,27 @@
1
- import { join } from "node:path";
2
- import chalk from "chalk";
3
- import { exists, ensureDir, writeFile } from "../utils/fs.js";
4
- import { exec, execSilent } from "../utils/shell.js";
1
+ import { spawnSync } from "node:child_process";
5
2
  import { log } from "../utils/logger.js";
6
- import { detectPackageManager, getInstallCommand, } from "../utils/detect-pm.js";
7
- import { init } from "./init.js";
8
- function printBanner() {
9
- const banner = [
10
- "┌──────────────────────────────────┐",
11
- "│ ▓▓▓ substrate ▓▓▓ │",
12
- "│ creative app framework │",
13
- "└──────────────────────────────────┘",
14
- ];
15
- console.log();
16
- for (const line of banner) {
17
- console.log(chalk.bold(` ${line}`));
18
- }
19
- console.log();
20
- }
21
- const REGISTRY_BASE = "https://substrate.georgedrury.co.uk/r";
22
- const CORE_COMPONENTS = [
23
- "design-canvas",
24
- "toolbar",
25
- "panel",
26
- "pane",
27
- "action",
28
- "slider",
29
- ];
30
- export async function create(projectName, options = {}) {
31
- const { skipInstall = false, skipGit = false, packageManager } = options;
32
- const projectDir = join(process.cwd(), projectName);
33
- if (exists(projectDir)) {
34
- log.error(`Directory "${projectName}" already exists`);
3
+ // create-substrate owns the project templates; this command only forwards to
4
+ // it. SUBSTRATE_CREATE_BIN points at a local build of it for testing.
5
+ export function create(projectName, options = {}) {
6
+ const args = [];
7
+ if (projectName)
8
+ args.push(projectName);
9
+ if (options.surface)
10
+ args.push("--surface", options.surface);
11
+ if (options.packageManager)
12
+ args.push("--pm", options.packageManager);
13
+ if (options.skipInstall)
14
+ args.push("--skip-install");
15
+ if (options.skipGit)
16
+ args.push("--skip-git");
17
+ const localBin = process.env.SUBSTRATE_CREATE_BIN;
18
+ const result = localBin
19
+ ? spawnSync("node", [localBin, ...args], { stdio: "inherit" })
20
+ : spawnSync("npx", ["--yes", "create-substrate@latest", ...args], { stdio: "inherit" });
21
+ if (result.error) {
22
+ log.error(`Could not run create-substrate: ${result.error.message}`);
35
23
  process.exit(1);
36
24
  }
37
- printBanner();
38
- log.title(`Creating Substrate playground: ${projectName}`);
39
- // 1. Create project directory
40
- ensureDir(projectDir);
41
- // 2. Write template files
42
- log.step("Scaffolding project files...");
43
- // package.json
44
- writeFile(join(projectDir, "package.json"), packageJson(projectName));
45
- // tsconfig.json
46
- writeFile(join(projectDir, "tsconfig.json"), tsconfig());
47
- // next.config.ts
48
- writeFile(join(projectDir, "next.config.ts"), nextConfig());
49
- // postcss.config.mjs
50
- writeFile(join(projectDir, "postcss.config.mjs"), postcssConfig());
51
- // .gitignore
52
- writeFile(join(projectDir, ".gitignore"), gitignore());
53
- // app/globals.css
54
- writeFile(join(projectDir, "app/globals.css"), globalsCss());
55
- // app/layout.tsx
56
- writeFile(join(projectDir, "app/layout.tsx"), rootLayout(projectName));
57
- // app/page.tsx (playground page)
58
- writeFile(join(projectDir, "app/page.tsx"), playgroundPage());
59
- // lib/utils.ts
60
- writeFile(join(projectDir, "lib/utils.ts"), utilsTs());
61
- log.success("Project files created");
62
- // 3. Install dependencies
63
- if (!skipInstall) {
64
- const pm = packageManager ?? detectPackageManager(projectDir);
65
- log.step(`Installing dependencies with ${pm}...`);
66
- exec(getInstallCommand(pm), { cwd: projectDir });
67
- log.success("Dependencies installed");
68
- // 4. Install core Substrate components
69
- log.step("Installing Substrate components...");
70
- for (const component of CORE_COMPONENTS) {
71
- const url = `${REGISTRY_BASE}/${component}`;
72
- try {
73
- exec(`npx shadcn@latest add ${url}`, { cwd: projectDir });
74
- log.step(` ${component}`);
75
- }
76
- catch {
77
- log.warn(` Failed to install ${component} — you can add it later with: substrate add ${component}`);
78
- }
79
- }
80
- log.success("Substrate components installed");
81
- }
82
- else {
83
- log.warn("Skipping dependency installation (--skip-install)");
84
- }
85
- // 5. Run init to install skills and CLAUDE.md
86
- const originalCwd = process.cwd();
87
- process.chdir(projectDir);
88
- await init({ force: true, skipComponentsJson: true });
89
- process.chdir(originalCwd);
90
- // 6. Initialise git
91
- if (!skipGit) {
92
- log.step("Initialising git repository...");
93
- execSilent("git init", projectDir);
94
- execSilent("git add -A", projectDir);
95
- execSilent('git commit -m "Initial commit from substrate create"', projectDir);
96
- log.success("Git repository initialised");
97
- }
98
- // Done
99
- log.title("Your Substrate playground is ready");
100
- log.info(` cd ${projectName}`);
101
- log.info(" npm run dev");
102
- log.blank();
103
- log.info("Open the project in Claude Code or Cowork to start building with Substrate skills.");
104
- log.blank();
105
- }
106
- function packageJson(name) {
107
- return JSON.stringify({
108
- name,
109
- version: "0.1.0",
110
- private: true,
111
- scripts: {
112
- dev: "next dev",
113
- build: "next build",
114
- start: "next start",
115
- lint: "eslint",
116
- },
117
- dependencies: {
118
- next: "^15.5.0",
119
- react: "^19.1.0",
120
- "react-dom": "^19.1.0",
121
- "class-variance-authority": "^0.7.1",
122
- clsx: "^2.1.1",
123
- "tailwind-merge": "^3.3.1",
124
- "@remixicon/react": "^4.9.0",
125
- "radix-ui": "^1.4.3",
126
- "react-colorful": "^5.6.1",
127
- zustand: "^5.0.12",
128
- },
129
- devDependencies: {
130
- typescript: "^5",
131
- "@types/node": "^20",
132
- "@types/react": "^19",
133
- "@types/react-dom": "^19",
134
- tailwindcss: "^4",
135
- "@tailwindcss/postcss": "^4",
136
- "tw-animate-css": "^1.4.0",
137
- eslint: "^9",
138
- "eslint-config-next": "^15.5.0",
139
- },
140
- }, null, 2);
141
- }
142
- function tsconfig() {
143
- return JSON.stringify({
144
- compilerOptions: {
145
- target: "ES2017",
146
- lib: ["dom", "dom.iterable", "esnext"],
147
- allowJs: true,
148
- skipLibCheck: true,
149
- strict: true,
150
- noEmit: true,
151
- esModuleInterop: true,
152
- module: "esnext",
153
- moduleResolution: "bundler",
154
- resolveJsonModule: true,
155
- isolatedModules: true,
156
- jsx: "preserve",
157
- incremental: true,
158
- plugins: [{ name: "next" }],
159
- paths: {
160
- "@/*": ["./*"],
161
- },
162
- },
163
- include: ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
164
- exclude: ["node_modules"],
165
- }, null, 2);
166
- }
167
- function nextConfig() {
168
- return `import type { NextConfig } from "next"
169
-
170
- const nextConfig: NextConfig = {}
171
-
172
- export default nextConfig
173
- `;
174
- }
175
- function postcssConfig() {
176
- return `/** @type {import('postcss-load-config').Config} */
177
- const config = {
178
- plugins: {
179
- "@tailwindcss/postcss": {},
180
- },
181
- }
182
-
183
- export default config
184
- `;
185
- }
186
- function gitignore() {
187
- return `node_modules/
188
- .next/
189
- out/
190
- build/
191
- .DS_Store
192
- *.pem
193
- .env
194
- .env*.local
195
- *.tsbuildinfo
196
- next-env.d.ts
197
- `;
198
- }
199
- function globalsCss() {
200
- return `@import "tailwindcss";
201
- @import "tw-animate-css";
202
-
203
- @theme inline {
204
- --color-background: var(--background);
205
- --color-foreground: var(--foreground);
206
- --color-card: var(--card);
207
- --color-card-foreground: var(--card-foreground);
208
- --color-popover: var(--popover);
209
- --color-popover-foreground: var(--popover-foreground);
210
- --color-primary: var(--primary);
211
- --color-primary-foreground: var(--primary-foreground);
212
- --color-secondary: var(--secondary);
213
- --color-secondary-foreground: var(--secondary-foreground);
214
- --color-muted: var(--muted);
215
- --color-muted-foreground: var(--muted-foreground);
216
- --color-accent: var(--accent);
217
- --color-accent-foreground: var(--accent-foreground);
218
- --color-destructive: var(--destructive);
219
- --color-border: var(--border);
220
- --color-input: var(--input);
221
- --color-ring: var(--ring);
222
- --radius-sm: calc(var(--radius) - 4px);
223
- --radius-md: calc(var(--radius) - 2px);
224
- --radius-lg: var(--radius);
225
- --radius-xl: calc(var(--radius) + 4px);
226
- /* Substrate */
227
- --color-canvas: var(--canvas, var(--color-background));
228
- --color-canvas-foreground: var(--canvas-foreground, var(--color-foreground-muted));
229
- --color-panel: var(--panel, var(--color-card));
230
- --color-panel-foreground: var(--panel-foreground, var(--color-card-foreground));
231
- /* Substrate — Timeline */
232
- --color-timeline-playhead: var(--timeline-playhead, var(--color-destructive));
233
- --color-timeline-keyframe: var(--timeline-keyframe, var(--color-muted-foreground));
234
- --color-timeline-track: var(--timeline-track, var(--color-panel));
235
- /* Substrate — Gallery */
236
- --color-gallery-selection: var(--gallery-selection, var(--color-primary));
237
- /* Substrate — Easing */
238
- --color-easing-curve: var(--easing-curve, var(--color-primary));
239
- --color-easing-handle: var(--easing-handle, var(--color-primary));
240
- }
241
-
242
- :root {
243
- --background: oklch(1 0 0);
244
- --foreground: oklch(0.145 0 0);
245
- --card: oklch(1 0 0);
246
- --card-foreground: oklch(0.145 0 0);
247
- --popover: oklch(1 0 0);
248
- --popover-foreground: oklch(0.145 0 0);
249
- --primary: oklch(0.205 0 0);
250
- --primary-foreground: oklch(0.985 0 0);
251
- --secondary: oklch(0.97 0 0);
252
- --secondary-foreground: oklch(0.205 0 0);
253
- --muted: oklch(0.97 0 0);
254
- --muted-foreground: oklch(0.556 0 0);
255
- --accent: oklch(0.97 0 0);
256
- --accent-foreground: oklch(0.205 0 0);
257
- --destructive: oklch(0.577 0.245 27.325);
258
- --border: oklch(0.922 0 0);
259
- --input: oklch(0.922 0 0);
260
- --ring: oklch(0.708 0 0);
261
- --radius: 0.625rem;
262
- /* Substrate */
263
- --canvas: oklch(.97 0.0 0);
264
- --canvas-foreground: oklch(0.556 0 0);
265
- --panel: oklch(1 0 0);
266
- --panel-foreground: oklch(0.145 0 0);
267
- }
268
-
269
- .dark {
270
- --background: oklch(0.145 0 0);
271
- --foreground: oklch(0.985 0 0);
272
- --card: oklch(0.205 0 0);
273
- --card-foreground: oklch(0.985 0 0);
274
- --popover: oklch(0.205 0 0);
275
- --popover-foreground: oklch(0.985 0 0);
276
- --primary: oklch(0.985 0 0);
277
- --primary-foreground: oklch(0.205 0 0);
278
- --secondary: oklch(0.269 0 0);
279
- --secondary-foreground: oklch(0.985 0 0);
280
- --muted: oklch(0.269 0 0);
281
- --muted-foreground: oklch(0.708 0 0);
282
- --accent: oklch(0.269 0 0);
283
- --accent-foreground: oklch(0.985 0 0);
284
- --destructive: oklch(0.577 0.245 27.325);
285
- --border: oklch(1 0 0 / 10%);
286
- --input: oklch(1 0 0 / 15%);
287
- --ring: oklch(0.556 0 0);
288
- /* Substrate */
289
- --canvas: oklch(17.764% 0.00002 271.152);
290
- --canvas-foreground: oklch(0.708 0 0);
291
- --panel: oklch(0.205 0 0);
292
- --panel-foreground: oklch(0.985 0 0);
293
- }
294
-
295
- @layer base {
296
- * {
297
- @apply border-border;
298
- }
299
- body {
300
- @apply bg-background text-foreground;
301
- }
302
- }
303
- `;
304
- }
305
- function rootLayout(projectName) {
306
- return `import type { Metadata } from "next"
307
- import "./globals.css"
308
-
309
- export const metadata: Metadata = {
310
- title: "${projectName}",
311
- description: "Built with Substrate",
312
- }
313
-
314
- export default function RootLayout({
315
- children,
316
- }: {
317
- children: React.ReactNode
318
- }) {
319
- return (
320
- <html lang="en">
321
- <body className="antialiased">{children}</body>
322
- </html>
323
- )
324
- }
325
- `;
326
- }
327
- function playgroundPage() {
328
- return `"use client"
329
-
330
- import { DesignCanvas } from "@/components/substrate/design-canvas"
331
- import {
332
- Toolbar,
333
- ToolbarToggleGroup,
334
- ToolbarToggle,
335
- ToolbarSeparator,
336
- } from "@/components/substrate/toolbar"
337
- import { Panel } from "@/components/substrate/panel"
338
- import { useToolStore } from "@/stores/tool-store"
339
- import { usePanelStore } from "@/stores/panel-store"
340
- import {
341
- RiCursorLine,
342
- RiHand,
343
- RiSquareLine,
344
- RiCircleLine,
345
- RiSubtractLine,
346
- RiText,
347
- RiArtboard2Line,
348
- } from "@remixicon/react"
349
-
350
- export default function PlaygroundPage() {
351
- const activeTool = useToolStore((s) => s.activeTool)
352
- const setTool = useToolStore((s) => s.setTool)
353
- const leftPanel = usePanelStore((s) => s.leftPanel)
354
- const rightPanel = usePanelStore((s) => s.rightPanel)
355
-
356
- return (
357
- <div className="h-screen w-screen">
358
- {leftPanel && (
359
- <Panel position="left">
360
- {/* Add layer panel here */}
361
- </Panel>
362
- )}
363
-
364
- <DesignCanvas />
365
-
366
- {rightPanel && (
367
- <Panel position="right">
368
- {/* Add properties panel here */}
369
- </Panel>
370
- )}
371
-
372
- <Toolbar>
373
- <ToolbarToggleGroup value={activeTool} onValueChange={setTool}>
374
- <ToolbarToggle value="select" tooltip="Select" shortcut="V">
375
- <RiCursorLine className="size-4" />
376
- </ToolbarToggle>
377
- <ToolbarToggle value="hand" tooltip="Hand" shortcut="H">
378
- <RiHand className="size-4" />
379
- </ToolbarToggle>
380
-
381
- <ToolbarSeparator />
382
-
383
- <ToolbarToggle value="rectangle" tooltip="Rectangle" shortcut="R">
384
- <RiSquareLine className="size-4" />
385
- </ToolbarToggle>
386
- <ToolbarToggle value="ellipse" tooltip="Ellipse" shortcut="O">
387
- <RiCircleLine className="size-4" />
388
- </ToolbarToggle>
389
- <ToolbarToggle value="line" tooltip="Line" shortcut="L">
390
- <RiSubtractLine className="size-4" />
391
- </ToolbarToggle>
392
- <ToolbarToggle value="text" tooltip="Text" shortcut="T">
393
- <RiText className="size-4" />
394
- </ToolbarToggle>
395
- <ToolbarToggle value="frame" tooltip="Frame" shortcut="F">
396
- <RiArtboard2Line className="size-4" />
397
- </ToolbarToggle>
398
- </ToolbarToggleGroup>
399
- </Toolbar>
400
- </div>
401
- )
402
- }
403
- `;
404
- }
405
- function utilsTs() {
406
- return `import { clsx, type ClassValue } from "clsx"
407
- import { twMerge } from "tailwind-merge"
408
-
409
- export function cn(...inputs: ClassValue[]) {
410
- return twMerge(clsx(inputs))
411
- }
412
- `;
25
+ process.exit(result.status ?? 1);
413
26
  }
414
27
  //# sourceMappingURL=create.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAUxC,6EAA6E;AAC7E,sEAAsE;AACtE,MAAM,UAAU,MAAM,CAAC,WAA+B,EAAE,UAAyB,EAAE;IAClF,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvC,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,IAAI,OAAO,CAAC,cAAc;QAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IACrE,IAAI,OAAO,CAAC,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACpD,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAE5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;IACjD,MAAM,MAAM,GAAG,QAAQ;QACtB,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC9D,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAExF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;AACjC,CAAC"}
@@ -79,7 +79,7 @@ function formatComponent(item) {
79
79
  }
80
80
  console.log();
81
81
  console.log(" Install:");
82
- console.log(` substrate add ${item.name}`);
82
+ console.log(` npx substrate-kit add ${item.name}`);
83
83
  console.log();
84
84
  console.log(" Docs:");
85
85
  console.log(` ${DOCS_BASE}/${item.name}`);
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/commands/docs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAoED,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgFnE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAiFD,wBAAsB,IAAI,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FnE"}
@@ -1,6 +1,9 @@
1
+ import { readFileSync } from "node:fs";
1
2
  import { join } from "node:path";
2
3
  import { copyDir, exists, writeFile, resolveSkillsDir, listDirs, } from "../utils/fs.js";
3
4
  import { log } from "../utils/logger.js";
5
+ const CLI_PACKAGE = "@substrate-kit/cli";
6
+ const CLI_RANGE = "^0.1.2";
4
7
  function claudeMd() {
5
8
  return `# Substrate
6
9
 
@@ -15,6 +18,7 @@ Substrate skills are installed in \`.claude/skills/\`. They are organised into t
15
18
  - **scaffold-playground** — bootstrapping a new playground
16
19
  - **canvas-2d** / **3d-scene** / **animation** / **image-generation** / **data-visualisation** — surface-specific architecture
17
20
  - **composing-panels** / **wire-interactions** / **create-custom-tool** / **theming** — workflow guides
21
+ - **install-components** — full catalogue of available components + how to install via \`substrate-kit add\`
18
22
 
19
23
  ### Component reference (what to use)
20
24
 
@@ -27,23 +31,30 @@ Substrate skills are installed in \`.claude/skills/\`. They are organised into t
27
31
 
28
32
  ## Install components
29
33
 
34
+ **Always prefer existing Substrate components over writing custom ones.** Substrate ships sliders, number inputs, toggles, colour pickers, context menus, command palettes, toolbars, panels, timelines, and more — see the \`install-components\` skill for the full catalogue.
35
+
30
36
  \`\`\`bash
31
37
  # Core scaffold
32
38
  npx substrate-kit add design-canvas toolbar panel pane action slider
33
39
 
34
40
  # Surface components
35
41
  npx substrate-kit add surface timeline gallery colour-picker easing-curve-editor
42
+
43
+ # Interactive picker (no args)
44
+ npx substrate-kit add
36
45
  \`\`\`
37
46
 
47
+ Do **not** run \`npx shadcn@latest add\` directly for Substrate components — always go through \`substrate-kit add\`.
48
+
38
49
  ## Registry
39
50
 
40
- Components are installed from \`substrate.georgedrury.co.uk/r/\` via the shadcn CLI.
51
+ Components are installed from \`substrate.georgedrury.co.uk/r/\` via the Substrate CLI, which wraps shadcn under the hood.
41
52
  `;
42
53
  }
43
54
  function componentsJson() {
44
55
  return JSON.stringify({
45
56
  $schema: "https://ui.shadcn.com/schema.json",
46
- style: "new-york",
57
+ style: "radix-mira",
47
58
  rsc: true,
48
59
  tsx: true,
49
60
  tailwind: {
@@ -51,7 +62,9 @@ function componentsJson() {
51
62
  css: "app/globals.css",
52
63
  baseColor: "neutral",
53
64
  cssVariables: true,
65
+ prefix: "",
54
66
  },
67
+ iconLibrary: "remixicon",
55
68
  aliases: {
56
69
  components: "@/components",
57
70
  utils: "@/lib/utils",
@@ -59,6 +72,9 @@ function componentsJson() {
59
72
  lib: "@/lib",
60
73
  hooks: "@/hooks",
61
74
  },
75
+ registries: {
76
+ "@substrate": "https://substrate.georgedrury.co.uk/r/{name}",
77
+ },
62
78
  }, null, 2);
63
79
  }
64
80
  export async function init(options = {}) {
@@ -128,6 +144,18 @@ export async function init(options = {}) {
128
144
  writeFile(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + "\n");
129
145
  log.success("Created .mcp.json (Substrate MCP server registered)");
130
146
  }
147
+ // 5. Add the CLI as a dev dependency so `npx substrate-kit` resolves locally
148
+ const packageJsonPath = join(cwd, "package.json");
149
+ if (exists(packageJsonPath)) {
150
+ const raw = readFileSync(packageJsonPath, "utf-8");
151
+ const pkg = JSON.parse(raw);
152
+ if (!pkg.dependencies?.[CLI_PACKAGE] && !pkg.devDependencies?.[CLI_PACKAGE]) {
153
+ pkg.devDependencies = { ...pkg.devDependencies, [CLI_PACKAGE]: CLI_RANGE };
154
+ const indent = raw.includes("\n\t") ? "\t" : 2;
155
+ writeFile(packageJsonPath, JSON.stringify(pkg, null, indent) + "\n");
156
+ log.success(`Added ${CLI_PACKAGE} to devDependencies (install to use npx substrate-kit)`);
157
+ }
158
+ }
131
159
  log.blank();
132
160
  log.info("Substrate is ready. Claude can now use the skills for creative app development.");
133
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EACN,OAAO,EACP,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,QAAQ,GACR,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAExC,MAAM,WAAW,GAAG,oBAAoB,CAAA;AACxC,MAAM,SAAS,GAAG,QAAQ,CAAA;AAa1B,SAAS,QAAQ;IAChB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CP,CAAA;AACD,CAAC;AAED,SAAS,cAAc;IACtB,OAAO,IAAI,CAAC,SAAS,CACpB;QACC,OAAO,EAAE,mCAAmC;QAC5C,KAAK,EAAE,YAAY;QACnB,GAAG,EAAE,IAAI;QACT,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE;YACT,MAAM,EAAE,EAAE;YACV,GAAG,EAAE,iBAAiB;YACtB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,EAAE;SACV;QACD,WAAW,EAAE,WAAW;QACxB,OAAO,EAAE;YACR,UAAU,EAAE,cAAc;YAC1B,KAAK,EAAE,aAAa;YACpB,EAAE,EAAE,iBAAiB;YACrB,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS;SAChB;QACD,UAAU,EAAE;YACX,YAAY,EAAE,8CAA8C;SAC5D;KACD,EACD,IAAI,EACJ,CAAC,CACD,CAAA;AACF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,UAAuB,EAAE;IACnD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,kBAAkB,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAE7D,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAEnC,iBAAiB;IACjB,MAAM,YAAY,GAAG,gBAAgB,EAAE,CAAA;IACvC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;IACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;IAEzC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,YAAY,GAAG,CAAC,CAAA;IAEpB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QACxC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,YAAY,EAAE,CAAA;YACd,SAAQ;QACT,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5C,WAAW,EAAE,CAAA;QACb,GAAG,CAAC,IAAI,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrB,GAAG,CAAC,OAAO,CAAC,aAAa,WAAW,SAAS,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CACP,WAAW,YAAY,kBAAkB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,6BAA6B,CACnG,CAAA;IACF,CAAC;IAED,wBAAwB;IACxB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;IAChE,CAAC;SAAM,CAAC;QACP,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAA;QACnC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IACjC,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;QACvD,IAAI,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACP,SAAS,CAAC,kBAAkB,EAAE,cAAc,EAAE,CAAC,CAAA;YAC/C,GAAG,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;QACvC,CAAC;IACF,CAAC;IAED,qBAAqB;IACrB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAA;IAChE,CAAC;SAAM,CAAC;QACP,MAAM,SAAS,GAAG;YACjB,UAAU,EAAE;gBACX,SAAS,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,CAAC;iBACzC;aACD;SACD,CAAA;QACD,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;QACjE,GAAG,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAA;IACnE,CAAC;IAED,6EAA6E;IAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACjD,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAA;QAC1C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,eAAe,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAA;YAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC9C,SAAS,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAA;YACpE,GAAG,CAAC,OAAO,CAAC,SAAS,WAAW,wDAAwD,CAAC,CAAA;QAC1F,CAAC;IACF,CAAC;IAED,GAAG,CAAC,KAAK,EAAE,CAAA;IACX,GAAG,CAAC,IAAI,CACP,iFAAiF,CACjF,CAAA;AACF,CAAC"}
@@ -11,7 +11,7 @@ export async function startServer() {
11
11
  const registry = await loadRegistry();
12
12
  const server = new McpServer({
13
13
  name: "substrate",
14
- version: "0.1.0",
14
+ version: "0.1.2",
15
15
  });
16
16
  server.tool("search_components", "Search the Substrate component registry by keyword, category, or description. Returns matching components with name, description, and category.", {
17
17
  query: z.string().optional().describe("Free-text search against component name, title, and description"),
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAI3C,wBAAsB,aAAa,CAClC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;GAuC9B"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAO3C,wBAAsB,aAAa,CAClC,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE;;;;;GAoC9B"}
@@ -1,5 +1,6 @@
1
- import { execSync } from "node:child_process";
2
- const REGISTRY_BASE = "https://substrate.georgedrury.co.uk/r";
1
+ import { shadcnAdd } from "../../utils/shadcn.js";
2
+ // SUBSTRATE_REGISTRY_URL points installs at a local registry for testing
3
+ const REGISTRY_BASE = process.env.SUBSTRATE_REGISTRY_URL ?? "https://substrate.georgedrury.co.uk/r";
3
4
  export async function handleInstall(registry, args) {
4
5
  const results = [];
5
6
  for (const name of args.components) {
@@ -14,10 +15,7 @@ export async function handleInstall(registry, args) {
14
15
  }
15
16
  const url = `${REGISTRY_BASE}/${name}`;
16
17
  try {
17
- execSync(`npx shadcn@latest add ${url}`, {
18
- encoding: "utf-8",
19
- stdio: "pipe",
20
- });
18
+ shadcnAdd(url, { silent: true });
21
19
  results.push({ name, status: "installed" });
22
20
  }
23
21
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/mcp/tools/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAG7C,MAAM,aAAa,GAAG,uCAAuC,CAAA;AAE7D,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,QAAkB,EAClB,IAA8B;IAE9B,MAAM,OAAO,GAA4D,EAAE,CAAA;IAE3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,cAAc,IAAI,mBAAmB;aAC5C,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,IAAI,EAAE,CAAA;QACtC,IAAI,CAAC;YACJ,QAAQ,CAAC,yBAAyB,GAAG,EAAE,EAAE;gBACxC,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,MAAM;aACb,CAAC,CAAA;YACF,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACvD,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACD;KACD,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/mcp/tools/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AAEjD,yEAAyE;AACzE,MAAM,aAAa,GAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,uCAAuC,CAAA;AAE9E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,QAAkB,EAClB,IAA8B;IAE9B,MAAM,OAAO,GAA4D,EAAE,CAAA;IAE3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,cAAc,IAAI,mBAAmB;aAC5C,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,aAAa,IAAI,IAAI,EAAE,CAAA;QACtC,IAAI,CAAC;YACJ,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC;gBACZ,IAAI;gBACJ,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACvD,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IAED,OAAO;QACN,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aACtC;SACD;KACD,CAAA;AACF,CAAC"}