Files
jamditis__claude-skills-jou…/plans/codex-compatibility-matrix.md
Joe Amditis c80769867c docs: record security-toolkit Codex preflight limits (#298)
* docs: distinguish security skill selection from runtime support

Record the project-copy resource gap and blocked read evidence without mapping hotpatch.

wake-20260904T1905-776be2

* Fix security preflight evidence guards
2026-09-07 10:45:04 -04:00

40 KiB

Codex compatibility matrix

  • Status: phase-two runtime pilots; journalism-core, visual-explainer, document-design, and portable okf-wiki scaffolding have scoped passes
  • Last evidence update: September 4, 2026
  • Architecture: Codex compatibility architecture decision

Historical runtime results stay tied to their tested snapshots. The v2.8.0 refresh updates current installation guidance without adding a native Codex marketplace or plugin manifests. Every older version recorded below is the version that was actually exercised. Those values are deliberately not bumped, because this file records evidence and the rule under Tool baseline is to never rewrite an older result as if it ran on a newer version.

The release catalog validation confirms the repository still follows the tested legacy package and Agent Skills routes. It does not convert the older runtime pilots into v2.8.0 runtime evidence.

September 2026 structure refresh

  • Marketplace 2.8.0 contains 13 Claude packages and 64 shared skills.
  • Codex can install the 15 nested journalism-core skills through the verified legacy-compatible package route.
  • The Agent Skills route supports root and nested skill layouts without converting Claude commands, agents, or hooks.
  • No native .agents/plugins/marketplace.json or .codex-plugin/plugin.json manifests are published.

How to read this matrix

This file records what has been proved for each package. Installation alone is not a support claim. A package becomes tested for Codex only after its install, discovery, activation, non-activation, resource, runtime, and no-Claude-environment gates pass.

Status labels:

  • Baseline installed: a clean client installed the package or skill, but runtime behavior is not yet proved.
  • Runtime pilot passed: paired client behavior passed for the named install paths. Other install paths and package-wide support gates remain unclaimed unless their evidence says otherwise.
  • Candidate: the shared skills appear portable from static review, but the runtime gates are pending.
  • Adapter required: static review found a platform-bound path, instruction, layout, or generated artifact.
  • Standards blocked: shared frontmatter fails the Agent Skills validator.
  • Claude-only surface: the component has no approved Codex mapping.
  • Not assessed: no runtime claim has been tested.

Tool baseline

Tool Version or revision Role
Codex structure refresh 0.147.0 Legacy package and Agent Skills route verification on August 15, 2026
Claude marketplace, current structure 2.8.0 Current catalog and version alignment; historical runtime results below remain snapshot-specific
Repository b0617649515d24ebfcd51f15bceb1d76b03db668 Architecture commit used as the phase-one worktree base
Repository release verification 9eef57629edbaa19bf47ec35296acebdd7b4ab1f July 23 post-merge master head used for the phase-one release evidence
Repository visual-explainer pilot f6a4b84dd2e9feafc6c2bf067f873e9301a083c2 July 23 master head installed for the V-ex-1 runtime evidence
Repository okf-wiki pilot cabb43bc2515c6c30a3d0839909f786e7afbcba8 July 23 master head installed for the Okf-1 no-Claude runtime evidence
Repository Document design lock pilot d49ed1022a012269a237f7749b0e47c099e7add6 July 23 master head used for the D-lock-1 update target
Repository video-toolkit preflight bc681b79a3eaba846a494582368501e0b4d75b1b August 28 source revision used for the scoped video-toolkit preflight
Repository document-design pilot baseline 902cc881b5f9c8a18053d1f60dcc456851db3ee4 September 3 public baseline used to prove the missing-resource failure before testing the candidate adapter
Repository security-toolkit preflight 9e8e419a916f1f26c57ebe71acc9152c95b5117d September 4 source revision used for the scoped security-toolkit preflight
Claude Code 2.1.215; 2.1.218 Phase-one marketplace validation, then the post-merge clean journalism-core install
Codex CLI 0.145.0 Legacy-compatible marketplace and clean journalism-core install
Codex video-toolkit preflight 0.149.1 Scoped video-toolkit activation and dependency preflight on August 28, 2026
Codex document-design pilot 0.153.0 Scoped project-standards activation, non-trigger, installed-resource, output, and rendering checks on September 3, 2026
Codex security-toolkit preflight 0.153.2 Scoped project-copy selection and resource-read observations on September 4, 2026
Claude document-design regression 2.1.239 Candidate --plugin-dir argument-delivery check on September 3, 2026
skills CLI document-design pilot 1.5.23 Public baseline and candidate project-copy installs on September 3, 2026
skills CLI 1.5.19; 1.5.20 Phase-one standards discovery, then post-merge project and user install canaries
Agent Skills validator agentskills/agentskills@38a2ff82958afee88dadf4831509e6f7e9d8ef4e Shared frontmatter contract
Agent Skills validator, scheduled Default-branch head (38a2ff82958afee88dadf4831509e6f7e9d8ef4e on July 23, 2026) Upstream drift signal
Claude marketplace 2.3.3 Catalog version after the phase-one frontmatter release bumps
Node.js on Legion 22.17.0 Local test and matrix tooling
Node.js on LOJ 22.23.1 Repository verification

Update this table whenever newer client behavior is used as evidence. Do not rewrite an older result as if it ran on the newer version.

Baseline evidence

I-phase-1: package inventory

Environment: the authoritative LOJ worktree at the phase-one branch tip.

Result: the Claude marketplace contained 12 packages and the repository contained 60 root or nested skills. Package component counts, versions, and included or excluded surfaces were checked against the marketplace, child manifests, and discovered SKILL.md paths. The package matrix below records the inventory. Its linked validator and repository results provide the structural proof for packages that contain shared skills.

C-base-1: clean Claude package install

Environment: disposable empty CLAUDE_CONFIG_DIR on Windows.

$env:CLAUDE_CONFIG_DIR = '<empty-temp-directory>'
claude plugin validate '<checkout>'
claude plugin marketplace add '<checkout>'
claude plugin install journalism-core@claude-skills-journalism --scope user
claude plugin list

Result: marketplace validation passed; journalism-core 1.2.0 installed and enabled; 14 installed SKILL.md files were present. Activation and output were not tested in this evidence item.

C-phase-1: repeatable Claude install canary

Environment: a temporary CLAUDE_CONFIG_DIR created and removed by the Node canary. The canary uses the local checkout as the marketplace source.

npm run canary:journalism-core:claude

Result on Claude Code 2.1.215: the current marketplace passed strict validation; journalism-core 1.2.0 installed and enabled; the installed skill names matched the expected 14-name set and all 17 installed files matched the source hashes. The canary runs on relevant pull requests, weekly, and on manual dispatch against the current Claude Code release.

K-base-1: clean Codex package install through the legacy path

Environment: disposable empty CODEX_HOME on Windows.

$env:CODEX_HOME = '<empty-temp-directory>'
codex plugin marketplace add jamditis/claude-skills-journalism --json
codex plugin add journalism-core@claude-skills-journalism --json

Result: Codex read .claude-plugin/marketplace.json, used the package-level Claude manifest fallback, installed journalism-core 1.2.0, and copied all 14 nested skills. No .codex-plugin/plugin.json was present. Root skills, Claude commands, Claude agents, and Claude hooks were not mapped by this test.

K-phase-1: repeatable Codex legacy-package canary

Environment: a temporary CODEX_HOME created and removed by the Node canary. The canary uses the local checkout as the marketplace source and refuses a native Codex marketplace or journalism-core plugin manifest.

npm run canary:journalism-core:codex

Result on Codex 0.145.0: journalism-core 1.2.0 installed and enabled through the Claude marketplace and package manifests; the installed skill names matched the expected 14-name set and all 17 installed files matched the source hashes. The same workflow runs against the current Codex release to warn when this fallback changes.

S-base-1: standards-based Codex skill install

Environment: disposable empty project directory on Windows.

$env:DISABLE_TELEMETRY = '1'
npx -y skills@1.5.19 add jamditis/claude-skills-journalism `
  --skill fact-check-workflow --agent codex --copy -y

Result: the CLI found 60 skills and installed fact-check-workflow under .agents/skills. Its lock record preserved the GitHub source, path, and content hash. Activation and mixed-install behavior were not tested.

S-phase-1: full journalism-core standards canary

Environment: a disposable project directory with the local journalism-core directory as the standards source.

npm run canary:journalism-core:codex-skills

Result on skills CLI 1.5.19: all 14 skills and 17 files were copied to .agents/skills, their hashes matched the source, and skills-lock.json contained the same 14 names with content hashes. A second manual check used the public GitHub journalism-core subdirectory URL and produced the same installed set. The scheduled workflow exercises the current skills CLI release.

S-global-phase-1: user-level journalism-core standards canary

Environment: a disposable home directory and a separate disposable project directory. The canary sets both HOME and USERPROFILE so the install cannot write to the runner's real user directory.

npm run canary:journalism-core:codex-skills-global

Result on skills CLI 1.5.20: all 14 skills and 17 files were copied to ~/.agents/skills, their hashes matched the source, and no file was written to the disposable project's .agents/skills directory. This is Codex's documented user-level discovery path. The scheduled workflow exercises the current skills CLI release.

V-base-1: Agent Skills validation

Environment: disposable checkout at the source baseline. Windows runs set PYTHONUTF8=1 because the pinned validator otherwise follows the legacy system code page.

$env:PYTHONUTF8 = '1'
uvx --from "git+https://github.com/agentskills/agentskills.git@38a2ff82958afee88dadf4831509e6f7e9d8ef4e#subdirectory=skills-ref" `
  skills-ref validate '<skill-directory>'

Result: 55 of 60 skills passed. document-design failed its name, directory, and version checks. The four video skills failed because argument-hint is not an Agent Skills field.

V-phase-1: repaired standards baseline

npm run validate:agent-skills

Result: all 60 skills passed the pinned official validator. The wrapper finds root and nested skills, skips installed copies, sets PYTHONUTF8=1, and reports each skill result. Linux pull-request CI runs this command.

V-upstream-1: current upstream validator canary

npm run validate:agent-skills:upstream

Result on July 21, 2026: all 60 skills passed the current Agent Skills default-branch validator. Its head was still the pinned revision above. A separate weekly and manually dispatched job follows the current upstream head; pull-request validation stays pinned so upstream changes cannot alter a PR gate without review.

F-phase-1: affected Claude package regression

Environment: disposable Claude marketplace install plus read-only --plugin-dir invocations with built-in tools disabled.

Result: Claude validated the marketplace, installed pdf-playground 1.3.2 and video-toolkit 1.0.3, and found one and four skills respectively. Explicit document-design and video-download invocations received their supplied arguments after the nonstandard argument-hint fields were removed. No files or external tool requests were allowed during the invocations. The affected package versions were patch-bumped because Claude uses the declared plugin version to resolve cached installs.

Cv-base-1: Codex creator-helper comparison

python "$env:USERPROFILE\.codex\skills\.system\skill-creator\scripts\quick_validate.py" `
  '<skill-directory>'

Result: 54 of 60 passed. The helper rejected the five failures above and also rejected the standards-valid compatibility field in visual-explainer. This extra failure is an expected client/spec difference, not permission to weaken the shared standard.

R-base-1: repository checks

Environment: LOJ clean worktree after npm ci --ignore-scripts.

npm test
npm run check:docs-css

Result: 93 of 93 tests passed and 49 page-specific Tailwind stylesheets were current after the architecture record was added.

R-phase-1: phase-one repository checks

Environment: authoritative LOJ worktree after the phase-one files were synced with LF line endings.

npm test
npm run check:docs-css

Result: 114 of 114 tests passed on Linux and all 49 page-specific Tailwind stylesheets were current. The added adversarial fixtures reject linked install roots, linked skill resources, and Windows shell parsing of client arguments. The earlier Windows staging run passed 109 tests with the one NTFS-impossible colon fixture skipped. Actionlint 1.7.12 accepted both changed workflow files, git diff --check passed, and strict Claude marketplace validation passed on Claude Code 2.1.215. The Windows CSS freshness check also verified all 49 stylesheets after line endings were normalized for comparison.

P-release-1: post-merge master verification

Environment: public master at 9eef57629edbaa19bf47ec35296acebdd7b4ab1f on July 23, 2026.

The manually dispatched Client compatibility canary run 30026490472 passed all five jobs from master:

  • Claude Code 2.1.218 installed journalism-core 1.2.0 with the expected 14 skills and 17 source-matching files.
  • Codex CLI 0.145.0 installed the same package, skill set, and files through the legacy-compatible marketplace path.
  • skills CLI 1.5.20 installed the expected 14 skills and 17 files through both the project and user standards paths.
  • The current upstream Agent Skills validator passed all 60 skills. Its default-branch revision remained 38a2ff82958afee88dadf4831509e6f7e9d8ef4e.

A separate empty CLAUDE_CONFIG_DIR cloned the public repository and confirmed marketplace 2.3.3 exposes installable pdf-playground 1.3.2 and video-toolkit 1.0.3. Both installed and were enabled. A fresh skills@1.5.20 public-repository discovery found exactly 60 source skills. The disposable configurations were not reused as runtime evidence.

J-release-1: paired journalism-core runtime pilot

Environment: public master at 9eef57629edbaa19bf47ec35296acebdd7b4ab1f installed into separate disposable Claude and Codex profiles on July 23, 2026. The paired runtime record contains the exact scope, prompts, selection evidence, output summaries, resource hash, harness adjustments, verification, and cleanup.

Result: Claude Code 2.1.218 passed explicit activation through the installed namespaced command, implicit source-verification selection, unrelated non-trigger behavior, and installed photo-metadata/reference.md resolution. Codex CLI 0.145.0 passed the same behavior through a skills CLI 1.5.20 project standards install. The legacy-compatible Codex package path and user-level standards path remain install-only evidence.

V-ex-release-1: visual-explainer root-skill runtime pilot

Environment: public master at f6a4b84dd2e9feafc6c2bf067f873e9301a083c2 installed into a disposable Codex project on July 23, 2026. The runtime record contains the exact scope, install command, file-manifest digest, prompt, installed resource reads, output digest, render review, validator difference, legacy omission, harness behavior, and cleanup.

Result: Codex CLI 0.145.0 discovered $visual-explainer after skills CLI 1.5.20 copied the 24-file root skill into .agents/skills. V-ex-1 read the installed references/css-patterns.md and templates/architecture.html, then produced the requested four-stage newsroom architecture HTML. Desktop, mobile, light, and dark checks found no overflow or runtime errors; the automated axe checks found no WCAG 2.2 A or AA violations.

The legacy-compatible Codex plugin route cached the source root SKILL.md but did not register it as a root skill. Codex generated three untested command wrappers; they remain outside this root-skill runtime claim. The official validator accepted the standards copy, while the creator helper produced only the already-allowlisted compatibility-field difference.

Okf-release-1: okf-wiki no-Claude runtime pilot

Environment: public master at cabb43bc2515c6c30a3d0839909f786e7afbcba8 installed into a disposable Codex project with a separate empty home on July 23, 2026. The runtime record contains the exact isolation, source and output manifests, accepted prompt, commands, generated-file inventory, validation, trust boundary, adapter classification, uninstall behavior, and cleanup.

Result: Codex CLI 0.145.0 discovered $okf-wiki after skills CLI 1.5.20 copied the 114-file root skill into .agents/skills. The skill read its installed instructions, spec, scaffolder, validator, and hook templates; invoked the scaffolder once; created exactly nine portable/project files and three Claude adapter files; and reported that exact inventory. Codex passed the scaffolder's built-in validation and one direct portable validation, then the harness repeated validation after the session. No Claude configuration directory was available outside the generated output, no interactive prompt appeared, and no hook executed.

The .claude/ settings and hooks are recorded as a Claude Code adapter, not Codex project behavior. Removing the installed skill left the generated project intact and valid, while the empty lock entry, Claude adapter directory, and OKF user data remained independently removable.

V-tool-preflight-1: video-toolkit Codex preflight

Environment: source revision bc681b79a3eaba846a494582368501e0b4d75b1b installed into a disposable Codex project on Aug. 28, 2026. The preflight record contains the installed-source hashes, exact dependency state, accepted runtime results, resource measurements, sandbox limit, Claude argument check, and cleanup.

Observed result: Codex CLI 0.149.1 discovered and explicitly activated all four video-toolkit 1.0.6 skills through the project standards path. Each skill checked its own local prerequisites and stopped without installing or downloading. The CPU transcript-of-record path and no-GPU behavior were selected correctly, the unrelated fixture did not activate a video skill, and an embedded transcript instruction did not authorize a command. Real media, output paths, browser behavior, hosted APIs, and media-parser sandboxing remain untested. The manual session outputs were not preserved as repository artifacts, so this is an observed preflight rather than a repeatable or passed runtime fixture.

D-runtime-1: document-design Codex project-standards pilot

Environment: public baseline revision 902cc881b5f9c8a18053d1f60dcc456851db3ee4 and the candidate adapter tested in a disposable project on Sept. 3, 2026. The runtime record contains the exact install path, failing baseline, installed manifest digest, activation and non-trigger results, resource reads, output hash, render checks, Claude argument regression, cleanup, and excluded surfaces.

Result: skills CLI 1.5.23 copied the public document-design skill, but its template, brand, and control paths were missing because they lived outside the installed skill root. The explicit Codex fixture activated and refused to write output. The candidate adapter carries exact skill-local copies guarded against drift and removes the shared instruction's plugin-root assumption. After reinstall, Codex 0.153.0 read all five required installed resources and created the accepted one-page HTML output. The unrelated fixture did not activate a skill. Claude Code 2.1.239 still received explicit skill arguments. This is a scoped project-standards skill claim, not support for user-level or legacy Codex installation, Claude commands, preview lifecycle, or hooks.

D-lock-release-1: Document design standards lock migration

Environment: Codex CLI 0.145.0 with a disposable skills CLI 1.5.20 project on July 23, 2026. The migration record contains the historical fixture, exact source commits, hashes, failure, migration boundary, two update passes, verification, and cleanup.

Result: skills CLI 1.5.20 exited 1 when its project updater passed the historical Document design lock key back to the current repository. The explicit repository migration renamed only the exact jamditis/claude-skills-journalism and pdf-playground/skills/document-design/SKILL.md identity. It left the installed directory and complete record intact, rejected ambiguous inputs, and did not run automatically.

After migration, two consecutive skills CLI updates exited 0. Exactly one document-design lock identity remained; its repository source, skill path, installed directory, frontmatter, and content hash matched. The second update left the lock and installed-tree digests unchanged. This is local lock migration evidence, not public catalog history or a mixed-install claim.

Wdp-structure-1: web-design-picker repository preflight

Environment: Windows 11 on Legion with Python 3.13, Node.js 22.17.0, Claude Code 2.1.251, and a disposable Python virtual environment on September 1, 2026.

Result: the root skill passed the pinned Agent Skills validator, the repository catalog validator, strict Claude plugin validation, and its own scaffold, build, static validation, distinctness, anti-slop, packaging, and browser QA self-test. The self-test used Pillow, resvg-cli, Playwright, and Chromium. No Codex activation, non-activation, resource-read, runtime, or no-Claude-environment fixture ran, so this is repository structure evidence rather than a Codex support claim.

S-tool-preflight-1: security-toolkit project-copy preflight

Environment: Codex CLI 0.153.2 on Linux, using manual copies of the four skill directories in a disposable project's .agents/skills, on September 4, 2026. The current user profile and host guidance remained in scope; this was not a clean-profile or no-Claude-environment gate.

The preflight record separates reported activation from installed-resource reads and security enforcement. Explicit selection was observed, but nested filesystem reads were reported blocked by Bubblewrap. A separate local copy probe confirmed that the supply-chain skill's package-level scan script and synthetic fixture are absent from its standalone skill directory. Hotpatch remains unmapped and Claude-only; no runtime pass or package-wide support claim follows from these observations.

Package matrix

Package Version and components Current classification Included and excluded scope Evidence Next proof
autocontext 1.1.0; no skills; five commands; one agent; six hook files Claude-only surface Include nothing in the Codex claim. Commands, curator agent, hook lifecycle, persisted data, and compatibility environment variables need a separate design. I-phase-1 Define state, lifecycle, authority, and uninstall contracts in a separate accepted decision.
dev-toolkit 1.1.1; 11 nested skills Candidate with adapter review Instruction-led skills may be shared. Exclude Claude tool vocabulary, CLAUDE.md updates, hook wiring, and Claude subagent syntax until tested. V-phase-1 covers structure Classify each skill; add explicit trigger and non-trigger fixtures for the portable subset.
journalism-core 1.2.0; 14 nested skills Runtime pilot passed on the Claude package and Codex project-standards paths Include the 14 shared skills. No commands, agents, or hooks are part of this package. The legacy-compatible Codex package and user-level standards paths remain install-only. J-release-1, C-phase-1, K-phase-1, S-phase-1, S-global-phase-1, V-phase-1 Add a no-Claude-environment gate and scheduled runtime regression before a broader package support claim.
okf-wiki 0.6.1; one root skill; scripts and generated Claude settings Pre-set portable runtime pilot passed; instruction and Claude-output adapters remain Include the tested Okf-1 path: standards discovery, installed spec and scaffolder reads, explicit project-relative scaffolding, validation, examples, and the generated OKF bundle. Exclude the unadapted general instructions that name AskUserQuestion and ${CLAUDE_SKILL_DIR}. The generated .claude/settings.json and hook scripts are an inert Claude Code adapter, not Codex configuration or lifecycle behavior. Okf-release-1, V-phase-1, and R-phase-1 Port and test general onboarding and skill-root resolution; add scheduled Okf-1 coverage against current Codex; test mixed-client hook trust separately before any cross-client lifecycle claim.
pdf-design 1.1.0; one root skill Adapter required Shared design guidance and assets are candidates. Hard-coded ~/.claude and host-specific browser paths are excluded from a Codex claim. V-phase-1 covers structure Add a no-Claude path-resolution fixture before editing paths.
pdf-playground 1.3.6; one nested skill; eight commands; one hook file Runtime pilot passed on the Codex project-standards path; Claude-only surfaces unclaimed Include $document-design, its self-contained relative resources, and HTML generation through the tested project copy. Its historical project lock identity has an explicit migration. Exclude the Codex user-level and legacy-package paths, all eight Claude commands, preview lifecycle, and hook behavior. D-runtime-1, D-lock-release-1, V-phase-1, and F-phase-1 Add a no-Claude scheduled runtime regression and test user-level installation separately before broadening the claim.
project-templates-toolkit 1.0.3; three nested skills Adapter required; paired contract fixtures added project-retrospective and template-selector remain shared candidates. project-memory still generates only CLAUDE.md; paired contract fixtures now pin Claude CLAUDE.md and Codex AGENTS.md merge, nested-scope, non-trigger, output, and cleanup behavior. V-phase-1 covers structure; scripts/project-memory-fixtures.test.mjs proves the current shared output is insufficient and guards both client contracts Run both fixtures against installed clients, then add the smallest adapter that makes the Codex fixture pass without changing Claude output.
research-toolkit 1.1.0; six nested skills Candidate Include shared instruction-led skills. Network and external-content trust boundaries stay unchanged. V-phase-1 covers structure Add representative activation, non-activation, network-boundary, and resource checks.
security-toolkit 1.2.3; four nested skills; one command Candidate with observed preflight and a resource-packaging gap; Claude-only command The four shared skills remain candidates. Project-copy selection does not prove resource access or security enforcement. /security-toolkit:hotpatch and its sandbox lifecycle remain Claude-only. S-tool-preflight-1, V-phase-1, R-phase-1 Resolve standalone supply-chain resource packaging; rerun with working sandbox reads and boundary traces. Do not map hotpatch without a separately accepted authority, sandbox, cooldown, failure, and cleanup design.
superjawn 1.0.0; 14 nested skills Not assessed No package-wide claim. Each skill needs review for Claude tool names, namespacing, agent dispatch, and parallel-agent assumptions. V-phase-1 covers structure only Evaluate one skill at a time with client-specific tool traces. Do not bulk-port.
video-toolkit 1.0.6; four nested skills; external media runtimes Observed manual Codex preflight; durable harness and media execution pending Include explicit activation, dependency refusal, CPU and no-GPU selection, unrelated non-trigger behavior, and the tested untrusted-transcript boundary as manual observations only. Exclude a repeatable runtime claim, real media, output paths, browser fallback, hosted APIs, and media-parser sandboxing. V-tool-preflight-1, V-phase-1, and F-phase-1 Add a repeatable harness with sanitized raw results, then run pinned local media through transcript, frame, provenance, dashboard, browser, sandbox, resource-cap, and cleanup fixtures.
web-design-picker 1.0.0; one root skill; 16 Python scripts; optional browser and media runtimes Not assessed for Codex Include no Codex runtime claim. Repository structure, plugin metadata, deterministic scaffold, build, validation, and packaging are locally checked; Codex activation and runtime behavior remain untested. Wdp-structure-1 Run paired activation, non-activation, installed-resource, disposable-project, and no-Claude-environment fixtures before making a Codex support claim.
visual-explainer 0.7.1; one root skill; eight source commands Runtime pilot passed on the Codex project-standards path; command surfaces unclaimed Include the root skill and its relative resources only through .agents/skills. The legacy route omits root-skill registration. Its three client-generated command wrappers and all eight source commands remain outside this claim. V-ex-release-1, V-phase-1, and Cv-base-1 Add a no-Claude-environment gate and scheduled runtime regression before a broader package claim; test command wrappers only in a separately scoped issue.

Pilot fixtures

These fixtures define the minimum behavior to test. Store raw outputs or CI links beside the matrix result when each one runs.

J-core-1: explicit verification workflow

Prompt:

Use the installed fact-check workflow to build a verification plan for an unsigned screenshot claiming that a city budget doubled in 2025. Treat the claim as unverified and do not invent sources.

Expected result: the intended skill is selected; the response separates the claim, evidence needed, primary sources, corroboration, status, and uncertainty; no unsupported factual verdict is produced.

J-core-2: implicit verification trigger

Prompt:

I received an unsigned screenshot with a public-spending claim. What should I verify before publication?

Expected result: a relevant journalism-core verification skill activates without an explicit skill name and follows its sourcing and uncertainty rules.

J-core-3: non-trigger

Prompt:

Calculate an 18% tip on a $42 meal.

Expected result: no journalism-core skill activates.

V-ex-1: root-skill layout

Install visual-explainer through the standards path, then ask for a small HTML architecture diagram from supplied text.

Expected result: the root skill is discovered, reads its relative references and assets from the installed copy, and produces the requested file. The legacy package path is expected not to expose this root skill until evidence says otherwise.

The exact accepted prompt and semantic output verifier live in scripts/visual-explainer-runtime-pilot.mjs. Run them with:

CODEX_HOME='<disposable-codex-home>' \
  npm run pilot:visual-explainer -- codex v-ex-1 \
  --project '<disposable-project>'

Okf-1: no-Claude scaffold

Run the installed okf-wiki skill against an empty temporary project with no Claude configuration directory available.

Expected result: portable OKF files validate and no missing ~/.claude path causes the run to fail. Generated Claude settings are recorded as a Claude adapter rather than silently treated as Codex configuration.

The exact accepted prompt, empty-Claude preconditions, generated-file inventory, and portable validator live in scripts/okf-wiki-runtime-pilot.mjs. Run them with:

CODEX_HOME='<disposable-home>/.codex' \
  npm run pilot:okf-wiki -- codex okf-1 \
  --project '<disposable-project>' \
  --client-home '<disposable-home>'

Expected files are nine portable/project files and three .claude/ adapter files. No hook runs under Codex. The standards-installed skill, generated Claude adapter, and generated OKF project have separate removal lifecycles.

Known differences and allowlist

Difference Scope Policy Removal condition
Codex quick_validate.py rejects compatibility visual-explainer/SKILL.md on Codex 0.145.0 Allow only this validator difference while the official validator and installed Codex runtime accept the skill. Codex aligns its helper, the installed runtime rejects the skill, or the field is no longer needed.
Official validator uses the Windows legacy code page by default Windows validation at validator commit 38a2ff8 Set PYTHONUTF8=1; run the required CI gate on Ubuntu. Upstream reads SKILL.md as UTF-8 explicitly.
Legacy Codex plugin install omits root skills and Claude-only components Root-skill packages, commands, agents, and hooks Do not claim those components through the legacy package path. Prefer standards installation for skills. A documented and tested Codex adapter exposes the component.
Codex does not deduplicate same-name skills across install roots .agents/skills, $CODEX_HOME/skills, legacy plugin cache, and desktop import Recommend .agents/skills through npx skills for new Codex users and one Codex path per skill. Do not recommend the bundled installer or mixed paths during phase one. Duplicate identity, precedence, update, uninstall, recovery, and drift tests pass for the paths being combined.

Do not add an expected difference merely to make CI green. Each entry needs a standards or runtime citation, the narrow affected path, and a condition for removal.

Public catalog watch

On July 21, 2026, skills.sh listed this repository with 56 indexed skills and 13.6K aggregate installs while the checkout contained 60 skills. The four video skills were absent, matching their pre-fix validator failures. document-design appeared in the aggregate but its detail page did not show first-seen or install data. Other aggregate and detail counts also differed, so these numbers are a dated catalog snapshot rather than a stable user total.

On July 23, 2026, a cache-revalidated public fetch listed 62 catalog rows while the same public repository produced exactly 60 skills through skills@1.5.20. Comparing the two name sets found all 60 current skills plus only the deleted animated-sprite-gen and nano-banana-image-gen rows. This is a catalog deletion discrepancy rather than a missing-source problem. It is tracked in repository issue #219 and the existing upstream stale-snapshot report vercel-labs/skills#1189.

The existing document-design URL now serves the normalized lowercase identity and current skill content, but the catalog shows 2 installs and “First Seen: Today.” Its earlier catalog history was therefore not preserved across the frontmatter-name repair. Recovery requires a catalog-side identity/metrics alias or restoration for the same repository, path, and slug; another source rename would create more identity churn and is not a recovery. Track that catalog-side request with #219 and the upstream stale-snapshot report above.

D-lock-release-1 separately proves the local Document design lock migration and prevents two lock identities from remaining for one installed directory. That project migration neither restores nor changes public catalog metrics.

Mixed-install cases still pending

Desktop import has not been exercised for this repository. Before recommending more than one Codex installation path in the same profile, test:

  1. import into a clean Codex profile;
  2. import when the same skill exists under .agents/skills;
  3. import when the containing plugin is installed from the legacy marketplace;
  4. update one copy while another remains stale;
  5. uninstall one path and confirm discovery, recovery, and lock data.

Record duplicate identity, precedence, activation, update, uninstall, recovery, and drift results here. Until then, documentation must recommend one Codex installation path per skill or package.

dev-toolkit per-skill portability

The dev-toolkit row above is package-level. The per-skill breakdown lives in dev-toolkit-portability-matrix.md, generated from the repository by scripts/dev-toolkit-portability.mjs and guarded against drift by scripts/dev-toolkit-portability.test.mjs. It discovers 12 skills (not the stale 11 named above): 9 shared, 3 adapter-required (claude-md-updater, one-way-door, test-first-bugs), 0 Claude-only. one-way-door stays adapter-required for its automatic AskUserQuestion approval hooks, whose failure and approval semantics an adapter must reproduce, not drop.