Self-host repo as a Claude Code plugin#86
Conversation
There was a problem hiding this comment.
Code Review
This pull request adds support for self-hosting the repository as a Claude Code plugin, introducing plugin manifests, a new render command to generate Claude-native subagent markdown files from YAML sources, and corresponding validation checks in dotagents doctor. The review feedback is highly constructive, pointing out a critical issue where the rendering process could accidentally delete manually created markdown files (like a README.md) in the agents/ directory. The reviewer suggested checking for a generatedAgentMarker before deletion, with corresponding updates to the tests and doctor checks, as well as correcting a path in the CLI help text.
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.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: df1f62b62d
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a7937b399c
ℹ️ 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".
# Conflicts: # cmd/dotagents/mcp_test.go # dotagents.yaml # skills/dotagents/SKILL.md
…n instead of sync
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3c0d469085
ℹ️ 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".
| return report, nil | ||
| } | ||
|
|
||
| skills, external, err := claudeManagedSkillArtifacts(agent.SkillRoot, repoRoot, agentsSkillRoot) |
There was a problem hiding this comment.
Keep syncing configured plugin skills under plugin delivery
When delivery: plugin is used with enabled plugin skill entries targeted at Claude Code (for example the enabled browser, build-ios-apps, and frontend-design entries in dotagents.yaml), inspectAgents has already added those skills to the expected set, but this branch throws that set away and only reports repo-managed symlinks for pruning. Because applyAgentSync then skips all add/update work for plugin delivery, a fresh machine switched to plugin delivery never gets those configured plugin skill surfaces in ~/.claude/skills unless they happened to be left over from a previous sync; dotagents status will still consider it synced.
Useful? React with 👍 / 👎.
Publishes this repo as a self-hosted Claude Code plugin and single-plugin marketplace.
What ships
.claude-plugin/{plugin,marketplace.json}— install via/plugin marketplace add yourconscience/dotagentsthen/plugin install dotagents@yourconscience(private repo needs git auth)./dotagents:<skill>) + 4 subagent roles.dotagents renderwrites Claude agent files toagents/*.md(beside the.yamlsources);dotagents doctorplugin agentscheck fails on drift.Verified locally
claude 2.1.170:marketplace add+install→ details show Skills (15) + Agents (4).Two facts the local test pinned down:
agents/*.mdonly — no recursion, and theplugin.jsonagentsarray does not register them. Hence renders live inagents/, manifest carries noagentsfield.tools:frontmatter must stay comma-separated (per docs); agnix wrongly demands a YAML list, soagents/*.mdis excluded from agnix and validated by theplugin agentsdoctor check instead.Why Claude Code only (Codex dropped)
Codex
0.136.0plugins require a subdirectory plugin with a real, copiedskills/inside it — verified that a root plugin,source.path"./"/".", auto-detect, and symlinked skills all fail to register. Bundling the 31MB sharedskills/into a committed subdir would create a second source of truth, so Codex (like Droid, Amp, Hermes, Pi) consumes these skills viadotagents sync, not a plugin. README and thedotagents.yamlcatalog entry document this explicitly.Notes
dotagents syncshould not also install the plugin (every skill would appear twice).cua-driversymlink removal is a separate commit.Per-agent delivery mode (added)
agents[].delivery: sync | pluginindotagents.yaml(defaultsync;pluginvalid only forclaude-code). Withdelivery: plugin,dotagents syncskips and prunes claude-code's managed skill symlinks and generated agent files (marker-checked; never touches unmanaged files) while MCP/hooks keep syncing. Aclaude deliverydoctor/status check reads~/.claude/plugins/installed_plugins.jsonand enforces single-channel delivery: fail if plugin mode without the plugin installed or with leftover symlinks, warn if sync mode with the plugin installed.dotagents plugin add|removewraps the claude CLI install/uninstall, flips the mode via comment-preserving YAML edit, and prunes/restores. Implementation delegated to a local Codex agent; reviewed, tested (7 new tests), and verified here.