diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 72dde90..5f0a196 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "mstack", - "version": "0.2.1", + "version": "0.3.0", "description": "Portable engineering skills for Codex, Claude Code, OpenCode, and pi.", "author": { "name": "3metaJun" diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d0e6387 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,50 @@ +# Changelog + +## 0.3.0 - 2026-09-11 + +This release includes the workflow, installation, and model execution fixes +merged since npm version 0.2.0. + +### Upgrade notes + +- `run-role` no longer treats `inherit-parent` as the new CLI's default model. + Add `--parent-model ` to inherit explicitly, or choose + `--model auto` to use the CLI default. An explicit `--model ` also works. + Calls without a model configuration need an explicit model selection too. +- Codex's optional agent artifacts are now TOML files in `CODEX_HOME/agents`, + defaulting to `~/.codex/agents`. Reinstall with the `agents` artifact selected. + A custom remote skill directory needs an explicit agent artifact target. +- Malformed or repeated model options and whitespace-padded model names are + rejected. History commands reject repeated single-value options while + allowing repeated `--exclude` arguments. + +### Changes + +- Restore upstream workflow instructions, design references, TypeScript + examples, and missing support files. Integrity checks now cover all 50 skill + trees and moved files against both pinned upstream sources. +- Support reviewer model lists, explicit list selection, and concurrent + read-only execution with per-model output and failure reporting. +- Ship a standalone history reader for Codex, Claude Code, OpenCode, and pi. + It scopes reads to the requested workspace, reconstructs supported branches, + bounds excerpts, and preserves warnings about incomplete results. +- Complete the bundled skill-authoring workflow and installed-skill fallbacks + for `recall`, `reflect`, and `automate-me`. +- Correct Harness metadata and agent formats, preserve agent bodies during + conversion, and reject conflicting or invalid artifact targets before writes. +- Keep npm ignore rules outside the reviewed runtime tree so installed-package + integrity checks succeed. CI rejects packages missing any reviewed skill file. + +### Verification + +The integrated source passed 125 tests on Windows with one expected Unix-only +skip, package checks, and both pinned-source integrity checks. CI covers Linux, +macOS, and Windows on Node 18 and 22. + +Real diagnosis workflows loaded the restored skill, reproduced an asynchronous +cache invalidation failure, and identified its cause in pi, OpenCode, Claude +Code, and Codex. The Claude Code and Codex runs used GLM in Debian WSL. Codex +completed with `low` reasoning effort; its first `max` run timed out. Its +sandboxed test subprocess needed a direct invocation of the same test file to +show the individual assertions. These checks cover the diagnosis workflow, not +every skill or model setting. diff --git a/package.json b/package.json index 1359886..f2453ce 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@3metajun/mstack", - "version": "0.2.1", + "version": "0.3.0", "description": "Portable engineering skills for Codex, Claude Code, OpenCode, and pi.", "repository": { "type": "git", @@ -40,6 +40,7 @@ "agents", ".codex-plugin", "README.md", + "CHANGELOG.md", "LICENSE", "THIRD_PARTY_NOTICES.md" ], diff --git a/profiles/skill-manifest.json b/profiles/skill-manifest.json index 08c133c..81d0f63 100644 --- a/profiles/skill-manifest.json +++ b/profiles/skill-manifest.json @@ -692,11 +692,6 @@ "sourceDigest": "551adca942227b44192edba88acd4e8db911f0121ce58ad16944ccf6a896a74a", "targetDigest": "3b50712cac5d212e449bc9e9baeed4866412b152aa30feef53fdc4a0f3791840" }, - "tools/meta-mode/.npmignore": { - "upstream": null, - "reason": "Local portability guidance or implementation; review alongside its owning skill.", - "targetDigest": "4d56952b0fb13bf8f9b6c13a6d4c34a075bac3af447636a1df4335d7576e2f97" - }, "tools/meta-mode/bootstrap.ts": { "upstream": "pstack", "source": "skills/poteto-mode/scripts/bootstrap.ts", diff --git a/scripts/check-package.mjs b/scripts/check-package.mjs index 8384e52..9c9a279 100644 --- a/scripts/check-package.mjs +++ b/scripts/check-package.mjs @@ -49,6 +49,13 @@ if (forbidden.length) { throw new Error(`npm package contains excluded files:\n${forbidden.join("\n")}`); } +const baseline = JSON.parse(readFileSync(join(repoRoot, "profiles", "skill-manifest.json"), "utf8")); +const packedFiles = new Set(report.files.map((file) => file.path)); +const missing = Object.keys(baseline.files).filter((path) => !packedFiles.has(path)); +if (missing.length) { + throw new Error(`npm package is missing reviewed skill files:\n${missing.join("\n")}`); +} + console.log( `Package contains ${report.entryCount} files (${report.size} bytes packed, ${report.unpackedSize} bytes unpacked).`, ); diff --git a/tools/.npmignore b/tools/.npmignore new file mode 100644 index 0000000..7cd53fd --- /dev/null +++ b/tools/.npmignore @@ -0,0 +1 @@ +**/node_modules/ diff --git a/tools/meta-mode/.npmignore b/tools/meta-mode/.npmignore deleted file mode 100644 index c2658d7..0000000 --- a/tools/meta-mode/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/