feat(install): re-add Antigravity as a wiring target
Antigravity discovers skills via a path-entries JSON (~/.gemini/config/skills.json), not a symlink directory. One entry points at $AGENTS_DIR — the same managed, surfaces-filtered, collision-resolved directory Crush/OpenCode/Pi already read — so Antigravity sees exactly the same skill set as every other harness, for free. Requires jq; every other target in this script stays dependency-free on purpose, so wire_antigravity skips with a warning (not a hard failure) if jq is missing. Merges into skills.json rather than overwriting it: the file is documented as user-editable (json_configs.md — e.g. a personal skills dir), so a hand-added entry must survive a re-run. Was previously removed as "unused" (mathias/skills#41 — Antigravity usage picked back up). Mistral Vibe stays removed. Closes #41 Bump-Type: minor Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+47
-2
@@ -17,8 +17,8 @@
|
||||
# /plugin install skills@mathias
|
||||
#
|
||||
# That path carries the hooks and MCP server definitions too, which symlinks
|
||||
# cannot. This script covers the harnesses with no plugin system: Crush, Pi
|
||||
# and OpenCode.
|
||||
# cannot. This script covers the harnesses with no plugin system: Crush, Pi,
|
||||
# OpenCode, and Antigravity.
|
||||
#
|
||||
# Wiring model — one managed directory, one link per harness:
|
||||
#
|
||||
@@ -27,6 +27,13 @@
|
||||
# ~/.config/crush/skills -> ~/.agents/skills
|
||||
# ~/.config/opencode/skills -> ~/.agents/skills
|
||||
#
|
||||
# Antigravity has no symlink-directory discovery — it reads a path-entries
|
||||
# JSON instead (~/.gemini/config/skills.json:
|
||||
# {"entries":[{"path":"..."}]}). One entry points at ~/.agents/skills, so it
|
||||
# sees exactly the same surfaces-filtered, collision-resolved set every other
|
||||
# harness does. Requires jq; skipped with a warning if jq is unavailable —
|
||||
# every other target in this script stays dependency-free on purpose.
|
||||
#
|
||||
# ~/.agents/skills was itself a link to this checkout until #27. That encoded
|
||||
# an assumption nobody had stated — that this checkout is the ONLY source of
|
||||
# skills on the host — and on flamingo the only way to install this library
|
||||
@@ -53,6 +60,7 @@ CHECKOUT_DIR="${SKILLS_CHECKOUT_DIR:-$HOME/.local/share/skills}"
|
||||
AGENTS_DIR="${AGENTS_SKILLS_DIR:-$HOME/.agents/skills}"
|
||||
CRUSH_DIR="${CRUSH_SKILLS_DIR:-$HOME/.config/crush/skills}"
|
||||
OPENCODE_DIR="${OPENCODE_SKILLS_DIR:-$HOME/.config/opencode/skills}"
|
||||
ANTIGRAVITY_SKILLS_JSON="${ANTIGRAVITY_SKILLS_JSON:-$HOME/.gemini/config/skills.json}"
|
||||
EXTRA_SOURCES="${SKILLS_EXTRA_SOURCES:-}"
|
||||
# Recorded beside the managed directory rather than inside it: a stray file in
|
||||
# there would look like a skill to every harness reading the dir.
|
||||
@@ -213,6 +221,42 @@ link_dir() {
|
||||
log "linked $link → $target"
|
||||
}
|
||||
|
||||
# wire_antigravity — register $AGENTS_DIR in Antigravity's skills.json.
|
||||
# Merges rather than overwrites: skills.json is a documented user-editable
|
||||
# config (json_configs.md), so a hand-added entry (e.g. a personal skills
|
||||
# dir) must survive a re-run untouched.
|
||||
wire_antigravity() {
|
||||
if ! command -v jq >/dev/null 2>&1; then
|
||||
log "Antigravity: jq not found — skipping (needed to merge $ANTIGRAVITY_SKILLS_JSON safely)"
|
||||
return
|
||||
fi
|
||||
|
||||
local existing already updated
|
||||
mkdir -p "$(dirname "$ANTIGRAVITY_SKILLS_JSON")"
|
||||
|
||||
if [ -s "$ANTIGRAVITY_SKILLS_JSON" ]; then
|
||||
existing="$(cat "$ANTIGRAVITY_SKILLS_JSON")"
|
||||
else
|
||||
existing='{}'
|
||||
fi
|
||||
|
||||
already="$(printf '%s' "$existing" | jq --arg p "$AGENTS_DIR" \
|
||||
'[.entries // [] | .[] | select(.path == $p)] | length' 2>/dev/null)" || {
|
||||
log "Antigravity: $ANTIGRAVITY_SKILLS_JSON is not valid JSON — leaving it untouched"
|
||||
return 1
|
||||
}
|
||||
|
||||
if [ "$already" -gt 0 ]; then
|
||||
log "Antigravity: $AGENTS_DIR already registered in $ANTIGRAVITY_SKILLS_JSON"
|
||||
return
|
||||
fi
|
||||
|
||||
updated="$(printf '%s' "$existing" | jq --arg p "$AGENTS_DIR" \
|
||||
'.entries = ((.entries // []) + [{path: $p}])')"
|
||||
printf '%s\n' "$updated" > "$ANTIGRAVITY_SKILLS_JSON"
|
||||
log "Antigravity: registered $AGENTS_DIR in $ANTIGRAVITY_SKILLS_JSON"
|
||||
}
|
||||
|
||||
main() {
|
||||
ensure_checkout
|
||||
|
||||
@@ -224,6 +268,7 @@ main() {
|
||||
|
||||
link_dir "$CRUSH_DIR" "$AGENTS_DIR"
|
||||
link_dir "$OPENCODE_DIR" "$AGENTS_DIR"
|
||||
wire_antigravity
|
||||
|
||||
log "done — $LINKED_COUNT skill(s) linked from $(sources | wc -l | tr -d ' ') source(s), ref=$REF"
|
||||
log "Claude Code: install the plugin instead — /plugin marketplace add $REPO_URL"
|
||||
|
||||
Reference in New Issue
Block a user