@hexidecibel/companion 0.0.1 → 0.1.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 (110) hide show
  1. package/dist/__tests__/task-parser.test.js +29 -29
  2. package/dist/__tests__/task-parser.test.js.map +1 -1
  3. package/dist/anthropic-usage.d.ts.map +1 -1
  4. package/dist/anthropic-usage.js +1 -1
  5. package/dist/anthropic-usage.js.map +1 -1
  6. package/dist/cert-generator.d.ts.map +1 -1
  7. package/dist/cert-generator.js +4 -21
  8. package/dist/cert-generator.js.map +1 -1
  9. package/dist/cli.d.ts +9 -0
  10. package/dist/cli.d.ts.map +1 -0
  11. package/dist/cli.js +413 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/config.d.ts.map +1 -1
  14. package/dist/config.js +1 -7
  15. package/dist/config.js.map +1 -1
  16. package/dist/escalation.d.ts +51 -0
  17. package/dist/escalation.d.ts.map +1 -0
  18. package/dist/escalation.js +198 -0
  19. package/dist/escalation.js.map +1 -0
  20. package/dist/index.js +67 -30
  21. package/dist/index.js.map +1 -1
  22. package/dist/input-injector.d.ts.map +1 -1
  23. package/dist/input-injector.js +9 -5
  24. package/dist/input-injector.js.map +1 -1
  25. package/dist/notification-store.d.ts +35 -0
  26. package/dist/notification-store.d.ts.map +1 -0
  27. package/dist/notification-store.js +272 -0
  28. package/dist/notification-store.js.map +1 -0
  29. package/dist/parser.d.ts +15 -1
  30. package/dist/parser.d.ts.map +1 -1
  31. package/dist/parser.js +106 -61
  32. package/dist/parser.js.map +1 -1
  33. package/dist/push.d.ts +18 -26
  34. package/dist/push.d.ts.map +1 -1
  35. package/dist/push.js +90 -184
  36. package/dist/push.js.map +1 -1
  37. package/dist/qr-server.d.ts.map +1 -1
  38. package/dist/qr-server.js +134 -135
  39. package/dist/qr-server.js.map +1 -1
  40. package/dist/rules-engine.d.ts +20 -0
  41. package/dist/rules-engine.d.ts.map +1 -0
  42. package/dist/rules-engine.js +71 -0
  43. package/dist/rules-engine.js.map +1 -0
  44. package/dist/scaffold/claude-commands.d.ts +18 -0
  45. package/dist/scaffold/claude-commands.d.ts.map +1 -0
  46. package/dist/scaffold/claude-commands.js +352 -0
  47. package/dist/scaffold/claude-commands.js.map +1 -0
  48. package/dist/scaffold/generator.d.ts.map +1 -1
  49. package/dist/scaffold/generator.js +26 -1
  50. package/dist/scaffold/generator.js.map +1 -1
  51. package/dist/scaffold/scorer.d.ts +19 -0
  52. package/dist/scaffold/scorer.d.ts.map +1 -0
  53. package/dist/scaffold/scorer.js +92 -0
  54. package/dist/scaffold/scorer.js.map +1 -0
  55. package/dist/scaffold/templates/go-cli.d.ts +3 -0
  56. package/dist/scaffold/templates/go-cli.d.ts.map +1 -0
  57. package/dist/scaffold/templates/go-cli.js +249 -0
  58. package/dist/scaffold/templates/go-cli.js.map +1 -0
  59. package/dist/scaffold/templates/index.d.ts.map +1 -1
  60. package/dist/scaffold/templates/index.js +8 -2
  61. package/dist/scaffold/templates/index.js.map +1 -1
  62. package/dist/scaffold/templates/nextjs.d.ts +3 -0
  63. package/dist/scaffold/templates/nextjs.d.ts.map +1 -0
  64. package/dist/scaffold/templates/nextjs.js +336 -0
  65. package/dist/scaffold/templates/nextjs.js.map +1 -0
  66. package/dist/scaffold/templates/node-express.d.ts.map +1 -1
  67. package/dist/scaffold/templates/node-express.js +170 -157
  68. package/dist/scaffold/templates/node-express.js.map +1 -1
  69. package/dist/scaffold/templates/python-fastapi.d.ts.map +1 -1
  70. package/dist/scaffold/templates/python-fastapi.js +234 -221
  71. package/dist/scaffold/templates/python-fastapi.js.map +1 -1
  72. package/dist/scaffold/templates/react-mui-website.d.ts.map +1 -1
  73. package/dist/scaffold/templates/react-mui-website.js +337 -324
  74. package/dist/scaffold/templates/react-mui-website.js.map +1 -1
  75. package/dist/scaffold/templates/react-typescript.d.ts.map +1 -1
  76. package/dist/scaffold/templates/react-typescript.js +219 -206
  77. package/dist/scaffold/templates/react-typescript.js.map +1 -1
  78. package/dist/scaffold/templates/typescript-library.d.ts +3 -0
  79. package/dist/scaffold/templates/typescript-library.d.ts.map +1 -0
  80. package/dist/scaffold/templates/typescript-library.js +241 -0
  81. package/dist/scaffold/templates/typescript-library.js.map +1 -0
  82. package/dist/scaffold/types.d.ts +7 -0
  83. package/dist/scaffold/types.d.ts.map +1 -1
  84. package/dist/subagent-watcher.d.ts.map +1 -1
  85. package/dist/subagent-watcher.js +3 -3
  86. package/dist/subagent-watcher.js.map +1 -1
  87. package/dist/tmux-manager.d.ts +37 -0
  88. package/dist/tmux-manager.d.ts.map +1 -1
  89. package/dist/tmux-manager.js +165 -5
  90. package/dist/tmux-manager.js.map +1 -1
  91. package/dist/tool-config.d.ts.map +1 -1
  92. package/dist/tool-config.js +2 -2
  93. package/dist/tool-config.js.map +1 -1
  94. package/dist/types.d.ts +85 -0
  95. package/dist/types.d.ts.map +1 -1
  96. package/dist/types.js +18 -0
  97. package/dist/types.js.map +1 -1
  98. package/dist/watcher.d.ts +7 -0
  99. package/dist/watcher.d.ts.map +1 -1
  100. package/dist/watcher.js +118 -9
  101. package/dist/watcher.js.map +1 -1
  102. package/dist/websocket.d.ts +16 -2
  103. package/dist/websocket.d.ts.map +1 -1
  104. package/dist/websocket.js +758 -117
  105. package/dist/websocket.js.map +1 -1
  106. package/dist/work-group-manager.d.ts +69 -0
  107. package/dist/work-group-manager.d.ts.map +1 -0
  108. package/dist/work-group-manager.js +610 -0
  109. package/dist/work-group-manager.js.map +1 -0
  110. package/package.json +1 -1
