12 min left
Ado Kukic

Ado Kukic

Developer & Writer

Advent of Claude: 31 Days of Claude Code

A comprehensive guide to Claude Code's most powerful features, from quick shortcuts to advanced agent patterns.

Guide
12 min read

Contents

Throughout December, I shared one Claude Code tip per day on X/Twitter and LinkedIn. What started as a simple advent calendar became a map of the features that have fundamentally changed how I write software. This post compiles all 31 tips into a comprehensive guide, reorganized from beginner essentials to advanced patterns, and adds additional context that can't be covered in 280 characters.

Whether you’re just getting started or looking to level up with Claude Code, there’s something here for you.


Getting Started

Before diving into features, set up Claude Code to understand your project.

/init — Let Claude Onboard Itself Onto Your Project

Everybody needs onboarding docs. With /init, Claude writes its own.

Claude reads your codebase and generates a CLAUDE.md file with:

  • Build and test commands
  • Key directories and their purposes
  • Code conventions and patterns
  • Important architectural decisions

This is the first thing I run in any new project.

For larger projects, you can also create a .claude/rules/ directory for modular, topic-specific instructions. Each .md file in this directory is automatically loaded as project memory alongside your CLAUDE.md. You can even use YAML frontmatter to apply rules conditionally based on file paths:

---
paths: src/api/**/*.ts
---
# API Development Rules
- All API endpoints must include input validation

Think of CLAUDE.md as your general project guide, and .claude/rules/ as focused supplements for testing, security, API design, or anything else that deserves its own file.

Memory Updates

Want to save something to Claude’s memory without manually editing CLAUDE.md? In the past, you were able to start your prompt with a # and whatever came after, Claude would append to the end of your Claude.md file. As of Claude Code 2.0.70, this is no longer the case, and now you can just tell Claude to update the Claude.md file for you.

Just tell Claude to remember it:

“Update Claude.md: always use bun instead of npm in this project”

Keep coding without breaking your flow.

@ Mentions — Add Context Instantly

@ mentions are the fastest way to give Claude context:

  • @src/auth.ts — Add files to context instantly
  • @src/components/ — Reference entire directories
  • @mcp:github — Enable/disable MCP servers

File suggestions are ~3x faster in git repositories and support fuzzy matching. @ is the fastest path from “I need context” to “Claude has context.”


Essential Shortcuts

These are the commands you’ll use constantly. Commit them to muscle memory.

The ! Prefix — Run Bash Instantly

Don’t waste tokens asking “can you run git status?”

Just type ! followed by your bash command:

! git status
! npm test
! ls -la src/

The ! prefix executes bash instantly and injects the output into context. No model processing. No delay. No wasted tokens. No need for multiple terminal windows.

This seems small until you realize you’re using it fifty times a day.

Double Esc to Rewind

Want to try a “what if we…” approach without committing to it?

Go wild. If it gets weird, press Esc twice to jump back to a clean checkpoint.

You can rewind the conversation, the code changes, or both. One thing to note here is that Bash commands run cannot be undone.

Your past prompts are searchable:

KeyAction
Ctrl+RStart reverse search
Ctrl+R (again)Cycle through matches
EnterRun it
TabEdit first

Don’t retype. Recall. This works seamlessly with slash commands too.

Prompt Stashing

It’s like git stash, but for your prompt.

Ctrl+S saves your draft. Send something else. Your draft auto-restores when you’re ready.

No more copying to a scratchpad. No more losing your train of thought mid-conversation.

Prompt Suggestions

Claude can predict what you’ll ask next.

Finish a task, and sometimes you’ll see a grayed-out follow-up suggestion appear:

KeyAction
TabAccept and edit
EnterAccept and run immediately

Tab used to autocomplete your code. Now it autocompletes your workflow. Toggle this feature via /config.


Session Management

Claude Code is a persistent development environment and optimizing it to your workflow will allow you to do so much more.

Continue Where You Left Off

Accidentally closed your terminal? Laptop died mid-task? No problem.

claude --continue    # Picks up your last conversation instantly
claude --resume      # Shows a picker to choose any past session

Context preserved. Momentum restored. Your work is never lost. You can also customize how long sessions are preserved via the cleanupPeriodDays setting. By default it is 30 days, but you can set it as long as you want, or even 0 if you don’t want to preserve your Claude Code sessions.

Named Sessions

Your git branches have names. Your Claude sessions should too.

/rename api-migration       # Names your current session
/resume api-migration       # Resumes by name
claude --resume api-migration  # Works from the command line too

The /resume screen groups forked sessions and supports keyboard shortcuts: P for preview, R for rename.

Claude Code Remote

Start a task on the web, finish it in your terminal:

# On claude.ai/code, start a Claude Code session
# It runs in the background while you're away

