40 real workflows, real prompts

What people actually do with it.

Every one of these runs at a normal shell prompt — no context switch, no copy-paste. The AI sees your (redacted) session, the guard reviews every command, and everything scripts with honest exit codes.

01 · ship faster

From "could you…" to merged

🚢Ship a small feature, end to end

The default implement pipeline explores your codebase, edits, then verifies — three specialists chained.

 @flow add a --json flag to the export command
▶ flow 'implement' — 3 step(s)
 explore ·  implement ·  verify
✓ 58s · 11 tools · 32k in / 4.1k out

🔴Make CI green while you make coffee

@loop iterates until your test command exits 0 — the model never grades its own work.

 @loop "fix the flaky auth tests" --check "npm test -- auth" --bg
▶ background job 1753113020-5127
 tail -f ~/.aiTerminal/ai/jobs/…/log.md

🧪Reproduce → test → fix

@tester writes the failing test first, then makes it pass.

 @tester "totals drift when qty is 0 — reproduce and fix"
  ⚙ fs.write {"path":"tests/totals.rs"} · 4ms · 1.1KB
  ⚙ sys.run {"cmd":"cargo test totals"} · 2.9s · 2.2KB
Reproduced: rounding applied before the zero-check …

🧹Refactor with a budget

Cap tokens so an ambitious refactor can't run away — the loop stops honestly at the budget.

 @loop "extract retry logic into one helper" --check "cargo test" --budget 60000
🔁 loop 'coder' — up to 5 iteration(s)
✓ goal reached after 3 iteration(s)

✍️Commit messages that write themselves

Grounded on the actual staged diff in your session — review, edit, commit.

 git diff --staged --stat
 @ai write a conventional commit message for this
 press Enter to run (or edit)
 git commit -m "fix(parser): keep the final line without a trailing newline"

⬆️Dependency bumps that prove themselves

Bump, build, test — looped until everything passes, or stopped honestly.

 @loop "bump tokio to 1.40 and fix what breaks" --check "cargo test --workspace"
▶ iteration 1/5 … check: exit=1 · E0308 in net.rs
▶ iteration 2/5 … check: exit=0
✓ goal reached after 2 iteration(s)

📝Release notes as a background job

Fire it, forget it, read the markdown log later — the job survives closing the window.

 @job write release notes from the last 20 commits --bg
▶ background job 1753114100-6001
 @job
   1753114100-6001 done  write release notes … (3m ago · 41s)

🚦Gate your push on a green loop

Every AI command exits honestly (0/1/2/130) — so loops compose with && and CI.

 @loop "make clippy clean" --check "cargo clippy -- -D warnings" && git push
✓ goal reached after 2 iteration(s)
→ push runs only because the loop exited 0

🧬Write your own flow in ten lines

A flow is a TOML file in ai/flows/ — your pipeline, your agents, chained.

# ~/.aiTerminal/ai/flows/ship.toml
[[step]] label="implement"; agent="coder";  prompt="Implement: {{input}}"
[[step]] label="verify";    agent="tester"; prompt="Verify the change above."
 @flow ship add rate limiting to the login route

🏗Scaffold with your conventions, not the internet's

Your ai/aiTerminal.md and memories teach it the house style once — every run after follows it.

 @coder "add a new /health endpoint following our handler pattern"
∴ recalling: handlers live in api/handlers, one file per route, table-driven tests…
  ⚙ fs.write {"path":"api/handlers/health.rs"} · 5ms · 890B
02 · understand & review

Read code like you wrote it

🗺Learn a codebase you just cloned

@explorer is read-only and fast — pipe the map straight into a file.

 git clone github.com/org/service && cd service
 @explorer "map the request lifecycle from route to DB" > MAP.md
✓ 22s · 9 tools · 18k in / 1.2k out

👀Pre-merge review without leaving the repo

The review flow maps the touched code first, then a read-only reviewer reports concrete findings.

 @flow review the changes on this branch vs main
 map ·  review
1. parser.rs:88 — CRLF input splits wrong …
2. cache.rs:41 — eviction races the reader …

🔐Security audit sweep

A read-only reviewer with a security skill — it can look, it cannot touch.

 @reviewer "audit the auth module: injection, secrets, unsafe patterns"
  ⚙ fs.search {"q":"password"} · 12ms · 3.4KB
1. login.rs:52 — the SQL string is concatenated …

📄Spec vs implementation

Attach the PDF and the source file; get a compliance diff in plain language.

 @reviewer does the parser match the spec? @rfc.pdf @src/parser.rs
Mostly — §3.2 requires CRLF tolerance; parser.rs:88
only splits on \n. §4.1 limits are enforced. …