@@ -0,0 +1,249 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.goCliTemplate = void 0;
4
+ exports.goCliTemplate = {
5
+ id: 'go-cli',
6
+ name: 'Go CLI Tool',
7
+ description: 'Cross-platform command-line tool with Cobra and structured logging',
8
+ type: 'cli',
9
+ icon: '🔷',
10
+ tags: ['go', 'golang', 'cli', 'cobra', 'command-line'],
11
+ scoring: {
12
+ primaryKeywords: ['go', 'golang', 'cobra', 'cli'],
13
+ secondaryKeywords: ['command', 'terminal', 'tool', 'binary', 'cross-platform', 'flag'],
14
+ useCases: ['go cli tool', 'command line tool', 'go command line', 'cli utility', 'go binary'],
15
+ typeSignals: { cli: 3, tool: 2, command: 2, terminal: 2, binary: 1 },
16
+ },
17
+ files: [
18
+ {
19
+ path: 'go.mod',
20
+ template: `module {{projectName}}
21
+
22
+ go 1.22
23
+
24
+ require (
25
+ \tgithub.com/spf13/cobra v1.8.0
26
+ )
27
+
28
+ require (
29
+ \tgithub.com/inconshreveable/mousetrap v1.1.0 // indirect
30
+ \tgithub.com/spf13/pflag v1.0.5 // indirect
31
+ )`,
32
+ },
33
+ {
34
+ path: 'main.go',
35
+ template: `package main
36
+
37
+ import "{{projectName}}/cmd"
38
+
39
+ func main() {
40
+ \tcmd.Execute()
41
+ }`,
42
+ },
43
+ {
44
+ path: 'cmd/root.go',
45
+ template: `package cmd
46
+
47
+ import (
48
+ \t"fmt"
49
+ \t"os"
50
+
51
+ \t"github.com/spf13/cobra"
52
+ )
53
+
54
+ var rootCmd = &cobra.Command{
55
+ \tUse: "{{projectName}}",
56
+ \tShort: "{{projectDescription}}",
57
+ \tLong: "{{projectDescription}}",
58
+ }
59
+
60
+ func Execute() {
61
+ \tif err := rootCmd.Execute(); err != nil {
62
+ \t\tfmt.Fprintln(os.Stderr, err)
63
+ \t\tos.Exit(1)
64
+ \t}
65
+ }
66
+
67
+ func init() {
68
+ \trootCmd.PersistentFlags().BoolP("verbose", "v", false, "verbose output")
69
+ }`,
70
+ },
71
+ {
72
+ path: 'cmd/version.go',
73
+ template: `package cmd
74
+
75
+ import (
76
+ \t"fmt"
77
+
78
+ \t"github.com/spf13/cobra"
79
+ )
80
+
81
+ var (
82
+ \tVersion = "dev"
83
+ \tCommit = "none"
84
+ \tBuildDate = "unknown"
85
+ )
86
+
87
+ var versionCmd = &cobra.Command{
88
+ \tUse: "version",
89
+ \tShort: "Print version information",
90
+ \tRun: func(cmd *cobra.Command, args []string) {
91
+ \t\tfmt.Printf("{{projectName}} %s (commit: %s, built: %s)\\n", Version, Commit, BuildDate)
92
+ \t},
93
+ }
94
+
95
+ func init() {
96
+ \trootCmd.AddCommand(versionCmd)
97
+ }`,
98
+ },
99
+ {
100
+ path: 'cmd/run.go',
101
+ template: `package cmd
102
+
103
+ import (
104
+ \t"fmt"
105
+
106
+ \t"github.com/spf13/cobra"
107
+ )
108
+
109
+ var runCmd = &cobra.Command{
110
+ \tUse: "run",
111
+ \tShort: "Run the main command",
112
+ \tRunE: func(cmd *cobra.Command, args []string) error {
113
+ \t\tverbose, _ := cmd.Flags().GetBool("verbose")
114
+ \t\tif verbose {
115
+ \t\t\tfmt.Println("Running in verbose mode...")
116
+ \t\t}
117
+ \t\tfmt.Println("Hello from {{projectName}}!")
118
+ \t\treturn nil
119
+ \t},
120
+ }
121
+
122
+ func init() {
123
+ \trootCmd.AddCommand(runCmd)
124
+ }`,
125
+ },
126
+ {
127
+ path: 'Makefile',
128
+ template: `BINARY_NAME={{projectName}}
129
+ VERSION?=dev
130
+ COMMIT=$(shell git rev-parse --short HEAD 2>/dev/null || echo "none")
131
+ BUILD_DATE=$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
132
+ LDFLAGS=-ldflags "-X {{projectName}}/cmd.Version=$(VERSION) -X {{projectName}}/cmd.Commit=$(COMMIT) -X {{projectName}}/cmd.BuildDate=$(BUILD_DATE)"
133
+
134
+ .PHONY: build run test clean
135
+
136
+ build:
137
+ \tgo build $(LDFLAGS) -o bin/$(BINARY_NAME) .
138
+
139
+ run:
140
+ \tgo run . run
141
+
142
+ test:
143
+ \tgo test ./... -v
144
+
145
+ clean:
146
+ \trm -rf bin/
147
+
148
+ install:
149
+ \tgo install $(LDFLAGS) .`,
150
+ },
151
+ {
152
+ path: '.gitignore',
153
+ template: `# Binaries
154
+ bin/
155
+ *.exe
156
+ *.exe~
157
+ *.dll
158
+ *.so
159
+ *.dylib
160
+
161
+ # Test
162
+ *.test
163
+ *.out
164
+ coverage.out
165
+
166
+ # Vendor
167
+ vendor/
168
+
169
+ # IDE
170
+ .vscode/
171
+ .idea/
172
+ *.swp
173
+ *.swo
174
+
175
+ # OS
176
+ .DS_Store`,
177
+ },
178
+ {
179
+ path: 'CLAUDE.md',
180
+ template: `# {{projectName}}
181
+
182
+ {{projectDescription}}
183
+
184
+ ## Tech Stack
185
+ - Go 1.22+
186
+ - Cobra for CLI framework
187
+ - Make for build automation
188
+
189
+ ## Project Structure
190
+ \`\`\`
191
+ ├── main.go # Entry point
192
+ ├── cmd/
193
+ │ ├── root.go # Root command and global flags
194
+ │ ├── version.go # Version command
195
+ │ └── run.go # Main run command
196
+ ├── Makefile # Build targets
197
+ └── go.mod # Go module definition
198
+ \`\`\`
199
+
200
+ ## Commands
201
+ - \`make build\` - Build binary to bin/
202
+ - \`make run\` - Run directly with go run
203
+ - \`make test\` - Run tests
204
+ - \`make install\` - Install globally
205
+ - \`go run . version\` - Print version
206
+
207
+ ## Development Notes
208
+ - Add new subcommands in \`cmd/\`
209
+ - Use \`rootCmd.PersistentFlags()\` for global flags
210
+ - Use \`cmd.Flags()\` for command-specific flags
211
+ - Build with version info: \`make build VERSION=1.0.0\``,
212
+ },
213
+ {
214
+ path: 'README.md',
215
+ template: `# {{projectName}}
216
+
217
+ {{projectDescription}}
218
+
219
+ ## Install
220
+
221
+ \`\`\`bash
222
+ go install {{projectName}}@latest
223
+ \`\`\`
224
+
225
+ ## Usage
226
+
227
+ \`\`\`bash
228
+ {{projectName}} run
229
+ {{projectName}} version
230
+ {{projectName}} --help
231
+ \`\`\`
232
+
233
+ ## Build from source
234
+
235
+ \`\`\`bash
236
+ make build
237
+ ./bin/{{projectName}} run
238
+ \`\`\``,
239
+ },
240
+ ],
241
+ postCreate: [
242
+ {
243
+ command: 'go mod tidy',
244
+ description: 'Downloading Go dependencies',
245
+ },
246
+ ],
247
+ recommendedSkills: ['build', 'test'],
248
+ };
249
+ //# sourceMappingURL=go-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go-cli.js","sourceRoot":"","sources":["../../../src/scaffold/templates/go-cli.ts"],"names":[],"mappings":";;;AAEa,QAAA,aAAa,GAAkB;IAC1C,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,oEAAoE;IACjF,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC;IACtD,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC;QACjD,iBAAiB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,CAAC;QACtF,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,WAAW,CAAC;QAC7F,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;KACrE;IACD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE;;;;;;;;;;;EAWd;SACG;QACD;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE;;;;;;EAMd;SACG;QACD;YACE,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;EAwBd;SACG;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;EAwBd;SACG;QACD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;EAuBd;SACG;QACD;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;0BAqBU;SACrB;QACD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;UAuBN;SACL;QACD;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wDA+BwC;SACnD;QACD;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;OAuBT;SACF;KACF;IACD,UAAU,EAAE;QACV;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,6BAA6B;SAC3C;KACF;IACD,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;CACrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMzC,eAAO,MAAM,SAAS,EAAE,aAAa,EAKpC,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE,CAE/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AASzC,eAAO,MAAM,SAAS,EAAE,aAAa,EAQpC,CAAC;AAEF,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAEjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,aAAa,EAAE,CAE/E"}
@@ -7,16 +7,22 @@ const react_typescript_1 = require("./react-typescript");
7
7
  const react_mui_website_1 = require("./react-mui-website");
