feat: wire Crush + Antigravity harnesses
Some checks failed
release / tag (push) Has been cancelled

Phase 2 of mathias/skills extraction. Adds two new per-tool wirers
alongside Claude Code:

- Crush — ~/.config/crush/skills/<name>/SKILL.md (charmbracelet/crush,
  successor to opencode-ai/opencode which is archived)
- Antigravity — ~/.gemini/antigravity/skills/<name>/SKILL.md (Google
  VS Code extension). Our SKILL.md frontmatter (name + description)
  is already in the format Antigravity expects — no manifest
  translation step needed.

Both wirers added to Taskfile.yml (install:crush + install:antigravity)
and install.sh (wire_crush + wire_antigravity). The aggregate `install`
target now calls all four targets (claude:global, claude:repo, crush,
antigravity). Idempotent symlinks, same shape as the Claude Code wirer.

Per-host env overrides documented in README: SKILLS_REF for tag pinning,
CRUSH_SKILLS_DIR + ANTIGRAVITY_SKILLS_DIR for non-default paths.

Skipped:
- opencode (opencode-ai/opencode): archived, succeeded by Crush; its
  Custom Commands surface is user prompt templates, not system skills
- gitea-resident agents: consume via per-repo .claude/skills or brain
  MCP, no special target needed

Bump-Type: minor
This commit is contained in:
Mathias
2026-05-24 20:51:06 +02:00
parent d6a71e370e
commit b1ff71a7fd
3 changed files with 103 additions and 10 deletions

View File

@@ -44,15 +44,37 @@ changes. CI tags every change as a `vX.Y.Z` release (see
## Wired harnesses
Phase 1 (current) wires **Claude Code** only:
| Harness | Target path | Notes |
|---|---|---|
| **Claude Code (global)** | `~/.claude/skills/<name>` | Visible in every Claude Code session on the host. |
| **Claude Code (per-repo)** | `<repo>/.claude/skills/<name>` | Created when `install` is invoked inside a git repo (not the skills repo itself). Gitignored globally via `**/.claude/skills/`. |
| **Crush** | `~/.config/crush/skills/<name>` | Charmbracelet Crush — successor to `opencode-ai/opencode` (archived). |
| **Antigravity** | `~/.gemini/antigravity/skills/<name>` | Google Antigravity (VS Code extension). Our `SKILL.md` frontmatter (`name` + `description`) is already in the format Antigravity expects, so symlinks suffice — no manifest translation. |
- Global: `~/.claude/skills/<name>``~/.local/share/skills/<name>`
- Per-repo: `<repo>/.claude/skills/<name>` (when invoked from a git
repo) → same
### Not wired (and why)
Phase 2 will add: Crush, opencode, antigravity, gitea-resident agents
(cobalt-dingo, agentsquad). See `mathias/infra` issue `infra#62`
addendum for the roadmap.
- **opencode** (`opencode-ai/opencode`): archive notice; succeeded by Crush.
Its only "skill"-like surface — Custom Commands at `~/.config/opencode/commands/`
is for user-facing prompt templates, not system-level instructions.
Misaligned with how we use skills. Skipped.
- **gitea-resident agents** (cobalt-dingo, agentsquad): they consume
skills via their containing project's `.claude/skills` directory
(populated by the per-repo wirer when run from the host), or via the
brain MCP. No special target needed.
### Per-host env-var overrides
Each target path can be overridden by setting the matching env var before
running `install.sh`:
| Env var | Default |
|---|---|
| `SKILLS_REPO_URL` | `https://gitea.d-ma.be/mathias/skills.git` |
| `SKILLS_REF` | `main` (set to e.g. `v0.1.0` to pin a release) |
| `SKILLS_CHECKOUT_DIR` | `$HOME/.local/share/skills` |
| `CLAUDE_SKILLS_DIR` | `$HOME/.claude/skills` |
| `CRUSH_SKILLS_DIR` | `$HOME/.config/crush/skills` |
| `ANTIGRAVITY_SKILLS_DIR` | `$HOME/.gemini/antigravity/skills` |
## Versioning