diff --git a/README.md b/README.md index 71fdbb5..d719eb0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # claude-code-best-practice practice makes claude perfect -![updated with Claude Code](https://img.shields.io/badge/updated_with_Claude_Code-v2.1.78%20(Mar%2018%2C%202026%2011%3A43%20PM%20PKT)-white?style=flat&labelColor=555) GitHub Stars +![updated with Claude Code](https://img.shields.io/badge/updated_with_Claude_Code-v2.1.79%20(Mar%2019%2C%202026%2011%3A59%20AM%20PKT)-white?style=flat&labelColor=555) GitHub Stars [![Best Practice](!/tags/best-practice.svg)](best-practice/) *Click on this badge to show the latest best practice*
[![Implemented](!/tags/implemented.svg)](implementation/) *Click on this badge to show implementation in this repo*
diff --git a/best-practice/claude-commands.md b/best-practice/claude-commands.md index 8b086f4..2c9e9e8 100644 --- a/best-practice/claude-commands.md +++ b/best-practice/claude-commands.md @@ -1,6 +1,6 @@ # Commands Best Practice -![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2018%2C%202026%2011%3A40%20PM%20PKT-white?style=flat&labelColor=555)
+![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2019%2C%202026%2011%3A54%20AM%20PKT-white?style=flat&labelColor=555)
[![Implemented](https://img.shields.io/badge/Implemented-2ea44f?style=flat)](../implementation/claude-commands-implementation.md) Claude Code commands — frontmatter fields and official built-in slash commands. diff --git a/best-practice/claude-settings.md b/best-practice/claude-settings.md index cf5388c..2c13969 100644 --- a/best-practice/claude-settings.md +++ b/best-practice/claude-settings.md @@ -1,8 +1,8 @@ # Claude Code Settings Reference -![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2019%2C%202026%2012%3A15%20AM%20PKT-white?style=flat&labelColor=555) ![Version](https://img.shields.io/badge/Claude_Code-v2.1.78-blue?style=flat&labelColor=555) +![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2019%2C%202026%2012%3A49%20PM%20PKT-white?style=flat&labelColor=555) ![Version](https://img.shields.io/badge/Claude_Code-v2.1.79-blue?style=flat&labelColor=555) -A comprehensive guide to all available configuration options in Claude Code's `settings.json` files. As of v2.1.78, Claude Code exposes **60+ settings** and **100+ environment variables** (use the `"env"` field in `settings.json` to avoid wrapper scripts). +A comprehensive guide to all available configuration options in Claude Code's `settings.json` files. As of v2.1.79, Claude Code exposes **60+ settings** and **100+ environment variables** (use the `"env"` field in `settings.json` to avoid wrapper scripts). @@ -370,10 +370,10 @@ Configure bash command sandboxing for security. | `sandbox.network.httpProxyPort` | number | - | HTTP proxy port 1-65535 (custom proxy) | | `sandbox.network.socksProxyPort` | number | - | SOCKS5 proxy port 1-65535 (custom proxy) | | `sandbox.network.allowManagedDomainsOnly` | boolean | `false` | Only allow domains in managed allowlist (managed settings) | -| `sandbox.filesystem.allowWrite` | array | `[]` | Path prefixes where write is allowed. Prefix: `//` (absolute), `~/` (home), `/` (project root), `./` (cwd) | -| `sandbox.filesystem.denyWrite` | array | `[]` | Path prefixes where write is denied | -| `sandbox.filesystem.denyRead` | array | `[]` | Path prefixes where read is denied | -| `sandbox.filesystem.allowRead` | array | `[]` | Path prefixes to re-allow read access within `denyRead` regions. Use to carve out exceptions inside broadly denied paths | +| `sandbox.filesystem.allowWrite` | array | `[]` | Additional paths where sandboxed commands can write. Arrays are merged across all settings scopes. Prefix: `/` (absolute), `~/` (home), `./` or none (project-relative in project settings, `~/.claude`-relative in user settings). The older `//` prefix for absolute paths still works. **Note:** This differs from [Read/Edit permission rules](#tool-permission-syntax), which use `//` for absolute and `/` for project-relative | +| `sandbox.filesystem.denyWrite` | array | `[]` | Paths where sandboxed commands cannot write. Arrays are merged across all settings scopes. Same path prefix conventions as `allowWrite` | +| `sandbox.filesystem.denyRead` | array | `[]` | Paths where sandboxed commands cannot read. Arrays are merged across all settings scopes. Same path prefix conventions as `allowWrite` | +| `sandbox.filesystem.allowRead` | array | `[]` | Paths to re-allow read access within `denyRead` regions. Takes precedence over `denyRead`. Arrays are merged across all settings scopes. Same path prefix conventions as `allowWrite` | | `sandbox.filesystem.allowManagedReadPathsOnly` | boolean | `false` | **(Managed only)** Only `allowRead` paths from managed settings are respected. `allowRead` entries from user, project, and local settings are ignored | | `sandbox.enableWeakerNetworkIsolation` | boolean | `false` | (macOS only) Allow access to system TLS trust (`com.apple.trustd.agent`); reduces security | @@ -644,6 +644,9 @@ Set environment variables for all Claude Code sessions. | `ANTHROPIC_API_KEY` | API key for authentication | | `ANTHROPIC_AUTH_TOKEN` | OAuth token | | `ANTHROPIC_BASE_URL` | Custom API endpoint | +| `ANTHROPIC_CUSTOM_MODEL_OPTION` | Model ID to add as a custom entry in the `/model` picker. Use to make a non-standard or gateway-specific model selectable without replacing built-in aliases | +| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Display name for the custom model entry in the `/model` picker. Defaults to the model ID when not set | +| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Display description for the custom model entry in the `/model` picker. Defaults to `Custom model ()` when not set | | `ANTHROPIC_MODEL` | Name of the model to use. Accepts aliases (`sonnet`, `opus`, `haiku`) or full model IDs. Overrides the `model` setting | | `ANTHROPIC_DEFAULT_HAIKU_MODEL` | Override the Haiku model alias with a custom model ID (e.g., for third-party deployments) | | `CLAUDECODE` | Set to `1` in shell environments Claude Code spawns (Bash tool, tmux sessions). Not set in hooks or status line commands. Use to detect when a script is running inside a Claude Code shell | @@ -676,7 +679,7 @@ Set environment variables for all Claude Code sessions. | `CLAUDE_CODE_ACCOUNT_UUID` | Override account UUID for authentication | | `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Disable git-related system prompt instructions | | `CLAUDE_CODE_NEW_INIT` | Set to `true` to make `/init` run an interactive setup flow. Asks which files to generate (CLAUDE.md, skills, hooks) before exploring the codebase. Without this, `/init` generates a CLAUDE.md automatically | -| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Path to a read-only plugin seed directory. Bundle a pre-populated plugins directory into a container image. Claude Code registers marketplaces from this directory at startup and uses pre-cached plugins without re-cloning | +| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Path to one or more read-only plugin seed directories, separated by `:` on Unix or `;` on Windows. Bundle pre-populated plugins into a container image. Claude Code registers marketplaces from these directories at startup and uses pre-cached plugins without re-cloning | | `ENABLE_CLAUDEAI_MCP_SERVERS` | Enable Claude.ai MCP servers | | `CLAUDE_CODE_EFFORT_LEVEL` | Set effort level: `low`, `medium`, `high`, `max` (Opus 4.6 only), or `auto` (use model default). Takes precedence over `/effort` and the `effortLevel` setting | | `CLAUDE_CODE_MAX_TURNS` | Maximum agentic turns before stopping *(not in official docs — unverified)* | @@ -724,7 +727,7 @@ Set environment variables for all Claude Code sessions. | `ANTHROPIC_DEFAULT_OPUS_MODEL` | Override Opus model alias (e.g., `claude-opus-4-6[1m]`) | | `ANTHROPIC_DEFAULT_SONNET_MODEL` | Override Sonnet model alias (e.g., `claude-sonnet-4-6`) | | `MAX_THINKING_TOKENS` | Maximum extended thinking tokens per response | -| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Auto-compact window behavior configuration | +| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Set the context capacity in tokens used for auto-compaction calculations. Defaults to the model's context window (200K standard, 1M for extended context models). Use a lower value (e.g., `500000`) on a 1M model to treat it as 500K for compaction. Capped at actual context window. `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` is applied as a percentage of this value. Setting this decouples the compaction threshold from the status line's `used_percentage` | | `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Enable prompt suggestions | | `CLAUDE_CODE_PLAN_MODE_REQUIRED` | Require plan mode for sessions | | `CLAUDE_CODE_TEAM_NAME` | Team name for agent teams | diff --git a/best-practice/claude-skills.md b/best-practice/claude-skills.md index ee907c6..e044d1b 100644 --- a/best-practice/claude-skills.md +++ b/best-practice/claude-skills.md @@ -1,6 +1,6 @@ # Skills Best Practice -![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2018%2C%202026%2011%3A38%20PM%20PKT-white?style=flat&labelColor=555)
+![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2019%2C%202026%2011%3A54%20AM%20PKT-white?style=flat&labelColor=555)
[![Implemented](https://img.shields.io/badge/Implemented-2ea44f?style=flat)](../implementation/claude-skills-implementation.md) Claude Code skills — frontmatter fields and official bundled skills. diff --git a/best-practice/claude-subagents.md b/best-practice/claude-subagents.md index 7eeb4e1..deb814f 100644 --- a/best-practice/claude-subagents.md +++ b/best-practice/claude-subagents.md @@ -1,6 +1,6 @@ # Sub-agents Best Practice -![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2018%2C%202026%2011%3A41%20PM%20PKT-white?style=flat&labelColor=555)
+![Last Updated](https://img.shields.io/badge/Last_Updated-Mar%2019%2C%202026%2011%3A56%20AM%20PKT-white?style=flat&labelColor=555)
[![Implemented](https://img.shields.io/badge/Implemented-2ea44f?style=flat)](../implementation/claude-subagents-implementation.md) Claude Code subagents — frontmatter fields and official built-in agent types. diff --git a/changelog/best-practice/claude-commands/changelog.md b/changelog/best-practice/claude-commands/changelog.md index e081357..b5471cc 100644 --- a/changelog/best-practice/claude-commands/changelog.md +++ b/changelog/best-practice/claude-commands/changelog.md @@ -70,3 +70,11 @@ | 3 | MED | New Alias | Add `/allowed-tools` alias to `/permissions` | ✅ COMPLETE (added alias to #7 in Config tag) | | 4 | MED | New Argument | Add `[N]` argument syntax to `/copy` | ✅ COMPLETE (updated to `/copy [N]` at #28 in Export tag) | | 5 | LOW | Frontmatter Scope | 6 skill-only fields absent from report (intentional scoping) | ❌ INVALID (skill-only fields — same determination as v2.1.74 and v2.1.77 runs) | + +--- + +## [2026-03-19 11:54 AM PKT] Claude Code v2.1.79 + +| # | Priority | Type | Action | Status | +|---|----------|------|--------|--------| +| 1 | LOW | Frontmatter Scope | 6 skill-only fields absent from report (intentional scoping) | ❌ INVALID (skill-only fields — same determination as v2.1.74, v2.1.77, and v2.1.78 runs) | diff --git a/changelog/best-practice/claude-settings/changelog.md b/changelog/best-practice/claude-settings/changelog.md index f914dad..c96d732 100644 --- a/changelog/best-practice/claude-settings/changelog.md +++ b/changelog/best-practice/claude-settings/changelog.md @@ -154,4 +154,15 @@ | 9 | MED | Changed Description | Fix `CLAUDE_CODE_ENABLE_TASKS` description — official: "Set to true to enable task tracking in non-interactive mode (-p flag). Tasks are on by default in interactive mode." Report currently says "Set to false to disable" | ✅ COMPLETE (description corrected to match official docs) | | 10 | MED | Changed Description | Update `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` to note: "Equivalent of setting DISABLE_AUTOUPDATER, DISABLE_FEEDBACK_COMMAND, DISABLE_ERROR_REPORTING, and DISABLE_TELEMETRY" | ✅ COMPLETE (description updated with equivalent vars list) | | 11 | MED | Example Update | Remove `showTurnDuration` from Quick Reference example — doesn't belong in settings.json per official docs | ✅ COMPLETE (removed from Quick Reference example and Display & UX example) | -| 12 | LOW | Env Var Default | Verify `MCP_TIMEOUT` default (report says 10000) — official docs don't specify a default value | ✅ COMPLETE (removed unverified default — official docs omit it) | \ No newline at end of file +| 12 | LOW | Env Var Default | Verify `MCP_TIMEOUT` default (report says 10000) — official docs don't specify a default value | ✅ COMPLETE (removed unverified default — official docs omit it) | + +--- + +## [2026-03-19 12:38 PM PKT] Claude Code v2.1.79 + +| # | Priority | Type | Action | Status | +|---|----------|------|--------|--------| +| 1 | HIGH | Missing Env Vars | Add `ANTHROPIC_CUSTOM_MODEL_OPTION`, `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME`, `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` to Common Environment Variables table — model-config vars for adding custom entries to `/model` picker. Confirmed on official /en/env-vars page | ✅ COMPLETE (added 3 env vars after ANTHROPIC_BASE_URL in table) | +| 2 | HIGH | Changed Description | Update `CLAUDE_CODE_PLUGIN_SEED_DIR` from singular to plural: "Path to one or more read-only plugin seed directories, separated by `:` on Unix or `;` on Windows". Changed in v2.1.79 changelog. Confirmed on official /en/env-vars page | ✅ COMPLETE (description updated to multi-directory support) | +| 3 | HIGH | Sandbox Path Prefixes | Fix sandbox.filesystem path prefix documentation: `/` = absolute (standard Unix), `./` = project-relative, `//` = legacy still works. Report currently shows reversed convention. Official docs explicitly note: "This syntax differs from Read and Edit permission rules" | ✅ COMPLETE (updated all 4 sandbox.filesystem entries with correct prefix convention, added cross-reference note to Read/Edit permission rules, added merge-across-scopes detail) | +| 4 | MED | Changed Description | Expand `CLAUDE_CODE_AUTO_COMPACT_WINDOW` description — current "Auto-compact window behavior configuration" is too minimal. Official docs describe: token capacity, defaults (200K standard / 1M extended), interaction with `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`, status line decoupling | ✅ COMPLETE (expanded description with token capacity, model defaults, AUTOCOMPACT_PCT interaction, and status line decoupling) | \ No newline at end of file diff --git a/changelog/best-practice/claude-skills/changelog.md b/changelog/best-practice/claude-skills/changelog.md index 4924d87..f9a0c4f 100644 --- a/changelog/best-practice/claude-skills/changelog.md +++ b/changelog/best-practice/claude-skills/changelog.md @@ -35,3 +35,9 @@ No drift detected — frontmatter fields (10) and bundled skills (5) are fully s ## [2026-03-18 11:38 PM PKT] Claude Code v2.1.78 No drift detected — frontmatter fields (10) and bundled skills (5) are fully synchronized with official docs. + +--- + +## [2026-03-19 11:54 AM PKT] Claude Code v2.1.79 + +No drift detected — frontmatter fields (10) and bundled skills (5) are fully synchronized with official docs. diff --git a/changelog/best-practice/claude-subagents/changelog.md b/changelog/best-practice/claude-subagents/changelog.md index 9e28f4a..5eeb47c 100644 --- a/changelog/best-practice/claude-subagents/changelog.md +++ b/changelog/best-practice/claude-subagents/changelog.md @@ -68,3 +68,9 @@ No drift detected — report is fully in sync with official docs. All 13 frontma ## [2026-03-18 11:41 PM PKT] Claude Code v2.1.78 No drift detected — report is fully in sync with official docs. All 13 frontmatter fields and 6 built-in agents match. + +--- + +## [2026-03-19 11:56 AM PKT] Claude Code v2.1.79 + +No drift detected — report is fully in sync with official docs. All 13 frontmatter fields and 6 built-in agents match. diff --git a/changelog/best-practice/concepts/changelog.md b/changelog/best-practice/concepts/changelog.md index e2ed6a9..b8be7e0 100644 --- a/changelog/best-practice/concepts/changelog.md +++ b/changelog/best-practice/concepts/changelog.md @@ -126,3 +126,15 @@ Tracks drift between the README CONCEPTS table and official Claude Code document | 4 | LOW | Verification | All local badge file paths validated — no missing files | ✅ COMPLETE (all 20+ badge targets exist on filesystem) | | 5 | LOW | Verification | Memory anchor `#organize-rules-with-clauderules` confirmed on /memory page | ✅ COMPLETE (section heading exists) | | 6 | LOW | Verification | All CONCEPTS descriptions checked against official docs — no drift detected | ✅ COMPLETE (all descriptions accurate) | + +--- + +## [2026-03-19 11:59 AM PKT] Claude Code v2.1.79 + +| # | Priority | Type | Action | Status | +|---|----------|------|--------|--------| +| 1 | HIGH | Stale URL | Commands URL `/slash-commands` serves Skills page — docs say "commands merged into skills" | ❌ INVALID (RECURRING from 2026-03-10; URL still resolves; user chose to keep as-is) | +| 2 | LOW | Verification | All 30 external docs URLs validated — no broken links found | ✅ COMPLETE (all URLs return valid pages including /slash-commands redirect) | +| 3 | LOW | Verification | All local badge file paths validated — no missing files | ✅ COMPLETE (all 20+ badge targets exist on filesystem) | +| 4 | LOW | Verification | Memory anchor `#organize-rules-with-clauderules` confirmed on /memory page | ✅ COMPLETE (section heading exists) | +| 5 | LOW | Verification | All CONCEPTS descriptions checked against official docs — no drift detected | ✅ COMPLETE (all descriptions accurate) |