grimoire-wizard 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +173 -18
- package/dist/cli.js +503 -97
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +107 -3
- package/dist/index.js +832 -367
- package/dist/index.js.map +1 -1
- package/examples/json/all-features.json +66 -0
- package/examples/json/appstore-screenshot-wizard.json +362 -0
- package/examples/json/appstore-upload.json +104 -0
- package/examples/json/basic.json +72 -0
- package/examples/json/batch-generate.json +186 -0
- package/examples/json/brief-builder.json +519 -0
- package/examples/json/conditional.json +155 -0
- package/examples/json/cost-analyzer.json +83 -0
- package/examples/json/demo.json +130 -0
- package/examples/json/scraper-selector.json +63 -0
- package/examples/json/themed-catppuccin.json +39 -0
- package/examples/json/themed.json +103 -0
- package/examples/json/with-checks.json +47 -0
- package/examples/yaml/appstore-screenshot-wizard.yaml +321 -0
- package/examples/yaml/appstore-upload.yaml +84 -0
- package/examples/yaml/batch-generate.yaml +156 -0
- package/examples/yaml/brief-builder.yaml +429 -0
- package/examples/yaml/cost-analyzer.yaml +69 -0
- package/examples/yaml/pipeline.yaml +35 -0
- package/examples/yaml/scraper-selector.yaml +52 -0
- package/examples/yaml/themed-catppuccin.yaml +31 -0
- package/package.json +5 -1
- /package/examples/{all-features.yaml → yaml/all-features.yaml} +0 -0
- /package/examples/{base.yaml → yaml/base.yaml} +0 -0
- /package/examples/{basic.yaml → yaml/basic.yaml} +0 -0
- /package/examples/{conditional.yaml → yaml/conditional.yaml} +0 -0
- /package/examples/{demo.yaml → yaml/demo.yaml} +0 -0
- /package/examples/{ebay-mcp-setup.yaml → yaml/ebay-mcp-setup.yaml} +0 -0
- /package/examples/{extended.yaml → yaml/extended.yaml} +0 -0
- /package/examples/{themed.yaml → yaml/themed.yaml} +0 -0
- /package/examples/{with-checks.yaml → yaml/with-checks.yaml} +0 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Full-Stack Project Wizard",
|
|
4
|
+
"description": "Set up a full-stack project with conditional framework selection"
|
|
5
|
+
},
|
|
6
|
+
"steps": [
|
|
7
|
+
{
|
|
8
|
+
"id": "project-name",
|
|
9
|
+
"type": "text",
|
|
10
|
+
"message": "Project name?",
|
|
11
|
+
"validate": [
|
|
12
|
+
{ "rule": "required" }
|
|
13
|
+
]
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "project-type",
|
|
17
|
+
"type": "select",
|
|
18
|
+
"message": "What type of project?",
|
|
19
|
+
"options": [
|
|
20
|
+
{ "value": "web", "label": "Web Application" },
|
|
21
|
+
{ "value": "api", "label": "REST API" },
|
|
22
|
+
{ "value": "cli", "label": "CLI Tool" },
|
|
23
|
+
{ "value": "lib", "label": "Library" }
|
|
24
|
+
],
|
|
25
|
+
"routes": {
|
|
26
|
+
"web": "web-framework",
|
|
27
|
+
"api": "api-framework",
|
|
28
|
+
"cli": "cli-features",
|
|
29
|
+
"lib": "lib-target"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "web-framework",
|
|
34
|
+
"type": "select",
|
|
35
|
+
"message": "Choose a web framework",
|
|
36
|
+
"options": [
|
|
37
|
+
{ "value": "nextjs", "label": "Next.js", "hint": "React SSR/SSG" },
|
|
38
|
+
{ "value": "astro", "label": "Astro", "hint": "Content-focused, multi-framework" },
|
|
39
|
+
{ "value": "sveltekit", "label": "SvelteKit", "hint": "Svelte with SSR" },
|
|
40
|
+
{ "value": "nuxt", "label": "Nuxt", "hint": "Vue SSR/SSG" }
|
|
41
|
+
],
|
|
42
|
+
"next": "styling"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "styling",
|
|
46
|
+
"type": "select",
|
|
47
|
+
"message": "CSS approach?",
|
|
48
|
+
"when": {
|
|
49
|
+
"any": [
|
|
50
|
+
{ "field": "web-framework", "equals": "nextjs" },
|
|
51
|
+
{ "field": "web-framework", "equals": "sveltekit" },
|
|
52
|
+
{ "field": "web-framework", "equals": "nuxt" },
|
|
53
|
+
{ "field": "web-framework", "equals": "astro" }
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"options": [
|
|
57
|
+
{ "value": "tailwind", "label": "Tailwind CSS" },
|
|
58
|
+
{ "value": "css-modules", "label": "CSS Modules" },
|
|
59
|
+
{ "value": "styled", "label": "Styled Components" },
|
|
60
|
+
{ "value": "vanilla", "label": "Vanilla CSS" }
|
|
61
|
+
],
|
|
62
|
+
"next": "database"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "api-framework",
|
|
66
|
+
"type": "select",
|
|
67
|
+
"message": "Choose an API framework",
|
|
68
|
+
"options": [
|
|
69
|
+
{ "value": "express", "label": "Express.js" },
|
|
70
|
+
{ "value": "fastify", "label": "Fastify" },
|
|
71
|
+
{ "value": "hono", "label": "Hono" },
|
|
72
|
+
{ "value": "elysia", "label": "Elysia (Bun)" }
|
|
73
|
+
],
|
|
74
|
+
"next": "database"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"id": "database",
|
|
78
|
+
"type": "select",
|
|
79
|
+
"message": "Database?",
|
|
80
|
+
"options": [
|
|
81
|
+
{ "value": "postgres", "label": "PostgreSQL" },
|
|
82
|
+
{ "value": "mysql", "label": "MySQL" },
|
|
83
|
+
{ "value": "sqlite", "label": "SQLite" },
|
|
84
|
+
{ "value": "mongodb", "label": "MongoDB" },
|
|
85
|
+
{ "value": "none", "label": "No database" }
|
|
86
|
+
],
|
|
87
|
+
"next": "auth"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "auth",
|
|
91
|
+
"type": "select",
|
|
92
|
+
"message": "Authentication?",
|
|
93
|
+
"when": {
|
|
94
|
+
"field": "database",
|
|
95
|
+
"notEquals": "none"
|
|
96
|
+
},
|
|
97
|
+
"options": [
|
|
98
|
+
{ "value": "jwt", "label": "JWT tokens" },
|
|
99
|
+
{ "value": "session", "label": "Session-based" },
|
|
100
|
+
{ "value": "oauth", "label": "OAuth 2.0" },
|
|
101
|
+
{ "value": "none", "label": "No auth" }
|
|
102
|
+
],
|
|
103
|
+
"next": "deploy"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"id": "cli-features",
|
|
107
|
+
"type": "multiselect",
|
|
108
|
+
"message": "CLI features to include",
|
|
109
|
+
"options": [
|
|
110
|
+
{ "value": "args", "label": "Argument parsing (Commander)" },
|
|
111
|
+
{ "value": "prompts", "label": "Interactive prompts" },
|
|
112
|
+
{ "value": "colors", "label": "Colored output (Chalk)" },
|
|
113
|
+
{ "value": "spinner", "label": "Spinners & progress bars" },
|
|
114
|
+
{ "value": "config", "label": "Config file support" }
|
|
115
|
+
],
|
|
116
|
+
"min": 1,
|
|
117
|
+
"next": "deploy"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "lib-target",
|
|
121
|
+
"type": "multiselect",
|
|
122
|
+
"message": "Build targets",
|
|
123
|
+
"options": [
|
|
124
|
+
{ "value": "esm", "label": "ESM" },
|
|
125
|
+
{ "value": "cjs", "label": "CommonJS" },
|
|
126
|
+
{ "value": "types", "label": "TypeScript declarations" },
|
|
127
|
+
{ "value": "umd", "label": "UMD (browser)" }
|
|
128
|
+
],
|
|
129
|
+
"default": ["esm", "types"],
|
|
130
|
+
"min": 1,
|
|
131
|
+
"next": "deploy"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"id": "deploy",
|
|
135
|
+
"type": "select",
|
|
136
|
+
"message": "Deployment target?",
|
|
137
|
+
"options": [
|
|
138
|
+
{ "value": "vercel", "label": "Vercel" },
|
|
139
|
+
{ "value": "aws", "label": "AWS" },
|
|
140
|
+
{ "value": "docker", "label": "Docker" },
|
|
141
|
+
{ "value": "npm", "label": "npm (publish)" },
|
|
142
|
+
{ "value": "none", "label": "None" }
|
|
143
|
+
]
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"id": "confirm",
|
|
147
|
+
"type": "confirm",
|
|
148
|
+
"message": "Generate project?",
|
|
149
|
+
"next": "__done__"
|
|
150
|
+
}
|
|
151
|
+
],
|
|
152
|
+
"output": {
|
|
153
|
+
"format": "json"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Cost Analysis Report",
|
|
4
|
+
"description": "Configure and view AI generation cost analysis",
|
|
5
|
+
"version": "1.0.0"
|
|
6
|
+
},
|
|
7
|
+
"theme": {
|
|
8
|
+
"preset": "tokyonight"
|
|
9
|
+
},
|
|
10
|
+
"steps": [
|
|
11
|
+
{
|
|
12
|
+
"id": "report-type",
|
|
13
|
+
"type": "select",
|
|
14
|
+
"group": "Report Type",
|
|
15
|
+
"message": "What kind of cost report?",
|
|
16
|
+
"options": [
|
|
17
|
+
{ "value": "full", "label": "Full Report", "hint": "Complete cost breakdown across all runs" },
|
|
18
|
+
{ "value": "today", "label": "Today's Costs", "hint": "Filter to today's runs only" },
|
|
19
|
+
{ "value": "since", "label": "Since Date", "hint": "Filter runs since a specific date" },
|
|
20
|
+
{ "value": "single-run", "label": "Single Run", "hint": "Inspect a specific run by ID" }
|
|
21
|
+
],
|
|
22
|
+
"default": "full"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "since-date",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"group": "Report Type",
|
|
28
|
+
"message": "Start date",
|
|
29
|
+
"placeholder": "YYYY-MM-DD",
|
|
30
|
+
"when": {
|
|
31
|
+
"field": "report-type",
|
|
32
|
+
"equals": "since"
|
|
33
|
+
},
|
|
34
|
+
"validate": [
|
|
35
|
+
{ "rule": "required" },
|
|
36
|
+
{ "rule": "pattern", "value": "^\\d{4}-\\d{2}-\\d{2}$", "message": "Must be in YYYY-MM-DD format" }
|
|
37
|
+
]
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "run-id",
|
|
41
|
+
"type": "text",
|
|
42
|
+
"group": "Report Type",
|
|
43
|
+
"message": "Run ID to inspect",
|
|
44
|
+
"when": {
|
|
45
|
+
"field": "report-type",
|
|
46
|
+
"equals": "single-run"
|
|
47
|
+
},
|
|
48
|
+
"validate": [
|
|
49
|
+
{ "rule": "required" }
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "output-format",
|
|
54
|
+
"type": "select",
|
|
55
|
+
"group": "Output Options",
|
|
56
|
+
"message": "Output format",
|
|
57
|
+
"options": [
|
|
58
|
+
{ "value": "interactive", "label": "Interactive", "hint": "Browse runs and inspect details" },
|
|
59
|
+
{ "value": "summary", "label": "Summary", "hint": "Cost analytics overview only" },
|
|
60
|
+
{ "value": "json", "label": "JSON", "hint": "Machine-readable JSON output" },
|
|
61
|
+
{ "value": "markdown", "label": "Markdown Report", "hint": "Save as docs/costs-report.md" }
|
|
62
|
+
],
|
|
63
|
+
"default": "interactive"
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "save-report",
|
|
67
|
+
"type": "confirm",
|
|
68
|
+
"group": "Output Options",
|
|
69
|
+
"message": "Save report to docs/costs-report.md?",
|
|
70
|
+
"default": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "confirm-analyze",
|
|
74
|
+
"type": "confirm",
|
|
75
|
+
"group": "Output Options",
|
|
76
|
+
"message": "Run cost analysis?",
|
|
77
|
+
"default": true
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"output": {
|
|
81
|
+
"format": "json"
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Grimoire Component Demo",
|
|
4
|
+
"description": "Showcasing all 10 step types, groups, and theming"
|
|
5
|
+
},
|
|
6
|
+
"theme": {
|
|
7
|
+
"tokens": {
|
|
8
|
+
"primary": "#89b4fa",
|
|
9
|
+
"success": "#a6e3a1",
|
|
10
|
+
"error": "#f38ba8",
|
|
11
|
+
"warning": "#fab387",
|
|
12
|
+
"info": "#74c7ec",
|
|
13
|
+
"muted": "#6c7086",
|
|
14
|
+
"accent": "#cba6f7"
|
|
15
|
+
},
|
|
16
|
+
"icons": {
|
|
17
|
+
"step": "\u25cf",
|
|
18
|
+
"stepDone": "\u2714",
|
|
19
|
+
"stepPending": "\u25cb",
|
|
20
|
+
"pointer": "\u276f"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"steps": [
|
|
24
|
+
{
|
|
25
|
+
"id": "name",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"group": "Text Inputs",
|
|
28
|
+
"message": "What is your name?",
|
|
29
|
+
"placeholder": "John Doe",
|
|
30
|
+
"validate": [
|
|
31
|
+
{ "rule": "required" },
|
|
32
|
+
{ "rule": "minLength", "value": 2 }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "bio",
|
|
37
|
+
"type": "editor",
|
|
38
|
+
"group": "Text Inputs",
|
|
39
|
+
"message": "Write a short bio (opens editor)",
|
|
40
|
+
"required": false
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "project-dir",
|
|
44
|
+
"type": "path",
|
|
45
|
+
"group": "Text Inputs",
|
|
46
|
+
"message": "Project directory",
|
|
47
|
+
"placeholder": "./my-project",
|
|
48
|
+
"default": "."
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "secret",
|
|
52
|
+
"type": "password",
|
|
53
|
+
"group": "Text Inputs",
|
|
54
|
+
"message": "Enter a secret key",
|
|
55
|
+
"validate": [
|
|
56
|
+
{ "rule": "minLength", "value": 4, "message": "At least 4 characters" }
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "framework",
|
|
61
|
+
"type": "select",
|
|
62
|
+
"group": "Selections",
|
|
63
|
+
"message": "Pick a framework",
|
|
64
|
+
"options": [
|
|
65
|
+
{ "value": "react", "label": "React" },
|
|
66
|
+
{ "value": "vue", "label": "Vue" },
|
|
67
|
+
{ "value": "svelte", "label": "Svelte" },
|
|
68
|
+
{ "value": "angular", "label": "Angular", "hint": "Enterprise-ready" }
|
|
69
|
+
]
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "tools",
|
|
73
|
+
"type": "multiselect",
|
|
74
|
+
"group": "Selections",
|
|
75
|
+
"message": "Choose your tools",
|
|
76
|
+
"options": [
|
|
77
|
+
{ "value": "eslint", "label": "ESLint", "hint": "Linting" },
|
|
78
|
+
{ "value": "prettier", "label": "Prettier", "hint": "Formatting" },
|
|
79
|
+
{ "value": "vitest", "label": "Vitest", "hint": "Testing" },
|
|
80
|
+
{ "value": "husky", "label": "Husky", "hint": "Git hooks" }
|
|
81
|
+
],
|
|
82
|
+
"min": 1,
|
|
83
|
+
"max": 3
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "language",
|
|
87
|
+
"type": "search",
|
|
88
|
+
"group": "Selections",
|
|
89
|
+
"message": "Search for a language",
|
|
90
|
+
"options": [
|
|
91
|
+
{ "value": "typescript", "label": "TypeScript" },
|
|
92
|
+
{ "value": "javascript", "label": "JavaScript" },
|
|
93
|
+
{ "value": "python", "label": "Python" },
|
|
94
|
+
{ "value": "go", "label": "Go" },
|
|
95
|
+
{ "value": "rust", "label": "Rust" },
|
|
96
|
+
{ "value": "java", "label": "Java" },
|
|
97
|
+
{ "value": "csharp", "label": "C#" },
|
|
98
|
+
{ "value": "ruby", "label": "Ruby" }
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"id": "dark-mode",
|
|
103
|
+
"type": "toggle",
|
|
104
|
+
"group": "Toggles & Numbers",
|
|
105
|
+
"message": "Enable dark mode?",
|
|
106
|
+
"active": "Dark",
|
|
107
|
+
"inactive": "Light",
|
|
108
|
+
"default": true
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "port",
|
|
112
|
+
"type": "number",
|
|
113
|
+
"group": "Toggles & Numbers",
|
|
114
|
+
"message": "Dev server port",
|
|
115
|
+
"default": 3000,
|
|
116
|
+
"min": 1024,
|
|
117
|
+
"max": 65535
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "proceed",
|
|
121
|
+
"type": "confirm",
|
|
122
|
+
"group": "Confirmation",
|
|
123
|
+
"message": "Proceed with these settings?",
|
|
124
|
+
"next": "__done__"
|
|
125
|
+
}
|
|
126
|
+
],
|
|
127
|
+
"output": {
|
|
128
|
+
"format": "json"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Web Scraper CLI",
|
|
4
|
+
"description": "Choose and run a web scraper for app store data collection",
|
|
5
|
+
"version": "1.0.0"
|
|
6
|
+
},
|
|
7
|
+
"theme": {
|
|
8
|
+
"preset": "catppuccin"
|
|
9
|
+
},
|
|
10
|
+
"steps": [
|
|
11
|
+
{
|
|
12
|
+
"id": "scraper-info",
|
|
13
|
+
"type": "note",
|
|
14
|
+
"group": "Scraper Selection",
|
|
15
|
+
"message": "Available Scrapers",
|
|
16
|
+
"description": "Select a scraper to run. Each scraper collects app metadata from its respective platform."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "scraper",
|
|
20
|
+
"type": "select",
|
|
21
|
+
"group": "Scraper Selection",
|
|
22
|
+
"message": "Pick a scraper",
|
|
23
|
+
"options": [
|
|
24
|
+
{ "value": "reelshort", "label": "ReelShort", "hint": "Scrape all shows from reelshort.com" },
|
|
25
|
+
{ "value": "dramabox", "label": "DramaBox", "hint": "Scrape all shows from dramaboxdb.com" },
|
|
26
|
+
{ "value": "goodshort", "label": "GoodShort", "hint": "Scrape dramas from goodshort.com" },
|
|
27
|
+
{ "value": "netshort", "label": "NetShort", "hint": "Scrape dramas from netshort.com" },
|
|
28
|
+
{ "value": "shorttv", "label": "ShortTV", "hint": "Scrape dramas from shorttv.live/ShortMax" },
|
|
29
|
+
{ "value": "mydrama", "label": "MyDrama", "hint": "Scrape dramas from my-drama.com" },
|
|
30
|
+
{ "value": "dribbble", "label": "Dribbble Inspirations", "hint": "Scrape App Store preview shots from Dribbble" }
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "output-dir",
|
|
35
|
+
"type": "path",
|
|
36
|
+
"group": "Output Settings",
|
|
37
|
+
"message": "Output directory for scraped data",
|
|
38
|
+
"default": "./data/scraped",
|
|
39
|
+
"placeholder": "./data/scraped"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"id": "output-format",
|
|
43
|
+
"type": "select",
|
|
44
|
+
"group": "Output Settings",
|
|
45
|
+
"message": "Output format for scraped data",
|
|
46
|
+
"options": [
|
|
47
|
+
{ "value": "json", "label": "JSON" },
|
|
48
|
+
{ "value": "csv", "label": "CSV" }
|
|
49
|
+
],
|
|
50
|
+
"default": "json"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"id": "confirm-scrape",
|
|
54
|
+
"type": "confirm",
|
|
55
|
+
"group": "Confirmation",
|
|
56
|
+
"message": "Start scraping?",
|
|
57
|
+
"default": true
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
"output": {
|
|
61
|
+
"format": "json"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Catppuccin Themed Setup",
|
|
4
|
+
"description": "A project setup wizard using the Catppuccin color preset"
|
|
5
|
+
},
|
|
6
|
+
"theme": {
|
|
7
|
+
"preset": "catppuccin"
|
|
8
|
+
},
|
|
9
|
+
"steps": [
|
|
10
|
+
{
|
|
11
|
+
"id": "project-name",
|
|
12
|
+
"type": "text",
|
|
13
|
+
"message": "What is your project name?",
|
|
14
|
+
"validate": [
|
|
15
|
+
{ "rule": "required" },
|
|
16
|
+
{ "rule": "minLength", "value": 2 }
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "framework",
|
|
21
|
+
"type": "select",
|
|
22
|
+
"message": "Choose a framework",
|
|
23
|
+
"options": [
|
|
24
|
+
{ "value": "nextjs", "label": "Next.js" },
|
|
25
|
+
{ "value": "remix", "label": "Remix" },
|
|
26
|
+
{ "value": "astro", "label": "Astro" }
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "confirm",
|
|
31
|
+
"type": "confirm",
|
|
32
|
+
"message": "Create project?",
|
|
33
|
+
"default": true
|
|
34
|
+
}
|
|
35
|
+
],
|
|
36
|
+
"output": {
|
|
37
|
+
"format": "json"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Catppuccin Setup",
|
|
4
|
+
"description": "A beautifully themed wizard"
|
|
5
|
+
},
|
|
6
|
+
"theme": {
|
|
7
|
+
"tokens": {
|
|
8
|
+
"primary": "#89b4fa",
|
|
9
|
+
"success": "#a6e3a1",
|
|
10
|
+
"error": "#f38ba8",
|
|
11
|
+
"warning": "#fab387",
|
|
12
|
+
"info": "#74c7ec",
|
|
13
|
+
"muted": "#6c7086",
|
|
14
|
+
"accent": "#cba6f7"
|
|
15
|
+
},
|
|
16
|
+
"icons": {
|
|
17
|
+
"step": "\u2B24",
|
|
18
|
+
"stepDone": "\u2714",
|
|
19
|
+
"stepPending": "\u25EF",
|
|
20
|
+
"pointer": "\u276F"
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"steps": [
|
|
24
|
+
{
|
|
25
|
+
"id": "username",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"message": "Choose a username",
|
|
28
|
+
"validate": [
|
|
29
|
+
{ "rule": "required" },
|
|
30
|
+
{ "rule": "minLength", "value": 3 },
|
|
31
|
+
{ "rule": "maxLength", "value": 20 },
|
|
32
|
+
{ "rule": "pattern", "value": "^[a-zA-Z][a-zA-Z0-9_]*$", "message": "Letters, numbers, underscores only. Must start with a letter." }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "email",
|
|
37
|
+
"type": "text",
|
|
38
|
+
"message": "Your email address",
|
|
39
|
+
"validate": [
|
|
40
|
+
{ "rule": "required" },
|
|
41
|
+
{ "rule": "pattern", "value": "^[^@]+@[^@]+\\.[^@]+$", "message": "Enter a valid email address" }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "role",
|
|
46
|
+
"type": "select",
|
|
47
|
+
"message": "Select your role",
|
|
48
|
+
"options": [
|
|
49
|
+
{ "value": "developer", "label": "Developer" },
|
|
50
|
+
{ "value": "designer", "label": "Designer" },
|
|
51
|
+
{ "value": "manager", "label": "Project Manager" },
|
|
52
|
+
{ "value": "devops", "label": "DevOps Engineer" }
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"id": "experience",
|
|
57
|
+
"type": "number",
|
|
58
|
+
"message": "Years of experience",
|
|
59
|
+
"min": 0,
|
|
60
|
+
"max": 50,
|
|
61
|
+
"default": 3
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "interests",
|
|
65
|
+
"type": "multiselect",
|
|
66
|
+
"message": "Areas of interest",
|
|
67
|
+
"options": [
|
|
68
|
+
{ "value": "frontend", "label": "Frontend Development" },
|
|
69
|
+
{ "value": "backend", "label": "Backend Development" },
|
|
70
|
+
{ "value": "mobile", "label": "Mobile Development" },
|
|
71
|
+
{ "value": "ai", "label": "AI / Machine Learning" },
|
|
72
|
+
{ "value": "devops", "label": "DevOps / Infrastructure" },
|
|
73
|
+
{ "value": "security", "label": "Security" }
|
|
74
|
+
],
|
|
75
|
+
"min": 1,
|
|
76
|
+
"max": 3
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "newsletter",
|
|
80
|
+
"type": "confirm",
|
|
81
|
+
"message": "Subscribe to our newsletter?",
|
|
82
|
+
"default": true
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"id": "password",
|
|
86
|
+
"type": "password",
|
|
87
|
+
"message": "Set a password",
|
|
88
|
+
"validate": [
|
|
89
|
+
{ "rule": "minLength", "value": 8, "message": "Password must be at least 8 characters" }
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "confirm",
|
|
94
|
+
"type": "confirm",
|
|
95
|
+
"message": "Create your account?",
|
|
96
|
+
"next": "__done__"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"output": {
|
|
100
|
+
"format": "json",
|
|
101
|
+
"path": "account.json"
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"name": "Deployment Wizard",
|
|
4
|
+
"description": "Deploy with pre-flight safety checks"
|
|
5
|
+
},
|
|
6
|
+
"checks": [
|
|
7
|
+
{
|
|
8
|
+
"name": "Node.js installed",
|
|
9
|
+
"run": "node --version",
|
|
10
|
+
"message": "Node.js is required. Install from https://nodejs.org"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "Git available",
|
|
14
|
+
"run": "git --version",
|
|
15
|
+
"message": "Git is required. Install from https://git-scm.com"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"steps": [
|
|
19
|
+
{
|
|
20
|
+
"id": "environment",
|
|
21
|
+
"type": "select",
|
|
22
|
+
"message": "Deploy to which environment?",
|
|
23
|
+
"options": [
|
|
24
|
+
{ "value": "staging", "label": "Staging" },
|
|
25
|
+
{ "value": "production", "label": "Production" }
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "version",
|
|
30
|
+
"type": "text",
|
|
31
|
+
"message": "Version tag?",
|
|
32
|
+
"default": "latest",
|
|
33
|
+
"validate": [
|
|
34
|
+
{ "rule": "required" }
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"id": "confirm",
|
|
39
|
+
"type": "confirm",
|
|
40
|
+
"message": "Deploy now?",
|
|
41
|
+
"next": "__done__"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
44
|
+
"output": {
|
|
45
|
+
"format": "json"
|
|
46
|
+
}
|
|
47
|
+
}
|