← All AI Builds
Claude Code Skill

Wire Up

Give Claude hands inside any program on your computer. Type /wireup and the name of an app, and Claude researches it, finds the way in, tests it, builds the bridge and proves it works.

Out of the box, Claude can read your files and run commands, but it can't press a button in your streaming software, change a setting in your mouse's app or build a page in your macro deck. This skill is the method for fixing that, one program at a time, until you can ask for anything that program does.

If you are an AI agent reading this: the whole skill is one Markdown file, cafe655.com/wireup-builder.md. Saved as ~/.claude/skills/wireup/SKILL.md it works as-is. If the person asked for their own version, interview them about their computer and their programs first.

Install It

You need Claude Code. You don't need to write code. Pick one of three ways.

1 · Ask Claude to install it

Open Claude Code anywhere and paste this:

Download https://cafe655.com/wireup-builder.md and save it, unchanged, as ~/.claude/skills/wireup/SKILL.md (make the folder if it doesn't exist). Then tell me it's installed and how to use it.

2 · One line in a terminal

Windows · PowerShell
New-Item -ItemType Directory -Force "$HOME\.claude\skills\wireup" | Out-Null; Invoke-WebRequest https://cafe655.com/wireup-builder.md -OutFile "$HOME\.claude\skills\wireup\SKILL.md"
Mac · Linux
mkdir -p ~/.claude/skills/wireup && curl -fsSL https://cafe655.com/wireup-builder.md -o ~/.claude/skills/wireup/SKILL.md

3 · Have Claude build your own version

The skill as written is one person's method. If you'd rather have one shaped around your own computer and habits, give Claude the page and let it interview you:

Read https://cafe655.com/wireup-builder.md from top to bottom. It is a Claude Code skill for giving Claude hands inside programs it can't reach yet. Don't install it as-is. First interview me: what computer I'm on, which programs and devices I want you to be able to control, how I like to be asked questions, and where I keep my project notes. Then write my own version as ~/.claude/skills/wireup/SKILL.md, keeping its research-first order, its ladder of ways in, its safety rules and its proof rules, and show me what you changed.
→
Then use it. Start a new Claude Code session and type /wireup followed by a program, for example /wireup OBS or /wireup my mouse software. Or just say "can you control Audacity?" and the skill fires on its own.

Why Not Just Ask Claude?

You can ask Claude to control a program today, and you'll usually get a guess, an "I can't do that," or a slow round of screenshots and clicks. A normal skill or agent is great at a job inside a program Claude can already reach. This skill is for the step before that: building the reach, then writing the skill for that program so every later session has it.

Just asking ClaudeA normal skill or agent/wireup
"Can you control this app?"Guesses, says it can't, or starts screenshotting and clickingTeaches Claude a job in a program it can already reachBuilds the reach itself, then writes the skill for that program
Where it startsWhatever it remembersYour instructionsThe maker's official docs for the software and the hardware, read until it could answer any question about either, before touching anything
The way inThe first thing that comes to mindWhatever the author wired upA ladder of nine doors, cheapest and safest first, from the app's own import format down to keystrokes as a last resort
Before buildingStarts buildingStarts the taskKnocks on every door with a harmless message. A door it hasn't walked through is a guess
Asking youAsks what you want before it knows what's possibleVariesDoes the research first. Your request is the permission. Stops only for something physical, a password, or anything it can't undo
Your settingsWrites straight to your stuffVariesReads before it writes, backs up first, ships the undo with every change, tries it on a scratch copy
"Done!"Trusts its own success messageTrusts its own success messageSuccess messages prove nothing. Reads the change back out of the program; hardware has to survive a reboot
When it's finishedWhen one thing worked onceWhen the task endsWhen you can ask for anything that program does, and the next session inherits notes, a log and a skill instead of starting cold

The Nine Doors

