Table of contents (6 sections)
Wednesday, October 14: an email from Packt, offering a partnership and free access to ExpertEdge, its subscription platform for technical books. My first search, out of habit: "Claude Code". Four books, all published in 2026. I shrugged. I have used Claude Code every day for over a year, and I have written here about its hooks, about my CLAUDE.md and about what its plugins cost. What could a book possibly teach me?
I was half wrong. Three of them get syntax wrong, sometimes to the point where their examples simply do not work. On the essentials, though, they overlap, and that part will not go stale. One of the four stands out despite its flaws: The Claude Code Operating Model.
How I read 1.2 million characters in one evening
I did not read these books alone, and I would rather say so up front. ExpertEdge does not sell PDFs: it displays books cut into lessons in an online reader. I let Claude drive my browser to extract the text lesson by lesson. I skipped the quizzes: they are assessments in my name, and I was not going to hand them to an AI. Then agents read each book, and I checked every quote I kept against the extracted text, word for word, with a script. An agent that reviews its own work grades itself too generously, and I explained why in No agent grades its own homework.
The extracted text weighs 1,170,431 characters: 527,600 for The Claude Code Operating Model (84 lessons extracted out of the 93 advertised), 385,585 for Agentic Coding with Claude Code, and 130,430 and 126,816 for the two Zenva books (Zenva is an online course publisher).
The cost, on the other hand, is real. A token is the small piece of text the model reads and that your subscription or API counts. Reading Agentic Coding in full with two agents cost me around 250,000 tokens, enough to put a serious dent in a quota. So I spent at least 250,000 tokens to learn how to waste fewer of them.
Which Claude Code book to read first
| Book | Publisher | Rating | In one sentence |
|---|---|---|---|
| The Claude Code Operating Model (Jia Huang) | Packt | 6.6/10 | The only one that thinks like an engineer, despite a sloppy proofread |
| 101 Claude Code Tips (Zenva, author not named) | Zenva | 6.2/10 | The notebook of a team that got burned |
| Agentic Coding with Claude Code (Eden Marco) | Packt | 5.4/10 | A video course put into writing, full of demos and mistakes |
| Best Practices for Claude Code (Zenva, author not named) | Zenva | 6.0/10 | A good discipline course under a title that promises too much |
The best: The Claude Code Operating Model. It is the only one that explains how the pieces fit together: CLAUDE.md, skills (reusable instructions Claude loads on demand), subagents, hooks, MCP (the protocol that plugs Claude into external tools) and headless mode, built for CI (continuous integration, which runs your checks every time code is pushed). It also puts numbers on its own claims. It has 93 lessons and almost 6 hours of course. It is worth it mainly if you already use Claude Code and want to understand the system rather than collect tips.
The lowest rated: Agentic Coding (5.4/10), because of its wrong configuration examples, detailed below. The most disappointing, though, is Best Practices for Claude Code (6.0/10), on a different criterion: the gap between what the title promises and what the book contains. Agentic Coding keeps its promise, a course that builds an application, flaws included. Best Practices promises all the best practices. I found no subagents, no MCP, no skills in the Claude Code sense. Permissions get a single line pointing elsewhere, and hooks one sidebar. What remains is a decent discipline course if your problem is a Claude that does far more than you asked.
Depending on your profile:
- You have an hour and a half and a few weeks of practice already: 101 Claude Code Tips (53 lessons, 1 h 26). A good share of the tips revolve around content production (video, Trello boards), by my rough count: you can skip those.
- You are a beginner and want to follow a project end to end: Agentic Coding builds an application (HookHub) step by step. Careful, it contains several wrong configuration examples. Check every block against the documentation before copying it, or you will spend an evening wondering why nothing works.
- You are putting up with a Claude that rewrites half your code for a small request: Best Practices (44 lessons, 2 h 24).
What Claude Code books agree on, and what you can do with it
Three bylines (Jia Huang, Eden Marco, and Zenva for two books with no named author), two publishers. The same ideas turning up proves little: they probably all lean on the same documentation. What matters is where they go beyond the docs and overlap. Here is who carries what:
| Idea | Operating Model | 101 Tips | Best Practices | Agentic Coding |
|---|---|---|---|---|
| Short CLAUDE.md | yes | yes | yes | one sentence |
| Hooks guarantee, prompts do not | yes | yes | a sidebar | shows the mechanics |
| Subagents for noise | yes | yes | no | yes |
| Do not believe what the chat says | via the Stop hook | yes | yes | not spotted |
A short CLAUDE.md. All four say it, some louder than others. Jia Huang gives the most radical test: if deleting a rule would not stop Claude from behaving well, the rule does not belong in the file. 101 Tips aims for about 50 lines and writes that a bloated file makes Claude ignore the real instructions, lost in the noise. Best Practices lists an overlong file among its pitfalls, and Agentic Coding settles for one sentence: keep memory files concise and specific. My file was 296 lines before my audit, which made me the counter-example of all four books at once. It is 142 now: still nearly three times the 101 Tips target, but under the 200 lines Operating Model cites. Your turn: for each rule in your CLAUDE.md, imagine it deleted. If Claude behaves the same, cut it.
What must always happen goes in a hook. A rule written in CLAUDE.md remains an instruction Claude can misread. Operating Model has Kage, its fictional mentor, say: "Hooks are different: they are not suggestions, but enforcement." 101 Tips, shorter: "hooks guarantee execution; prompts do not." Best Practices gives them a sidebar. Agentic Coding teaches the mechanics with a hook that plays a sound at the end of a reply, without drawing that principle from it. It is what I ended up understanding while writing my article on hooks: stop repeating "run the tests" every session, and hand it to the Stop event (it fires when Claude has finished answering). Here is the script from tip 48 of 101 Tips, which I shortened. Replace bun test with your own test command:
#!/usr/bin/env bash
input=$(cat)
# The guard: without it, the hook restarts Claude forever
if [ "$(echo "$input" | jq -r '.stop_hook_active // false')" = "true" ]; then
exit 0
fi
if ! bun test --silent >/dev/null 2>&1; then
echo '{"decision":"block","reason":"Tests are failing. Fix them before declaring done."}'
fi
exit 0
Claude Code passes the script a JSON payload on standard input. When the tests fail, the hook returns block and Claude has to keep going. The stop_hook_active guard prevents the infinite loop: it is true when Claude is running again because of the hook, and the script then lets it stop. Operating Model and 101 Tips both have this guard.
A subagent is for reading, not for saving money. A subagent is a separate instance of Claude with its own context window: only its final message comes back into your conversation. Operating Model, 101 Tips and Agentic Coding use it to isolate noise. The 101 Tips rule is the sharpest: if the task produces search results, logs or files you will not look at again, run it in a subagent. Jia Huang's calculation is the most honest of the lot: in his example, delegating saves 8,500 tokens out of 125,000, or 6.8%, and only 1 to 2% once prompt caching is taken into account (text already sent to the model is billed at a lower rate the next time). The real gain is a main conversation that stays readable. So send anything noisy to a subagent: logs, test output, searches.
The chat is not proof. 101 Tips describes a Claude that announces "I ran bun test, all green" without ever calling the Bash tool: the narration is fluent, plausible, and false. The book's remedy: read the real tool output in the transcript, not the summary. Operating Model gets to the same place by another road, a Stop hook that runs the test suite when Claude claims to be done. Best Practices offers the best question to ask before approving: "List all the behaviors that should remain unchanged after this modification. Explain how the current implementation preserves them.", and sums up its method in one line: "compilation is not review". I found nothing equivalent in Agentic Coding. Ask that question before you approve, and look at the real tool output. Also be wary of the verbs "refactor", "improve", "clean up" or "optimize": Best Practices sees them as permission to redesign far more than you meant.
The config mistakes not to copy
A book about a tool that changes every month goes stale before it is printed, and these four were not always proofread. A few mistakes I checked.
The hook format. Tip 48 of 101 Tips shows a Stop hook that runs the tests. settings.json (Claude Code's configuration file) expects something else according to the current documentation: an outer hooks level, a type field, and no matchers for Stop, which does not support them (a matcher is a filter on the name of the tool that triggers the hook). I did not test what Claude Code does with the book's text; I only note that it differs from the docs.
// ✗ What the book shows (tip 48)
{
"Stop": [
{
"command": ".claude/hooks/check-tests.sh",
"matchers": []
}
]
}
// ✓ The documented format
{
"hooks": {
"Stop": [
{ "hooks": [{ "type": "command", "command": ".claude/hooks/check-tests.sh" }] }
]
}
}
A file that does nothing. Operating Model recommends a .claudeignore as a first layer to hide files, while noting it can be bypassed, and advises permissions.deny as a second layer. The current documentation goes further: a .claudeignore has no effect at all, and its entries must become Read rules in permissions.deny.
A misspelled key. Agentic Coding writes statusline in its settings.json example, forty lines after discussing the statusLine key. The docs only know statusLine. I did not test what Claude Code does with the faulty version.
Security scripts with holes, of two kinds. In 101 Tips, the "block dangerous commands" hook searches for a text string: grep -Eq '(rm -rf|git push --force|…)'. I replayed it: rm -rf is blocked, while rm -fr, rm -r -f or rm followed by two spaces get through. Operating Model has other blind spots: its Write|Edit matcher does not cover cat > .env, because it filters on the tool name and cat goes through Bash. It also contradicts itself: it puts auto-compaction at 50% by default in one chapter and at around 95% in another.
My rule: in a Claude Code book, take the principles, and look up every syntax in the official documentation.
The fix for an agent that copies out your secrets
A chapter of Operating Model describes a trap I had never considered. A code review agent runs in CI with claude -p "Review the configuration for problems" --allowedTools "Read,Grep". It is asked to check the configuration. It reads the .env file, and writes the database URL with its password and the Stripe key into the CI log. No malicious instruction: it simply did what it was asked. GitHub's automatic secret masking does not cover text written by the model.
The fix comes down to two reflexes. The first: forbid reading sensitive files in the permissions (.claude/settings.json), using the syntax from the current documentation:
{
"permissions": {
"deny": ["Read(./.env)", "Read(./secrets/**)"]
}
}
Add the variants you have (.env.local, for example). The docs specify that these rules cover Claude's read tools and commands like cat, but not a Python script that opens the file itself: for a barrier that holds against any process, you need to enable the sandbox. The second reflex is a prompt rule, not a configuration one: never ask a model to read or print an environment variable. The book says so in so many words.
In the same chapter, a simple idea to make a CI fail on Claude's verdict: have it write a sentinel line, and search for that exact line. The prompt asks it to end the review with <VERDICT>request_changes</VERDICT> or <VERDICT>approved</VERDICT>, the book's workflow writes the answer to review.md, then:
if grep -qF "<VERDICT>request_changes</VERDICT>" review.md; then
Searching for the word "critical" in the answer would be worse: it also appears in "no critical issues". One last move, right now: open your settings.json and check that your .env is in permissions.deny.
Conclusion
The books stress many things. The one I lived the most: do not believe what Claude announces. No agent summary got through without my going back through the script.
The book I recommend has a rare quality: it puts numbers on its own claims, even when the number works against its subject. Jia Huang praises subagents, calculates 6.8% savings and then 1 to 2% with caching, and writes it down. His book is far from error-free, but that reflex is worth more than his syntax. If you only read one, read that one, with the documentation open beside it.
ODILON50, the yearly plan is 50% off: The Claude Code Operating Model, 101 Claude Code Tips, Agentic Coding with Claude Code and Best Practices for Claude Code. I earn a commission if you subscribe with this code. My ratings do not depend on it.