mirror of
https://github.com/obra/superpowers.git
synced 2026-06-11 05:09:05 +08:00
Antigravity (Google's `agy` CLI) installs the existing Superpowers plugin
directly:
agy plugin install https://github.com/obra/superpowers
agy imports the bundled skills and runs the plugin's SessionStart hook, so
using-superpowers bootstraps from the first message — verified on agy 1.0.3:
a fresh session given "Let's make a react todo list" auto-triggers the
brainstorming skill instead of writing code. agy discovers skills natively
and, having no Skill tool, loads them by reading SKILL.md with view_file.
No scaffold, installer, or generated context file is needed. This adds only:
- README.md: an Antigravity install section + Quickstart link
- skills/using-superpowers/SKILL.md: reference to the agy tool mapping
- skills/using-superpowers/references/antigravity-tools.md: action->tool
mapping for agy (view_file, write_to_file, invoke_subagent, manage_task,
and skill loading via view_file on SKILL.md)
- tests/antigravity/: structural test for the tool mapping, mirroring
tests/pi/
54 lines
2.5 KiB
Bash
Executable File
54 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Validate the Antigravity (agy) integration. agy installs the existing plugin
|
|
# directly (`agy plugin install <repo-url>`): it loads the bundled skills and
|
|
# runs the SessionStart hook for bootstrap, so there is no agy-specific scaffold
|
|
# to test. What IS agy-specific is the tool mapping — agy has no `Skill` tool and
|
|
# loads skills by reading SKILL.md with view_file — and SKILL.md pointing at it.
|
|
#
|
|
# Mirrors tests/pi/test-pi-extension.mjs's "tools reference documents
|
|
# harness-specific mappings" check. CI-safe: does not require `agy` installed.
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
|
|
|
|
MAPPING="$REPO_ROOT/skills/using-superpowers/references/antigravity-tools.md"
|
|
SKILL="$REPO_ROOT/skills/using-superpowers/SKILL.md"
|
|
|
|
fail() { echo "FAIL: $*" >&2; exit 1; }
|
|
|
|
echo "test-antigravity-tools: checking Antigravity tool mapping"
|
|
|
|
# --- Mapping exists ---------------------------------------------------------
|
|
[ -f "$MAPPING" ] || fail "tool mapping missing at $MAPPING"
|
|
|
|
# --- Skill-load mechanism: view_file on SKILL.md (IsSkillFile), no Skill tool -
|
|
grep -qiE "view_file" "$MAPPING" \
|
|
|| fail "mapping does not document view_file as the file/skill-read tool"
|
|
grep -qiE "SKILL\.md" "$MAPPING" \
|
|
|| fail "mapping does not document reading SKILL.md as the skill-load path"
|
|
grep -q "IsSkillFile" "$MAPPING" \
|
|
|| fail "mapping does not document setting IsSkillFile when loading a skill"
|
|
|
|
# --- Core action→tool mappings are documented -------------------------------
|
|
for tool in write_to_file replace_file_content run_command grep_search invoke_subagent; do
|
|
grep -q "$tool" "$MAPPING" \
|
|
|| fail "mapping does not document the '$tool' tool"
|
|
done
|
|
|
|
# --- Subagents use the built-in self/research types -------------------------
|
|
grep -q '`self`' "$MAPPING" \
|
|
|| fail "mapping does not document the built-in 'self' subagent type"
|
|
grep -q '`research`' "$MAPPING" \
|
|
|| fail "mapping does not document the built-in 'research' subagent type"
|
|
|
|
# --- Task tracking documents the 'task' artifact mechanism ------------------
|
|
grep -qE 'ArtifactType.*task|task. artifact' "$MAPPING" \
|
|
|| fail "mapping does not document task tracking as a 'task' artifact"
|
|
|
|
# --- SKILL.md Platform Adaptation links the mapping -------------------------
|
|
grep -q "antigravity-tools.md" "$SKILL" \
|
|
|| fail "SKILL.md Platform Adaptation does not reference antigravity-tools.md"
|
|
|
|
echo "PASS: Antigravity tool mapping valid (view_file skill-load, agy tools, SKILL.md link)"
|