Claude Code Power User Guide
Battle-tested prompts, CLAUDE.md rules, and workflow tricks from 180 sessions
This is the post I wish I'd read before my first session. No theory, no hype — just the specific things that make Claude Code dramatically more effective.
The Prompts That Work
Break long sessions into focused tasks
Many of my 'mostly_achieved' sessions (50 total) follow a pattern: 3-4 tasks are completed successfully, then the final task gets interrupted mid-planning. For example, one session did a demo lobby, bug fixes, cost analysis, AND ownership transfer planning. By starting a fresh session for each major feature, I'll get better focus and cleaner git history. My 'fully_achieved' sessions (82) tend to be more focused.
Let's focus on one thing this session: implement [FEATURE]. After we have a working PR, I'll start a new session for the next task.
Add 'no planning mode' guardrails for implementation tasks
At least 5 sessions were rated 'not_achieved' or 'slightly_helpful' because Claude spent 8+ minutes reading files and writing plans without producing code. This is my most consistent frustration pattern. When I already know what I want, be direct about skipping the exploration phase. My best sessions are the ones where Claude starts coding immediately — like the Calendly connector (12 files, 1,352 lines in one session).
Skip planning. I already know what I want. Start implementing immediately: [describe feature]. If you hit a blocker, ask me — don't spend time exploring the codebase.
Front-load deployment verification
Multiple sessions had post-push friction: Vercel env vars with trailing newlines causing 500 errors, migrations failing silently, build failures from server/client component mismatches. I deploy frequently (21 deployment sessions), so adding a pre-deployment checklist prompt would save significant debugging time. The Stripe Connect session and MCP endpoint 500 error are prime examples of issues caught too late.
Before we push this PR, run through a deployment checklist: 1) Verify the build passes locally, 2) Check if any new env vars are needed, 3) Verify any Supabase migrations will apply cleanly, 4) Confirm no server/client component boundary violations.
Features You're Probably Not Using
Custom Skills
Reusable prompts for repetitive workflows triggered by a single /command.
I have highly repetitive workflows: creating PRs (11 sessions), running code reviews, and deploying. A /pr skill could combine type-checking, building, committing, and PR creation into one command — eliminating the multi-step friction seen in many sessions.
mkdir -p .claude/skills/pr && cat > .claude/skills/pr/SKILL.md << 'EOF'
## Create PR Skill
1. Run `npx tsc --noEmit` and fix any type errors
2. Run `npm run build` and fix any build errors
3. Check current branch is not main (abort if so)
4. Verify all changes are committed
5. Push to origin with `gh auth setup-git && git push`
6. Create PR with `gh pr create --fill`
7. Report the PR URL
EOF
Hooks
Shell commands that auto-run at specific lifecycle events like before committing.
With 53 buggy-code friction events and 47 wrong-approach events, auto-running type checks and builds before commits would catch the most common class of errors (TypeScript failures, build breaks) before they're pushed.
Add to .claude/settings.json:
{
"hooks": {
"preCommit": {
"command": "npx tsc --noEmit && npm run build",
"description": "Type-check and build before every commit"
}
}
}
Task Agents
Claude spawns focused sub-agents for parallel exploration or complex work.
My architecture audit session already used 8 parallel sub-agents successfully. With 42 bug-fix sessions and complex multi-file changes (98 success events), I could use task agents more deliberately — e.g., 'use an agent to investigate the root cause while I describe the symptoms' or for parallel exploration of large codebases before implementation.
Try prompting: "Use a task agent to explore all the MCP tool handlers and list any that don't properly await async database operations, while you start fixing the ones I already know about in the simulator service."
CLAUDE.md: The Most Underrated Feature
Your CLAUDE.md file is loaded at the start of every session. It's the single highest-leverage thing you can configure. Here are the rules I'd add based on 180 sessions of friction data:
Add this rule: When asked to implement a feature, START CODING IMMEDIATELY. Do not spend more than 2 minutes reading files and planning before producing actual code. If you need to explore, do it incrementally while building.
Why it matters: Multiple sessions (5+) were derailed by Claude spending entire sessions in planning/exploration loops without producing any code, leading to user interruption and 'not_achieved' outcomes.
Add this rule: This is a Next.js + TypeScript + Supabase project deployed on Vercel. Always ensure files with JSX use .tsx extension. Always run npx tsc --noEmit before committing to catch type errors. Do not use cookies().delete() in Server Components — use Server Actions or Route Handlers for cookie mutations.
Why it matters: Recurring friction across sessions: .ts vs .tsx rename issues, type errors surfacing after implementation, and a production error from cookie deletion in a Server Component — all preventable with upfront guardrails.
Add this rule: When deploying to Vercel or setting env vars via CLI, always confirm the correct Vercel project is linked first with vercel link. Trim all environment variable values with .trim() to prevent trailing newline issues.
Why it matters: Multiple sessions hit friction from Vercel CLI linking to the wrong project and from trailing newlines in env vars causing 500 errors in production.
Add this rule: When working with Supabase migrations, always verify migrations actually executed (not ghost-applied) by checking the actual database state after running them. If Supabase CLI isn't authenticated for cloud push, tell the user immediately rather than proceeding with local-only changes.
Why it matters: A critical bug fix appeared complete but the migration was ghost-applied (recorded but never executed), requiring a repair migration. Supabase auth issues blocked deploys in multiple sessions.
Add this rule: For git push operations: try SSH first, then HTTPS with gh auth setup-git as fallback. Always push to the correct branch (main vs feature branch). Never push to a feature branch that has already been merged.
Why it matters: Multiple sessions had git push friction — SSH/HTTPS failures, and one session accidentally pushed to an already-merged feature branch instead of main.
Add this rule: When using sub-agents/Task tool for parallel work, limit to 4-5 concurrent agents max. Summarize sub-agent results concisely rather than feeding full outputs back into the main context.
Why it matters: A session dispatching 11+ parallel sub-agents overwhelmed the context window, causing every response to be truncated with 'Prompt is too long' errors.
Add this rule: Never screenshot localhost URLs — always use the production/deployed URL. Never include hardcoded API keys or secrets in committed code. Always check for sensitive data before committing.
Why it matters: Sessions hit friction from attempting to screenshot localhost (redirected to login) and from a hardcoded API key nearly being committed in a 62-file commit.
The One-Minute Setup That Prevents Most Problems
If you only do one thing from this post, do this: add a pre-commit hook that runs your type checker. Most of the bugs Claude ships are type errors that would be caught instantly.
// .claude/settings.json
{
"hooks": {
"preCommit": {
"command": "npx tsc --noEmit && npm run build"
}
}
}
This single change would have prevented the majority of my 53 buggy code incidents.