@mutmutco/claude-plugin 3.136.0 → 3.137.0

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mmi",
3
3
  "displayName": "MMI",
4
- "version": "3.136.0",
4
+ "version": "3.137.0",
5
5
  "mmiCompat": "3.x",
6
6
  "description": "MMI workflow skills and org gates delivery.",
7
7
  "author": {
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  MMI workflow skills and org gates for **Claude Code**.
4
4
 
5
- Published from [mutmutco/MMI-Hub](https://github.com/mutmutco/MMI-Hub). Normally installed and kept version-pinned by the MMI fleet reconciler (`mmi-updater`); install by hand only as a fallback:
5
+ Published from [mutmutco/MMI-Hub](https://github.com/mutmutco/MMI-Hub). Normally installed and kept version-pinned by MMI Hub maintenance (`mmi-hub`); install by hand only as a fallback:
6
6
 
7
7
  ```bash
8
8
  npm install @mutmutco/claude-plugin
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/claude-plugin",
3
- "version": "3.136.0",
3
+ "version": "3.137.0",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -1,5 +1,5 @@
1
1
  {
2
- "_comment": "Bootstrap seed manifest (#201) — the machine-readable contract of what /bootstrap and `mmi-cli devops bootstrap --apply` (#202) stamp into a target repo. Consumed by the CLI (loadBootstrapSeeds). ownership: 'org' = org-delivered, OVERWRITTEN on upgrade (the org owns it); 'repo' = created ONCE on a fresh bootstrap, never clobbered on upgrade (the repo owns its content). source: 'self' = copy MMI-Hub's own current file verbatim; 'seed:<file>' = render the named template in this dir with {{PLACEHOLDERS}}; 'managed-block' = merge the org-managed .gitignore block in place (preserves the repo's own ignore lines) this is how the org-managed .gitignore block reaches every repo now that the fanout pipeline is retired (Hub#3010); the doctor SessionStart heal keeps it current thereafter. NOTE: this manifest seeds org-managed PRODUCT assets only — it never seeds AGENTS.md / CLAUDE.md / .claude/settings.json (personal agent guides) or a legacy repo-local control-plane marker. classes: which repo classes receive this seed.",
2
+ "_comment": "Bootstrap seed manifest (#201) — the machine-readable contract of what /bootstrap and `mmi-cli devops bootstrap --apply` (#202) stamp into a target repo. Consumed by the CLI (loadBootstrapSeeds). ownership: 'org' = org-delivered, OVERWRITTEN on upgrade (the org owns it); 'repo' = created ONCE on a fresh bootstrap, never clobbered on upgrade (the repo owns its content). source: 'self' = copy MMI-Hub's own current file verbatim; 'seed:<file>' = render the named template in this dir with {{PLACEHOLDERS}}; 'managed-block' = merge the legacy org-managed .gitignore block in place. managedBlock declares a separately sourced, exact-marker-bounded Hub-owned region inside a repo-owned containing file; apply/propagate reconcile only that region and refuse malformed markers. NOTE: this manifest seeds org-managed PRODUCT assets only — it never seeds AGENTS.md / CLAUDE.md / .claude/settings.json (personal agent guides) or a legacy repo-local control-plane marker. classes: which repo classes receive this seed.",
3
3
  "placeholders": ["OWNER", "REPO", "REPO_SLUG", "REPO_NAME", "CLASS", "GATE_CMD", "GATE_PUSH_BRANCHES_YAML", "GATE_FULL_RUN_BRANCH", "GATE_RULESET_BRANCH_REFS_JSON", "PROJECT_OWNER", "PROJECT_NUMBER", "PROJECT_ID", "STATUS_FIELD_ID", "STATUS_TODO", "STATUS_IN_PROGRESS", "STATUS_IN_REVIEW", "STATUS_DONE", "STACK", "REGION"],
4
4
  "seeds": [
5
5
  { "target": ".github/ISSUE_TEMPLATE/bug.yml", "source": "self", "ownership": "org", "classes": ["deployable", "content"] },
@@ -11,7 +11,7 @@
11
11
  { "target": ".github/workflows/agent-pr.yml", "source": "self", "ownership": "org", "classes": ["deployable"], "waivers": { "jerv-jervcode": "pins this workflow's EXACT step shapes in its own scripts/workflow-boundary-core.mjs — a literal repositories: Jerv-JervCode token scope, and whole-step equality for the surface and verdict legs. #4040 widened the org seed to the same hardened boundary (pull_request_target off the trusted base, an immutable BASE..HEAD compare with a file-count equality wall, a per-repo App token scope, and a certified-head merge), so the two now agree on substance. They cannot agree on bytes: a seed serving 16 repos resolves its token scope and its required contexts at run time, which exact-step equality rejects by construction. The waiver is permanent by design, not a deferral — lifting it would mean weakening the strictest repo to match a fleet file." } },
12
12
  { "target": ".github/rulesets/mmi-product-required-checks.json", "source": "seed:mmi-product-required-checks.template.json", "ownership": "org", "classes": ["deployable"] },
13
13
  { "target": ".gitignore", "source": "managed-block", "ownership": "org", "classes": ["deployable", "content"] },
14
- { "target": "README.md", "source": "seed:README.template.md", "ownership": "repo", "classes": ["deployable", "content"] },
14
+ { "target": "README.md", "source": "seed:README.template.md", "ownership": "repo", "classes": ["deployable", "content"], "managedBlock": { "source": "seed:readme-mmi-developer-environment.block.md", "begin": "<!-- mmi-developer-environment:start -->", "end": "<!-- mmi-developer-environment:end -->" } },
15
15
  { "target": "architecture.md", "source": "seed:architecture.template.md", "ownership": "repo", "classes": ["deployable", "content"] },
16
16
  { "target": "docs/decisions/README.md", "source": "seed:decisions-readme.template.md", "ownership": "repo", "classes": ["deployable", "content"] },
17
17
  { "target": "docs/Guides/google-login.md", "source": "seed:google-login.template.md", "ownership": "repo", "classes": ["deployable"], "projectTypes": ["web-app"] },
@@ -0,0 +1,5 @@
1
+ <!-- mmi-developer-environment:start -->
2
+ ## MMI developer environment
3
+
4
+ Use the [canonical MMI developer-environment guide](https://github.com/mutmutco/MMI-Hub/blob/main/docs/Architecture/agentic-dev-environment.md) for shared setup and daily agent work.
5
+ <!-- mmi-developer-environment:end -->
@@ -69,9 +69,9 @@ What the env half heals:
69
69
  docs/doctor-contract.md § Guarded cache prune): never the running/newest/installed version, a cache a
70
70
  live session holds is named "still held" and never forced.
71
71
 
72
- What it does **not** do since #4954: install anything. A behind npm global is REPORTED (the `mmi-cli`
73
- row names `npm install -g @mutmutco/cli@<released>`) and the `fleet` row reads the scheduled
74
- `mmi-updater`'s journal that reconciler is the single writer of CLI and plugin versions.
72
+ What it does **not** do since #4954: converge CLI or host versions. A behind npm global is REPORTED
73
+ and the `fleet` row reads MMI Hub's last-run journal evidence. `mmi-hub update` is the single safe
74
+ version-convergence writer; plain doctor and `/mmi` never run repository cleanup.
75
75
 
76
76
  - **Fast path** → `whoami` then `board read`; no foreground doctor.
77
77
  - **Hard setup signal** → run `doctor --no-repo-writes`, relay `↻` lines, then retry `board read` when appropriate.
@@ -81,10 +81,11 @@ row names `npm install -g @mutmutco/cli@<released>`) and the `fleet` row reads t
81
81
  On Codex, install the Hub-shipped plugin: `codex plugin marketplace add mutmutco/MMI-Hub` →
82
82
  `codex plugin add mmi@mutmutco`, then trust the bundled hooks via `/hooks`. On Kimi Code CLI:
83
83
  `/plugins install https://github.com/mutmutco/MMI-Hub` → `/reload`. On Cursor, run
84
- `mmi-cli plugin heal`, then reload the Cursor window. On OpenCode and plain shell the standalone CLI
85
- is the whole install:
84
+ `mmi-cli plugin heal`, then reload the Cursor window. On OpenCode and plain shell install the
85
+ maintenance package; it provisions the standalone CLI:
86
86
  ```powershell
87
- npm install -g @mutmutco/cli
87
+ npm install -g @mutmutco/hub
88
+ mmi-hub install
88
89
  ```
89
90
  In PowerShell from an `MMI-Hub` checkout, or when diagnosing a stale plugin cache, use the repo-local fallback:
90
91
  ```powershell
@@ -112,7 +113,7 @@ row names `npm install -g @mutmutco/cli@<released>`) and the `fleet` row reads t
112
113
  gh auth login --hostname github.com --git-protocol https --web --scopes "project"
113
114
  ```
114
115
  The `project` scope is what lets `/mmi` read + move the board, granted here once. When they're back,
115
- re-run `mmi-cli doctor` to confirm green.
116
+ re-run `mmi-cli doctor --preflight` to confirm green without writes.
116
117
  - **Hub registry / board META** — `mmi-cli oracle org project get <owner/repo>` or `mmi-cli oracle board read` reports
117
118
  missing project/board coords → a master-admin registers or backfills the repo's `PROJECT#<slug>` META.
118
119
  There's no reliable project to read until that is fixed, so stop here.
@@ -1,28 +1,27 @@
1
1
  ---
2
2
  name: mmi-doctor
3
- description: One hygiene pass mmi-cli doctor heals and cleans by default.
3
+ description: Diagnose hygiene and safely heal tooling; repository cleanup is explicit.
4
4
  ---
5
5
 
6
6
  **Host-native invocation:** Claude `/mmi:mmi-doctor` · Codex `$mmi:mmi-doctor` · jervcode/Kimi `/skill:mmi-doctor` · Kilo `skill` tool. A backticked `/name` in this doc names the matching workflow (this skill or a sibling), not a literal command.
7
7
 
8
8
  # /mmi-doctor — one hygiene pass
9
9
 
10
- One command. Run it when a session opens messy or before a handoff.
10
+ Run the safe default when a session opens messy or before a handoff:
11
11
 
12
12
  ```bash
13
13
  mmi-cli doctor
14
14
  ```
15
15
 
16
- By default this **heals and cleans** (MMI-Hub#3975): plugin env repairs, managed `.gitignore`,
17
- merged-branch / dead-worktree reap (including deferred IDE-locked removals), light board mechanical
18
- fixes, docs-index working-tree heal, detection that names hung `mmi-hook` / `hook-run` processes
19
- older than the session bound, and related full-lane checks. Secrets stay **out** of default
20
- doctor — use `mmi-cli vault secrets diff` when you need a catalog gap check.
16
+ A plain run may repair machine-global plugin wiring and guarded caches, but **never mutates the
17
+ repository** (#5023). It reports managed `.gitignore`, docs-index, board mechanics, merged branches,
18
+ dead worktrees, and aged scratch. Run `mmi-cli doctor --apply` only when the operator explicitly wants
19
+ that guarded full repository cleanup. Secrets stay out of doctor; use `mmi-cli vault secrets diff` for
20
+ a catalog gap check.
21
21
 
22
- Doctor does **not** update the CLI or the host plugins (MMI-Hub#4954). The scheduled `mmi-updater`
23
- reconciler is the single writer of those versions; doctor only REPORTS the `mmi-cli` row names the
24
- version gap and the `npm install -g @mutmutco/cli@<released>` that closes it, and the `fleet` row reads
25
- the reconciler's journal (installed / expected / drift per surface). Its plugin-heal/update pass
22
+ Doctor does **not** converge CLI or host versions (MMI-Hub#4954). `mmi-hub update` is the single
23
+ writer of those versions; doctor only reports lag and last-run journal evidence. `mmi-hub status`
24
+ reads actual installed locations and versions. Doctor's active-plugin repair pass
26
25
  covers every surface from any invocation surface — including Cursor's local-checkout row, not only
27
26
  the active surface.
28
27
 
@@ -30,11 +29,11 @@ the active surface.
30
29
 
31
30
  | Flag | Role |
32
31
  |------|------|
33
- | *(none)* | Heal + clean (default). |
32
+ | *(none)* | Safely heal tooling; report repository hygiene without repo writes. |
34
33
  | `--verbose` | Full checklist + per-row evidence. |
35
- | `--no-repo-writes` | Env/plugin repairs only no working-tree mutates (train preflight). |
34
+ | `--no-repo-writes` | Compatibility spelling for the safe default. |
36
35
  | `--self` / `--fast` / `--banner` / `--preflight` | Cheap / read-oriented lanes (see `docs/doctor-contract.md`). |
37
- | `--apply` | **Deprecated no-op** kept so older instructions still parse. |
36
+ | `--apply` | Explicit advanced lane: also apply guarded repository cleanup. |
38
37
 
39
38
  ## Do not run the old multi-step ritual
40
39
 
@@ -47,8 +46,8 @@ mmi-cli vault secrets diff
47
46
  mmi-cli worktree gc
48
47
  ```
49
48
 
50
- Plain `mmi-cli doctor` already covers heal + clean. Reach for the individual verbs only when you want
51
- that surface alone (e.g. a secrets catalog review, or an interactive `board doctor` without the rest).
49
+ Plain `mmi-cli doctor` covers safe tooling repair and diagnosis. Explicit `doctor --apply` covers the
50
+ full guarded repository cleanup; reach for individual verbs only when you want one surface alone.
52
51
 
53
52
  ## Notes
54
53
 
@@ -24,18 +24,19 @@ first gap:
24
24
  - **Board** — is the Project board reachable, and how many items are on it.
25
25
  - **Registry** — is the repo registered in the Hub (`PROJECT#<slug>` META).
26
26
  - **Secrets** — is a GitHub token available for the vault path.
27
- - **Plugin** — is `mmi-updater` the single writer, and does its journal show every present surface at
28
- the gated fleet version (#4945).
27
+ - **MMI Hub** — does `mmi-hub status` find the installed CLI and every present host surface at the
28
+ gated fleet version, with hourly automatic updates healthy.
29
29
 
30
30
  The **Plugin** row is per machine, not per repo. The Hub's thin Claude/Codex catalogs pin exact npm
31
31
  packages; Git no longer transports plugin content, and background marketplace auto-update stays **off**
32
- so it cannot race the scheduled updater. The updater gates a release tag+BOM, converges each present host,
33
- and writes the journal stamp (`fleet <V> ✓`). A red row names `mmi-updater verify` or
34
- `mmi-updater reconcile`; no marketplace ref or hand-edited auto-update ceremony remains.
32
+ so it cannot race Hub maintenance. `mmi-hub` gates a release tag+BOM, converges each present host,
33
+ and records last-run evidence. A red row names `mmi-hub install`, `mmi-hub update`, or
34
+ `mmi-hub autoupdate on`; no marketplace ref or hand-edited auto-update ceremony remains.
35
35
 
36
36
  A `✗` on any line comes with a `Next command:` — run **that** first. Common ones:
37
37
 
38
- - Hub API URL not configured → `mmi-cli doctor` (fix wiring).
38
+ - Hub maintenance missing or stale → `npm install -g @mutmutco/hub` then `mmi-hub install`.
39
+ - Hub API URL not configured → `mmi-cli doctor` (safe tooling wiring only; no repository cleanup).
39
40
  - Repo not registered → a master-admin runs `/bootstrap` (or `mmi-cli oracle org project set <owner/repo>`).
40
41
  - GitHub auth missing → the dev runs `gh auth login --hostname github.com --git-protocol https --web --scopes "project"`.
41
42
 
@@ -125,8 +125,7 @@ git rev-list --count origin/main..origin/development
125
125
 
126
126
  Before local gates or `release --apply`, ensure the repo-local / PATH `mmi-cli` matches the released train
127
127
  path — a stale checkout (e.g. 2.32.0 while 2.32.4 is released) fails release gates with opaque errors.
128
- Read the gap without repo writes (plugin/env repairs run by default since #3975; the flag suppresses only
129
- mutations of the working tree you are about to release from):
128
+ Read the gap on the compatibility-safe no-repository-write lane:
130
129
  ```bash
131
130
  mmi-cli doctor --no-repo-writes
132
131
  ```
@@ -136,13 +135,13 @@ inverse is also true: a run can exit **0** while printing ✗ lines (report-only
136
135
  direction is a gate. Read the rows.
137
136
 
138
137
  - **Blocking:** a red `mmi-cli` / `Claude plugin` version line, or a reported `minClientVersion` gap.
139
- **Doctor does not update the CLI (#4954).** The scheduled `mmi-updater` owns npm installs now; doctor
140
- REPORTS the lag (the `mmi-cli` row) and reads the reconciler's journal (the `fleet` row). So the remedy
141
- here is the explicit install below `npm install -g @mutmutco/cli@<released>` not a doctor re-run.
142
- `--no-repo-writes` still heals the plugin install (#3282), suppressing only repo-file writes. Do **not**
138
+ **Doctor does not update the CLI (#4954).** `mmi-hub` owns release-gated version convergence; doctor
139
+ reports lag and last-run evidence only. The remedy is `mmi-hub update`, not a doctor re-run or a bare
140
+ CLI install. Plain doctor/`--no-repo-writes` may safely repair active plugin wiring but never repository
141
+ state. Do **not**
143
142
  proceed to Step 0b while the installed CLI is behind the Hub's `minClientVersion`.
144
- - **Not blocking:** every other red check is hygiene, not a train gate. Stale branches and scratch heal with
145
- a plain `mmi-cli doctor` (after the release); `plugin cache` needs a different verb,
143
+ - **Not blocking:** every other red check is hygiene, not a train gate. Stale branches and scratch require
144
+ explicit `mmi-cli doctor --apply` after the release; `plugin cache` needs a different verb,
146
145
  `mmi-cli plugin prune --apply` — saying doctor cleared it was wrong. Both still exit 1 until you run the
147
146
  right verb. Read them, then proceed.
148
147
 
@@ -183,8 +182,8 @@ completeness:
183
182
  mmi-cli --version
184
183
  npm view @mutmutco/cli version # public package; a bare view is trustworthy here
185
184
  ```
186
- Mismatch → `npm install -g @mutmutco/cli@<released>` before Step 0b, **regardless of what doctor's rows
187
- said**. This is the check whose absence Step 0a's own title promises to cover, so it is not optional.
185
+ Mismatch → run `mmi-hub update`, then repeat both reads before Step 0b, **regardless of what doctor's
186
+ rows said**. This is the check whose absence Step 0a's own title promises to cover, so it is not optional.
188
187
 
189
188
  ## Step 0b — registry + main secret-name preflight
190
189