diff --git a/.backup/claude-shorthand.md b/.backup/claude-shorthand.md new file mode 100644 index 0000000..655bc97 --- /dev/null +++ b/.backup/claude-shorthand.md @@ -0,0 +1,95 @@ +# Claude Shorthand Cheat-Sheet + +## Core Operators + +| Pattern | Meaning | Example | +|---------|---------|---------| +| `→` | then (sequential) | `ssh pve173 → zpool status` | +| `+` | and (parallel) | `check caddy + check pihole` | +| `X ? Y : Z` | if X then Y else Z | `port open ? connect : debug` | +| `!X` | don't / skip | `!error handling` | +| `w/` | with | `py script w/ argparse` | +| `@` | at path/location | `new config @ /etc/caddy/` | +| `re:` | regarding | `fix re: tank degraded drive` | +| `=` | set/assign | `port=3000, lang=python` | +| `~` | approximately / like | `~50 lines, ~yesterday` | +| `>>` | output to / save to | `results >> /tmp/report.txt` | +| `<-` | from / source | `data <- freshrss API` | + +## Spec Block (complex tasks) + +``` +feat: +- lang: +- deps: +- in: +- out: +- !: +``` + +## Examples + +### Verbose → Compressed + +**Service setup:** +``` +# Before (~80 tokens): +"Please create a new Python service in the printer-automation directory +that connects to the FreshRSS API, fetches today's articles, formats +them for the receipt printer, and runs as a systemd service" + +# After (~20 tokens): +feat: daily print @ printer-automation/ +- freshrss API → format → receipt printer +- systemd service +``` + +**Infra task:** +``` +# Before (~50 tokens): +"SSH into pve173, check if any drives in the tank pool are degraded, +and if so tell me which ones need replacement" + +# After (~12 tokens): +pve173 → tank degraded drives? → list replacements +``` + +**Multi-step:** +``` +# Before (~60 tokens): +"First read the Caddyfile, then add a new reverse proxy entry for +wiki.sethpc.xyz pointing to 192.168.0.160 port 3000, and also +add it to the Pi-hole DNS" + +# After (~15 tokens): +add wiki.sethpc.xyz → .160:3000 to caddy + pihole +``` + +**Conditional:** +``` +# Before (~45 tokens): +"Check if ollama is running on pve197. If it is, test the qwen model. +If it's not running, start it first then test." + +# After (~15 tokens): +pve197: ollama running ? test qwen : start → test +``` + +## Anchors (use known names) + +| Say | Not | +|-----|-----| +| `pve173` | "the PowerEdge node at 192.168.0.173" | +| `tank` | "the ZFS pool on node-173" | +| `caddy` | "the reverse proxy in CT 600" | +| `pihole` | "the DNS server at 192.168.0.153" | +| `steel141` | "this machine, my gaming PC" | +| `ollama` | "the LLM inference service" | + +## Quick Rules + +1. Drop articles (a, the, an) — Claude doesn't need them +2. Drop politeness (please, could you, I'd like) — zero effect on output +3. Use aliases from CLAUDE.md — they're shared vocabulary +4. Bullets > paragraphs — less ambiguous, fewer tokens +5. Imply obvious steps — "add X to caddy" implies read/edit/save diff --git a/claude-shorthand.md b/claude-shorthand.md index 655bc97..3e18632 100644 --- a/claude-shorthand.md +++ b/claude-shorthand.md @@ -4,17 +4,17 @@ | Pattern | Meaning | Example | |---------|---------|---------| -| `→` | then (sequential) | `ssh pve173 → zpool status` | -| `+` | and (parallel) | `check caddy + check pihole` | +| `→` | then (sequential) | `ssh server → check status` | +| `+` | and (parallel) | `check proxy + check dns` | | `X ? Y : Z` | if X then Y else Z | `port open ? connect : debug` | | `!X` | don't / skip | `!error handling` | | `w/` | with | `py script w/ argparse` | -| `@` | at path/location | `new config @ /etc/caddy/` | -| `re:` | regarding | `fix re: tank degraded drive` | +| `@` | at path/location | `new config @ /etc/nginx/` | +| `re:` | regarding | `fix re: pool degraded drive` | | `=` | set/assign | `port=3000, lang=python` | | `~` | approximately / like | `~50 lines, ~yesterday` | | `>>` | output to / save to | `results >> /tmp/report.txt` | -| `<-` | from / source | `data <- freshrss API` | +| `<-` | from / source | `data <- rss API` | ## Spec Block (complex tasks) @@ -34,57 +34,59 @@ feat: **Service setup:** ``` # Before (~80 tokens): -"Please create a new Python service in the printer-automation directory -that connects to the FreshRSS API, fetches today's articles, formats -them for the receipt printer, and runs as a systemd service" +"Please create a new Python service in the automation directory +that connects to the RSS API, fetches today's articles, formats +them for the printer, and runs as a systemd service" # After (~20 tokens): -feat: daily print @ printer-automation/ -- freshrss API → format → receipt printer +feat: daily print @ automation/ +- rss API → format → printer - systemd service ``` **Infra task:** ``` # Before (~50 tokens): -"SSH into pve173, check if any drives in the tank pool are degraded, -and if so tell me which ones need replacement" +"SSH into the storage server, check if any drives in the pool are +degraded, and if so tell me which ones need replacement" # After (~12 tokens): -pve173 → tank degraded drives? → list replacements +storage-server → pool degraded drives? → list replacements ``` **Multi-step:** ``` # Before (~60 tokens): -"First read the Caddyfile, then add a new reverse proxy entry for -wiki.sethpc.xyz pointing to 192.168.0.160 port 3000, and also -add it to the Pi-hole DNS" +"First read the proxy config, then add a new reverse proxy entry for +wiki.example.com pointing to the backend on port 3000, and also +add it to DNS" # After (~15 tokens): -add wiki.sethpc.xyz → .160:3000 to caddy + pihole +add wiki.example.com → backend:3000 to proxy + dns ``` **Conditional:** ``` # Before (~45 tokens): -"Check if ollama is running on pve197. If it is, test the qwen model. -If it's not running, start it first then test." +"Check if the LLM service is running on the inference server. If it is, +test the model. If it's not running, start it first then test." # After (~15 tokens): -pve197: ollama running ? test qwen : start → test +inference: llm running ? test model : start → test ``` ## Anchors (use known names) +Define short aliases in your CLAUDE.md, then use them everywhere: + | Say | Not | |-----|-----| -| `pve173` | "the PowerEdge node at 192.168.0.173" | -| `tank` | "the ZFS pool on node-173" | -| `caddy` | "the reverse proxy in CT 600" | -| `pihole` | "the DNS server at 192.168.0.153" | -| `steel141` | "this machine, my gaming PC" | -| `ollama` | "the LLM inference service" | +| `db-server` | "the PostgreSQL database server at 10.0.1.50" | +| `pool` | "the ZFS storage pool on the NAS" | +| `proxy` | "the Caddy/nginx reverse proxy container" | +| `dns` | "the Pi-hole DNS server" | +| `workstation` | "this machine, my desktop PC" | +| `llm` | "the LLM inference service" | ## Quick Rules