@mutmutco/codex-plugin 4.3.41 → 4.3.43

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,6 +1,6 @@
1
1
  {
2
2
  "name": "mmi",
3
- "version": "4.3.41",
3
+ "version": "4.3.43",
4
4
  "mmiCompat": "4.x",
5
5
  "description": "MMI workflow skills and org gates delivery.",
6
6
  "author": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mutmutco/codex-plugin",
3
- "version": "4.3.41",
3
+ "version": "4.3.43",
4
4
  "description": "MMI workflow skills and org gates delivery.",
5
5
  "author": {
6
6
  "name": "MMI Future",
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: mmi-help
3
+ description: Show a short, human-readable introduction to MMI and its commands.
4
+ ---
5
+
6
+ # MMI help
7
+
8
+ This is the MMI help command: Claude `/mmi:mmi-help`, Codex `$mmi:mmi-help`, Cursor and JervCode
9
+ `/mmi-help`, or Hermes `skill_view(name='mmi-help')`. These are host skill invocations, not shell
10
+ commands. The distinct name avoids colliding with a host's built-in help command.
11
+
12
+ Read the [org guide entry](../org-guide/SKILL.md) and
13
+ [getting started](../org-guide/references/getting-started.md). Do not load other topics for general help.
14
+
15
+ Print a friendly, human-readable **MMI help** card of at most 180 words:
16
+
17
+ 1. Explain that MMI provides the organization's shared tools and working rules.
18
+ 2. Show the npm install command, `mmi-hub install`, and the read-only `mmi-hub status` check.
19
+ 3. Summarize the essentials: automatic updates, vault/keyless secrets, no repository environment
20
+ files or personal agent instructions, and approved MMI release workflows.
21
+ 4. Name the org-guide skill for details and board, secrets, stage, and release for common tasks.
22
+ Render invocation syntax for the current host only, using the forms above with the skill name
23
+ substituted. If the host is unknown, use plain skill names rather than guessing.
24
+
25
+ For a specific help question, read only its linked guide topic and answer that question instead.
26
+ Explain commands without running them. Help does not install, claim, rotate, provision, or release.
27
+ Do not claim the user's setup is healthy without an actual status result.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: org-guide
3
+ description: Read MMI org rules before project work; load only the topic needed.
4
+ ---
5
+
6
+ # MMI organization guide
7
+
8
+ Read this short entry before MMI project work. Then read **only the topic relevant to the task**;
9
+ do not load the whole guidebook or repeat it in the conversation. For a human introduction, use
10
+ the [MMI help skill](../mmi-help/SKILL.md).
11
+
12
+ ## Essential rules
13
+
14
+ - Install `@mutmutco/hub` through npm, run `mmi-hub install`, and keep automatic updates enabled.
15
+ Check actual health with `mmi-hub status`; installation alone is not proof of a working updater.
16
+ - Use the scoped two-tier vault and keyless workflows. Never put secret values in chat, logs,
17
+ command arguments, or repository environment files.
18
+ - Personal agent instructions and host settings stay local and gitignored in product repositories.
19
+ Do not commit AGENTS.md, CLAUDE.md, or copied plugin instructions.
20
+ - Claim approved work through the board, use the repository's checks, and land through MMI.
21
+ A request for help or a plan does not authorize a change or a production release.
22
+ - Read the registry for release tracks, domains, and OAuth configuration. Use MMI provisioning
23
+ and release workflows rather than inventing parallel deployment or credential paths.
24
+
25
+ ## Read one topic
26
+
27
+ | Task | Local reference |
28
+ | --- | --- |
29
+ | Install, update, reload, or diagnose tooling | [Getting started](references/getting-started.md) |
30
+ | Work an issue, test, merge, or release | [Work and releases](references/work-and-releases.md) |
31
+ | Consume, declare, rotate, or request a secret | [Vault and keyless access](references/vault.md) |
32
+ | Register domains or configure Google OAuth | [Domains and OAuth](references/domains-and-oauth.md) |
33
+ | Decide what belongs in a product repository | [Repository rules](references/repository-rules.md) |
34
+
35
+ This is MMI organization guidance, not Jerv or JervCode operating instructions.
36
+ The plugin carries these files locally at its installed release version. Resolve current values
37
+ and exact command flags through the live CLI; a bundled guide is not a live status report.
@@ -0,0 +1,31 @@
1
+ # Domains and OAuth
2
+
3
+ MMI owns the central project registry and provisioning workflows. Read
4
+ `mmi-cli oracle org project get <owner/repo> --json` before changing hostnames or login settings.
5
+ Use the declared edge domains for each stage; do not guess hostnames from a slug or create a
6
+ second DNS/deployment control plane in a product repository. New project setup goes through
7
+ [bootstrap](../../bootstrap/SKILL.md).
8
+
9
+ Cloudflare owns public DNS and edge TLS. Preserve unrelated records during an authorized change.
10
+ A dev stage is private only after its independent edge-block check succeeds. A configured record
11
+ or successful deployment alone does not prove access control. Use [stage](../../stage/SKILL.md)
12
+ for the supported private live workflow.
13
+
14
+ ## Google OAuth
15
+
16
+ An eligible project uses one Google web client across local, dev, rc, and main, not one per stage.
17
+ The registry declares OAuth metadata and extra callback paths for additional login/connect flows.
18
+ Generate the current origins and redirects with
19
+ `mmi-cli vault org oauth plan --repo <owner/repo> --json`; do not assemble a copied URI list.
20
+ The plan includes the declared edge hosts, callback paths, and supported loopback redirects.
21
+
22
+ Client creation and editing are human Google Console actions. Add the planned origins and redirects
23
+ to that client. Store its downloaded credentials through
24
+ `mmi-cli vault org oauth set-creds --repo <owner/repo>` using the file on stdin, never its contents
25
+ in chat or command arguments. Keep credential files outside the repository and remove the temporary
26
+ download after the authorized import. The stored pair is shared across stages through the vault.
27
+
28
+ Run `mmi-cli vault org oauth verify --repo <owner/repo>` before removing a working redirect.
29
+ Verification probes redirect acceptance; it does **not** inspect registered JavaScript origins.
30
+ Reconcile those against the plan in Console. Check actual authority and use the
31
+ [vault guide](vault.md) for the credential boundary.
@@ -0,0 +1,28 @@
1
+ # Getting started
2
+
3
+ Install the maintenance package from npm, then let it install the CLI and supported host plugins:
4
+
5
+ ```bash
6
+ npm install -g @mutmutco/hub
7
+ mmi-hub install
8
+ mmi-hub status
9
+ ```
10
+
11
+ Keep automatic updates enabled. Install converges the tools immediately and enables an hourly
12
+ schedule on supported systems. Status is read-only: it reports installed versions, scheduling,
13
+ the last run, and failures. A missing, unsupported, or failing schedule is not a healthy installation.
14
+ Use `mmi-hub autoupdate on` to enable scheduling and `mmi-hub update` for an immediate update.
15
+ Do not edit plugin caches or installation records by hand.
16
+
17
+ Complete the host's trust and reload step: reload plugins or restart Claude Code, restart Codex,
18
+ reload the Cursor window, restart JervCode, or start a fresh Hermes process. An existing session
19
+ may still hold the old skill catalog until then. The updater manages the MMI plugin on each
20
+ supported host present on the machine; it does not grant repository or vault access.
21
+
22
+ Authenticate GitHub for your assigned repository. In its checkout, run `mmi-cli onboard` for
23
+ readiness and `mmi-cli oracle board read` for work. Use `mmi-cli commands --json` to discover routes
24
+ and `mmi-cli explain <command> --json` for exact syntax. Check `mmi-hub status` separately for
25
+ machine-wide updater health.
26
+
27
+ Ask for **MMI help** for the short introduction or open the [org guide](../SKILL.md) for one topic.
28
+ The guide travels with the plugin on every release; it requires neither a Hub checkout nor wiki access.
@@ -0,0 +1,23 @@
1
+ # Repository rules
2
+
3
+ Product repositories contain product code, tests, and useful product documentation.
4
+ Organization tooling and shared agent workflows come from the MMI plugin.
5
+ Keep project-specific guidance in the README and architecture documents rather than copying
6
+ organization instructions into each repository.
7
+
8
+ Personal agent instructions and host settings are developer-owned, local, and gitignored.
9
+ The organization ruleset restricts AGENTS.md, CLAUDE.md, GEMINI.md, the .claude, .codex, and .agents
10
+ directories, and .cursor/rules at any depth in covered repositories. Designated distribution-source
11
+ repositories have centrally managed exceptions; a product developer must not invent a bypass.
12
+ Do not force-add ignored files or commit plugin caches to work around delivery problems.
13
+
14
+ Do not create repository environment files to hold runtime configuration or secrets.
15
+ Use the declared vault and supported [keyless workflows](vault.md), including for local stages.
16
+ Renaming a secrets file or leaving it untracked is not a workaround. A runtime environment injected
17
+ by the deployment system is different from a developer-maintained file in the repository.
18
+
19
+ Use [bootstrap](../../bootstrap/SKILL.md) to provision organization-owned repository assets and
20
+ rules. Preserve product-owned content when updating managed sections.
21
+ Use `mmi-cli tests policy --base <comparison-base>` and the repository's own checks before landing.
22
+ For tooling repair, `mmi-hub status` reads state and `mmi-hub update` updates installed tooling;
23
+ repository cleanup is a separate, explicit action, not an automatic consequence of asking for help.
@@ -0,0 +1,28 @@
1
+ # Vault and keyless access
2
+
3
+ The two tiers describe authority and blast radius, not separate storage products:
4
+
5
+ - **Your project:** a project-admin can manage their own product's full vault tree, including
6
+ shared values and dev, rc, and main overrides. Production-stage names do not by themselves
7
+ require an organization master-admin.
8
+ - **Organization infrastructure:** shared infrastructure secrets are master-admin managed.
9
+ Project access requires an explicit grant for the relevant names. A read grant permits
10
+ consumption, not rotation or deletion; do not assume a grant authorizes every operation.
11
+
12
+ Read `mmi-cli oracle org access role <owner/repo> --json` and
13
+ `mmi-cli oracle org access capabilities` for your actual authority.
14
+ Installing MMI does not confer that authority. The server checks the caller and target scope.
15
+
16
+ The registry catalog declares secret names before values are set. A shared, stageless value is
17
+ the canonical default; a declared stage override wins for that stage. Avoid accidental duplicate
18
+ copies that hide a rotation. Use `mmi-cli vault secrets catalog` and `mmi-cli vault secrets list`
19
+ to inspect names and reach, never values.
20
+
21
+ Consume through `mmi-cli vault secrets use <KEY> -- <command>`: the authorized child receives the
22
+ value at runtime. Do not print it, save it to a repository environment file, paste it into chat,
23
+ or pass it as a command argument. Keyless means using the authorized runtime injection or workload
24
+ identity; developers do not need standing cloud keys to perform supported MMI vault operations.
25
+
26
+ For declarations, writes, grants, rotation, and verification, read the
27
+ [secrets skill](../../secrets/SKILL.md). Writes take values through stdin, never argv.
28
+ An access denial or failed provider probe is a fact to resolve, not permission to bypass the vault.
@@ -0,0 +1,48 @@
1
+ # Work and releases
2
+
3
+ Start with `mmi-cli onboard` and the [board skill](../../board/SKILL.md).
4
+ Reading or discussing the board is read-only until the developer authorizes work.
5
+ Claim approved work with `mmi-cli oracle board claim <issue>`, then prepare an isolated task
6
+ workspace through the host. Preserve other developers' work.
7
+
8
+ Read the issue, implementation, callers, and repository policy before editing.
9
+ Run `mmi-cli tests policy --base <comparison-base>` to determine required checks against your target
10
+ branch (normally origin/development for train repositories). The repository's policy decides, not
11
+ a universal test count. Use its build and check commands.
12
+ Open a PR through `mmi-cli devops pr create` with a closing issue link, and land through
13
+ `mmi-cli devops pr land`. Verify required checks, merge, issue closure, and cleanup before calling
14
+ the implementation complete. A merged implementation is not a production release.
15
+
16
+ ## Choose the declared train
17
+
18
+ Read `mmi-cli oracle org project get <owner/repo> --json` and `mmi-cli status` for the resolved track.
19
+ The registry and MMI's resolver own the release track and deployment model; do not invent your own
20
+ inference from the repository name or branches that happen to exist. Normal train work targets
21
+ development. A trunk repository follows its single branch and declared workflow instead.
22
+
23
+ - Full track: development → rc → main. Use [rcand](../../rcand/SKILL.md) to prepare a candidate,
24
+ then [release](../../release/SKILL.md) for promotion. The release workflow also describes its
25
+ supported development-source route.
26
+ - Direct track: development → main. Use [release](../../release/SKILL.md); do not invent an rc lane.
27
+ - Trunk track: one main branch, without an rc/development promotion train. Follow the repository's
28
+ declared publishing workflow rather than manufacturing train branches.
29
+ - Urgent already-merged fixes: use [hotfix](../../hotfix/SKILL.md), which carries selected development
30
+ fixes directly to main on either track.
31
+
32
+ Production changes require explicit authorization from the authorized human.
33
+ Read the selected release skill before operating the train. Let it choose versions, run gates,
34
+ publish, deploy, and verify the resulting release. A refusal requires fixing its cause; do not
35
+ finish by hand, bypass checks, or start a duplicate release.
36
+ A release announces itself in Slack: the Hub to the org alerts channel, a product to its own
37
+ project channel when the project vault declares `SLACK_RELEASE_CHANNEL`; never post release notes
38
+ by hand.
39
+
40
+ For local or private live testing, read [stage](../../stage/SKILL.md).
41
+ For a new product repository, use [bootstrap](../../bootstrap/SKILL.md).
42
+
43
+ ## Keep guidance with the change
44
+
45
+ When changing organization behavior, update the affected guide topic in the same PR.
46
+ Hub release packaging rebuilds every host's skill tree from the shared source and verifies parity.
47
+ The guide's source-review check requires reviewing a topic when its declared policy inputs change;
48
+ unchanged advice needs no cosmetic rewrite on each version bump.
@@ -33,7 +33,7 @@ Read `ready`, then `findings[]`: each carries `code`, `severity` (`blocker` · `
33
33
 
34
34
  Run from the primary checkout on the lane's start branch (`rc`; `development` for direct-track and `--dev`). Export the bump intent once from the bare argument — `MMI_BUMP_INTENT=minor|major|patch`, unset → `patch`; `MMI_RELEASE_VERSION=X.Y.Z` only for an exact target the tag math cannot derive.
35
35
 
36
- MMI-Hub only: write a fresh 3–6 line neutral summary to `f=$(mktemp tmp/release-summary.XXXXXX)` — sourced from Hub PR titles only (`origin/main..origin/development`), rewritten in Hub-subsystem terms, never a product or brand name. Hub scope is only `mutmutco/MMI-Hub`: never a product's board, `ds-propagate.yml`, or a product's deploy state.
36
+ MMI-Hub only: write a fresh 3–6 line neutral summary to `f=$(mktemp tmp/release-summary.XXXXXX)` — sourced from Hub PR titles only (`origin/main..origin/development`), rewritten in Hub-subsystem terms, never a product or brand name. Hub scope is only `mutmutco/MMI-Hub`: never a product's board, `ds-propagate.yml`, or a product's deploy state. A product repo may pass `--announce-summary-file` too (optional): its notes post to the project's own release channel from the declared `SLACK_RELEASE_CHANNEL` vault key, in that product's own names — with no key declared the announcement is `skipped` and nothing else changes.
37
37
 
38
38
  ```bash
39
39
  r=$(mktemp tmp/release-receipt.XXXXXX)
@@ -41,7 +41,7 @@ mmi-cli devops release --apply --json --out "$r"
41
41
  mmi-cli devops release --apply --announce-summary-file "$f" --json --out "$r" # MMI-Hub
42
42
  ```
43
43
 
44
- Add `--dev` for a full-track dev → main release and `--watch` to block on the deploy/publish runs. `mmi-cli devops release --apply --ack <sha>[,<sha>…]` only when the authorized human has verified that a main-only commit the hotfix-coverage guard refused is already in the candidate — never ack to save time. The one command merges, runs the version fold (automatic, inside `mmi-cli devops release --apply`) that bumps the manifests unconditionally before the tag, pushes the tag first (`gate.yml` runs on `v*` tags, so the fold commit earns its required checks), waits for the required contexts, pushes `main`, publishes the Release, dispatches or correlates the deploy (`tenant-deploy.yml` only for tenant-container), announces (Hub), re-syncs project info, and rolls `development` and `rc` forward. Nothing here is done by hand.
44
+ Add `--dev` for a full-track dev → main release and `--watch` to block on the deploy/publish runs. `mmi-cli devops release --apply --ack <sha>[,<sha>…]` only when the authorized human has verified that a main-only commit the hotfix-coverage guard refused is already in the candidate — never ack to save time. The one command merges, runs the version fold (automatic, inside `mmi-cli devops release --apply`) that bumps the manifests unconditionally before the tag, pushes the tag first (`gate.yml` runs on `v*` tags, so the fold commit earns its required checks), waits for the required contexts, pushes `main`, publishes the Release, dispatches or correlates the deploy (`tenant-deploy.yml` only for tenant-container), announces (the org alerts channel for the Hub; the project's own release channel for a product repo), re-syncs project info, and rolls `development` and `rc` forward. Nothing here is done by hand.
45
45
 
46
46
  ## Verify
47
47
 
@@ -51,7 +51,7 @@ Read the receipt at `$r`, never the exit code (exit `2` = shipped with a follow-
51
51
  - `deployStatus` — `pending` is never terminal; `promoted: true` holds even when a deploy failed.
52
52
  - `workflowRuns` — every run on the release SHA (deploy-model runs, any `push: main` deploy, the repo's own `gate`). Watch each non-success entry to conclusion: `gh run watch <run-id> --repo {owner}/{repo} --exit-status`. Name which run is red: `deploy.yml` / `publish.yml` / `tenant-deploy.yml` / `jerv-gateway` is a deploy or publish verdict; a `gate` push run is ordinary CI sharing the SHA.
53
53
  - With `--watch` the train waits for its own alignment PR to land (true merge) and folds the ledger in the same run, so the receipt ends `succeeded` / `complete`. An external `gh run watch` never folds anything: if the receipt still shows a `pending` leg (no `--watch`, or the alignment PR outlived the bounded wait), fold it live before declaring the cut done or starting any new train: `mmi-cli devops release --resume --watch --json --out <fresh-receipt>`; the NEXT train's doctor otherwise refuses with `ledger-pending`.
54
- - `announceNote` (Hub) — `announced`, `skipped`, or the failure note.
54
+ - `announceNote` — `announced` (to the alerts channel for the Hub, to the project release channel for a product repo), `skipped`, or the failure note. The channel id itself is never printed.
55
55
  - `devRollForward` / `rcAlignment` — `pushed`, or `pr-pending` with the alignment PR to land by true merge (Merge floor). An enqueued auto-merge is not evidence of the method; before reporting, read the enqueued method back — `gh pr view <n> --json autoMergeRequest --jq .autoMergeRequest.mergeMethod` — and prove it is `MERGE`. An enqueued `SQUASH` is a stop under the Merge floor, not something to wait out.
56
56
  - `versionFold`, `rcRetirement`, `checkout` — `returned`, or the named reason you are still on `main`.
57
57
  - A `private` npm surface (`surfaces.json`): the doctor's `npm-token-rejected` finding comes first. A 401 from `npm whoami` through the `_org` `npm/NPM_TOKEN` vault hop means the token is rejected, and every authenticated `npm view` then 404s exactly like an absent package — rotate the token; only after a login is a restricted 404 "unverifiable from here", never "not published" (`publish-private-package`). On a repo whose workflows publish through Trusted Publishing and name no registry token, that row is `info`, not a warning: no lane consumes the org token, so it constrains your manual read only.