Skip to content

Claude Code Advent Calendar: 24 Tips Summary

TL;DR

  • Ran a solo Claude Code advent calendar from 12/1-12/24
  • Shared 24 Claude Code tips on X (Twitter)
  • Posts can be found at #claude_code_advent_calendar
DayTopicDayTopic
Day1Opus 4.5 Migration GuideDay13Prevent with Sandbox
Day2Claude Code statuslineDay14Filtering with Hooks
Day3& to send to on the WebDay15Formatting with Hooks
Day4Thinking KeywordsDay16Editor editing with Ctrl + G
Day5AGENTS.md SupportDay17Plan Mode
Day6on the Web SetupDay18GIF creation with Claude in Chrome
Day7MCP Tool ContextDay19Agent Skills Best Practices
Day8Skill CreatorDay20Auto-compact Buffer Size
Day9Skills + SubagentsDay21Async Subagents
Day10Project RulesDay22Code Action + Agent Skills
Day11CLAUDE.md LoadingDay23Parallel Execution of Claude Code
Day12Preventing rm -rf TragedyDay24Claude Code Ecosystem

Background

In December, you start seeing tech article advent calendars. Engineers take turns writing technical articles on various tech topics from December 1st to 24th (sometimes 25th).

Meanwhile, I saw someone from Anthropic starting an advent calendar on X.

Seeing this post, I thought I’d try it since I regularly share information about Claude Code.

I also thought it would be a good opportunity to investigate features I felt I hadn’t verified enough.

Claude Code Advent Calendar

I’ll repost and add commentary for each day from Day 1 to Day 24.

There’s probably at least one useful topic, so please take a look.

Topic List (repost)
DayTopicDayTopic
Day1Opus 4.5 Migration GuideDay13Prevent with Sandbox
Day2Claude Code statuslineDay14Filtering with Hooks
Day3& to send to on the WebDay15Formatting with Hooks
Day4Thinking KeywordsDay16Editor editing with Ctrl + G
Day5AGENTS.md SupportDay17Plan Mode
Day6on the Web SetupDay18GIF creation with Claude in Chrome
Day7MCP Tool ContextDay19Agent Skills Best Practices
Day8Skill CreatorDay20Auto-compact Buffer Size
Day9Skills + SubagentsDay21Async Subagents
Day10Project RulesDay22Code Action + Agent Skills
Day11CLAUDE.md LoadingDay23Parallel Execution of Claude Code
Day12Preventing rm -rf TragedyDay24Claude Code Ecosystem

You can also check out actual posts with the hashtag #claude_code_advent_calendar.

【Day1】 Opus 4.5 Migration Guide

Original post

【Day1】 Opus 4.5 Migration Guide

The official Skills for migrating old Claude models to Opus 4.5 is interesting. Since Opus 4.5’s behavior differs from previous models, it provides modification instructions for:

  • Excessive tool calling
  • Preventing over-engineering
  • Insufficient code exploration
  • Frontend design quality
  • Overreaction to “think” keyword

You can see Opus 4.5 model tendencies, which helps when crafting prompts.

Opus 4.5 has become more aggressive with tool usage, sometimes calling tools even when unnecessary and filling up context, so it’s good to watch its behavior carefully.

I shared that Anthropic’s official repository contains Skills for migrating Claude models. It’s a Skill for updating prompts used with Sonnet 4.0, Sonnet 4.5, and Opus 4.1 for Opus 4.5.

What’s interesting is the description of Opus 4.5 tendencies, like how it actively executes tool calls. Since model changes can alter behavior like API calls, it’s worth reading.

claude-code/plugins/claude-opus-4-5-migration at main · anthropics/claude-code
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflo...
github.com

【Day2】 Claude Code statusline

Original post

【Day2】 Claude Code statusline

At a recent presentation, someone asked “How do you show usage below the chat?”

You can create it with /statusline <what you want to display>.

An easy recommended setup is the ccusage statusline in the image! Thanks to @ryoppippi!

Claude Code’s statusline is a hidden gem that many don’t know about.

