@orkestrel/scaffold 0.0.18 → 0.0.20

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 (70) hide show
  1. package/dist/host/AGENTS.md +4 -2
  2. package/dist/host/CLAUDE.md +30 -12
  3. package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +267 -0
  4. package/dist/host/agents/skills/enterprise-bootstrap/agents/openai.yaml +4 -0
  5. package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +609 -0
  6. package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +994 -0
  7. package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +59 -0
  8. package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +312 -0
  9. package/dist/host/agents/skills/orkestrel-align-packages/references/integration.md +4 -13
  10. package/dist/host/agents/skills/orkestrel-build-application/SKILL.md +78 -50
  11. package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +91 -0
  12. package/dist/host/agents/skills/orkestrel-debrief/agents/openai.yaml +4 -0
  13. package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +75 -0
  14. package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +70 -0
  15. package/dist/host/agents/skills/orkestrel-harden-package/SKILL.md +11 -9
  16. package/dist/host/agents/skills/orkestrel-harden-package/references/centralization.md +44 -59
  17. package/dist/host/agents/skills/orkestrel-harden-package/references/hardening.md +14 -6
  18. package/dist/host/agents/skills/orkestrel-polish-surface/SKILL.md +113 -0
  19. package/dist/host/agents/skills/orkestrel-polish-surface/agents/openai.yaml +4 -0
  20. package/dist/host/agents/skills/orkestrel-polish-surface/references/capture-harness.md +82 -0
  21. package/dist/host/claude/agents/application.md +21 -17
  22. package/dist/host/claude/agents/builder.md +2 -0
  23. package/dist/host/claude/agents/codex.md +33 -26
  24. package/dist/host/claude/agents/grok.md +7 -0
  25. package/dist/host/claude/agents/implementer.md +2 -1
  26. package/dist/host/claude/agents/orkestrel.md +20 -15
  27. package/dist/host/claude/agents/planner.md +2 -1
  28. package/dist/host/claude/agents/researcher.md +31 -0
  29. package/dist/host/claude/agents/reviewer.md +6 -0
  30. package/dist/host/claude/agents/scout.md +25 -0
  31. package/dist/host/claude/rules/documentation.md +1 -0
  32. package/dist/host/claude/rules/names.md +5 -7
  33. package/dist/host/claude/rules/quality.md +7 -5
  34. package/dist/host/claude/rules/styles.md +1 -0
  35. package/dist/host/claude/rules/tests.md +1 -0
  36. package/dist/host/claude/rules/typescript.md +3 -10
  37. package/dist/host/claude/rules/workspace.md +2 -5
  38. package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +12 -0
  39. package/dist/host/claude/skills/orkestrel-debrief/SKILL.md +12 -0
  40. package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +12 -0
  41. package/dist/host/codex/agents/analyst.toml +6 -3
  42. package/dist/host/codex/agents/application.toml +17 -19
  43. package/dist/host/codex/agents/builder.toml +3 -2
  44. package/dist/host/codex/agents/checker.toml +4 -2
  45. package/dist/host/codex/agents/grok.toml +3 -1
  46. package/dist/host/codex/agents/implementer.toml +4 -2
  47. package/dist/host/codex/agents/opus.toml +5 -3
  48. package/dist/host/codex/agents/orkestrel.toml +6 -5
  49. package/dist/host/codex/agents/planner.toml +6 -2
  50. package/dist/host/codex/agents/researcher.toml +22 -0
  51. package/dist/host/codex/agents/reviewer.toml +7 -2
  52. package/dist/host/codex/agents/scout.toml +18 -0
  53. package/dist/host/codex/config.toml +16 -4
  54. package/dist/host/dotfiles/prettierignore +3 -0
  55. package/dist/host/guides/src/scaffold.md +42 -12
  56. package/dist/host/manifest.json +109 -3
  57. package/dist/src/core/index.cjs +162 -14
  58. package/dist/src/core/index.cjs.map +1 -1
  59. package/dist/src/core/index.d.cts +17 -6
  60. package/dist/src/core/index.d.ts +17 -6
  61. package/dist/src/core/index.js +162 -15
  62. package/dist/src/core/index.js.map +1 -1
  63. package/dist/src/server/index.cjs +9 -3
  64. package/dist/src/server/index.cjs.map +1 -1
  65. package/dist/src/server/index.d.cts +2 -1
  66. package/dist/src/server/index.d.ts +2 -1
  67. package/dist/src/server/index.js +10 -4
  68. package/dist/src/server/index.js.map +1 -1
  69. package/package.json +1 -1
  70. package/dist/host/agents/skills/orkestrel-build-application/references/application.md +0 -129
@@ -1,25 +1,23 @@
1
1
  name = "application"
2
- description = "Terra executor for one small, fully specified, taste-free Orkestrel application-layer unit."
2
+ description = "Terra executor for one fully specified app-layer unit contracts, isolated config, entries, real host tests, guide parity; stops on any plan deviation."
3
3
  model = "gpt-5.6-terra"
4
4
  model_reasoning_effort = "low"
5
5
  sandbox_mode = "workspace-write"
