Full re-pair of a stale airc mesh — `teardown --flush` + reconnect using the saved invite string. Use when your sends silently fail or `resume` reports stale auth.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill repair --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Repair?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-repair)More formats (shields.io, HTML) on the badges page.
---
name: airc:repair
description: Full re-pair of a stale airc mesh — `teardown --flush` + reconnect using the saved invite string. Use when your sends silently fail or `resume` reports stale auth.
user-invocable: true
allowed-tools: Bash, Monitor
argument-hint: "[invite-string]"
---
# airc repair
The one-command recovery for the most common airc failure: your saved pairing is stale (SSH key rotated, host regenerated identity, reinstall broke things, you accidentally paired with the wrong host because of a port collision). Runs the full nuclear repair sequence so you don't have to remember the flag names or hunt for the invite string.
## Execute
If `$ARGUMENTS` contains an invite string (looks like `name@user@host[:port]#<base64>`), use it directly. Otherwise reconstruct from the saved config before wiping.
### Step 1 — extract the saved invite before wiping
```bash
# Grab the pieces the host wrote into config during the last pair.
HOST_NAME=$(python3 -c "import json; print(json.load(open('$(airc debug-scope)/config.json')).get('host_name',''))" 2>/dev/null)
HOST_TARGET=$(python3 -c "import json; print(json.load(open('$(airc debug-scope)/config.json')).get('host_target',''))" 2>/dev/null)
HOST_PORT=$(python3 -c "import json; print(json.load(open('$(airc debug-scope)/config.json')).get('host_port',7547))" 2>/dev/null)
HOST_PUB=$(python3 -c "import json; print(json.load(open('$(airc debug-scope)/config.json')).get('host_ssh_pub',''))" 2>/dev/null)
PUB_B64=$(printf '%s\n' "$HOST_PUB" | base64 | tr -d '\n')
if [ -n "$HOST_NAME" ] && [ -n "$HOST_TARGET" ] && [ -n "$HOST_PUB" ]; then
SUFFIX=""
[ "$HOST_PORT" != "7547" ] && SUFFIX=":$HOST_PORT"
INVITE="${HOST_NAME}@${HOST_TARGET}${SUFFIX}#${PUB_B64}"
fi
```
If `$ARGUMENTS` was passed, override `$INVITE` with it — the user may be repairing to a new host.
### Step 2 — teardown --flush
```bash
airc teardown --flush
```
Wipes identity, peer records, saved pairing, messages. State is gone.
### Step 3 — reconnect with the invite
```
Monitor(persistent=true, command="airc connect $INVITE")
```
Fresh handshake, fresh identity keys get pushed to the host's authorized_keys, clean pair.
## When to use
- `airc join` (resume) exited with `Resume aborted — re-pair required`.
- `airc send` exited with `Authentication failure — re-pair required`.
- You re-installed airc and your mesh stopped working.
- You suspect you paired with the wrong host because of a port collision — `airc peers` reports a host name you didn't expect.
- "Nothing works and I don't know why" — repair is the cheap nuclear option.
## Failure modes
- No invite reconstructable + none passed — config is too stale (missing `host_ssh_pub` or `host_target`). User needs a fresh invite from the host. Ask them to get `/invite` output from the host and pass it as the argument.
- Repair succeeds but still no messages — you may genuinely be on the wrong host. Run `airc peers` and confirm the host name matches who you meant to pair with. If not, ask the host to paste their `/invite` output and try `/repair <that-invite>`.
## Notes
- This is intentionally destructive. Identity keys, peer records, message mirror — all gone. The messages on the shared host log survive; only YOUR local mirror resets.
- Safer than guessing which flag to `airc teardown` with. Pre-repair-skill, users reliably typed `airc teardown` (no flush) + `airc join` (resume) and silently stayed broken. Using this skill removes the footgun.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!