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

Prevents

Strategy / personal context / business intel leaking from your private chat into the team Slack.

The rule

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

Prevents

Editing the wrong production app because the strongest matched memory was from a different repo. Treat it as seriously as `rm -rf`.

The rule

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

Prevents

The build-90%-then-get-excited-about-the-next-thing pattern. Three half-shipped products instead of one finished one.

The rule

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

Prevents

Wasted wall time when the work is embarrassingly parallel. Queueing coding agents serially when they could be running concurrently.

The rule

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

Prevents

Writing wrong code from stale training-data memory, then having to fix half of it after the user catches it.

The rule

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

Prevents

The human waiting on a 'typing...' indicator while the agent runs a 15-minute investigation. Main session blocked on background work.

The rule

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

Prevents

Agents optimizing for the wrong metric and drifting their own identity over time.

The rule

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'

Prevents

Lessons evaporating between sessions. The same mistake getting re-learned every Monday.

The rule

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

Prevents

Repeating yesterday's failures from scratch. Re-discovering the same gotcha three times a quarter.

The rule

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

Prevents

The agent dominating group chats with low-value 'thanks!' messages, or worse — speaking on the human's behalf without authorization.

The rule

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.