6
6
  developer_instructions = """
7
- Read AGENTS.md, .claude/rules/application.md, .claude/rules/workspace.md, every
8
- other applicable rule, the dispatch-named skill and required references, and the
9
- governing guide/spec. Accept the unit only when its owned files, transformation,
10
- and acceptance criteria leave no API, naming, architecture, or product decision;
11
- otherwise stop and route it to implementer. Implement the supplied app-layer unit
12
- in owned files only.
13
- Browser and server may depend on app/core; app/core depends on neither host
14
- implementation, and browser/server remain disjoint. Keep configs thin, use real
15
- browser/loopback tests, preserve guide parity and app manifest safety, keep
16
- declared import direction in Oxlint, host isolation in scoped TypeScript
17
- configurations, and Vue/browser plus Node/server resolution in real Vite
18
- builds. Do not add a custom source-language parser. Expose explicit cleanup for
19
- signal-owning runners, and never let published source depend on private app
20
- code. Add no dependencies or product policy. Do not suppress diagnostics, use assertions,
21
- mock project behavior, leave TODOs, re-plan, investigate deviations, commit,
22
- push, or run tree-wide mutating commands. Validate only the owned scope. On
23
- divergence, stop and report expected, found, exact evidence, done/not done, and
24
- one short hypothesis. Never spawn another agent.
7
+ The app-environment counterpart of builder. Accept work only when owned files, the
8
+ transformation, and mechanical acceptance criteria are complete enough that correct
9
+ implementations cannot differ meaningfully; a unit with open contracts, composition, or
10
+ host boundaries belongs to implementer stop and say so.
11
+
12
+ Read AGENTS.md, .claude/rules/application.md, .claude/rules/workspace.md, every other
13
+ applicable rule, the dispatch-named skill and required references, and the governing
14
+ guide/spec before writing; they bind and are not restated here. Write only dispatch-owned
15
+ files; shared and off-limits files are report-only and return as exact patches. Validate
16
+ read-only and scoped to the owned app environment. Never install, commit, push, publish,
17
+ read credentials, run a destructive command, or run a tree-wide mutating command.
18
+
19
+ On divergence, stop and report expected, found, exact evidence, done/not done, and one
20
+ short hypothesis. Otherwise return changes, actual scoped validation, and exact
21
+ shared-file patches. The result is an untrusted proposal requiring independent checker
22
+ and reviewer passes.
25
23
  """
@@ -10,8 +10,9 @@ A unit whose naming, API shape, architecture, or house taste is still open belon
10
10
  implementer: stop and say so.
11
11
 
12
12
  Read AGENTS.md, applicable .claude/rules files, the dispatch-named skill and required
13
- references, and the governing guide/spec before writing. Execute the supplied plan
14
- exactly, in owned files only; shared and off-limits files are report-only and return
13
+ references, and the governing guide/spec before writing. An app-layer unit additionally
14
+ binds .claude/rules/application.md and .claude/rules/workspace.md. Execute the supplied
15
+ plan exactly, in owned files only; shared and off-limits files are report-only and return
15
16
  as exact patches. Add no dependency, suppression, mock, superfluous wrapper, or
16
17
  current-scope TODO/skip/deferral. Never install, commit, push, publish, read
17
18
  credentials, run a destructive command, or run a tree-wide mutating command. Validate
@@ -5,8 +5,10 @@ model_reasoning_effort = "medium"
5
5
  sandbox_mode = "read-only"
6
6
  developer_instructions = """
7
7
  Read AGENTS.md, every rule applicable to changed paths or concepts, the dispatch-named
8
- skill and required references, the governing guide/spec, and the actual diff. Check
9
- each acceptance criterion, naming, placement, centralization, wrappers, declared
8
+ skill and required references, the governing guide/spec, and both the actual diff and
9
+ the repository status supplied with the dispatch. If either is missing, return a
10
+ deviation instead of reconstructing it. Check each acceptance criterion, naming,
11
+ placement, centralization, wrappers, declared
10
12
  dependency reuse, real-test policy, TODO/skip/deferral state, exports, forbidden
11
13
  syntax, owned-file scope, and source/guide parity. Use one evidence pointer per item.
12
14
  Flag judgment questions for reviewer instead of guessing. Never edit or spawn. Return
@@ -7,8 +7,10 @@ developer_instructions = """
7
7
  Act only as a cheap bridge to Cursor Grok. Read AGENTS.md, applicable rules, the
8
8
  dispatch-named skill and references, and the governing guide/spec. Require a bounded
9
9
  question and scope. Resolve the exact model from CURSOR_GROK_MODEL; never guess or
10
- substitute. Invoke Cursor in ask mode:
10
+ substitute. Invoke Cursor in ask mode only for a short bounded ask:
11
11
  agent -p --trust --mode=ask --model "$CURSOR_GROK_MODEL" "<brief>"
12
+ For longer work do not launch anything: return the brief path, the exact resolved
13
+ command, the journal path, and a cap recommendation for the Orchestrator to launch.
12
14
  The brief requires read-only work, concise evidence with file:line pointers, and no
13
15
  raw dumps, design, decisions, or edits. Never use --force, expose CURSOR_API_KEY,
14
16
  read secrets, or edit. Compare git status before and after. Return only the question,
@@ -10,8 +10,10 @@ files, acceptance criteria, and deviation contract. Implement only the bounded u
10
10
  in its explicitly disjoint writable scope within the main checkout. Do not add
11
11
  dependencies, edit shared files, suppress diagnostics, leave current-scope
12
12
  deferrals, use mocks, install, commit, push, publish, read secrets, run destructive
