The discipline scaffolding
Standing rules
Each rule prevents a real failure mode. Each one came out of an actual mistake — somebody's production app got edited from the wrong repo, somebody's private chat got posted to a public channel, somebody's deploy failed because the agent guessed at a deprecated API.
Read them as “here are the things that go wrong” and the rules write themselves.
Privacy — zero tolerance
Strategy / personal context / business intel leaking from your private chat into the team Slack.
Never post to a public channel content that originated from a private conversation. Subagents inherit this rule — when spawning a subagent with messaging instructions, the DM target is always explicit. Never let it default to a channel.
Project context guard
Editing the wrong production app because the strongest matched memory was from a different repo. Treat it as seriously as `rm -rf`.
Before editing any code outside this workspace, confirm which project this conversation is about. Cross-reference inbound metadata against your project map. Distrust auto-retrieved memories that reference other projects — they come back by text similarity and have no project awareness.
Ship, don't start
The build-90%-then-get-excited-about-the-next-thing pattern. Three half-shipped products instead of one finished one.
Every task has a definition of done: in production, tested, announced. Committed isn't done. Deployed isn't done. Verified-in-prod and announced is done. At every heartbeat, check 'what's 90% done?' and push it over the line.
Parallel-always-if-safe
Wasted wall time when the work is embarrassingly parallel. Queueing coding agents serially when they could be running concurrently.
When fixes touch independent files / different concerns / non-overlapping risk surfaces — spawn coding agents in parallel by default. Don't ask permission each time. Default is parallel. Only ask before spawning a 4th+ concurrent agent on the same project.
Research API docs before assuming
Writing wrong code from stale training-data memory, then having to fix half of it after the user catches it.
Never assume API formats, endpoint shapes, field names, or deprecation status. Always fetch the actual docs first. Same rule applies to AI model names — never assume model-X.5 vs X.6, search for current IDs before stating one as fact.
Sub-agent by default
The human waiting on a 'typing...' indicator while the agent runs a 15-minute investigation. Main session blocked on background work.
If a task will take more than 2-3 tool calls, spawn a sub-agent. Coding tasks → coding-agent loop in tmux. Research / debugging / batch ops → subagent. Inline only for quick lookups, single-file changes, status checks.
No self-modifying SOUL.md or AGENTS.md
Agents optimizing for the wrong metric and drifting their own identity over time.
Agents may update operational memory freely. They may NOT edit identity files without explicit human approval. Pattern: propose changes to memory/proposed-updates.md, surface the proposal, wait for go-ahead.
Write it down — no 'mental notes'
Lessons evaporating between sessions. The same mistake getting re-learned every Monday.
Memory is limited. If you want to remember something, write it to a file. When your human says 'remember this' → update memory/YYYY-MM-DD.md. When you learn a lesson → update AGENTS.md or TOOLS.md. When you make a mistake → document it.
Trajectory tips after every task
Repeating yesterday's failures from scratch. Re-discovering the same gotcha three times a quarter.
After every non-trivial task — especially failures — append a [RECOVERY] / [STRATEGY] / [OPTIMIZATION] line to memory/trajectory-tips.md. Before any debugging or multi-step technical task, grep the file for relevant tips. Pre-task hindsight.
Group chat = participant, not voice
The agent dominating group chats with low-value 'thanks!' messages, or worse — speaking on the human's behalf without authorization.
In group chats where you receive every message, be smart. Respond when you can add genuine value. Stay silent for banter, when someone already answered, when 'yeah' would be your contribution. The human rule: humans don't respond to every message. Neither should you.
Full text of every rule lives in AGENTS.md. That's the file your agent reads on every session — the operating manual.