# Later, from your terminal:
claude --teleport session_abc123

This pulls and resumes the session locally. Claude at home and on the go. Also works via the Claude mobile app for iOS and Android, as well as the Claude Desktop app.

/export — Get Receipts

Sometimes you need a record of what happened.

/export dumps your entire conversation to markdown:

  • Every prompt you sent
  • Every response Claude gave
  • Every tool call and its output

Perfect for documentation, training, or proving to your past self that yes, you did already try that approach.


Productivity Features

These features remove friction and help you move faster.

Vim Mode

Tired of reaching for the mouse to edit your prompts?

Type /vim and unlock full vim-style editing:

CommandAction
h j k lNavigate
ciwChange word
ddDelete line
w bJump by word
AAppend at end of line

Edit prompts at the speed of thought. Your muscle memory from decades of vim use finally pays off in an AI tool. And it’s never been easier to exit vim with Claude Code, just type /vim again.

/statusline — Customize Your View

Claude Code has a customizable status bar at the bottom of your terminal.

/statusline lets you configure what appears there:

  • Git branch and status
  • Current model
  • Token usage
  • Context window percentage
  • Custom scripts

Information at a glance means fewer interruptions to check on things manually.

/context — X-Ray Vision for Tokens

Ever wonder what’s eating your context window?

Type /context to see exactly what’s consuming your tokens:

  • System prompt size
  • MCP server prompts
  • Memory files (CLAUDE.md)
  • Loaded skills and agents
  • Conversation history

When your context starts filling up, this is how you figure out where it’s going.

/stats — Your Usage Dashboard

2023: "Check out my GitHub contribution graph"
2025: "Check out my Claude Code stats"

Type /stats to see your usage patterns, favorite models, usage streaks, and more.

Orange is the new green.

/usage — Know Your Limits

“Am I about to hit my limit?”

/usage        → Check your current usage with visual progress bars
/extra-usage  → Purchase additional capacity

Know your limits. Then exceed them.


Thinking & Planning

Control how Claude approaches problems.

Ultrathink

Trigger extended thinking on demand with a single keyword:

> ultrathink: design a caching layer for our API

When you include ultrathink in your prompt, Claude allocates up to 32k tokens for internal reasoning before responding. For complex architectural decisions or tricky debugging sessions, this can be the difference between a surface-level answer and genuine insight.

In the past you were able to specify think, think harder, and ultrathink to allocate different amounts of tokens for thinking, but we’ve since simplified this into a single thinking budget. The ultrathink keyword only works when MAX_THINKING_TOKENS is not set. When MAX_THINKING_TOKENS is configured, it takes priority and controls the thinking budget for all requests.

Plan Mode

Clear the fog of war first.

Press Shift+Tab twice to enter Plan mode. Claude can:

  • Read and search your codebase
  • Analyze architecture
  • Explore dependencies
  • Draft implementation plans

But it won’t edit anything until you approve the plan. Think twice. Execute once.

I default to plan mode 90% of the time. The latest version lets you provide feedback when rejecting plans, making iteration faster.

Extended Thinking (API)

When using the Claude API directly, you can enable extended thinking to see Claude’s step-by-step reasoning:

thinking: { type: "enabled", budget_tokens: 5000 }

Claude shows its reasoning in thinking blocks before responding. Useful for debugging complex logic or understanding Claude’s decisions.


Permissions & Safety

Power without control is just chaos. These features let you set boundaries.

Sandbox Mode

"Can I run npm install?" [Allow]
"Can I run npm test?" [Allow]
"Can I cat this file?" [Allow]
"Can I pet that dawg?" [Allow]
×100

/sandbox lets you define boundaries once. Claude works freely inside them.

You get speed with actual security. The latest version supports wildcard syntax like mcp__server__* for allowing entire MCP servers.

YOLO Mode

Tired of Claude Code asking permission for everything?

claude --dangerously-skip-permissions

This flag says yes to everything. It has “danger” in the name for a reason—use it wisely, ideally in isolated environments or for trusted operations.

Hooks

Hooks are shell commands that run at predetermined lifecycle events:

  • PreToolUse / PostToolUse: Before and after tool execution
  • PermissionRequest: Automatically approve or deny permission requests
  • Notification: React to Claude’s notifications
  • SubagentStart / SubagentStop: Monitor agent spawning

Configure them via /hooks or in .claude/settings.json.

Use hooks to block dangerous commands, send notifications, log actions, or integrate with external systems. It’s deterministic control over probabilistic AI.


Automation & CI/CD

Claude Code works beyond interactive sessions.

Headless Mode

You can use Claude Code as a powerful CLI tool for scripts and automation:

claude -p "Fix the lint errors"
claude -p "List all the functions" | grep "async"
git diff | claude -p "Explain these changes"
echo "Review this PR" | claude -p --json

