design-playbook 0.11.0 → 0.11.1
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/LICENSE +28 -28
- package/NOTICE +37 -37
- package/README.md +144 -144
- package/commands/design-io.md +8 -8
- package/commands/run-review.md +30 -30
- package/commands/ui-review.md +8 -8
- package/commands/ux-spec.md +8 -8
- package/mcp/_transport.py +242 -242
- package/mcp/evidence/README.md +40 -40
- package/mcp/evidence/server.py +475 -475
- package/mcp/evidence/test_server_stdio.py +699 -699
- package/mcp/preview/browser.py +759 -759
- package/mcp/preview/control.css +482 -482
- package/mcp/preview/control.html +67 -67
- package/mcp/preview/control.js +785 -786
- package/mcp/preview/control.py +182 -182
- package/mcp/preview/i18n.py +162 -162
- package/mcp/preview/server.py +129 -129
- package/mcp/preview/test_anchor_v2.py +69 -69
- package/mcp/preview/test_browser_control.py +667 -667
- package/mcp/preview/test_server_stdio.py +639 -639
- package/mcp/preview/test_transaction.py +674 -674
- package/mcp/preview/test_versions.py +572 -572
- package/mcp/preview/transaction.py +864 -864
- package/mcp/preview/util.py +35 -35
- package/mcp/preview/versions.py +396 -396
- package/mcp/test_transport.py +39 -39
- package/package.json +42 -42
- package/skills/craft-guard/SKILL.md +59 -59
- package/skills/craft-guard/references/craft.md +29 -29
- package/skills/craft-guard/references/detectors.md +124 -124
- package/skills/design-baseline/SKILL.md +134 -134
- package/skills/design-baseline/agents/openai.yaml +4 -4
- package/skills/design-baseline/references/design-template.md +73 -73
- package/skills/design-baseline/references/extraction-guidance.md +39 -39
- package/skills/design-baseline/scripts/design_baseline.py +780 -780
- package/skills/design-playbook/SKILL.md +221 -221
- package/skills/native-craft/SKILL.md +59 -59
- package/skills/native-craft/references/native-feel.md +79 -79
- package/skills/reference-intake/SKILL.md +86 -86
- package/skills/reference-intake/references/contract-template.md +82 -82
- package/skills/ui-evaluator/SKILL.md +110 -110
- package/skills/ui-evaluator/references/rubric.md +45 -45
- package/skills/ui-picker/SKILL.md +63 -63
- package/skills/ui-picker/references/components.md +31 -31
- package/skills/ui-picker/references/design.md +21 -21
- package/skills/ui-picker/references/domain.md +26 -26
- package/skills/ui-picker/references/template.md +24 -24
- package/skills/ux-spec/SKILL.md +51 -51
- package/skills/ux-spec/references/spec-template.md +43 -43
package/LICENSE
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Bandersnatch0x and contributors
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
This LICENSE covers only the authored materials in this package (skills,
|
|
26
|
-
commands, plugin metadata, and self-written examples). It does not grant
|
|
27
|
-
rights to any third-party playbook manuscript, figures, or trademarks that may
|
|
28
|
-
exist elsewhere in a parent monorepo for learning purposes.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Bandersnatch0x and contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
This LICENSE covers only the authored materials in this package (skills,
|
|
26
|
+
commands, plugin metadata, and self-written examples). It does not grant
|
|
27
|
+
rights to any third-party playbook manuscript, figures, or trademarks that may
|
|
28
|
+
exist elsewhere in a parent monorepo for learning purposes.
|
package/NOTICE
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
# NOTICE
|
|
2
|
-
|
|
3
|
-
design-playbook is an original agent plugin (skills, commands, plugin metadata,
|
|
4
|
-
workflow docs, and self-authored examples), licensed under MIT (see `LICENSE`).
|
|
5
|
-
|
|
6
|
-
It is **not** a port, overlay, or redistribution of any third-party design
|
|
7
|
-
playbook's manuscript, figures, brand marks, or demo site. No rights to such
|
|
8
|
-
materials are claimed or granted here.
|
|
9
|
-
|
|
10
|
-
The `native-craft` skill is a derivative of yetone/native-feel-skill (MIT). We
|
|
11
|
-
authored our own Design I/O leaf and condensed its decision gate and native
|
|
12
|
-
conventions audit in our own voice; the full depth (WebView survival, IPC
|
|
13
|
-
contract, memory truths, Raycast evidence) remains in the original skill, which
|
|
14
|
-
users may install separately. The MIT License of the original is reproduced
|
|
15
|
-
below in full, as required for derivative works:
|
|
16
|
-
|
|
17
|
-
The MIT License (MIT)
|
|
18
|
-
|
|
19
|
-
Copyright (c) 2026 yetone
|
|
20
|
-
|
|
21
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
22
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
23
|
-
in the Software without restriction, including without limitation the rights
|
|
24
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
25
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
26
|
-
furnished to do so, subject to the following conditions:
|
|
27
|
-
|
|
28
|
-
The above copyright notice and this permission notice shall be included in all
|
|
29
|
-
copies or substantial portions of the Software.
|
|
30
|
-
|
|
31
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
-
SOFTWARE.
|
|
1
|
+
# NOTICE
|
|
2
|
+
|
|
3
|
+
design-playbook is an original agent plugin (skills, commands, plugin metadata,
|
|
4
|
+
workflow docs, and self-authored examples), licensed under MIT (see `LICENSE`).
|
|
5
|
+
|
|
6
|
+
It is **not** a port, overlay, or redistribution of any third-party design
|
|
7
|
+
playbook's manuscript, figures, brand marks, or demo site. No rights to such
|
|
8
|
+
materials are claimed or granted here.
|
|
9
|
+
|
|
10
|
+
The `native-craft` skill is a derivative of yetone/native-feel-skill (MIT). We
|
|
11
|
+
authored our own Design I/O leaf and condensed its decision gate and native
|
|
12
|
+
conventions audit in our own voice; the full depth (WebView survival, IPC
|
|
13
|
+
contract, memory truths, Raycast evidence) remains in the original skill, which
|
|
14
|
+
users may install separately. The MIT License of the original is reproduced
|
|
15
|
+
below in full, as required for derivative works:
|
|
16
|
+
|
|
17
|
+
The MIT License (MIT)
|
|
18
|
+
|
|
19
|
+
Copyright (c) 2026 yetone
|
|
20
|
+
|
|
21
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
22
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
23
|
+
in the Software without restriction, including without limitation the rights
|
|
24
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
25
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
26
|
+
furnished to do so, subject to the following conditions:
|
|
27
|
+
|
|
28
|
+
The above copyright notice and this permission notice shall be included in all
|
|
29
|
+
copies or substantial portions of the Software.
|
|
30
|
+
|
|
31
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
32
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
33
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
34
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
35
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
36
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
37
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
# design-playbook
|
|
2
|
-
|
|
3
|
-
Agent plugin: **Design I/O** for product UI (Claude Code / Codex).
|
|
4
|
-
|
|
5
|
-
Declarations + contracts — not a style CSV pack. Compose with [ui-ux-pro-max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) and Anthropic `frontend-design` for aesthetics; this package owns pipeline and acceptance.
|
|
6
|
-
|
|
7
|
-
## Install (Claude Code)
|
|
8
|
-
|
|
9
|
-
Path of record (published) - the marketplace catalog lives at the **repo root**, not in this package:
|
|
10
|
-
|
|
11
|
-
```text
|
|
12
|
-
/plugin marketplace add https://github.com/Bandersnatch0x/design-playbook.git
|
|
13
|
-
/plugin install design-playbook@design-playbook
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
Local dev / self-test:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
claude --plugin-dir <abs-path>/packages/design-playbook # dev load, no install
|
|
20
|
-
# or local marketplace (point at the repo root, where the catalog lives)
|
|
21
|
-
/plugin marketplace add <abs-path-to-repo-root>
|
|
22
|
-
/plugin install design-playbook@design-playbook
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Install (Codex)
|
|
26
|
-
|
|
27
|
-
Same GitHub repo / monorepo root catalog. Codex-native manifest lives at `.codex-plugin/` (MCP uses relative paths).
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
codex plugin marketplace add Bandersnatch0x/design-playbook
|
|
31
|
-
codex plugin add design-playbook@design-playbook
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
Local monorepo:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
codex plugin marketplace add <abs-path-to-repo-root>
|
|
38
|
-
codex plugin add design-playbook@design-playbook
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Details + skills-only fallback: [`codex/AGENTS.md`](codex/AGENTS.md).
|
|
42
|
-
|
|
43
|
-
After install, skills and commands are **namespaced** by the plugin name:
|
|
44
|
-
|
|
45
|
-
| Invoke | Role |
|
|
46
|
-
| --- | --- |
|
|
47
|
-
| `/design-playbook:design-playbook` | Orchestrator skill (model-invoked) |
|
|
48
|
-
| `/design-playbook:design-baseline` | Discover/validate/draft the project `DESIGN.md` baseline |
|
|
49
|
-
| `/design-playbook:reference-intake` | Reference contract skill (screenshot/URL/analogy) |
|
|
50
|
-
| `/design-playbook:ux-spec` | Six-layer spec skill |
|
|
51
|
-
| `/design-playbook:ui-picker` | Shell + components skill |
|
|
52
|
-
| `/design-playbook:craft-guard` | Craft / anti-slop skill |
|
|
53
|
-
| `/design-playbook:native-craft` | Native-feel desktop declaration skill |
|
|
54
|
-
| `/design-playbook:ui-evaluator` | Point-back acceptance skill |
|
|
55
|
-
| `/design-playbook:design-io` | Full pipeline command |
|
|
56
|
-
| `/design-playbook:ux-spec` | Spec-only command |
|
|
57
|
-
| `/design-playbook:ui-review` | Review command |
|
|
58
|
-
| `/design-playbook:run-review` | Cross-run review command |
|
|
59
|
-
|
|
60
|
-
Bare `/design-io` is **not** the installed name — always use the `design-playbook:` prefix.
|
|
61
|
-
|
|
62
|
-
## Install (pi)
|
|
63
|
-
|
|
64
|
-
Published to npm, listed in the [pi package gallery](https://pi.dev/packages).
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
pi install npm:design-playbook
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
pi has no plugin namespace — skills are `/skill:<name>`, commands are bare `/<name>`:
|
|
71
|
-
|
|
72
|
-
| Invoke | Role |
|
|
73
|
-
| --- | --- |
|
|
74
|
-
| `/skill:design-playbook` | Orchestrator skill (model-invoked) |
|
|
75
|
-
| `/skill:ux-spec` … `/skill:ui-evaluator` | Same eight skills as above |
|
|
76
|
-
| `/design-io` · `/ux-spec` · `/ui-review` · `/run-review` | Pipeline / spec-only / review / cross-run commands |
|
|
77
|
-
|
|
78
|
-
pi ships no built-in MCP, so `preview*` and `observe*` skip by default (ADR-0009 absent→skip; the pipeline still runs spec → picker → fill → craft → accept). To enable both gates, install an MCP adapter and register the bundled servers in your project `.mcp.json`:
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
pi install npm:pi-mcp-adapter
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
```json
|
|
85
|
-
{
|
|
86
|
-
"mcpServers": {
|
|
87
|
-
"design-playbook-preview": {
|
|
88
|
-
"command": "python",
|
|
89
|
-
"args": ["<pkg>/mcp/preview/server.py"],
|
|
90
|
-
"timeout": 3600000
|
|
91
|
-
},
|
|
92
|
-
"design-playbook-evidence": {
|
|
93
|
-
"command": "python",
|
|
94
|
-
"args": ["<pkg>/mcp/evidence/server.py"],
|
|
95
|
-
"env": { "DESIGN_PLAYBOOK_RUN_ROOT": "." },
|
|
96
|
-
"timeout": 3600000
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
`<pkg>` is the installed package root — `~/.pi/agent/npm/node_modules/design-playbook` for a user install, `.pi/npm/node_modules/design-playbook` for a project install. Evidence also needs `pip install playwright && playwright install chromium`.
|
|
103
|
-
|
|
104
|
-
## Stack with other skills
|
|
105
|
-
|
|
106
|
-
| Package | Use for |
|
|
107
|
-
| --- | --- |
|
|
108
|
-
| **design-playbook** | Baseline? → Reference? → Spec? → plan? → shell → optional preview* → fill → craft → optional observe* → evaluate / recirculate |
|
|
109
|
-
| ui-ux-pro-max | Style / palette / type search |
|
|
110
|
-
| frontend-design | Anti-template visual direction |
|
|
111
|
-
|
|
112
|
-
## Layout
|
|
113
|
-
|
|
114
|
-
```text
|
|
115
|
-
.claude-plugin/
|
|
116
|
-
plugin.json ← plugin manifest (the marketplace catalog lives at the repo root)
|
|
117
|
-
.mcp.json ← bundled MCP servers, launched via ${CLAUDE_PLUGIN_ROOT} (ADR-0009)
|
|
118
|
-
mcp/{preview,evidence}/← MCP adapter runtimes (preview_prototype / execute_capture_plan)
|
|
119
|
-
skills/<name>/SKILL.md ← model-invoked skills
|
|
120
|
-
commands/<name>.md ← slash commands (design-io, ux-spec, ui-review, run-review)
|
|
121
|
-
codex/AGENTS.md ← Codex bridge notes
|
|
122
|
-
examples/ ← self-authored onboarding samples
|
|
123
|
-
LICENSE · NOTICE ← authored-only scope
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## What ships
|
|
127
|
-
|
|
128
|
-
Only authored content in this package (skills, pipeline commands, metadata, self-written examples, self-authored bundled MCP adapters). See `NOTICE` and repo ADRs 0003–0006, 0009. Repo-maintainer polish commands live in the monorepo root `.claude/commands/`, not in this package.
|
|
129
|
-
|
|
130
|
-
## Contract vs enforcement
|
|
131
|
-
|
|
132
|
-
Evidence exists only to satisfy a declared criterion — an observation without a binding to an L6 acceptance item is telemetry, not evidence. Runtime capture is done by external providers; design-playbook owns the binding (manifest) and the verdict (ledger), never the runtime.
|
|
133
|
-
|
|
134
|
-
The Design I/O run is a **declared, host-neutral contract** over plain-Markdown artifacts (`DESIGN.md`, spec, decision report, point-back ledger). Any coding agent that emits that shape can be checked; Claude Code and Codex are adapters over the same artifacts. Generators and bridges remain optional; existing-product UI work must bind a valid/accepted project baseline or record an explicit waiver.
|
|
135
|
-
|
|
136
|
-
Run artifacts land under `.scratch/<run>/` (`design-baseline/`, `plan.md`, `preview/`, `evidence/manifest.jsonl`, `point-back.md`); see the orchestrator skill for what lands when. That is where to look — and manually intervene — when a run stalls.
|
|
137
|
-
|
|
138
|
-
**Bundled MCP (v0.3+):** Preview (`mcp/preview/`) and Evidence (`mcp/evidence/`) runtimes ship inside this package and are registered by `.mcp.json` (`${CLAUDE_PLUGIN_ROOT}`). Sibling monorepo dirs remain compatibility launchers/docs. The orchestrator still **probes** MCP `tools/list` and skips `preview*` / `observe*` when tools are absent. Evidence provider writes artifacts only — never the manifest. **`DESIGN_PLAYBOOK_RUN_ROOT`:** default `"."` in `.mcp.json` is the **MCP process cwd**, not the chat workspace — for a host-app dogfood, set an **absolute** path to `.scratch/<run>/` (see [`mcp/evidence/README.md`](mcp/evidence/README.md)). Capture responses include `written_path` (absolute) so mis-rooted writes are visible without a filesystem search.
|
|
139
|
-
|
|
140
|
-
What is **deterministically enforced** today: plugin install/structure (`scripts/validate.py`) and the run-artifact shape (`scripts/validate_run.py` — L1–L6 present; every top-level L6 item ordered `Given -> When -> Then`; one non-empty four-field evidence ledger row per `L6.<n>` with allowed results; four non-empty finding fields with non-empty source; exactly one explicit `## Verdict` of `Pass` or `Recirculate`; Pass requires every evidence result to be `pass` and exactly one issue-linked `0 blocking` closure per blocking finding; exit 0/`RUN OK`, exit 1/`RUN INVALID`, exit 2/`RUN ERROR`; regression-tested by `tests/test_validate_run.py`, which also validates the showcase artifacts directly; **G5** is a *conditional* preview-confirm gate — enforced only when preview artifacts exist / `--preview-dir` is used; **G6** is a *conditional* evidence-binding gate — enforced only when a ledger `observed` references an `evidence/` artifact / `--evidence-dir` is used; opt-in **strict mode** via `--require-preview` / `--require-evidence` / `--strict`). The `observe*` step probes MCP tool `execute_capture_plan` and is skipped when absent. Everything else in the pipeline is agent-executed craft judgment, not a machine gate.
|
|
141
|
-
|
|
142
|
-
## Codex
|
|
143
|
-
|
|
144
|
-
See `codex/AGENTS.md`.
|
|
1
|
+
# design-playbook
|
|
2
|
+
|
|
3
|
+
Agent plugin: **Design I/O** for product UI (Claude Code / Codex).
|
|
4
|
+
|
|
5
|
+
Declarations + contracts — not a style CSV pack. Compose with [ui-ux-pro-max](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill) and Anthropic `frontend-design` for aesthetics; this package owns pipeline and acceptance.
|
|
6
|
+
|
|
7
|
+
## Install (Claude Code)
|
|
8
|
+
|
|
9
|
+
Path of record (published) - the marketplace catalog lives at the **repo root**, not in this package:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
/plugin marketplace add https://github.com/Bandersnatch0x/design-playbook.git
|
|
13
|
+
/plugin install design-playbook@design-playbook
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Local dev / self-test:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
claude --plugin-dir <abs-path>/packages/design-playbook # dev load, no install
|
|
20
|
+
# or local marketplace (point at the repo root, where the catalog lives)
|
|
21
|
+
/plugin marketplace add <abs-path-to-repo-root>
|
|
22
|
+
/plugin install design-playbook@design-playbook
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Install (Codex)
|
|
26
|
+
|
|
27
|
+
Same GitHub repo / monorepo root catalog. Codex-native manifest lives at `.codex-plugin/` (MCP uses relative paths).
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
codex plugin marketplace add Bandersnatch0x/design-playbook
|
|
31
|
+
codex plugin add design-playbook@design-playbook
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Local monorepo:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
codex plugin marketplace add <abs-path-to-repo-root>
|
|
38
|
+
codex plugin add design-playbook@design-playbook
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Details + skills-only fallback: [`codex/AGENTS.md`](codex/AGENTS.md).
|
|
42
|
+
|
|
43
|
+
After install, skills and commands are **namespaced** by the plugin name:
|
|
44
|
+
|
|
45
|
+
| Invoke | Role |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| `/design-playbook:design-playbook` | Orchestrator skill (model-invoked) |
|
|
48
|
+
| `/design-playbook:design-baseline` | Discover/validate/draft the project `DESIGN.md` baseline |
|
|
49
|
+
| `/design-playbook:reference-intake` | Reference contract skill (screenshot/URL/analogy) |
|
|
50
|
+
| `/design-playbook:ux-spec` | Six-layer spec skill |
|
|
51
|
+
| `/design-playbook:ui-picker` | Shell + components skill |
|
|
52
|
+
| `/design-playbook:craft-guard` | Craft / anti-slop skill |
|
|
53
|
+
| `/design-playbook:native-craft` | Native-feel desktop declaration skill |
|
|
54
|
+
| `/design-playbook:ui-evaluator` | Point-back acceptance skill |
|
|
55
|
+
| `/design-playbook:design-io` | Full pipeline command |
|
|
56
|
+
| `/design-playbook:ux-spec` | Spec-only command |
|
|
57
|
+
| `/design-playbook:ui-review` | Review command |
|
|
58
|
+
| `/design-playbook:run-review` | Cross-run review command |
|
|
59
|
+
|
|
60
|
+
Bare `/design-io` is **not** the installed name — always use the `design-playbook:` prefix.
|
|
61
|
+
|
|
62
|
+
## Install (pi)
|
|
63
|
+
|
|
64
|
+
Published to npm, listed in the [pi package gallery](https://pi.dev/packages).
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
pi install npm:design-playbook
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
pi has no plugin namespace — skills are `/skill:<name>`, commands are bare `/<name>`:
|
|
71
|
+
|
|
72
|
+
| Invoke | Role |
|
|
73
|
+
| --- | --- |
|
|
74
|
+
| `/skill:design-playbook` | Orchestrator skill (model-invoked) |
|
|
75
|
+
| `/skill:ux-spec` … `/skill:ui-evaluator` | Same eight skills as above |
|
|
76
|
+
| `/design-io` · `/ux-spec` · `/ui-review` · `/run-review` | Pipeline / spec-only / review / cross-run commands |
|
|
77
|
+
|
|
78
|
+
pi ships no built-in MCP, so `preview*` and `observe*` skip by default (ADR-0009 absent→skip; the pipeline still runs spec → picker → fill → craft → accept). To enable both gates, install an MCP adapter and register the bundled servers in your project `.mcp.json`:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
pi install npm:pi-mcp-adapter
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"mcpServers": {
|
|
87
|
+
"design-playbook-preview": {
|
|
88
|
+
"command": "python",
|
|
89
|
+
"args": ["<pkg>/mcp/preview/server.py"],
|
|
90
|
+
"timeout": 3600000
|
|
91
|
+
},
|
|
92
|
+
"design-playbook-evidence": {
|
|
93
|
+
"command": "python",
|
|
94
|
+
"args": ["<pkg>/mcp/evidence/server.py"],
|
|
95
|
+
"env": { "DESIGN_PLAYBOOK_RUN_ROOT": "." },
|
|
96
|
+
"timeout": 3600000
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`<pkg>` is the installed package root — `~/.pi/agent/npm/node_modules/design-playbook` for a user install, `.pi/npm/node_modules/design-playbook` for a project install. Evidence also needs `pip install playwright && playwright install chromium`.
|
|
103
|
+
|
|
104
|
+
## Stack with other skills
|
|
105
|
+
|
|
106
|
+
| Package | Use for |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| **design-playbook** | Baseline? → Reference? → Spec? → plan? → shell → optional preview* → fill → craft → optional observe* → evaluate / recirculate |
|
|
109
|
+
| ui-ux-pro-max | Style / palette / type search |
|
|
110
|
+
| frontend-design | Anti-template visual direction |
|
|
111
|
+
|
|
112
|
+
## Layout
|
|
113
|
+
|
|
114
|
+
```text
|
|
115
|
+
.claude-plugin/
|
|
116
|
+
plugin.json ← plugin manifest (the marketplace catalog lives at the repo root)
|
|
117
|
+
.mcp.json ← bundled MCP servers, launched via ${CLAUDE_PLUGIN_ROOT} (ADR-0009)
|
|
118
|
+
mcp/{preview,evidence}/← MCP adapter runtimes (preview_prototype / execute_capture_plan)
|
|
119
|
+
skills/<name>/SKILL.md ← model-invoked skills
|
|
120
|
+
commands/<name>.md ← slash commands (design-io, ux-spec, ui-review, run-review)
|
|
121
|
+
codex/AGENTS.md ← Codex bridge notes
|
|
122
|
+
examples/ ← self-authored onboarding samples
|
|
123
|
+
LICENSE · NOTICE ← authored-only scope
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## What ships
|
|
127
|
+
|
|
128
|
+
Only authored content in this package (skills, pipeline commands, metadata, self-written examples, self-authored bundled MCP adapters). See `NOTICE` and repo ADRs 0003–0006, 0009. Repo-maintainer polish commands live in the monorepo root `.claude/commands/`, not in this package.
|
|
129
|
+
|
|
130
|
+
## Contract vs enforcement
|
|
131
|
+
|
|
132
|
+
Evidence exists only to satisfy a declared criterion — an observation without a binding to an L6 acceptance item is telemetry, not evidence. Runtime capture is done by external providers; design-playbook owns the binding (manifest) and the verdict (ledger), never the runtime.
|
|
133
|
+
|
|
134
|
+
The Design I/O run is a **declared, host-neutral contract** over plain-Markdown artifacts (`DESIGN.md`, spec, decision report, point-back ledger). Any coding agent that emits that shape can be checked; Claude Code and Codex are adapters over the same artifacts. Generators and bridges remain optional; existing-product UI work must bind a valid/accepted project baseline or record an explicit waiver.
|
|
135
|
+
|
|
136
|
+
Run artifacts land under `.scratch/<run>/` (`design-baseline/`, `plan.md`, `preview/`, `evidence/manifest.jsonl`, `point-back.md`); see the orchestrator skill for what lands when. That is where to look — and manually intervene — when a run stalls.
|
|
137
|
+
|
|
138
|
+
**Bundled MCP (v0.3+):** Preview (`mcp/preview/`) and Evidence (`mcp/evidence/`) runtimes ship inside this package and are registered by `.mcp.json` (`${CLAUDE_PLUGIN_ROOT}`). Sibling monorepo dirs remain compatibility launchers/docs. The orchestrator still **probes** MCP `tools/list` and skips `preview*` / `observe*` when tools are absent. Evidence provider writes artifacts only — never the manifest. **`DESIGN_PLAYBOOK_RUN_ROOT`:** default `"."` in `.mcp.json` is the **MCP process cwd**, not the chat workspace — for a host-app dogfood, set an **absolute** path to `.scratch/<run>/` (see [`mcp/evidence/README.md`](mcp/evidence/README.md)). Capture responses include `written_path` (absolute) so mis-rooted writes are visible without a filesystem search.
|
|
139
|
+
|
|
140
|
+
What is **deterministically enforced** today: plugin install/structure (`scripts/validate.py`) and the run-artifact shape (`scripts/validate_run.py` — L1–L6 present; every top-level L6 item ordered `Given -> When -> Then`; one non-empty four-field evidence ledger row per `L6.<n>` with allowed results; four non-empty finding fields with non-empty source; exactly one explicit `## Verdict` of `Pass` or `Recirculate`; Pass requires every evidence result to be `pass` and exactly one issue-linked `0 blocking` closure per blocking finding; exit 0/`RUN OK`, exit 1/`RUN INVALID`, exit 2/`RUN ERROR`; regression-tested by `tests/test_validate_run.py`, which also validates the showcase artifacts directly; **G5** is a *conditional* preview-confirm gate — enforced only when preview artifacts exist / `--preview-dir` is used; **G6** is a *conditional* evidence-binding gate — enforced only when a ledger `observed` references an `evidence/` artifact / `--evidence-dir` is used; opt-in **strict mode** via `--require-preview` / `--require-evidence` / `--strict`). The `observe*` step probes MCP tool `execute_capture_plan` and is skipped when absent. Everything else in the pipeline is agent-executed craft judgment, not a machine gate.
|
|
141
|
+
|
|
142
|
+
## Codex
|
|
143
|
+
|
|
144
|
+
See `codex/AGENTS.md`.
|
package/commands/design-io.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Run Design I/O end-to-end (reference-intake? → spec? → plan? → shell → preview* → fill → craft → accept)
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Run skill **design-playbook** in full. Honor each step’s completion criterion before the next. Recirculate blocking evaluator findings to the owning declaration. Entry routing and plan/preview orchestration live in that skill (not here).
|
|
6
|
-
|
|
7
|
-
User request:
|
|
8
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Run Design I/O end-to-end (reference-intake? → spec? → plan? → shell → preview* → fill → craft → accept)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run skill **design-playbook** in full. Honor each step’s completion criterion before the next. Recirculate blocking evaluator findings to the owning declaration. Entry routing and plan/preview orchestration live in that skill (not here).
|
|
6
|
+
|
|
7
|
+
User request:
|
|
8
|
+
$ARGUMENTS
|
package/commands/run-review.md
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Cross-run review of Design I/O runs — gate table + repeat blockers
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Cross-run **run review** over `.scratch/<run>/` dirs in the user project. Not a step of a single Design I/O run. Markdown only; report header **`run-review/v1`**.
|
|
6
|
-
|
|
7
|
-
## Discover
|
|
8
|
-
|
|
9
|
-
Scan user-side `.scratch/<run>/` (not monorepo `dogfood/*` globs). **Include** only dirs that have `point-back.md` (one table row each). List dirs without `point-back.md` as skipped + reason — they contribute **0** rows. If runs-with-point-back **< 2**, refuse and report that N.
|
|
10
|
-
|
|
11
|
-
## Report (tables, in order)
|
|
12
|
-
|
|
13
|
-
1. **Inclusion manifest** first: `path | status` (`included` / `skipped` + reason). Note: hash match ≠ honest transcription of `observed`.
|
|
14
|
-
2. **Per-run table** — mandatory **run-path** column; other columns as needed; **gate** from real `validate_run.py` exit when the script is present (plugin install: `packages/design-playbook/scripts/validate_run.py` per run); else literal `not checked`. **Never** infer ok from "artifacts look complete".
|
|
15
|
-
3. **Repeat blockers** — pure frequency table `count | runs | observed text` (verbatim first-seen text). A **repeat blocker** is the same normalized `observed` text recurring across runs (**counting, not judging**). Rows only where ledger `result != pass`. Grouping key = `observed` **casefold + whitespace-collapsed**, then **char-for-char** equality only; `count ≥ 2`. Literal differences stay separate; optional `similar:` pointer line, never merge counts. **`_none_` is normal** when nothing qualifies (do not loosen normalization to manufacture repeats).
|
|
16
|
-
4. **Point-back** cites: path + verbatim `observed:` quote; no line numbers.
|
|
17
|
-
5. Rollup numbers derived **row-by-row** from the tables above — no "overall it seems".
|
|
18
|
-
|
|
19
|
-
Ledger row shape: **ui-evaluator** step 2 (do not restate).
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
禁止:
|
|
23
|
-
- no new run ledger
|
|
24
|
-
- no prose lessons / narrative "learning"
|
|
25
|
-
- no auto-writeback to baseline
|
|
26
|
-
- no semantic clustering of observed — verbatim grouping only
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Scope:
|
|
30
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Cross-run review of Design I/O runs — gate table + repeat blockers
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Cross-run **run review** over `.scratch/<run>/` dirs in the user project. Not a step of a single Design I/O run. Markdown only; report header **`run-review/v1`**.
|
|
6
|
+
|
|
7
|
+
## Discover
|
|
8
|
+
|
|
9
|
+
Scan user-side `.scratch/<run>/` (not monorepo `dogfood/*` globs). **Include** only dirs that have `point-back.md` (one table row each). List dirs without `point-back.md` as skipped + reason — they contribute **0** rows. If runs-with-point-back **< 2**, refuse and report that N.
|
|
10
|
+
|
|
11
|
+
## Report (tables, in order)
|
|
12
|
+
|
|
13
|
+
1. **Inclusion manifest** first: `path | status` (`included` / `skipped` + reason). Note: hash match ≠ honest transcription of `observed`.
|
|
14
|
+
2. **Per-run table** — mandatory **run-path** column; other columns as needed; **gate** from real `validate_run.py` exit when the script is present (plugin install: `packages/design-playbook/scripts/validate_run.py` per run); else literal `not checked`. **Never** infer ok from "artifacts look complete".
|
|
15
|
+
3. **Repeat blockers** — pure frequency table `count | runs | observed text` (verbatim first-seen text). A **repeat blocker** is the same normalized `observed` text recurring across runs (**counting, not judging**). Rows only where ledger `result != pass`. Grouping key = `observed` **casefold + whitespace-collapsed**, then **char-for-char** equality only; `count ≥ 2`. Literal differences stay separate; optional `similar:` pointer line, never merge counts. **`_none_` is normal** when nothing qualifies (do not loosen normalization to manufacture repeats).
|
|
16
|
+
4. **Point-back** cites: path + verbatim `observed:` quote; no line numbers.
|
|
17
|
+
5. Rollup numbers derived **row-by-row** from the tables above — no "overall it seems".
|
|
18
|
+
|
|
19
|
+
Ledger row shape: **ui-evaluator** step 2 (do not restate).
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
禁止:
|
|
23
|
+
- no new run ledger
|
|
24
|
+
- no prose lessons / narrative "learning"
|
|
25
|
+
- no auto-writeback to baseline
|
|
26
|
+
- no semantic clustering of observed — verbatim grouping only
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Scope:
|
|
30
|
+
$ARGUMENTS
|
package/commands/ui-review.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Declaration-backed UI review with point-back findings
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Run skill **ui-evaluator** (pull craft-guard checks when AI slop/motion/loading is in scope). Output issue/source/fix/severity; blocking first.
|
|
6
|
-
|
|
7
|
-
Scope:
|
|
8
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Declaration-backed UI review with point-back findings
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run skill **ui-evaluator** (pull craft-guard checks when AI slop/motion/loading is in scope). Output issue/source/fix/severity; blocking first.
|
|
6
|
+
|
|
7
|
+
Scope:
|
|
8
|
+
$ARGUMENTS
|
package/commands/ux-spec.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Six-layer spec.md only (stop before UI shell/code)
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Run skill **ux-spec** only. Emit complete `spec.md`. Do not pick templates or write UI.
|
|
6
|
-
|
|
7
|
-
Request:
|
|
8
|
-
$ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Six-layer spec.md only (stop before UI shell/code)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run skill **ux-spec** only. Emit complete `spec.md`. Do not pick templates or write UI.
|
|
6
|
+
|
|
7
|
+
Request:
|
|
8
|
+
$ARGUMENTS
|