Your agents live in git: skill files are source code
Where does your best prompt live right now — a Notion page? A dashboard textarea? Agents should be code: diffed, reviewed, blamed, reverted.
Quick audit. Where does your team's best prompt live right now?
Be honest. A Notion page titled "Prompts v2 FINAL"? A textarea in some vendor's dashboard, last edited by someone who left in March? A Slack thread you'll never find again? A teammate's local notes?
That's not infrastructure. That's folklore.
Meanwhile, everything else your team depends on — the code, the CI config, the infra definitions — lives in git, because twenty years of hard lessons taught us what happens to important artifacts that don't: they drift, they fork, they silently break, and nobody knows who changed what or why.
Agents are now important artifacts. rysh's position is simple: they should be source code.
The agent is a file, so the file is the agent
In rysh, an agent's entire definition is a markdown skill file — YAML frontmatter
(name, description, optionally model), then the system prompt as the body:
---
name: code-reviewer
description: Correctness-first reviewer for this repo.
---
You are a meticulous reviewer for this repository.
Quote exact lines when you flag an issue. Propose a concrete fix.
If a diff touches actor code, check for state accessed outside
the mailbox. Never approve a change you haven't read.
Spawn it with ##agent spawn, or bring up a whole folder of them with ##agent spawn-all ./agents (https://rysh.ai/blog/agent-spawn-all). There is no other
definition hiding elsewhere — no server-side config that overrides the file, no
dashboard state that the file merely approximates. The file is the agent.
Which means every tool your team already trusts for code now works on your agents, for free.
What you inherit the moment agents are code
Diffs. A prompt change is a visible change. When someone loosens the reviewer — "be pragmatic about test coverage" replacing "never approve untested code" — that edit shows up in a diff, in red and green, where a human will actually see it. Compare that to a dashboard edit: invisible, unlogged, discovered three weeks later as "huh, the reviewer got soft."
Code review — for the reviewers. Skill files go through pull requests like everything else. The team argues about the test-writer's fixture conventions in PR comments, not in a meeting nobody remembers. Standing orders get the same scrutiny as the code they'll judge. There's something pleasingly recursive about your code reviewer's own instructions getting code-reviewed.
Blame. Agent behaving oddly since last week? git log -p agents/code-reviewer.md.
There's the edit, the author, the commit message, the PR link. "Why does it do that?"
becomes an answerable question instead of archaeology.
Revert. The new prompt made things worse. git revert. Done. Try rolling back a
textarea.
Branches. Want to trial a stricter reviewer without inflicting it on the team? Branch, edit, spawn from your branch, compare. Prompt experiments get the same workflow as code experiments — isolated, cheap, disposable.
Distribution. The folder travels with git clone. A new teammate inherits the
whole working roster on day one — same standards, same conventions, zero
copy-pasting from a wiki. And when anyone improves an agent, everyone gets the
improvement on the next pull. Prompt quality compounds — the thing dashboard-hosted
agents structurally cannot do, because improvements have nowhere shared to land.
It's not just the agents
The same principle runs through everything rysh treats as an artifact. Autonomous
browser automations are markdown recipes under .rysh/automations/ — including their
loop ceilings, token budgets, and their written definition of done, all of which show
up in a diff (https://rysh.ai/blog/loop-engineering). The safety envelope of an
unattended agent run is reviewable before it runs, in the same PR as the recipe
itself.
"What is this allowed to spend, and how do we know it's finished?" — answered in code review. That's a sentence most agent stacks cannot say.
The dashboard alternative, played forward
To be fair to dashboards: they demo well. Type a prompt, click save, watch it work. Day one is great.
Play it forward eighteen months. Forty prompts, edited by eleven people, no history, no review, no staging, live-editing production behavior in a textarea. Config drift with a chat interface. Every team that has operated real software has lived some version of this movie and knows how it ends — which is exactly why we invented infrastructure-as-code. Agents-as-code is the same lesson, applied one layer up. We don't have to relearn it the expensive way.
The honest part
rysh runs on Claude — you bring your own Anthropic key — and it's self-hostable, so both the engine and the files live on your infra. Git doesn't make a prompt good; you'll still write bad standing orders, merge them, and discover it later. The difference is you'll discover it with a diff, a culprit commit, and a one-command rollback — instead of a shrug.
Version control never made code correct either. It made code improvable. That's the property your agents are currently missing.
rysh is in private beta. If "agents in the repo, improved by pull request" matches how your team wants to work, we're onboarding design partners — free access, direct line to the founder: https://rysh.ai/design-partner
Related: Autonomous agents from a markdown file · Loop engineering: do/while for AI agents