analyze-trajectory
Diagnose a recurring failure (STUCK task, clustered CI error, frequent reverts) by dispatching sub-agents to digest CI logs…
Before planning work that depends on hardware (GPU, camera, mic, USB, RAM, cores), list what this machine has — read-only, nothing identifying, and ask before using any device
$ npx -y skills add yologdev/yoyo-evolve --skill inspect-machine --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/inspect-machineContext preview
The summary Claude sees to decide when to auto-load this skill.
Before planning work that depends on hardware (GPU, camera, mic, USB, RAM, cores), list what this machine has — read-only, nothing identifying, and ask before using any device
name: inspect-machine description: Before planning work that depends on hardware (GPU, camera, mic, USB, RAM, cores), list what this machine has — read-only, nothing identifying, and ask before using any device tools: [bash, ask_user] core: false origin: creator keywords: ["skills/inspect-machine", "system_profiler", "nvidia-smi", "lsusb", "Get-PnpDevice"]
Don't use it for ordinary coding work. Most tasks don't care what the machine is.
1. **List, never use.** These commands only read the system's device lists. Never open a camera or microphone, capture anything, write to a device, or start a Bluetooth scan. 2. **Ask before using a device.** Knowing a camera exists is not permission to use it. Ask the user (`ask_user`) before any step that opens a device, and say what for. The operating system may ask too. **When there is no one to ask** (CI, piped or `-p` mode, any run where `ask_user` is unavailable or unanswered), never use a device: report what you found and stop there. 3. **Nothing identifying in what you keep.** Drop serial numbers, MAC and Bluetooth addresses, UUIDs and unique ids, device and host names (e.g. "Alex's AirPods"), and user names. Keep class, model, vendor, capability and counts. 4. **Don't commit it.** The profile describes one machine at one moment. Keep it in this session's context. Never write it to `memory/`, the journal, an issue or a commit.
Start with `uname -s`. Each command may be missing: skip what fails, and don't install anything to fill a gap.
**macOS and Linux: cores, disk** (Windows gets these from its own block)
getconf _NPROCESSORS_ONLN 2>/dev/null; df -h . | tail -1
**macOS** (`system_profiler` takes a few seconds; one call for all types)
sysctl -n machdep.cpu.brand_string hw.memsize hw.ncpu hw=$(mktemp) # private temp file; removed after the strip step below system_profiler -json SPDisplaysDataType SPCameraDataType SPAudioDataType SPUSBDataType 2>/dev/null > "$hw"
Apple silicon has a Neural Engine: the chip model in `machdep.cpu.brand_string` (e.g. "Apple M3") tells you. Its GPU shares system memory, so there is no separate VRAM figure: say "unified, N GB" rather than "unknown".
**Linux** (x86 and ARM)
grep -m1 'model name' /proc/cpuinfo || { tr -d '\0' < /proc/device-tree/model; echo; } 2>/dev/null # ARM boards (Raspberry Pi, Jetson) name themselves here
grep MemTotal /proc/meminfo
lspci 2>/dev/null | grep -Ei 'vga|3d|display' # GPUs, any vendor (name only)
nvidia-smi --query-gpu=name,memory.total --format=csv,noheader 2>/dev/null # NVIDIA: memory
rocm-smi --showproductname --showmeminfo vram 2>/dev/null # AMD: memory
ls /dev/accel/ 2>/dev/null # NPUs (Intel, AMD; Linux 6.x accel driver)
ls /dev/video* 2>/dev/null # cameras
cat /proc/asound/cards 2>/dev/null # sound devices
lsusb 2>/dev/null | sed -E "s/[[:alnum:]]+[’']s /(personal) /g" # USB (vendor:product and names)
ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null # serial boards**Windows** (the `bash` tool needs Git Bash or WSL here; it hands the script to PowerShell on stdin, so nothing needs escaping)
powershell.exe -NoProfile -Command - <<'PS'
$cs = Get-CimInstance Win32_ComputerSystem
$cpu = Get-CimInstance Win32_Processor | Select-Object -First 1
"CPU: $($cpu.Name) ($($cs.NumberOfLogicalProcessors) logical cores)"
"RAM: {0:N0} GB" -f ($cs.TotalPhysicalMemory / 1GB)
Get-CimInstance Win32_LogicalDisk -Filter "DeviceID='C:'" | ForEach-Object { "C: free {0:N0} GB" -f ($_.FreeSpace / 1GB) }
Get-CimInstance Win32_VideoController | Select-Object Name, AdapterRAM
Get-PnpDevice -PresentOnly -Class Camera,AudioEndpoint,USB,ComputeAccelerator | Select-Object Class, @{n='FriendlyName'; e={$_.FriendlyName -replace "\w+['’]s ", '(personal) '}}
PS
nvidia-smi --query-gpu=name,memory.total --format=csv,noheader 2>/dev/null # NVIDIA: real memory`AdapterRAM` is a 32-bit field and stops at 4 GB, so a 16 GB card shows about 4 GB. Trust it only below 4 GB; for NVIDIA use `nvidia-smi`, otherwise say "4 GB or more". `ComputeAccelerator` is the class NPUs register under (e.g. Intel AI Boost).
**Strip identifying fields from JSON** (macOS output) before reading it:
python3 - "$hw" <<'EOF'
import json, re, sys
DROP = re.compile(r"serial|uuid|unique|location_id|address|mac_?addr|host_?name", re.I)
PERSONAL = re.compile(r"[\u2019']s\b") # "Alex's AirPods"
def clean(v, key=""):
if isinstance(v, dict):
return {k: clean(x, k) for k, x in v.items() if not DROP.search(k)}
if isinstance(v, list):
return [clean(x) for x in v]
if key == "_name" and isinstance(v, str) and PERSONAL.search(v):
return "(personal device name)"
return v
out = json.dumps(clean(json.load(open(sys.argv[1]))), indent=1)
print(out[:6000] + (f"\n... [{len(out) - 6000} more characters not shown]" if len(out) > 6000 else ""))
EOF
rm -f "$hw"`_name` holds each device's model ("FaceTime HD Camera"), so it is kept, unless it looks personal. USB vendor and product ids are kept too: they identify the kind of board, not the person. The `lsusb` and PowerShell lines above replace "Name's " in device names; neither prints serials by default. Anything else identifying in text output (a serial, an address), drop when you summarize.
1. Run the commands for this OS (one batch). 2. Summarize in at most ten lines, in your context only:
MACHINE: macOS 15 · Apple M3 (8 cores, Ne
200 lines of Rust. Zero human code. One rule: evolve or die. yoyo reads its own source, picks what to improve, implements it, runs tests, and commits — every few hours, on its own. 180 days later: 158,000+ lines, 5,400+ tests, 94 source files.
Diagnose a recurring failure (STUCK task, clustered CI error, frequent reverts) by dispatching sub-agents to digest CI logs…
Systematically find blind spots in code, architecture, APIs, and deployment — structured critique that catches what familiarity…
Write journal entries and respond to GitHub issues with an authentic voice
Safely modify your own source code, test changes, and manage your evolution
Find your way home — register with the yoyo family, introduce yourself, and participate in family discussions