Add codex-harness-patterns plugin (v1.0.4, 23 Skills) - #33
Conversation
… a fresh PR ## What This is a **replacement PR** for the abandoned PR MiniMax-AI#18 ("Add codex-harness-patterns plugin"). PR MiniMax-AI#18 was opened with `head = base = main` (head SHA `9600667e`, a merge commit on the `origin/main` branch that also accumulated 51 other commits spanning MiniMax-AI#5 tool-map, MiniMax-AI#17 mcode-island, and the proposal hooks). That state, plus a 51-commit / 168-file drift vs. `upstream/main`, made the PR effectively unreviewable: every reviewer comment touched a different change than the one the PR was nominally about, and `update-branch` returned `expected head sha didn't match current head ref` (HTTP 422). amszuidas' round-8 P2 (2026-09-07T03:17:13Z, head `9600667e`) captured this exactly: "Please rebase after those dependencies merge, or remove the unrelated changes so this PR can be reviewed and merged as the codex-harness-patterns contribution alone." This commit is the second half of that recommendation: it ships the codex-harness-patterns contribution as a single, self-contained commit on a fresh branch `add-codex-harness-patterns` based on `upstream/main`. The old PR MiniMax-AI#18 will be closed without merge; this PR is the one that should be reviewed. ## Why a single commit, not 30 The original 30-commit history (`fb0b87d` v0.3.0 origin through `c949789` v1.0.4 final, post-round-7) is available on the abandoned PR MiniMax-AI#18 branch. I attempted to cherry-pick those 30 commits onto a fresh `add-codex-harness-patterns` branch (preserving the review trail commit-by-commit), and got 30 modify/delete conflicts in a row: each commit is a "create + immediately modify" of the same files relative to the empty upstream, which git's 3-way merge does not handle in a non-interactive batch. Resolving 30 conflicts by hand does not preserve the review trail any better than a single squash, and is much noisier to audit. The end state of `c949789` (post-round-7) is what the reviewers ultimately agreed on; the 14 round-by-round commits are an artefact of the review process, not of the contribution itself. If a reviewer needs to see the round-by-round reasoning, the old PR MiniMax-AI#18's commit list, review comments, and round-by-round explanations remain at `https://github.com/MiniMax-AI/MiniMax-Code-Plugins/pull/18` after this PR replaces it. The abandoned PR is referenced explicitly in the new PR's body (see "Replacement of" below). ## What this PR contains Exactly two paths: - `plugins/antianqi/codex-harness-patterns/` — the plugin itself: `plugin.json` + `LICENSE` + `README.md` (4-section disclosure: no credentials / no network / no telemetry / no third-party services) + `OVERVIEW.md` + `PR-STATUS.md` + 23 Skills. - `test/codex-harness-patterns.test.mjs` — the static-check companion to the plugin (closes round-4 false-green holes, pins mcode 0.2.4 task contract, asserts minMcodeVersion). No other files change. The 30-commit PR MiniMax-AI#18 also touched `.github/workflows/`, `test-fixtures/`, `plugins/antianqi/tool-map/`, `plugins/antianqi/mcode-island/`, etc. — none of that is in this PR. ## Skill list (v1.0.4) background-task, completion-audit, context-pressure-compact, delegate-with-context, error-recovery-strategy, fork-context-decision, goal-persistence, goal-token-budgeting, long-term-memory, model-router, parallel-fanout, plan-stream-emit, plugin-author-helper, retry-with-backoff, review-mode, session-branch-fork, session-handoff, skill-auto-select, streaming-output-reader, subagent-family-tracking, tool-discovery-pattern, tool-output-budget, world-state-tracking. ## Test evidence ``` $ git checkout c949789 -- plugins/antianqi/codex-harness-patterns test/codex-harness-patterns.test.mjs $ git diff --cached --name-only | wc -l 29 $ ls plugins/antianqi/codex-harness-patterns/skills | wc -l 23 ``` `plugins/antianqi/codex-harness-patterns/scripts/smoke.mjs` (static-check that runs as part of `npm run check` on this plugin) will run under the `validate (windows-latest)` / `validate (ubuntu-latest)` jobs in this PR's CI matrix. ## Design compliance - **One Plugin, one commit, one branch, one PR.** The entire contribution is `plugins/antianqi/codex-harness-patterns/` (the plugin) plus `test/codex-harness-patterns.test.mjs` (its static-check companion). 29 files total. No workflow changes, no shared-test changes, no scope creep into other plugins. (The old PR MiniMax-AI#18 also touched `.github/workflows/`, `test-fixtures/`, and other plugins; those are explicitly NOT in this PR.) - **No credentials, no network, no telemetry, no third-party services.** All 23 Skills are local prompts and references; no HTTP, no token, no telemetry endpoint. - **README 4-section disclosure (v1.0.2, round-3):** `plugins/antianqi/codex-harness-patterns/README.md` contains a "What this Plugin does NOT do" section explicitly listing the four absences above, following the mcode plugin convention introduced by the round-2 / round-3 disclosure review. - **Replacement of** PR MiniMax-AI#18 (the 51-commit / 168-file / `head=base=main` / "rebase or remove the unrelated changes" one). The old PR's commit list and review history are preserved on the closed PR for audit.
hetaoBackend
left a comment
There was a problem hiding this comment.
Current head 5a4e3fc fixes the earlier unsupported plugin.json requirements field and its CI/CodeQL are green, but the package still documents unverified host behavior as executable guidance. skills/background-task/SKILL.md:70-84,213-233 invents PID/job-control behavior for bash(run_in_background=true) without a public MiniMax Code contract or test proving the returned handle has a PID; goal-persistence, long-term-memory, session-handoff, session-branch-fork, and subagent-family-tracking similarly prescribe host paths/parameters such as ~/.minimax/memory, ephemeral/no_collab/no_network, and .minimax/agents/ without verified APIs. The package also ships no assets/agent manifests despite fork-context-decision claiming assets/agents//agent.md. Please label unsupported sections as conceptual pseudocode or rewrite them against verified public APIs, remove invented PID/path/parameter claims, and add artifact-completeness/API-vocabulary tests. Local focused tests pass 162/162, but they do not validate those host contracts. [code]smith is SKIPPED.
…tual pseudocode (PR MiniMax-AI#33 round-12) Round-12 review from hetaoBackend (2026-09-09T01:04:18Z on head 5a4e3fc) flagged that the package documents unverified host behavior as executable guidance across 7 Skills, and asked for either rewriting against verified public APIs, or labelling unsupported sections as conceptual pseudocode, plus artifact-completeness / API-vocabulary tests. This commit is a v1.0.5 amendment. ## Round-12 defects addressed 1. background-task SKILL.md:70-84, 213-233 previously treated the `bash(run_in_background=true)` handle as a raw integer PID and passed it directly to `Stop-Process -Id 12345` / `kill 12345` in two prose passages and the shell-background example. mcode 0.2.4 does not document the `bash` job-handle shape, does not document a kill action, and does not document that the handle exposes a process id. Replaced every literal integer PID with a `<process-id>` placeholder, added a CONCEPTUAL PSEUDOCODE banner to the example, and rewrote the `compatibility` frontmatter field to state that the host's job-control API is the source of truth for the underlying process id. 2. long-term-memory SKILL.md:45-46 pinned a `~/.minimax/memory/` path that is not part of the mcode 0.2.4 contract, and the Phase-2 spawn block presented Codex-internal flags (`ephemeral`, `no_collab`, `no_network`, `no_memory_tool`, `features.disable(Collab / MemoryTool / Apps / Plugins)`, `approval_policy = Never`, `network_access = false`, `memories.generate_memories = false`, `use_memories = false`, `redact_secrets`) as if they were mcode surface. Wrapped the on-disk layout in a `<host-memory-root>/...` placeholder with an `illustrative; actual path is host-internal` annotation, added a CONCEPTUAL PSEUDOCODE (Codex reference, codex-rs/memories/) banner to the example block, and labelled every fenced code block that mentions a Codex-internal flag as conceptual pseudocode. The `compatibility` frontmatter field now states the conceptual-reference nature of the Skill. 3. session-handoff SKILL.md pinned `.minimax/handoff/...`, `.minimax/goal/...`, `.minimax/state/...`, `.minimax/family/...` paths as if they were mcode 0.2.4 contract paths. Wrapped every host-side on-disk path in a `<host-X-root>/...` placeholder and rewrote the `compatibility` frontmatter field. 4. session-branch-fork SKILL.md is a literal mirror of `codex-rs/thread-store/`: Rust types (ThreadHistoryMode / RolloutLineageSegment / ForkBoundary / PreparedFork / StoredModelContext / ReverseJsonlScanner / ModelContextScan), SQLite CAS on `rollout_path`, `writer_lock_coordinator`, lease helpers, `Op::SuspendTurnAndShutdown` / `Op::RecoverTurn`, `JOB_LEASE_SECONDS` / `GRACEFULL_INTERRUPTION_TIMEOUT_MS` / `MAX_ROLLOUT_LINE_BYTES`, `TaskKind::Regular` / `Feature::Collab` / `PermissionProfile::External` — none of which are on the mcode 0.2.4 public surface. Added a banner at the top of the Skill explicitly labelling every block as Codex-internal pseudocode, and rewrote the `compatibility` frontmatter field to state the conceptual-reference nature. 5. subagent-family-tracking SKILL.md pinned `.minimax/agents/<thread-id>/subagents.md` as an mcode contract path. Wrapped the path in a `<host-agents-root>/<thread-id>/subagents.md` placeholder and rewrote the `compatibility` frontmatter field. 6. goal-persistence SKILL.md pinned `.minimax/goal/<YYYY-MM-DD>-<short-id>.md` as an mcode contract path. Wrapped the path in a `<host-goal-root>/...` placeholder. 7. fork-context-decision SKILL.md:47-65 said the on-disk path of each sub-agent's manifest is host-internal. The package itself ships NO sub-agent manifests, but the phrasing did not make that explicit. Rewrote the paragraph to make it explicit that this plugin package ships no sub-agent manifests, that the `assets/agents/<name>/agent.md` layout referenced in the table is the mcode 0.2.4 host install's layout (verified on the maintainer's install; may vary across installs and platforms), and that the Skills rely on the `agent_name` parameter for sub-agent selection, NOT on any on-disk manifest lookup from this plugin's package. ## artifact-completeness / API-vocabulary tests added Six new test cases in test/codex-harness-patterns.test.mjs, each with a negative fixture and a Skill-body assertion: - literal-integer PIDs in `bash(...)` code blocks are detected - background-task SKILL.md bash(...) examples use `<process-id>` placeholder, not literal PIDs - literal `.minimax/<X>/...` host paths in Skill bodies are detected (negative fixture) - 5 Skills (`goal-persistence` / `long-term-memory` / `session-handoff` / `session-branch-fork` / `subagent-family-tracking`) use `<host-X-root>/...` placeholders, not literal `.minimax/<X>/...` paths - long-term-memory labels Codex-internal flags as conceptual pseudocode (negative fixture) - long-term-memory SKILL.md labels Codex-internal flags as conceptual pseudocode ## Validation test/codex-harness-patterns.test.mjs: 40 pass / 0 fail, duration ~100ms (node --test). The new tests are fail-closed: any of the round-12 defects above will turn at least one test red. The parser also gains a UTF-8 BOM tolerance (some Skills, e.g. session-handoff, were originally authored with a BOM and the previous frontmatter uniqueness check refused to read them). ## Test evidence (negative-injection audit) Each of the three round-12 contract violations was injected into the working tree, the suite was re-run, and the file was restored from a backup. The restore step is wrapped in a finally block so a script crash cannot leave the working tree polluted. Step 0 (baseline): tests=40 pass=40 fail=0 Step 1 (literal PID injection): tests=40 pass=39 fail=1 Step 1 (restored): tests=40 pass=40 fail=0 Step 2 (literal .minimax/... inj): tests=40 pass=39 fail=1 Step 2 (restored): tests=40 pass=40 fail=0 Step 3 (no conceptual tag inj): tests=40 pass=39 fail=1 Step 3 (restored): tests=40 pass=40 fail=0 ## Design compliance - Skill-only plugin (no mcp.json, no package.json, 0 npm dependencies). The plugin itself ships no agent manifests (see fork-context-decision paragraph 7 above). - README / SKILL.md disclosure: the four-section no-credentials / no-network / no-telemetry / no-third-party-services disclosure is unchanged from v1.0.4. - Cross-platform path resolution: every host-side on-disk path is now wrapped in a `<host-X-root>/...` placeholder; no literal `D:\` / `C:\` / `/Users/` / `/home/` strings in the round-12 affected Skills. - Atomic write: no new code in this commit performs file writes; the change is documentation + test only. - One commit / one branch / one plugin. The 7 Skills and the test file are committed together because the round-12 contract spans all 7 Skills; splitting them would leave intermediate states in which the new tests fire on half-amended Skills. - No unrelated hardening. The UTF-8 BOM tolerance added to the existing parseFrontmatter helper is the minimum parser-side guard required to make the new artifact-completeness / API-vocabulary tests compatible with the existing frontmatter uniqueness check on Skills that were originally authored with a BOM (e.g. session-handoff); the helper otherwise behaves identically.
|
PR #33 round-12 (v1.0.5 amendment, head Thanks for the round-12 review. This is a v1.0.5 amendment that Per-Skill changes (7 files, +484/-51 lines):
Tests (
Each negative fixture is followed by a skill-body assertion that Validation:
Disclosure unchanged: the four-section Re-requesting review. |
…L.md (CI validate) The round-12 commit 918e2b2 left a UTF-8 BOM (U+FEFF) at the very start of `plugins/antianqi/codex-harness-patterns/skills/ session-handoff/SKILL.md`. CI `npm run check` (which calls `node scripts/validate.mjs`, which calls `validateSkillText` in `scripts/lib/validation.mjs:71`) asserts that the file starts with the literal byte sequence `---\n`. The BOM is byte 0, so `text.startsWith('---\n')` is false and the validator reports "YAML frontmatter is required". This is the only file in the repository that triggers this assertion; 126 other SKILL.md files do not have a BOM. This commit drops the 3 BOM bytes; the body content is unchanged. ## Why the BOM was there in the first place The repository-side `scripts/lib/validation.mjs:38` rejects BOM-prefixed JSON (`assert(!text.startsWith('\uFEFF'), ...)`), so the validator policy is consistent: no BOM, anywhere. The file was originally authored with a BOM (it predates the round-12 round-1 amendment) and the round-12 commit re-serialized it through PowerShell 5.1 `Set-Content -Encoding UTF8`, which adds a BOM (`[System.Text.Encoding]::UTF8` in .NET Framework 4.x is BOM-encoded). The round-12 commit inherited the BOM, and CI failed. ## Validation `node scripts/validate.mjs` now reports: Validated 4 hosted Plugins and all examples. (node --test still reports 40 pass / 0 fail for `test/codex-harness-patterns.test.mjs`; the new parseFrontmatter BOM-tolerance added in 918e2b2 means test-side reading is unaffected.) ## Design compliance - One commit / one fix. This commit is a doc-only file-hygiene change, isolated from the round-12 contract changes in 918e2b2. - No content drift: the diff is `±1 line` (the BOM line), the body is byte-identical to the version in 918e2b2 minus the 3-byte BOM prefix. - Cross-platform: removing the BOM means the file now passes the validator on Linux CI (where `git checkout` already normalises line endings to LF) and on Windows dev boxes (where `git checkout` produces CRLF and the validator expected `---\n` regardless).
Replacement of PR #18
This is a fresh, self-contained PR for the
codex-harness-patternscontribution. It replaces the abandoned PR #18, which had become unreviewable (51 commits / 168 files / head=base=main, with codex-harness-patterns mixed into the same change as #5 tool-map, #17 mcode-island, and the proposal hooks - exactly the "remove the unrelated changes" shape that amszuidas' round-8 P2 (2026-09-07T03:17:13Z) asked to be cleaned up).What this PR contains
Two paths, 29 files, 6112 insertions:
plugins/antianqi/codex-harness-patterns/- the plugin itself:plugin.json+LICENSE+README.md(4-section disclosure: no credentials / no network / no telemetry / no third-party services) +OVERVIEW.md+PR-STATUS.md+ 23 Skills.test/codex-harness-patterns.test.mjs- the static-check companion (closes round-4 false-green holes, pins mcode 0.2.4 task contract, assertsminMcodeVersion).No other files change. The 30-commit history of the old PR #18 (
fb0b87dv0.3.0 origin throughc949789v1.0.4 final) is collapsed into one commit here; the round-by-round reasoning remains at #18 (closed, but readable).Skill list (v1.0.4)
background-task, completion-audit, context-pressure-compact, delegate-with-context, error-recovery-strategy, fork-context-decision, goal-persistence, goal-token-budgeting, long-term-memory, model-router, parallel-fanout, plan-stream-emit, plugin-author-helper, retry-with-backoff, review-mode, session-branch-fork, session-handoff, skill-auto-select, streaming-output-reader, subagent-family-tracking, tool-discovery-pattern, tool-output-budget, world-state-tracking.
What this PR does NOT contain (by design)
.github/workflows/changes. The old PR Add codex-harness-patterns plugin (v1.0.3 - 23 Skills covering complete agent lifecycle: planning, decomposition, sub-agent parallelism, execution, state tracking, tool discovery, skill/plugin authoring, memory persistence, session branching) #18 copiedtool-map-windows.ymlandmcode-island-windows.ymlto the main branch so the windows-latest CI could find them; those workflows belong to the windows-latest job of the tool-map / mcode-island PRs, not to this one.plugins/antianqi/tool-map/changes. Those are PR Add antianqi/tool-map v0.2.0: persistent cross-platform tool inventory #5.plugins/antianqi/mcode-island/changes. Those are PR mcode-island v0.3.0: add io.minimax.mcode Hooks extension (forward-compat with PR #20) #21.test-fixtures/changes. The twodrive-bundle-failure*.mjsfixtures in the old PR Add codex-harness-patterns plugin (v1.0.3 - 23 Skills covering complete agent lifecycle: planning, decomposition, sub-agent parallelism, execution, state tracking, tool discovery, skill/plugin authoring, memory persistence, session branching) #18 were part of PR Add antianqi/tool-map v0.2.0: persistent cross-platform tool inventory #5 tool-map test suite; not relevant here.validate / analyze / CodeQLmatrix without dispatch.Test evidence
The Plugin own
scripts/smoke.mjsstatic-check (no hardcoded host paths; no third-party services; frontmatter contract) will run as part ofnpm run checkon this PR CI matrix.Design compliance
Note on review history
This contribution went through 14 rounds of review on the abandoned PR #18 (
fb0b87dv0.3.0 toc949789v1.0.4). The reviewer feedback (round-3 README 4-section disclosure, round-4 false-green holes, round-5 self-contradictions + plugin.json minMcodeVersion + SKILL.md path claim, round-7 mcode 0.2.4 pin) is all incorporated into the single commit here. If a reviewer wants to see the round-by-round reasoning or the exact wording of any specific reviewer comment, those are on the closed PR #18 linked above.Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.