@orkestrel/scaffold 0.0.2 → 0.0.3

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 (78) hide show
  1. package/README.md +29 -15
  2. package/dist/bin/scaffold.js +1162 -1200
  3. package/dist/bin/scaffold.js.map +1 -1
  4. package/dist/host/AGENTS.md +124 -925
  5. package/dist/host/CLAUDE.md +260 -495
  6. package/dist/host/agents/skills/orkestrel-align-packages/SKILL.md +53 -0
  7. package/dist/host/agents/skills/orkestrel-align-packages/agents/openai.yaml +4 -0
  8. package/dist/host/agents/skills/orkestrel-align-packages/references/fleet.md +50 -0
  9. package/dist/host/agents/skills/orkestrel-align-packages/references/integration.md +56 -0
  10. package/dist/host/agents/skills/orkestrel-build-application/SKILL.md +64 -0
  11. package/dist/host/agents/skills/orkestrel-build-application/agents/openai.yaml +4 -0
  12. package/dist/host/agents/skills/orkestrel-build-application/references/application.md +129 -0
  13. package/dist/host/agents/skills/orkestrel-harden-package/SKILL.md +64 -0
  14. package/dist/host/agents/skills/orkestrel-harden-package/agents/openai.yaml +4 -0
  15. package/dist/host/agents/skills/orkestrel-harden-package/references/centralization.md +85 -0
  16. package/dist/host/agents/skills/orkestrel-harden-package/references/contract.md +57 -0
  17. package/dist/host/agents/skills/orkestrel-harden-package/references/hardening.md +93 -0
  18. package/dist/host/agents/skills/orkestrel-harden-package/references/research.md +61 -0
  19. package/dist/host/claude/agents/application.md +32 -0
  20. package/dist/host/claude/agents/builder.md +12 -7
  21. package/dist/host/claude/agents/checker.md +15 -8
  22. package/dist/host/claude/agents/codex.md +40 -0
  23. package/dist/host/claude/agents/grok.md +20 -37
  24. package/dist/host/claude/agents/orkestrel.md +89 -223
  25. package/dist/host/claude/agents/planner.md +14 -34
  26. package/dist/host/claude/agents/reviewer.md +39 -24
  27. package/dist/host/claude/agents/verifier.md +15 -10
  28. package/dist/host/claude/rules/application.md +57 -0
  29. package/dist/host/claude/rules/architecture.md +179 -0
  30. package/dist/host/claude/rules/browser.md +28 -0
  31. package/dist/host/claude/rules/documentation.md +64 -0
  32. package/dist/host/claude/rules/names.md +209 -0
  33. package/dist/host/claude/rules/patterns.md +130 -0
  34. package/dist/host/claude/rules/quality.md +45 -0
  35. package/dist/host/claude/rules/styles.md +64 -0
  36. package/dist/host/claude/rules/tests.md +123 -0
  37. package/dist/host/claude/rules/typescript.md +78 -0
  38. package/dist/host/claude/rules/workspace.md +180 -0
  39. package/dist/host/claude/settings.json +116 -0
  40. package/dist/host/claude/skills/orkestrel-align-packages/SKILL.md +10 -0
  41. package/dist/host/claude/skills/orkestrel-build-application/SKILL.md +12 -0
  42. package/dist/host/claude/skills/orkestrel-harden-package/SKILL.md +10 -0
  43. package/dist/host/codex/agents/analyst.toml +15 -0
  44. package/dist/host/codex/agents/application.toml +25 -0
  45. package/dist/host/codex/agents/builder.toml +24 -0
  46. package/dist/host/codex/agents/checker.toml +15 -0
  47. package/dist/host/codex/agents/grok.toml +17 -0
  48. package/dist/host/codex/agents/implementer.toml +17 -0
  49. package/dist/host/codex/agents/orkestrel.toml +16 -0
  50. package/dist/host/codex/agents/planner.toml +20 -0
  51. package/dist/host/codex/agents/reviewer.toml +18 -0
  52. package/dist/host/codex/agents/verifier.toml +14 -0
  53. package/dist/host/codex/config.toml +64 -0
  54. package/dist/host/dotfiles/oxlintrc.json +307 -1
  55. package/dist/host/guides/src/scaffold.md +2059 -2007
  56. package/dist/host/manifest.json +355 -137
  57. package/dist/host/scripts/codex.sh +49 -0
  58. package/dist/host/scripts/cursor.sh +33 -47
  59. package/dist/host/scripts/deps.sh +34 -16
  60. package/dist/host/scripts/ollama.sh +6 -149
  61. package/dist/host/tests/setupPolicy.ts +354 -0
  62. package/dist/src/core/index.cjs +6600 -1199
  63. package/dist/src/core/index.cjs.map +1 -1
  64. package/dist/src/core/index.d.cts +801 -266
  65. package/dist/src/core/index.d.ts +801 -266
  66. package/dist/src/core/index.js +6518 -1191
  67. package/dist/src/core/index.js.map +1 -1
  68. package/dist/src/server/index.cjs +3132 -593
  69. package/dist/src/server/index.cjs.map +1 -1
  70. package/dist/src/server/index.d.cts +643 -95
  71. package/dist/src/server/index.d.ts +643 -95
  72. package/dist/src/server/index.js +3054 -594
  73. package/dist/src/server/index.js.map +1 -1
  74. package/package.json +15 -12
  75. package/dist/host/claude/agents/composer.md +0 -64
  76. package/dist/host/claude/agents/researcher.md +0 -38
  77. package/dist/host/claude/agents/scout.md +0 -35
  78. package/dist/host/github/workflows/ci.yml +0 -64