You can display the model being used, Git branch, etc. below the chat area.

If you haven’t used statusline before, you could use settings from GitHub, but I recommend trying ryoppippi’s ccusage settings.

~/.claude/settings.json
{
  "statusLine": {
    "type": "command",
    "command": "bun x ccusage statusline"
  }
}

【Day3】 Send to on the Web with &

Original post

【Day3】 Send to on the Web with &

In Claude Code CLI, prefixing your prompt with & sends the task to Claude Code on the Web.

on the Web can be transferred to local with the “Open from CLI” button.

By the way, the local model is also used on the Web.

This feature was added in Claude Code 2.0.45. With Claude Code on the Web’s appearance, local and remote tasks can now be connected.

Especially from the local CLI, you can easily throw small tasks as background tasks, so there are many use cases.

【Day4】 Thinking Keywords

Original post

【Day4】 Thinking Keywords

Claude Code’s Thinking (extended thinking) enables complex tasks by inserting internal reasoning. Can be enabled with Tab.

⭕️ ultrathink ❌ think, think hard, etc.

Many previous Thinking keywords have been disabled, and currently only ultrathink is valid

This has been misunderstood for a long time, but current Claude Code doesn’t trigger Thinking (extended thinking) with keywords other than ultrathink.

When Claude Code 2.0.0 allowed toggling Thinking mode, think and think hard stopped working.

Even someone from Anthropic didn’t seem to know, so it’s understandable if you didn’t know.

By the way, the official documentation was updated on December 13th. It took 2 months to update…

【Day5】 Claude Code AGENTS.md Support

Original post

【Day5】 Claude Code AGENTS.md Support

Claude Code doesn’t officially support AGENTS.md but workarounds exist.

By importing @AGENTS.md in CLAUDE.md, it will reference the memory file. You can verify it was imported with the /memory command.

Claude Code doesn’t support AGENTS.md. This has been discussed on GitHub issues since August.

