@orkestrel/scaffold 0.0.77 → 0.0.79
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/dist/agents/skills/orkestrel-dispatch/scripts/bench.js +204 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/brief.js +102 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/cite.js +95 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +207 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/login.js +114 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/result.js +108 -0
- package/dist/agents/skills/orkestrel-dispatch/scripts/sweep.js +156 -0
- package/dist/agents/skills/orkestrel-harden/scripts/discovery.js +196 -0
- package/dist/agents/skills/orkestrel-publish/scripts/compare.js +206 -0
- package/dist/agents/skills/orkestrel-publish/scripts/pins.js +93 -0
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +458 -0
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +188 -0
- package/dist/agents/skills/orkestrel-scout/scripts/map.js +300 -0
- package/dist/agents/templates/brief.md +55 -0
- package/dist/bin/main.js +58 -6
- package/dist/bin/main.js.map +1 -1
- package/dist/host/AGENTS.md +77 -135
- package/dist/host/agents/orchestration.md +147 -998
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +2 -2
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +6 -13
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/fleet.md +5 -7
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +11 -22
- package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +8 -16
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-debrief/references/retention.md +13 -13
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +61 -0
- package/dist/host/agents/skills/orkestrel-dispatch/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/bench.md +25 -0
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +32 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/bench.ts +259 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/brief.ts +110 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/cite.ts +115 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +239 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +124 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/login.ts +123 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/result.ts +129 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/sweep.ts +157 -0
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +42 -193
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +38 -108
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +35 -134
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +10 -14
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/hardening.md +3 -4
- package/dist/host/agents/skills/orkestrel-harden/scripts/discovery.ts +228 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +15 -23
- package/dist/host/agents/skills/orkestrel-journey/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/captures.md +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/SKILL.md +25 -33
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/{orkestrel-polish-surface → orkestrel-polish}/references/capture-harness.md +3 -3
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +33 -20
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +39 -0
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +22 -21
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +27 -14
- package/dist/host/agents/skills/orkestrel-publish/scripts/compare.ts +220 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/pins.ts +114 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +629 -0
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +242 -0
- package/dist/host/agents/skills/orkestrel-scout/SKILL.md +28 -0
- package/dist/host/agents/skills/orkestrel-scout/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-scout/scripts/map.ts +352 -0
- package/dist/host/agents/templates/brief.md +21 -142
- package/dist/host/agents/transports/claude-cli.md +21 -0
- package/dist/host/agents/transports/codex.md +38 -159
- package/dist/host/agents/transports/cursor.md +16 -65
- package/dist/host/claude/AGENTS.md +38 -0
- package/dist/host/claude/agents/analyst.md +14 -53
- package/dist/host/claude/agents/astra.md +26 -0
- package/dist/host/claude/agents/builder.md +14 -30
- package/dist/host/claude/agents/checker.md +13 -57
- package/dist/host/claude/agents/distiller.md +11 -26
- package/dist/host/claude/agents/grok.md +12 -35
- package/dist/host/claude/agents/opus.md +14 -30
- package/dist/host/claude/agents/orkestrel.md +4 -4
- package/dist/host/claude/agents/planner.md +10 -44
- package/dist/host/claude/agents/researcher.md +11 -30
- package/dist/host/claude/agents/reviewer.md +11 -95
- package/dist/host/claude/agents/scout.md +9 -23
- package/dist/host/claude/agents/verifier.md +15 -33
- package/dist/host/claude/rules/documentation.md +8 -2
- package/dist/host/claude/rules/portability.md +7 -1
- package/dist/host/claude/rules/quality.md +36 -96
- package/dist/host/claude/rules/styles.md +3 -0
- package/dist/host/claude/rules/tests.md +6 -3
- package/dist/host/claude/rules/workspace.md +21 -15
- package/dist/host/claude/rules/writing.md +57 -108
- package/dist/host/claude/settings.json +5 -3
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +1 -1
- package/dist/host/claude/skills/{orkestrel-align-packages → orkestrel-align}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-build-application → orkestrel-build}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-dispatch/SKILL.md +11 -0
- package/dist/host/claude/skills/orkestrel-falsify/SKILL.md +2 -1
- package/dist/host/claude/skills/{orkestrel-harden-package → orkestrel-harden}/SKILL.md +2 -2
- package/dist/host/claude/skills/{orkestrel-prove-journey → orkestrel-journey}/SKILL.md +2 -2
- package/dist/host/claude/skills/orkestrel-polish/SKILL.md +12 -0
- package/dist/host/claude/skills/orkestrel-scout/SKILL.md +11 -0
- package/dist/host/codex/agents/analyst.toml +14 -31
- package/dist/host/codex/agents/astra.toml +25 -0
- package/dist/host/codex/agents/builder.toml +13 -20
- package/dist/host/codex/agents/checker.toml +13 -27
- package/dist/host/codex/agents/distiller.toml +9 -22
- package/dist/host/codex/agents/grok.toml +11 -30
- package/dist/host/codex/agents/opus.toml +14 -22
- package/dist/host/codex/agents/orkestrel.toml +1 -1
- package/dist/host/codex/agents/planner.toml +11 -28
- package/dist/host/codex/agents/researcher.toml +10 -22
- package/dist/host/codex/agents/reviewer.toml +11 -27
- package/dist/host/codex/agents/scout.toml +11 -17
- package/dist/host/codex/agents/verifier.toml +16 -12
- package/dist/host/codex/config.toml +18 -21
- package/dist/host/cursor/mcp.json +0 -4
- package/dist/host/cursor/rules/orchestration.mdc +12 -20
- package/dist/host/dotfiles/mcp.json +0 -4
- package/dist/host/dotfiles/oxlintrc.json +7 -0
- package/dist/host/guides/probe.md +18 -14
- package/dist/host/guides/scaffold.md +147 -83
- package/dist/host/guides/test.md +442 -148
- package/dist/host/manifest.json +322 -185
- package/dist/host/scripts/codex.sh +0 -0
- package/dist/host/scripts/cursor.sh +0 -0
- package/dist/host/scripts/deps.sh +0 -0
- package/dist/host/scripts/ollama.sh +0 -0
- package/dist/host/tests/config.test.ts +86 -55
- package/dist/host/tests/policy.test.ts +1 -5
- package/dist/host/tests/setupPolicy.ts +179 -4
- package/dist/src/core/index.cjs +264 -89
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +95 -30
- package/dist/src/core/index.d.ts +95 -30
- package/dist/src/core/index.js +262 -90
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +55 -9
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +29 -4
- package/dist/src/server/index.d.ts +29 -4
- package/dist/src/server/index.js +56 -11
- package/dist/src/server/index.js.map +1 -1
- package/package.json +16 -12
- package/dist/host/CLAUDE.md +0 -61
- package/dist/host/agents/skills/orkestrel-prove-journey/agents/openai.yaml +0 -4
- package/dist/host/agents/transports/claude.md +0 -49
- package/dist/host/claude/agents/application.md +0 -36
- package/dist/host/claude/agents/sol.md +0 -61
- package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +0 -12
- package/dist/host/codex/agents/application.toml +0 -25
- package/dist/host/codex/agents/sol.toml +0 -19
- /package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/integration.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/centralization.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/contract.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-harden-package → orkestrel-harden}/references/research.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/decide.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/layer.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/statechart.md +0 -0
- /package/dist/host/agents/skills/{orkestrel-prove-journey → orkestrel-journey}/references/styles.md +0 -0
|
@@ -11,7 +11,7 @@ description: >-
|
|
|
11
11
|
scales, or must look professional rather than like stock Bootstrap. Covers
|
|
12
12
|
aesthetics, typography, color modes, design tokens, elevation, finishing
|
|
13
13
|
details, accessibility (WCAG 2.2 AA), responsive layout, and enterprise app
|
|
14
|
-
patterns. The `orkestrel-polish
|
|
14
|
+
patterns. The `orkestrel-polish` skill owns a requested verdict,
|
|
15
15
|
round, or campaign over a surface that already renders, including a review
|
|
16
16
|
that changes nothing; in that campaign's fix units, use this skill for
|
|
17
17
|
Bootstrap craft.
|
|
@@ -58,7 +58,7 @@ as a runtime producer is the exception, and only for the property that lookup na
|
|
|
58
58
|
4. **Write framework-neutral markup** — semantic HTML plus Bootstrap classes. Wire behavior with the project's stack; in an SPA prefer framework-native Bootstrap wrappers over competing DOM ownership ([bootstrap-reference.md](references/bootstrap-reference.md) → JavaScript lifecycle).
|
|
59
59
|
5. **Keep this folder intact** so its relative links resolve. Install or vendor it wherever the tooling looks for skills; the paths are tooling-specific, the content is not.
|
|
60
60
|
6. **Use the installed Bootstrap.** Otherwise take the pinned CDN example from [bootstrap-reference.md](references/bootstrap-reference.md) → Quick start. Do not upgrade dependencies as a side effect of a visual pass.
|
|
61
|
-
7. **Apply this skill** to the work in its frontmatter. For a requested verdict, round, or campaign over an already rendering surface, use `orkestrel-polish
|
|
61
|
+
7. **Apply this skill** to the work in its frontmatter. For a requested verdict, round, or campaign over an already rendering surface, use `orkestrel-polish`; use this skill for the campaign's Bootstrap fixes.
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
@@ -257,7 +257,7 @@ a pass label alone.
|
|
|
257
257
|
|
|
258
258
|
Use captures for these judgments, not synthetic negative controls. Record the criterion, capture,
|
|
259
259
|
viewport/theme/state, finding, and disposition. A missing capture leaves the judgment open. For a
|
|
260
|
-
requested review round or campaign, use `orkestrel-polish
|
|
260
|
+
requested review round or campaign, use `orkestrel-polish` rather than creating one here.
|
|
261
261
|
|
|
262
262
|
- **Task and hierarchy:** the main information and action lead; supporting content remains readable;
|
|
263
263
|
labels, semantics, and destructive rank match the work. Check a grayscale view as a hierarchy aid.
|
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: orkestrel-align
|
|
2
|
+
name: orkestrel-align
|
|
3
3
|
description: Audit and improve how two or more Orkestrel packages, or their core, server, browser, and app environments, fit together. Use for coordinated package-stack refactors, cross-package extraction, developer-ergonomics reviews, end-to-end or live integration testing, dependency and guide alignment, and fleet/package-manager campaigns. Preserve host-independent core boundaries, update dependents topologically, and use the package-hardening workflow for each implementation unit.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Align Orkestrel packages
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Read
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
1. `AGENTS.md` and applicable `.claude/rules/*.md`.
|
|
13
|
-
2. `.agents/orchestration.md` for orchestration.
|
|
14
|
-
3. The `integration.md` and `fleet.md` references selected later in this section.
|
|
15
|
-
4. Relevant package guides, `guides/scaffold.md`, and the configured Orkestrel specialist.
|
|
16
|
-
|
|
17
|
-
Explicit user scope wins.
|
|
10
|
+
`AGENTS.md` § Authority and loading names the files every unit reads. This skill adds the reference selected in this section, `guides/scaffold.md`, and the `orkestrel` role's catalog table.
|
|
18
11
|
|
|
19
12
|
Use live manifests, lockfiles, installed declarations, guides, branches, and consumer code. Never trust remembered package versions, dependency ranges, or catalog entries.
|
|
20
13
|
|
|
@@ -22,7 +15,7 @@ Load [integration.md](references/integration.md) for cross-package or cross-envi
|
|
|
22
15
|
|
|
23
16
|
Load [fleet.md](references/fleet.md) for version/range/guide drift, dependency blast radius, consumer-artifact validation, or campaign state.
|
|
24
17
|
|
|
25
|
-
Invoke `$orkestrel-harden
|
|
18
|
+
Invoke `$orkestrel-harden` for each package implementation unit. This skill owns cross-package decisions; the hardening skill owns the complete work inside one package.
|
|
26
19
|
|
|
27
20
|
## Execute the campaign
|
|
28
21
|
|
|
@@ -32,11 +25,11 @@ Invoke `$orkestrel-harden-package` for each package implementation unit. This sk
|
|
|
32
25
|
4. **Assign ownership.** Keep core host-independent. Keep server free of browser assumptions and browser free of Node assumptions. Keep product policy in applications.
|
|
33
26
|
5. **Judge downstream friction.** Treat consumer gymnastics as evidence, not automatic proof. Decide whether the consumer misused a coherent API or exposed a general upstream defect.
|
|
34
27
|
6. **Design in dependency order.** Update guides and types first in the lowest owning package, then update every affected consumer atomically. Do not add compatibility shims.
|
|
35
|
-
7. **Harden each unit.** Apply `$orkestrel-harden
|
|
28
|
+
7. **Harden each unit.** Apply `$orkestrel-harden` to every touched package with the exact owned scope and acceptance criteria.
|
|
36
29
|
8. **Prove the round trip.** Put integration coverage at the highest package that can exercise the real composed behavior. Retain focused deterministic coverage in lower packages.
|
|
37
30
|
9. **Validate local changes safely.** When necessary, use built artifacts in an isolated consumer and prove the resolved graph. Restore temporary manifest/lockfile state.
|
|
38
31
|
10. **Verify topologically.** Run local gates for touched packages from dependencies to dependents and inspect relevant generated outputs.
|
|
39
|
-
11. **Review the campaign.** Run the
|
|
32
|
+
11. **Review the campaign.** Run the review `.agents/orchestration.md` § Size gate names on the integrated result, with one cross-package architecture and ergonomics pass over the whole graph. Do not review each unit separately.
|
|
40
33
|
|
|
41
34
|
## Accept the result
|
|
42
35
|
|
package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/agents/openai.yaml
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: 'Align Orkestrel Packages'
|
|
3
3
|
short_description: 'Align package boundaries, ergonomics, and readiness'
|
|
4
|
-
default_prompt: 'Use $orkestrel-align
|
|
4
|
+
default_prompt: 'Use $orkestrel-align to audit and improve this Orkestrel package stack.'
|
package/dist/host/agents/skills/{orkestrel-align-packages → orkestrel-align}/references/fleet.md
RENAMED
|
@@ -4,15 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
For every relevant repository, record:
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- branch
|
|
9
|
-
-
|
|
10
|
-
- declared and resolved `@orkestrel/*` dependencies, peers, and dev dependencies;
|
|
11
|
-
- vendored guide freshness;
|
|
7
|
+
- `scaffold audit --json` run in that repository: its `releases` measure every declared `@orkestrel/*` range against the registry, and its `findings` name vendored and mirror drift;
|
|
8
|
+
- `git status --porcelain -b`: the branch, its relation to `origin/main`, and the dirty paths, with the owning session;
|
|
9
|
+
- the lockfile's resolved `@orkestrel/*` versions;
|
|
12
10
|
- supported runtime and package environments;
|
|
13
|
-
- local gate
|
|
11
|
+
- local gate state.
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
Run `scaffold catalog --json` once for the fleet table (`membership.entries`) and the layer order. Do not copy a package catalog or burned-version list into this skill.
|
|
16
14
|
|
|
17
15
|
For `0.0.x`, verify the actual range behavior rather than assuming ordinary caret semantics. Record exact intended ranges and resolved versions.
|
|
18
16
|
|
|
@@ -1,32 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: orkestrel-build
|
|
2
|
+
name: orkestrel-build
|
|
3
3
|
description: Wire, extend, or harden Orkestrel `app/core`, `app/browser`, and `app/server` environments — the environment's contracts, boundaries, entries, and host proofs, never the product designed inside one. Use for app-only or mixed src/app workspaces, app environment isolation, Vue browser entries, Node server entries, app aliases, configs, scripts, and tests, cross-environment contracts, and application guide parity. Do not use it to redesign an application's routes, screens, or domain behavior; take that to a design round and return here to wire what it decides.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Build an Orkestrel application
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Read
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
lifecycle; `.claude/rules/workspace.md` for environments, aliases, configuration, and
|
|
15
|
-
scripts; `.claude/rules/architecture.md` for placement and barrels;
|
|
16
|
-
`.claude/rules/tests.md` for test law; `.claude/rules/documentation.md` for parity;
|
|
17
|
-
plus every other rule the files in scope select.
|
|
18
|
-
3. `guides/README.md`, the governing application guide, and `ROADMAP.md` when present.
|
|
19
|
-
4. The authoritative `*/types.ts` of each selected environment, the root
|
|
20
|
-
`tsconfig.json` and `vite.config.ts`, the manifest, and `configs/app`.
|
|
21
|
-
|
|
22
|
-
Those rules are the contract; this skill is only the workflow. Where a step names a law,
|
|
23
|
-
read the law rather than this summary of it.
|
|
10
|
+
`AGENTS.md` § Authority and loading names the files every unit reads. This skill adds the
|
|
11
|
+
authoritative `*/types.ts` of each selected environment, the root `tsconfig.json` and
|
|
12
|
+
`vite.config.ts`, the manifest, and `configs/app`. Where a step names a law, read the law rather
|
|
13
|
+
than this summary of it.
|
|
24
14
|
|
|
25
15
|
## Select the environments
|
|
26
16
|
|
|
27
17
|
`--src` selects published src environments and `--app` selects private app environments.
|
|
28
|
-
The selections are independent, at least one is required, each offers `core`, `browser`,
|
|
29
|
-
and `server
|
|
18
|
+
The selections are independent, at least one is required, and each offers `core`, `browser`,
|
|
19
|
+
and `server`.
|
|
30
20
|
|
|
31
21
|
| Selection | What it owns |
|
|
32
22
|
| ----------- | ------------------------------------------------------------------------ |
|
|
@@ -98,10 +88,9 @@ includes app/core so the shared transport contracts have one host-independent ow
|
|
|
98
88
|
8. **Document and prove parity** for every app export and behavioral method: guide,
|
|
99
89
|
examples, manifest index, and the parity specifiers walking the existing `src` and
|
|
100
90
|
`app` roots and every selected alias.
|
|
101
|
-
9. **Verify.** Run the rules' cleanup sweeps over source and tests. Then run the
|
|
102
|
-
|
|
103
|
-
required order.
|
|
104
|
-
on the current major.
|
|
91
|
+
9. **Verify.** Run the rules' cleanup sweeps over source and tests. Then run the review
|
|
92
|
+
`.agents/orchestration.md` § Size gate names for the change and the repository gates in
|
|
93
|
+
their required order.
|
|
105
94
|
|
|
106
95
|
Do not add showcase, authentication, persistence, proxy, styling-system, or product
|
|
107
96
|
policy unless the request requires it. Do not leave placeholders, compatibility shims,
|
package/dist/host/agents/skills/{orkestrel-build-application → orkestrel-build}/agents/openai.yaml
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: 'Build Orkestrel Application'
|
|
3
3
|
short_description: 'Design and harden Orkestrel app environments'
|
|
4
|
-
default_prompt: 'Use $orkestrel-build
|
|
4
|
+
default_prompt: 'Use $orkestrel-build to build or harden this workspace application layer.'
|
|
@@ -5,24 +5,16 @@ description: Look back at a long campaign to learn from its mistakes and success
|
|
|
5
5
|
|
|
6
6
|
# Debrief a closed campaign
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Read
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
`AGENTS.md` § Authority and loading names the files every unit reads. This skill adds the
|
|
11
|
+
references the round needs: [instruction-audit.md](references/instruction-audit.md) before
|
|
12
|
+
auditing the agent, rule, skill, and process layer; [field-testing.md](references/field-testing.md)
|
|
13
|
+
before running or judging a live field pass of an agent-facing surface;
|
|
14
|
+
[retention.md](references/retention.md) before retiring the campaign folder.
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
finding this round records and every refinement it produces.
|
|
15
|
-
3. The references this round needs: [instruction-audit.md](references/instruction-audit.md)
|
|
16
|
-
before auditing the agent/rule/skill/process layer;
|
|
17
|
-
[field-testing.md](references/field-testing.md) before running or judging a live field
|
|
18
|
-
pass of an agent-facing surface; [retention.md](references/retention.md) before
|
|
19
|
-
retiring the campaign folder.
|
|
20
|
-
4. `guides/README.md`, the governing guides for what the campaign built, and `ROADMAP.md` when
|
|
21
|
-
the repository keeps one.
|
|
22
|
-
|
|
23
|
-
The user's current instruction wins. The debrief judges the artifact and the process that
|
|
24
|
-
produced it; neither is exempt. Capture successes as deliberately as mistakes, and codify
|
|
25
|
-
a practice that worked so it repeats.
|
|
16
|
+
The debrief judges the artifact and the process that produced it; neither is exempt. Record a
|
|
17
|
+
practice that worked as a refinement, so it repeats.
|
|
26
18
|
|
|
27
19
|
## The debrief laws
|
|
28
20
|
|
|
@@ -6,9 +6,9 @@ evidence-first treatment as any surface.
|
|
|
6
6
|
|
|
7
7
|
## Blind passes, one brief
|
|
8
8
|
|
|
9
|
-
Run the subjective lane and the objective lane on the SAME brief, in
|
|
10
|
-
seeing the other's answer before
|
|
11
|
-
|
|
9
|
+
Run the subjective lane and the objective lane on the SAME brief, each in a clean context,
|
|
10
|
+
neither seeing the other's answer before reconciliation. `.agents/orchestration.md` § Roles
|
|
11
|
+
and § Benches decide which engine and which role holds each lane, including under a dark
|
|
12
12
|
bench; read the assignment there and name it in the dispatch.
|
|
13
13
|
|
|
14
14
|
Each lane returns numbered findings, most severe first, and exactly one terminal line:
|
|
@@ -6,7 +6,7 @@ keeps it recoverable.
|
|
|
6
6
|
|
|
7
7
|
A debrief arrives at its Dispose step, after every finding has a
|
|
8
8
|
carrier. A campaign that accepts with no debrief arrives at acceptance, per
|
|
9
|
-
`.agents/orchestration.md` §
|
|
9
|
+
`.agents/orchestration.md` § Cleanup. The procedure is the same through
|
|
10
10
|
either door.
|
|
11
11
|
|
|
12
12
|
Call the `.orkestrel/` folder the campaign folder, never a ledger. The word `ledger` names the
|
|
@@ -33,15 +33,15 @@ step.
|
|
|
33
33
|
|
|
34
34
|
Rule on every location in this table before deleting anything.
|
|
35
35
|
|
|
36
|
-
| Location | What it holds
|
|
37
|
-
| ----------------------- |
|
|
38
|
-
| `.orkestrel/<package>/` |
|
|
39
|
-
| `.orkestrel
|
|
40
|
-
| `tmp/units/` | A native unit's `<unit>-brief.md` and `<unit>-report.md` pair.
|
|
41
|
-
| `tmp/<bench>/` | A bench unit's brief, report, event stream, final answer, and any login log.
|
|
42
|
-
| `tmp/
|
|
43
|
-
| `ROADMAP.md` | The repository's sequenced plan of record, where it keeps one.
|
|
44
|
-
| `PROPOSAL.md` | A proposal for work nobody has ruled on yet.
|
|
36
|
+
| Location | What it holds | What the prune does |
|
|
37
|
+
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `.orkestrel/<package>/` | One package's live campaign per `.agents/orchestration.md` § .orkestrel layout: its plan, routing ledger, open-seam verdicts, and exposure records. | Deleted in the prune commit. |
|
|
39
|
+
| `.orkestrel/*.md` | The ecosystem's records per the same section: the fleet campaign's `plan.md` and `ledger.md`, and the release wave's `release.md`. | Deleted in the prune commit of the wave or fleet campaign each records. |
|
|
40
|
+
| `tmp/units/` | A native unit's `<unit>-brief.md` and `<unit>-report.md` pair. | Swept after the unit's measurements and unresolved findings are carried into the acceptance record, the campaign ledger, or a test. |
|
|
41
|
+
| `tmp/<bench>/` | A bench unit's brief, report, event stream, final answer, and any login log. | Swept after the final gate evidence is recorded. Never committed. |
|
|
42
|
+
| `tmp/probes/` | The runtime probes the campaign wrote. | Swept. A probe that settled a claim becomes a test before the prune, per `.claude/rules/quality.md` § Instruments. |
|
|
43
|
+
| `ROADMAP.md` | The repository's sequenced plan of record, where it keeps one. | Kept. Strike the chunks the campaign closed and add the forward work it revealed. |
|
|
44
|
+
| `PROPOSAL.md` | A proposal for work nobody has ruled on yet. | Deleted after the work lands or the proposal is refused. The ruling goes in the prune commit message. |
|
|
45
45
|
|
|
46
46
|
A plan-of-record file is not campaign residue. `ROADMAP.md` outlives every prune and takes the
|
|
47
47
|
campaign's forward work; `PROPOSAL.md` is spent the moment its proposal is ruled on, and a spent
|
|
@@ -53,11 +53,11 @@ Sweep the whole `tmp/` tree, not the set of folders this campaign created. A jou
|
|
|
53
53
|
brief left by an earlier session sits in the same directory, carries no date a reader checks, and
|
|
54
54
|
is read by the next campaign as its own.
|
|
55
55
|
|
|
56
|
-
-
|
|
56
|
+
- Start from `node .agents/skills/orkestrel-dispatch/scripts/sweep.ts --report`, then name each file you find before deleting it. A file you cannot attribute to a closed campaign is
|
|
57
57
|
an open item for the carry check rather than residue.
|
|
58
58
|
- Never sweep while a unit is live. `tmp/units/` and `tmp/<bench>/` hold the briefs and journals
|
|
59
|
-
live lanes are reading, and the Orchestrator's own instruments
|
|
60
|
-
reason, per `.agents/orchestration.md` §
|
|
59
|
+
live lanes are reading, and the Orchestrator's own instruments live in the checkout's `tmp/` for this
|
|
60
|
+
reason, per `.agents/orchestration.md` § Permission floor.
|
|
61
61
|
- Delete a probe from the source tree before its unit returns, per `.claude/rules/tests.md`. A
|
|
62
62
|
leaked type probe is a placement-sweep failure rather than a retention question.
|
|
63
63
|
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orkestrel-dispatch
|
|
3
|
+
description: >-
|
|
4
|
+
Dispatch one unit of work to a native subagent or an external bench and bring its result back: write the brief, probe the bench, launch under a cap, watch liveness, read the report, check its citations, accept, and delete the launch copies. Use when `.agents/orchestration.md` routes work to a role, when a bench lane (Grok, Astra, or Opus through the Claude CLI) is needed, or when a command will outlive the turn that starts it.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Dispatch
|
|
8
|
+
|
|
9
|
+
`.agents/orchestration.md` decides who runs what and binds the permission floor; this skill runs the dispatch. Read `references/launch.md` before any command that outlives the turn, and `references/bench.md` before any bench lane. Run every step a script performs as that script, from the checkout root, with `node`.
|
|
10
|
+
|
|
11
|
+
## Scripts
|
|
12
|
+
|
|
13
|
+
| Script | Does |
|
|
14
|
+
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `scripts/bench.ts` | `--cursor [--resolve]`, `--codex [--sandbox MODE]`, or `--claude`, each with `[--model ID] [--cap SECONDS]`: resolves the bench entry, reads its version and login, runs one bounded round trip into `tmp/<bench>/bench.jsonl`, and prints JSON with `live`; `--resolve` prints the Cursor entry alone. Exit 3 when the bench is dark. |
|
|
16
|
+
| `scripts/brief.ts` | `--unit UNIT --lane units\|cursor\|codex\|claude [--subject TEXT]` writes the brief from `.agents/templates/brief.md` and never overwrites a launched one; `--check PATH` lists every slash-bearing path the brief names that does not resolve from the root. Exit 3 when one is missing. |
|
|
17
|
+
| `scripts/launch.ts` | `--journal PATH --errors PATH --cap SECONDS [--status] -- COMMAND [ARGS...]` runs the command with no shell and closed stdin, kills it at the cap (its process tree on Windows), records `git status --porcelain` before and after with `--status`, prints a spawn line carrying the `pid` when the command starts, writes that pid to `<journal>.pid`, and ends the errors file with `exit=`. Exit 124 when capped. |
|
|
18
|
+
| `scripts/login.ts` | `--codex [--cap SECONDS]` reads `codex login status`, runs `codex login --device-auth` journaled to `tmp/codex/login.log` when it is not logged in, prints the URL and the one-time code as they appear, and polls the status until it answers or the cap ends; `--claude` reads `claude auth status`. Exit 0 logged in, 3 not. |
|
|
19
|
+
| `scripts/result.ts` | `--cursor\|--claude\|--codex JOURNAL [--out PATH]` prints the session id, the answer length, the run's `exit`, `capped`, and `durationMs` from the errors file, and the journal's `bytes`, `ageMs`, and `lastEvent`. Exit 3 when the journal carries no session or answer. |
|
|
20
|
+
| `scripts/cite.ts` | `PATH [--root DIR] [--json]` lists every `file:line` citation in a report whose file does not exist or whose line is past the end. Exit 3 when one does not resolve. |
|
|
21
|
+
| `scripts/helpers.ts` | What every skill script shares: `readOption`, `readOptions`, `readList`, `listFiles`, `readJsonObject`, `readString`, `readNumber`, `normalizeSlashes`, `resolveNpm`, `runNpm`. It runs nothing; import it with the `.ts` extension. |
|
|
22
|
+
| `scripts/sweep.ts` | `--report` lists leftovers under `tmp/` and `.orkestrel/` by age and deletes nothing; `--tmp [--older-than MINUTES]` deletes stale launch files and refuses while a journal is changing; `--unit UNIT [--delete]` lists or deletes one accepted unit's brief, report, claims, journal, errors, status, pid, and last-message files. |
|
|
23
|
+
|
|
24
|
+
## Write the brief
|
|
25
|
+
|
|
26
|
+
1. A small native unit's brief is the dispatch message: scope, law references, expected result. Otherwise run `node .agents/skills/orkestrel-dispatch/scripts/brief.ts --unit <unit> --lane <lane>` and fill every section; write `none` in an empty one. A re-run takes the `-<n>` file the script writes; never edit a launched brief.
|
|
27
|
+
2. Back every fact the unit will act on with the command and output that established it. Check a fact against the tree, not against another artifact.
|
|
28
|
+
3. Scope by what the change makes false: run the `orkestrel-scout` skill's `map.ts --refs` and `--census` for an existing member of any enumerated population the unit extends, and own every file that comes back, with the tests that pin the behavior, the fixtures derived from a constant, and the materialized copy of a template.
|
|
29
|
+
4. Order acceptance criteria cheap-first (regenerate, typecheck, lint, scoped test). Name a timing-sensitive or tree-wide gate as an observation, not a criterion.
|
|
30
|
+
5. State that the executor performs the work itself and spawns nothing. A bridge driver carries the brief unaltered and returns the journal path and session id.
|
|
31
|
+
6. Name the host conditions the unit will hit: shell, sandbox, network, files expected dirty, commands known to fail.
|
|
32
|
+
7. Run `brief.ts --check <brief>` and fix every missing path before the launch.
|
|
33
|
+
|
|
34
|
+
## Launch
|
|
35
|
+
|
|
36
|
+
- Native, Claude Code: the Agent tool with the role as `subagent_type`; a Workflow for a fan-out or pipeline. Native, Codex: the custom agent by name.
|
|
37
|
+
- Bench: run `bench.ts --<bench>` once per session before the first lane, then launch the transport contract's command through `launch.ts` in the background with `--status`.
|
|
38
|
+
- Size the cap from the `durationMs` that `result.ts` reported for comparable runs, plus gate time, plus slack. Never let the unit name it.
|
|
39
|
+
- Confirm the launch within a minute with `result.ts`: `bytes` past the header and a small `ageMs`. An instantly dead journal is a failed launch; read its errors file.
|
|
40
|
+
|
|
41
|
+
## Watch
|
|
42
|
+
|
|
43
|
+
- Read liveness from the artifact the work produces: owned-file mtimes, `result.ts` on the journal, the counts a suite reports. A wrapper's silence proves nothing.
|
|
44
|
+
- Prove a run dead before relaunching, by the process id in the spawn line `launch.ts` prints at start and in the `<journal>.pid` file it writes, per `references/launch.md` § Kill and relaunch. Never `pgrep -f` or `pkill -f` a pattern from a shell whose own command line contains it.
|
|
45
|
+
- A stalled or cap-killed run: resume with the session id from `result.ts`, or relaunch with a successor brief. Triage per `.agents/orchestration.md` § Deviation protocol.
|
|
46
|
+
|
|
47
|
+
## Accept
|
|
48
|
+
|
|
49
|
+
1. Capture a native report to `tmp/units/<unit>-report.md`, or read a bench answer with `result.ts --<bench> <journal> --out <path>`. Refuse a bench report with no journal path and session id.
|
|
50
|
+
2. Run `cite.ts <report>` and discard every claim whose citation does not resolve before reading the rest.
|
|
51
|
+
3. Verify with direct evidence: `git status --porcelain`, the diff, and the scoped validation the brief named. A writer's self-report is not evidence.
|
|
52
|
+
4. Run the review the size gate names, then integrate: apply shared-file patches serially; route an added type, mechanism, or criterion to a successor unit.
|
|
53
|
+
5. Write the acceptance commit message with what changed and what the unit measured; record `durationMs` when it informs a cap or a performance claim.
|
|
54
|
+
6. Run `sweep.ts --unit <unit> --delete` to remove the unit's brief, report, claims, journal, errors, status, pid, and last-message files. Delete any probe the unit left in the tree. In a campaign, update `.orkestrel/<package>/plan.md` and the ledger, and delete a closed seam's verdict. Run `sweep.ts --report` at acceptance and `sweep.ts --tmp [--older-than MINUTES]` after the last live unit exits.
|
|
55
|
+
|
|
56
|
+
## Refuse
|
|
57
|
+
|
|
58
|
+
- A brief that contradicts a measurement the campaign already recorded: reconcile first.
|
|
59
|
+
- A unit that asks for an unowned edit: stop it and re-scope.
|
|
60
|
+
- A concurrent writer in the same checkout: queue it.
|
|
61
|
+
- A tree-wide mutating command from a unit: strike it from the brief.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Bench lanes
|
|
2
|
+
|
|
3
|
+
An external engine widens capacity and inherits no authority. Treat every bench output as a proposal until the Orchestrator verifies it against the tree. `.agents/transports/<provider>.md` owns each bench's command, sandbox, and recovery; this file owns what is true of every bench.
|
|
4
|
+
|
|
5
|
+
## Before the lane
|
|
6
|
+
|
|
7
|
+
- Probe the bench once per session with `node .agents/skills/orkestrel-dispatch/scripts/bench.ts --cursor`, `--codex`, or `--claude` before its first lane, and again at any dispatch after a failure. `live: false` records the bench dark. A version string or a login status is not liveness.
|
|
8
|
+
- Write the brief with `scripts/brief.ts --unit <unit> --lane <bench>`; briefs never travel as shell arguments. Run `scripts/brief.ts --check` on it and fix every missing path.
|
|
9
|
+
- Name in the brief the host restrictions the transport contract records that this unit will meet. A proof that needs a restricted capability is taken on the host by the Orchestrator, and the unit records it as an observation naming the exact command.
|
|
10
|
+
- When the sandbox rejects a write, the unit stops and reports the rejection. It never tries another write mechanism, and the brief says so.
|
|
11
|
+
- A bench unit writes only its owned files and its checkout's `tmp/`. Name its report path there, or take the report from the last-message file.
|
|
12
|
+
- Launch one Grok lane at a time. An empty lane beside a live probe is starvation, so cut concurrency and re-run rather than recording the bench dark.
|
|
13
|
+
|
|
14
|
+
## During the lane
|
|
15
|
+
|
|
16
|
+
- The journal under `tmp/<bench>/` is the liveness signal and the recovery handle; `scripts/result.ts` reads both. Register the lane in the session task registry with subject, journal path, and session id.
|
|
17
|
+
- Never poll the bench from inside the driver. The Orchestrator owns the cap and the watch.
|
|
18
|
+
|
|
19
|
+
## After the lane
|
|
20
|
+
|
|
21
|
+
- Refuse a result whose journal path and session id are absent: it ran on the driver's engine.
|
|
22
|
+
- Read the answer with `scripts/result.ts`, never from stdout. Run `scripts/cite.ts` over it before reading it.
|
|
23
|
+
- Verify a writing lane with `git status --porcelain`, the diff, and scoped validation before integrating.
|
|
24
|
+
- A dispatch that fails on auth, quota, model access, or network is a fresh liveness result: record the bench dark and re-plan the lane on the substitute engine.
|
|
25
|
+
- Delete the brief, journal, `.err`, and last-message files when the unit is accepted.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Long-running commands
|
|
2
|
+
|
|
3
|
+
Apply these rules to every command that outlives the turn that starts it: a bench exec, a Workflow, an install, a build, a publish chain.
|
|
4
|
+
|
|
5
|
+
## Launch
|
|
6
|
+
|
|
7
|
+
- Launch as a harness-tracked background command through `scripts/launch.ts` under a hard cap. Never detach a run from inside a dispatched agent; an unowned run has no completion signal and no death notice.
|
|
8
|
+
- Write a multi-step chain as a TypeScript file run by `node`, with an opening comment naming its log, its cap, and what changed from the file it supersedes. Never edit a script while it runs: copy, edit the copy, launch the copy.
|
|
9
|
+
- On Windows, keep every program-carrying command in a file: a heredoc, `node -e`, an `&&` chain, or a `${...}` argument trips the approval classifier.
|
|
10
|
+
- Run the first use of any flag, subcommand, or quoting form in a throwaway probe, never inside a unit.
|
|
11
|
+
- Keep network-dependent work (installs, lockfile generation, live fetches) out of sandboxed bench execs.
|
|
12
|
+
- Confirm the journal advanced past its header before recording the launch as started; `scripts/result.ts` reports `bytes` and `ageMs`.
|
|
13
|
+
- Never push a git commit through a hosting REST API when a file's content must ride in the request; the per-call cap truncates it.
|
|
14
|
+
|
|
15
|
+
## Watch
|
|
16
|
+
|
|
17
|
+
- Arm one Monitor per long exec, filtered to milestones and terminal states, exiting on the terminal event. Never stream the raw journal.
|
|
18
|
+
- A Workflow journal writes only at agent start and result; read liveness from the newest subagent transcript. Recover with `resumeFromRunId`.
|
|
19
|
+
- Judge a unit by the tree it changes: owned-file mtimes, suite counts, its report file. Check before killing anything; a unit killed on a false signal loses unwritten work.
|
|
20
|
+
|
|
21
|
+
## Kill and relaunch
|
|
22
|
+
|
|
23
|
+
- Take the child's `pid` from the spawn line `scripts/launch.ts` prints when the command starts, or from `<journal>.pid`. Never take it from a pattern match over command lines, and never run `pgrep -f` or `pkill -f`.
|
|
24
|
+
- On a POSIX host, read liveness with `kill -0 <pid>` (exit 0 means alive), list descendants by running `ps -A -o pid= -o ppid=` and taking the rows whose ppid is the recorded pid, then each listed id in turn, print the list, then kill each listed id and the recorded pid with `kill -KILL <id>`.
|
|
25
|
+
- On Windows under Git Bash, write every Windows slash option as `//`. Read liveness from the output of `tasklist //FI "PID eq <pid>" //NH`, never from its exit code: a row naming `<pid>` means alive, and the `INFO:` line means gone. Alternatively, read the `WINPID` column of `ps -W`. Never read liveness with `kill -0` or `ps -eo`. List descendants with `powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter 'ParentProcessId=<pid>' | Select-Object -ExpandProperty ProcessId"` applied to each listed id in turn, print the list, then kill the recorded tree with `taskkill //pid <pid> //T //F`.
|
|
26
|
+
- Refuse a list holding PID 1, the harness shell, or an id outside the descent of the recorded pid. At the cap, `launch.ts` kills the tree on Windows and the command alone on any other host; on a POSIX host, kill the listed descendants of a capped run by hand.
|
|
27
|
+
- Confirm the recorded process and every listed descendant are gone before another writer takes the files. A killed `codex exec` is dead only when its `codex-code-mode-host` child is gone too. Check owned-file mtimes before dispatching the substitute.
|
|
28
|
+
- Re-run a timing failure alone, after the unit exits, before believing it; a unit's own re-run is never alone.
|
|
29
|
+
|
|
30
|
+
## Cap
|
|
31
|
+
|
|
32
|
+
Size the cap from the `durationMs` that `scripts/result.ts` reported for comparable runs, plus a gate allowance, plus slack. Record the duration beside the result so the next cap has a measurement. A cap-killed exec (`capped=true`, exit 124) reads exactly like a real failure; check the cap first.
|