Each rule below came from a real mistake, and each says what went wrong. Put the ones
that apply into your project's CLAUDE.md and your agent's global instructions.
A read-only walk through a signed-in site missed two bugs the owner then found within minutes. "Remove" on a completed item left it on screen, and a list/grid toggle broke every card. Reading pages can't exercise actions, and it can't see "the click worked but the screen didn't change".
workflows/browser-flow-testing.md.No "fixed", "passing" or "deployed" without the command output that shows it. A deploy is done when the live site shows the change and the flow passed against production, not when the script exited 0. If something was skipped, say so.
Build what the owner or client actually asked for. A feature built on an assumption (a waiting list the club did not run) had to be removed. A pitch with invented features reads as not having listened. When a client gives no requirements: list the questions, don't answer them yourself. The same applies to design tools. Forbid invented testimonials, user counts, features and data in every brief.
Say every recurring cost as "$X per month, until you remove it". Server snapshots, for example, bill monthly forever: take one only before a risky change, and delete it right after. Before fanning out parallel agents or design generations, say it will use a large share of the plan's usage limit.
The second time the same job is done (a password reset built for two apps), turn it into a reusable skill. Keep what transfers: the decisions, the infrastructure steps and the traps. Leave out what doesn't: the code (different hashing libraries, CSS systems and test harnesses per app). This kit is that idea applied to everything.
CLAUDE.md (PR-and-stop / branch / deploys).workflows/parallel-agents.md).main, switch back to your working branch. Committing on main
by accident was caught only by a pre-push hook.When learning is the goal, go step by step. Once the owner says "take control", run the commands yourself and explain what you ran and why. Handing them things to paste after that is friction. Don't tell them to stop or rest; offer the next step.
Never cat a .env or a config holding tokens. Print key names, or pipe values
straight into the next command. Run provider API calls from the server that holds the
key, so the key never travels. Never publish IPs, tokens or real users' data, including
in docs and screenshots.
Status lines on a portfolio ("a pitch, not a commission", "in progress"), in summaries, and in commit messages stay honest. Upgrading the wording to sound better costs more trust than it earns.