{"slug": "what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by", "title": "What 'drive your computer from Claude Code' actually means — Propter's terminal-Claude setup, written by Claude", "summary": "Propter has built a terminal-based Claude Code setup that transforms the AI into a programmable shell with a fluent driver, enabling orchestration of any CLI-reachable tool through natural language prompts. The system relies on three core components: skills (markdown files loaded via slash commands like `/kickoff` and `/wrap`), hooks (deterministic shell commands triggered by tool events), and MCP servers (exposing tools like Todoist and GitHub). By composing these elements with project-specific memory files that store user preferences and validated approaches, Propter has created a setup where corrections become durable rules and context-switching between applications is eliminated.", "body_md": "*Written by Claude (Anthropic's AI), at Propter's request, describing Propter's\nsetup. The \"I\" below is Propter's voice, not mine. He asked me to write this for\nJules after she asked\nabout a more explicit dive on\nthe parent thread.\nPropter reviewed it before sharing — appropriately recursive, given the topic.*\n\nA writeup for Jules and anyone else on the perpetual mouse-mitigation crusade.\n\nCaveat up front: this is what Propter has accreted, not what someone with taste would design. Sharing because it might be useful as a starting point, not because it's optimal.\n\nThe shorthand — \"it's easier to drive the rest of your computer from Claude Code in the terminal than from your computer\" — sounds like marketing. The actual claim is narrower:\n\nA Claude Code session in a terminal is a programmable shell with a fluent driver. Anything reachable from a CLI is reachable from Claude. That surface is much bigger than most people aim at, especially if you've already rigged your computer to be CLI-friendly.\n\nSo the question stops being *can the AI do this thing?* and becomes *is this\nthing reachable from a terminal somewhere?* If yes, you can probably orchestrate\nit from a prompt.\n\nNone of these are special. They compose into something stronger than they look individually.\n\nSkills are markdown files at `~/.claude/skills/<name>/SKILL.md`\n\nthat load when\nyou type `/<name>`\n\n. They're procedures, not magic. Mine include:\n\n`/kickoff`\n\n— orients me at session start: reads the last handoff, checks for stale background work, surfaces overdue retros, asks for the agenda.`/wrap`\n\n— ends a session cleanly: writes a handoff to per-project memory, updates a calibration log, scans new commits for decision records.`/push <file>`\n\n— serves a local file over HTTP via SSH tunnel so my browser on the other machine can open it.`/docket`\n\n— plans my day across calendar, Todoist, and active project state.`/dashboard`\n\n— merged view of every backlog source.`/angel`\n\n— a multi-persona reviewer battery against shipped code.\n\nThe pattern: when I notice myself running the same procedure twice, I write it as a skill. Don't optimize until it hurts. Skills creep — the prune is its own task.\n\nHooks fire on tool events and they're configured in `~/.claude/settings.json`\n\n.\nA hook is just a shell command with a matcher. Mine:\n\n`UserPromptSubmit`\n\ninjects the current time and triggers`/kickoff`\n\non the first message of a session.`PostToolUse[Edit|Write]`\n\nruns a secret-scanner and a stub-check after every file change — it'll yell if I accidentally write`TODO`\n\nor commit a key.`PostToolUse[Write]`\n\nauto-serves anything I write to`/tmp/`\n\nso the URL is ready by the time I've finished generating the file.`SessionEnd`\n\nsnapshots the session.\n\nMemory tells Claude what I prefer; hooks make it deterministic. If I want\nsomething to *always* happen, hook it. If I want it usually, memory.\n\nMCPs are servers that expose tools and resources to Claude. Mine:\n\n**Todoist**— I manage tasks in natural language, no app open.** GitHub**— PRs, issues, code search across all my repos and others'.** Gemini**— second opinions, free-tier image generation, deep-research.** Plus a couple of project-specific ones**for tools I've built.\n\nFrom Claude's side these are just tools; from mine they eliminate context switches that used to mean opening tabs. Pick whichever app eats your time first.\n\n`~/.claude/projects/<dir>/memory/`\n\nholds a `MEMORY.md`\n\nindex that auto-loads\nevery session, plus separate files per topic. Memory entries are typed:\n\n**user**— who I am, what I do** feedback**— corrections and validated approaches (\"don't do X because Y\"; \"yes, that approach was right, keep doing it\")** project**— what's currently happening, motivations, deadlines** reference**— pointers to where things live\n\nThe load-bearing one is feedback. Corrections become durable rules — I don't repeat them. Validated approaches become defaults — Claude doesn't drift away from them either.\n\nClaude in a terminal has a Bash tool. If something I want is a CLI invocation\naway, it's reachable. Custom scripts in `~/bin/`\n\nwork the same as system tools.\nCron jobs and systemd user services are fully scriptable from a prompt.\n\nThis is the boring part. It's the load-bearing part.\n\nConcrete examples:\n\n- I have a\n`gmail`\n\nCLI in`~/bin/`\n\nthat drafts/sends/checks Gmail through the Google Workspace API. Claude reaches for it for any email task. - Crontab has a dozen entries that Claude wrote and that Claude can edit when I ask: feed-server health checks, backup runners, app-specific watchers.\n- Anything I previously did in a UI that has a CLI alternative gets used via the CLI. The CLI alternative usually exists.\n\nI run Claude Code on a Linux box. I sit in front of a Windows machine with the keyboard, monitors, and browser. Two patterns keep that ergonomic:\n\n— serves a file from Linux over a reverse SSH tunnel. I get a URL I paste into the browser. HTML reports, PDFs, generated images all become viewable in well under a second, without scp gymnastics.`/push <file>`\n\n**OAuth callback bridging**— when a CLI tool wants to open`localhost:8080`\n\nfor an OAuth dance, I tunnel that port (`ssh -R 8080:localhost:8080 -N -f <browser-host>`\n\n) so the browser hits the Linux listener. That's how I auth the Google Workspace CLI, Bluesky tools, etc., without sitting at the Linux box.\n\nSame pattern works locally if your browser and shell live on the same machine — just skip the SSH part.\n\nConcretely, in mouse terms:\n\n- Email drafts, Bluesky posts, GitHub PRs, calendar checks, Todoist edits — all happen in the same terminal buffer. The browser is for reading other people's pages and clicking the OAuth approval button. That's the entire mouse load.\n- File-sharing that used to mean Drive or Dropbox is\n`/push <file>`\n\n→ click link. - Throwaway scratch (drafts, HTML mockups, one-off scripts) lives in\n`/tmp`\n\nand gets edited*via Claude*rather than in an IDE. Claude Code's Edit tool does string replacement; I describe the change; it lands. No mouse, no IDE. - Background work runs without me. When something needs to nudge me, it's a desktop notification, not a tab I have to find.\n\nThe known seams, in case anyone tries to copy this and hits the same walls:\n\n- Skills tend to grow until they're doing too much. Pruning is its own task and it's never urgent enough to do.\n- My memory index has overflowed its size budget twice. Curation is harder than it looks.\n- Two-machine setups have annoying failure modes — SSH tunnels die, file syncs flake — mostly papered over with retry scripts.\n- The whole stack assumes Linux and a long-lived Anthropic Max plan. If either changes, large chunks become friction. I keep vendor-diversification scaffolding alongside the primary stack for that reason.\n\nHighest-leverage moves, in order:\n\n**Use Claude Code in a terminal**, not a chat UI. Even with zero customization, the Bash tool changes the calculus.** Add one MCP**for whatever app eats your time (Todoist, Linear, Gmail, Slack — pick yours). The first one is the convincer.** Write a skill the second time**you find yourself walking Claude through the same procedure. Don't write it the first time — you don't know the shape yet.**Use memory feedback aggressively.** When you correct Claude, ask it to save the correction. The hit rate on \"yeah I told it that two months ago\" is high.**Hook the things you want to be invariant.** Secret-scans, formatters, notifications. Memory is preference; hooks are guarantees.\n\nThat's what I've got. Mileage will vary by stack, by job, by tolerance for yak-shaving. Happy to dig into any specific piece if it's useful.", "url": "https://wpnews.pro/news/what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by", "canonical_source": "https://gist.github.com/PropterMalone/d84ebd44cb10eaf79bdf695a3bcfd2aa", "published_at": "2026-05-09 12:59:57+00:00", "updated_at": "2026-05-29 19:43:27.246135+00:00", "lang": "en", "topics": ["ai-tools", "ai-agents", "large-language-models"], "entities": ["Claude Code", "Anthropic", "Propter", "Jules"], "alternates": {"html": "https://wpnews.pro/news/what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by", "markdown": "https://wpnews.pro/news/what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by.md", "text": "https://wpnews.pro/news/what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by.txt", "jsonld": "https://wpnews.pro/news/what-drive-your-computer-from-claude-code-actually-means-propter-s-terminal-by.jsonld"}}