feat(dispatch): add gemini runtime adapter + declare gemini on skills - #94
feat(dispatch): add gemini runtime adapter + declare gemini on skills#94chitcommit wants to merge 6 commits into
Conversation
Adds gemini as a first-class dispatch projection runtime so canonical
skills project to Gemini alongside claude-code and codex.
- adapters/gemini-skill.sh: canonical -> Gemini SKILL.md (strict PyYAML
round-trip, idempotent, mirrors codex-skill.sh; merges
runtime_overrides.gemini).
- lib/resolve_output.py: register ("gemini","agent"|"skill") ->
plugins/{plugin}/gemini-skills/{name}/SKILL.md.
- canonical/skills/*.md: declare `- gemini` on every skill already
declaring `- codex` (39 skills), then dispatch.sh sync generated the
gemini-skills projections.
Local CI (validate-chittymarket.yml) all green: dispatch sync idempotent,
audit 158 cells 0 drift 0 orphans, lint ok, tests 86/86, overlay
coverage/schema/provenance ok, marketplace.json unchanged.
Caveats for review: new projection surface — capability-registry-audit
not run this session (ChittyMCP intermittent); Gemini install/consumer
step (extension bundle assembly from gemini-skills/) is out of scope here.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Important Review skippedToo many files! This PR contains 145 files, which is 45 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (145)
You can disable this status message by setting the Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Separated review of PR #94 found audit.py's ORPHAN_PROJ scan and pre-commit-drift.sh both hardcode the generated-runtime dir list and omitted gemini-skills — so a gemini projection file with no canonical backing could never be flagged (green-because-blind). - lib/audit.py: add gemini-skills to the ORPHAN_PROJ os.walk set. - pre-commit-drift.sh: extend the codex-skills case to also match plugins/*/gemini-skills/*/SKILL.md (identical name extraction). Verified: planting a bogus plugins/*/gemini-skills/*/SKILL.md now makes `dispatch.sh audit` fail with ORPHAN_PROJ; removing it returns rc=0. Follow-up: derive the generated-dir set from _MAP so new runtimes can't reopen this hole. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the hardcoded generated-dir tuple in audit.py with a set derived from resolve_output._MAP (excluding claude-code shared dirs). Closes the bug class the adversarial review of #94 found: a new runtime added to _MAP can no longer silently escape the ORPHAN_PROJ scan. Verified: audit clean, and a planted gemini-skills orphan is still caught (rc=1) via the derived set. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ky79TDgdyZ8eDVsBcBkHSG
What
Adds gemini as a dispatch projection runtime (parity with codex for skills).
Why
Operator directive: OpenClaw and Gemini/agy are canonical projection targets. OpenClaw already had an agent adapter + canonical declarations; Gemini had no adapter at all — declaring
geminiwithout one fails the CI dispatch-audit (never-synced runtime). This builds the missing adapter.Changes
adapters/gemini-skill.sh— canonical → GeminiSKILL.md, strict PyYAML round-trip, idempotent (mirrorscodex-skill.sh, mergesruntime_overrides.gemini).lib/resolve_output.py— register("gemini","agent"|"skill")→plugins/{plugin}/gemini-skills/{name}/SKILL.md.canonical/skills/*.md—- geminiadded to the 39 skills that declare- codex;dispatch.sh syncgenerated the 39gemini-skills/**/SKILL.md.Verification (local, all green)
dispatch syncidempotent ·dispatch audit158 cells / 0 drift / 0 orphans · lint ok · tests 86/86 · overlay coverage 106/106 · schema ok · provenance ok ·marketplace.jsonunchanged.Out of scope / follow-ups
gemini-skills/into a~/.gemini/extensions/chittymarket/bundle) — not built here.capability-registry-auditwas not run (ChittyMCP intermittent); flagging for reviewer.🤖 Generated with Claude Code