inspect-machine
Skill1.9k starsChanged 8 months agoMITView on GitHub
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
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 4 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Don't use it for ordinary coding work.
- Very specific: line 29
Start with uname -s. Each command may be missing: skip what fails, and don't install anything to fill a gap.
- Distinctive: line 96
Run the commands for this OS (one batch).
- Distinctive: line 103
Before a step that uses a device, ask (Rule 2).
- Distinctive: line 118
No device was opened, and nothing about the machine was written to the repository.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Inspect the machine
When to use
- You are about to plan or test something whose feasibility depends on hardware: a local model or GPU work, vision or audio features, a USB or serial device, heavy parallel builds.
- A task says "on this machine", "use the camera / mic / GPU", or a test fails in a way that smells like missing hardware.
- Once per session at most. Re-run only if the user plugs something in or asks.
Don't use it for ordinary coding work. Most tasks don't care what the machine is.
Rules
- 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.
- 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-pmode, any run whereask_useris unavailable or unanswered), never use a device: report what you found and stop there. - 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.
- 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.
Quick reference
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 -1macOS (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 boardsWindows (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 memoryAdapterRAM 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.
Procedure
- Run the commands for this OS (one batch).
- Summarize in at most ten lines, in your context only:
MACHINE: macOS 15 · Apple M3 (8 cores, Neural Engine) · 16 GB · 120 GB free GPU: Apple M3 (Metal) · Cameras: 1 built-in · Audio in: 1 · USB: 1 serial board (CH340) - Decide with it: what the task can use, what it can't, and what to tell the user.
- Before a step that uses a device, ask (Rule 2).
Pitfalls
- CI runners are virtual machines. In GitHub Actions you'll see no camera, no GPU and a few cores. That's the runner, not the user's machine. Never conclude "the user has no GPU" from a CI run.
- Absence isn't proof. A missing command, a container, or a permission can hide a device. Say "not found" rather than "not present".
- Don't overreach. A GPU doesn't mean CUDA (Apple and AMD GPUs don't have it). A camera listed doesn't mean it's free or allowed.
- WSL sees part of the machine. A passed-through NVIDIA GPU shows in
nvidia-smi, but USB devices and cameras usually don't appear. Say "inside WSL" when you report. - Not covered: BSDs, Android/Termux, and anything the commands above don't list. Report what you found and say the platform isn't covered, rather than guessing.
- Keep it short. Raw
system_profileroutput is large. Summarize; never paste it whole into the conversation.
Verification
- The summary names the CPU, memory, and each device class that was found (or "not found").
- It contains no serial number, address, UUID, or personal device or host name.
- No device was opened, and nothing about the machine was written to the repository.
Trending
Quiet since September.thin dataabout the whole repository
Who's talking about yologdev/yoyo-evolve
- A Hacker News story“Show HN: yoyo - a 200 line baby coding agent evolving in its own Truman Show”Hacker News · Mar 4, 2026 · 3 points
- voku/agent-loop“test(learning): prove finish-captured findings cannot bypass Learning classification”GitHub · Sep 27, 2026
- SokratesAI/agora“Add identity.md -- constitution for the planned self-improvement loop”GitHub · Jul 30, 2026
- SokratesAI/agora-persona-runner“Add identity.md -- constitution for the planned self-improvement loop”GitHub · Jul 30, 2026
- yologdev/yoagent“SubAgentTool cannot attach a SkillSet (no with_skills)”GitHub · Jun 21, 2026
The biggest 5 of 8 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 8
Talked about on GitHub and Hacker News (8 times).
On GitHub · 7
- Sep 27, 2026test(learning): prove finish-captured findings cannot bypass Learning classification — voku/agent-loop0 reactions
- Jul 30, 2026Add identity.md -- constitution for the planned self-improvement loop — SokratesAI/agora0 reactions
- Jul 30, 2026Add identity.md -- constitution for the planned self-improvement loop — SokratesAI/agora-persona-runner0 reactions · 1 comment
- Jun 21, 2026SubAgentTool cannot attach a SkillSet (no with_skills) — yologdev/yoagent0 reactions
- Jun 6, 2026Add gen1 lineage identity — yologdev/yyds-harness0 reactions
2 more on GitHub
- Mar 27, 2026Bug: cache_control set on empty text blocks causes Anthropic 400 error — yologdev/yoagent0 reactions
- Mar 5, 2026Restore progress diary, GitHub Pages, and document GITHUB_TOKEN limitation for Copilot CLI — audiohacking/cocopilot-evolve0 reactions · 2 comments
On Hacker News · 1
- Mar 4, 2026Show HN: yoyo - a 200 line baby coding agent evolving in its own Truman Show3 points · 1 comment
In this repository14 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- analyze-trajectorySkill
- communicateSkill
- evolveSkill
- familySkill
- releaseSkill
- researchSkill
- self-assessSkill
- skill-creatorSkill
- skill-evolveSkill
- socialSkill
- synthesisSkill
- x-researchSkill
- yopediaSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