8
8
  const node_express_1 = require("./node-express");
9
9
  const python_fastapi_1 = require("./python-fastapi");
10
+ const nextjs_1 = require("./nextjs");
11
+ const go_cli_1 = require("./go-cli");
12
+ const typescript_library_1 = require("./typescript-library");
10
13
  exports.templates = [
11
14
  react_typescript_1.reactTypescriptTemplate,
12
15
  react_mui_website_1.reactMuiWebsiteTemplate,
13
16
  node_express_1.nodeExpressTemplate,
14
17
  python_fastapi_1.pythonFastapiTemplate,
18
+ nextjs_1.nextjsTemplate,
19
+ go_cli_1.goCliTemplate,
20
+ typescript_library_1.typescriptLibraryTemplate,
15
21
  ];
16
22
  function getTemplate(id) {
17
- return exports.templates.find(t => t.id === id);
23
+ return exports.templates.find((t) => t.id === id);
18
24
  }
19
25
  function getTemplatesByType(type) {
20
- return exports.templates.filter(t => t.type === type);
26
+ return exports.templates.filter((t) => t.type === type);
21
27
  }
22
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scaffold/templates/index.ts"],"names":[],"mappings":";;;AAaA,kCAEC;AAED,gDAEC;AAlBD,yDAA6D;AAC7D,2DAA8D;AAC9D,iDAAqD;AACrD,qDAAyD;AAE5C,QAAA,SAAS,GAAoB;IACxC,0CAAuB;IACvB,2CAAuB;IACvB,kCAAmB;IACnB,sCAAqB;CACtB,CAAC;AAEF,SAAgB,WAAW,CAAC,EAAU;IACpC,OAAO,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAA2B;IAC5D,OAAO,iBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scaffold/templates/index.ts"],"names":[],"mappings":";;;AAmBA,kCAEC;AAED,gDAEC;AAxBD,yDAA6D;AAC7D,2DAA8D;AAC9D,iDAAqD;AACrD,qDAAyD;AACzD,qCAA0C;AAC1C,qCAAyC;AACzC,6DAAiE;AAEpD,QAAA,SAAS,GAAoB;IACxC,0CAAuB;IACvB,2CAAuB;IACvB,kCAAmB;IACnB,sCAAqB;IACrB,uBAAc;IACd,sBAAa;IACb,8CAAyB;CAC1B,CAAC;AAEF,SAAgB,WAAW,CAAC,EAAU;IACpC,OAAO,iBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,kBAAkB,CAAC,IAA2B;IAC5D,OAAO,iBAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { StackTemplate } from '../types';
2
+ export declare const nextjsTemplate: StackTemplate;
3
+ //# sourceMappingURL=nextjs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/nextjs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,aA2U5B,CAAC"}
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nextjsTemplate = void 0;
4
+ exports.nextjsTemplate = {
5
+ id: 'nextjs',
6
+ name: 'Next.js + TypeScript',
7
+ description: 'Full-stack React framework with SSR, SSG, and API routes',
8
+ type: 'fullstack',
9
+ icon: '▲',
10
+ tags: ['nextjs', 'react', 'typescript', 'fullstack', 'ssr'],
11
+ scoring: {
12
+ primaryKeywords: ['nextjs', 'next', 'ssr', 'ssg', 'vercel'],
13
+ secondaryKeywords: [
14
+ 'fullstack',
15
+ 'seo',
16
+ 'blog',
17
+ 'cms',
18
+ 'static',
19
+ 'hybrid',
20
+ 'server',
21
+ 'rendering',
22
+ ],
23
+ useCases: [
24
+ 'seo blog',
25
+ 'fullstack app',
26
+ 'next.js app',
27
+ 'server rendered',
28
+ 'static site',
29
+ 'blog with ssr',
30
+ ],
31
+ typeSignals: { fullstack: 3, ssr: 3, ssg: 3, seo: 2, blog: 2, cms: 2 },
32
+ },
33
+ files: [
34
+ {
35
+ path: 'package.json',
36
+ template: `{
37
+ "name": "{{projectName}}",
38
+ "version": "0.1.0",
39
+ "private": true,
40
+ "scripts": {
41
+ "dev": "next dev",
42
+ "build": "next build",
43
+ "start": "next start",
44
+ "lint": "next lint"
45
+ },
46
+ "dependencies": {
47
+ "next": "^14.2.0",
48
+ "react": "^18.3.1",
49
+ "react-dom": "^18.3.1"
50
+ },
51
+ "devDependencies": {
52
+ "@types/node": "^22.7.5",
53
+ "@types/react": "^18.3.12",
54
+ "@types/react-dom": "^18.3.1",
55
+ "eslint": "^8.57.0",
56
+ "eslint-config-next": "^14.2.0",
57
+ "typescript": "^5.6.3"
58
+ }
59
+ }`,
60
+ },
61
+ {
62
+ path: 'tsconfig.json',
63
+ template: `{
64
+ "compilerOptions": {
65
+ "target": "ES2017",
66
+ "lib": ["dom", "dom.iterable", "esnext"],
67
+ "allowJs": true,
68
+ "skipLibCheck": true,
69
+ "strict": true,
70
+ "noEmit": true,
71
+ "esModuleInterop": true,
72
+ "module": "esnext",
73
+ "moduleResolution": "bundler",
74
+ "resolveJsonModule": true,
75
+ "isolatedModules": true,
76
+ "jsx": "preserve",
77
+ "incremental": true,
78
+ "plugins": [{ "name": "next" }],
79
+ "paths": {
80
+ "@/*": ["./src/*"]
81
+ }
82
+ },
83
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
84
+ "exclude": ["node_modules"]
85
+ }`,
86
+ },
87
+ {
88
+ path: 'next.config.ts',
89
+ template: `import type { NextConfig } from 'next';
90
+
91
+ const nextConfig: NextConfig = {
92
+ reactStrictMode: true,
93
+ };
94
+
95
+ export default nextConfig;`,
96
+ },
97
+ {
98
+ path: 'src/app/layout.tsx',
99
+ template: `import type { Metadata } from 'next';
100
+ import './globals.css';
101
+
102
+ export const metadata: Metadata = {
103
+ title: '{{projectName}}',
104
+ description: '{{projectDescription}}',
105
+ };
106
+
107
+ export default function RootLayout({
108
+ children,
109
+ }: {
110
+ children: React.ReactNode;
111
+ }) {
112
+ return (
113
+ <html lang="en">
114
+ <body>{children}</body>
115
+ </html>
116
+ );
117
+ }`,
118
+ },
119
+ {
120
+ path: 'src/app/page.tsx',
121
+ template: `export default function Home() {
122
+ return (
123
+ <main className="main">
124
+ <h1>{{projectName}}</h1>
125
+ <p>{{projectDescription}}</p>
126
+ <div className="grid">
127
+ <a href="/about" className="card">
128
+ <h2>About</h2>
129
+ <p>Learn more about this project.</p>
130
+ </a>
131
+ <a href="/api/hello" className="card">
132
+ <h2>API</h2>
133
+ <p>Check out the API routes.</p>
134
+ </a>
135
+ </div>
136
+ </main>
137
+ );
138
+ }`,
139
+ },
140
+ {
141
+ path: 'src/app/globals.css',
142
+ template: `:root {
143
+ --foreground: #ededed;
144
+ --background: #0a0a0a;
145
+ }
146
+
147
+ * {
148
+ box-sizing: border-box;
149
+ padding: 0;
150
+ margin: 0;
151
+ }
152
+
153
+ html,
154
+ body {
155
+ max-width: 100vw;
156
+ overflow-x: hidden;
157
+ }
158
+
159
+ body {
160
+ color: var(--foreground);
161
+ background: var(--background);
162
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
163
+ -webkit-font-smoothing: antialiased;
164
+ }
165
+
166
+ a {
167
+ color: inherit;
168
+ text-decoration: none;
169
+ }
170
+
171
+ .main {
172
+ display: flex;
173
+ flex-direction: column;
174
+ align-items: center;
175
+ padding: 6rem 2rem;
176
+ min-height: 100vh;
177
+ }
178
+
179
+ .main h1 {
180
+ font-size: 2.5rem;
181
+ margin-bottom: 0.5rem;
182
+ }
183
+
184
+ .main p {
185
+ color: #888;
186
+ margin-bottom: 2rem;
187
+ }
188
+
189
+ .grid {
190
+ display: grid;
191
+ grid-template-columns: repeat(2, 1fr);
192
+ gap: 1rem;
193
+ max-width: 600px;
194
+ width: 100%;
195
+ }
196
+
197
+ .card {
198
+ padding: 1.5rem;
199
+ border-radius: 8px;
200
+ border: 1px solid #333;
201
+ transition: border-color 0.2s, background 0.2s;
202
+ }
203
+
204
+ .card:hover {
205
+ border-color: #555;
206
+ background: #111;
207
+ }
208
+
209
+ .card h2 {
210
+ font-size: 1.2rem;
211
+ margin-bottom: 0.5rem;
212
+ }
213
+
214
+ .card p {
215
+ font-size: 0.9rem;
216
+ color: #888;
217
+ margin-bottom: 0;
218
+ }`,
219
+ },
220
+ {
221
+ path: 'src/app/about/page.tsx',
222
+ template: `export default function About() {
223
+ return (
224
+ <main className="main">
225
+ <h1>About</h1>
226
+ <p>{{projectDescription}}</p>
227
+ <a href="/">Back to home</a>
228
+ </main>
229
+ );
230
+ }`,
231
+ },
232
+ {
233
+ path: 'src/app/api/hello/route.ts',
234
+ template: `import { NextResponse } from 'next/server';
235
+
236
+ export async function GET() {
237
+ return NextResponse.json({ message: 'Hello from {{projectName}}!' });
238
+ }`,
239
+ },
240
+ {
241
+ path: '.gitignore',
242
+ template: `# Dependencies
243
+ node_modules
244
+
245
+ # Next.js
246
+ .next/
247
+ out/
248
+
249
+ # Production
250
+ build
251
+
252
+ # Debug
253
+ npm-debug.log*
254
+
255
+ # Environment
256
+ .env*.local
257
+
258
+ # Vercel
259
+ .vercel
260
+
261
+ # IDE
262
+ .vscode
263
+ .idea
264
+
265
+ # OS
266
+ .DS_Store`,
267
+ },
268
+ {
269
+ path: 'CLAUDE.md',
270
+ template: `# {{projectName}}
271
+
272
+ {{projectDescription}}
273
+
274
+ ## Tech Stack
275
+ - Next.js 14 with App Router
276
+ - React 18 with TypeScript
277
+ - CSS Modules / Global CSS
278
+
279
+ ## Project Structure
280
+ \`\`\`
281
+ src/
282
+ ├── app/
283
+ │ ├── layout.tsx # Root layout
284
+ │ ├── page.tsx # Home page
285
+ │ ├── globals.css # Global styles
286
+ │ ├── about/
287
+ │ │ └── page.tsx # About page
288
+ │ └── api/
289
+ │ └── hello/
290
+ │ └── route.ts # API route
291
+ \`\`\`
292
+
293
+ ## Commands
294
+ - \`npm run dev\` - Start dev server
295
+ - \`npm run build\` - Build for production
296
+ - \`npm start\` - Start production server
297
+ - \`npm run lint\` - Run ESLint
298
+
299
+ ## Development Notes
300
+ - Pages go in \`src/app/\` (file-based routing)
301
+ - API routes go in \`src/app/api/\`
302
+ - Components go in \`src/components/\`
303
+ - Use Server Components by default, add 'use client' only when needed`,
304
+ },
305
+ {
306
+ path: 'README.md',
307
+ template: `# {{projectName}}
308
+
309
+ {{projectDescription}}
310
+
311
+ ## Getting Started
312
+
313
+ \`\`\`bash
314
+ npm install
315
+ npm run dev
316
+ \`\`\`
317
+
318
+ Open [http://localhost:3000](http://localhost:3000) to see the app.
319
+
320
+ ## Scripts
321
+
322
+ - \`npm run dev\` - Start development server
323
+ - \`npm run build\` - Build for production
324
+ - \`npm start\` - Run production server
325
+ - \`npm run lint\` - Lint code`,
326
+ },
327
+ ],
328
+ postCreate: [
329
+ {
330
+ command: 'npm install',
331
+ description: 'Installing dependencies',
332
+ },
333
+ ],
334
+ recommendedSkills: ['build', 'dev'],
335
+ };
336
+ //# sourceMappingURL=nextjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextjs.js","sourceRoot":"","sources":["../../../src/scaffold/templates/nextjs.ts"],"names":[],"mappings":";;;AAEa,QAAA,cAAc,GAAkB;IAC3C,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,sBAAsB;IAC5B,WAAW,EAAE,0DAA0D;IACvE,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC;IAC3D,OAAO,EAAE;QACP,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC3D,iBAAiB,EAAE;YACjB,WAAW;YACX,KAAK;YACL,MAAM;YACN,KAAK;YACL,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,WAAW;SACZ;QACD,QAAQ,EAAE;YACR,UAAU;YACV,eAAe;YACf,aAAa;YACb,iBAAiB;YACjB,aAAa;YACb,eAAe;SAChB;QACD,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KACvE;IACD,KAAK,EAAE;QACL;YACE,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;EAuBd;SACG;QACD;YACE,IAAI,EAAE,eAAe;YACrB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;EAsBd;SACG;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE;;;;;;2BAMW;SACtB;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;EAkBd;SACG;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,QAAQ,EAAE;;;;;;;;;;;;;;;;;EAiBd;SACG;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4Ed;SACG;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,QAAQ,EAAE;;;;;;;;EAQd;SACG;QACD;YACE,IAAI,EAAE,4BAA4B;YAClC,QAAQ,EAAE;;;;EAId;SACG;QACD;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;UAwBN;SACL;QACD;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEAiCsD;SACjE;QACD;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE;;;;;;;;;;;;;;;;;;+BAkBe;SAC1B;KACF;IACD,UAAU,EAAE;QACV;YACE,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,yBAAyB;SACvC;KACF;IACD,iBAAiB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;CACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"node-express.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/node-express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,aAqNjC,CAAC"}
1
+ {"version":3,"file":"node-express.d.ts","sourceRoot":"","sources":["../../../src/scaffold/templates/node-express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,mBAAmB,EAAE,aAkOjC,CAAC"}