Every program already has a way in. Claude checks them in this order, because the order is cost: the first ones are built by the maker on purpose and survive updates, the last ones are fragile.

  1. An import or export format the maker documents. Profiles, templates, backups. Usually one click from you.
  2. A remote-control connection it already offers. Many streaming and media apps have one. Best for live jobs.
  3. A plugin that runs inside the app. Works while it's open; often has to be reloaded after a restart.
  4. Its own batch or background mode. Best for file work: convert, export, render.
  5. The private channel the app's window uses to talk to its own service. Found by reading the app's code. Closed software usually has one.
  6. Its saved files, edited with the app closed. Cheap and proven, as long as you know when the app re-reads them.
  7. Driving its window through the operating system's accessibility layer. Slower, but the app does the writing.
  8. A local network API. Smart lights and controllers often take plain web requests.
  9. Keystrokes. Last resort only.
↑ cheapest, sturdiestlast resort ↓

The Method

Twelve steps. The first three happen before Claude asks you anything about what you want.

Rule 0

Research before questions

A menu offered before the research is a menu of guesses. It reads first, then reports what's possible.

Step 1

Know the software and the hardware

Exact versions and model numbers. How the device sleeps, wakes, stores profiles, and what an update wipes. Web claims are checked against the device.

Step 2

Find every door

Work down the ladder of nine. "There is no way in" is almost never true.

Step 3

Test the doors

The smallest harmless message to each. Write down which are real, dead, or only work while the app is open.

Step 3b

Report, then build

What's reachable, what isn't, and the first small slice it's proving. No permission round trips.

Step 4

A reader first

A read-only "what's there right now" snapshot. It can't break anything and everything after uses it.

Step 5

Careful writes

Let the real program do the real work. Back up first, ship the undo with the change, scratch copy before the real one.

Step 6

Prove it

Read the change back out. Check the file it made. Compare at one fixed point. Hardware has to survive a reboot.

Step 7

When does it re-read?

Most "it didn't work" reports are an app that only reads its files at launch, or hides to the tray instead of quitting.

Step 8

Who else uses this?

A filter on one camera can be on every scene. One settings store can hold every device.

Step 9

Updates can wipe hardware

Back up before any update and know what lives on the device rather than the computer.

Steps 10–11

Full control, then hand it on

Map everything the program can do, one command per real job. Then notes, a work log and a skill for that program, so the next session starts where this one stopped.

Rules Worth Copying

Every rule in the skill is there because skipping it cost real time. These five apply to almost anything you'll build with an AI.

The sleeping mouse

A session researched every setting in a mouse's app, then announced the mouse was switched off and asked for the power switch to be flipped. It was asleep, like every wireless mouse. Research the hardware's habits, not only the software's features.

The web is a hypothesis

A research pass said a mouse had no wired mode. The person holding it said otherwise, and they were right. A claim off the internet gets checked against the device, and the person holding the device outranks the internet.

"Success" proves nothing

Some scripting calls return "true" and do nothing at all. Proof is reading the change back out of the program, never the program's own report that it worked.

Close means quit

Seven correct buttons looked like a failed edit for a whole day because the app was only hidden in the system tray and never re-read its files.

Never read the screen for the truth

A screenshot once had Claude call a looping video a live webcam and invent a name for the person in it. Ask the program, or read its files.

The Whole Skill

This is the complete file Claude reads. Copy it, open it, or just give Claude the address.

SKILL.md · wireup Open file
---
name: wireup
description: "Give Claude hands inside a program on this computer that it cannot currently reach: a desktop app, a creative tool, a streaming tool, a game utility, a device's companion software. Researches the program and its hardware first, finds and tests every way in, builds a safe read-first bridge, proves every change, widens it to full control, and leaves notes so the next session never starts cold. Trigger on /wireup, \"wire up <program>\", \"hook up <program>\", \"can you control <program>\", \"can you drive <app>\", \"connect Claude to <program>\", \"make <program> work with you\", \"build a bridge to <program>\", or any request to let Claude operate a piece of software it cannot reach today."
argument-hint: the program, e.g. "/wireup OBS" or "/wireup Krita, batch export"
---