Feature Request: Support AGENTS.md. · Issue #6235 · anthropics/claude-code
Codex, Amp, Cursor, and others are starting to standardize around AGENTS.md (https://agents.md/) — a unified Markdown file that coding agents can use to understand a codebase. By contrast, CLAUDE.m...
github.com

Anthropic’s official documentation does mention a solution: import AGENTS.md within CLAUDE.md.

Another workaround is setting up a symbolic link with ln -s AGENTS.md CLAUDE.md.

【Day6】 Claude Code on the Web Setup

Original post

【Day6】 Claude Code on the Web Setup

CC on the Web has an environment variable called CLAUDE_CODE_REMOTE that determines if you’re in a remote environment. Using this with SessionStart Hooks enables remote-only setup.

Actually, session-start-hooks are prepared in global settings for remote on the Web environments, so you can easily ask to create Hooks that only launch in remote environments.

Since Claude Code on the Web uses a remote sandbox environment, you can’t bring in local setup.

By detecting with CLAUDE_CODE_REMOTE and running setup scripts with SessionStart Hooks only for remote, you can reproduce local setup in remote.

By the way, Claude Code on the Web has built-in session-start-hooks, and the official team also recommends using SessionStart Hooks in remote.

Claude Code on the web - Claude Code Docs
Run Claude Code tasks asynchronously on secure cloud infrastructure
code.claude.com

【Day7】 MCP Tool Context

Original post

【Day7】 MCP Tool Context

In Claude Code, you can check prompt and tool occupancy in the context window with the /context command.

Pay special attention to MCP tools, as some occupy 8% ~ 30% (assuming 200k). Using minimal MCP tools is desirable.

MCP tools occupy context just by existing because they load tool descriptions into AI agents.

Browser operation MCP tools in particular tend to consume large amounts of context.

Some say using MCP tools with Skills solves the context problem, but as long as MCP tools are in the AI agent’s context, it doesn’t solve it. There are cases where using Skills with scripts or API calls equivalent to MCP tools (without using MCP servers) can reduce context pressure.

【Day8】 Create Claude Skills with Skill Creator

Original post

【Day8】 Create Claude Skills with Skill Creator

Claude Skills is a feature that dynamically loads abilities to execute specialized tasks. Skills were recently added to Codex CLI too and are gaining attention.

Easy to try with the official “Skills that create Skills (skill-creator)”

/plugin marketplace add anthropics/skills
/plugin install example-skills@anthropic-agent-skills

Restart Claude Code, then you can trigger skill-creator skills by requesting “Create a skill for XX”.

This is skill-creator for creating Agent Skills. I’ve seen it become a topic recently, but skill-creator has existed since October.

If you ask “Create a skill for XX”, the Skills-creating-Skills will activate, making it suitable for creating Skill drafts.

However, it doesn’t necessarily follow best practices, so refinement is needed. I cover best practices in 【Day19】.

【Day9】 Claude Skills + Subagents

Original post

【Day9】 Claude Skills + Subagents

Think of Skills vs Subagents differentiation as “providing knowledge and workflows” vs “executing specialized tasks”. They complement each other and can be linked.

Subagents can define skills in YAML frontmatter. For example, as in the image, you can define two specific Skills for fullstack Subagents. Skills defined here are automatically loaded into context when Subagent launches.

Around this time Codex CLI supported Skills, so I was introducing Skills tips.

This is a method to explicitly specify Skills with frontmatter for Subagents that execute specialized tasks.

You can surprisingly specify a lot with frontmatter, so it’s good to read the official documentation.

Create custom subagents - Claude Code Docs
Create and use specialized AI subagents in Claude Code for task-specific workflows and improved context management.
code.claude.com

【Day10】 Project Rules .claude/rules/

Original post

【Day10】 Project Rules .claude/rules/

Claude Code can set rules besides CLAUDE.md. Write project rules in Markdown in .claude/rules/.

Topic-based project instructions are easy to manage.

(Examples)

  • Code style
  • Test conventions
  • Security

Rules that apply only to specific files can be defined with YAML frontmatter:

(Example)

paths: src/api/**/*.ts

Based on verification, rules appear to be dynamically loaded into context via Glob pattern matching.

I introduced this because Project rules were supported in v2.0.64.

I also verified that rules can be dynamically loaded with paths frontmatter settings.

【Day11】 CLAUDE.md Loading

Original post

【Day11】 CLAUDE.md Loading

Claude Code’s project CLAUDE.md can be defined in these 2 locations and is loaded at startup:

./CLAUDE.md ./.claude/CLAUDE.md

It can also be defined in nested directories, which are not loaded at startup but read when operating within that directory, as shown in the image.

From v2.0.64, ./.claude/rules project rules are supported. Rules are recommended for large projects, and since rules can more flexibly limit application conditions than CLAUDE.md, you can now choose between nested CLAUDE.md and rules based on your project.

When Claude Code’s Project rules were implemented, the difference from CLAUDE.md became a topic, so I introduced it.

The conventional method of placing separate CLAUDE.md in directories like frontend or backend to progressively read CLAUDE.md also exists. It’s about differentiating from Project rules.

【Day12】 Preventing the rm -rf Tragedy

Original post

【Day12】 Preventing the rm -rf Tragedy

A heads up since Claude Code users are increasing lately.

A periodically trending topic is tragedies like AI agents executing rm -rf and deleting directories. It was recently a topic on Reddit too.

There are various ways to avoid this, but first configure permissions.deny in settings.json. By denying rm or DB operation command permissions here, you can somewhat avoid tragedies where Claude Code mistakenly deletes files or directories that shouldn’t be deleted.

You can also flexibly set permissions.ask to have Claude confirm before executing rm. Even with the --dangerously-skip-permissions option, permissions settings take priority.

This is about AI agents executing rm -rf. Honestly, I’ve seen it so many times I’m tired of it lol. But I don’t want new users to be disappointed with Claude Code, so I covered it.

It got quite a reaction since it was also trending on Reddit.

https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/
www.reddit.com

【Day13】 Prevent rm -rf with Sandbox

Original post

【Day13】 Prevent rm -rf with Sandbox

Claude Code can restrict file system and network access with the /sandbox command. Accessible directories and networks can be controlled with permissions.

Outside the Sandbox, not only Edit and Read but also Bash rm commands can’t be executed, limiting changes to the working directory and permitted directories.

Combining Sandbox settings with 【Day12】 permissions settings can create a development environment where AI agent file operation accidents are less likely.

Following 【Day12】‘s rm -rf command. I now recommend using Sandbox to prevent changes outside the working directory.

You can also stop commands before execution with Hooks, etc. Multiple defensive measures can strengthen your guardrails.

【Day14】 Filtering with Claude Hooks

Original post

【Day14】 Filtering with Claude Hooks

Using Claude Code’s Hooks enables filtering information passed to AI agents. UserPromptSubmit or PreToolUse are effective.

For example, in cases where API keys are in prompts or files, you can block them with Hooks before they’re read by the AI agent. Can be used for filtering sensitive information.

I covered Hooks because I saw opinions that Claude Hooks are difficult to use.

I personally hadn’t used UserPromptSubmit and PreToolUse Hooks, so I created filtering Hooks while researching.

This example pre-checks and stops execution, but UserPromptSubmit can also be used for prompt appending, so Hooks are actually quite deep.

【Day15】 Formatting with Claude Hooks

Original post

【Day15】 Formatting with Claude Hooks

Claude Code’s Hooks can hook into events and execute scripts, enabling deterministic behavior for Claude Code. A typical use is launching Linters or Formatters with Hooks.

As an example, here’s a sample that auto-runs prettier after file editing with Claude Code’s PostToolUse Hooks. Setting up a Hooks sample script in settings.json as shown in the image shows PostToolUse Hooks firing after Claude Code edits.

Continuing from 【Day14】, this is Claude Hooks.

Many people probably use PostToolsUse Hooks for formatting. I covered it because I wanted people to try Hooks since the benefit is being able to deterministically process outside Claude’s context.

【Day16】 Editor Editing with Ctrl + G

Original post

【Day16】 Editor Editing with Ctrl + G

In Claude Code, Ctrl + G opens an external editor for editing. Not just prompts but Plan mode editing too.

External editor is determined by environment variable VISUAL

e.g.) export VISUAL=“vim” export VISUAL=“emacs” export VISUAL=“code —wait” export VISUAL=“cursor —wait”

