@mutmutco/codex-plugin 4.6.2 → 4.6.4
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/.codex-plugin/plugin.json +1 -1
- package/cli/dist/main.cjs +10764 -10197
- package/cli/package.json +1 -1
- package/package.json +1 -1
- package/skills/board/SKILL.md +12 -11
- package/skills/board/reference.md +5 -1
- package/skills/bootstrap/SKILL.md +5 -5
- package/skills/bootstrap/reference.md +16 -77
- package/skills/epic/SKILL.md +3 -3
- package/skills/hotfix/SKILL.md +10 -12
- package/skills/hotfix/recovery.md +3 -7
- package/skills/intercom-guest/SKILL.md +6 -7
- package/skills/mmi-help/SKILL.md +5 -4
- package/skills/org-guide/SKILL.md +18 -27
- package/skills/org-guide/references/design.md +301 -0
- package/skills/org-guide/references/vault.md +2 -9
- package/skills/org-guide/references/work-and-releases.md +6 -297
- package/skills/rcand/SKILL.md +5 -9
- package/skills/rcand/recovery.md +1 -10
- package/skills/rcand/suite.md +1 -1
- package/skills/release/SKILL.md +7 -11
- package/skills/release/recovery.md +1 -2
- package/skills/release/suite.md +1 -1
- package/skills/release/train-common.md +28 -0
- package/skills/release/verification.md +11 -46
- package/skills/secrets/SKILL.md +6 -5
- package/skills/secrets/reference.md +5 -47
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# Design and MM Artifacts
|
|
2
|
+
|
|
3
|
+
Read this before any UI, design, document or MM Artifact work. It was split out of the work-and-releases topic (#9460); the rulings below keep their original dates and wording.
|
|
4
|
+
|
|
5
|
+
Owner ruling 2026-10-25 (#8814, #8816, MM-Work#7629; `docs/decisions/2026-10-06-browser-checks-nightly.md`):
|
|
6
|
+
the required `gate` holds fast deterministic checks only; UI/design uses `@mutmutco/mmwork-ds`
|
|
7
|
+
(`mmwork-check-ui`) and the mandatory Impeccable skill/toolkit. Inspect all applicable toolkit
|
|
8
|
+
capabilities for every design task. Work on the live app; use our own MM Artifacts A/B canvas only
|
|
9
|
+
for owner design choices, with live kit pieces and recorded choice ID / owner-decision reference.
|
|
10
|
+
A canvas is for how something looks or works on screen only (#8986, relay wording): approvals for
|
|
11
|
+
keys, releases, deletions, data access or tooling never go on a canvas; send them to the
|
|
12
|
+
orchestrator, who asks the owner in plain words.
|
|
13
|
+
Functional browser journeys remain opt-in `workflow_dispatch`-only, never design checks or gates.
|
|
14
|
+
|
|
15
|
+
## The MM Open Design System Bible (#8837, #8839)
|
|
16
|
+
|
|
17
|
+
Every agent doing UI, design, document or MM Artifact work reads this first: Part 1 builds the
|
|
18
|
+
system, Part 2 improves it, Part 3 governs A/B choosing, Part 4 gates kit changes on visual A/B.
|
|
19
|
+
Handoff and workaround notes cite this section by path and add only the task's own deviation,
|
|
20
|
+
failure and action, never a restatement; new owner rulings are still recorded verbatim.
|
|
21
|
+
|
|
22
|
+
### Part 1 — The five pillars of the MM Open Design System
|
|
23
|
+
|
|
24
|
+
Owner ruling 2026-10-25 (#8837, MM-Work#7668): the stage skill is retired completely. UI and
|
|
25
|
+
design work follows one harmonized **Front-Loaded Impeccable v4.7.0 + MM Artifacts + Live Docs
|
|
26
|
+
(`Canlı belgeler`) + Atomic Design Kit (`@mutmutco/mmwork-ds`)** workflow:
|
|
27
|
+
|
|
28
|
+
- **Front-load Impeccable** before any UI or MM Artifact authoring: `impeccable context --target <path>`,
|
|
29
|
+
`DESIGN.md` plus its `design.json` sidecar in `.impeccable`, shared `.impeccable/config.json`
|
|
30
|
+
(`hook.enabled: true`), `reference/craft-floor.md` + `reference/operate.md`, and
|
|
31
|
+
`impeccable detect --json <target>`.
|
|
32
|
+
- **MM Artifacts** (local/canvas packs in the `mm-artifact` v3 format) use one command,
|
|
33
|
+
`node artifacts/review/review.mjs <folder>`. It runs `check.mjs`, `check-ui.mjs` and
|
|
34
|
+
`geometry.mjs`, pre-renders the board in `node:vm` via `ReactDOMServer.renderToStaticMarkup` into
|
|
35
|
+
`#root` and runs `impeccable detect --json` on that SSR-rendered HTML. Interactive owner A/B
|
|
36
|
+
reviews use the live loopback HTTP review server (`http://127.0.0.1:<port>/`), where the owner's
|
|
37
|
+
`Send answers` posts back to `POST /answers`; a seat must not open the owner's browser. An A/B is
|
|
38
|
+
shown as the live canvas link, never as prose (#8987, relay wording). Once the canvas passes review,
|
|
39
|
+
send the orchestrator only the review URL and issue number, and keep the server running until the
|
|
40
|
+
owner answers. A kept-alive canvas review server must stay light (no dev/watch build pinning
|
|
41
|
+
gigabytes); a seat whose canvas needs a heavy local server flags that to the orchestrator instead
|
|
42
|
+
of holding the RAM silently, and stops it as soon as the owner has answered. The orchestrator opens
|
|
43
|
+
it on the owner's screen. `--standalone [<out.html>]` is only
|
|
44
|
+
for offline HTML previews/exports and SSR pre-render verification, never for an interactive owner
|
|
45
|
+
decision.
|
|
46
|
+
**Headless seat rule:** `--open` is review.mjs-only; never pass `--open` to `vite`, and never use it from a seat to open the owner's browser for an A/B review.
|
|
47
|
+
Vite parses its value as a URL path, so `vite --open false` opens the owner's real browser at `/false`;
|
|
48
|
+
run dev/preview servers with `BROWSER=none` and no `--open` flag.
|
|
49
|
+
- **Live Docs** (`Canlı belgeler` viewer) carry the living references, including the live
|
|
50
|
+
design-system artifact `3a5c79df-5274-40ad-a1b5-a75e67a74dac`.
|
|
51
|
+
- **Atomic Design Kit** (`@mutmutco/mmwork-ds`): kit pieces and tokens only, checked with `mmwork-check-ui`.
|
|
52
|
+
|
|
53
|
+
How the five pillars fit together (owner, 2026-10-25):
|
|
54
|
+
|
|
55
|
+
| Pillar | What it is | Claude / industry analogy | Where it lives |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| **1. MM Artifacts (`mm-artifact`)** | The HTML artifact file format (`type: 'document' \| 'canvas' \| 'design-system'`). By default a single self-contained HTML artifact; a multi-board Canvas only when comparing A/B options or viewport sizes side by side. | Claude Artifacts (the HTML artifact itself) | Local `.html` / `artifact.json` during agent dev (opened straight in the browser); stored in Live Docs when shared or created by Junior. |
|
|
58
|
+
| **2. Design System Artifacts (`type: 'design-system'`)** | MM Artifacts stored in Live Docs that define a complete visual system (tokens, CSS, components, `DESIGN.md`). Every MM Artifact binds to one (`kit: { id, version }`). Includes (a) the MM-Work Atomic Design System (`3a5c79df`, MM-Work app and modules), (b) the Document/Editorial Design System (reports, checklists, decks, client documents), and future brand/client systems. | Claude Design Systems / theme packs an artifact pulls from on creation | Hosted in Live Docs (`Canlı belgeler`). Only the MM-Work app design system is also exported to npm (`@mutmutco/mmwork-ds`). |
|
|
59
|
+
| **3. Live Docs (`Canlı belgeler`)** | The viewer, library, commenter and A/B picker inside the MM-Work app (`/documents/:id`), where people, Junior and agents view, comment on, version and share MM Artifacts. | Claude's Artifact viewer / workspace panel | Built into MM-Work (`web/src/documents/`, `src/documents.ts`). |
|
|
60
|
+
| **4. Open Design Kit (`@mutmutco/mmwork-ds`)** | The npm package generated from `packages/mmwork-ds/source/` (the source of the MM-Work Atomic Design System), so MM-Work, the 10 suite modules and local app-UI MM Artifacts render real Atoms, Molecules, Organisms, Templates and Pages. | Published React/CSS component kit | `packages/mmwork-ds/source/` → `@mutmutco/mmwork-ds`, synced to Live Docs (`3a5c79df`) and all 10 module roots. |
|
|
61
|
+
| **5. Impeccable (`v4.7.0`)** | The front-loaded design craft and quality engine (`impeccable context`, `craft-floor`, 15 playbooks such as `distill`, `typeset`, `layout`, `colorize`, `clarify`, `polish`, plus `impeccable detect --json` and `DESIGN.md`). Runs in front of every UI or MM Artifact creation so output is readable, well typeset, purposefully coloured and never AI slop. | Design director + mechanical UI linter | `.agents/skills/impeccable` + root `DESIGN.md` and the `design.json` sidecar in `.impeccable`. |
|
|
62
|
+
|
|
63
|
+
Four owner decisions (2026-10-25T15:35:52Z):
|
|
64
|
+
|
|
65
|
+
1. **Doc vs. app kit — add a Document Design System too.** Keep the MM-Work Atomic Design System (`3a5c79df-5274-40ad-a1b5-a75e67a74dac`) for MM-Work and module app UI (and as the fallback for now), and add a dedicated Document/Editorial Design System Artifact in Live Docs for reports, checklists, decks and client documents made by Junior or agents.
|
|
66
|
+
2. **Where to save — local HTML for dev, Live Docs for shared.** Coding agents build local `.html` MM Artifacts for fast iteration. For interactive owner A/B reviews, serve the canvas on the live loopback HTTP review server (`http://127.0.0.1:<port>/` with `Send answers`) without opening the owner's browser; relay the URL and issue number to the orchestrator and keep the server running until the owner answers (#8987, relay wording). A kept-alive canvas review server must stay light (no dev/watch build pinning gigabytes); a seat whose canvas needs a heavy local server flags that to the orchestrator instead of holding the RAM silently, and stops it as soon as the owner has answered. Use `node artifacts/review/review.mjs <folder> --standalone [<out.html>]` for offline HTML previews/exports or SSR pre-render verification. Publish to Live Docs only for a shared deliverable, an A/B decision canvas or a Design System. Junior inside MM-Work saves directly to Live Docs.
|
|
67
|
+
3. **Artifact shape — single HTML by default, Canvas for A/B.** A single self-contained HTML view for documents, checklists and single-screen work; a multi-board spatial Canvas only for A/B choices or `1440`/`1024`/`390` side-by-side comparisons.
|
|
68
|
+
4. **Kit binding — Live Docs hosts kits; npm only for MM-Work.** Every Design System Artifact in Live Docs stores its tokens/CSS/components and `DESIGN.md` so any HTML artifact can bind to it (`kit: { id, version }`); only the MM-Work app design system is also exported as `@mutmutco/mmwork-ds`, because the MM-Work app and the 10 suite modules compile against it.
|
|
69
|
+
|
|
70
|
+
Impeccable **v4.7.0 / engine v0.1.16** details:
|
|
71
|
+
|
|
72
|
+
- Impeccable is invoked as the installed script at `~/.agents/skills/impeccable/scripts/impeccable` or
|
|
73
|
+
bare `impeccable` on `PATH` — no Impeccable CLI is published on npm, so never run
|
|
74
|
+
`npx @impeccable-style/cli ...` (it 404s) or chain `npx` guesses into git/bootstrap commands (#8885).
|
|
75
|
+
Refresh the local kit cache through MMI-Hub `scripts/kit-adopt.mjs`'s `refreshKitCache({ mmWorkRoot, cacheRoot })`
|
|
76
|
+
(#9271, #9279). It runs `node "<absolute-MM-Work-root>/scripts/sync-design-system.mjs" "<absolute-MM-Work-root>/packages/mmwork-ds/source" --out "<staging-dir>"`
|
|
77
|
+
(the source argument is required, #8887) into a staging dir inside the cache root, then publishes that output to
|
|
78
|
+
`<cache-dir>/<version>/`, `<cache-dir>/latest/` and `version.json`, which is what `scripts/kit-adopt.mjs --local-dir`
|
|
79
|
+
reads. Run the sync yourself only into such a staging dir: `--out` alone writes the generated files flat and writes no
|
|
80
|
+
`package.json`, so a bare `--out "<cache-dir>"` fills a cache `--local-dir` cannot resolve. The cache dir is the machine
|
|
81
|
+
cache `~/.jerv/cache/mmwork-ds`. Never run the two-argument form: without `--out`
|
|
82
|
+
the sync writes the nine generated kit files and `sync.json` into the MM-Work working tree, where they are
|
|
83
|
+
post-merge bot output, MM-Work's lane guard refuses a commit touching them, and a lane that already ran it cleans
|
|
84
|
+
up with `git checkout -- packages/mmwork-ds`. Never commit those files (#9271). Resolve and verify the checkout as described under
|
|
85
|
+
[shared support-script invocation](#shared-support-script-invocation). A local `npm ci` against `npm.pkg.github.com` that returns
|
|
86
|
+
`E401` needs the GitHub Packages credential, never the npm one: the Jerv vault key `GH_PACKAGES_READ_TOKEN`, used keyless
|
|
87
|
+
(`jerv-cli vault use GH_PACKAGES_READ_TOKEN -- sh -c 'NODE_AUTH_TOKEN="$GH_PACKAGES_READ_TOKEN" npm ci --prefix module'`),
|
|
88
|
+
or your own `gh` login when it carries `read:packages` (`NODE_AUTH_TOKEN=$(gh auth token) npm ci --prefix module`); the
|
|
89
|
+
org `npm/NPM_TOKEN` belongs to `registry.npmjs.org` and returns `E401` here. Or adopt credential-free
|
|
90
|
+
with `mmi-cli devops packages adopt-export` (`docs/Guides/package-adopt-export.md`, #8886). To probe a kit
|
|
91
|
+
version, read the pin from the consumer's module/`package.json` (or `node_modules/@mutmutco/mmwork-ds`); a bare
|
|
92
|
+
`npm view @mutmutco/...` asks the public registry only and 404s, because the scope lives on GitHub Packages (#9238).
|
|
93
|
+
A registry read needs the registry flag and a token: in a consumer whose `.npmrc` maps the scope,
|
|
94
|
+
`NODE_AUTH_TOKEN=$(gh auth token) npm view @mutmutco/mmwork-ds@<v> version --registry https://npm.pkg.github.com`;
|
|
95
|
+
from a root without that line, pass the token directly —
|
|
96
|
+
`npm view @mutmutco/mmwork-ds@<v> version --registry https://npm.pkg.github.com --//npm.pkg.github.com/:_authToken=$(gh auth token)`.
|
|
97
|
+
To see **which** kit versions are actually published, run MMI-Hub's
|
|
98
|
+
`node scripts/kit-adopt.mjs --list-versions [--limit 5] [--json]` (#9426) instead of deriving it: it reads GitHub
|
|
99
|
+
Packages `/orgs/mutmutco/packages/npm/mmwork-ds/versions` (newest first, falling back to `npm view` against
|
|
100
|
+
`https://npm.pkg.github.com` with `GH_PACKAGES_READ_TOKEN`/`NODE_AUTH_TOKEN`), reports the local cache's latest
|
|
101
|
+
version, and never hits the `registry.npmjs.org` 404 of a bare `npm view @mutmutco/mmwork-ds` (#9264). That is the supported listing read:
|
|
102
|
+
`mmi-cli devops packages` covers consumer adoption (`adopt-export`) only, so it never names a published
|
|
103
|
+
version — never carry the packages API as a stopgap.
|
|
104
|
+
- Boot once: `impeccable context --target <path>`; `init` captures PRODUCT.md, `document` maintains
|
|
105
|
+
`DESIGN.md` and its `design.json` sidecar, `impeccable doctor --json` reports drift, and `extract`
|
|
106
|
+
identifies reusable candidates (kit additions still need the Design Lead). Read
|
|
107
|
+
`reference/craft-floor.md` before UI edits and `reference/operate.md` for app UI.
|
|
108
|
+
- `impeccable hooks on` enables shared `.impeccable/config.json`; local overrides/consent belong in
|
|
109
|
+
ignored `.impeccable/config.local.json`. Tier 1 scans mechanical problems per edit; Tier 2 deep-scans
|
|
110
|
+
at turn-end `Stop` on supported hosts. Verify `hooks status` and host support, not config alone.
|
|
111
|
+
If automatic hooks are unavailable, run `impeccable detect --json <target>` manually on markup
|
|
112
|
+
files/directories (not CSS-only): **0 clean / 2 findings**. Unavailable or broken scans are not passes.
|
|
113
|
+
- Dual-subagent `critique` keeps design assessment independent from detector evidence and persists via
|
|
114
|
+
`critique-storage`; disclose degraded runs. `audit` scores accessibility, performance, theming,
|
|
115
|
+
responsive design and implementation integrity 0–4 each (**20 points**). These evaluations are
|
|
116
|
+
agent playbooks, not standalone engine CLI verbs; still inspect the live result.
|
|
117
|
+
- Pick relevant playbooks: `polish`, `bolder`, `quieter`, `distill`, `harden`, `onboard`, `layout`,
|
|
118
|
+
`typeset`, `colorize`, `animate`, `delight`, `overdrive`, `clarify`, `adapt`, `optimize` (15 names in
|
|
119
|
+
v4.7.0, despite the requested “14”). Do not apply conflicting playbooks blindly.
|
|
120
|
+
- Iterate with `live` / `generate` (`live-generate`, `live-poll`, `live-server`); `serve-question`
|
|
121
|
+
supports choices, while owner A/B decisions use the MM Artifacts canvas.
|
|
122
|
+
Stop temporary servers. Check installed versions and approved upstream updates via the owning
|
|
123
|
+
installer; do not modify shared skills from a module task. Record command + exit + findings,
|
|
124
|
+
kit version and available checks separately from contract identity; reports are not conformance.
|
|
125
|
+
|
|
126
|
+
Craft essentials every agent applies (owner, 2026-10-25, #8839):
|
|
127
|
+
|
|
128
|
+
- **Sleek translucent glass cards and zero GPU usage — never color-washed
|
|
129
|
+
(`2026-10-25T16:21:19.344Z`).** Cards use sleek, modern translucent glass material (neutral
|
|
130
|
+
translucent surface with a crisp glass rim, `--card-tint-dark: 0%`, `--card-tint-light: 0%`)
|
|
131
|
+
rather than color-washed card fills in any theme, and zero GPU-compositing blur or shadow
|
|
132
|
+
(`--card-blur: none`, `--card-blur-frost: none`, `--frost-see-blur: 0px`, `--glass-blur: none`,
|
|
133
|
+
`--card-shadow-dark: none`; never `backdrop-filter: blur(...)`). Module tones (`blue`, `coral`,
|
|
134
|
+
`teal`, `purple`, `terracotta`, `green`, `pink`, `lime`, `cyan`, `magenta`, `fuchsia`)
|
|
135
|
+
belong on `Badge`, `Mark`, `Checkbox` (`lead`), and card `icon`/`mark` accents (`edge="bite"`).
|
|
136
|
+
- **Front-loaded Impeccable v4.7.0, in front of creation.** Run `impeccable context --target <path>`,
|
|
137
|
+
read `DESIGN.md` and `reference/craft-floor.md`, choose the surface mode (`Operate`, `Read`,
|
|
138
|
+
`Persuade` or `Experience`) and load the matching playbooks (`shape`, `distill`, `typeset`,
|
|
139
|
+
`layout`, `colorize`, `clarify`, `polish`, `harden`, `adapt`) before writing markup.
|
|
140
|
+
- **Restraint and hierarchy.** Group related items into clean section `Card`s (`heading: 2` under
|
|
141
|
+
the page `<h1>`), keep main-column rows concise (`Cluster` with `fill` = `Checkbox` plus one
|
|
142
|
+
trailing action), and put multi-line inspector detail in the right-hand `HelperCard` as `Stack` +
|
|
143
|
+
`Text` — never `DataList`, which clips multi-line prose. No walls of text.
|
|
144
|
+
- **Verify the SSR pre-rendered HTML.** `impeccable detect --json` is blind on an unrendered
|
|
145
|
+
`<div id="root"></div>` file, so verify the output of `review.mjs <folder> --standalone --open`,
|
|
146
|
+
which pre-renders the board into `#root` first. An empty `#root`, missing fonts or an unrendered
|
|
147
|
+
detector run is a failed check, not a pass. For one page-spec module, run
|
|
148
|
+
`node scripts/design-pack-render.mjs --page-spec <spec.mjs>` (it SSR-renders `renderPage(ctx)` per
|
|
149
|
+
theme mode and runs `impeccable detect --json` on the HTML), or `node artifacts/review/review.mjs
|
|
150
|
+
<folder> --standalone` for a pack; never hand-roll an inline `node -e` SSR script, which evaluates
|
|
151
|
+
as CommonJS and fails on the spec's ESM `import` lines (#8876).
|
|
152
|
+
|
|
153
|
+
### Shared support-script invocation
|
|
154
|
+
|
|
155
|
+
Resolve shared support tools from their **known canonical checkout**, not the caller's module/worktree
|
|
156
|
+
layout (#8890). Never guess `../../MMI-Hub/scripts/kit-adopt.mjs`: that can resolve to the
|
|
157
|
+
`mmi-worktrees/MMI-Hub` container, not a checkout, or to a sibling branch without the script.
|
|
158
|
+
|
|
159
|
+
1. Start with a known absolute MMI-Hub checkout/worktree path supplied by repository or host metadata.
|
|
160
|
+
If only a Hub task worktree is known, use `git -C "<known-Hub-worktree>" rev-parse --path-format=absolute --git-common-dir`
|
|
161
|
+
and `git -C "<known-Hub-worktree>" worktree list --porcelain` to identify its canonical/main checkout.
|
|
162
|
+
Git metadata is repository-specific: a module's common directory cannot locate MMI-Hub. If no Hub
|
|
163
|
+
checkout is known, ask for it; do not scan drive roots or traverse arbitrary parents.
|
|
164
|
+
2. Verify the selected checkout's identity with `git -C "<absolute-Hub-root>" remote get-url origin`
|
|
165
|
+
(must identify `mutmutco/MMI-Hub`) and verify `"<absolute-Hub-root>/scripts/kit-adopt.mjs"` exists as
|
|
166
|
+
a file before invocation. If missing, stop and resolve the correct checkout/version; do not retry
|
|
167
|
+
sibling guesses or create a replacement script.
|
|
168
|
+
3. Resolve each target/source independently to its intended absolute path. Invoke Node with separate,
|
|
169
|
+
quoted arguments, for example:
|
|
170
|
+
`node "<absolute-Hub-root>/scripts/kit-adopt.mjs" --local-dir "<absolute-module-root>" --version <kit-version>`.
|
|
171
|
+
For cache refresh, verify `<absolute-MM-Work-root>/scripts/sync-design-system.mjs`, then
|
|
172
|
+
pass the absolute script path, the absolute `packages/mmwork-ds/source` path and `--out "<absolute-cache-dir>"`
|
|
173
|
+
as shown above: the generated kit files and `sync.json` land in the cache, never in the MM-Work checkout (#9271).
|
|
174
|
+
These are path patterns, not literal host paths; keep machine-specific roots out of bundled docs.
|
|
175
|
+
|
|
176
|
+
Verify paths before chaining unrelated operations such as a board claim. Path resolution grants no
|
|
177
|
+
new authority: use only the tool mode and target already authorized; never replay a successful claim
|
|
178
|
+
just because a later script failed to load.
|
|
179
|
+
|
|
180
|
+
### Part 2 — The System-First Autolearn Doctrine (never work around a broken tool in `tmp/`)
|
|
181
|
+
|
|
182
|
+
Owner ruling 2026-10-25T15:41:41.360Z (#8839): agents learn from their work, mistakes and
|
|
183
|
+
discoveries with the MM open design system and improve the system wherever they can, instead of only
|
|
184
|
+
fixing the current situation. Never patch the moment in `tmp/` and leave the shared system broken.
|
|
185
|
+
If creating, bundling, rendering, checking or opening an MM Artifact or a design-kit change needs a
|
|
186
|
+
custom script in `tmp/`, a patch around a bundler regex, manually inlined fonts, or locally overridden
|
|
187
|
+
broken tokens, that is a **system defect, not a local task**.
|
|
188
|
+
|
|
189
|
+
The immediate three-step system upgrade reflex:
|
|
190
|
+
|
|
191
|
+
1. **Step A — fix the shared system at its source.** File or claim an issue, or message the owning
|
|
192
|
+
suite seat (Design Lead, MM-Work, Jerv-JervCode, MMI-Hub, Jerv-Hub), so the shipped CLI, bundler,
|
|
193
|
+
token, component or skill is fixed in its repository and no agent ever needs the workaround again.
|
|
194
|
+
A temporary workaround may unblock the task only when it is named as such and linked to that issue.
|
|
195
|
+
2. **Step B — record it in the autolearn queue** (`jerv_learning_note` in JervCode, or
|
|
196
|
+
`mmi-cli learning skill-lesson --skill <name> --title <summary> --body-file <path>`): the exact
|
|
197
|
+
friction and its root cause, so autolearn turns it into a durable doctrine, code or skill fix.
|
|
198
|
+
3. **Step C — record it in Hindsight memory** (`hindsight_ingest_document`): the root cause and the
|
|
199
|
+
permanent system fix, so every later session recalls it automatically.
|
|
200
|
+
|
|
201
|
+
Autolearn watches design and artifact work for these signals and escalates each into a shared
|
|
202
|
+
toolchain, kit or skill improvement: ad-hoc build/render/verify scripts under `tmp/`, empty `#root`
|
|
203
|
+
renders, missing fonts, unrendered `impeccable detect` runs, geometry or layout regressions,
|
|
204
|
+
graywashed or untinted surfaces, verbose walls of text, and skipped front-loaded `impeccable context`
|
|
205
|
+
or playbook passes. Reflect after each design task: what would have made this easier for the next
|
|
206
|
+
agent, and is that improvement filed?
|
|
207
|
+
|
|
208
|
+
### Part 3 — A/B Choosing Architecture & Viewer Rules (owner ruling 2026-10-25T15:57:26.199Z, #8841)
|
|
209
|
+
|
|
210
|
+
Settled owner ruling: present clear, distinct choices in the existing MM Artifact viewer, not a
|
|
211
|
+
"shell over a shell". These are authoring and viewer requirements, not proof of installed capabilities.
|
|
212
|
+
|
|
213
|
+
**Canvases carry design choices only (#8986, relay wording).** An A/B canvas asks how something
|
|
214
|
+
looks or works on screen. Approvals for keys, releases, deletions, data access or tooling never go on
|
|
215
|
+
a canvas: send them to the orchestrator, who asks the owner in plain words.
|
|
216
|
+
|
|
217
|
+
1. **No "shell over a shell" — designer agents build only the alternatives, never their own A/B switcher.**
|
|
218
|
+
The outer MM Artifact viewer (the local review shell and `CanvasStage` / `CompareView` in Live Docs)
|
|
219
|
+
already IS the A/B selector shell: it renders the question prompt, Option A / Option B / Neither
|
|
220
|
+
buttons, notes and board switcher. A `designer` subagent must **NEVER** draw an A/B picker,
|
|
221
|
+
question header, option cards or a gallery of tiny `ThemePreview` thumbnails inside a board.
|
|
222
|
+
**One A/B decision = one page with two full-resolution live HTML boards:**
|
|
223
|
+
- `board-a`: the actual full-size (`1440x900`) live MM-Work screen rendered in **Option A**
|
|
224
|
+
(for example, Linear Dark).
|
|
225
|
+
- `board-b`: the exact same full-size (`1440x900`) live MM-Work screen rendered in **Option B**
|
|
226
|
+
(for example, Apple Black).
|
|
227
|
+
Never pack multiple themes or multiple options onto a single board.
|
|
228
|
+
2. **Compare the live HTML artifacts directly — never screenshots or low-res thumbnails.**
|
|
229
|
+
Both options are live, vector-sharp HTML/CSS/React artifacts rendered from `@mutmutco/mmwork-ds`,
|
|
230
|
+
never raster PNG screenshots or shrunken preview cards. The A/B viewer must let the owner inspect
|
|
231
|
+
Option A and Option B side-by-side or toggle 1:1 at full crisp resolution, so subtle palette,
|
|
232
|
+
contrast and typography differences (such as Linear Dark vs. Apple Black) are immediately clear.
|
|
233
|
+
3. **Content-only zoom — zoom the artifact content, never the outer A/B shell.**
|
|
234
|
+
In the local review viewer and Live Docs (`CanvasStage` / `BoardBridge`), `wheel` events
|
|
235
|
+
(including `ctrlKey` / `metaKey` pinch-zoom) and keyboard zoom (`Ctrl/Cmd + +/-/0`) on both the
|
|
236
|
+
outer review shell and inside board iframes (forwarded via `postMessage`) must call
|
|
237
|
+
`preventDefault()` and zoom **only the artifact canvas/board viewport**. `Ctrl + Mousewheel` and
|
|
238
|
+
viewer zoom controls must keep the outer A/B selector shell, question bar and controls at a fixed
|
|
239
|
+
1:1 UI size.
|
|
240
|
+
|
|
241
|
+
4. **A recorded owner answer is decided state — read it back, never re-ask (owner ruling, #9259).**
|
|
242
|
+
An answer the owner already gave on an A/B canvas is durable decided state, not a pending question.
|
|
243
|
+
Before re-presenting or re-asking any A/B choice, read the recorded answer — `answers.json` in the
|
|
244
|
+
canvas folder plus the canvas choice ID Part 4 Stage 2 says to record — and when a canvas is reopened,
|
|
245
|
+
rebuilt or replaced, carry that pick forward and show the board as already answered. Never tell the
|
|
246
|
+
owner he has not picked while a recorded pick exists: a decided board reads as decided, naming where
|
|
247
|
+
and when it was chosen, and the work proceeds instead of stalling behind a closed question.
|
|
248
|
+
|
|
249
|
+
### Part 4 — Visual A/B Choice via Designer Subagent Before Kit Implementation — Never Prose Specs (owner ruling 2026-10-25T16:29:46.339Z, #8844, #8846, #8848)
|
|
250
|
+
|
|
251
|
+
Settled owner ruling (verbatim): "You should use a designer to create a couple card designs with my
|
|
252
|
+
specifications and then let me choose then build the complete spec into the design system, replacing
|
|
253
|
+
any other card available atomically. That's the proper way to do it. Learn from this mistake of yours,
|
|
254
|
+
requests like this should follow this structure, not prose guide."
|
|
255
|
+
|
|
256
|
+
1. **Never reply with a prose specification in chat or jump straight to kit implementation.**
|
|
257
|
+
When the owner asks to "design the spec for X and add it to the design system" (for example, The One
|
|
258
|
+
Card), writing a markdown or prose spec in chat violates Principle 7 ("Choices for Jervaise go only
|
|
259
|
+
on the A/B canvas"). Building one guessed design straight into the kit skips the owner's choice.
|
|
260
|
+
2. **Always follow the visual spec pipeline:**
|
|
261
|
+
- **Phase 0 — Inspiration via front-loaded Impeccable v4.7.0 and 21st.dev MCP (`https://21st.dev/api/mcp`) only (owner ruling 2026-10-25T21:37:00+03:00, #8854; superseding #8848).**
|
|
262
|
+
Before building visual A/B boards, use front-loaded **Impeccable v4.7.0** alongside **21st.dev MCP**
|
|
263
|
+
(`https://21st.dev/api/mcp`; verbatim owner ruling: `"we don't need the mcp better design yet,
|
|
264
|
+
impeccable and 21st is enough"`, dropping Better Design MCP) to study high-craft reference patterns,
|
|
265
|
+
layout proportions, and interaction details. Always translate inspired patterns into zero-GPU
|
|
266
|
+
`@mutmutco/mmwork-ds` tokens (`--card-blur: none`, `--card-tint-dark: 0%`, `--card-tint-light: 0%`,
|
|
267
|
+
sleek translucent glass cards) and Atomic Design layers; never copy raw third-party CSS/HTML or
|
|
268
|
+
GPU-heavy effects. `MM-Inspo` is strictly a customer/tenant module inside the MM-Work suite, never
|
|
269
|
+
an internal tool for designing the MM-Work app or its design system.
|
|
270
|
+
- **Stage 1 — a designer subagent builds visual A/B alternatives on an MM Artifact canvas.**
|
|
271
|
+
Dispatch a `designer` subagent with front-loaded Impeccable (`impeccable context`, `craft-floor`,
|
|
272
|
+
`distill`, `typeset`, `layout`, `colorize`, `polish`) to create 2–3 genuinely distinct visual
|
|
273
|
+
designs that honor every constraint in the owner's brief: Option A, Option B and optionally
|
|
274
|
+
Option C, each its own full-resolution `1440x900` live HTML board in one MM Artifact A/B canvas
|
|
275
|
+
(Part 3 rules: content-only `Ctrl + Mousewheel` zoom, 1:1 or side-by-side live comparison). Serve
|
|
276
|
+
the verified canvas on the live loopback HTTP review server without opening a browser from the
|
|
277
|
+
seat, so the owner's `Send answers` posts straight back to `POST /answers`. Once review passes,
|
|
278
|
+
send the orchestrator only the review URL and issue number, and keep the server running through
|
|
279
|
+
Stage 2; the orchestrator opens it on the owner's screen (#8987, relay wording). Never open a
|
|
280
|
+
`--standalone` `file://` export (`Download answers.json`) for an
|
|
281
|
+
interactive owner A/B decision: `--standalone [<out.html>]` is only for offline previews/exports
|
|
282
|
+
and SSR detector checks. Spawn a dedicated, fresh
|
|
283
|
+
`designer` subagent for each distinct design task (item 3); never reuse a busy designer seat.
|
|
284
|
+
- **Stage 2 — the owner chooses visually on the A/B canvas.** Wait while the owner inspects the
|
|
285
|
+
live HTML alternatives, zooms into details and picks the preferred design or asks for
|
|
286
|
+
adjustments, then presses `Send answers` on the live review server page; `review.mjs` writes
|
|
287
|
+
`answers.json` into the canvas folder and exits. Record the canvas choice ID and the
|
|
288
|
+
owner-decision reference.
|
|
289
|
+
- **Stage 3 — atomic replacement in the kit source.** Only AFTER the owner picks on the A/B canvas,
|
|
290
|
+
build the chosen design into the source folder of packages/mmwork-ds in mutmutco/MM-Work,
|
|
291
|
+
**atomically replacing** every other legacy or competing variant of that piece across the design
|
|
292
|
+
system, publish it to `Canlı belgeler` / MM-Work, and propagate it to all 10 suite modules.
|
|
293
|
+
3. **One dedicated `designer` subagent per distinct design task — never overload a designer seat
|
|
294
|
+
(owner ruling 2026-10-25T16:33:00Z, #8846).**
|
|
295
|
+
Settled owner ruling (verbatim): "The lead designer sent the card building to the same designer
|
|
296
|
+
agent, overloading it. I don't think it was a wise idea. Please learn from this."
|
|
297
|
+
Spawn a separate, fresh `designer` subagent in its own isolated lane for each distinct design task
|
|
298
|
+
or visual A/B canvas (for example, a theme A/B exploration vs. a unified Card spec A/B). Never steer
|
|
299
|
+
or queue a second unrelated design task onto an active `designer` seat: overloading one
|
|
300
|
+
`designer` subagent serializes work that should run in parallel, bloats its context window, and
|
|
301
|
+
degrades craft quality.
|
|
@@ -3,14 +3,7 @@
|
|
|
3
3
|
GitHub repository admins are project-admins on that repository without duplicate registry
|
|
4
4
|
enrollment. Registry-listed admins with repository write access remain supported.
|
|
5
5
|
|
|
6
|
-
The two tiers
|
|
7
|
-
|
|
8
|
-
- **Your project:** a project-admin can manage their own product's full vault tree, including
|
|
9
|
-
shared values and dev, rc, and main overrides. Production-stage names do not by themselves
|
|
10
|
-
require an organization master-admin.
|
|
11
|
-
- **Organization infrastructure:** shared infrastructure secrets are master-admin managed.
|
|
12
|
-
Project access requires an explicit grant for the relevant names. A read grant permits
|
|
13
|
-
consumption, not rotation or deletion; do not assume a grant authorizes every operation.
|
|
6
|
+
The two tiers (your own project's vault tree, and organization infrastructure that needs a master grant) and who may use each are defined once in the [secrets skill](../../secrets/SKILL.md); this topic does not restate them.
|
|
14
7
|
|
|
15
8
|
Read `mmi-cli oracle org access role <owner/repo> --json` and
|
|
16
9
|
`mmi-cli oracle org access capabilities` for your actual authority.
|
|
@@ -20,7 +13,7 @@ it does not require installing or querying a personal vault product.
|
|
|
20
13
|
|
|
21
14
|
The registry catalog declares secret names before values are set. A shared, stageless value is
|
|
22
15
|
the canonical default; a declared stage override wins for that stage. Avoid accidental duplicate
|
|
23
|
-
copies that hide a rotation. Use `mmi-cli vault secrets
|
|
16
|
+
copies that hide a rotation. Use `mmi-cli vault secrets list` and `mmi-cli oracle org access capabilities`
|
|
24
17
|
to inspect names and reach, never values.
|
|
25
18
|
|
|
26
19
|
Consume through `mmi-cli vault secrets use <KEY> -- <command>`: the authorized child receives the
|