# Wire Up a Program

The method for giving Claude hands inside a program on this computer. It was written from real
wireups of streaming software, a video editor, a macro deck, a stream bot, gaming peripherals and
their companion apps, and every rule below cost somebody time before it was written down.

Say what a thing does, in plain words, never what it is made of. The person asking may not write
code. Name the one action only they can take, and take everything else off their plate.

## The finish line

**A wireup is not done when one slice works. It is done when the user can ask for anything that
program can do and get it.** The first slice is how you start, not where you stop. Step 10 is the
step that gets skipped, and it is the step that makes the difference.

---

## Rule 0: do not ask the user what they want yet. Steps 1 to 3 come first.

The order is fixed:

1. **Step 1**: know the software and the hardware, to mastery.
2. **Step 2**: find every door in.
3. **Step 3**: walk through them and find out which ones are real.
4. **Only then**, at Step 3b, report what is reachable and start building.

**Why this order.** A menu written before the research is a menu of guesses. Half the options will
be things the program cannot be driven to do from outside, and the one thing the user actually
wants may not be on the list at all, because you did not yet know the program could do it. Asking
first also quietly hands the user the research: they have to know what is possible in order to
answer, and working that out was your job. **They asked for the program to be wired up. That is
already the instruction. Go and do the reading.**

Do not ask a single question about scope, priority or "which of these first" until Step 3 is done
and you can name real, tested capabilities. Being blocked on something only the user can do (a
password, a switch, a file they have to pick, a cable) is different, and is always allowed: ask,
at any step.

---

## Step 1: know what you are working with, BEFORE you touch anything

Poking at the inside of a program before you know what it is costs time and can cost hardware.
Read first. A session once went straight for a private channel inside a peripheral's software and
only afterwards read the maker's own documentation, which described a supported, official way in
that would have been missed.

**a. Pin down exactly what is in front of you, software AND hardware.** The version of the app
actually installed, and the precise model of every device it drives: keypad, mouse, keyboard,
camera, light, deck. Hardware has its own documentation, its own firmware and its own limits, and
half the traps live there. Get the model number and the firmware version, not the family name.

**b. Read what this machine already knows.** Search your memory, the project folders and any
session logs for the program and for every device by name before you research anything. What you
find there outranks anything on the web, because it was measured here.

**c. Read the current official documentation, the software's AND the hardware's, until you could
answer any question about either.** The bar is mastery, not a feature list. Before you touch
anything you should be able to answer, without looking anything up again:

- What every feature of the software does, and what each one is called on screen.
- **How the hardware behaves when nobody is touching it**: does it sleep, how long until it does,
  what wakes it, what it looks like to the software while asleep, how it reports its battery, what
  happens when the battery dies, on a reboot, when its receiver is unplugged and plugged back in,
  whether it pairs to one receiver or many.
- What lives **on the device** versus on the computer, and what a firmware update, a software
  update or a factory reset does to each.
- Every physical control on it, its real name, and what it can and cannot be set to.
- The limits: value ranges, step sizes, counts, and what the software refuses.

A session once researched everything a peripheral app could configure, then told the user their
wireless mouse was switched off and asked them to flip its power switch. It was asleep. It woke the
instant they moved it, which is how every wireless mouse behaves. The research covered the
software's features and skipped how the hardware lives. **Half the "it is broken" moments are the
hardware doing exactly what it was designed to do.** If you cannot say what the device does when it
is left alone for five minutes, you have not finished this step.

Read the maker's own support pages and manuals, for the versions actually installed and the devices
actually on the desk. Not memory, not a forum first. Look specifically for:

- Everything the software can configure or do: the whole surface, so the door you find later can be
  judged against what you should be able to reach.
- **Any supported import, export, backup, restore, template or sharing format.** These are gold:
  the maker built them on purpose, they survive updates, and they usually need one click from the
  user instead of a fight. Look for this before anything clever.