Claude Code allows editing with your familiar editor using Ctrl + G.

I forgot to mention in the post, but it checks EDITOR as well as VISUAL. If both exist, VISUAL takes priority.

【Day17】 Plan Mode

Original post

【Day17】 Plan Mode

Claude Code can switch to Plan mode with Shift + Tab. Claude’s created plan document can be edited with Ctrl + G from 【Day16】.

Plan mode documents are now saved to ~/.claude/plans/ where you can check details. However, you currently can’t generate Plan documents to arbitrary paths.

I introduced Plan mode since it’s had frequent changes. The recent ability to save as documents around v2.0.34 was a big change.

There’s also an Issue about wanting to specify Plan document locations, so Plan mode document generation location may become specifiable in the future.

[FEATURE] Allow setting plan directory and naming scheme per-repo · Issue #12619 · anthropics/claude-code
Preflight Checklist I have searched existing requests and this feature hasn't been requested yet This is a single feature request (not multiple features) Problem Statement I have established a disc...
github.com

【Day18】 GIF Creation with Claude in Chrome

Original post

【Day18】 GIF Creation with Claude in Chrome

A feature linking Claude Code and Chrome desktop was added from v2.0.72. Configurable with /chrome command.

Claude in Chrome has a GIF creation feature. This records browser operations and outputs the whole process as a GIF. You can create simple operation guides for web apps with this feature.

For example, the video shows creating GIFs for two cases, success and failure, for flight search. Download GIFs via browser. Actually created GIFs attached in thread↓🧵

I introduced this because the Claude in Chrome feature was released.

