@orkestrel/scaffold 0.0.33 → 0.0.36
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/orchestration.md +28 -12
- package/dist/host/agents/skills/enterprise-bootstrap/SKILL.md +146 -194
- package/dist/host/agents/skills/enterprise-bootstrap/references/bootstrap-reference.md +29 -22
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +31 -4
- package/dist/host/agents/skills/enterprise-bootstrap/references/frontend-design.md +103 -33
- package/dist/host/agents/skills/enterprise-bootstrap/references/utilities.md +1 -1
- package/dist/host/agents/skills/orkestrel-build-application/references/application.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +2 -1
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +21 -3
- package/dist/host/agents/skills/orkestrel-falsify/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +7 -7
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +10 -2
- package/dist/host/agents/skills/orkestrel-human-journey/SKILL.md +124 -0
- package/dist/host/agents/skills/orkestrel-human-journey/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-human-journey/references/captures.md +74 -0
- package/dist/host/agents/skills/orkestrel-human-journey/references/layer.md +131 -0
- package/dist/host/claude/agents/analyst.md +4 -4
- package/dist/host/claude/agents/codex.md +4 -4
- package/dist/host/claude/agents/grok.md +4 -4
- package/dist/host/claude/agents/sol.md +56 -0
- package/dist/host/claude/rules/application.md +5 -3
- package/dist/host/claude/rules/documentation.md +6 -3
- package/dist/host/claude/rules/patterns.md +10 -0
- package/dist/host/claude/rules/quality.md +5 -4
- package/dist/host/claude/rules/tests.md +17 -12
- package/dist/host/claude/settings.json +94 -5
- package/dist/host/claude/skills/orkestrel-human-journey/SKILL.md +10 -0
- package/dist/host/claude/skills/orkestrel-polish-surface/SKILL.md +1 -1
- package/dist/host/codex/agents/grok.toml +1 -1
- package/dist/host/codex/agents/opus.toml +3 -3
- package/dist/host/codex/agents/planner.toml +1 -1
- package/dist/host/codex/agents/reviewer.toml +1 -1
- package/dist/host/dotfiles/gitignore +3 -0
- package/dist/host/manifest.json +41 -1
- 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/policy.test.ts +33 -0
- package/dist/host/tests/setupPolicy.ts +319 -2
- package/dist/src/core/index.cjs +1 -1
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.js +1 -1
- package/dist/src/core/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -2,8 +2,100 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-settings.json",
|
|
3
3
|
"enableAllProjectMcpServers": true,
|
|
4
4
|
"permissions": {
|
|
5
|
-
"defaultMode": "
|
|
6
|
-
"allow": [
|
|
5
|
+
"defaultMode": "bypassPermissions",
|
|
6
|
+
"allow": [
|
|
7
|
+
"Bash(codex --version)",
|
|
8
|
+
"Bash(codex login *)",
|
|
9
|
+
"Bash(codex login status)",
|
|
10
|
+
"Bash(codex exec *)",
|
|
11
|
+
"Bash(agent.cmd --version)",
|
|
12
|
+
"Bash(git status *)",
|
|
13
|
+
"Bash(git log *)",
|
|
14
|
+
"Bash(git show *)",
|
|
15
|
+
"Bash(git diff *)",
|
|
16
|
+
"Bash(mkdir *)",
|
|
17
|
+
"Bash(mkdir -p tmp/*)",
|
|
18
|
+
"Read(//tmp/**)",
|
|
19
|
+
"Bash(npm view *)",
|
|
20
|
+
"Bash(npm ci)",
|
|
21
|
+
"Bash(node_modules/.bin/scaffold audit *)",
|
|
22
|
+
"Bash(npx scaffold audit *)",
|
|
23
|
+
"Bash(npx vitest run *)",
|
|
24
|
+
"Bash(npx tsc --noEmit *)",
|
|
25
|
+
"Bash(npm test)",
|
|
26
|
+
"Bash(npm test *)",
|
|
27
|
+
"Bash(npm run clean)",
|
|
28
|
+
"Bash(npm run check)",
|
|
29
|
+
"Bash(npm run check *)",
|
|
30
|
+
"Bash(npm run check:src)",
|
|
31
|
+
"Bash(npm run check:src *)",
|
|
32
|
+
"Bash(npm run check:src:core)",
|
|
33
|
+
"Bash(npm run check:src:core *)",
|
|
34
|
+
"Bash(npm run check:app)",
|
|
35
|
+
"Bash(npm run check:app *)",
|
|
36
|
+
"Bash(npm run check:app:core)",
|
|
37
|
+
"Bash(npm run check:app:core *)",
|
|
38
|
+
"Bash(npm run check:app:browser)",
|
|
39
|
+
"Bash(npm run check:app:browser *)",
|
|
40
|
+
"Bash(npm run lint)",
|
|
41
|
+
"Bash(npm run lint *)",
|
|
42
|
+
"Bash(npm run lint:check)",
|
|
43
|
+
"Bash(npm run lint:check *)",
|
|
44
|
+
"Bash(npm run format)",
|
|
45
|
+
"Bash(npm run format *)",
|
|
46
|
+
"Bash(npm run format:check)",
|
|
47
|
+
"Bash(npm run format:check *)",
|
|
48
|
+
"Bash(npm run test)",
|
|
49
|
+
"Bash(npm run test *)",
|
|
50
|
+
"Bash(npm run test:src)",
|
|
51
|
+
"Bash(npm run test:src *)",
|
|
52
|
+
"Bash(npm run test:src:core)",
|
|
53
|
+
"Bash(npm run test:src:core *)",
|
|
54
|
+
"Bash(npm run test:app)",
|
|
55
|
+
"Bash(npm run test:app *)",
|
|
56
|
+
"Bash(npm run test:app:core)",
|
|
57
|
+
"Bash(npm run test:app:core *)",
|
|
58
|
+
"Bash(npm run test:app:browser)",
|
|
59
|
+
"Bash(npm run test:app:browser *)",
|
|
60
|
+
"Bash(npm run test:policy)",
|
|
61
|
+
"Bash(npm run test:policy *)",
|
|
62
|
+
"Bash(npm run test:config)",
|
|
63
|
+
"Bash(npm run test:config *)",
|
|
64
|
+
"Bash(npm run test:guides)",
|
|
65
|
+
"Bash(npm run test:guides *)",
|
|
66
|
+
"Bash(npm run test:conformance)",
|
|
67
|
+
"Bash(npm run test:conformance *)",
|
|
68
|
+
"Bash(npm run test:integration)",
|
|
69
|
+
"Bash(npm run test:integration *)",
|
|
70
|
+
"Bash(npm run test:distribution)",
|
|
71
|
+
"Bash(npm run test:distribution *)",
|
|
72
|
+
"Bash(npm run test:probe)",
|
|
73
|
+
"Bash(npm run test:probe *)",
|
|
74
|
+
"Bash(npm run build)",
|
|
75
|
+
"Bash(npm run build *)",
|
|
76
|
+
"Bash(npm run build:src)",
|
|
77
|
+
"Bash(npm run build:src *)",
|
|
78
|
+
"Bash(npm run build:src:core)",
|
|
79
|
+
"Bash(npm run build:src:core *)",
|
|
80
|
+
"Bash(npm run build:app)",
|
|
81
|
+
"Bash(npm run build:app *)",
|
|
82
|
+
"Bash(npm run build:app:browser)",
|
|
83
|
+
"Bash(npm run build:app:browser *)",
|
|
84
|
+
"mcp__codex__codex",
|
|
85
|
+
"mcp__codex__codex-reply",
|
|
86
|
+
"mcp__webstorm__read_file",
|
|
87
|
+
"mcp__webstorm__search_regex",
|
|
88
|
+
"mcp__webstorm__search_text",
|
|
89
|
+
"mcp__webstorm__search_file",
|
|
90
|
+
"mcp__webstorm__search_symbol",
|
|
91
|
+
"mcp__webstorm__get_file_problems",
|
|
92
|
+
"mcp__webstorm__get_symbol_info",
|
|
93
|
+
"mcp__webstorm__get_project_modules",
|
|
94
|
+
"mcp__webstorm__get_all_open_file_paths",
|
|
95
|
+
"mcp__webstorm__lint_files",
|
|
96
|
+
"mcp__webstorm__git_status",
|
|
97
|
+
"mcp__webstorm__list_directory_tree"
|
|
98
|
+
],
|
|
7
99
|
"deny": [
|
|
8
100
|
"Read(.env*)",
|
|
9
101
|
"Read(**/.env*)",
|
|
@@ -21,8 +113,6 @@
|
|
|
21
113
|
"Read(**/credentials)",
|
|
22
114
|
"Read(credentials.json)",
|
|
23
115
|
"Read(**/credentials.json)",
|
|
24
|
-
"Read(settings.local.json)",
|
|
25
|
-
"Read(**/settings.local.json)",
|
|
26
116
|
"Read(application_default_credentials.json)",
|
|
27
117
|
"Read(**/application_default_credentials.json)",
|
|
28
118
|
"Read(*.pem)",
|
|
@@ -74,7 +164,6 @@
|
|
|
74
164
|
"Read(//**/.git-credentials)",
|
|
75
165
|
"Read(//**/credentials)",
|
|
76
166
|
"Read(//**/credentials.json)",
|
|
77
|
-
"Read(//**/settings.local.json)",
|
|
78
167
|
"Read(//**/application_default_credentials.json)",
|
|
79
168
|
"Read(//**/*.pem)",
|
|
80
169
|
"Read(//**/*.key)",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orkestrel-human-journey
|
|
3
|
+
description: Prove a browser application the way a person uses it — real keystrokes, clicks, and Tab/Enter against only what is visible and reachable — and generate the capture portfolio from those same journeys. Use when accepting a UI build, proving an application end to end, deciding whether a surface is reachable by keyboard alone, proving what a screen refuses as well as what it does, auditing whether the interface speaks the user's vocabulary rather than the engine's, producing the screenshots a design review judges, or whenever the only evidence a screen works is a test that drove it through JavaScript instead of through the interface.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Load the canonical workflow
|
|
7
|
+
|
|
8
|
+
Read `.agents/skills/orkestrel-human-journey/SKILL.md` completely, then read every reference it requires. Follow that canonical workflow before acting.
|
|
9
|
+
|
|
10
|
+
This bridge contains no independent process. `AGENTS.md`, applicable rules, the canonical skill, and the governing guide/spec remain authoritative in that order.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: orkestrel-polish-surface
|
|
3
|
-
description: Drive a rendered or externally driven surface to shipped quality through capture-evidence verdict rounds. Use
|
|
3
|
+
description: Drive a rendered or externally driven surface to shipped quality through capture-evidence verdict rounds. Use when asked to polish an interface, bring a rendered surface to enterprise grade, judge what actually renders rather than what the source claims, reconcile design, state-truth, and inventory findings into fix units, or converge repeated review rounds on captured proof. Run one round for a narrow request; run the full campaign for a polish or production-readiness request.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Load the canonical workflow
|
|
@@ -11,7 +11,7 @@ cursor-grok-4.5-high; re-read `agent models` if it fails and never guess or
|
|
|
11
11
|
substitute. Invoke Cursor in ask mode only for a short bounded ask:
|
|
12
12
|
agent -p --trust --mode=ask --model "$CURSOR_GROK_MODEL" "<brief>"
|
|
13
13
|
For longer work do not launch anything: return the brief path, the exact resolved
|
|
14
|
-
command, the journal path
|
|
14
|
+
command, and the journal path for the Orchestrator to launch under a cap it owns.
|
|
15
15
|
The brief requires read-only work, concise evidence with file:line pointers, and no
|
|
16
16
|
raw dumps, design, decisions, or edits. Never use --force, expose CURSOR_API_KEY,
|
|
17
17
|
read secrets, or edit. Compare git status before and after. Return only the question,
|
|
@@ -15,9 +15,9 @@ 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
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
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
the brief path, the exact resolved command, and the journal path, and let the
|
|
19
|
+
Orchestrator launch it as a tracked background command under a cap it owns. Never
|
|
20
|
+
recommend a cap; you hold no record of prior runs. Never detach a run, poll, restart, or kill one. The brief requires
|
|
21
21
|
owned files, off-limits files, acceptance criteria, TTTDD, and a deviation contract; it
|
|
22
22
|
forbids dependency installation, commits, pushes, publishing, credentials,
|
|
23
23
|
destructive commands, shared-file edits, and tree-wide mutating gates. After it
|
|
@@ -10,7 +10,7 @@ Grok evidence. Pass the exact design brief independently shared with the Sol ana
|
|
|
10
10
|
to:
|
|
11
11
|
claude -p "<brief>" --model opus --effort high --permission-mode plan
|
|
12
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
|
|
13
|
+
brief path, the exact resolved command, and the journal path
|
|
14
14
|
for the Orchestrator to launch.
|
|
15
15
|
Verify that the `claude` CLI is available before dispatch. If it is absent or the
|
|
16
16
|
dispatch fails, return the failure immediately so the Sol main session can run the
|
|
@@ -9,7 +9,7 @@ dispatch-named skill and references, the governing guide/spec, and the actual di
|
|
|
9
9
|
Pass a bounded design-review brief to:
|
|
10
10
|
claude -p "<brief>" --model opus --effort high --permission-mode plan
|
|
11
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
|
|
12
|
+
path, the exact resolved command, and the journal path for the
|
|
13
13
|
Orchestrator to launch.
|
|
14
14
|
Verify that the `claude` CLI is available before dispatch. If it is absent or the
|
|
15
15
|
dispatch fails, return the failure immediately so the Sol main session can run the
|
package/dist/host/manifest.json
CHANGED
|
@@ -110,6 +110,11 @@
|
|
|
110
110
|
"destination": ".agents/skills/orkestrel-falsify/SKILL.md",
|
|
111
111
|
"executable": false
|
|
112
112
|
},
|
|
113
|
+
{
|
|
114
|
+
"storage": "agents/skills/orkestrel-falsify/agents/openai.yaml",
|
|
115
|
+
"destination": ".agents/skills/orkestrel-falsify/agents/openai.yaml",
|
|
116
|
+
"executable": false
|
|
117
|
+
},
|
|
113
118
|
{
|
|
114
119
|
"storage": "agents/skills/orkestrel-falsify/references/brief.md",
|
|
115
120
|
"destination": ".agents/skills/orkestrel-falsify/references/brief.md",
|
|
@@ -150,6 +155,26 @@
|
|
|
150
155
|
"destination": ".agents/skills/orkestrel-harden-package/references/research.md",
|
|
151
156
|
"executable": false
|
|
152
157
|
},
|
|
158
|
+
{
|
|
159
|
+
"storage": "agents/skills/orkestrel-human-journey/SKILL.md",
|
|
160
|
+
"destination": ".agents/skills/orkestrel-human-journey/SKILL.md",
|
|
161
|
+
"executable": false
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"storage": "agents/skills/orkestrel-human-journey/agents/openai.yaml",
|
|
165
|
+
"destination": ".agents/skills/orkestrel-human-journey/agents/openai.yaml",
|
|
166
|
+
"executable": false
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"storage": "agents/skills/orkestrel-human-journey/references/captures.md",
|
|
170
|
+
"destination": ".agents/skills/orkestrel-human-journey/references/captures.md",
|
|
171
|
+
"executable": false
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"storage": "agents/skills/orkestrel-human-journey/references/layer.md",
|
|
175
|
+
"destination": ".agents/skills/orkestrel-human-journey/references/layer.md",
|
|
176
|
+
"executable": false
|
|
177
|
+
},
|
|
153
178
|
{
|
|
154
179
|
"storage": "agents/skills/orkestrel-polish-surface/SKILL.md",
|
|
155
180
|
"destination": ".agents/skills/orkestrel-polish-surface/SKILL.md",
|
|
@@ -225,6 +250,11 @@
|
|
|
225
250
|
"destination": ".claude/agents/scout.md",
|
|
226
251
|
"executable": false
|
|
227
252
|
},
|
|
253
|
+
{
|
|
254
|
+
"storage": "claude/agents/sol.md",
|
|
255
|
+
"destination": ".claude/agents/sol.md",
|
|
256
|
+
"executable": false
|
|
257
|
+
},
|
|
228
258
|
{
|
|
229
259
|
"storage": "claude/agents/verifier.md",
|
|
230
260
|
"destination": ".claude/agents/verifier.md",
|
|
@@ -320,6 +350,11 @@
|
|
|
320
350
|
"destination": ".claude/skills/orkestrel-harden-package/SKILL.md",
|
|
321
351
|
"executable": false
|
|
322
352
|
},
|
|
353
|
+
{
|
|
354
|
+
"storage": "claude/skills/orkestrel-human-journey/SKILL.md",
|
|
355
|
+
"destination": ".claude/skills/orkestrel-human-journey/SKILL.md",
|
|
356
|
+
"executable": false
|
|
357
|
+
},
|
|
323
358
|
{
|
|
324
359
|
"storage": "claude/skills/orkestrel-polish-surface/SKILL.md",
|
|
325
360
|
"destination": ".claude/skills/orkestrel-polish-surface/SKILL.md",
|
|
@@ -511,10 +546,14 @@
|
|
|
511
546
|
".agents/skills/orkestrel-debrief/agents",
|
|
512
547
|
".agents/skills/orkestrel-debrief/references",
|
|
513
548
|
".agents/skills/orkestrel-falsify",
|
|
549
|
+
".agents/skills/orkestrel-falsify/agents",
|
|
514
550
|
".agents/skills/orkestrel-falsify/references",
|
|
515
551
|
".agents/skills/orkestrel-harden-package",
|
|
516
552
|
".agents/skills/orkestrel-harden-package/agents",
|
|
517
553
|
".agents/skills/orkestrel-harden-package/references",
|
|
554
|
+
".agents/skills/orkestrel-human-journey",
|
|
555
|
+
".agents/skills/orkestrel-human-journey/agents",
|
|
556
|
+
".agents/skills/orkestrel-human-journey/references",
|
|
518
557
|
".agents/skills/orkestrel-polish-surface",
|
|
519
558
|
".agents/skills/orkestrel-polish-surface/agents",
|
|
520
559
|
".agents/skills/orkestrel-polish-surface/references",
|
|
@@ -527,9 +566,10 @@
|
|
|
527
566
|
".claude/skills/orkestrel-debrief",
|
|
528
567
|
".claude/skills/orkestrel-falsify",
|
|
529
568
|
".claude/skills/orkestrel-harden-package",
|
|
569
|
+
".claude/skills/orkestrel-human-journey",
|
|
530
570
|
".claude/skills/orkestrel-polish-surface",
|
|
531
571
|
".codex/agents",
|
|
532
572
|
".cursor/rules"
|
|
533
573
|
],
|
|
534
|
-
"digest": "
|
|
574
|
+
"digest": "d2b056bb83ece5f6e49cb3acd27fd917241a51a3e287791eaf8d807cd56fb4c7"
|
|
535
575
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -6,7 +6,12 @@ import {
|
|
|
6
6
|
inspectPolicyMirrorPaths,
|
|
7
7
|
inspectPolicySources,
|
|
8
8
|
inspectPolicyWorkspace,
|
|
9
|
+
inspectSkillFamily,
|
|
9
10
|
POLICY_CONTROLS,
|
|
11
|
+
readSkillFamily,
|
|
12
|
+
SKILL_POLICY_APOSTROPHE,
|
|
13
|
+
SKILL_POLICY_CONTROLS,
|
|
14
|
+
SKILL_POLICY_EXCLUSION,
|
|
10
15
|
stemToPolicyCandidates,
|
|
11
16
|
testToPolicyStem,
|
|
12
17
|
} from './setupPolicy.js'
|
|
@@ -291,6 +296,34 @@ describe('instrument negative controls', () => {
|
|
|
291
296
|
}
|
|
292
297
|
})
|
|
293
298
|
|
|
299
|
+
describe('skill family policy', () => {
|
|
300
|
+
it('discovers a non-empty family containing orkestrel-falsify', () => {
|
|
301
|
+
const family = readSkillFamily(process.cwd())
|
|
302
|
+
expect(family.length).toBeGreaterThan(0)
|
|
303
|
+
expect(family).toContain('orkestrel-falsify')
|
|
304
|
+
})
|
|
305
|
+
|
|
306
|
+
it('requires every discovered skill file, metadata token, and reference', () => {
|
|
307
|
+
expect(inspectSkillFamily(process.cwd())).toEqual([])
|
|
308
|
+
})
|
|
309
|
+
|
|
310
|
+
for (const control of SKILL_POLICY_CONTROLS) {
|
|
311
|
+
it(`${control.label} [membership: ${control.membership}]`, () => {
|
|
312
|
+
const violations = inspectPolicyControl(control)
|
|
313
|
+
expect(violations).toHaveLength(1)
|
|
314
|
+
expect(violations[0]?.rule).toBe(control.rule)
|
|
315
|
+
})
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
it(`${SKILL_POLICY_APOSTROPHE.label} [membership: ${SKILL_POLICY_APOSTROPHE.membership}]`, () => {
|
|
319
|
+
expect(inspectPolicyControl(SKILL_POLICY_APOSTROPHE)).toEqual([])
|
|
320
|
+
})
|
|
321
|
+
|
|
322
|
+
it(`${SKILL_POLICY_EXCLUSION.label} [membership: ${SKILL_POLICY_EXCLUSION.membership}]`, () => {
|
|
323
|
+
expect(inspectPolicyControl(SKILL_POLICY_EXCLUSION)).toEqual([])
|
|
324
|
+
})
|
|
325
|
+
})
|
|
326
|
+
|
|
294
327
|
describe('repository policy', () => {
|
|
295
328
|
it('enforces placement and mirrors over the real workspace', () => {
|
|
296
329
|
expect(inspectPolicyWorkspace(process.cwd())).toEqual([])
|