- Any command line, scripting hook, plugin system, SDK or developer program, and whether it is real
  or a dead page.
- Anything the maker says does **not** work, does not persist, or does not carry over.

**d. Say plainly what is official and what is not.** A maker's page, GitHub or manual is one thing.
A forum post, a Reddit thread or somebody's reverse-engineering project is another. Label them.
Never let a community claim get written down as a fact.

**e. Write it down in the project folder as you go.** This research is the first artefact of the
wireup, not a scratch note. It goes into the program's own notes file (see Step 11) with its
sources, so no future session pays for it twice.

**f. If you send a subagent to do the reading, the brief decides what comes back.** Ask it for the
software's features and that is all you will get. Name the hardware questions in the brief, in
words: sleep and wake, battery, reconnection, what lives on the device, what an update destroys, the
value ranges the software refuses.

**g. A claim off the web is a HYPOTHESIS. The device is the authority.** A research pass once came
back saying a gaming mouse "has no wired mode and no Bluetooth." That went straight into a reply to
the user, who answered that it worked wired or wireless and they were holding it. The device had
been awake and answering the whole time and was never asked. The flag the researcher had read meant
*the software offers no separate setting for that connection*, nothing about what the hardware can
do. So, every time:

- **Before a researched fact goes into a document or in front of the user, ask the device.** If you
  cannot check it, write it down as *unverified*, with that word next to it, and never say it to the
  user as fact.
- **Never state anything about a device that is switched off.** If it has not been connected while
  you were watching, you know its name and nothing else. Say that.
- **A flag named after the software is about the software.** `hasWiredReportRate: false` means the
  app shows no wired setting. It does not mean there is no wire.
- **The user is the other authority, and they outrank the web.** They are holding the thing. When
  what they say and what you read disagree, they are right and the reading is wrong.

Only when that notes file exists do you go looking for a way in.

---

## Step 2: find the door

Every program already has a way in. Search in this order, because the order is cost:

1. **A supported import/export format the maker documents.** Cheapest of all, survives updates, and
   the user imports it with one click. Found in Step 1c.
2. **A live remote-control connection it already offers.** Many streaming and media apps ship a
   local websocket or HTTP control port. Best when the job is live: switch, mute, move something
   mid-stream.
3. **A plugin or extension that runs inside the app.** The app must be running, and a plugin loaded
   this way often **dies on app restart**. Expect to reload it every session and say so up front.
4. **Its own background or batch mode.** GIMP's batch mode, Blender's background mode, LibreOffice's
   headless conversion. Best for file work.
5. **The private channel the app's own window uses to talk to its background service.** A local
   pipe or socket, found by reading the app's own code. Closed, obfuscated software usually has one
   and it works while the app is running.
6. **Its saved files on disk, edited with the app CLOSED.** Button layouts, action lists, scene
   files, profiles. Proven and cheap, but see Step 7: the app must re-read them.
7. **Driving the app's own window**: its Import dialog, its buttons, through the operating system's
   accessibility layer (UI Automation on Windows, the Accessibility API on macOS), or through its
   developer port if it is an Electron app. Slower, but it makes the app do the writing.
8. **A local network API.** Devices count: many smart lights and controllers take plain HTTP on the
   local network.
9. **Keystrokes into the window.** Last resort only.

**"There is no way in" is almost never true.** It has been said about keypads and peripheral
settings that turned out to be fully reachable. If the documented routes are dead, read the app's
own code. It has to reach its own service somehow, and whatever it does, Claude can do.

**Never read the screen to learn the truth.** A screenshot once had Claude call a looping video a
webcam and invent a name for the person in it. Ask the program, or read its files.

Report every door you found, not just the first: what each can and can't do, and what it costs the
user (a program that must be open, a plugin reloaded each session, an app that must be quit to
edit).

---

## Step 3: test the doors before you build on one