13
- commands, or run tree-wide mutating gates. Validate only owned scope. Stop when
14
- reality diverges; return expected, found, evidence, done/not done, and one short
13
+ commands, or run tree-wide mutating gates. Validate only owned scope. For a defect
14
+ unit, record the exact command and its failing count before the fix and the same
15
+ command's passing count after, and report both. Stop when reality diverges; return
16
+ expected, found, evidence, done/not done, and one short
15
17
  hypothesis. Otherwise return touched paths, diffstat, actual scoped validation, and
16
18
  shared-file patches. Never spawn another agent or accept your own work.
17
19
  """
@@ -14,9 +14,11 @@ to tmp/claude/<unit>.jsonl, gitignored) and record the session id so follow-ups
14
14
  can continue the same session via --resume with context intact.
15
15
  Verify the `claude` CLI is available before dispatch; if it is absent or the
16
16
  dispatch fails, return the failure immediately so the unit can route to the Sol
17
- implementer instead. Be patient: one foreground invocation with a generous
18
- timeout never poll, restart, or kill it. The brief requires owned files,
19
- off-limits files, acceptance criteria, TTTDD, and a deviation contract; it
17
+ implementer instead. An implementation unit is long work: do not launch it. Return
18
+ the brief path, the exact resolved command, the journal path, and a cap
19
+ recommendation, and let the Orchestrator launch it as a tracked background command
20
+ under a hard cap. Never detach a run, poll, restart, or kill one. The brief requires
21
+ owned files, off-limits files, acceptance criteria, TTTDD, and a deviation contract; it
20
22
  forbids dependency installation, commits, pushes, publishing, credentials,
21
23
  destructive commands, shared-file edits, and tree-wide mutating gates. After it
22
24
  returns, verify with git status, the diff, and scoped validation, then return
@@ -7,10 +7,11 @@ developer_instructions = """
7
7
  Read AGENTS.md, applicable .claude/rules files, the dispatch-named skill and required
8
8
  references, guides/src/scaffold.md, the governing package guide, and
9
9
  .claude/agents/orkestrel.md as the canonical ecosystem catalog and operating
10
- reference. Do not edit its generated catalog. Verify only live
11
- state such as versions, ranges, guide parity, branch position, and gate results.
12
- Registry and declared-dependency capabilities must come from live state, exact
13
- installed declarations, and current guides, never memory. Never edit, install, push,
14
- or spawn. Return only the requested primed map, evidence-first health audit, or
10
+ reference. Do not edit its generated catalog. Verify versions, ranges, guide parity,
11
+ branch position, and gate results against manifests, lockfiles, exact installed
12
+ declarations, and current guides, never memory. You read no registry yourself: live
13
+ registry state is evidence the Orchestrator supplies, and without it you report that
14
+ fact as unknown and name what would settle it. Never edit, install, push, or spawn.
15
+ Return only the requested primed map, evidence-first health audit, or
15
16
  dependency blast-radius and topological work-order proposal.
16
17
  """
@@ -9,12 +9,16 @@ dispatch-named skill and references, the governing guide/spec, and the distilled
9
9
  Grok evidence. Pass the exact design brief independently shared with the Sol analyst
10
10
  to:
11
11
  claude -p "<brief>" --model opus --effort high --permission-mode plan
12
+ Run that yourself only for a short bounded design pass; for longer work return the
13
+ brief path, the exact resolved command, the journal path, and a cap recommendation
14
+ for the Orchestrator to launch.
12
15
  Verify that the `claude` CLI is available before dispatch. If it is absent or the
13
16
  dispatch fails, return the failure immediately so the Sol main session can run the
14
17
  design pass itself and record that Opus was unavailable for this round.
15
18
  The brief asks for coherent API shape, vocabulary, ergonomics, at most two
16
- alternatives, bounded units, subjective tensions, and risks. It forbids edits,
17
- commands, reconciliation with Sol, orchestration, and acceptance. Never invoke Fable,
19
+ alternatives, bounded units that each name their role and engine, subjective tensions,
20
+ and risks. It forbids edits, commands, reconciliation with Sol, orchestration, and
21
+ acceptance. Never invoke Fable,
18
22
  read credentials, edit, or spawn. Return the Opus proposal labeled untrusted plus
19
23
  any CLI/auth deviation.
20
24
  """
@@ -0,0 +1,22 @@
1
+ name = "researcher"
2
+ description = "Terra read-only primary-source research: external capabilities, upstream comparisons, installed dependency surfaces, capability/defect matrices with citations."
3
+ model = "gpt-5.6-terra"
4
+ model_reasoning_effort = "medium"
5
+ sandbox_mode = "read-only"
6
+ developer_instructions = """
7
+ The native research lane for the quality-rules research job. Gather and distill; never
8
+ design, implement, or decide. Read AGENTS.md and .claude/rules/quality.md first; they
9
+ bind and are not restated here.
10
+
11
+ Use current primary sources for external capabilities and the exact installed
12
+ declarations for dependencies. Separate verified fact from inference on every line; a
13
+ claim without a citation (URL, file:line, or installed declaration) is inference and must
14
+ say so. When the dispatch asks for a decision input, return the capability/defect matrix
15
+ the quality rules require — every row ending in evidence — never a recommendation dressed
16
+ as fact. Return the distillate only: findings with citations, contradictions surfaced,
17
+ gaps named as gaps; no raw dumps, no process diary, nothing applied.
18
+
19
+ Heavy repository-scale absorption belongs to the grok bench when it is live; this role is
20
+ the bounded-question lane and the fallback when that bench is dark. If a dispatch exceeds
21
+ a bounded question, say so instead of absorbing it.
22
+ """
@@ -8,11 +8,16 @@ Act only as a cheap bridge to Claude Opus 5. Read AGENTS.md, applicable rules, t
8
8
  dispatch-named skill and references, the governing guide/spec, and the actual diff.
