Skip to content

Replace x-sim codex plugin with whole-repo codex plugin, clarify install flow#88

Merged
yourconscience merged 5 commits into
mainfrom
plugin-cleanup
Jun 11, 2026
Merged

Replace x-sim codex plugin with whole-repo codex plugin, clarify install flow#88
yourconscience merged 5 commits into
mainfrom
plugin-cleanup

Conversation

@yourconscience

Copy link
Copy Markdown
Owner

What

  1. Remove plugins/x-sim/. It was a hand-maintained copied mirror of the canonical skills/x-sim skill, packaged as a single-skill Codex plugin. It was not referenced by dotagents.yaml and not installed anywhere; x-sim stays a plain skill synced like every other.

  2. Publish the whole repo as a Codex plugin. New .agents/plugins/marketplace.json (marketplace yourconscience, matching the Claude marketplace name) plus plugins/dotagents/ with .codex-plugin/plugin.json and a rendered skills/ copy. Codex requires real copies (symlinked skills are silently dropped at install - re-verified against codex 0.136.0), so the copy is generated from git-tracked skill files (~328KB) by dotagents render, which already renders the Claude plugin agents. A new codex plugin doctor check fails when the rendered copy drifts, preserving single-source-of-truth.

  3. Clarify the install flow. README Install section now leads with a pick-one table: Claude plugin, Codex plugin, or CLI + dotagents setup for the full managed surface on any supported harness. The plugin section documents both harnesses, the no-double-delivery rule, and that Hermes/Droid/Pi have no plugin system and install via setup/sync. The stale "Why Claude Code only" rationale (31MB) is replaced - tracked skill files are only a few hundred KB.

  4. New dotagents-codex catalog entry (enabled:false, review-only) documenting the self-publication, mirroring the existing dotagents Claude entry.

Verification

  • New tests: render mirrors tracked files / skips gitignored / prunes stale; doctor check detects drift pre-render, passes post-render, fails post-edit. Full suite passes.
  • End-to-end: cloned the branch, codex plugin marketplace add + codex plugin add dotagents@yourconscience installed all 16 skills as real files (x-sim included); test install removed afterwards.
  • dotagents doctor: codex plugin check passes (50 rendered skill files fresh).

🤖 Generated with Claude Code

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds support for publishing the repository as a Codex plugin, mirroring the canonical skills directory into the plugin structure, and adding a doctor check to detect drift. It also introduces several new skills (such as cmux, jobs, and x-sim) and helper tools. The review feedback highlights a potential bug in the skill rendering logic where deleted files might not be pruned, a hardcoded path in the job pipeline visualization script that ignores the KNOWLEDGE_DIR environment variable, and a performance issue in the x-sim tool due to repeated regex compilation.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread cmd/dotagents/codex_plugin.go Outdated
Comment on lines +60 to +69
expected[filepath.FromSlash(sub)] = true
src := filepath.Join(repoRoot, filepath.FromSlash(rel))
dest := filepath.Join(destRoot, filepath.FromSlash(sub))
data, err := os.ReadFile(src)
if err != nil {
if errors.Is(err, fs.ErrNotExist) {
continue // tracked but deleted in worktree
}
return fmt.Errorf("read %s: %w", src, err)
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

In renderCodexPluginSkills, expected[filepath.FromSlash(sub)] = true is set before attempting to read the source file. If the file is tracked but has been deleted in the worktree, os.ReadFile(src) will fail with fs.ErrNotExist and the loop will continue. However, because expected was already populated, the stale file in the destination directory will not be pruned during the subsequent cleanup phase.\n\nTo fix this, only mark the file as expected after it has been successfully read.

\t\tsrc := filepath.Join(repoRoot, filepath.FromSlash(rel))\n\t\tdest := filepath.Join(destRoot, filepath.FromSlash(sub))\n\t\tdata, err := os.ReadFile(src)\n\t\tif err != nil {\n\t\t\tif errors.Is(err, fs.ErrNotExist) {\n\t\t\t\tcontinue // tracked but deleted in worktree\n\t\t\t}\n\t\t\treturn fmt.Errorf(\"read %s: %w\", src, err)\n\t\t}\n\t\texpected[filepath.FromSlash(sub)] = true

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in b51ed1b: expected is now marked only after a successful read, so copies of tracked-but-deleted files get pruned. Added TestRenderCodexPluginSkillsPrunesTrackedButDeletedFiles covering this.

Comment thread plugins/dotagents/skills/jobs/tools/view-pipeline.py
Comment thread plugins/dotagents/skills/x-sim/tools/x-sim/main.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ac758797e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -0,0 +1,24 @@
{
"name": "dotagents",
"version": "0.1.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Bump the Codex plugin version on updates

For this marketplace-installed plugin, keeping the manifest at a permanent 0.1.0 means users can stay on stale rendered skills after future repo updates: Codex stores installed plugin caches by <marketplace>/<plugin>/<version> and its documented reinstall/cachebuster flow expects the manifest version to change before codex plugin add refreshes local contents. This conflicts with the README’s Codex update path (marketplace upgrade, then reinstall), because changes under plugins/dotagents/skills/ will not necessarily replace the active cache unless this version/cachebuster is updated as part of render or release.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed in b51ed1b by dropping the fixed version entirely, mirroring the Claude plugin manifest. Verified against codex 0.136.0 that a version-less plugin caches under .../dotagents/local and that plugin remove + add refreshes the cached copy after marketplace upgrade. README update flow adjusted accordingly.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ea1330c5ef

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread plugins/dotagents/skills/pr-triage/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8d36dfc928

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +71 to +73
if err == nil && bytes.Equal(current, data) {
unchanged++
continue

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve rendered file modes when contents match

When a skill file changes only its executable bit (for example a hook or bundled tool is chmodded +x with identical bytes), this early continue treats the rendered Codex copy as fresh and never reaches the os.Stat/WriteFile path that applies info.Mode().Perm(). The new doctor check also compares only bytes, so dotagents render and CI can both pass while plugins/dotagents/skills/... keeps a stale non-executable mode, breaking plugin-installed hooks/scripts on the next install.

Useful? React with 👍 / 👎.

@yourconscience yourconscience merged commit 2b01af5 into main Jun 11, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant