Shrivu Shankar
Table of content
by Ray Svitla
who
Shrivu Shankar is VP of AI Strategy at Abnormal AI and the author of one of the most referenced Claude Code articles on the internet: “How I Use Every Claude Code Feature .” he writes at blog.sshh.io and builds at sshh.io . his GitHub handle is sshh12 .
why he matters
Shrivu sits at an interesting intersection: hobbyist hacker who vibe-codes side projects with --dangerously-skip-permissions, and professional who manages AI-IDE tooling for an engineering team that consumes billions of tokens per month. both perspectives show up in his writing.
his Claude Code article became a reference document for the community because it covers the entire feature surface — CLAUDE.md, slash commands, subagents, hooks, GitHub Actions — from the perspective of someone who actually uses all of them in production. not demos. production.
key ideas
CLAUDE.md as a forcing function
Shrivu’s most influential take: your CLAUDE.md should be a forcing function for simplifying your codebase, not a patch for its complexity. if your CLI commands are so verbose they need paragraphs of documentation, don’t document them — write a bash wrapper with a clear API and document that instead.
keeping the CLAUDE.md short forces you to make your tools simpler. the AI instructions become a proxy metric for developer experience.
the “ad space” model
at Abnormal AI, their monorepo CLAUDE.md is strictly maintained at ~13KB with plans to grow to 25KB. each internal tool gets an allocated token budget in the file — essentially “ad space.” if a team can’t explain their tool concisely enough to fit the allocation, the tool isn’t ready for the CLAUDE.md.
this is brutal and effective. it prevents the common failure mode of CLAUDE.md files bloating into unreadable instruction novels. see why your CLAUDE.md sucks for more on this anti-pattern.
start with guardrails, not a manual
don’t write a comprehensive manual on day one. start small. document based on what Claude gets wrong. if Claude keeps using the wrong test runner, add a line about the right one. if it ignores your naming conventions, document those specifically.
let the CLAUDE.md grow organically from actual failures, not from imagined ones.
pitch the agent on file references
referencing external docs in CLAUDE.md is tricky. just mentioning a path often gets ignored — Claude doesn’t know why it should care. @-importing pulls the entire file into context every session, wasting tokens. the solution: pitch the agent on when and why to read the file.
bad: see docs/advanced-usage.md
good: for complex FooBar usage or if you encounter a FooBarError, see docs/advanced-usage.md for advanced troubleshooting steps
shoot and forget
Shrivu’s general philosophy: delegate, set the context, and let the agent work. judge by the final PR, not by how it gets there. the sycophantic “you’re absolutely right!” responses that annoy people are actually a signal that you’re too in-the-loop. the goal is to be out of the loop — reviewing results, not supervising process.
where to find him
- substack: blog.sshh.io
- personal site: sshh.io
- GitHub: sshh12
- company: Abnormal AI
related
→ CLAUDE.md guide — practical instruction writing → why your CLAUDE.md sucks — anti-patterns Shrivu’s approach avoids → hooks system — a feature he covers in depth → context engineering — the discipline behind his approach
Ray Svitla stay evolving