08 / 10 · Anti-patterns

What not to do

A short tour of the shapes of sessions that produced bad outcomes — so you can recognize them when they happen to you.

"Fix the bug"

> there's a bug in the campaign code, fix it

Wrong because: no ticket (no source of truth), "there's a bug" (describe it), "fix it" (what's the desired behavior?). Better:

> /chowly:implement_jira TEAM-11843

Paragraph dump on turn 1

Stream-of-consciousness prose mixing scope, constraints, and style. Claude has to parse intent from prose; it loses track. Same content, structured cleanly, produces drastically better outcomes.

"Make it better"

> make this code better

"Better" is undefined; scope is unbounded. Use /chowly:cleanup or be explicit:

> use the senior-engineering-mentor agent on this file. Look for
  DRY violations and god methods specifically. Don't change public APIs.

Skip the plan

> just implement TEAM-12084. Don't bother with a plan, I trust you.

Plans aren't for trust — they're for redirect. Without one, you can't catch scope errors before they're baked into a diff. There is no better version of this. Always plan.

Vague rejection

> no, do it differently

"Differently" means infinite directions. Say which direction:

> no, use openrouter not gemini direct.

"Let me give you more context"

> wait actually let me explain the whole architecture of our email system… [3000 words]

That context belonged in turn 1. Now it inserts a wall of text into a session that was already in flow, often duplicating context Claude has already pulled. When you realize there's missing context, name what's missing and let Claude pull it: "there's an existing email service at app/services/email/sender.rb that handles a similar pattern. Read that first; pattern-match to it."

Counter-planning in chat

When the agent presents a plan, don't write a counter-plan. Approve, reject (and direct), or ask questions.

Wrong: "let me write you a different plan: 1. do X. 2. do Y. 3. ..."

Better: "close to right, but reorder: X should come after Y. Also drop step 3 — out of scope."

"Auto-approve everything"

> approve all changes without asking, just go

Removes your highest-leverage moment. The slash commands' permission model exists for a reason.

Ignoring the AI review

> /chowly:code_review
[review surfaces issues]
> Create a PR

You ran a review and acted on none of it. Either fix the issues or explain why they're false positives.

Long sessions

A session that's been going for 4 hours, 100 turns, and is at 80% context use is not productive. It's a context bog. Ship what you have, archive the workspace, start fresh on the next chunk in a new workspace.

"Claude, what should I do?"

When stuck, asking Claude to make a product decision is out of scope. Claude can list options; the decision is yours.

Wrong: "should we use webhooks or polling?"

Better: "list the trade-offs of webhooks vs polling. I'll decide."

Recognize-the-shape rule. If you're typing paragraphs every turn, if you're approving without reading the plan, if you're reaching for "just trust me, do it" — that's a session that won't ship cleanly. Stop, narrow, and start over with a slash command.