Combat
SkillAI & modelsInitiates a combat encounter for testing. Calls the combatinitiate edge function to start combat in the sector of a given character/ship.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Combat skill
About this capability
Gradient Bang is an online multiplayer universe where you explore, trade, battle, and collaborate with other players and with LLMs
What this skill tells your AI
The instructions your AI receives, as published by pipecat-ai/gradient-bang in .claude/skills/combat/SKILL.md and read by ahel’s review.
Initiates a combat encounter for testing. Calls the combat_initiate edge function to start combat in the sector of a given character/ship.
Parameters
- target (required): Either a character name (e.g.
JOETRADER) or a ship UUID to initiate combat from that ship's character.
If not provided, ask the user for a character name or ship ID.
Steps
1. Source environment variables
set -a && source .env.supabase && set +a
2. Resolve the character and ship
If target is a character name:
Look up the character by name:
curl -s "${SUPABASE_URL}/rest/v1/characters?name=eq.<character_name>&select=character_id,name,current_ship_id,corporation_id" \
-H "apikey: ${SUPABASE_SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer ${SUPABASE_SERVICE_ROLE_KEY}"
If no result, report that the character was not found and stop. Save character_id and current_ship_id.
Then look up the ship to get the sector:
curl -s "${SUPABASE_URL}/rest/v1/ship_instances?ship_id=eq.<current_ship_id>&select=ship_id,ship_type,ship_name,current_sector,current_fighters,current_shields" \
-H "apikey: ${SUPABASE_SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer ${SUPABASE_SERVICE_ROLE_KEY}"
If target is a ship UUID:
Look up the ship and its associated character:
curl -s "${SUPABASE_URL}/rest/v1/ship_instances?ship_id=eq.<ship_id>&destroyed_at=is.null&select=ship_id,ship_type,ship_name,current_sector,owner_type,owner_character_id,owner_corporation_id" \
-H "apikey: ${SUPABASE_SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer ${SUPABASE_SERVICE_ROLE_KEY}"
For owner_type = "character", use owner_character_id as the character_id.
For owner_type = "corporation", the pseudo-character has character_id = ship_id.
Then look up the character:
curl -s "${SUPABASE_URL}/rest/v1/characters?character_id=eq.<character_id>&select=character_id,name,current_ship_id" \
-H "apikey: ${SUPABASE_SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer ${SUPABASE_SERVICE_ROLE_KEY}"
Verify the character exists and current_ship_id matches the ship. If not, report the mismatch and stop.
3. Show sector context
Before initiating, show what's in the sector so the user knows what opponents are present:
curl -s "${SUPABASE_URL}/rest/v1/ship_instances?current_sector=eq.<sector>&destroyed_at=is.null&in_hyperspace=eq.false&select=ship_id,ship_type,ship_name,owner_type,owner_character_id,current_fighters,current_shields,is_escape_pod" \
-H "apikey: ${SUPABASE_SERVICE_ROLE_KEY}" \
-H "Authorization: Bearer ${SUPABASE_SERVICE_ROLE_KEY}"
Display a summary table of ships in the sector (name, type, fighters, shields). Highlight the initiating ship.
4. Call combat_initiate
curl -s -X POST "${SUPABASE_URL}/functions/v1/combat_initiate" \
-H "Content-Type: application/json" \
-H "x-api-token: ${EDGE_API_TOKEN}" \
-d '{
"character_id": "<character_id>",
"admin_override": true
}'
If EDGE_API_TOKEN is not set in the environment, omit the x-api-token header (local dev without JWT verification allows all requests).
5. Report the result
Show the user:
- Initiating character name and ship
- Sector where combat started
- Combat ID from the response
- Number of ships in sector (potential participants)
- Any error messages if combat initiation failed (e.g., no opponents, already in combat, federation space)
Important notes
- This calls the real
combat_initiateedge function, which creates a full combat encounter with deadlines and round timers - Combat will auto-resolve via
combat_tickif no actions are submitted before the deadline - The initiating character must have fighters > 0 and not be in hyperspace or federation space
- There must be at least one targetable opponent in the sector (not same corp, not an escape pod, has fighters)
- If combat already exists in the sector, the character joins the existing encounter
- Edge functions must be running:
npx supabase functions serve --workdir deployment --no-verify-jwt --env-file .env.supabase
Signals
- GitHub stars
- 419
- Forks
- 67
- Last commit
- Jun 2026
Advanced
- Catalog kind
- skill
- Gateway key
combat- Source
- github.com/pipecat-ai/gradient-bang