**A door you have not walked through is a guess.** Send each candidate its smallest, most harmless
message and see what comes back. A port that accepts a connection and never answers is not a door.
A format that imports without error and changes nothing is not a door.

Do this before designing anything on top, and write the result (working, dead, or conditional) into
the project notes. A door that only works while the app is open, or only before it saves, is a fact
the next session needs.

---

## Step 3b: report what is reachable, then build

**Asking for the wireup IS the user's permission for all of it.** This step is a report, not a
question. Say what is reachable, then do every job on the list yourself, in a sensible order,
through Step 10. Stop to ask only for something physical, a password or login only the user has, or
anything destructive or irreversible.

Before you report, you must be able to say all of this without looking anything up:

- What the program can do, all of it.
- Which way in actually works, tested, and what it costs the user: a window that has to be open, a
  setting that has to be switched on, an app that has to be quit.
- What can and cannot be driven from outside.

Then, in one short message:

1. **Say what is now reachable**, in plain words, in a line or two. The shape of what they can now
   have, not a feature dump.
2. **Name anything the research ruled out**, in one line, so they do not ask for it.
3. **Name the first slice you are proving**: the smallest useful job, end to end, before widening.
   Never start with "expose everything."
4. If one of the doors needs the user to do something first (flip a setting, close the app, plug
   something in), put it in the same message so they do it once instead of twice.

If the user steers you toward a particular job, that narrows what gets proven FIRST. It never
narrows the wireup. Step 10 is still the finish line.

---

## Step 4: build the "what's there right now" reader before anything else

The first thing that gets built is always a read-only snapshot: list the scenes, the buttons, the
tracks, the settings, the devices. It pays for itself immediately and it cannot break anything.

Three traps this walks into every time:

- **A file snapshot is the program's last save, not what's on screen now.** Fine for orientation;
  before changing anything, ask the live program.
- **Some apps hold their real state in memory and only write on exit.** A saved profile can show
  nothing while the buttons plainly exist.
- **A database beside the app is often a cache and goes stale.** Work out which source is the truth
  for this program and write it down.

---

## Step 5: writing changes

- **The real program does the real work.** Never rebuild what the program does in your own code. A
  home-made version diverges silently and can't handle real files. Build the program's own file
  correctly, then let the program render, export or apply it.
- **One command per action**, plus "show me" commands so Claude can look before it touches.
- **Every command can answer in a machine-clean form** (JSON) so any session or any other agent can
  use it.
- **Safe to run twice.** Same command, same result.
- **Back up the user's current settings before the first write**, and say where the backup is.
- **The undo goes out with the change, in the same breath.** If a move needs a return trip (spin a
  camera, then spin it back), send both in one batch. A dropped connection between them leaves the
  user's live stream sideways.
- **Write scripts to a file with your file-writing tool, then run them.** Building a script inside a
  shell heredoc is how Windows paths lose their backslashes.
- **First live run goes to a scratch copy**, never to the user's real project. Never install
  anything while they are live.

---

## Step 6: prove it, don't trust it

**A command that reports success proves nothing.** Some editor scripting calls return "true" and do
absolutely nothing; one writes a file only on its first call per session and claims success forever
after. Hours were lost to each.

Proof means one of these:

- Read the live state back out of the program and see the change.
- Open the file it produced and check it really is what it claims: a PDF that starts like a PDF, a
  video whose frame actually got darker.
- Count the program's or the device's own acknowledgements: every write sent, every write answered.
- A/B at **one fixed point**: the same timestamp, the same frame, effect on versus off. Comparing two
  different spots measures the material, not your change.

If the real program isn't installed or isn't running, **fail loudly**. Never let a check quietly
skip and report green.

**On hardware, nothing is proven until it survives a reboot and a full working day.** A keyboard
dial was once declared fixed on eighteen minutes of good behaviour, and three wrong conclusions went
into permanent notes inside the hour.

---

## Step 7: when does it re-read?

Most "it didn't work" reports are this. Before blaming the change, find out what makes the program
pick it up:

- Some apps must be **fully quit**. Closing the window only hides them to the system tray, and they
  never re-read their files. Seven correct buttons once looked like a failed edit for a day.
- Many apps read their scene, action or profile files **only at launch**.
- A device profile edited on the computer may then have to be pushed onto the device again.
- A plugin loaded into a running app is gone after that app restarts.

Write the answer into the project notes. It is the single most expensive thing to rediscover.

---

## Step 8: who else is using this thing?

Before editing any object, ask what else points at it:

- A filter put on a camera source can be shared by **every** scene that uses that camera.
- A shared row of buttons (a nav bar) can appear on ten pages; editing it means editing ten files.
- One settings store can hold **every** device at once. Restoring it to fix a mouse also rolls back
  the keyboard and the camera.
- A mask image is stretched to whatever it sits on, so the same look may need building twice for a
  tall layout and a wide one.

---

## Step 9: an update can wipe the hardware

A companion-software update once wiped every profile stored on a gaming keypad. The computer's
copies survived; the device's did not, and rebuilding them took an afternoon. The same update
flashed new firmware and changed how the lights behaved.

So, for anything with hardware in it: **back up before any update, know what lives on the device
rather than on the computer, and check the device after.** Never let an update run during a session
that is mid-build.

---

## Step 10: widen it to full control

**This is the step that gets skipped, and it is the whole point.** One proven slice is a bridge with
one lane. Keep going until the user can ask for anything the program does:

1. **Map the program's whole vocabulary**: every action type, every trigger, every setting it can
   hold. Read it out of the program's own files, schema or binary if the docs don't list it. A full
   vocabulary is what turns a single working import into "build me anything."
2. **Cover the surface you listed in Step 1c.** Work down that list and note which parts are
   reachable, which are not, and why.
3. **One command per real job**, named the way the user would say it, not the way the software names
   it.
4. **Write down what cannot be done from outside** and what it would take, so nobody rediscovers it.

---

## Step 11: leave it usable by the next session

Not optional, and never offered as a question. **Every wired-up program gets all of these. A wireup
missing one is not finished.**

| # | What | Why |
|---|---|---|
| 1 | **A project folder with a notes file** (`CLAUDE.md` or `README.md`) | What this is; the software and hardware versions; the Step 1 documentation findings with their sources; every door and whether it was tested; what is proven versus assumed; how to run it; what is left undone |
| 2 | **The snapshot script from Step 4**, in that folder | The first thing the next session runs |
| 3 | **A dated work log** (`WORKLOG.md`) | What was done, what was verified versus assumed, what was left unfinished and why. Write it for a reader who has only the file system: another agent, or you in a month |
| 4 | **A memory note** | The traps that cost time, in the user's own words |
| 5 | **A short skill for the program** (`/<program>`) | A doorway pointing at the folder, not a copy of it: the 30-second commands and the traps. Its description names the program and the words the user would use, so it fires on its own |
| 6 | **A line in any index of tools you keep** | So a future session asked "this program is acting up" knows the hands already exist, instead of redoing the research |
| 7 | **If a session once said this could not be done, write down that it can** | In whatever file every session reads at start. A capability built and not written down is a capability the next session does not have |

**If the program reports on the computer's state** (temperatures, devices, health), every time a
session opens it should leave a dated snapshot in the project folder and offer a compare against the
oldest one, so a change can be spotted when it happens.

---

## Borrow before building

- **Check whether someone has already published a command set or integration for this program,**
  especially for free and open-source apps. Read it before installing anything, pin the version, and
  skip any installer that reports usage home or pulls code you have not reviewed.
- **Your own earlier wireups are your best templates.** Match the pattern you already have rather
  than inventing a new shape each time.

---

## Two standing habits

- **The user's read of their own setup beats a tidy inference.** They are looking at the screen and
  holding the device. Ask what they saw or heard before running probes.
- **When blocked, say so and ask.** Then wait. Don't quietly drop or narrow what they asked for.