🖼Debug from a screenshot

Attach images with @path — vision models read them inline.

 @ai why does the layout break like this? @shots/bug.png
The sidebar's flex container is missing min-width:0 —
the table forces it wider than its track …

🏛Git archaeology

"Why does this line exist?" — the session context carries the blame output into the question.

 git log -S "retry_after" --oneline | head -3
 @ai summarize why this was introduced and what depends on it
Added in a1c2f3 after the 429-storm incident: the backoff…

🎓Explain before you run

Paste-from-the-internet safety: ask what it does first — and the guard still checks it after.

 @ai explain: curl -fsSL get.example.sh | sh
Downloads a script and pipes it straight to your shell —
you're executing unreviewed remote code. …
⚠ curl | sh is confirm-tier by default

📎Attach the log, not a paste

Any @<path> text file inlines into the prompt (≤48 KB, redacted first).

 @ai why did this build fail? @build.log
The linker error at line 214 comes from two versions of
zlib — your Makefile pins one, pkg-config found the other…

🐙One agent, parallel scouts

@coder delegates read-only sub-agents with task.run — parallel exploration, bounded and safe.

 @coder "compare how auth works in api/ vs legacy/"
  └ task.run → 2 sub-agent(s): @explorer @explorer
Both wrap JWTs, but legacy/ refreshes in middleware while
api/ refreshes at the client — that's your drift.

📚Docs from the code that's actually there

An agent that reads the real functions writes docs that don't lie.

 @job document the public API of src/client.rs into docs/client.md --bg
▶ background job 1753115400-7210
  monitor: @job · tail -f …/log.md
03 · operate with confidence

Production, without the panic

🚨Incident response, 2 a.m.

Ask in plain words; run what you can read. "It" resolves to the crashing pod you just saw.

 kubectl get pods | grep -v Running
api-7d4b… CrashLoopBackOff
 @ai show me the last 50 log lines of it, previous container
 kubectl logs api-7d4b… --previous --tail=50

🔎Log forensics without awk golf

Describe the slice you need; review the pipeline it builds.

 @ai count 5xx by endpoint in access.log for the last hour
 press Enter to run (or edit)
 awk -v d="$(date -v-1H +%H)" '$4~d && $9~/^5/ {c[$7]++} END {for (k in c) print c[k], k}' access.log | sort -rn

🐳Container hygiene, safely

In manual mode (the default) every AI-proposed command preloads for review — nothing runs until you press Enter.

 @ai clean everything unused
 press Enter to run (or edit)
 docker system prune -af --volumes

📊Babysit a long migration

Split the window: migration left, a watcher right — one glance, whole picture.

# pane 1  ./migrate --all
# pane 2  @ai watch the error rate in api.log every 10s
 watch -n10 "grep -c ERROR api.log"

🌍SSH without losing your bearings

OSC-7 keeps the status bar showing the remote host and path; the switcher finds the tab by "prod".

 ssh deploy@prod
# status bar: 📁 /var/www · deploy@prod
# ⌘P "prod" → jump straight back here

🔏Cert & expiry checks on demand

Nobody remembers the openssl incantation. Nobody has to.

 @ai when does the TLS cert on api.example.com expire?
 echo | openssl s_client -connect api.example.com:443 2>/dev/null | openssl x509 -noout -enddate
notAfter=Oct 12 08:21:44 2026 GMT

🧯Your own guard rules

The three tiers are config: add a [security] confirm_commands pattern and it binds you and every agent.

# config.toml: confirm_commands = ["reset --hard"]
 @ai roll back to the previous release tag
⚠ review before running — matches a confirm rule  /reset --hard/
 git reset --hard v2.4.1

✈️Fully local, fully private

Point the pool at Ollama or LM Studio and nothing ever leaves your machine — @ai works on a plane.

# [[ai.model]] provider = "ollama"; id = "llama3"
 @ai summarize the failing tests in @test.log
∴ local model · no network egress

🛟AI that fails over

Weighted pools: cloud first, local fallback — a provider outage doesn't stop your run.

# anthropic weight 3 · ollama weight 1
 @coder "fix the flaky retry test"
provider timeout → failing over to llama3 (local)
 34s · 5 tools — the run finished anyway

Hands-free read-only ops

[ai] mode = "auto": safe-listed inspection commands run immediately; anything mutating still stops for you.

 @ai how far is this branch behind main?
 git rev-list --count HEAD..origin/main   ← ran (read-only git is safe-listed)
14

📟Vitals at a glance

The sysinfo plugin keeps load and battery in the status bar; a dashboard when you want more.

 sysinfo
