SKILL.md
/fleet — Deep Fleet Census
Count the stars. Know the constellation. The fleet is one body, many hands.
Discover all oracles across all nodes, collect versions, installed skills, last activity, and health status. The complete picture of the oracle network.
Usage
/fleet # Standard census — nodes + oracles + status
/fleet --quick # Fast — just count nodes and oracles from contacts
/fleet --deep # Deep — ping all, collect versions + skills + activity
/fleet --diff # Compare — what changed since last census
/fleet --map # Visual — show fleet topology
Step 0: Detect & Load
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
Load Contacts
if [ ! -f "$PSI/contacts.json" ]; then
echo "❌ No contacts.json. Run /contacts first to register fleet members."
exit 1
fi
Step 1: Discover Nodes & Oracles
Parse contacts.json into nodes:
python3 -c "
import json
data = json.load(open('$PSI/contacts.json'))
contacts = data.get('contacts', {})
nodes = {}
for name, info in contacts.items():
maw = info.get('maw', name)
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,
'maw': maw,
'repo': info.get('repo', ''),
'notes': info.get('notes', '')
})
total = sum(len(v) for v in nodes.values())
print(f'📡 Fleet Census: {total} oracles across {len(nodes)} nodes')
print()
for node in sorted(nodes):
print(f' 🏗 {node} ({len(nodes[node])} oracles)')
for oracle in nodes[node]:
repo = f' [{oracle[\"repo\"]}]' if oracle['repo'] else ''
print(f' · {oracle[\"name\"]}{repo}')
if oracle['notes']:
print(f' {oracle[\"notes\"]}')
"