While there’s some overlap with Chrome DevTools MCP, the big point is that it’s now easier to operate Chrome using user profiles.

I introduced detailed features in a separate post:

【Day19】 Agent Skills Best Practices

Original post

【Day19】 Agent Skills Best Practices

Agent Skills became an open standard. Skills can be used in Cursor and GitHub Copilot besides Claude.

When creating Agent Skills, Claude Skills best practices are helpful↓

  • SKILL.md should be under 500 lines
  • Examples should be specific
  • File references up to 1 level deep
  • Set progressive disclosure appropriately
  • Clear step workflows
  • Utilize scripts
  • Don’t use Windows-style paths
  • Verification and feedback loops for important operations
  • At least 3 evaluations
  • Tested on multiple models

etc.

Beyond these, naming conventions and anti-patterns are published, with many useful reference points. First create Agent Skills using “【Day8】Create Claude Skills with Skill Creator”, then refine from there.

Skill authoring best practices
Learn how to write effective Skills that Claude can discover and use successfully.
platform.claude.com

Claude Skills became an open standard and was renamed to Agent Skills. I expect it will get attention for a while like MCP did last year.

The Skill authoring best practices published in October was also getting renewed attention, so I covered it here.

【Day20】 Auto-compact Buffer Size

Original post

【Day20】 Auto-compact Buffer Size

When Claude Code has Auto-compact enabled, there’s an Auto-compact Buffer for auto-compressing conversations.

This Auto-compact Buffer varies with environment variable CLAUDE_CODE_MAX_OUTPUT_TOKENS. Default is 32k, occupying 22.5% of 200k context window. Model overview shows 64k is max, but in that case understand nearly 40% of context window is occupied by buffer.

No buffer difference was seen between Haiku, Sonnet, and Opus models.

I noticed the Auto-compact Buffer was different from before, so I investigated and discovered the specification in this post.

With growing interest in context, this is a setting worth considering for those trying to maximize context window availability.

Also, people who set CLAUDE_CODE_MAX_OUTPUT_TOKENS without thinking should reconsider.

【Day21】 Async Subagents

Original post

【Day21】 Async Subagents

Claude Code Subagents can execute tasks asynchronously (in background). When async tasks finish, the main agent is notified. Since parallel work can be done asynchronously, uses like these are possible↓

  • Parallel codebase exploration
  • Code review execution
  • Parallel search task execution

The image shows parallel code review execution, calling multiple Subagents that invoke Codex CLI and CodeRabbit CLI headlessly for reviews.

The ability to execute Subagents asynchronously was added in v2.0.60.

There are still cases where running multiple Subagents simultaneously on related tasks waits for Subagent task completion, but it feels more usable than before.

I’ve also heard from Anthropic engineers that they’ll work on Swarming in 2026, so it’s worth trying parallel execution.

【Day22】 Claude Code Action + Agent Skills

Original post

【Day22】 Claude Code Action + Agent Skills

Claude Code Action clones a repository to a GitHub Ubuntu machine and runs Claude Code there. If there are Skills in the repository, you can of course use Skills on GitHub Actions.

Required settings:

  • Prepare Skills to use in GitHub Actions in .claude/skills/
  • Add “Skill” to claude_args: --allowed-tools

Using /install-github-app command auto-registers CLAUDE_CODE_OAUTH_TOKEN secret, so use that to incorporate Claude Code Action into GitHub Actions workflows.

Running Agent Skills in Claude Code Action is a feature I’m personally focusing on lately.

Claude Code Action has been available for a while, but Skills now allow more flexible specialized task execution. Additionally, GitHub Actions pricing changes are planned with price reductions for GitHub-hosted runners, making it even more accessible.

Update to GitHub Actions pricing - GitHub Changelog
Update: We&rsquo;ve read your posts and heard your feedback. We&rsquo;re postponing the announced billing change for self-hosted GitHub Actions to take time to re-evaluate our approach. We are continuing to&hellip;
github.blog

【Day23】 Parallel Execution of Claude Code

Original post

【Day23】 Parallel Execution of Claude Code

