* docs: sync to Claude Code v2.1.187
Sync the delta from v2.1.179 to v2.1.187 across six modules.
- slash-commands: reclassify `/review <pr>` as a supported PR-review entry
point (same engine as `/code-review medium`, v2.1.186), no longer deprecated
- advanced-features: `!` bash output now auto-responds (v2.1.186);
`/config key=value` shorthand + `--help` (v2.1.181/.183) and menu key
behavior; built-in intent-based auto-mode blocks for destructive git/IaC
commands (v2.1.183); `sandbox.credentials` / `sandbox.allowAppleEvents`
- subagents: `teammateMode: "iterm2"` display mode (v2.1.186)
- memory: `attribution.sessionUrl` setting (v2.1.183)
- mcp: `claude mcp login` / `claude mcp logout` CLI auth (v2.1.186)
- cli: `respondToBashCommands` setting; new env vars
`CLAUDE_CLIENT_PRESENCE_FILE`, `CLAUDE_CODE_MAX_RETRIES` (cap 15),
`CLAUDE_CODE_RETRY_WATCHDOG`, `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`
Footers on all touched files bumped to v2.1.187.
* fix(advanced-features): correct respondToBashCommands version framing
The ! bash auto-response feature landed in v2.1.186 (confirmed against the
official changelog). The previous 'Since v2.1.187 (changed in v2.1.186)'
wording was misleading and inconsistent with 10-cli/README.md, which
correctly tags respondToBashCommands as v2.1.186.
Optimize the lesson -> GitHub Pages conversion in build_website.py:
- BS4 single parse: thread one BeautifulSoup tree through heading-id
normalisation, TOC extraction, and link rewriting instead of
reparsing the rendered HTML 3x per page. Build drops 2.97s -> 1.77s
(~40% faster) on the ~222-page site; html.parser reparsing was the
dominant cost.
- Nav O(n^2) -> O(n): build the sidebar section grouping once
(build_nav_skeleton) and resolve per-page relative URLs in localize_nav,
removing ~49k redundant relative_link/grouping calls.
- Read each .md once: cache source text on PageInfo.content and reuse it
across collect_pages, render_pages, and copy_assets (was 2-3 reads/page).
- CI: enable uv cache and cache scripts/.vendor-cache so deploys skip cold
dep resolution and vendor (Tailwind/Mermaid/fonts) downloads.
Public string APIs (derive_page_title, render_markdown, extract_toc,
rewrite_links, normalise_heading_ids) preserved as thin wrappers over the
new soup-based cores. Full suite green (92 tests), ruff/mypy clean.
Output is semantically identical to the prior build; the only diff is raw
hand-written <img/> badges serializing as <img></img> (valid HTML5,
renders identically; nothing validates generated site HTML).
Additive sync over v2.1.176 baseline. No breaking changes, removals, or
deprecations in the v2.1.177-v2.1.179 window (v2.1.177 is a chore-only
release; v2.1.179 is bugfix-only plus a plugin perf note).
New in v2.1.178:
- 10-cli: document generalized Tool(param:value) parameter-matching
permission syntax (cites permissions reference for per-tool examples)
- 03-skills: nested .claude/skills/ collision rule (closest to cwd wins)
- 04-subagents: nested .claude/ precedence for agents/workflows/output-styles
- /doctor flat-tree layout refresh (10-cli, 01-slash-commands)
- /bug now requires a description before submit (01-slash-commands)
New in v2.1.179:
- 07-plugins: improved plugin loading performance in remote sessions
Footers on all five edited files bumped to v2.1.179 / June 17, 2026.
* docs: sync to Claude Code v2.1.176
Fix the subagent-nesting self-contradiction in 04-subagents and document
additive features shipped in v2.1.172-v2.1.176:
- 04-subagents: subagents can now spawn subagents (up to 5 levels, v2.1.172),
replacing the stale "no nested spawning" line; footer bumped to 2.1.176
- 07-plugins: /plugin marketplace search bar (v2.1.172)
- 10-cli: new settings.json keys wheelScrollAccelerationEnabled,
footerLinksRegexes, language (v2.1.174-v2.1.176)
- 09-advanced-features: enforceAvailableModels managed setting (v2.1.175)
- 06-hooks: if-condition tool-argument path matchers (verified against the
official permissions reference)
- claude_concepts_guide & CATALOG: subagent nesting note + VSCode /usage
attribution breakdown (v2.1.174)
* fix(10-cli): correct language setting scope and fix link-checker false positive
- check_links.py: skip bare-hostname captures (no dot in host) that URL_RE
truncates from regex strings in JSON config examples, e.g.
"https://jira\\.example\\.com/.*" was captured as "https://jira" and
flagged as a dead link in CI strict mode. Dotted hosts (real URLs) and
SKIP_DOMAINS single-label hosts are unaffected, so no link coverage is lost.
- 10-cli/README.md: language is Claude's general response/voice-dictation
language setting (e.g. french/japanese), which v2.1.176 also wired to
session-title generation — not a session-titles-only key. Updated the
description and the JSON example value to match the official settings docs.
* chore(idd): exempt docs-sync PRs from traceability Closes #N requirement
Adds .gitissue.yml so 'docs: sync to Claude Code vX' PRs (which aren't tied to
a single tracked issue) are not hard-blocked on a missing Closes #N — they opt
in via a 'Type: docs' body line, matching how chore/refactor PRs work. The
other three traceability checks still run.
Mirror the English fix from #131 into the translated docs. The precedence
table in 02-memory and the v2.1.119 /config notes still encoded the old,
incorrect order (user above project/local).
- vi/02-memory: table rows -> local(3) -> project(4) -> user(5, lowest)
- ja/02-memory: table rows reordered + /config note policy/local/project
- ja/10-cli: /config note chain -> policy -> local -> project -> user
- uk/02-memory: table rows reordered
Correct order per https://code.claude.com/docs/en/settings:
Managed -> CLI args -> Local -> Project -> User (lowest).
zh is missing the whole settings section (structural port), tracked
separately in #132.
Refs #132
- 10-cli/README.md: policy → local → project → user (was project → local → policy → user)
- 02-memory/README.md: reorder table levels 3/4/5 to local → project → user
- 02-memory/README.md: update note text to match corrected order
* docs: sync to Claude Code v2.1.156 and Claude Opus 4.8
Model bump Opus 4.7 -> Opus 4.8 and version sync v2.1.150 -> v2.1.156.
- Rewrite effort-ladder claims for Opus 4.8 (default `high`; `xhigh` on
4.8/4.7; `max` on 4.8/4.7/4.6 and Sonnet 4.6; Haiku has no effort).
- Replace soon-removed CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE with the
`/model claude-opus-4-6[1m]` + `/fast on` path; note Opus 4.8 fast mode.
- Bump lineup tables to Opus 4.8; fix Haiku 4.5 context (1M -> 200K).
- Sweep Compatible Models + version/date footers to 2.1.156 / May 29, 2026
across 23 English docs (incl. 2.1.138/2.1.145 stragglers).
- Re-document `/simplify` as a distinct cleanup-only command (v2.1.154).
- Add Dynamic Workflows + `/workflows`, MessageDisplay hook (count 29->30),
disallowed-tools frontmatter, `/reload-skills` + SessionStart outputs,
`/model` default-save inversion, lean system prompt, status-line
COLUMNS/LINES, and the ultracode `/effort` note.
* docs(cli): drop unverified fast-mode dollar pricing, keep verified rate/speed multipliers
* fix(i18n): re-point translations to code-review-specialist rename
The English code-review skill was renamed to code-review-specialist in #127
to avoid shadowing the new built-in /code-review command. Mirror that rename
across the uk, vi, ja, zh locales: rename each 03-skills/code-review/ directory
to code-review-specialist/, update the i18n-source markers in the moved ja
files, and fix path references in INDEX.md, QUICK_REFERENCE.md, and the vi
TRANSLATION_QUEUE.md.
* chore: ignore .asm-improver and .gitissue tooling state
* fix(i18n): re-point remaining code-review install paths to code-review-specialist
Follow-up to #123 — that PR fixed module README logo paths but missed
root-level translated files (README, INDEX, CATALOG, CONTRIBUTING,
STYLE_GUIDE, etc.) which had the same broken-path pattern: they used
`resources/logos/...` (root-relative) but live one directory deep, so
they resolved to `{lang}/resources/logos/...` and 404'd.
Fix: `resources/logos/...` → `../resources/logos/...` in the top
`<picture>` block of each translated root-level file.
For STYLE_GUIDE files, the in-code-fence `<picture>` example was left
as `resources/logos/...` to mirror the English source — it documents
the canonical pattern, not the path the file itself uses.
Files: zh/ (×9), uk/ (×4), vi/ (×2). ja/STYLE_GUIDE.md was already
correct.
Bumps tutorial coverage from v2.1.138 → v2.1.143. Highlights:
- /goal and /scroll-speed slash commands (v2.1.139)
- claude agents Agent View (Research Preview) with 9 dispatch flags
- claude plugin details and marketplace context-cost projection
- Hook exec form (args), continueOnBlock on PostToolUse, terminalSequence
- Stop hook 8-block safety cap + override env var
- Fast Mode default flipped to Opus 4.7 (v2.1.142)
- PowerShell tool default-on for Bedrock/Vertex/Foundry on Windows
- API-key auth disables Remote Control, /schedule, claude.ai MCP, notifications
- worktree.bgIsolation setting
- CLAUDE_PROJECT_DIR for MCP stdio servers
- Subagent OTEL headers + case-insensitive subagent_type matching
- Root-level SKILL.md plugin pattern; Routines marketing name note
Also bumps stale "28 hook events" counts in CATALOG/README to 29 and
refreshes the metadata footer (Last Updated, Claude Code Version,
Sources) on every modified file.
* feat(scripts): add static website generator from markdown sources (#85)
Generate an elegant, mobile-friendly static site from the existing
tutorial markdown files. The markdown remains the single source of
truth — `scripts/build_website.py` reads from the same `.md` files the
EPUB builder uses, rewrites cross-references to site URLs, and rewrites
references to non-markdown repo files (`.json`, `.sh`, `.py`) to
GitHub blob URLs so users can jump to the source on github.com.
Highlights:
- Reuses the chapter ordering convention from `build_epub.py`
- Anchor algorithm mirrors `check_cross_references.heading_to_anchor`
for parity with the validator
- Mermaid renders client-side via `mermaid.js` (no pre-render step)
- Tailwind CSS via CDN; light/dark theme toggle; sidebar nav; in-page
TOC; prev/next page navigation; mobile responsive
- 27 unit + smoke tests covering anchors, link rewriting (including
`<source srcset>` inside `<picture>`), Mermaid handling, and a full
end-to-end build
- GitHub Pages deploy workflow at `.github/workflows/pages.yml`
Closes#85
* fix(website): use relative URLs in sidebar nav and avoid INDEX.html collision
Two bugs found by local browser dogfooding:
1. **Sidebar nav broke from deep pages.** `build_navigation` emitted raw
`output_url` values (site-root-relative) which made every sidebar link
404 from any page below the root. Moved the call inside the per-page
render loop so each page gets nav links computed relative to its own
URL — `01-slash-commands/index.html` from the root, `../01-slash-commands/...`
from a depth-1 page, `../../01-slash-commands/...` from depth-2.
2. **`INDEX.md` overwrote `index.html`.** On case-insensitive filesystems
(macOS/Windows), `INDEX.html` and `index.html` are the same file, so
`INDEX.md` clobbered the rendered `README.md`. Added `_disambiguate_url`
that detects case-insensitive collisions and suffixes the colliding
page with its source stem (`INDEX-index.html`).
Added 2 tests; full suite stays at 83 passed.
* fix(scripts): skip URLs with port in localhost/127.0.0.1 skip list
`check_links.is_skipped()` did an exact-match comparison against the
host, so `http://localhost:8080` (used in scripts/README.md as a preview
example) was not skipped and CI's link check tried to fetch it, which
fails on the GitHub runner. Strip the port before comparing.
* chore(scripts): drop vestigial mypy ignore_errors for build_website
The override silenced all mypy errors for build_website, making the
"mypy: clean" claim technically vacuous. Removing it shows mypy is
actually clean — 0 issues on build_website after type annotations
were added during PR review.
* feat(website): self-host Tailwind, Mermaid, and Inter fonts
Drop all third-party CDN dependencies from rendered pages. The site
previously loaded Tailwind from cdn.tailwindcss.com (Play CDN — JIT
compile in browser, marked not-for-production), Mermaid from
cdn.jsdelivr.net, and Inter/JetBrains Mono from fonts.googleapis.com.
Replace with a vendored toolchain:
- scripts/vendor_assets.py downloads the Tailwind standalone CLI
(Go binary, no Node toolchain), Mermaid's UMD bundle, and Google
Fonts CSS + WOFF2 files. Cached under scripts/.vendor-cache/
(gitignored), refetched only when missing.
- Tailwind compiles a per-build site/assets/tailwind.css with only
the utility classes actually used by the rendered HTML.
- Mermaid and font files land in site/assets/vendor/ and load via
relative URLs.
- Tailwind config + entry CSS live in scripts/website_templates/
alongside the Jinja template.
- build_website grows a skip_vendor flag so the smoke test runs
offline.
- pre-commit mypy hook gets types-Markdown so it can resolve the
same imports as the project venv.
Verification: 86/86 pytest pass, ruff/mypy/bandit clean, full
build produces a working site with zero external requests (verified
in a headless browser — no console errors, no failed network calls,
Mermaid diagrams render).
* fix(website): use tree URLs for repo directory links (#85)
* fix(website): include additional top-level docs (#85)
Catches mechanical rendering bugs that look fine in a diff but render
wrong on GitHub / in the EPUB build: inner backticks inside inline-code
spans (PR #114), unescaped pipes in table cells (PR #115), stray
`$ARGUMENTS` outside code, and unmatched fences.
Scope: `**/README.md` across tutorial modules + translations (ja, uk,
vi, zh). Excludes dev tooling dirs (`.claude`, `.venv`, `openspec`, …).
Rule registry: each rule is `(Path, content) -> list[str]`. Adding a
new rule = one function + one registry entry + one test fixture.
- scripts/check_markdown_rendering.py: 4 rules, CommonMark-aware code-
span consumption, blockquote-fence-aware masking
- scripts/tests/test_check_markdown_rendering.py: 20 unit tests,
positive + negative per rule, currency-false-positive guard
- .pre-commit-config.yaml: new global `markdown-rendering` hook
Escape backticks across en/ja/uk/vi/zh slash-commands and skills modules so the literal `!`command`` syntax renders correctly instead of breaking the inline-code span.
Documents the v2.1.131 → v2.1.138 sync (PR #117) in the same format
as the v2.1.131 entry. Pattern caught during release-manager review;
the original sync PR did not include a CHANGELOG update.
Sync covers v2.1.128, v2.1.129, and v2.1.131 (May 2026). Highlights:
gateway /v1/models discovery is now opt-in (CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY),
added --plugin-url flag, disableRemoteControl setting, /mcp tool-count display,
expanded skillOverrides values, /context viz no longer leaks into conversation,
Ctrl+R cross-project default. Also reconciles slash-command count to 60+ and
fixes the skill-count entry in CATALOG.
The lesson-quiz skill had two issues:
1. Correct answers were always placed as the first option, making quizzes
trivially solvable
2. No feedback was given after each round — users had to wait until all
5 rounds were complete to see any results
Add a CRITICAL shuffle instruction requiring randomized option order for
each question, and update round flow to show immediate per-question
feedback after each round.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The code-review skill had templates/ and scripts/ directories alongside
SKILL.md, but SKILL.md never referenced them. Since Claude Code only
loads SKILL.md when a skill is invoked, the supporting files were
effectively invisible. This adds a Reference Files section that
instructs Claude to read and use each supporting file.
Closes#43
Co-authored-by: Paperclip <noreply@paperclip.ing>
- Replace fictional `/think` example with official `ultrathink` keyword
- Fix Q4 options: `/think` → `/effort max`, `--thinking` → `ultrathink`
- Fix Q5: correct the answer that "ultrathink" DOES trigger deep reasoning
- Sync changes across English, Ukrainian, and Vietnamese translations
Background: `/think` is not a valid slash command in Claude Code (verified
against official commands reference at code.claude.com/docs/en/commands).
The correct way to trigger deep reasoning for a single response is to
include "ultrathink" in the prompt.
Sources:
- https://code.claude.com/docs/en/commands (no /think command exists)
- https://code.claude.com/docs/en/model-config (ultrathink is valid keyword)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
The lesson quiz Q2 had `#` prefix as the correct answer for adding
memory rules, but the lesson README explicitly states this was
discontinued. Update answer to `/memory` or conversational request,
and fix a residual `#` prefix reference in the README's "Quick
update workflow" section.
Closes#106
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Remove the specific 21,800+ stars and 2,585+ forks numbers across en/zh/ja
READMEs. They go stale within a day of every commit. The Star History chart
already conveys current scale, and the trust bullets read fine without exact
counts.
- Backfill CHANGELOG.md with v2.4.0 entry summarizing the
v2.1.112 → v2.1.119 sync work
- Refresh SECURITY.md footer (Last Updated April 27, 2026;
Next Review April 2027)
- Fix model ID in 09-advanced-features/config-examples.json:
claude-opus-4 → claude-opus-4-7 (3 occurrences) for
consistency with documented model IDs
- Remove RELEASE_NOTES.md stub that duplicated and contradicted
CHANGELOG.md
Closes#99
- Replace shell-interpolated JSON build with the argv-based Python pattern
from session-end.sh, so notes containing quotes or backslashes don't
produce invalid JSON.
- Add mkdir/cp/chmod install block before the Configuration section so
the path in settings.json resolves to a real file.
Lesson 10 stated CLI > User > Project, contradicting Lesson 04 (CLI >
Project > User) and the official Claude Code docs. Project-level agents
override user-level agents when their names collide.
- Fix priority order in 10-cli/README.md (lines 437-439)
- Add cross-link to Lesson 04 for the full priority table
- Update matching quiz question Q7 in lesson-quiz question-bank
Closes#98
* feat(hooks): add SessionEnd progress logger and local progress tracker
Adds a SessionEnd hook that prompts for modules studied at session end
and appends a record to ~/.claude-howto-progress.json — outside the repo
so progress survives git pull without being overwritten.
Also adds local-progress/index.html: a self-contained visual tracker
with checkboxes for all 10 modules, per-module notes, an overall progress
bar, and Export/Import to sync with a local JSON backup file.
Key patterns demonstrated:
- SessionEnd vs Stop (fires once on exit, not after every response)
- /dev/tty for interactive input in hooks (stdin carries the JSON payload)
- $CLAUDE_PROJECT_DIR for portable paths (never hardcode /Users/...)
- Guard clause to prevent global hook running in unrelated projects
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
* fix(hooks): address PR review — bash 3.2 compat, JSON escaping, textarea XSS
- Replace pipeline+while with IFS for-loop (bash 3.2 compatible)
- Pass NOTES as Python arg to avoid broken JSON on quotes/backslashes
- Set textarea.value instead of innerHTML to prevent XSS from imported JSON
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Per official docs (https://code.claude.com/docs/en/model-config#adjust-effort-level),
the `max` effort level is supported on Opus 4.7, Opus 4.6, and Sonnet 4.6 — not
Opus 4.7 only. Only `xhigh` is Opus 4.7 exclusive.
Updates 5 occurrences in 09-advanced-features/README.md to reflect the actual
support matrix:
- Opus 4.7: low, medium, high, xhigh, max
- Opus 4.6 / Sonnet 4.6: low, medium, high, max
uk/ and vi/ locales need a separate translation sync (still reference Opus 4.6
era only and lack xhigh entirely).
Split the "Skill" participant into two distinct entities to better
illustrate the three-level loading architecture:
- Skill Instructions (Level 2): SKILL.md body
- Skill Resources (Level 3): Bundled files (templates, scripts, etc.)
Also fixed inaccurate "bash: read" notation - Claude uses the Read
tool, not bash commands.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* test(scripts): cover repo-root boundary in check_cross_references
Locks in the boundary behavior added in #91: links resolving outside
the repo root are silently skipped, in-repo broken links still error,
and valid in-repo links still pass.
* test(scripts): cover missing-README detection in numbered lesson dirs
`(file_path.parent / link_path).resolve()` could silently follow a
crafted `../../outside/path` link that escapes the repository root.
Paths that resolve outside the repo root are now skipped rather than
checked for existence.
Co-authored-by: Claude Code <noreply@anthropic.com>
All 6 packages were fully unpinned, allowing a compromised upstream
release to silently introduce malicious code on `pip install`. Pin to
current stable versions to ensure reproducible, auditable builds.
Co-authored-by: Claude Code <noreply@anthropic.com>
`diff` is not a valid Claude Code tool name — the agent would silently
lose its diff capability at runtime. Use `bash` to invoke diff instead.
Applies to all four locales: en (07-plugins), vi, zh, uk.
Co-authored-by: Claude Code <noreply@anthropic.com>
Sync all English tutorials with Claude Code v2.1.112 and the new Opus 4.7
model (claude-opus-4-7). Introduces the xhigh effort level (new default on
Opus 4.7), two new built-in slash commands (/ultrareview,
/less-permission-prompts), auto mode without --enable-auto-mode for Max
subscribers on Opus 4.7, PowerShell tool on Windows, Auto-match-terminal
theme, and plan files named after prompts. All 18 EN doc footers bumped to
Claude Code v2.1.112.
Version callouts in README.md, zh/README.md, and uk/README.md updated to
v2.1.112. Changelog entry prepended.
Repo version now tracks Claude Code version (2.3.0 → 2.1.112 is intentional
per new convention).
* docs: sync to Claude Code v2.1.110 with TUI, push notifications, session recap, and new commands
- 01-slash-commands: add /tui, /focus, /recap, /undo, /proactive to command table and recent changes
- 07-plugins: document monitors manifest key for background monitor support (v2.1.105)
- 09-advanced-features: add TUI mode, push notifications, session recap, ENABLE_PROMPT_CACHING_1H
- 10-cli: add --exclude-dynamic-system-prompt-sections flag and CLAUDE_CODE_PERFORCE_MODE env var
- CATALOG.md: update command counts (55+→60+, 63+→68+), add 5 new command rows
- All 12 files: bump footer to April 16, 2026 / Claude Code Version 2.1.110
* fix(catalog): correct version tags for /proactive, /recap, /undo commands
/proactive was added in v2.1.105, /recap and /undo in v2.1.108 — not v2.1.110.
Only /tui and /focus were introduced in v2.1.110.