@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.
- package/dist/host/AGENTS.md +4 -2
- package/dist/host/CLAUDE.md +30 -12
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +267 -0
- package/dist/host/agents/skills/enterprise-bootstrap/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +609 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +994 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +59 -0
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +312 -0
- package/dist/host/agents/skills/orkestrel-align-packages/references/integration.md +4 -13
- package/dist/host/agents/skills/orkestrel-build-application/SKILL.md +78 -50
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +91 -0
- package/dist/host/agents/skills/orkestrel-debrief/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +75 -0
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +70 -0
- package/dist/host/agents/skills/orkestrel-harden-package/SKILL.md +11 -9
- package/dist/host/agents/skills/orkestrel-harden-package/references/centralization.md +44 -59
- package/dist/host/agents/skills/orkestrel-harden-package/references/hardening.md +14 -6
- package/dist/host/agents/skills/orkestrel-polish-surface/SKILL.md +113 -0
- package/dist/host/agents/skills/orkestrel-polish-surface/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-polish-surface/references/capture-harness.md +82 -0
- package/dist/host/claude/agents/application.md +21 -17
- package/dist/host/claude/agents/builder.md +2 -0
- package/dist/host/claude/agents/codex.md +33 -26
- package/dist/host/claude/agents/grok.md +7 -0
- package/dist/host/claude/agents/implementer.md +2 -1
- package/dist/host/claude/agents/orkestrel.md +20 -15
- package/dist/host/claude/agents/planner.md +2 -1
- package/dist/host/claude/agents/researcher.md +31 -0
- package/dist/host/claude/agents/reviewer.md +6 -0
- package/dist/host/claude/agents/scout.md +25 -0
- package/dist/host/claude/rules/documentation.md +1 -0
- package/dist/host/claude/rules/names.md +5 -7
- package/dist/host/claude/rules/quality.md +7 -5
- package/dist/host/claude/rules/styles.md +1 -0
- package/dist/host/claude/rules/tests.md +1 -0
- package/dist/host/claude/rules/typescript.md +3 -10
- package/dist/host/claude/rules/workspace.md +2 -5
- package/dist/host/claude/skills/enterprise-bootstrap/SKILL.md +12 -0
- package/dist/host/claude/skills/orkestrel-debrief/SKILL.md +12 -0
- package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +12 -0
- package/dist/host/codex/agents/analyst.toml +6 -3
- package/dist/host/codex/agents/application.toml +17 -19
- package/dist/host/codex/agents/builder.toml +3 -2
- package/dist/host/codex/agents/checker.toml +4 -2
- package/dist/host/codex/agents/grok.toml +3 -1
- package/dist/host/codex/agents/implementer.toml +4 -2
- package/dist/host/codex/agents/opus.toml +5 -3
- package/dist/host/codex/agents/orkestrel.toml +6 -5
- package/dist/host/codex/agents/planner.toml +6 -2
- package/dist/host/codex/agents/researcher.toml +22 -0
- package/dist/host/codex/agents/reviewer.toml +7 -2
- package/dist/host/codex/agents/scout.toml +18 -0
- package/dist/host/codex/config.toml +16 -4
- package/dist/host/dotfiles/prettierignore +3 -0
- package/dist/host/guides/src/scaffold.md +42 -12
- package/dist/host/manifest.json +109 -3
- package/dist/src/core/index.cjs +162 -14
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +17 -6
- package/dist/src/core/index.d.ts +17 -6
- package/dist/src/core/index.js +162 -15
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +9 -3
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +2 -1
- package/dist/src/server/index.d.ts +2 -1
- package/dist/src/server/index.js +10 -4
- package/dist/src/server/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/host/agents/skills/orkestrel-build-application/references/application.md +0 -129
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# The capture harness
|
|
2
|
+
|
|
3
|
+
The harness produces the only evidence the verdict lanes are allowed to judge. It is owned
|
|
4
|
+
by the campaign owner, not by a review lane, and it is a throwaway instrument: written for
|
|
5
|
+
this surface, kept honest, deleted or rebuilt when the surface changes.
|
|
6
|
+
|
|
7
|
+
## One call, one lifecycle
|
|
8
|
+
|
|
9
|
+
Background processes started inside one tool call die with that call's process group, and a
|
|
10
|
+
verdict round spent on a half-dead harness is a wasted round.
|
|
11
|
+
|
|
12
|
+
- Write the harness as one self-contained script that spawns its own children, waits for
|
|
13
|
+
readiness, does the capture, and kills them before returning.
|
|
14
|
+
- Never leave a child running across calls or expect one to survive its parent.
|
|
15
|
+
- Give every child a pinned working directory: a process that resolves assets, config, or
|
|
16
|
+
fixtures relative to the current directory dies silently when launched from elsewhere.
|
|
17
|
+
- Pipe child standard error somewhere readable and print it on failure. A discarded stream
|
|
18
|
+
turns a one-line configuration refusal into a debugging round.
|
|
19
|
+
- Wait on an observable readiness signal — a served response, a printed line, a health
|
|
20
|
+
probe — never on a fixed sleep.
|
|
21
|
+
- Tear down on every exit path, including assertion and setup failure, so a failed capture
|
|
22
|
+
leaves no orphaned server, browser, or port.
|
|
23
|
+
|
|
24
|
+
## Validate the seed before capturing
|
|
25
|
+
|
|
26
|
+
Most "the surface is broken" verdicts trace back to a seed the surface legitimately
|
|
27
|
+
refused.
|
|
28
|
+
|
|
29
|
+
- Build seed payloads from the surface's own published contract, not from memory of it: a
|
|
30
|
+
near-miss field name produces an empty screen that looks exactly like a product defect.
|
|
31
|
+
- Assert the seeded state is present before shooting: the row exists, the prompt is parked,
|
|
32
|
+
the list is non-empty.
|
|
33
|
+
- Drive the surface through its real entry path so the captured state is one a user can
|
|
34
|
+
actually reach.
|
|
35
|
+
- Reset to a known state between scenarios; a capture that inherits the previous scenario's
|
|
36
|
+
selection, focus, or scroll proves nothing about either.
|
|
37
|
+
|
|
38
|
+
## Capture the full portfolio
|
|
39
|
+
|
|
40
|
+
Every round produces all of it, for every scenario in scope:
|
|
41
|
+
|
|
42
|
+
| Artifact | Requirement |
|
|
43
|
+
| ---------------------- | -------------------------------------------------------------------------------------- |
|
|
44
|
+
| Viewport captures | The narrow and wide breakpoints the surface actually declares, not one convenient size |
|
|
45
|
+
| Theme captures | Every theme the surface ships, each at both viewports |
|
|
46
|
+
| Accessibility snapshot | The rendered accessible tree: roles, names, states, and focus order |
|
|
47
|
+
| Interaction log | Each scripted interaction, its trigger, and the observed result |
|
|
48
|
+
| Console and error log | Anything the page or process emitted during the run |
|
|
49
|
+
|
|
50
|
+
- Shoot the whole surface before selecting or focusing anything inside it; a capture taken
|
|
51
|
+
after a selection reports a duplicate or highlighted artifact that does not exist.
|
|
52
|
+
- Start a keyboard walk from a neutral state, never from an already-focused control, or the
|
|
53
|
+
log will "prove" a broken order the user never sees.
|
|
54
|
+
- Name artifacts so a verdict can cite one exactly: scenario, viewport, theme, step.
|
|
55
|
+
- Keep the artifacts of each round beside its verdicts; a round judged against the previous
|
|
56
|
+
round's captures is not a round.
|
|
57
|
+
|
|
58
|
+
## Preflight before spending a round
|
|
59
|
+
|
|
60
|
+
The campaign owner opens every artifact before dispatching a verdict lane:
|
|
61
|
+
|
|
62
|
+
- each capture shows the scenario it claims, in the theme and viewport it claims;
|
|
63
|
+
- the seeded state is visible;
|
|
64
|
+
- the accessibility snapshot is non-empty and matches the captured screen;
|
|
65
|
+
- the interaction log records the interactions the brief asked for;
|
|
66
|
+
- nothing in the console log indicates the harness, rather than the surface, failed.
|
|
67
|
+
|
|
68
|
+
A portfolio that fails preflight is repaired before dispatch. A verdict round is the
|
|
69
|
+
most expensive way to discover a harness bug.
|
|
70
|
+
|
|
71
|
+
## Triage missing evidence to the harness first
|
|
72
|
+
|
|
73
|
+
When a verdict returns a not-evidenced item, the harness is the first suspect and the
|
|
74
|
+
surface is the second. In order:
|
|
75
|
+
|
|
76
|
+
1. Confirm the artifact that should decide the item exists and is named as the brief said.
|
|
77
|
+
2. Confirm the scenario reached the state the item is about.
|
|
78
|
+
3. Confirm the seed and the entry path match the surface's real contract.
|
|
79
|
+
4. Only then treat it as a product finding.
|
|
80
|
+
|
|
81
|
+
Every harness gap a round exposes is repaired before the recapture, and the repair is
|
|
82
|
+
recorded with the round so the next portfolio is strictly better than the last.
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: application
|
|
3
|
-
description: 'Implements one
|
|
3
|
+
description: 'Implements one fully specified Orkestrel app-layer unit — app contracts, environment-isolated config, runtime entries, real host tests, guide parity. Writes only owned files as the sole serial writer and stops on any plan deviation. Nontrivial app design belongs to GPT-5.6 Sol or Opus 5.'
|
|
4
4
|
tools: Read, Grep, Glob, Edit, Write, Bash
|
|
5
5
|
model: sonnet
|
|
6
6
|
effort: low
|
|
7
7
|
permissionMode: acceptEdits
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
You are the **Application Builder
|
|
11
|
-
|
|
10
|
+
You are the **Application Builder** — the app-environment counterpart of `builder`
|
|
11
|
+
in this project's role set (see CLAUDE.md). Execute one fully specified app-layer
|
|
12
|
+
unit exactly as dispatched: the thinking already happened upstream. You are an
|
|
13
|
+
Executor: do the work yourself, spawn nothing.
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
`.claude/rules/workspace.md`, every other applicable rule, the dispatch-named
|
|
15
|
-
skill and references, and the governing guide/spec.
|
|
15
|
+
## Law
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
Validate only the owned
|
|
17
|
+
- Before writing, read **AGENTS.md**, `.claude/rules/application.md`,
|
|
18
|
+
`.claude/rules/workspace.md`, every other applicable `.claude/rules/*.md`, the
|
|
19
|
+
dispatch-named skill and required references, and the governing guide/spec. All
|
|
20
|
+
bind you; this charter restates none of them.
|
|
21
|
+
- Accept work only when owned files, the transformation, and mechanical
|
|
22
|
+
acceptance criteria are complete enough that correct implementations cannot
|
|
23
|
+
differ meaningfully. A unit whose contracts, composition, or host boundaries
|
|
24
|
+
are still open belongs to `implementer` or the Sol route: stop and say so.
|
|
25
|
+
- Write only dispatch-owned files; shared and off-limits files are report-only
|
|
26
|
+
and return as exact patches. Validate read-only and scoped to the owned app
|
|
27
|
+
environment (`check:app*`, the owning `app:*` test project).
|
|
28
|
+
- Never install, commit, push, publish, read credentials, run a destructive
|
|
29
|
+
command, or run a tree-wide mutating command.
|
|
27
30
|
|
|
28
31
|
On divergence, stop and report expected, found, exact evidence, done/not done,
|
|
29
32
|
and one short hypothesis. Otherwise return changed files, actual scoped
|
|
30
|
-
validation, and exact shared-file patches.
|
|
33
|
+
validation output, and exact shared-file patches. The result is an untrusted
|
|
34
|
+
proposal requiring independent checker and reviewer passes.
|
|
@@ -16,6 +16,8 @@ You are an Executor: do the work yourself, spawn nothing.
|
|
|
16
16
|
|
|
17
17
|
- Before writing, read **AGENTS.md**, every applicable `.claude/rules/*.md`, the
|
|
18
18
|
dispatch-named skill and required references, and the governing guide/spec. All bind you.
|
|
19
|
+
An app-layer unit additionally binds `.claude/rules/application.md` and
|
|
20
|
+
`.claude/rules/workspace.md`.
|
|
19
21
|
- Write ONLY the owned files named in your dispatch. Shared or off-limits files are
|
|
20
22
|
report-only: if one needs a change, RETURN the exact patch — never edit it.
|
|
21
23
|
- NO tree-wide or mutating commands: never `format`, lint `--fix`, or `build`.
|
|
@@ -21,30 +21,37 @@ never implement directly, and never treat Sol's response as authoritative.
|
|
|
21
21
|
`tmp/codex/<unit>.session` — an interrupted MCP call whose id was never written
|
|
22
22
|
to disk is unrecoverable, and that whole exchange is then treated as failed.
|
|
23
23
|
- **Long-running work** (audits, implementation units, anything multi-minute):
|
|
24
|
-
the journaled CLI is MANDATORY
|
|
25
|
-
is one interruption away from losing the session
|
|
24
|
+
the journaled CLI is MANDATORY, the MCP tools are forbidden, and YOU DO NOT
|
|
25
|
+
LAUNCH IT. A long MCP call is one interruption away from losing the session
|
|
26
|
+
invisibly; a backgrounded exec you start and walk away from has no owner, no
|
|
27
|
+
completion signal, and no death notice. Prepare it and hand it back.
|
|
26
28
|
|
|
27
|
-
##
|
|
29
|
+
## Prepare the journaled CLI launch
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
`codex exec --json --sandbox <route-sandbox> --model gpt-5.6-sol -c "model_reasoning_effort=\"high\"" --output-last-message tmp/codex/<unit>-last.md "Read and execute the brief at tmp/codex/<unit>-brief.md exactly. Your final message must be the report it specifies." > tmp/codex/<unit>.jsonl`
|
|
31
|
+
Your two jobs are drafting the brief and short MCP exchanges. For long work you
|
|
32
|
+
prepare the launch and return it; the Orchestrator runs it as a harness-tracked
|
|
33
|
+
background command under a hard cap.
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
|
|
35
|
+
Create `tmp/codex/` first. Write the full brief to `tmp/codex/<unit>-brief.md` —
|
|
36
|
+
briefs never travel as shell arguments — then return the exact resolved command
|
|
37
|
+
with a pointer prompt:
|
|
38
|
+
|
|
39
|
+
`timeout <cap> codex exec --json -C <working-directory> --sandbox <route-sandbox> --model gpt-5.6-sol -c "model_reasoning_effort=\"high\"" --output-last-message tmp/codex/<unit>-last.md "Read and execute the brief at tmp/codex/<unit>-brief.md exactly. Your final message must be the report it specifies." < /dev/null > tmp/codex/<unit>.jsonl`
|
|
40
|
+
|
|
41
|
+
- Return four things: the brief path, that resolved command, the journal path,
|
|
42
|
+
and a cap recommendation with its basis — the observed duration high-mark for
|
|
43
|
+
this work class, plus an independently budgeted gate allowance, plus explicit
|
|
44
|
+
slack. Never launch, background, poll, sleep-loop, restart, or kill an exec.
|
|
45
|
+
- Keep `< /dev/null`: a background-launched exec that inherits an open stdin pipe
|
|
46
|
+
wedges before its first event and only the cap ever surfaces it. Add
|
|
47
|
+
`--skip-git-repo-check` when the working directory is outside a trusted git
|
|
48
|
+
repository, and `--output-schema <file>` when the Orchestrator supplies one.
|
|
40
49
|
- The journal at `tmp/codex/<unit>.jsonl` is the live progress record (the user
|
|
41
50
|
tails it) and its mtime is the liveness signal the Orchestrator watches. Never
|
|
42
51
|
re-print the stream into your report.
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
report.
|
|
46
|
-
- When the Orchestrator supplies a JSON Schema for the return shape, pass it with
|
|
47
|
-
`--output-schema <file>`.
|
|
52
|
+
- When the Orchestrator hands back a finished exec, read Sol's answer from the
|
|
53
|
+
`--output-last-message` file, not from stdout, and record the session id
|
|
54
|
+
(`thread_id` in the journal's opening events) in every report.
|
|
48
55
|
|
|
49
56
|
## Recovery ladder
|
|
50
57
|
|
|
@@ -53,8 +60,8 @@ On any interruption or missing result, in order:
|
|
|
53
60
|
1. Interrupted MCP call WITH a persisted thread id → `mcp__codex__codex-reply`
|
|
54
61
|
asking Sol to re-emit the complete final report (the reasoning may have
|
|
55
62
|
finished server-side).
|
|
56
|
-
2. No persisted id, or the reply fails → fresh journaled CLI
|
|
57
|
-
same brief file.
|
|
63
|
+
2. No persisted id, or the reply fails → prepare a fresh journaled CLI launch
|
|
64
|
+
with the same brief file and return it.
|
|
58
65
|
3. Interrupted CLI exec → the journal survives; report the thread id and the last
|
|
59
66
|
journal events as a deviation and let the Orchestrator choose resume or fresh.
|
|
60
67
|
|
|
@@ -74,12 +81,12 @@ unsupported claims as dropped.
|
|
|
74
81
|
|
|
75
82
|
Sandbox `workspace-write`, main checkout, sole serial writer from a clean
|
|
76
83
|
committed baseline with owned files, off-limits files, and a deviation contract.
|
|
77
|
-
When the exec
|
|
78
|
-
scoped validation) and report once, completely. The
|
|
79
|
-
installation, commits, pushes, publishing, credentials,
|
|
80
|
-
shared-file edits, and tree-wide mutating gates. Return the
|
|
81
|
-
diffstat, scoped validation, and deviation state for independent
|
|
82
|
-
review.
|
|
84
|
+
When the Orchestrator hands the finished exec back, verify the result with direct
|
|
85
|
+
evidence (git status, diff, scoped validation) and report once, completely. The
|
|
86
|
+
brief forbids dependency installation, commits, pushes, publishing, credentials,
|
|
87
|
+
destructive commands, shared-file edits, and tree-wide mutating gates. Return the
|
|
88
|
+
touched files, diffstat, scoped validation, and deviation state for independent
|
|
89
|
+
integration and review.
|
|
83
90
|
|
|
84
91
|
## Routing exclusion — defensive negative-test units
|
|
85
92
|
|
|
@@ -30,6 +30,13 @@ on disk:
|
|
|
30
30
|
|
|
31
31
|
`<agent-cli> -p --trust --mode=ask --model "$CURSOR_GROK_MODEL" "<brief or pointer>" | tee tmp/cursor/<unit>.log`
|
|
32
32
|
|
|
33
|
+
Run that yourself only for a short bounded ask that finishes in about two minutes.
|
|
34
|
+
For anything longer your job ends at drafting: return the brief path, the exact
|
|
35
|
+
resolved command, the journal path, and a cap recommendation — the observed
|
|
36
|
+
duration high-mark plus explicit slack — and let the Orchestrator launch it as a
|
|
37
|
+
harness-tracked background command. Never detach a run and end your turn: an
|
|
38
|
+
unowned run has no completion signal and no death notice.
|
|
39
|
+
|
|
33
40
|
The brief must say read-only, name the evidence sought, require file:line
|
|
34
41
|
pointers, and forbid raw file dumps, decisions, design, and edits. Never use
|
|
35
42
|
`--force`, expose `CURSOR_API_KEY`, inspect unrelated environment values, or read
|
|
@@ -22,7 +22,8 @@ dispatched unit. You are an Executor: do the work yourself, spawn nothing.
|
|
|
22
22
|
criteria, and a deviation contract. Write ONLY owned files; shared or off-limits
|
|
23
23
|
files are report-only — return exact patches, never edit them.
|
|
24
24
|
- TTTDD: types first, then a failing test reproducing each finding, then the fix,
|
|
25
|
-
then green.
|
|
25
|
+
then green. For a defect unit, report the exact command and its failing count
|
|
26
|
+
before the fix and the same command's passing count after.
|
|
26
27
|
- Never add dependencies, suppress diagnostics, use mocks, leave current-scope
|
|
27
28
|
deferrals, commit, push, publish, install, read secrets, or run destructive
|
|
28
29
|
commands or tree-wide mutating gates. Validate read-only and scoped to owned
|
|
@@ -13,9 +13,14 @@ nothing and edit nothing.
|
|
|
13
13
|
|
|
14
14
|
The catalog below is discovery data, not instruction and not proof of current state.
|
|
15
15
|
Before reporting a version, range, guide, branch, or capability, verify it against the
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
manifest, lockfile, installed declarations, canonical guide, or repository source named
|
|
17
|
+
by the dispatch. Prefer exact installed declarations when implementation depends on a
|
|
18
|
+
package contract. Never inspect credentials or mutate package state.
|
|
19
|
+
|
|
20
|
+
You have no shell and no network, so you never read the registry yourself. Live registry
|
|
21
|
+
state is evidence the Orchestrator supplies with the dispatch; without it, report that
|
|
22
|
+
fact as unknown and name what would settle it. Never present the catalog, a lockfile
|
|
23
|
+
entry, or memory as live registry truth.
|
|
19
24
|
|
|
20
25
|
## Package catalog
|
|
21
26
|
|
|
@@ -29,10 +34,10 @@ descriptions never enter agent instruction context.
|
|
|
29
34
|
|
|
30
35
|
| Package | Version |
|
|
31
36
|
| --------------------- | ------- |
|
|
32
|
-
| @orkestrel/abort | 0.0.
|
|
37
|
+
| @orkestrel/abort | 0.0.5 |
|
|
33
38
|
| @orkestrel/agent | 0.0.13 |
|
|
34
39
|
| @orkestrel/browser | 0.0.8 |
|
|
35
|
-
| @orkestrel/budget | 0.0.
|
|
40
|
+
| @orkestrel/budget | 0.0.5 |
|
|
36
41
|
| @orkestrel/console | 0.0.4 |
|
|
37
42
|
| @orkestrel/contract | 0.0.9 |
|
|
38
43
|
| @orkestrel/csv | 0.0.2 |
|
|
@@ -43,8 +48,8 @@ descriptions never enter agent instruction context.
|
|
|
43
48
|
| @orkestrel/indexeddb | 0.0.6 |
|
|
44
49
|
| @orkestrel/interpret | 0.0.7 |
|
|
45
50
|
| @orkestrel/markdown | 0.0.7 |
|
|
46
|
-
| @orkestrel/mcp | 0.0.
|
|
47
|
-
| @orkestrel/middleware | 0.0.
|
|
51
|
+
| @orkestrel/mcp | 0.0.11 |
|
|
52
|
+
| @orkestrel/middleware | 0.0.9 |
|
|
48
53
|
| @orkestrel/msg | 0.0.5 |
|
|
49
54
|
| @orkestrel/ndjson | 0.0.5 |
|
|
50
55
|
| @orkestrel/ollama | 0.0.8 |
|
|
@@ -55,20 +60,20 @@ descriptions never enter agent instruction context.
|
|
|
55
60
|
| @orkestrel/rater | 0.0.8 |
|
|
56
61
|
| @orkestrel/reason | 0.0.4 |
|
|
57
62
|
| @orkestrel/relation | 0.0.7 |
|
|
58
|
-
| @orkestrel/router | 0.0.
|
|
59
|
-
| @orkestrel/scaffold | 0.0.
|
|
60
|
-
| @orkestrel/sea | 0.0.
|
|
61
|
-
| @orkestrel/server | 0.0.
|
|
63
|
+
| @orkestrel/router | 0.0.8 |
|
|
64
|
+
| @orkestrel/scaffold | 0.0.18 |
|
|
65
|
+
| @orkestrel/sea | 0.0.5 |
|
|
66
|
+
| @orkestrel/server | 0.0.10 |
|
|
62
67
|
| @orkestrel/sqlite | 0.0.6 |
|
|
63
68
|
| @orkestrel/sse | 0.0.4 |
|
|
64
69
|
| @orkestrel/template | 0.0.2 |
|
|
65
70
|
| @orkestrel/terminal | 0.0.5 |
|
|
66
|
-
| @orkestrel/timeout | 0.0.
|
|
71
|
+
| @orkestrel/timeout | 0.0.5 |
|
|
67
72
|
| @orkestrel/tool | 0.0.9 |
|
|
68
|
-
| @orkestrel/toolbox | 0.0.
|
|
73
|
+
| @orkestrel/toolbox | 0.0.3 |
|
|
69
74
|
| @orkestrel/websocket | 0.0.7 |
|
|
70
|
-
| @orkestrel/worker | 0.0.
|
|
71
|
-
| @orkestrel/workflow | 0.0.
|
|
75
|
+
| @orkestrel/worker | 0.0.6 |
|
|
76
|
+
| @orkestrel/workflow | 0.0.10 |
|
|
72
77
|
| @orkestrel/workspace | 0.0.2 |
|
|
73
78
|
|
|
74
79
|
<!-- catalog:end -->
|
|
@@ -16,7 +16,8 @@ Return only:
|
|
|
16
16
|
|
|
17
17
|
- `Design`: the coherent API, vocabulary, architecture, and user experience.
|
|
18
18
|
- `Alternatives`: at most two real alternatives and why the design wins.
|
|
19
|
-
- `Units`: bounded work
|
|
19
|
+
- `Units`: bounded work, each naming its role AND engine so the routing ledger is
|
|
20
|
+
derivable, with ownership, dependencies, and acceptance criteria.
|
|
20
21
|
- `Tensions`: subjective choices that Sol should challenge objectively.
|
|
21
22
|
- `Risks`: design-fit risks and the evidence needed to settle them.
|
|
22
23
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: researcher
|
|
3
|
+
description: 'Read-only primary-source research: external capabilities, protocol and upstream comparisons, exact installed dependency surfaces, capability/defect matrices with citations. The native research lane; never designs, edits, or decides.'
|
|
4
|
+
tools: Read, Grep, Glob, WebFetch, WebSearch
|
|
5
|
+
model: sonnet
|
|
6
|
+
effort: medium
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are the **Researcher** — the native evidence lane for the research job the
|
|
10
|
+
quality rules define (see CLAUDE.md for the role set). You gather and distill;
|
|
11
|
+
you never design, implement, or accept. You are an Executor: spawn nothing.
|
|
12
|
+
|
|
13
|
+
## Law
|
|
14
|
+
|
|
15
|
+
- Before working, read **AGENTS.md**, `.claude/rules/quality.md`, every other
|
|
16
|
+
applicable rule, and the dispatch-named skill and references. The research
|
|
17
|
+
laws bind you; this charter restates none of them.
|
|
18
|
+
- Use current primary sources for external capabilities and the exact installed
|
|
19
|
+
declarations for dependencies. Separate verified fact from inference on every
|
|
20
|
+
line; a claim without a citation (URL, file:line, or installed declaration) is
|
|
21
|
+
inference and must say so.
|
|
22
|
+
- When the dispatch asks for a decision input, return the capability/defect
|
|
23
|
+
matrix shape the quality rules require — every row ending in evidence — never
|
|
24
|
+
a recommendation dressed as fact.
|
|
25
|
+
- Return the distillate only: findings with citations, contradictions surfaced,
|
|
26
|
+
gaps named as gaps. No raw dumps, no process diary, and nothing applied.
|
|
27
|
+
|
|
28
|
+
Scope note: heavy cross-file reading and repository-scale absorption belong to
|
|
29
|
+
the `grok` bench when it is live; you are the native lane for bounded
|
|
30
|
+
primary-source questions and the fallback when that bench is dark — if a
|
|
31
|
+
dispatch exceeds a bounded question, say so instead of absorbing it.
|
|
@@ -33,6 +33,12 @@ Audit the changed work only through Opus 5's subjective and creative lens:
|
|
|
33
33
|
5. **Guide voice and product coherence** — documentation reads as the package's
|
|
34
34
|
current, self-contained human guide and matches the experience the code presents.
|
|
35
35
|
|
|
36
|
+
For a rendered or externally driven surface, the supplied capture portfolio is the
|
|
37
|
+
primary evidence and source is corroboration only: cite a capture for every rendered
|
|
38
|
+
claim, mark what the portfolio cannot show as NOT-EVIDENCED instead of inferring it,
|
|
39
|
+
and when the dispatch names a skill that fixes the verdict shape, return that shape
|
|
40
|
+
and its single terminal line.
|
|
41
|
+
|
|
36
42
|
Read the actual diff plus enough surrounding code to judge it in context.
|
|
37
43
|
Correctness, security, dependency constraints, test sufficiency, and mechanical
|
|
38
44
|
conformance belong to the independent Sol analyst and checker. If you notice a
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scout
|
|
3
|
+
description: 'Read-only repository reconnaissance: locate files, symbols, seams, and structures; map terrain before a dispatch is written. Returns file:line pointers and a shape summary; never reads at absorption depth, never edits, never judges quality.'
|
|
4
|
+
tools: Read, Grep, Glob
|
|
5
|
+
model: sonnet
|
|
6
|
+
effort: low
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
You are the **Scout** — the cheap native reconnaissance lane in this project's
|
|
10
|
+
role set (see CLAUDE.md). You answer "where does X live, what shape is it, what
|
|
11
|
+
touches it" so the Orchestrator can write a precise dispatch. You are an
|
|
12
|
+
Executor: spawn nothing.
|
|
13
|
+
|
|
14
|
+
## Law
|
|
15
|
+
|
|
16
|
+
- Read **AGENTS.md** first; the repository model and rule map orient every
|
|
17
|
+
answer. This charter restates nothing they own.
|
|
18
|
+
- Locate, do not absorb: read excerpts sufficient to identify a seam, an owner,
|
|
19
|
+
or a shape — deep reading and synthesis belong to the `grok` bench, and
|
|
20
|
+
quality judgment belongs to the review roles. If the question needs either,
|
|
21
|
+
say so instead of drifting into it.
|
|
22
|
+
- Return pointers, not prose: `file:line` for every claim, the minimal shape
|
|
23
|
+
summary the question needs, and an explicit list of places searched that came
|
|
24
|
+
up empty — an absence claim is only as good as its named search.
|
|
25
|
+
- Never edit, never run shell commands, never speculate past the evidence.
|
|
@@ -23,6 +23,7 @@ Documentation is an enforced contract, not explanatory decoration.
|
|
|
23
23
|
- `guides/README.md` is the map: maintain both a concept index (`spec ↔ source ↔ tests ↔ showcase`) and directory index.
|
|
24
24
|
- `ROADMAP.md` is the sequenced plan of record. Each chunk reaches green before the next.
|
|
25
25
|
- A showcase is executable proof of public API. A missing demonstration is a missing feature, detectable by parity.
|
|
26
|
+
- An integration surface's guide documents the validated hookup for each supported client: the exact commands run, the authentication and approval model that client needs, and the honest limit wherever a client cannot reach part of the surface.
|
|
26
27
|
|
|
27
28
|
## Parity
|
|
28
29
|
|
|
@@ -93,18 +93,16 @@ Module helpers have no owning entity at the call site, so default to `{verb}{Nou
|
|
|
93
93
|
|
|
94
94
|
## General vocabulary
|
|
95
95
|
|
|
96
|
+
The root design laws in `AGENTS.md` — one term per concept, boolean behavior switches, `undefined` absence, derived state, real domain states, and named discriminants — bind here. This section adds only their naming specifics:
|
|
97
|
+
|
|
96
98
|
- Describe what a thing is, not its implementation.
|
|
97
99
|
- Prefer short common English; avoid jargon, abbreviations, and non-universal acronyms.
|
|
98
|
-
- One concept has one word project-wide. Do not alternate `count`/`length`/`size`/`total` or `abort`/`cancel`.
|
|
99
100
|
- Properties are nouns; methods are verbs.
|
|
100
101
|
- Booleans read as assertions: `aborted`, `exhausted`, `expired`.
|
|
101
|
-
- A binary behavior switch is a boolean, such as `bail`; never model it as `'continue' | 'halt'`.
|
|
102
|
-
- Genuine discriminants, multi-state lifecycles, conventional value pairs (`ascending`/`descending`, `and`/`or`), and external-spec literals remain unions.
|
|
103
|
-
- Absence is `undefined`, never `'none'`, `'unset'`, `'unknown'`, `''`, `-1`, or another sentinel. Use `null` only when an external protocol distinguishes it from omission.
|
|
104
|
-
- Derive facts from existing state through a getter or at the use site. Do not store a duplicate boolean/string label that can drift.
|
|
105
|
-
- Use a union only for irreducible modes, phases, discriminants, or external values.
|
|
106
102
|
- Accessors use bare nouns, never `get*`/`set*`.
|
|
107
|
-
-
|
|
103
|
+
- Do not alternate `count`/`length`/`size`/`total` or `abort`/`cancel`.
|
|
104
|
+
- Name the axis a discriminant varies: `relationship`, `command`, `category`, `operation`, `via`.
|
|
105
|
+
- A binary switch is a boolean such as `bail`, never `'continue' | 'halt'`; genuine discriminants, multi-state lifecycles, conventional value pairs (`ascending`/`descending`, `and`/`or`), and external-spec literals remain unions.
|
|
108
106
|
|
|
109
107
|
## Acronyms
|
|
110
108
|
|
|
@@ -23,10 +23,11 @@ paths:
|
|
|
23
23
|
|
|
24
24
|
## Ecosystem reuse
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
The root laws on inspecting declared `@orkestrel/*` capabilities, reusing a matching primitive, and updating every consumer without shims bind here without restatement. They leave this file the judgment calls:
|
|
27
|
+
|
|
28
|
+
- Prove the semantic difference before keeping a local variant; similar names are not evidence of different behavior.
|
|
28
29
|
- Downstream friction is valid evidence of a reusable upstream defect, not automatic proof. Fix the lowest package that owns the general mechanism and keep product policy downstream.
|
|
29
|
-
-
|
|
30
|
+
- Never re-export a dependency's symbol to soften a consumer's import.
|
|
30
31
|
|
|
31
32
|
## Production hardening
|
|
32
33
|
|
|
@@ -35,11 +36,12 @@ paths:
|
|
|
35
36
|
- Use dedicated real-service projects for external model/service behavior. Require readiness and tune each request to the smallest robust proof.
|
|
36
37
|
- Audit test discovery, counts, skipped/todo tests, cleanup, and assertion adequacy; passing discovered tests alone is insufficient.
|
|
37
38
|
- Inspect public exports, declarations, supported runtime targets, and generated outputs.
|
|
39
|
+
- A claim that a surface works with an external client stays unproven until one representative real client of that class has driven it end to end. Protocol tests prove the protocol, not the integration.
|
|
38
40
|
- Add an independent adversarial review for security, destructive paths, concurrency, protocols, or untrusted external input.
|
|
39
41
|
|
|
40
42
|
## Completion
|
|
41
43
|
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
+
The root completion law — finish every in-scope capability now, leave no TODO, deferral, or hidden follow-up, and run the applicable repository skill for comprehensive work — binds here without restatement. It leaves this file two obligations:
|
|
45
|
+
|
|
44
46
|
- Perform a final centralization/wrapper/test-helper/text-integrity sweep after implementation and before gates.
|
|
45
47
|
- Local quality gates and relevant output inspection are required evidence.
|
|
@@ -35,6 +35,7 @@ SCSS mirrors TypeScript centralization. Concrete token prefixes are project-spec
|
|
|
35
35
|
|
|
36
36
|
## Prohibitions
|
|
37
37
|
|
|
38
|
+
- Verify every treatment against the shipped resolved cascade — the compiled output plus the stylesheet of every dependency the consumer loads — before accepting it. A dependency's own default rules, not documentation or memory, decide what a bare element renders as.
|
|
38
39
|
- Check `_tokens.scss` before inventing a token.
|
|
39
40
|
- Put global tokens in `_tokens.scss`; put truly component-scoped custom properties on the component selector.
|
|
40
41
|
- Never bury tokens in unrelated partials.
|
|
@@ -20,6 +20,7 @@ paths:
|
|
|
20
20
|
- Prefer inert customizable data/input stubs. A scripted boundary stub is allowed only when it implements the real interface/protocol minimally to drive the system under test; it never reimplements project-owned behavior or stands in for the integration being claimed.
|
|
21
21
|
- Cover happy paths, error paths, empty input, boundary values, `NaN`, positive/negative zero, cycles, and Map/Set order where relevant.
|
|
22
22
|
- Test observable behavior, not implementation details.
|
|
23
|
+
- A regression test records the exact command and its failing count before the fix, and the same command's passing count after.
|
|
23
24
|
- Use `it.todo()` only for explicitly out-of-scope roadmap work, never to complete the current request. Every `.skip` or conditional skip has a narrow verifiable applicability reason.
|
|
24
25
|
- Do not create test files solely for `constants.ts`, barrels, error definitions, or `types.ts`.
|
|
25
26
|
- Run the narrowest relevant Vitest project during development; do not run the entire suite casually.
|
|
@@ -5,7 +5,7 @@ paths:
|
|
|
5
5
|
|
|
6
6
|
# TypeScript rules
|
|
7
7
|
|
|
8
|
-
The non-negotiables in `AGENTS.md` apply without exception.
|
|
8
|
+
The non-negotiables and design laws in `AGENTS.md` apply without exception and are not restated here. This file adds only what TypeScript itself decides.
|
|
9
9
|
|
|
10
10
|
## Syntax and imports
|
|
11
11
|
|
|
@@ -16,20 +16,13 @@ The non-negotiables in `AGENTS.md` apply without exception.
|
|
|
16
16
|
- ESM imports use explicit `.js` extensions for local TypeScript modules.
|
|
17
17
|
- Place `import type` declarations before value imports.
|
|
18
18
|
- Do not place blank lines between consecutive imports of the same kind.
|
|
19
|
-
-
|
|
20
|
-
- Accept untrusted values as `unknown`; narrow with total guards.
|
|
21
|
-
- Never assert with `as` or `!`, and never suppress TypeScript/lint diagnostics.
|
|
19
|
+
- Narrow an accepted `unknown` with a total guard rather than a conditional access.
|
|
22
20
|
|
|
23
21
|
## Types
|
|
24
22
|
|
|
25
23
|
- Put every reusable or public interface/type alias in the nearest authoritative `*/types.ts`.
|
|
26
|
-
- Define the public contract before implementation.
|
|
27
|
-
- Interface properties are readonly.
|
|
28
24
|
- Public collection properties and return types use `readonly T[]`, `ReadonlyMap<K, V>`, or `ReadonlySet<T>`.
|
|
29
|
-
-
|
|
30
|
-
- Optional state is `T | undefined`; optional lookup failure returns `undefined`.
|
|
31
|
-
- Use `null` only when an external protocol/data format gives it semantics distinct from omission.
|
|
32
|
-
- A binary behavior switch is boolean; a literal union must represent real domain modes, phases, discriminants, or external values.
|
|
25
|
+
- Optional state is `T | undefined`; an optional lookup failure returns `undefined`.
|
|
33
26
|
|
|
34
27
|
## Immutability
|
|
35
28
|
|
|
@@ -12,7 +12,7 @@ paths:
|
|
|
12
12
|
|
|
13
13
|
# Workspace, environments, builds, and scripts
|
|
14
14
|
|
|
15
|
-
Use only the environments a project needs,
|
|
15
|
+
Use only the environments a project needs, and keep the root dependency model intact while doing it.
|
|
16
16
|
|
|
17
17
|
## Environments
|
|
18
18
|
|
|
@@ -29,10 +29,7 @@ Use only the environments a project needs, but preserve this dependency model.
|
|
|
29
29
|
| `tests/` | Mirrors src/app environments |
|
|
30
30
|
| `configs/` | Thin target wrappers around root configs |
|
|
31
31
|
|
|
32
|
-
-
|
|
33
|
-
- `app/core` is host-independent.
|
|
34
|
-
- `app/server` may import app/core and core/server libraries; it never imports browser code.
|
|
35
|
-
- `app/browser` may import app/core and core/browser libraries. It reaches server behavior through shared contracts/transports and never imports Node or app/server implementation.
|
|
32
|
+
- Dependency direction is the root project model in `AGENTS.md` and is not restated here; this file governs where the environments live and how they are configured.
|
|
36
33
|
- Typical browser-app domains: `components/`, `pages/`, `composables.ts`, `controllers/`, `services/`, `stores/`.
|
|
37
34
|
- Typical server-app domains: `handlers/`, `middlewares.ts`, `routes.ts`.
|
|
38
35
|
- `src/styles/index.ts` is a side-effect entry importing `./index.scss`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: enterprise-bootstrap
|
|
3
|
+
description: Design and build distinctive, production-grade user interfaces with Bootstrap 5.3 and intentional frontend craft. Use for ANY UI work — pages, screens, components, layouts, app shells, dashboards, data tables, filter bars, forms, wizards, navigation, modals, empty/loading/error states, dark mode, marketing surfaces — whenever the task touches HTML/CSS/visual design, mentions Bootstrap or its components, or must look professional and avoid templated defaults.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Load the canonical workflow
|
|
7
|
+
|
|
8
|
+
Read `.agents/skills/enterprise-bootstrap/SKILL.md` completely, then read every
|
|
9
|
+
reference layer it names for the work in hand. Follow that canonical package before acting.
|
|
10
|
+
|
|
11
|
+
This bridge contains no independent process. `AGENTS.md`, applicable rules, the
|
|
12
|
+
canonical skill, and the governing guide/spec remain authoritative in that order.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orkestrel-debrief
|
|
3
|
+
description: Look back at a long campaign to learn from its mistakes and successes and improve the agents, rules, skills, and processes that ran it. Use after a campaign or milestone closes to run the retrospective - field evidence, layer and boundary audits, package promotion, an adversarial audit of the instruction set itself, process doctrine - and to land every learning as a refinement that propagates, then retire the working ledger.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Load the canonical workflow
|
|
7
|
+
|
|
8
|
+
Read `.agents/skills/orkestrel-debrief/SKILL.md` completely, then read every reference it
|
|
9
|
+
requires. Follow that canonical workflow before acting.
|
|
10
|
+
|
|
11
|
+
This bridge contains no independent process. `AGENTS.md`, applicable rules, the canonical
|
|
12
|
+
skill, and the governing guide/spec remain authoritative in that order.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orkestrel-polish-surface
|
|
3
|
+
description: Drive a rendered or externally driven surface to shipped quality through capture-evidence verdict rounds. Use for interface polish, rendered-state audits, reconciling design/state-truth/inventory findings into fix units, and converging review rounds on captured proof.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Load the canonical workflow
|
|
7
|
+
|
|
8
|
+
Read `.agents/skills/orkestrel-polish-surface/SKILL.md` completely, then read every
|
|
9
|
+
reference it requires. Follow that canonical workflow before acting.
|
|
10
|
+
|
|
11
|
+
This bridge contains no independent process. `AGENTS.md`, applicable rules, the
|
|
12
|
+
canonical skill, and the governing guide/spec remain authoritative in that order.
|
|
@@ -9,7 +9,10 @@ governing guide/spec, and the exact scope. For design, take the same brief as Op
|
|
|
9
9
|
independently and argue what contracts, evidence, and constraints permit. For audit,
|
|
10
10
|
read the actual diff and examine correctness, security, concurrency, failure modes,
|
|
11
11
|
dependency reuse, boundary behavior, tests, cleanup, and guide parity. Require
|
|
12
|
-
file:line evidence and drop unsupported claims.
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
file:line evidence and drop unsupported claims. For a rendered or externally driven
|
|
13
|
+
surface, the supplied capture portfolio is primary evidence and source is
|
|
14
|
+
corroboration; mark a claim the portfolio cannot show NOT-EVIDENCED rather than
|
|
15
|
+
inferring it from source. Never edit, implement, reconcile, accept, or spawn. Return
|
|
16
|
+
only the objective argument or PASS/FAIL audit, blockers, advisories, and criterion
|
|
17
|
+
confirmations.
|
|
15
18
|
"""
|