9
9
  Pass a bounded design-review brief to:
10
10
  claude -p "<brief>" --model opus --effort high --permission-mode plan
11
+ Run that yourself only for a short bounded review; for longer work return the brief
12
+ path, the exact resolved command, the journal path, and a cap recommendation for the
13
+ Orchestrator to launch.
11
14
  Verify that the `claude` CLI is available before dispatch. If it is absent or the
12
15
  dispatch fails, return the failure immediately so the Sol main session can run the
13
16
  design-audit pass itself and record that Opus was unavailable for this round.
14
17
  Require PASS/FAIL, design-fit blockers with file:line evidence, nonblocking
15
- advisories, and acceptance-criterion confirmations. Forbid edits, commands,
16
- orchestration, reconciliation, and acceptance. Never invoke Fable, read credentials,
18
+ advisories, and acceptance-criterion confirmations. For a rendered or externally
19
+ driven surface, require capture citations as primary evidence and the verdict shape
20
+ of the dispatch-named skill. Forbid edits, commands, orchestration, reconciliation,
21
+ and acceptance. Never invoke Fable, read credentials,
17
22
  edit, or spawn. Return the Opus audit labeled untrusted plus any CLI/auth deviation.
18
23
  """
@@ -0,0 +1,18 @@
1
+ name = "scout"
2
+ description = "Terra read-only repository reconnaissance: locate files, symbols, seams, and structures; return file:line pointers and shape summaries, never judgment."
3
+ model = "gpt-5.6-terra"
4
+ model_reasoning_effort = "low"
5
+ sandbox_mode = "read-only"
6
+ developer_instructions = """
7
+ The cheap reconnaissance lane: answer where things live, what shape they are, and what
8
+ touches them so the Orchestrator can write a precise dispatch. Read AGENTS.md first for
9
+ the repository model and rule map; nothing it owns is restated here.
10
+
11
+ Locate, do not absorb: read excerpts sufficient to identify a seam, an owner, or a
12
+ shape — deep reading and synthesis belong to the grok bench, quality judgment to the
13
+ review roles; if the question needs either, say so instead of drifting into it. Return
14
+ pointers, not prose: file:line for every claim, the minimal shape summary the question
15
+ needs, and an explicit list of searched-and-empty places — an absence claim is only as
16
+ good as its named search. Never edit, never run commands, never speculate past the
17
+ evidence.
18
+ """
@@ -32,15 +32,18 @@ objective and realistic analysis, correctness audit, and all nontrivial
32
32
  implementation. Cursor Grok owns research, scouting, context-heavy reading, and
33
33
  distillation, read-only, through the grok bridge. Claude Opus 5 owns subjective and
34
34
  creative design and design-fit review, read-only, through the planner and reviewer
35
- bridges. Terra drives bridges and explicitly mechanical evidence roles only; it is
36
- never the default implementation route.
35
+ bridges. Terra drives bridges, fully specified units (builder, application), and read-only
36
+ evidence roles (checker, verifier, orkestrel, researcher, scout) only; it is
37
+ never the default implementation route. researcher and scout are the native lanes
38
+ for bounded primary-source questions and repository reconnaissance, and the
39
+ fallback when the Grok bench is dark — never repository-scale absorption.
37
40
 
38
41
  Work directly for trivial tasks. For non-trivial work: send the reading to grok; run
39
42
  planner (Opus 5, subjective) and analyst (Sol, objective) on the
40
43
  SAME design brief in parallel without showing either the other's answer, then
41
44
  reconcile them into one plan; plan bounded units with disjoint ownership; route each
42
45
  nontrivial unit to implementer (Sol) or the opus implementation bridge (Opus 5) —
43
- whichever engine fits the unit — reserving builder/application for fully
46
+ whichever engine fits the unit — reserving builder for fully
44
47
  specified taste-free mechanics; integrate
45
48
  shared files serially; obtain an independent reviewer (Opus 5) design audit and an
46
49
  independent analyst (Sol) correctness audit plus a checker conformance pass; then
@@ -52,7 +55,16 @@ Every dispatch includes objective, context, AGENTS.md, applicable rules, governi
52
55
  skill name/path and required references (or explicit none), guide/spec, owned and
53
56
  off-limits files, permissions, exact output, deviation behavior, and independently
54
57
  checkable acceptance criteria. Writers stop when reality diverges; they do not re-plan
55
- or debug beyond scope.
58
+ or debug beyond scope. After reconciling findings into briefs, every retained finding
59
+ names the brief item that carries it; a finding with no carrier is a dropped finding.
60
+
61
+ A claim about a rendered or externally driven surface is evidenced by its capture
62
+ portfolio or a real foreign client driving it, never by source alone; the campaign
63
+ skill defines the fixed verdict shape and single terminal line for multi-round audits,
64
+ and a fix unit's auditor is an engine that did not write it. Size every long-exec cap
65
+ from the observed high mark of comparable units plus a gate allowance plus explicit
66
+ slack. The first use of any CLI flag, subcommand, quoting form, or stdin combination
67
+ happens in a throwaway probe, never inside a dispatched unit.
56
68
 
57
69
  No executor self-assessment is authoritative. External findings are hypotheses until
58
70
  verified against source. No agent commits, pushes, tags, publishes, installs
@@ -3,3 +3,6 @@
3
3
 
4
4
  # Build output (also gitignored, listed for explicitness).
5
5
  dist/
6
+
7
+ # Generated single-file application showcase.
8
+ demo/showcase.html
@@ -186,10 +186,11 @@ is `'INVALID' | 'BLOCKED' | 'DESTROYED' | 'TARGET' | 'WRITE' | 'FETCH'`.
186
186
  environment contributes, its test-project label, and — on the `src` axis — its `exports` subpath
187
187
  and build formats, or — on the `app` axis — its optional runtime entry.
188
188
 
189
- `ViteMachinery` names the three host-specific pipelines a workspace's generated `vite.config.ts` may
189
+ `ViteMachinery` names the four host-specific pipelines a workspace's generated `vite.config.ts` may
190
190
  carry: `browser` selects the shared root CSS-analysis and Playwright machinery, `vue` selects the
191
191
  single-file-component, HTML, and development-server machinery an application browser environment
192
- needs, and `output` selects build-output containment. The root machinery selection never attaches a
192
+ needs, `output` selects build-output containment, and `showcase` selects the optional single-file
193
+ application-browser projection. The root machinery selection never attaches a
193
194
  `css` property to a nonbrowser project: only the `srcBrowser` and `appBrowser` factories own
194
195
  `ENVIRONMENT_CSS`. It never selects a boundary guarantee — those ship in every shape, as the
195
196
  compilers section sets out.
@@ -197,7 +198,8 @@ compilers section sets out.
197
198
  `ViteFacts` is the optional structural-fact slice shared by every root Vite compiler:
198
199
  `bin`, `integration`, and `service` each select their matching standalone project when `true`;
199
200
  `global` records the exact-case consumer-owned global-setup module and wires it into each eligible
200
- project.
201
+ project; `showcase` records the exact-case consumer-owned showcase wrapper and selects only its
202
+ generated browser machinery.
201
203
 
202
204
  `ViteProjectRegistration` carries one generated project factory identifier and its optional browser
203
205
  label. Root configuration renderers preserve that browser ownership as data through registration
@@ -222,6 +224,7 @@ interface Blueprint {
222
224
  readonly integration: boolean
223
225
  readonly service: boolean
224
226
  readonly global: boolean
227
+ readonly showcase: boolean
225
228
  }
226
229
  ```
227
230
 
@@ -232,7 +235,7 @@ packages — a peer flagged `optional` also gets a `peerDependenciesMeta` entry.
232
235
  package-specific development dependencies merged over the generated baseline, and may carry any
233
236
  valid npm package name.
234
237
 
235
- `bin`, `integration`, `service`, and `global` are structural project facts. All four obey one law:
238
+ `bin`, `integration`, `service`, `global`, and `showcase` are structural project facts. All five obey one law:
236
239
  each is `true` only when the workspace physically ships the directory or exact-case file that
237
240
  defines it — never because of the workspace's name, and never because a sibling fact is set.
238
241
  `deriveBlueprint` probes those paths, so a fresh compile and an audit of a mature repository agree
@@ -254,6 +257,11 @@ on what the workspace is.
254
257
  governing setup-presence fact. A declared `src/browser` project runs that consumer-owned module
255
258
  as `globalSetup`; integration runs it only when `bin` and `integration` are also true.
256
259
  Application-browser, styles, service, and unrelated proof projects never receive it.
260
+ - **`showcase`** — the physical, exact-case regular file
261
+ `configs/app/vite.showcase.config.ts` exists. It is valid only with `app/browser` and turns on the
262
+ computed wrapper, the closed `appShowcase()` root factory, three opt-in scripts, and the
263
+ consumer-only `vite-plugin-singlefile` development dependency. A directory, link, wrong-case
264
+ name, absent wrapper, demo HTML, script, or installed dependency never implies this fact.
257
265
 
258
266
  A service workspace owes two companion files beside that directory, and derivation requires both
259
267
  physically present: `tests/setupService.ts` and `scripts/service.sh`. Either missing companion is a
@@ -374,6 +382,7 @@ From [`constants.ts`](../../src/core/constants.ts).
374
382
  | `HOST_PATHS` | const |
375
383
  | `SERVICE_SCRIPT_PATH` | const |
376
384
  | `GLOBAL_SETUP_PATH` | const |
385
+ | `SHOWCASE_CONFIG_PATH` | const |
377
386
  | `NAME_PATTERN` | const |
378
387
  | `MAX_NAME_LENGTH` | const |
379
388
  | `MAX_DEPENDENCY_NAME_LENGTH` | const |
@@ -425,7 +434,8 @@ host artifacts, and it is the staging manifest rather than the per-plan carried
425
434
  `stageHost` vendors every path on it, while each plan carries the subset `selectHostPaths` selects
426
435
  for that one workspace. `SERVICE_SCRIPT_PATH` names the consumer-owned provisioner a service
427
436
  workspace's audit expects, and `GLOBAL_SETUP_PATH` names the consumer-owned Vitest global-setup
428
- module that independently selected projects can load.
437
+ module that independently selected projects can load. `SHOWCASE_CONFIG_PATH` names the sole
438
+ consumer-owned regular file whose exact physical presence enables the optional app showcase.
429
439
 
430
440
  The bounds are public because they are part of the contract, not implementation trivia.
431
441
  `MAX_ARTIFACT_BYTES` caps one artifact at 5 MiB and `MAX_TOTAL_ARTIFACT_BYTES` caps one blueprint,
@@ -973,8 +983,9 @@ omitting an absent path entirely. `readManifest` reads `package.json` text, and
973
983
  `deriveBlueprint` is the faithful inverse an audit needs: it reconstructs a blueprint from an
974
984
  existing workspace so a mature package is diffed against its own would-be scaffold rather than a
975
985
  dependency-less stand-in. Environments come from `src/<environment>/` and `app/<environment>/`, the
976
- three structural project facts from their directory probes, and `global` from the physical,
977
- exact-case `tests/setupGlobal.ts` file; the service companion law remains the one the blueprint
986
+ three directory-shaped structural project facts from their directory probes, `global` from the
987
+ physical exact-case `tests/setupGlobal.ts` file, and `showcase` from the physical exact-case regular
988
+ file `configs/app/vite.showcase.config.ts`; the service companion law remains the one the blueprint
978
989
  section states — every fact is a reading of the filesystem, never of the name. Dependencies and peers come
979
990
  from the manifest's scoped entries, with an optional peer recovered from
980
991
  `peerDependenciesMeta`; and `extras` is every development dependency minus the complete set
@@ -1129,8 +1140,8 @@ the selected source and application projects from the canonical environment orde
1129
1140
  `viteProjectDefinitions` renders the standalone proof and structural-fact definitions in that same
1130
1141
  order with one blank line between declarations. Both consume `ViteFacts`, so each optional project
1131
1142
  is controlled only by its matching `bin`, `integration`, or `service` blueprint fact; the same
1132
- slice carries `global` to integration and the source-browser compiler without adding another
1133
- project.
1143
+ slice carries `global` to integration and the source-browser compiler, and `showcase` to the
1144
+ application-browser compiler, without adding another test project.
1134
1145
 
1135
1146
  `coreViteConfig`, `srcViteConfig`, `binViteConfig`, and `appViteConfig` emit the thin per-target
1136
1147
  wrappers. `coreViteConfig()` is parameterless and never imports or attaches browser CSS machinery;
@@ -1156,7 +1167,9 @@ that field.
1156
1167
  `configArtifacts`, `sourceArtifacts`, `applicationArtifacts`, `testArtifacts`, and `guideArtifacts`
1157
1168
  are the per-group drafters. When `bin` is selected, `configArtifacts` includes
1158
1169
  `configs/src/tsconfig.bin.json` and `configs/src/vite.bin.config.ts` beside the declared environment
1159
- configuration pairs. `paritySpecifiers` computes the self-specifier and module map the
1170
+ configuration pairs. When `showcase` is selected, it includes the computed thin
1171
+ `configs/app/vite.showcase.config.ts` wrapper beside the ordinary application browser pair.
1172
+ `paritySpecifiers` computes the self-specifier and module map the
1160
1173
  generated parity suite resolves fence imports through. `guideMemberTable`, `guideUsage`,
1161
1174
  `guideMethods`, and `guideTests` render the generated guide's member tables, usage examples, method
1162
1175
  contract, and test inventory. `fillArtifact` fills one template entry into a `template`-origin
@@ -1532,6 +1545,8 @@ a fixed, interleaved order so aggregates sit immediately before their per-enviro
1532
1545
  `build:host` for a bin workspace
1533
1546
  - `dev` when a browser application is selected; `serve` and `serve:build` when a server application
1534
1547
  is selected
1548
+ - `showcase`, `build:showcase`, and `show` only when the physical showcase wrapper is present;
1549
+ `show` builds and copies `dist/showcase/index.html` to `demo/showcase.html`
1535
1550
  - `prepublishOnly` chaining `format:check → lint:check → check → build → test`, followed by
1536
1551
  `test:integration` when the integration axis is selected
1537
1552
 
@@ -1550,6 +1565,10 @@ projects, and nothing there needs a build artifact or a foreign process. Publica
1550
1565
  asymmetry — `prepublishOnly` appends `test:integration`, because a package about to be published
1551
1566
  should prove itself against its own built output, while `test:service` is never in that chain.
1552
1567
  Neither default testing nor publication starts or requires a foreign process.
1568
+ The showcase is likewise outside `build`, `test`, and `prepublishOnly`; it is an explicit projection
1569
+ of `app/browser`, not an environment, test-project row, or source/demo artifact.
1570
+ Its copied `demo/showcase.html` is generated and minified, so the mirrored `.prettierignore` keeps it
1571
+ outside the whole-tree formatter while source and configuration files remain fully gated.
1553
1572
 
1554
1573
  When a prerequisite is absent the proof fails rather than skipping. `test:integration` reads the
1555
1574
  workspace's own built output, so it belongs after `build` — which is exactly where `prepublishOnly`
@@ -1665,6 +1684,17 @@ contract and is reported as computed-artifact drift by `scaffold audit`. The out
1665
1684
  still rejects public directories, browser asset inlining, and output path overrides in a
1666
1685
  post-factory composition as defense in depth; that narrow check is not a general extension seam.
1667
1686
 
1687
+ When the showcase fact is present, the generated root also exports closed
1688
+ `appShowcase(...config: never[])`; both factories reject every argument at runtime and
1689
+ share one fixed internal browser configuration. The ordinary factory retains its strict
1690
+ `script-src 'self'` policy, external asset auditing, and `dist/app/browser` output. The showcase
1691
+ factory alone writes `dist/showcase`, applies `viteSingleFile` with
1692
+ `removeViteModuleLoader: true` and `useRecommendedBuildConfig: true`, uses Oxc and Lightning CSS
1693
+ minification for an `esnext` build without source maps or module preload, and inserts a non-empty ISO
1694
+ `build-id` meta. Its generated CSP admits only the inline script and style required by the
1695
+ self-contained `file://` artifact while retaining `script-src-attr 'none'`, `object-src 'none'`, and
1696
+ `base-uri 'none'`.
1697
+
1668
1698
  The browser development server applies the same trust boundary before Vite's internal middleware.
1669
1699
  Its explicit filesystem allowlist contains only browser/core source roots, browser tests, their
1670
1700
  exact setup files, and installed dependencies. The pre-internal middleware decodes direct,
@@ -2238,8 +2268,8 @@ coreTsconfig()
2238
2268
  srcTsconfig('server')
2239
2269
  appTsconfig('browser', true)
2240
2270
 
2241
- viteMachinery(['core']) // { browser: false, vue: false, output: true }
2242
- viteMachinery([], ['core', 'browser']) // { browser: true, vue: true, output: true }
2271
+ viteMachinery(['core']) // { browser: false, vue: false, output: true, showcase: false }
2272
+ viteMachinery([], ['core', 'browser']) // { browser: true, vue: true, output: true, showcase: false }
2243
2273
  renderViteTest([{ project: 'srcCore' }], false).includes('projects: [srcCore]') // true
2244
2274
  viteHeader(viteMachinery([], ['core', 'browser'])) // the shared header, with browser and Vue support
2245
2275
  coreViteConfig()
@@ -1,5 +1,35 @@
1
1
  {
2
2
  "entries": [
3
+ {
4
+ "storage": "agents/skills/enterprise-bootstrap/SKILL.md",
5
+ "destination": ".agents/skills/enterprise-bootstrap/SKILL.md",
6
+ "executable": false
7
+ },
8
+ {
9
+ "storage": "agents/skills/enterprise-bootstrap/agents/openai.yaml",
10
+ "destination": ".agents/skills/enterprise-bootstrap/agents/openai.yaml",
11
+ "executable": false
12
+ },
13
+ {
14
+ "storage": "agents/skills/enterprise-bootstrap/references/bootstrap-reference.md",
15
+ "destination": ".agents/skills/enterprise-bootstrap/references/bootstrap-reference.md",
16
+ "executable": false
17
+ },
18
+ {
19
+ "storage": "agents/skills/enterprise-bootstrap/references/components.md",
20
+ "destination": ".agents/skills/enterprise-bootstrap/references/components.md",
21
+ "executable": false
22
+ },
23
+ {
24
+ "storage": "agents/skills/enterprise-bootstrap/references/frontend-design.md",
25
+ "destination": ".agents/skills/enterprise-bootstrap/references/frontend-design.md",
26
+ "executable": false
27
+ },
28
+ {
29
+ "storage": "agents/skills/enterprise-bootstrap/references/utilities.md",
30
+ "destination": ".agents/skills/enterprise-bootstrap/references/utilities.md",
31
+ "executable": false
32
+ },
3
33
  {
4
34
  "storage": "agents/skills/orkestrel-align-packages/SKILL.md",
5
35
  "destination": ".agents/skills/orkestrel-align-packages/SKILL.md",
@@ -31,8 +61,23 @@
31
61
  "executable": false
32
62
  },
33
63
  {
34
- "storage": "agents/skills/orkestrel-build-application/references/application.md",
35
- "destination": ".agents/skills/orkestrel-build-application/references/application.md",
64
+ "storage": "agents/skills/orkestrel-debrief/SKILL.md",
65
+ "destination": ".agents/skills/orkestrel-debrief/SKILL.md",
66
+ "executable": false
67
+ },
68
+ {
69
+ "storage": "agents/skills/orkestrel-debrief/agents/openai.yaml",
70
+ "destination": ".agents/skills/orkestrel-debrief/agents/openai.yaml",
71
+ "executable": false
72
+ },
73
+ {
74
+ "storage": "agents/skills/orkestrel-debrief/references/field-testing.md",
75
+ "destination": ".agents/skills/orkestrel-debrief/references/field-testing.md",
76
+ "executable": false
77
+ },
78
+ {
79
+ "storage": "agents/skills/orkestrel-debrief/references/instruction-audit.md",
80
+ "destination": ".agents/skills/orkestrel-debrief/references/instruction-audit.md",
36
81
  "executable": false
37
82
  },
38
83
  {
@@ -65,6 +110,21 @@
65
110
  "destination": ".agents/skills/orkestrel-harden-package/references/research.md",
66
111
  "executable": false
67
112
  },
113
+ {
114
+ "storage": "agents/skills/orkestrel-polish-surface/SKILL.md",
115
+ "destination": ".agents/skills/orkestrel-polish-surface/SKILL.md",
116
+ "executable": false
117
+ },
118
+ {
119
+ "storage": "agents/skills/orkestrel-polish-surface/agents/openai.yaml",
120
+ "destination": ".agents/skills/orkestrel-polish-surface/agents/openai.yaml",
121
+ "executable": false
122
+ },
123
+ {
124
+ "storage": "agents/skills/orkestrel-polish-surface/references/capture-harness.md",
125
+ "destination": ".agents/skills/orkestrel-polish-surface/references/capture-harness.md",
126
+ "executable": false
127
+ },
68
128
  {
69
129
  "storage": "claude/agents/application.md",
70
130
  "destination": ".claude/agents/application.md",
@@ -105,11 +165,21 @@
105
165
  "destination": ".claude/agents/planner.md",
106
166
  "executable": false
107
167
  },
168
+ {
169
+ "storage": "claude/agents/researcher.md",
170
+ "destination": ".claude/agents/researcher.md",
171
+ "executable": false
172
+ },
108
173
  {
109
174
  "storage": "claude/agents/reviewer.md",
110
175
  "destination": ".claude/agents/reviewer.md",
111
176
  "executable": false
112
177
  },
178
+ {
179
+ "storage": "claude/agents/scout.md",
180
+ "destination": ".claude/agents/scout.md",
181
+ "executable": false
182
+ },
113
183
  {
114
184
  "storage": "claude/agents/verifier.md",
115
185
  "destination": ".claude/agents/verifier.md",
@@ -175,6 +245,11 @@
175
245
  "destination": ".claude/settings.json",
176
246
  "executable": false
177
247
  },
248
+ {
249
+ "storage": "claude/skills/enterprise-bootstrap/SKILL.md",
250
+ "destination": ".claude/skills/enterprise-bootstrap/SKILL.md",
251
+ "executable": false
252
+ },
178
253
  {
179
254
  "storage": "claude/skills/orkestrel-align-packages/SKILL.md",
180
255
  "destination": ".claude/skills/orkestrel-align-packages/SKILL.md",
@@ -185,11 +260,21 @@
185
260
  "destination": ".claude/skills/orkestrel-build-application/SKILL.md",
186
261
  "executable": false
187
262
  },
263
+ {
264
+ "storage": "claude/skills/orkestrel-debrief/SKILL.md",
265
+ "destination": ".claude/skills/orkestrel-debrief/SKILL.md",
266
+ "executable": false
267
+ },
188
268
  {
189
269
  "storage": "claude/skills/orkestrel-harden-package/SKILL.md",
190
270
  "destination": ".claude/skills/orkestrel-harden-package/SKILL.md",
191
271
  "executable": false
192
272
  },
273
+ {
274
+ "storage": "claude/skills/orkestrel-polish-surface/SKILL.md",
275
+ "destination": ".claude/skills/orkestrel-polish-surface/SKILL.md",
276
+ "executable": false
277
+ },
193
278
  {
194
279
  "storage": "codex/agents/analyst.toml",
195
280
  "destination": ".codex/agents/analyst.toml",
@@ -235,11 +320,21 @@
235
320
  "destination": ".codex/agents/planner.toml",
236
321
  "executable": false
237
322
  },
323
+ {
324
+ "storage": "codex/agents/researcher.toml",
325
+ "destination": ".codex/agents/researcher.toml",
326
+ "executable": false
327
+ },
238
328
  {
239
329
  "storage": "codex/agents/reviewer.toml",
240
330
  "destination": ".codex/agents/reviewer.toml",
241
331
  "executable": false
242
332
  },
333
+ {
334
+ "storage": "codex/agents/scout.toml",
335
+ "destination": ".codex/agents/scout.toml",
336
+ "executable": false
337
+ },
243
338
  {
244
339
  "storage": "codex/agents/verifier.toml",
245
340
  "destination": ".codex/agents/verifier.toml",
@@ -349,22 +444,33 @@
349
444
  "roots": [
350
445
  ".agents",
351
446
  ".agents/skills",
447
+ ".agents/skills/enterprise-bootstrap",
448
+ ".agents/skills/enterprise-bootstrap/agents",
449
+ ".agents/skills/enterprise-bootstrap/references",
352
450
  ".agents/skills/orkestrel-align-packages",
353
451
  ".agents/skills/orkestrel-align-packages/agents",
354
452
  ".agents/skills/orkestrel-align-packages/references",
355
453
  ".agents/skills/orkestrel-build-application",
356
454
  ".agents/skills/orkestrel-build-application/agents",
357
- ".agents/skills/orkestrel-build-application/references",
455
+ ".agents/skills/orkestrel-debrief",
456
+ ".agents/skills/orkestrel-debrief/agents",
457
+ ".agents/skills/orkestrel-debrief/references",
358
458
  ".agents/skills/orkestrel-harden-package",
359
459
  ".agents/skills/orkestrel-harden-package/agents",
360
460
  ".agents/skills/orkestrel-harden-package/references",
461
+ ".agents/skills/orkestrel-polish-surface",
462
+ ".agents/skills/orkestrel-polish-surface/agents",
463
+ ".agents/skills/orkestrel-polish-surface/references",
361
464
  ".claude",
362
465
  ".claude/agents",
363
466
  ".claude/rules",
364
467
  ".claude/skills",
468
+ ".claude/skills/enterprise-bootstrap",
365
469
  ".claude/skills/orkestrel-align-packages",
366
470
  ".claude/skills/orkestrel-build-application",
471
+ ".claude/skills/orkestrel-debrief",
367
472
  ".claude/skills/orkestrel-harden-package",
473
+ ".claude/skills/orkestrel-polish-surface",
368
474
  ".codex",
369
475
  ".codex/agents",
370
476
  ".cursor",