src/skills/machines/SKILL.md
Fleet machines — discover nodes from contacts, ping to prove alive, create local shortcuts. Use when user says "machines", "nodes", "fleet", or wants to see/reach machines in the fleet.
npx skillsauth add Soul-Brews-Studio/oracle-skills-cli machinesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Discover. Ping. Create shortcuts. All from contacts.json.
/machines # Discover nodes from contacts, ping all
/machines ping # Same — ping all, show who's alive
/machines list # List known nodes (no ping)
/machines setup # Ping → confirm → create /shortcuts for alive nodes
/machines <node> # Ping one node, show details
date "+🕐 %H:%M %Z (%A %d %B %Y)" && ORACLE_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
if [ -n "$ORACLE_ROOT" ] && [ -f "$ORACLE_ROOT/CLAUDE.md" ] && { [ -d "$ORACLE_ROOT/ψ" ] || [ -L "$ORACLE_ROOT/ψ" ]; }; then
PSI="$ORACLE_ROOT/ψ"
else
ORACLE_ROOT="$(pwd)"
PSI="$ORACLE_ROOT/ψ"
fi
Read $PSI/contacts.json and group contacts by node. The node is extracted from the maw field (everything before : in maw hey node:agent):
cat "$PSI/contacts.json" 2>/dev/null | python3 -c "
import json, sys
data = json.load(sys.stdin)
nodes = {}
for name, info in data.get('contacts', {}).items():
maw = info.get('maw', name)
# Extract node: 'white:mawjs' → 'white', 'boonkeeper' → 'local'
node = maw.split(':')[0] if ':' in maw else 'local'
if node == name:
node = 'local'
if node not in nodes:
nodes[node] = []
nodes[node].append({'name': name, 'notes': info.get('notes', '')})
for node in sorted(nodes):
agents = ', '.join(a['name'] for a in nodes[node])
print(f'{node} ({len(nodes[node])}): {agents}')
"
No hardcoded nodes. Everything comes from contacts.
/machines, /machines ping)For each discovered node, pick one agent and send a ping via maw hey:
# For each non-local node, pick the first agent and ping
maw hey <node>:<first-agent> "ping from $(hostname) — alive?" 2>&1
For the local node, just run maw ls.
Show results as a table:
🏗 Fleet Machines
Node Status Oracles Ping Target
────────────── ───────── ──────── ──────────────
local ✅ alive N maw ls
<node-1> ✅ alive N <agent> → delivered
<node-2> ⏳ waiting N <agent> → sent
<node-3> ❌ failed N <agent> → error
Alive: X/Y confirmed
If maw hey output contains "delivered", the node is alive.
/machines <node>)Show all oracles on that node + how to talk:
🏗 <node> — N oracles
Agent Notes Talk
────────────── ───────────────────────────── ──────────────────────────
<agent-1> <notes from contacts> maw hey <node>:<agent-1> "..."
<agent-2> <notes from contacts> maw hey <node>:<agent-2> "..."
/machines setup)After pinging, offer to create local shortcuts:
✅ N nodes confirmed alive. Create machine shortcuts?
/<node-1> → N oracles
/<node-2> → N oracles
...
Create all? [Y/n]
WAIT for user confirmation.
Then for each node, create .claude/skills/<node>/SKILL.md with:
maw hey <node>:<agent> examplesThese are LOCAL skills — gitignored, personal to each fleet.
/machines list)Show all known nodes without pinging:
🏗 Known Machines (from ψ/contacts.json)
Node Oracles
────────────── ────────────────────────────────
local <comma-separated agents>
<node-1> <comma-separated agents>
<node-2> <comma-separated agents>
💡 /machines ping — check who's alive
💡 /machines setup — create shortcuts
ARGUMENTS: $ARGUMENTS
testing
Cut a beta pre-release — bump CalVer with --beta, PR to beta branch, CI auto-tags + publishes to npm @beta. Use when user says 'release beta', 'cut beta', '/release-beta', or wants to publish a beta version for pre-release testing.
testing
Cut an alpha pre-release — bump CalVer, PR to alpha branch, CI auto-tags + publishes to npm @alpha. Use when user says 'release alpha', 'cut alpha', '/release-alpha', or wants to publish an alpha version.
tools
Talk to another oracle via maw federation. Uses fleet machine names (white, mba, clinic-nat, oracle-world, phaith). Auto-signs with current oracle's [host:handle] from CLAUDE.md. Global — works from any oracle repo.
development
Log information for future reference. Use when user says "fyi", "remember this", "note that", "for your info".