cpu 12% · mem 9.2/32 GB · disk 412/994 GB
load 2.1 1.8 1.6 · battery 84% (charging)
04 · automate the boring

Jobs do it while you don't

📦Multi-repo sweeps

Read-only agents shine at boring audits — fan them out as background jobs.

 for r in api web infra; do
    (cd $r && @job list GPL deps with versions --agent reviewer --bg)
  done
 @job   # three jobs running, three logs

🧾Data wrangling without man pages

Stop googling awk syntax. Review the one-liner, then run it.

 @ai sum column 3 of sales.csv grouped by column 1
 awk -F, '{s[$1]+=$3} END {for (k in s) print k, s[k]}' sales.csv

🗂Batch renames, reviewed first

The command is printed before anything moves — edit it, then commit.

 @ai rename all *.jpeg here to *.jpg
 press Enter to run (or edit)
 for f in *.jpeg; do mv "$f" "${f%.jpeg}.jpg"; done

🗓The Friday report, from git

Your week, summarized from what actually merged — as a job, into a file.

 @job summarize this week's merged PRs into WEEK.md --bg
▶ background job 1753116000-8104
 done · 38s — WEEK.md written

🔤Convert anything, hash anything

The encode plugin: base64, hex, URL, JSON, SHA, UUID — no web tools, nothing leaves your machine.

 b64 "user:pass"        # dXNlcjpwYXNz
 sha release.tar.gz     # 9f86d08…a4c2
 uuid                   # 8f4e…-…-c21a

🔌Plug your company tools in — MCP

Declare a Model-Context-Protocol server under ai/mcp/; its tools join the catalog as mcp.<server>.<tool>.

# ~/.aiTerminal/ai/mcp/jira.toml
 @coder "what's assigned to me this sprint?"
  ⚙ mcp.jira.search {"assignee":"me"} · 240ms · 1.8KB
Three tickets: API-231 (rate limits), API-238, INFRA-12.

🌐Translate your terminal's strings

i18n as data: hand the catalog to an agent, get a locale back.

 @job translate i18n/en.toml to German into i18n/de.toml --bg
 done — 41 keys, same structure, CI parity holds
05 · everyday superpowers

The thousand little wins

🏝Work / personal / ops identities

Profiles switch theme, AI models, plugins and the whole saved workspace in one command.

 @profile work
switched to profile 'work' — applies within a second
# Opus for work, local Ollama for personal — different pools per profile

🧠A terminal that remembers

Agents curate a BM25-ranked markdown memory (memory.* tools) — recalled automatically in every future run.

 @coder "remember: deploys go through make ship, never push main directly"
  ⚙ memory.add {"kind":"decision"} · 3ms · 96B
recalled automatically in future runs — plain markdown, no database

✂️Edit the command like a text field

⌥/⌘ arrows jump by word or line ends; add ⇧ to select. Type to replace, ⌫ deletes, Esc cancels, ⌘C copies — pure zsh, the lineedit plugin.

 cargo test --workspace   # ⇧⌥← selected the flag
 cargo test --doc          # typed over it — replaced in place
# a light band, your syntax colors stay on top · Enter on a mouse selection copies it

🗜Extract anything, jump anywhere

x handles 15+ archive formats; jump learns your directories by frecency.

 x release.tar.zst        # extracted → ./release/
 j terminal               # → ~/Data/Projects/the-terminal

📝Notes at the prompt

Capture the thought without leaving the flow — notes lists them back.

 note "rotate the staging certs before Friday"
 note "bump MSRV after 1.96 lands"
 notes   # 2 notes

🔎Search 18 engines without a browser tab first

Google, Stack Overflow, GitHub, MDN, crates.io, PyPI — straight from the prompt.

 so "borrow checker E0502 split at mut"
 crates "toml parser no_std"

🎨Make the 20th theme yours

@theme export prints the full normalized TOML — the perfect starting point.

 @theme export midnight > ~/.aiTerminal/themes/mine.toml
 vim ~/.aiTerminal/themes/mine.toml   # change accent, done
 @theme mine
theme 'mine' applied — running shells restyle too

📦Ship agents inside the repo

A project-local ai/ folder shadows the global set — clone the repo, get its agents.

 ls ai/agents/
api-reviewer.md   migration-writer.md
 @api-reviewer "check my changes against our API rules"
✦ @api-reviewer · claude-opus-4-8   ← the repo's own agent

🤝Onboard the new teammate

Point them at the repo with aiTerminal installed — the codebase explains itself.

 @ai where do I add a new API route in this project?
Routes live in api/routes.rs; each handler is a file in
api/handlers/. Register it in ROUTES, add a table test…
Get aiTerminal →