@@ -4,6 +4,18 @@
4
4
  "rules": {
5
5
  "@typescript-eslint/no-explicit-any": "error",
6
6
  "@typescript-eslint/no-non-null-assertion": "error",
7
+ "typescript/consistent-type-assertions": ["error", { "assertionStyle": "never" }],
8
+ "typescript/no-require-imports": "error",
9
+ "typescript/array-type": ["error", { "default": "array-simple" }],
10
+ "typescript/ban-ts-comment": [
11
+ "error",
12
+ {
13
+ "ts-expect-error": true,
14
+ "ts-ignore": true,
15
+ "ts-nocheck": true,
16
+ "ts-check": false
17
+ }
18
+ ],
7
19
  "@typescript-eslint/no-unused-vars": [
8
20
  "error",
9
21
  {
@@ -22,8 +34,14 @@
22
34
  ],
23
35
 
24
36
  "import/no-default-export": "error",
37
+ "import/no-dynamic-require": ["error", { "esmodule": true }],
25
38
  "import/extensions": "off",
26
- "import/no-unassigned-import": ["error", { "allow": ["**/*.css", "**/*.scss"] }],
39
+ "import/no-unassigned-import": [
40
+ "error",
41
+ {
42
+ "allow": ["**/*.{css,less,sass,scss,styl,stylus,pcss,postcss,sss}"]
43
+ }
44
+ ],
27
45
 
28
46
  "no-var": "error",
29
47
  "prefer-const": "error",
@@ -53,6 +71,294 @@
53
71
  "import/no-default-export": "off",
54
72
  "no-unused-expressions": "off"
55
73
  }
74
+ },
75
+ {
76
+ "files": ["src/core/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
77
+ "rules": {
78
+ "no-restricted-imports": [
79
+ "error",
80
+ {
81
+ "patterns": [
82
+ {
83
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
84
+ "message": "imports must not use machine-specific absolute paths"
85
+ },
86
+ {
87
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
88
+ "message": "imports must not use non-Node URL schemes"
89
+ },
90
+ {
91
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
92
+ "message": "internal import paths must not contain noncanonical dot segments"
93
+ },
94
+ {
95
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
96
+ "message": "relative import paths must not contain normalized traversal segments"
97
+ },
98
+ {
99
+ "regex": "\\\\",
100
+ "message": "import paths must use portable forward slashes"
101
+ },
102
+ {
103
+ "regex": "^(?:@app(?:[/?#]|$)|(?:\\.\\./)+app(?:[/?#]|$))",
104
+ "message": "src environments must not depend on private app modules"
105
+ },
106
+ {
107
+ "regex": "\\.(?:css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:[?#]|$)",
108
+ "message": "src/core must not import browser stylesheets"
109
+ },
110
+ {
111
+ "regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@src/(?:browser|server)(?:[/?#]|$)|@orkestrel/[^/]+/(?:browser|server)(?:[/?#]|$)|(?:\\.\\./)+(?:browser|server)(?:[/?#]|$))",
112
+ "message": "src/core must remain host-independent"
113
+ }
114
+ ]
115
+ }
116
+ ]
117
+ }
118
+ },
119
+ {
120
+ "files": ["src/browser/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
121
+ "rules": {
122
+ "no-restricted-imports": [
123
+ "error",
124
+ {
125
+ "patterns": [
126
+ {
127
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
128
+ "message": "imports must not use machine-specific absolute paths"
129
+ },
130
+ {
131
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
132
+ "message": "imports must not use non-Node URL schemes"
133
+ },
134
+ {
135
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
136
+ "message": "internal import paths must not contain noncanonical dot segments"
137
+ },
138
+ {
139
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
140
+ "message": "relative import paths must not contain normalized traversal segments"
141
+ },
142
+ {
143
+ "regex": "\\\\",
144
+ "message": "import paths must use portable forward slashes"
145
+ },
146
+ {
147
+ "regex": "^(?:@app(?:[/?#]|$)|(?:\\.\\./)+app(?:[/?#]|$))",
148
+ "message": "src environments must not depend on private app modules"
149
+ },
150
+ {
151
+ "regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|@src/server(?:[/?#]|$)|@orkestrel/[^/]+/server(?:[/?#]|$)|(?:\\.\\./)+(?:server|src/server|app/server)(?:[/?#]|$))",
152
+ "message": "src/browser must not depend on Node or server-only modules"
153
+ }
154
+ ]
155
+ }
156
+ ]
157
+ }
158
+ },
159
+ {
160
+ "files": ["src/server/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
161
+ "rules": {
162
+ "no-restricted-imports": [
163
+ "error",
164
+ {
165
+ "patterns": [
166
+ {
167
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
168
+ "message": "imports must not use machine-specific absolute paths"
169
+ },
170
+ {
171
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
172
+ "message": "imports must not use non-Node URL schemes"
173
+ },
174
+ {
175
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
176
+ "message": "internal import paths must not contain noncanonical dot segments"
177
+ },
178
+ {
179
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
180
+ "message": "relative import paths must not contain normalized traversal segments"
181
+ },
182
+ {
183
+ "regex": "\\\\",
184
+ "message": "import paths must use portable forward slashes"
185
+ },
186
+ {
187
+ "regex": "^(?:@app(?:[/?#]|$)|(?:\\.\\./)+app(?:[/?#]|$))",
188
+ "message": "src environments must not depend on private app modules"
189
+ },
190
+ {
191
+ "regex": "\\.(?:css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:[?#]|$)",
192
+ "message": "src/server must not import browser stylesheets"
193
+ },
194
+ {
195
+ "regex": "^(?:(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@src/browser(?:[/?#]|$)|@orkestrel/[^/]+/browser(?:[/?#]|$)|(?:\\.\\./)+(?:browser|src/browser|app/browser)(?:[/?#]|$))",
196
+ "message": "src/server must not depend on Vue or browser-only modules"
197
+ }
198
+ ]
199
+ }
200
+ ]
201
+ }
202
+ },
203
+ {
204
+ "files": ["app/core/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
205
+ "rules": {
206
+ "no-restricted-imports": [
207
+ "error",
208
+ {
209
+ "patterns": [
210
+ {
211
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
212
+ "message": "imports must not use machine-specific absolute paths"
213
+ },
214
+ {
215
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
216
+ "message": "imports must not use non-Node URL schemes"
217
+ },
218
+ {
219
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
220
+ "message": "internal import paths must not contain noncanonical dot segments"
221
+ },
222
+ {
223
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
224
+ "message": "relative import paths must not contain normalized traversal segments"
225
+ },
226
+ {
227
+ "regex": "\\\\",
228
+ "message": "import paths must use portable forward slashes"
229
+ },
230
+ {
231
+ "regex": "\\.(?:css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:[?#]|$)",
232
+ "message": "app/core must not import browser stylesheets"
233
+ },
234
+ {
235
+ "regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@app/(?:browser|server)(?:[/?#]|$)|@src/(?:browser|server)(?:[/?#]|$)|@orkestrel/[^/]+/(?:browser|server)(?:[/?#]|$)|(?:\\.\\./)+(?:browser|server|src/(?:browser|server)|app/(?:browser|server))(?:[/?#]|$))",
236
+ "message": "app/core must remain host-independent"
237
+ }
238
+ ]
239
+ }
240
+ ]
241
+ }
242
+ },
243
+ {
244
+ "files": ["app/browser/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
245
+ "rules": {
246
+ "no-restricted-imports": [
247
+ "error",
248
+ {
249
+ "patterns": [
250
+ {
251
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
252
+ "message": "imports must not use machine-specific absolute paths"
253
+ },
254
+ {
255
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
256
+ "message": "imports must not use non-Node URL schemes"
257
+ },
258
+ {
259
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
260
+ "message": "internal import paths must not contain noncanonical dot segments"
261
+ },
262
+ {
263
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
264
+ "message": "relative import paths must not contain normalized traversal segments"
265
+ },
266
+ {
267
+ "regex": "\\\\",
268
+ "message": "import paths must use portable forward slashes"
269
+ },
270
+ {
271
+ "regex": "^(?:node:|(?:_(?:http_(?:agent|client|common|incoming|outgoing|server)|stream_(?:duplex|passthrough|readable|transform|wrap|writable)|tls_(?:common|wrap))|assert(?:/strict)?|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|diagnostics_channel|dns(?:/promises)?|domain|events|fs(?:/promises)?|http|http2|https|inspector(?:/promises)?|module|net|os|path(?:/(?:posix|win32))?|perf_hooks|process|punycode|querystring|readline(?:/promises)?|repl|sqlite|stream(?:/(?:consumers|promises|web))?|string_decoder|sys|timers(?:/promises)?|tls|trace_events|tty|url|util(?:/types)?|v8|vm|wasi|worker_threads|zlib)(?:[/?#]|$)|@app/server(?:[/?#]|$)|@src/server(?:[/?#]|$)|@orkestrel/[^/]+/server(?:[/?#]|$)|(?:\\.\\./)+(?:server|src/server|app/server)(?:[/?#]|$))",
272
+ "message": "app/browser must not depend on Node or server-only modules"
273
+ }
274
+ ]
275
+ }
276
+ ]
277
+ }
278
+ },
279
+ {
280
+ "files": ["app/server/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx,vue}"],
281
+ "rules": {
282
+ "no-restricted-imports": [
283
+ "error",
284
+ {
285
+ "patterns": [
286
+ {
287
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
288
+ "message": "imports must not use machine-specific absolute paths"
289
+ },
290
+ {
291
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
292
+ "message": "imports must not use non-Node URL schemes"
293
+ },
294
+ {
295
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
296
+ "message": "internal import paths must not contain noncanonical dot segments"
297
+ },
298
+ {
299
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
300
+ "message": "relative import paths must not contain normalized traversal segments"
301
+ },
302
+ {
303
+ "regex": "\\\\",
304
+ "message": "import paths must use portable forward slashes"
305
+ },
306
+ {
307
+ "regex": "\\.(?:css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:[?#]|$)",
308
+ "message": "app/server must not import browser stylesheets"
309
+ },
310
+ {
311
+ "regex": "^(?:(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@app/browser(?:[/?#]|$)|@src/browser(?:[/?#]|$)|@orkestrel/[^/]+/browser(?:[/?#]|$)|(?:\\.\\./)+(?:browser|src/browser|app/browser)(?:[/?#]|$))",
312
+ "message": "app/server must not depend on Vue or browser-only modules"
313
+ }
314
+ ]
315
+ }
316
+ ]
317
+ }
318
+ },
319
+ {
320
+ "files": ["src/bin/**/*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}"],
321
+ "rules": {
322
+ "no-restricted-imports": [
323
+ "error",
324
+ {
325
+ "patterns": [
326
+ {
327
+ "regex": "^(?:/|[A-Za-z]:[\\\\/])",
328
+ "message": "imports must not use machine-specific absolute paths"
329
+ },
330
+ {
331
+ "regex": "^(?!node:)[A-Za-z][A-Za-z0-9+.-]*:",
332
+ "message": "imports must not use non-Node URL schemes"
333
+ },
334
+ {
335
+ "regex": "(?:^|/)(?!\\.{1,2}(?:/|$))[^/]+/\\.{1,2}(?:/|$)",
336
+ "message": "internal import paths must not contain noncanonical dot segments"
337
+ },
338
+ {
339
+ "regex": "^(?:(?:\\./)+\\.\\.(?:/|$)|(?:\\.\\./)+(?:\\./)+)|//",
340
+ "message": "relative import paths must not contain normalized traversal segments"
341
+ },
342
+ {
343
+ "regex": "\\\\",
344
+ "message": "import paths must use portable forward slashes"
345
+ },
346
+ {
347
+ "regex": "\\.(?:css|less|sass|scss|styl|stylus|pcss|postcss|sss)(?:[?#]|$)",
348
+ "message": "src/bin must not import browser stylesheets"
349
+ },
350
+ {
351
+ "regex": "^(?:@app(?:[/?#]|$)|(?:\\.\\./)+app(?:[/?#]|$))",
352
+ "message": "src/bin must not depend on private app modules"
353
+ },
354
+ {
355
+ "regex": "^(?:(?:vue|vite)(?:[/?#]|$)|@(?:vue|vitejs)/|@src/browser(?:[/?#]|$)|@orkestrel/[^/]+/browser(?:[/?#]|$)|(?:\\.\\./)+(?:browser|src/browser|app/browser)(?:[/?#]|$))",
356
+ "message": "src/bin must not depend on browser-only modules"
357
+ }
358
+ ]
359
+ }
360
+ ]
361
+ }
56
362
  }
57
363
  ]
58
364
  }