AI in your pipeline. The -p flag runs Claude non-interactively and outputs directly to stdout.

Commands — Reusable Prompts

Save any prompt as a reusable command:

Create a markdown file, and it becomes a slash command that can additionally accept arguments:

/daily-standup              → Run your morning routine prompt
/explain $ARGUMENTS         → /explain src/auth.ts

Stop repeating yourself. Your best prompts deserve to be reusable.


Browser Integration

Claude Code can see and interact with your browser.

Claude Code + Chrome

Claude can now directly interact with Chrome:

  • Navigate pages
  • Click buttons and fill forms
  • Read console errors
  • Inspect the DOM
  • Take screenshots

“Fix the bug and verify it works” is now one prompt. Install the Chrome extension from claude.ai/chrome.


Advanced: Agents & Extensibility

This is where Claude Code becomes truly powerful.

Subagents

Santa doesn’t wrap every gift himself. He has elves.

Subagents are Claude’s elves. Each one:

  • Gets its own 200k context window
  • Performs specialized tasks
  • Runs in parallel with others
  • Merges output back to the main agent

Delegate like Santa. Subagents can run in the background while you continue working, and they have full access to MCP tools.

Agent Skills

Skills are folders of instructions, scripts, and resources that teach Claude specialized tasks.

They’re packaged once and usable everywhere. And since Agent Skills are now an open standard, they work across any tool that supports them.

Think of skills as giving Claude expertise on demand. Whether that’s your company’s specific deployment process, a testing methodology, or a documentation standard.

Plugins

Remember when sharing your Claude Code setup meant sending 47 files across 12 directories?

That era is over.

/plugin install my-setup

Plugins bundle commands, agents, skills, hooks, and MCP servers into one package. Discover new workflows via the marketplace, which includes search filtering for easier discovery.

Language Server Protocol (LSP) Integration

Language Server Protocol (LSP) support gives Claude IDE-level code intelligence:

LSP integration provides:

  • Instant diagnostics: Claude sees errors and warnings immediately after each edit
  • Code navigation: go to definition, find references, and hover information
  • Language awareness: type information and documentation for code symbols

Claude Code now understands your code the way your IDE does.

Claude Agent SDK

The same agent loop, tools, and context management that power Claude Code are now available as an SDK. Build agents that work like Claude Code in as little as 10 lines of code:

import { query } from '@anthropic-ai/claude-agent-sdk';

for await (const msg of query({
  prompt: "Generate markdown API docs for all public functions in src/",
  options: {
    allowedTools: ["Read", "Write", "Glob"],
    permissionMode: "acceptEdits"
  }
})) {
  if (msg.type === 'result') console.log("Docs generated:", msg.result);
}

This is just the beginning.


Quick Reference

Keyboard Shortcuts

ShortcutAction
!commandExecute bash immediately
Esc EscRewind conversation/code
Ctrl+RReverse search history
Ctrl+SStash current prompt
Shift+Tab (×2)Toggle plan mode
Alt+P / Option+PSwitch model
Ctrl+OToggle verbose mode
Tab / EnterAccept prompt suggestion

Essential Commands

CommandPurpose
/initGenerate CLAUDE.md for your project
/contextView token consumption
/statsView your usage statistics
/usageCheck rate limits
/vimEnable vim mode
/configOpen configuration
/hooksConfigure lifecycle hooks
/sandboxSet permission boundaries
/exportExport conversation to markdown
/resumeResume a past session
/renameName current session
/themeOpen theme picker
/terminal-setupConfigure terminal integration

CLI Flags

FlagPurpose
-p "prompt"Headless/print mode
--continueResume last session
--resumePick a session to resume
--resume nameResume session by name
--teleport idResume a web session
--dangerously-skip-permissionsYOLO mode

Closing Thoughts

When I started this advent calendar, I thought I was just sharing tips. But looking back at these 31 days, I see something more: a philosophy of human-AI collaboration.

The best features in Claude Code are about giving you control. Plan mode. Agent Skills. Hooks. Sandbox boundaries. Session management. These are tools for working with AI, not surrendering to it.

The developers who get the most out of Claude Code aren’t the ones who type “do everything for me.” They’re the ones who’ve learned when to use Plan mode, how to structure their prompts, when to invoke ultrathink, and how to set up hooks that catch mistakes before they happen.

AI is a lever. These features help you find the right grip.

Here’s to 2026.


Have a favorite Claude Code feature I missed? Found an error in this guide or have a suggestion? Let me know on Twitter or open an issue on the Claude Code repository.

Ado Kukic

Written by

Ado Kukic

Developer, writer, and perpetual learner. I write about technology, creativity, and the intersection of craft and code. Currently exploring what it means to build things that matter.

Code