March 26, 2026

CLAUDE CODE: EVERY FEATURE I ACTUALLY USE

I typed "turn all of this into a dope ass blog post" into a terminal and went to make coffee.

By the time I got back, this page existed. The HTML. The meta tags. The sitemap entry. Matched to my existing blog's design, voice, and structure. Deployed.

Screenshot of Claude Code terminal showing the prompt that generated this blog post

The actual prompt that created this page. Not a mockup.

That's Claude Code. A terminal AI that reads your codebase, writes code, runs commands, and deploys. I use it to build iOS apps, maintain websites, run an e-commerce brand, and — apparently — write blog posts about itself.

Most people use maybe 10% of what it can do. I've been building with it daily for months. Here's everything I've found that actually matters.

That screenshot is real. This post was written the same way you'd ask a coworker to do something. Except the coworker reads your entire codebase first.

THE FIVE THAT CHANGED EVERYTHING

1. Shift+Tab — Permission Modes

By default, Claude asks permission on every file edit. Every single one. You're clicking "approve" forty times a session. It's the first thing that'll drive you crazy, and the first thing you should fix.

Hit Shift+Tab to cycle through permission modes:

Mode What Happens When I Use It
default Asks permission for everything Never, if I can help it
plan Shows the full approach before touching code Risky refactors, unfamiliar code
acceptEdits Auto-approves file reads and writes Trusted projects, daily work
auto AI classifier decides what's safe When I'm feeling brave

I run acceptEdits for projects I trust. plan for anything that could break things. This one change cut my interaction friction by 80%.

2. The ! Prefix — Direct Shell

Type ! before any command to run it directly in your shell:

$ ! git log --oneline -5
$ ! npm test
$ ! ls -la src/

Output goes straight into the conversation. No permission prompts, no waiting for Claude to decide what to run. Your command, your shell, instant. The difference between asking someone to check something and checking it yourself.

3. @ — File Autocomplete

Type @ and get autocomplete for any file in your project. Instead of describing where a file is or pasting a path, you just reference it. "Fix the bug in @src/auth/login.ts" and Claude has it open before you finish the sentence.

4. /compact — Context Hygiene

Claude Code has a context window. Long sessions fill it up. When it's full, things get fuzzy. Claude forgets what you said an hour ago. Starts repeating itself.

/compact compresses the conversation — keeps the important parts, drops the noise. I run this proactively every 20-30 minutes on deep sessions. Don't wait for auto-compaction. By then you've already lost nuance.

Pair it with /context to see a visual grid of what's consuming your tokens. It shows which tools, which files, and what's taking space. Helps you optimize before you hit the wall.

5. /init — Instant Project Context

Run /init in any repo. Claude scans the codebase and generates a CLAUDE.md — a file with your build commands, test commands, project conventions, and architecture notes. Every future session starts with full context.

Three seconds of setup. Pays off for months. Without it, you're re-explaining your project structure every conversation.

THE WORKFLOW LAYER

The first five features change how the tool feels. These next ones change how you work.

/resume — Pick Up Where You Left Off

Every session is auto-saved. /resume opens a picker of all past conversations. Jump back into yesterday's debugging session with full context intact.

Name your sessions with /rename so they're searchable later. I name mine by feature: "composed-drawer-refactor", "chai-checkout-flow". Six weeks from now when the bug comes back, you'll find the conversation.

/diff — See Everything at a Glance

After Claude makes changes, /diff shows you a clean diff viewer with per-turn breakdowns. Not just the final state — what happened at each step. It's the difference between reviewing a PR and watching someone code.

Headless Mode — Claude in Your Scripts

Run Claude without interaction. No terminal UI. Just input, processing, output.

# One-shot prompt
claude -p "Summarize this file" --allowedTools "Read"

# Pipe a diff for review
git diff | claude -p "Review for bugs" --output-format json

# Structured output matching a schema
claude -p "Extract all API endpoints" \
  --output-format json \
  --json-schema '{"type":"object","properties":{"endpoints":{"type":"array"}}}'

I use this in deployment scripts. Claude reviews changes automatically before anything goes live. No human in the loop for routine checks.

BEYOND THE FEATURES

Everything above is what Claude Code gives you out of the box. But the tool has three extension points that changed how I work entirely: rules, hooks, and custom commands.

Rules are markdown files in .claude/rules/ that auto-load every session. They define how Claude works before you type anything — coding standards, git workflow, quality gates. I have twelve.

Hooks are shell scripts that fire at lifecycle events. Mine intercept screenshots before they crash the session, block destructive commands like rm -rf, and preserve project state before context compression.

Custom commands are markdown files in .claude/commands/ that become slash commands. I type /audit composed and Claude spawns parallel agents for a full engineering audit. /gemini-review pipes my diff to a second AI for code review.

I built all of this into a system — 3 hooks, 10 rules, 2 commands, full permissions, and Gemini CLI as a second brain. Then I open-sourced it.

I wrote a full breakdown of the setup and how to install it in one line →

THE QUICK REFERENCE

The shortcuts I actually remember and use daily:

Shortcut What It Does
Shift+Tab Cycle permission modes
Ctrl+B Background a running task — keep typing while builds run
Ctrl+R Reverse search through prompt history
Ctrl+G Open current prompt in your text editor
Option+T Toggle extended thinking (harder reasoning)
Option+O Toggle fast mode
\ + Enter Multiline input (works in all terminals)
Esc Esc Rewind to previous state
/copy Copy last response to clipboard
/cost Token usage and dollar cost for the session
/context Visual grid of context window usage
/clear Wipe context between unrelated tasks

WHAT I WISH SOMEONE HAD TOLD ME

Three things I learned the hard way:

Run /compact before you need it. Once Claude starts losing context, quality drops fast. Compact proactively every 20-30 minutes on deep sessions. Use /compact "preserve: key details here" to tell it exactly what to keep. Don't wait for auto-compaction — by then you've already lost nuance.

Name your sessions. /resume is only useful if you can find what you're looking for. /rename takes two seconds. Future you will be grateful.

Start with /init, then keep going. The CLAUDE.md it generates is the foundation. The real power comes from adding rules, hooks, and commands on top. I open-sourced my full setup if you want a head start.

The terminal is the IDE now. The conversation is the interface.

THIS POST IS THE PROOF

The screenshot at the top is real. I typed a prompt. Claude read my existing blog for the HTML structure, my homepage for the format, and my sitemap for the SEO pattern. Then it produced this page, deployed it, and matched my voice.

Same terminal I use to build iOS apps. Same terminal I use to debug checkout flows. Same terminal I use to write marketing copy.

These are the features that make it real. And if you want the automation system I built on top of them — hooks, rules, commands, Gemini integration — I open-sourced that too.

If you're just starting: set your permission mode to acceptEdits, learn the ! prefix, and run /init. Everything else follows.