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.
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:
$ ! 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.
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.