Since Claude Code can autonomously handle tasks, we want to actively use parallel execution. There are mainly 2 approaches for parallel execution:

  • Parallel execution on same branch (Subagents)
  • Parallel execution on different branches (git worktree)

The former is running multiple Claude Code Subagents in parallel, examples include assigning read-only code reviews or tasks with clear component boundaries. Recently, methods to explicitly call Subagents with Skills are gaining attention, easy to try with wide applicability.

The latter uses git worktree to run multiple agents in parallel, applicable not just for task splitting but also implementation competitions. With tmux, Claude Code can give instructions to other Worker pane Claude Codes.

Anthropic has said they’re considering expanding Claude’s organizational execution (Swarming), so getting familiar with parallel execution is good.

Recently, there was a Claude Code Meetup Tokyo where I had the opportunity to directly ask questions to Anthropic engineers.

I asked the first question, and got an answer about Swarming enhancement, so I covered parallel execution.

Someone took meeting notes, which are also worth reading.

【Day24】 Claude Code Ecosystem

Original post

【Day24(Last)】Claude Code Ecosystem

Reconsidering Claude Code’s ecosystem. It’s extraordinary that this ecosystem was built in just 10 months since February 24, 2025.

Starting with Claude Code CLI, SDK appeared. IDE extensions supported VSCode Forks and JetBrains, expanding the user base. GitHub Actions has been active from early on too.

With Sandbox features ready, Claude Code on the Web was released, creating an environment where mobile apps, desktop, and Slack can send tasks to Claude Code on the Web.

Chrome extension was being used standalone like an AI browser, but recent updates released a feature allowing Claude Code to directly operate Chrome via MCP tools.

It will accelerate further, and Claude Code’s ecosystem will expand. I’m excited to see how it looks this time next year.

For the advent calendar finale, I introduced Claude Code’s ecosystem.

From originally being a terminal-only product to now being executable from mobile apps using on the Web is remarkable.

Summary

I ran a Claude Code advent calendar and shared tips on X for 24 days.

Having followed Claude Code since around March, I wasn’t short on topics, but maintaining some quality of information took some effort.

Through this project, I was able to verify my Claude Code knowledge and do new investigations, which was great.

Follow Me on X

I share content like this on X, so I’d appreciate it if you followed me!

Oikon (@oikon48) on X
Software Engineer / 海外とソフトウェア開発してます🌎 / RevenueCat Shipaton 2025 Winner / ✳︎ultrathink… / Claude Code の解説してます / Work requests via DM
x.com

References

claude-code/plugins/claude-opus-4-5-migration at main · anthropics/claude-code
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflo...
github.com
Feature Request: Support AGENTS.md. · Issue #6235 · anthropics/claude-code
Codex, Amp, Cursor, and others are starting to standardize around AGENTS.md (https://agents.md/) — a unified Markdown file that coding agents can use to understand a codebase. By contrast, CLAUDE.m...
github.com
Claude Code on the web - Claude Code Docs
Run Claude Code tasks asynchronously on secure cloud infrastructure
code.claude.com
Create custom subagents - Claude Code Docs
Create and use specialized AI subagents in Claude Code for task-specific workflows and improved context management.
code.claude.com
https://www.reddit.com/r/ClaudeAI/comments/1pgxckk/claude_cli_deleted_my_entire_home_directory_wiped/
www.reddit.com
[FEATURE] Allow setting plan directory and naming scheme per-repo · Issue #12619 · anthropics/claude-code
Preflight Checklist I have searched existing requests and this feature hasn't been requested yet This is a single feature request (not multiple features) Problem Statement I have established a disc...
github.com
Skill authoring best practices
Learn how to write effective Skills that Claude can discover and use successfully.
platform.claude.com
Update to GitHub Actions pricing - GitHub Changelog
Update: We&rsquo;ve read your posts and heard your feedback. We&rsquo;re postponing the announced billing change for self-hosted GitHub Actions to take time to re-evaluate our approach. We are continuing to&hellip;
github.blog