Add Claude Fable 5 (model: fable) as the tier above opus across the
adapter framework - native passthrough in Claude Code, mapped to each
harness's top model elsewhere. No agents are promoted yet; tier criteria
and cost guidance are documented in docs/agents.md and docs/authoring.md.
Refresh MODEL_ALIASES against current harness catalogs (June 2026):
- Codex: gpt-5 family -> gpt-5.5 / gpt-5.4-mini (per Codex model docs)
- Copilot: GPT-5 stand-ins -> native Claude models (claude-opus-4.8,
claude-sonnet-4.6, claude-haiku-4.5) now that Copilot CLI serves them
- OpenCode: opus -> anthropic/claude-opus-4-8; haiku dated pin ->
latest-tracking anthropic/claude-haiku-4-5
- Gemini: intentionally stays on GA gemini-2.5-* (3.x is preview-gated)
- plugin-eval judge opus tier -> claude-opus-4-8
Gates: generate-all (no committed drift), validate STRICT=1, garden,
test (442 passed), smoke-test all green.
PR #558 updated the headline totals but left trailing references at
83/191/155 across README, AGENTS.md, GEMINI.md, ARCHITECTURE.md, and
docs/*. Sync them all to the true counts (82 local + 2 external = 84
plugins, 192 agents, 156 skills).
Also runs make generate-all to bring the committed harness registries in
sync — adds the social-publishing entries to .agents/ and .cursor-plugin/
(which the original PR could not regenerate) and fixes the stale count in
the generated cursor manifests.
Left round-trip-results.md (point-in-time CLI verification results) and
plugin-eval.md (grade threshold) unchanged.
The Code Quality job runs ruff from `plugins/plugin-eval/`, so that project's
`[tool.ruff]` (line-length 100) governs the `../../tools/` sources too — there
is no repo-root ruff config. The previous reformat was run from the repo root,
where ruff fell back to its 88-col default, so CI disagreed. Reformat from the
plugin-eval cwd to match CI exactly.
Review feedback:
- codex.py: Codex marketplace entries now conform to the openai/codex
core-plugins schema — source {source: "local", path}, policy
{installation, authentication}, and category (was missing required
fields; flagged P1). Top-level trimmed to {name, plugins}.
- codex.py: interface.shortDescription cuts on a word boundary + ellipsis
instead of a mid-word [:120] slice in committed .codex-plugin manifests.
- cursor.py: top-level .cursor-plugin/plugin.json displayName is now the
short "Claude Code Workflows" instead of the long marketplace description.
Tooling (local drives CI):
- Bump ruff 0.15.14 -> 0.15.15 and ty 0.0.39 -> 0.0.40 in plugin-eval's
uv.lock so CI installs the same versions we run locally, and reformat the
tools/ + plugin-eval sources to ruff 0.15.15 (fixes the failing
ruff format --check; the lock-hash change also busts CI's stale cache).
make validate STRICT=1 clean / garden 0 errors / 442 tests pass; regeneration
remains drift-free.
Add lean, native plugin-install entry points so each harness's own plugin
manager can install this marketplace (mirroring obra/superpowers) — committing
only small JSON registries, not duplicated skill/agent content trees.
- Codex: committed marketplace registry (.agents/plugins/marketplace.json) +
per-plugin manifests (plugins/*/.codex-plugin/plugin.json). Entries point at
source ./plugins/<name>; Codex reads SKILL.md directly. Transformed
.codex/skills|agents stay gitignored.
- Cursor: commit the existing .cursor-plugin/ marketplace + .cursor/rules/
(these already point at source plugins/).
- Gemini: gemini-extension.json already committed (contextFileName: AGENTS.md);
transformed trees stay gitignored (install via clone + make generate).
- OpenCode: unchanged — install via `make install-opencode` (transformed tree
stays gitignored).
- CLAUDE.md is now a symlink to AGENTS.md; Claude-Code addenda moved to
docs/harnesses.md.
- CI: new step fails if `make generate-all` drifts from the committed registries.
Net new committed: ~720 KB of manifests (no skill/agent duplication). Adds
round-trip tests for the new registries + the symlink. Docs updated across
README, docs/harnesses.md, ARCHITECTURE.md, CONTRIBUTING.md, GEMINI.md,
docs/authoring.md, and the PR template.
Copilot does not support custom slash commands via `.copilot/commands/` —
that path was a project invention with no official discovery mechanism.
Plugin commands emitted there were invisible to Copilot CLI and VS Code.
Instead, emit each plugin command as a Copilot skill SKILL.md with:
- user-invocable: true (appears in VS Code / menu)
- disable-model-invocation: true (not auto-loaded, only on demand)
- hyphenated name `<plugin>-<command>` per VS Code Agent Skills spec
Legacy `.copilot/commands/` emission retained for backward compat.
Closes the loop on commands-not-working-in-Copilot-CLI investigation.
- Commands now symlink to ~/.copilot/comprehensive-review/commands/ instead of ~/.copilot/commands/
- Adapter emits command files to .copilot/commands/<plugin>/ directory structure
- Installer symlinks each command directory to ~/.copilot/<plugin>/commands/
- This matches Copilot CLI's discovery path for plugin commands
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The 'make install-copilot' command now automatically clears Copilot's
cache directories (pkg and marketplace-cache) after symlinking artifacts,
ensuring new agents and skills are immediately discoverable without
requiring manual cache clearing.
This fixes the issue where installing agents like comprehensive-review
required a separate manual cache clear step before they appeared in
Copilot's agent discovery.
- Add _clear_copilot_cache() to remove pkg/ and marketplace-cache/
- Update _print_report() to show cache clearing confirmation
- Integrate cache clearing into main() install flow only
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- CopilotAdapter now writes to ~/.copilot/agents/ and ~/.copilot/skills/
- Updated generate.py to pass ~/.copilot/ as output_root for copilot
- Added copilot stale artifact detection to doc_gardener.py
- Updated validate_generated.py to check ~/.copilot/agents/ (with fallback)
- Removed old copilot gitignore entries and cleaned up stale artifacts
- No install step needed — make generate HARNESS=copilot writes directly
- Keep generation local by default (.copilot)
- Revert opt-in --commit behavior that wrote to .github/agents
- Retain validator adjustments scoped to .copilot
- Clean branch focuses only on adapter ergonomics and validator behavior
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add --commit flag to tools/generate.py and default .copilot output_root
- Validate .github/agents in tools/validate_generated.py
- Makefile wiring for COMMIT=1
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Added 1 agent (social-publisher) and 1 skill (social-publishing),
so counts go from 191→192 agents and 155→156 skills.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>