Files
g3/tmp/anthropic_best_practices.html
Dhanji R. Prasanna 68c9135913 Fix research tool UI: remove duplicate header, add footer spacing, remove spinner, widen command display
- Remove duplicate tool header (lib.rs already prints it)
- Add newline before timing footer for visual separation
- Remove spinner animation (incompatible with update_tool_output_line)
- Change shell command format to " > `cmd` ..." with 60 char width
2026-01-10 15:20:40 +11:00

37 lines
245 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<html lang="en" class="anthropicsans_38ab20ab-module__m_Ag9q__variable anthropicserif_9dcb6d5c-module__l8Ld2a__variable copernicus_f8782a09-module__ahfGZW__variable styrenea_5e06b95-module__JuxQ9a__variable styreneb_4765efd3-module__CFivSW__variable tiempostext_7f420b3d-module__SmwvBG__variable jetbrainsmono_7d7bdbc6-module__j_XgJq__variable"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/_next/static/chunks/9ef3f201fb4c8030.css" nonce="" data-precedence="next"><link rel="stylesheet" href="/_next/static/chunks/d01d4651f1fe3a5d.css" nonce="" data-precedence="next"><link rel="stylesheet" href="/_next/static/chunks/75f1e332600e6b96.css" nonce="" data-precedence="next"><link rel="stylesheet" href="/_next/static/chunks/94371e9eef46cc2b.css" nonce="" data-precedence="next"><link rel="stylesheet" href="/_next/static/chunks/509085f8d765c683.css" nonce="" data-precedence="next"><link rel="preload" as="script" fetchpriority="low" nonce="" href="/_next/static/chunks/55ee5a30d5bf1901.js"><script type="text/javascript" async="" src="https://www.googletagmanager.com/gtag/js?id=G-MT0111843S&amp;cx=c&amp;gtm=4e6171" nonce=""></script><script src="https://connect.facebook.net/signals/config/468742119653388?v=2.9.248&amp;r=stable&amp;domain=www.anthropic.com&amp;hme=17590b9a2e1b26755cdc9ecb401f9f46bca979d3ccce95d786db0936167af731&amp;ex_m=94%2C156%2C134%2C20%2C67%2C68%2C127%2C63%2C43%2C128%2C72%2C62%2C10%2C141%2C80%2C15%2C93%2C28%2C122%2C115%2C70%2C73%2C121%2C138%2C102%2C143%2C7%2C3%2C4%2C6%2C5%2C2%2C81%2C91%2C144%2C224%2C167%2C57%2C226%2C227%2C50%2C183%2C27%2C69%2C232%2C231%2C170%2C30%2C56%2C9%2C59%2C87%2C88%2C89%2C95%2C118%2C29%2C26%2C120%2C117%2C116%2C135%2C71%2C137%2C136%2C45%2C55%2C111%2C14%2C140%2C40%2C213%2C215%2C177%2C23%2C24%2C25%2C17%2C18%2C39%2C35%2C37%2C36%2C76%2C82%2C86%2C100%2C126%2C129%2C41%2C101%2C21%2C19%2C107%2C64%2C33%2C131%2C130%2C132%2C123%2C22%2C32%2C54%2C99%2C139%2C65%2C16%2C133%2C104%2C31%2C193%2C163%2C284%2C211%2C154%2C196%2C189%2C164%2C97%2C119%2C75%2C109%2C49%2C44%2C103%2C42%2C108%2C114%2C53%2C60%2C113%2C48%2C51%2C47%2C90%2C142%2C0%2C112%2C13%2C110%2C11%2C1%2C52%2C83%2C58%2C61%2C106%2C79%2C78%2C145%2C146%2C84%2C85%2C8%2C92%2C46%2C124%2C77%2C74%2C66%2C105%2C96%2C38%2C125%2C34%2C98%2C12%2C147" async=""></script><script type="text/javascript" async="" src="https://connect.facebook.net/en_US/fbevents.js"></script><script type="text/javascript" async="" src="https://connect.facebook.net/en_US/fbevents.js"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/integrations/vendor/commons.59560acdd69ed701c941.js.gz" async="" status="loaded"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/integrations/doubleclick-floodlight/1.5.4/doubleclick-floodlight.dynamic.js.gz" async="" status="loaded"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/integrations/facebook-pixel/2.11.5/facebook-pixel.dynamic.js.gz" async="" status="loaded"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/actions/reddit-plugins/1333c2e55a764a2e75e2.js" async="" status="loaded"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/actions/google-enhanced-conversions-plugins/1b3eca8dd71ecf927a0d.js" async="" status="loaded"></script><script type="text/javascript" src="https://a-cdn.anthropic.com/next-integrations/actions/amplitude-plugins/01d0dcccc64ec8f9523a.js" async="" status="loaded"></script><script async="" src="https://www.googletagmanager.com/gtm.js?id=GTM-KWW2N9TQ"></script><script src="/_next/static/chunks/6c3eff71c8dd3f35.js" async="" nonce=""></script><script src="/_next/static/chunks/d0300bffb79131f2.js" async="" nonce=""></script><script src="/_next/static/chunks/08dcfc3b15383cd6.js" async="" nonce=""></script><script src="/_next/static/chunks/turbopack-0091b89258c47288.js" async="" nonce=""></script><script src="/_next/static/chunks/d96012bcfc98706a.js" async="" nonce=""></script><script src="/_next/static/chunks/d80b3790a119a285.js" async="" nonce=""></script><script src="/_next/static/chunks/1fb574e7be3f9a05.js" async="" nonce=""></script><script src="/_next/static/chunks/177e1cabb8223520.js" async="" nonce=""></script><script src="/_next/static/chunks/c1896c986be1a2e2.js" async="" nonce=""></script><script src="/_next/static/chunks/087d24e120af8951.js" async="" nonce=""></script><script src="/_next/static/chunks/5a54cbc61310f12f.js" async="" nonce=""></script><script src="/_next/static/chunks/1815ce47fc23f8f1.js" async="" nonce=""></script><script src="/_next/static/chunks/2e3229a62c65aaec.js" async="" nonce=""></script><script src="/_next/static/chunks/2fd2aa01a4bc9178.js" async="" nonce=""></script><script src="/_next/static/chunks/05917cb05607d7dd.js" async="" nonce=""></script><script src="/_next/static/chunks/ec60785b1e42b5f0.js" async="" nonce=""></script><script src="/_next/static/chunks/6c680011ff6c5ba2.js" async="" nonce=""></script><script src="/_next/static/chunks/dabacb64939959b3.js" async="" nonce=""></script><script src="/_next/static/chunks/630870b77208f43d.js" async="" nonce=""></script><script src="/_next/static/chunks/580b5807c3737d13.js" async="" nonce=""></script><script src="/_next/static/chunks/5c1988096a7b174a.js" async="" nonce=""></script><script src="/_next/static/chunks/970df6eb64a0adda.js" async="" nonce=""></script><script src="/_next/static/chunks/1962982119ba7bb0.js" async="" nonce=""></script><script src="/_next/static/chunks/ca184bae2cf15209.js" async="" nonce=""></script><script src="/_next/static/chunks/2c9eb3077aa18f16.js" async="" nonce=""></script><script src="/_next/static/chunks/33647e5ba6496195.js" async="" nonce=""></script><meta name="next-size-adjust" content=""><meta name="theme-color" content="#141413"><script src="/_next/static/chunks/a6dad97d9634a72d.js" nomodule="" nonce=""></script><link rel="icon" href="/images/icons/favicon-32x32.png"><link rel="apple-touch-icon" href="/images/icons/apple-touch-icon.png"><link rel="apple-touch-icon" href="/images/icons/apple-touch-icon.png" sizes="180x180"><link rel="preload" href="/_next/static/media/AnthropicSans_Italic_Variable-s.p.dfc8e235.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/AnthropicSans_Roman_Variable-s.p.52cc3a10.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/AnthropicSerif_Italic_Variable-s.p.9d7ca5ec.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/AnthropicSerif_Roman_Variable-s.p.55835b1f.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/Copernicus_Book-s.p.f166c0ba.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/Copernicus_Medium-s.p.59728346.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/JetBrainsMono_VF-s.p.8dac7c36.ttf" as="font" crossorigin="" nonce="" type="font/ttf"><link rel="preload" href="/_next/static/media/StyreneA_MediumItalic_Web-s.p.e9bc3c6e.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/StyreneA_Medium_Web-s.p.e5135f7e.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/StyreneA_RegularItalic_Web-s.p.7c6a646d.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/StyreneA_Regular_Web-s.p.429c699d.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/StyreneB_Medium_Web-s.p.88fa5a67.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/StyreneB_Regular_Web-s.p.cb3cc1a3.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/TiemposText_Medium-s.p.520d99f8.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/TiemposText_MediumItalic-s.p.10f44518.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/TiemposText_Regular-s.p.7f1d46d6.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><link rel="preload" href="/_next/static/media/TiemposText_RegularItalic-s.p.1a798fcf.woff2" as="font" crossorigin="" nonce="" type="font/woff2"><script src="/_next/static/chunks/c37e997e74c1df2b.js"></script><script src="/_next/static/chunks/d0cd76882e4bb3cf.js"></script><script src="/_next/static/chunks/ba580bee2d3ae6e8.js"></script><script src="/_next/static/chunks/c1984cc1b0b5c6ac.js"></script><script src="/_next/static/chunks/924bf416ce63334a.js"></script><script src="/_next/static/chunks/b15a7f4dc117e174.js"></script></head><body><div hidden=""><!--$--><!--/$--></div><header class="SiteHeader-module-scss-module__zKj4Ca__header" data-theme="light"><div class="SiteHeader-module-scss-module__zKj4Ca__skipLinks"><a href="#main-content" class="SiteHeader-module-scss-module__zKj4Ca__skipLink">Skip to main content</a><a href="#footer" class="SiteHeader-module-scss-module__zKj4Ca__skipLink">Skip to footer</a></div><div class="page-wrapper SiteHeader-module-scss-module__zKj4Ca__root"><a href="/" aria-label="Home"><div class="SiteHeader-module-scss-module__zKj4Ca__logoDesktop"><div class="LogoWordmark-module-scss-module__Sdgt-q__logo-wrapper"><div class="LogoWordmark-module-scss-module__Sdgt-q__logo-lottie"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 143 16" width="143" height="16" preserveAspectRatio="xMidYMid meet" style="width: 100%; height: 100%; transform: translate3d(0px, 0px, 0px); content-visibility: visible;"><defs><clipPath id="__lottie_element_2"><rect width="143" height="16" x="0" y="0"></rect></clipPath><clipPath id="__lottie_element_4"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><g id="__lottie_element_8"><g transform="matrix(1,0,0,1,0,0)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(0,0,0)" fill-opacity="0" d=" M142.5,0 C142.5,0 142.5,16 142.5,16 C142.5,16 0,16 0,16 C0,16 0,0 0,0 C0,0 142.5,0 142.5,0z"></path></g></g></g><clipPath id="__lottie_element_12"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_17"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_26"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_35"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_44"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_53"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_62"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_71"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_80"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath><clipPath id="__lottie_element_89"><path d="M0,0 L143,0 L143,16 L0,16z"></path></clipPath></defs><g clip-path="url(#__lottie_element_2)"><g style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(249,249,247)" fill-opacity="0" d=" M142.5,0 C142.5,0 142.5,16 142.5,16 C142.5,16 0,16 0,16 C0,16 0,0 0,0 C0,0 142.5,0 142.5,0z"></path></g></g><g clip-path="url(#__lottie_element_4)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g clip-path="url(#__lottie_element_12)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g clip-path="url(#__lottie_element_89)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,18.299999237060547,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M10.716191291809082,10.829001426696777 C10.716191291809082,10.829001426696777 3.756195545196533,0 3.756195545196533,0 C3.756195545196533,0 0,0 0,0 C0,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.2038140296936035,15.470022201538086 3.2038140296936035,15.470022201538086 C3.2038140296936035,15.470022201538086 3.2038140296936035,4.6410064697265625 3.2038140296936035,4.6410064697265625 C3.2038140296936035,4.6410064697265625 10.163809776306152,15.470022201538086 10.163809776306152,15.470022201538086 C10.163809776306152,15.470022201538086 13.919991493225098,15.470022201538086 13.919991493225098,15.470022201538086 C13.919991493225098,15.470022201538086 13.919991493225098,0 13.919991493225098,0 C13.919991493225098,0 10.716191291809082,0 10.716191291809082,0 C10.716191291809082,0 10.716191291809082,10.829001426696777 10.716191291809082,10.829001426696777 C10.716191291809082,10.829001426696777 10.716191291809082,10.829001426696777 10.716191291809082,10.829001426696777z"></path></g></g></g><g clip-path="url(#__lottie_element_80)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,34.869998931884766,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M0,2.983504056930542 C0,2.983504056930542 5.19273567199707,2.983504056930542 5.19273567199707,2.983504056930542 C5.19273567199707,2.983504056930542 5.19273567199707,15.470022201538086 5.19273567199707,15.470022201538086 C5.19273567199707,15.470022201538086 8.507256507873535,15.470022201538086 8.507256507873535,15.470022201538086 C8.507256507873535,15.470022201538086 8.507256507873535,2.983504056930542 8.507256507873535,2.983504056930542 C8.507256507873535,2.983504056930542 13.700006484985352,2.983504056930542 13.700006484985352,2.983504056930542 C13.700006484985352,2.983504056930542 13.700006484985352,0 13.700006484985352,0 C13.700006484985352,0 0,0 0,0 C0,0 0,2.983504056930542 0,2.983504056930542 C0,2.983504056930542 0,2.983504056930542 0,2.983504056930542z"></path></g></g></g><g clip-path="url(#__lottie_element_71)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,51.22999954223633,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M10.605714797973633,6.165900230407715 C10.605714797973633,6.165900230407715 3.3142902851104736,6.165900230407715 3.3142902851104736,6.165900230407715 C3.3142902851104736,6.165900230407715 3.3142902851104736,0 3.3142902851104736,0 C3.3142902851104736,0 0,0 0,0 C0,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.3142902851104736,15.470022201538086 3.3142902851104736,15.470022201538086 C3.3142902851104736,15.470022201538086 3.3142902851104736,9.149404525756836 3.3142902851104736,9.149404525756836 C3.3142902851104736,9.149404525756836 10.605714797973633,9.149404525756836 10.605714797973633,9.149404525756836 C10.605714797973633,9.149404525756836 10.605714797973633,15.470022201538086 10.605714797973633,15.470022201538086 C10.605714797973633,15.470022201538086 13.919991493225098,15.470022201538086 13.919991493225098,15.470022201538086 C13.919991493225098,15.470022201538086 13.919991493225098,0 13.919991493225098,0 C13.919991493225098,0 10.605714797973633,0 10.605714797973633,0 C10.605714797973633,0 10.605714797973633,6.165900230407715 10.605714797973633,6.165900230407715 C10.605714797973633,6.165900230407715 10.605714797973633,6.165900230407715 10.605714797973633,6.165900230407715z"></path></g></g></g><g clip-path="url(#__lottie_element_62)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,69.23999786376953,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M3.3151700496673584,2.983504056930542 C3.3151700496673584,2.983504056930542 7.403865814208984,2.983504056930542 7.403865814208984,2.983504056930542 C9.03934097290039,2.983504056930542 9.901290893554688,3.5801939964294434 9.901290893554688,4.707304000854492 C9.901290893554688,5.834399700164795 9.03934097290039,6.431103706359863 7.403865814208984,6.431103706359863 C7.403865814208984,6.431103706359863 3.3151700496673584,6.431103706359863 3.3151700496673584,6.431103706359863 C3.3151700496673584,6.431103706359863 3.3151700496673584,2.983504056930542 3.3151700496673584,2.983504056930542 C3.3151700496673584,2.983504056930542 3.3151700496673584,2.983504056930542 3.3151700496673584,2.983504056930542z M13.216461181640625,4.707304000854492 C13.216461181640625,1.7900969982147217 11.072648048400879,0 7.558576583862305,0 C7.558576583862305,0 0,0 0,0 C0,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.3151700496673584,15.470022201538086 3.3151700496673584,15.470022201538086 C3.3151700496673584,15.470022201538086 3.3151700496673584,9.414593696594238 3.3151700496673584,9.414593696594238 C3.3151700496673584,9.414593696594238 7.005825519561768,9.414593696594238 7.005825519561768,9.414593696594238 C7.005825519561768,9.414593696594238 10.321218490600586,15.470022201538086 10.321218490600586,15.470022201538086 C10.321218490600586,15.470022201538086 13.990056991577148,15.470022201538086 13.990056991577148,15.470022201538086 C13.990056991577148,15.470022201538086 10.319005966186523,8.953378677368164 10.319005966186523,8.953378677368164 C12.161579132080078,8.245061874389648 13.216461181640625,6.753532409667969 13.216461181640625,4.707304000854492 C13.216461181640625,4.707304000854492 13.216461181640625,4.707304000854492 13.216461181640625,4.707304000854492z"></path></g></g></g><g clip-path="url(#__lottie_element_53)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,84.98999786376953,0)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M7.622087478637695,12.906073570251465 C5.015110492706299,12.906073570251465 3.4244225025177,11.049725532531738 3.4244225025177,8.022093772888184 C3.4244225025177,4.95027494430542 5.015110492706299,3.0939269065856934 7.622087478637695,3.0939269065856934 C10.206976890563965,3.0939269065856934 11.775577545166016,4.95027494430542 11.775577545166016,8.022093772888184 C11.775577545166016,11.049725532531738 10.206976890563965,12.906073570251465 7.622087478637695,12.906073570251465 C7.622087478637695,12.906073570251465 7.622087478637695,12.906073570251465 7.622087478637695,12.906073570251465z M7.622087478637695,0 C3.1593029499053955,0 0,3.3149218559265137 0,8.022093772888184 C0,12.685078620910645 3.1593029499053955,16 7.622087478637695,16 C12.062784194946289,16 15.200028419494629,12.685078620910645 15.200028419494629,8.022093772888184 C15.200028419494629,3.3149218559265137 12.062784194946289,0 7.622087478637695,0 C7.622087478637695,0 7.622087478637695,0 7.622087478637695,0z"></path></g></g></g><g clip-path="url(#__lottie_element_44)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,103.29000091552734,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M7.405848026275635,6.873104095458984 C7.405848026275635,6.873104095458984 3.3160574436187744,6.873104095458984 3.3160574436187744,6.873104095458984 C3.3160574436187744,6.873104095458984 3.3160574436187744,2.983504056930542 3.3160574436187744,2.983504056930542 C3.3160574436187744,2.983504056930542 7.405848026275635,2.983504056930542 7.405848026275635,2.983504056930542 C9.04176139831543,2.983504056930542 9.90394115447998,3.646505117416382 9.90394115447998,4.928304195404053 C9.90394115447998,6.2101030349731445 9.04176139831543,6.873104095458984 7.405848026275635,6.873104095458984 C7.405848026275635,6.873104095458984 7.405848026275635,6.873104095458984 7.405848026275635,6.873104095458984z M7.5605998039245605,0 C7.5605998039245605,0 0,0 0,0 C0,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.3160574436187744,15.470022201538086 3.3160574436187744,15.470022201538086 C3.3160574436187744,15.470022201538086 3.3160574436187744,9.85659408569336 3.3160574436187744,9.85659408569336 C3.3160574436187744,9.85659408569336 7.5605998039245605,9.85659408569336 7.5605998039245605,9.85659408569336 C11.07561206817627,9.85659408569336 13.219999313354492,8.000200271606445 13.219999313354492,4.928304195404053 C13.219999313354492,1.8563942909240723 11.07561206817627,0 7.5605998039245605,0 C7.5605998039245605,0 7.5605998039245605,0 7.5605998039245605,0z"></path></g></g></g><g clip-path="url(#__lottie_element_35)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,128.0399932861328,0)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M10.914844512939453,10.5414400100708 C10.340370178222656,12.044201850891113 9.191434860229492,12.906073570251465 7.622706890106201,12.906073570251465 C5.0155181884765625,12.906073570251465 3.4246866703033447,11.049725532531738 3.4246866703033447,8.022093772888184 C3.4246866703033447,4.95027494430542 5.0155181884765625,3.0939269065856934 7.622706890106201,3.0939269065856934 C9.191434860229492,3.0939269065856934 10.340370178222656,3.9557981491088867 10.914844512939453,5.458559989929199 C10.914844512939453,5.458559989929199 14.427860260009766,5.458559989929199 14.427860260009766,5.458559989929199 C13.566211700439453,2.1436522006988525 10.981111526489258,0 7.622706890106201,0 C3.1595458984375,0 0,3.3149218559265137 0,8.022093772888184 C0,12.685078620910645 3.1595458984375,16 7.622706890106201,16 C11.003214836120605,16 13.588300704956055,13.834254264831543 14.449976921081543,10.5414400100708 C14.449976921081543,10.5414400100708 10.914844512939453,10.5414400100708 10.914844512939453,10.5414400100708 C10.914844512939453,10.5414400100708 10.914844512939453,10.5414400100708 10.914844512939453,10.5414400100708z"></path></g></g></g><g clip-path="url(#__lottie_element_26)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,117.83000183105469,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M0,0 C0,0 6.1677093505859375,15.470022201538086 6.1677093505859375,15.470022201538086 C6.1677093505859375,15.470022201538086 9.550004005432129,15.470022201538086 9.550004005432129,15.470022201538086 C9.550004005432129,15.470022201538086 3.382294178009033,0 3.382294178009033,0 C3.382294178009033,0 0,0 0,0 C0,0 0,0 0,0z"></path></g></g></g><g clip-path="url(#__lottie_element_17)" style="display: block;" transform="matrix(1,0,0,1,0,0)" opacity="1"><g style="display: block;" transform="matrix(1,0,0,1,0,0.27000001072883606)" opacity="1"><g opacity="1" transform="matrix(1,0,0,1,0,0)"><path fill="rgb(24,24,24)" fill-opacity="1" d=" M5.824605464935303,9.348296165466309 C5.824605464935303,9.348296165466309 7.93500280380249,3.911694288253784 7.93500280380249,3.911694288253784 C7.93500280380249,3.911694288253784 10.045400619506836,9.348296165466309 10.045400619506836,9.348296165466309 C10.045400619506836,9.348296165466309 5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309 C5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309 5.824605464935303,9.348296165466309z M6.166755199432373,0 C6.166755199432373,0 0,15.470022201538086 0,15.470022201538086 C0,15.470022201538086 3.4480772018432617,15.470022201538086 3.4480772018432617,15.470022201538086 C3.4480772018432617,15.470022201538086 4.709278583526611,12.22130012512207 4.709278583526611,12.22130012512207 C4.709278583526611,12.22130012512207 11.16093635559082,12.22130012512207 11.16093635559082,12.22130012512207 C11.16093635559082,12.22130012512207 12.421928405761719,15.470022201538086 12.421928405761719,15.470022201538086 C12.421928405761719,15.470022201538086 15.87000560760498,15.470022201538086 15.87000560760498,15.470022201538086 C15.87000560760498,15.470022201538086 9.703250885009766,0 9.703250885009766,0 C9.703250885009766,0 6.166755199432373,0 6.166755199432373,0 C6.166755199432373,0 6.166755199432373,0 6.166755199432373,0z"></path></g></g></g></g></g></g></svg></div></div></div><svg class="Icon-module-scss-module__lqbdHG__icon SiteHeader-module-scss-module__zKj4Ca__logoMobile" width="32" height="32" viewBox="0 0 46 32"><path d="M32.73 0h-6.945L38.45 32h6.945L32.73 0ZM12.665 0 0 32h7.082l2.59-6.72h13.25l2.59 6.72h7.082L19.929 0h-7.264Zm-.702 19.337 4.334-11.246 4.334 11.246h-8.668Z" fill="#000000"></path></svg></a><div class="SiteHeader-module-scss-module__zKj4Ca__contentWrapper"><nav class="SiteHeader-module-scss-module__zKj4Ca__nav"><ul class="SiteHeader-module-scss-module__zKj4Ca__navList"><li class="body-3 SiteHeader-module-scss-module__zKj4Ca__navItem"><a href="/research" class="SiteHeader-module-scss-module__zKj4Ca__navText">Research</a></li><li class="body-3 SiteHeader-module-scss-module__zKj4Ca__navItem"><a href="/economic-futures" class="SiteHeader-module-scss-module__zKj4Ca__navText">Economic Futures</a></li><li class="body-3 SiteHeader-module-scss-module__zKj4Ca__navItem" data-category="Commitments"><button class="SiteHeader-module-scss-module__zKj4Ca__navText" aria-haspopup="menu" aria-expanded="false" aria-controls="nav-dropdown-Commitments"><span>Commitments</span><svg class="Icon-module-scss-module__lqbdHG__icon SiteHeader-module-scss-module__zKj4Ca__caretIcon" width="12" height="6.13" viewBox="0 0 8 5"><path d="M7.3016 0.231808C7.44932 0.0678162 7.70306 0.0546398 7.86724 0.20212C8.03137 0.349888 8.04461 0.603568 7.89692 0.767766L4.29684 4.76791L4.23434 4.82417C4.16662 4.87328 4.08425 4.89995 3.99918 4.89995C3.88588 4.89989 3.77733 4.85213 3.70152 4.76791L0.10144 0.767766L0.0537825 0.702139C-0.040206 0.541753 -0.0124254 0.331356 0.131128 0.20212C0.274775 0.0728844 0.486972 0.0674593 0.636608 0.1779L0.696765 0.231808L3.99918 3.90148L7.3016 0.231808Z" fill="currentColor"></path></svg></button></li><li class="body-3 SiteHeader-module-scss-module__zKj4Ca__navItem" data-category="Learn"><button class="SiteHeader-module-scss-module__zKj4Ca__navText" aria-haspopup="menu" aria-expanded="false" aria-controls="nav-dropdown-Learn"><span>Learn</span><svg class="Icon-module-scss-module__lqbdHG__icon SiteHeader-module-scss-module__zKj4Ca__caretIcon" width="12" height="6.13" viewBox="0 0 8 5"><path d="M7.3016 0.231808C7.44932 0.0678162 7.70306 0.0546398 7.86724 0.20212C8.03137 0.349888 8.04461 0.603568 7.89692 0.767766L4.29684 4.76791L4.23434 4.82417C4.16662 4.87328 4.08425 4.89995 3.99918 4.89995C3.88588 4.89989 3.77733 4.85213 3.70152 4.76791L0.10144 0.767766L0.0537825 0.702139C-0.040206 0.541753 -0.0124254 0.331356 0.131128 0.20212C0.274775 0.0728844 0.486972 0.0674593 0.636608 0.1779L0.696765 0.231808L3.99918 3.90148L7.3016 0.231808Z" fill="currentColor"></path></svg></button></li><li class="body-3 SiteHeader-module-scss-module__zKj4Ca__navItem"><a href="/news" class="SiteHeader-module-scss-module__zKj4Ca__navText">News</a></li></ul></nav><div class="SiteHeader-module-scss-module__zKj4Ca__claudeCtaWrapper"><a href="https://claude.ai/" class="SiteHeader-module-scss-module__zKj4Ca__claudeCtaButton body-3" target="_blank" rel="noopener noreferrer">Try Claude</a><div class="SiteHeader-module-scss-module__zKj4Ca__claudeCtaDropdownTrigger"><svg class="Icon-module-scss-module__lqbdHG__icon SiteHeader-module-scss-module__zKj4Ca__claudeCtaIcon" width="12" height="6.13" viewBox="0 0 8 5"><path d="M7.3016 0.231808C7.44932 0.0678162 7.70306 0.0546398 7.86724 0.20212C8.03137 0.349888 8.04461 0.603568 7.89692 0.767766L4.29684 4.76791L4.23434 4.82417C4.16662 4.87328 4.08425 4.89995 3.99918 4.89995C3.88588 4.89989 3.77733 4.85213 3.70152 4.76791L0.10144 0.767766L0.0537825 0.702139C-0.040206 0.541753 -0.0124254 0.331356 0.131128 0.20212C0.274775 0.0728844 0.486972 0.0674593 0.636608 0.1779L0.696765 0.231808L3.99918 3.90148L7.3016 0.231808Z" fill="currentColor"></path></svg></div></div><button class="SiteHeader-module-scss-module__zKj4Ca__mobileIcon" aria-label="Navigation menu"><svg class="Icon-module-scss-module__lqbdHG__icon" width="24" height="24" viewBox="0 0 40 40"><path d="M18.75 28C19.1641 28.0002 19.5 28.3359 19.5 28.75C19.4999 29.1641 19.164 29.4998 18.75 29.5H7.91699C7.50281 29.5 7.16705 29.1642 7.16699 28.75C7.16699 28.3358 7.50278 28 7.91699 28H18.75ZM32.084 19.25C32.4979 19.2504 32.834 19.586 32.834 20C32.8339 20.4139 32.4979 20.7496 32.084 20.75H7.91699C7.50281 20.75 7.16705 20.4142 7.16699 20C7.16699 19.5858 7.50278 19.25 7.91699 19.25H32.084ZM32.084 10.5C32.4979 10.5004 32.834 10.836 32.834 11.25C32.8339 11.6639 32.4979 11.9996 32.084 12H7.91699C7.50282 12 7.16706 11.6642 7.16699 11.25C7.16699 10.8358 7.50278 10.5 7.91699 10.5H32.084Z" fill="#141413"></path></svg></button></div></div></header><main id="main-content" class=""><section class="page-wrapper HeroEngineering-module-scss-module__j1ivRa__hero" aria-label="Engineering Article Hero"><a class="body-2 bold HeroEngineering-module-scss-module__j1ivRa__hubLink" href="/engineering">Engineering at Anthropic</a><div class="HeroEngineering-module-scss-module__j1ivRa__content"><div class="HeroEngineering-module-scss-module__j1ivRa__header"><div class="HeroEngineering-module-scss-module__j1ivRa__heroImage"><img alt="" loading="lazy" width="2554" height="2554" decoding="async" data-nimg="1" style="color:transparent" src="https://www-cdn.anthropic.com/images/4zrzovbb/website/6295100fcf8952bed666ba69536c581af87eef15-2554x2554.svg"></div><h1 class="headline-1">Claude Code: Best practices for agentic coding</h1></div><div class="HeroEngineering-module-scss-module__j1ivRa__metadata"><p class="body-2 HeroEngineering-module-scss-module__j1ivRa__date">Published <!-- -->Apr 18, 2025</p><p class="body-large-1 HeroEngineering-module-scss-module__j1ivRa__summary">Claude Code is a command line tool for agentic coding. This post covers tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. </p></div></div></section><div class="page-wrapper"><article><div class=""><div class="Body-module-scss-module__z40yvW__body" data-theme="ivory"><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">We recently <a href="https://www.anthropic.com/news/claude-3-7-sonnet">released Claude Code</a>, a command line tool for agentic coding. Developed as a research project, Claude Code gives Anthropic engineers and researchers a more native way to integrate Claude into their coding workflows.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code is intentionally low-level and unopinionated, providing close to raw model access without forcing specific workflows. This design philosophy creates a flexible, customizable, scriptable, and safe power tool. While powerful, this flexibility presents a learning curve for engineers new to agentic coding tools—at least until they develop their own best practices.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This post outlines general patterns that have proven effective, both for Anthropic's internal teams and for external engineers using Claude Code across various codebases, languages, and environments. Nothing in this list is set in stone nor universally applicable; consider these suggestions as starting points. We encourage you to experiment and find what works best for you!</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><em>Looking for more detailed information? Our comprehensive documentation at <a href="https://claude.ai/redirect/website.v1.2f1aa8b9-db07-4233-a91c-31862f2fa786/code">claude.ai/code</a></em> <em>covers all the features mentioned in this post and provides additional examples, implementation details, and advanced techniques.</em></p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><em></em></p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="1-customize-your-setup">1. Customize your setup</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code is an agentic coding assistant that automatically pulls context into prompts. This context gathering consumes time and tokens, but you can optimize it through environment tuning.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-create-claudemd-files">a. Create <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> is a special file that Claude automatically pulls into context when starting a conversation. This makes it an ideal place for documenting:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Common bash commands</li><li>Core files and utility functions</li><li>Code style guidelines</li><li>Testing instructions</li><li>Repository etiquette (e.g., branch naming, merge vs. rebase, etc.)</li><li>Developer environment setup (e.g., pyenv use, which compilers work)</li><li>Any unexpected behaviors or warnings particular to the project</li><li>Other information you want Claude to remember</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Theres no required format for <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files. We recommend keeping them concise and human-readable. For example:</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><div class="CodeBlock-module-scss-module__PbWBnq__codeBlock"><pre class="" style="--height: 304px; --height-expanded: 304px;"><code class="plaintext"># Bash commands
- npm run build: Build the project
- npm run typecheck: Run the typechecker
# Code style
- Use ES modules (import/export) syntax, not CommonJS (require)
- Destructure imports when possible (eg. import { foo } from 'bar')
# Workflow
- Be sure to typecheck when youre done making a series of code changes
- Prefer running single tests, and not the whole test suite, for performance</code></pre><div class="CodeBlock-module-scss-module__PbWBnq__controls"><button aria-label="Copy code"><svg class="Icon-module-scss-module__lqbdHG__icon" width="11" height="15" viewBox="0 0 11 15"><path d="M5.4 0C6.39875 0 7.26819 0.543814 7.73525 1.35H9.45C10.1956 1.35 10.8 1.95442 10.8 2.7V13.5C10.8 14.2456 10.1956 14.85 9.45 14.85H1.35C0.604415 14.85 2.17436e-08 14.2456 0 13.5V2.7C1.7395e-07 1.95442 0.604415 1.35 1.35 1.35H3.06475C3.53181 0.543814 4.40125 0 5.4 0ZM1.35 2.25C1.10147 2.25 0.9 2.45147 0.9 2.7V13.5C0.9 13.7485 1.10147 13.95 1.35 13.95H9.45C9.69853 13.95 9.9 13.7485 9.9 13.5V2.7C9.9 2.45147 9.69853 2.25 9.45 2.25H8.06221C8.08677 2.39637 8.1 2.54665 8.1 2.7V3.6C8.1 3.84853 7.89853 4.05 7.65 4.05H3.15C2.90147 4.05 2.7 3.84853 2.7 3.6V2.7C2.7 2.54665 2.71323 2.39637 2.73779 2.25H1.35ZM7.68603 10.6233C7.78376 10.395 8.04828 10.2886 8.27666 10.386C8.50499 10.4838 8.61143 10.7483 8.51396 10.9767C8.24856 11.5967 7.73014 12.15 7.01982 12.15C6.58192 12.1499 6.21722 11.9397 5.93965 11.6332C5.66215 11.9395 5.29801 12.1499 4.86035 12.15C4.42229 12.15 4.05692 11.9398 3.7793 11.6332C3.50175 11.9395 3.13773 12.15 2.7 12.15C2.45147 12.15 2.25 11.9485 2.25 11.7C2.25 11.4515 2.45147 11.25 2.7 11.25C2.8912 11.25 3.16726 11.0879 3.36621 10.6233L3.39697 10.5636C3.47806 10.4321 3.62261 10.35 3.78018 10.35C3.9602 10.3501 4.1233 10.4578 4.19414 10.6233C4.39309 11.0878 4.66917 11.25 4.86035 11.25C5.05156 11.2498 5.32773 11.0877 5.52656 10.6233L5.55732 10.5636C5.63837 10.4323 5.78229 10.3501 5.93965 10.35C6.11974 10.35 6.28275 10.4578 6.35361 10.6233C6.55251 11.0878 6.82862 11.2499 7.01982 11.25C7.21102 11.25 7.48708 11.0879 7.68603 10.6233ZM7.68603 7.02334C7.78376 6.79501 8.04828 6.68857 8.27666 6.78604C8.50499 6.88376 8.61143 7.14828 8.51396 7.37666C8.24856 7.99675 7.73014 8.55 7.01982 8.55C6.58192 8.54994 6.21722 8.3397 5.93965 8.0332C5.66215 8.33947 5.29801 8.54989 4.86035 8.55C4.42229 8.55 4.05692 8.33983 3.7793 8.0332C3.50175 8.33945 3.13773 8.55 2.7 8.55C2.45147 8.55 2.25 8.34853 2.25 8.1C2.25 7.85147 2.45147 7.65 2.7 7.65C2.8912 7.65 3.16726 7.48791 3.36621 7.02334L3.39697 6.96357C3.47806 6.83213 3.62261 6.75 3.78018 6.75C3.9602 6.75007 4.1233 6.85783 4.19414 7.02334C4.39309 7.48782 4.66917 7.65 4.86035 7.65C5.05156 7.6498 5.32773 7.48772 5.52656 7.02334L5.55732 6.96357C5.63837 6.83232 5.78229 6.75012 5.93965 6.75C6.11974 6.75 6.28275 6.85778 6.35361 7.02334C6.55251 7.48782 6.82862 7.6499 7.01982 7.65C7.21102 7.65 7.48708 7.48786 7.68603 7.02334ZM5.4 0.9C4.40589 0.9 3.6 1.70589 3.6 2.7V3.15H7.2V2.7C7.2 1.70589 6.39411 0.9 5.4 0.9Z" fill="currentColor"></path></svg><span class="body-3">Copy</span></button></div></div></div><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">You can place <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files in several locations:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>The root of your repo</strong>, or wherever you run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude</code> from (the most common usage). Name it <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> and check it into git so that you can share it across sessions and with your team (recommended), or name it <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.local.md</code> and <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.gitignore</code> it</li><li><strong>Any parent of the directory</strong> where you run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude</code>. This is most useful for monorepos, where you might run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude</code> from <code class="InlineCodeBlock-module-scss-module__nsPAba__code">root/foo</code>, and have <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files in both <code class="InlineCodeBlock-module-scss-module__nsPAba__code">root/CLAUDE.md</code> and <code class="InlineCodeBlock-module-scss-module__nsPAba__code">root/foo/CLAUDE.md</code>. Both of these will be pulled into context automatically</li><li><strong>Any child of the directory</strong> where you run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude</code>. This is the inverse of the above, and in this case, Claude will pull in <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files on demand when you work with files in child directories</li><li><strong>Your home folder</strong> (<code class="InlineCodeBlock-module-scss-module__nsPAba__code">~/.claude/CLAUDE.md</code>), which applies it to all your <em>claude</em> sessions</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">When you run the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/init</code> command, Claude will automatically generate a <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> for you.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-tune-your-claudemd-files">b. Tune your <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Your <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files become part of Claudes prompts, so they should be refined like any frequently used prompt. A common mistake is adding extensive content without iterating on its effectiveness. Take time to experiment and determine what produces the best instruction following from the model.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">You can add content to your <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> manually or press the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">#</code> key to give Claude an instruction that it will automatically incorporate into the relevant <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code>. Many engineers use <code class="InlineCodeBlock-module-scss-module__nsPAba__code">#</code> frequently to document commands, files, and style guidelines while coding, then include <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> changes in commits so team members benefit as well.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">At Anthropic, we occasionally run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code> files through the <a href="https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/prompt-improver">prompt improver</a> and often tune instructions (e.g. adding emphasis with "IMPORTANT" or "YOU MUST") to improve adherence.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Claude Code tool allowlist" loading="lazy" width="1600" height="1231" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6961243cc6409e41ba93895faded4f4bc1772366-1600x1231.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6961243cc6409e41ba93895faded4f4bc1772366-1600x1231.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6961243cc6409e41ba93895faded4f4bc1772366-1600x1231.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="c-curate-claudes-list-of-allowed-tools">c. Curate Claude's list of allowed tools</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">By default, Claude Code requests permission for any action that might modify your system: file writes, many bash commands, MCP tools, etc. We designed Claude Code with this deliberately conservative approach to prioritize safety. You can customize the allowlist to permit additional tools that you know are safe, or to allow potentially unsafe tools that are easy to undo (e.g., file editing, <code class="InlineCodeBlock-module-scss-module__nsPAba__code">git commit</code>).</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">There are four ways to manage allowed tools:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Select "Always allow"</strong> when prompted during a session.</li><li><strong>Use the<em> </em><code class="InlineCodeBlock-module-scss-module__nsPAba__code">/permissions</code><em> </em>command</strong> after starting Claude Code to add or remove tools from the allowlist. For example, you can add <code class="InlineCodeBlock-module-scss-module__nsPAba__code">Edit</code> to always allow file edits, <code class="InlineCodeBlock-module-scss-module__nsPAba__code">Bash(git commit:*)</code> to allow git commits, or <code class="InlineCodeBlock-module-scss-module__nsPAba__code">mcp__puppeteer__puppeteer_navigate</code> to allow navigating with the Puppeteer MCP server.</li><li><strong>Manually edit</strong> your <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.claude/settings.json</code> or <code class="InlineCodeBlock-module-scss-module__nsPAba__code">~/.claude.json</code> (we recommend checking the former into source control to share with your team)<em>.</em></li><li><strong>Use the<code class="InlineCodeBlock-module-scss-module__nsPAba__code"> --allowedTools</code> CLI flag</strong> for session-specific permissions.</li></ul><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="d-if-using-github-install-the-gh-cli">d. If using GitHub, install the gh CLI</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude knows how to use the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">gh</code> CLI to interact with GitHub for creating issues, opening pull requests, reading comments, and more. Without <code class="InlineCodeBlock-module-scss-module__nsPAba__code">gh</code> installed, Claude can still use the GitHub API or MCP server (if you have it installed).</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="2-give-claude-more-tools">2. Give Claude more tools</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude has access to your shell environment, where you can build up sets of convenience scripts and functions for it just like you would for yourself. It can also leverage more complex tools through MCP and REST APIs.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-use-claude-with-bash-tools">a. Use Claude with bash tools</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code inherits your bash environment, giving it access to all your tools. While Claude knows common utilities like unix tools and <code class="InlineCodeBlock-module-scss-module__nsPAba__code">gh</code>, it won't know about your custom bash tools without instructions:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Tell Claude the tool name with usage examples</li><li>Tell Claude to run<em> </em><code class="InlineCodeBlock-module-scss-module__nsPAba__code">--help</code><em> </em>to see tool documentation</li><li>Document frequently used tools in <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CLAUDE.md</code></li></ol><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-use-claude-with-mcp">b. Use Claude with MCP</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code functions as both an MCP server and client. As a client, it can connect to any number of MCP servers to access their tools in three ways:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>In project config</strong> (available when running Claude Code in that directory)</li><li><strong>In global config </strong>(available in all projects)</li><li><strong>In a checked-in <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.mcp.json</code> file</strong> (available to anyone working in your codebase). For example, you can add Puppeteer and Sentry servers to your <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.mcp.json</code>, so that every engineer working on your repo can use these out of the box.</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">When working with MCP, it can also be helpful to launch Claude with the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">--mcp-debug</code> flag to help identify configuration issues.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="c-use-custom-slash-commands">c. Use custom slash commands</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For repeated workflows—debugging loops, log analysis, etc.—store prompt templates in Markdown files within the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.claude/commands</code> folder. These become available through the slash commands menu when you type <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/</code>. You can check these commands into git to make them available for the rest of your team.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Custom slash commands can include the special keyword <code class="InlineCodeBlock-module-scss-module__nsPAba__code">$ARGUMENTS</code> to pass parameters from command invocation.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For example, heres a slash command that you could use to automatically pull and fix a Github issue:</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><div class="CodeBlock-module-scss-module__PbWBnq__codeBlock"><pre class="" style="--height: 346px; --height-expanded: 346px;"><code class="plaintext">Please analyze and fix the GitHub issue: $ARGUMENTS.
Follow these steps:
1. Use `gh issue view` to get the issue details
2. Understand the problem described in the issue
3. Search the codebase for relevant files
4. Implement the necessary changes to fix the issue
5. Write and run tests to verify the fix
6. Ensure code passes linting and type checking
7. Create a descriptive commit message
8. Push and create a PR
Remember to use the GitHub CLI (`gh`) for all GitHub-related tasks.</code></pre><div class="CodeBlock-module-scss-module__PbWBnq__controls"><button aria-label="Copy code"><svg class="Icon-module-scss-module__lqbdHG__icon" width="11" height="15" viewBox="0 0 11 15"><path d="M5.4 0C6.39875 0 7.26819 0.543814 7.73525 1.35H9.45C10.1956 1.35 10.8 1.95442 10.8 2.7V13.5C10.8 14.2456 10.1956 14.85 9.45 14.85H1.35C0.604415 14.85 2.17436e-08 14.2456 0 13.5V2.7C1.7395e-07 1.95442 0.604415 1.35 1.35 1.35H3.06475C3.53181 0.543814 4.40125 0 5.4 0ZM1.35 2.25C1.10147 2.25 0.9 2.45147 0.9 2.7V13.5C0.9 13.7485 1.10147 13.95 1.35 13.95H9.45C9.69853 13.95 9.9 13.7485 9.9 13.5V2.7C9.9 2.45147 9.69853 2.25 9.45 2.25H8.06221C8.08677 2.39637 8.1 2.54665 8.1 2.7V3.6C8.1 3.84853 7.89853 4.05 7.65 4.05H3.15C2.90147 4.05 2.7 3.84853 2.7 3.6V2.7C2.7 2.54665 2.71323 2.39637 2.73779 2.25H1.35ZM7.68603 10.6233C7.78376 10.395 8.04828 10.2886 8.27666 10.386C8.50499 10.4838 8.61143 10.7483 8.51396 10.9767C8.24856 11.5967 7.73014 12.15 7.01982 12.15C6.58192 12.1499 6.21722 11.9397 5.93965 11.6332C5.66215 11.9395 5.29801 12.1499 4.86035 12.15C4.42229 12.15 4.05692 11.9398 3.7793 11.6332C3.50175 11.9395 3.13773 12.15 2.7 12.15C2.45147 12.15 2.25 11.9485 2.25 11.7C2.25 11.4515 2.45147 11.25 2.7 11.25C2.8912 11.25 3.16726 11.0879 3.36621 10.6233L3.39697 10.5636C3.47806 10.4321 3.62261 10.35 3.78018 10.35C3.9602 10.3501 4.1233 10.4578 4.19414 10.6233C4.39309 11.0878 4.66917 11.25 4.86035 11.25C5.05156 11.2498 5.32773 11.0877 5.52656 10.6233L5.55732 10.5636C5.63837 10.4323 5.78229 10.3501 5.93965 10.35C6.11974 10.35 6.28275 10.4578 6.35361 10.6233C6.55251 11.0878 6.82862 11.2499 7.01982 11.25C7.21102 11.25 7.48708 11.0879 7.68603 10.6233ZM7.68603 7.02334C7.78376 6.79501 8.04828 6.68857 8.27666 6.78604C8.50499 6.88376 8.61143 7.14828 8.51396 7.37666C8.24856 7.99675 7.73014 8.55 7.01982 8.55C6.58192 8.54994 6.21722 8.3397 5.93965 8.0332C5.66215 8.33947 5.29801 8.54989 4.86035 8.55C4.42229 8.55 4.05692 8.33983 3.7793 8.0332C3.50175 8.33945 3.13773 8.55 2.7 8.55C2.45147 8.55 2.25 8.34853 2.25 8.1C2.25 7.85147 2.45147 7.65 2.7 7.65C2.8912 7.65 3.16726 7.48791 3.36621 7.02334L3.39697 6.96357C3.47806 6.83213 3.62261 6.75 3.78018 6.75C3.9602 6.75007 4.1233 6.85783 4.19414 7.02334C4.39309 7.48782 4.66917 7.65 4.86035 7.65C5.05156 7.6498 5.32773 7.48772 5.52656 7.02334L5.55732 6.96357C5.63837 6.83232 5.78229 6.75012 5.93965 6.75C6.11974 6.75 6.28275 6.85778 6.35361 7.02334C6.55251 7.48782 6.82862 7.6499 7.01982 7.65C7.21102 7.65 7.48708 7.48786 7.68603 7.02334ZM5.4 0.9C4.40589 0.9 3.6 1.70589 3.6 2.7V3.15H7.2V2.7C7.2 1.70589 6.39411 0.9 5.4 0.9Z" fill="currentColor"></path></svg><span class="body-3">Copy</span></button></div></div></div><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Putting the above content into <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.claude/commands/fix-github-issue.md</code> makes it available as the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/project:fix-github-issue</code> command in Claude Code. You could then for example use <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/project:fix-github-issue 1234</code> to have Claude fix issue #1234. Similarly, you can add your own personal commands to the<em> </em><code class="InlineCodeBlock-module-scss-module__nsPAba__code">~/.claude/commands</code> folder for commands you want available in all of your sessions.</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="3-try-common-workflows">3. Try common workflows</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code doesnt impose a specific workflow, giving you the flexibility to use it how you want. Within the space this flexibility affords, several successful patterns for effectively using Claude Code have emerged across our community of users:</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-explore-plan-code-commit">a. Explore, plan, code, commit</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This versatile workflow suits many problems:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Ask Claude to read relevant files, images, or URLs</strong>, providing either general pointers ("read the file that handles logging") or specific filenames ("read logging.py"), but explicitly tell it not to write any code just yet.<ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>This is the part of the workflow where you should consider strong use of subagents, especially for complex problems. Telling Claude to use subagents to verify details or investigate particular questions it might have, especially early on in a conversation or task, tends to preserve context availability without much downside in terms of lost efficiency.</li></ol></li><li><strong>Ask Claude to make a plan for how to approach a specific problem</strong>. We recommend using the word "think" to trigger extended thinking mode, which gives Claude additional computation time to evaluate alternatives more thoroughly. These specific phrases are mapped directly to increasing levels of thinking budget in the system: "think" &lt; "think hard" &lt; "think harder" &lt; "ultrathink." Each level allocates progressively more thinking budget for Claude to use.<ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>If the results of this step seem reasonable, you can have Claude create a document or a GitHub issue with its plan so that you can reset to this spot if the implementation (step 3) isnt what you want.</li></ol></li><li><strong>Ask Claude to implement its solution in code</strong>. This is also a good place to ask it to explicitly verify the reasonableness of its solution as it implements pieces of the solution.</li><li><strong>Ask Claude to commit the result and create a pull request</strong>. If relevant, this is also a good time to have Claude update any READMEs or changelogs with an explanation of what it just did.</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Steps #1-#2 are crucial—without them, Claude tends to jump straight to coding a solution. While sometimes that's what you want, asking Claude to research and plan first significantly improves performance for problems requiring deeper thinking upfront.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-write-tests-commit-code-iterate-commit">b. Write tests, commit; code, iterate, commit</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This is an Anthropic-favorite workflow for changes that are easily verifiable with unit, integration, or end-to-end tests. Test-driven development (TDD) becomes even more powerful with agentic coding:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Ask Claude to write tests based on expected input/output pairs</strong>. Be explicit about the fact that youre doing test-driven development so that it avoids creating mock implementations, even for functionality that doesnt exist yet in the codebase.</li><li><strong>Tell Claude to run the tests and confirm they fail</strong>. Explicitly telling it not to write any implementation code at this stage is often helpful.</li><li><strong>Ask Claude to commit the tests </strong>when youre satisfied with them.</li><li><strong>Ask Claude to write code that passes the tests</strong>, instructing it not to modify the tests. Tell Claude to keep going until all tests pass. It will usually take a few iterations for Claude to write code, run the tests, adjust the code, and run the tests again.<ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>At this stage, it can help to ask it to verify with independent subagents that the implementation isnt overfitting to the tests</li></ol></li><li><strong>Ask Claude to commit the code</strong> once youre satisfied with the changes.</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude performs best when it has a clear target to iterate against—a visual mock, a test case, or another kind of output. By providing expected outputs like tests, Claude can make changes, evaluate results, and incrementally improve until it succeeds.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="c-write-code-screenshot-result-iterate">c. Write code, screenshot result, iterate</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Similar to the testing workflow, you can provide Claude with visual targets:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Give Claude a way to take browser screenshots</strong> (e.g., with the <a href="https://github.com/modelcontextprotocol/servers/tree/c19925b8f0f2815ad72b08d2368f0007c86eb8e6/src/puppeteer">Puppeteer MCP server</a>, an <a href="https://github.com/joshuayoes/ios-simulator-mcp">iOS simulator MCP server</a>, or manually copy / paste screenshots into Claude).</li><li><strong>Give Claude a visual mock</strong> by copying / pasting or drag-dropping an image, or giving Claude the image file path.</li><li><strong>Ask Claude to implement the design</strong> in code, take screenshots of the result, and iterate until its result matches the mock.</li><li><strong>Ask Claude to commit</strong> when you're satisfied.</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Like humans, Claude's outputs tend to improve significantly with iteration. While the first version might be good, after 2-3 iterations it will typically look much better. Give Claude the tools to see its outputs for best results.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Safe yolo mode" loading="lazy" width="1600" height="1143" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6ea59a36fe82c2b300bceaf3b880a4b4852c552d-1600x1143.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6ea59a36fe82c2b300bceaf3b880a4b4852c552d-1600x1143.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F6ea59a36fe82c2b300bceaf3b880a4b4852c552d-1600x1143.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="d-safe-yolo-mode">d. Safe YOLO mode</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Instead of supervising Claude, you can use <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude --dangerously-skip-permissions</code> to bypass all permission checks and let Claude work uninterrupted until completion. This works well for workflows like fixing lint errors or generating boilerplate code.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Letting Claude run arbitrary commands is risky and can result in data loss, system corruption, or even data exfiltration (e.g., via prompt injection attacks). To minimize these risks, use <code class="InlineCodeBlock-module-scss-module__nsPAba__code">--dangerously-skip-permissions</code> in a container without internet access. You can follow this <a href="https://github.com/anthropics/claude-code/tree/main/.devcontainer">reference implementation</a> using Docker Dev Containers.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="e-codebase-qa">e. Codebase Q&amp;A</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">When onboarding to a new codebase, use Claude Code for learning and exploration. You can ask Claude the same sorts of questions you would ask another engineer on the project when pair programming. Claude can agentically search the codebase to answer general questions like:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>How does logging work?</li><li>How do I make a new API endpoint?</li><li>What does <code class="InlineCodeBlock-module-scss-module__nsPAba__code">async move { ... }</code> do on line 134 of <code class="InlineCodeBlock-module-scss-module__nsPAba__code">foo.rs</code>?</li><li>What edge cases does <code class="InlineCodeBlock-module-scss-module__nsPAba__code">CustomerOnboardingFlowImpl</code> handle?</li><li>Why are we calling <code class="InlineCodeBlock-module-scss-module__nsPAba__code">foo()</code> instead of <code class="InlineCodeBlock-module-scss-module__nsPAba__code">bar()</code> on line 333?</li><li>Whats the equivalent of line 334 of <code class="InlineCodeBlock-module-scss-module__nsPAba__code">baz.py</code> in Java?</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">At Anthropic, using Claude Code in this way has become our core onboarding workflow, significantly improving ramp-up time and reducing load on other engineers. No special prompting is required! Simply ask questions, and Claude will explore the code to find answers.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Use Claude to interact with git" loading="lazy" width="1600" height="1278" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fa08ea13c2359aac0eceacebf2e15f81e8e8ec8d2-1600x1278.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fa08ea13c2359aac0eceacebf2e15f81e8e8ec8d2-1600x1278.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fa08ea13c2359aac0eceacebf2e15f81e8e8ec8d2-1600x1278.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="f-use-claude-to-interact-with-git">f. Use Claude to interact with git</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude can effectively handle many git operations. Many Anthropic engineers use Claude for 90%+ of our <em>git</em> interactions:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Searching <em>git</em> history</strong> to answer questions like "What changes made it into v1.2.3?", "Who owns this particular feature?", or "Why was this API designed this way?" It helps to explicitly prompt Claude to look through git history to answer queries like these.</li><li><strong>Writing commit messages</strong>.<strong> </strong>Claude will look at your changes and recent history automatically to compose a message taking all the relevant context into account</li><li><strong>Handling complex git operations</strong> like reverting files, resolving rebase conflicts, and comparing and grafting patches</li></ul><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="g-use-claude-to-interact-with-github">g. Use Claude to interact with GitHub</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code can manage many GitHub interactions:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Creating pull requests</strong>: Claude understands the shorthand "pr" and will generate appropriate commit messages based on the diff and surrounding context.</li><li><strong>Implementing one-shot resolutions</strong> for simple code review comments: just tell it to fix comments on your PR (optionally, give it more specific instructions) and push back to the PR branch when it's done.</li><li><strong>Fixing failing builds</strong> or linter warnings</li><li><strong>Categorizing and triaging open issues</strong> by asking Claude to loop over open GitHub issues</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This eliminates the need to remember <code class="InlineCodeBlock-module-scss-module__nsPAba__code">gh</code> command line syntax while automating routine tasks.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="h-use-claude-to-work-with-jupyter-notebooks">h. Use Claude to work with Jupyter notebooks</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Researchers and data scientists at Anthropic use Claude Code to read and write Jupyter notebooks. Claude can interpret outputs, including images, providing a fast way to explore and interact with data. There are no required prompts or workflows, but a workflow we recommend is to have Claude Code and a <code class="InlineCodeBlock-module-scss-module__nsPAba__code">.ipynb</code> file open side-by-side in VS Code.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">You can also ask Claude to clean up or make aesthetic improvements to your Jupyter notebook before you show it to colleagues. Specifically telling it to make the notebook or its data visualizations “aesthetically pleasing” tends to help remind it that its optimizing for a human viewing experience.</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="4-optimize-your-workflow">4. Optimize your workflow</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">The suggestions below apply across all workflows:</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-be-specific-in-your-instructions">a. Be specific in your instructions</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Codes success rate improves significantly with more specific instructions, especially on first attempts. Giving clear directions upfront reduces the need for course corrections later.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For example:</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><div class="Table-module-scss-module__Z3bHXa__root"><div class="Table-module-scss-module__Z3bHXa__tableWrapper" role="region" tabindex="0"><table class="Table-module-scss-module__Z3bHXa__table"><tbody><tr class="Table-module-scss-module__Z3bHXa__row"><th class="body-3">Poor</th><th class="body-3">Good</th></tr><tr class="Table-module-scss-module__Z3bHXa__row"><td class="body-3">add tests for foo.py</td><td class="body-3">write a new test case for foo.py, covering the edge case where the user is logged out. avoid mocks</td></tr><tr class="Table-module-scss-module__Z3bHXa__row"><td class="body-3">why does ExecutionFactory have such a weird api?</td><td class="body-3">look through ExecutionFactory's git history and summarize how its api came to be</td></tr><tr class="Table-module-scss-module__Z3bHXa__row"><td class="body-3">add a calendar widget</td><td class="body-3">look at how existing widgets are implemented on the home page to understand the patterns and specifically how code and interfaces are separated out. HotDogWidget.php is a good example to start with. then, follow the pattern to implement a new calendar widget that lets the user select a month and paginate forwards/backwards to pick a year. Build from scratch without libraries other than the ones already used in the rest of the codebase.</td></tr></tbody></table></div></div></div><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude can infer intent, but it can't read minds. Specificity leads to better alignment with expectations.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Give Claude images" loading="lazy" width="1360" height="1126" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F75e1b57a0b696e7aafeca1ed5fa6ba7c601a5953-1360x1126.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F75e1b57a0b696e7aafeca1ed5fa6ba7c601a5953-1360x1126.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F75e1b57a0b696e7aafeca1ed5fa6ba7c601a5953-1360x1126.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-give-claude-images">b. Give Claude images</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude excels with images and diagrams through several methods:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Paste screenshots </strong>(pro tip: hit <em>cmd+ctrl+shift+4</em> in macOS to screenshot to clipboard and<em> ctrl+v</em> to paste. Note that this is not cmd+v like you would usually use to paste on mac and does not work remotely.)</li><li><strong>Drag and drop</strong> images directly into the prompt input</li><li><strong>Provide file paths </strong>for images</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This is particularly useful when working with design mocks as reference points for UI development, and visual charts for analysis and debugging. If you are not adding visuals to context, it can still be helpful to be clear with Claude about how important it is for the result to be visually appealing.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Mention files you want Claude to look at or work on" loading="lazy" width="1450" height="1164" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F7372868757dd17b6f2d3fef98d499d7991d89800-1450x1164.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F7372868757dd17b6f2d3fef98d499d7991d89800-1450x1164.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2F7372868757dd17b6f2d3fef98d499d7991d89800-1450x1164.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="c-mention-files-you-want-claude-to-look-at-or-work-on">c. Mention files you want Claude to look at or work on</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Use tab-completion to quickly reference files or folders anywhere in your repository, helping Claude find or update the right resources.</p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><figure class="ImageWithCaption-module-scss-module__Duq99q__e-imageWithCaption"><img alt="Give Claude URLs" loading="lazy" width="1306" height="1088" decoding="async" data-nimg="1" style="color:transparent" srcset="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fe071de707f209bbaa7f16b593cc7ed0739875dae-1306x1088.png&amp;w=1920&amp;q=75 1x, /_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fe071de707f209bbaa7f16b593cc7ed0739875dae-1306x1088.png&amp;w=3840&amp;q=75 2x" src="/_next/image?url=https%3A%2F%2Fwww-cdn.anthropic.com%2Fimages%2F4zrzovbb%2Fwebsite%2Fe071de707f209bbaa7f16b593cc7ed0739875dae-1306x1088.png&amp;w=3840&amp;q=75"></figure></div><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="d-give-claude-urls">d. Give Claude URLs</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Paste specific URLs alongside your prompts for Claude to fetch and read. To avoid permission prompts for the same domains (e.g., docs.foo.com), use<em> </em><code class="InlineCodeBlock-module-scss-module__nsPAba__code">/permissions</code> to add domains to your allowlist.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="e-course-correct-early-and-often">e. Course correct early and often</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">While auto-accept mode (shift+tab to toggle) lets Claude work autonomously, you'll typically get better results by being an active collaborator and guiding Claude's approach. You can get the best results by thoroughly explaining the task to Claude at the beginning, but you can also course correct Claude at any time.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">These four tools help with course correction:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Ask Claude to make a plan</strong> before coding. Explicitly tell it not to code until youve confirmed its plan looks good.</li><li><strong>Press Escape to interrupt</strong> Claude during any phase (thinking, tool calls, file edits), preserving context so you can redirect or expand instructions.</li><li><strong>Double-tap Escape to jump back in history</strong>, edit a previous prompt, and explore a different direction. You can edit the prompt and repeat until you get the result you're looking for.</li><li><strong>Ask Claude to undo changes</strong>, often in conjunction with option #2 to take a different approach.</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Though Claude Code occasionally solves problems perfectly on the first attempt, using these correction tools generally produces better solutions faster.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="f-use-clear-to-keep-context-focused">f. Use <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/clear</code> to keep context focused</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">During long sessions, Claude's context window can fill with irrelevant conversation, file contents, and commands. This can reduce performance and sometimes distract Claude. Use the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/clear</code> command frequently between tasks to reset the context window.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="g-use-checklists-and-scratchpads-for-complex-workflows">g. Use checklists and scratchpads for complex workflows</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For large tasks with multiple steps or requiring exhaustive solutions—like code migrations, fixing numerous lint errors, or running complex build scripts—improve performance by having Claude use a Markdown file (or even a GitHub issue!) as a checklist and working scratchpad:</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For example, to fix a large number of lint issues, you can do the following:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Tell Claude to run the lint command</strong> and write all resulting errors (with filenames and line numbers) to a Markdown checklist</li><li><strong>Instruct Claude to address each issue one by one</strong>, fixing and verifying before checking it off and moving to the next</li></ol><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="h-pass-data-into-claude">h. Pass data into Claude</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Several methods exist for providing data to Claude:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Copy and paste</strong> directly into your prompt (most common approach)</li><li><strong>Pipe into Claude Code</strong> (e.g., <code class="InlineCodeBlock-module-scss-module__nsPAba__code">cat foo.txt | claude</code>), particularly useful for logs, CSVs, and large data</li><li><strong>Tell Claude to pull data</strong> via bash commands, MCP tools, or custom slash commands</li><li><strong>Ask Claude to read files</strong> or fetch URLs (works for images too)</li></ul><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Most sessions involve a combination of these approaches. For example, you can pipe in a log file, then tell Claude to use a tool to pull in additional context to debug the logs.</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="5-use-headless-mode-to-automate-your-infra">5. Use headless mode to automate your infra</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code includes <a href="https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#automate-ci-and-infra-workflows">headless mode</a> for non-interactive contexts like CI, pre-commit hooks, build scripts, and automation. Use the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">-p</code> flag with a prompt to enable headless mode, and <code class="InlineCodeBlock-module-scss-module__nsPAba__code">--output-format stream-json</code> for streaming JSON output.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Note that headless mode does not persist between sessions. You have to trigger it each session.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-use-claude-for-issue-triage">a. Use Claude for issue triage</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Headless mode can power automations triggered by GitHub events, such as when a new issue is created in your repository. For example, the public <a href="https://github.com/anthropics/claude-code/blob/main/.github/actions/claude-issue-triage-action/action.yml">Claude Code repository</a> uses Claude to inspect new issues as they come in and assign appropriate labels.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-use-claude-as-a-linter">b. Use Claude as a linter</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Claude Code can provide <a href="https://github.com/anthropics/claude-code-action/blob/main/action.yml" target="_blank" rel="noopener noreferrer">subjective code reviews</a> beyond what traditional linting tools detect, identifying issues like typos, stale comments, misleading function or variable names, and more.</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="6-uplevel-with-multi-claude-workflows">6. Uplevel with multi-Claude workflows</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Beyond standalone usage, some of the most powerful applications involve running multiple Claude instances in parallel:</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="a-have-one-claude-write-code-use-another-claude-to-verify">a. Have one Claude write code; use another Claude to verify</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">A simple but effective approach is to have one Claude write code while another reviews or tests it. Similar to working with multiple engineers, sometimes having separate context is beneficial:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Use Claude to write code</li><li>Run <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/clear</code> or start a second Claude in another terminal</li><li>Have the second Claude review the first Claude's work</li><li>Start another Claude (or <code class="InlineCodeBlock-module-scss-module__nsPAba__code">/clear</code> again) to read both the code and review feedback</li><li>Have this Claude edit the code based on the feedback</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">You can do something similar with tests: have one Claude write tests, then have another Claude write code to make the tests pass. You can even have your Claude instances communicate with each other by giving them separate working scratchpads and telling them which one to write to and which one to read from.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This separation often yields better results than having a single Claude handle everything.</p><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="b-have-multiple-checkouts-of-your-repo">b. Have multiple checkouts of your repo</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Rather than waiting for Claude to complete each step, something many engineers at Anthropic do is:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Create 3-4 git checkouts</strong> in separate folders</li><li><strong>Open each folder</strong> in separate terminal tabs</li><li><strong>Start Claude in each folder </strong>with different tasks</li><li><strong>Cycle through</strong> to check progress and approve/deny permission requests</li></ol><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="c-use-git-worktrees">c. Use git worktrees</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">This approach shines for multiple independent tasks, offering a lighter-weight alternative to multiple checkouts. Git worktrees allow you to check out multiple branches from the same repository into separate directories. Each worktree has its own working directory with isolated files, while sharing the same Git history and reflog.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Using git worktrees enables you to run multiple Claude sessions simultaneously on different parts of your project, each focused on its own independent task. For instance, you might have one Claude refactoring your authentication system while another builds a completely unrelated data visualization component. Since the tasks don't overlap, each Claude can work at full speed without waiting for the other's changes or dealing with merge conflicts:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li><strong>Create worktrees</strong>: <code class="InlineCodeBlock-module-scss-module__nsPAba__code">git worktree add ../project-feature-a feature-a</code></li><li><strong>Launch Claude in each worktree</strong>: <code class="InlineCodeBlock-module-scss-module__nsPAba__code">cd ../project-feature-a &amp;&amp; claude</code></li><li><strong>Create additional worktrees</strong> as needed (repeat steps 1-2 in new terminal tabs)</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Some tips:</p><ul class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Use consistent naming conventions</li><li>Maintain one terminal tab per worktree</li><li>If youre using iTerm2 on Mac, <a href="https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#notification-setup">set up notifications</a> for when Claude needs attention</li><li>Use separate IDE windows for different worktrees</li><li>Clean up when finished: <code class="InlineCodeBlock-module-scss-module__nsPAba__code">git worktree remove ../project-feature-a</code></li></ul><h3 class="Body-module-scss-module__z40yvW__reading-column headline-6 post-subsection" id="d-use-headless-mode-with-a-custom-harness">d. Use headless mode with a custom harness</h3><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude -p</code> (headless mode) integrates Claude Code programmatically into larger workflows while leveraging its built-in tools and system prompt. There are two primary patterns for using headless mode:</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">1. <strong>Fanning out</strong> handles large migrations or analyses (e.g., analyzing sentiment in hundreds of logs or analyzing thousands of CSVs):</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Have Claude write a script to generate a task list. For example, generate a list of 2k files that need to be migrated from framework A to framework B.</li><li>Loop through tasks, calling Claude programmatically for each and giving it a task and a set of tools it can use. For example: <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude -p “migrate foo.py from React to Vue. When you are done, you MUST return the string OK if you succeeded, or FAIL if the task failed.” --allowedTools Edit Bash(git commit:*)</code></li><li>Run the script several times and refine your prompt to get the desired outcome.</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">2. <strong>Pipelining</strong> integrates Claude into existing data/processing pipelines:</p><ol class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"><li>Call <code class="InlineCodeBlock-module-scss-module__nsPAba__code">claude -p “&lt;your prompt&gt;” --json | your_command</code>, where <code class="InlineCodeBlock-module-scss-module__nsPAba__code">your_command</code> is the next step of your processing pipeline</li><li>Thats it! JSON output (optional) can help provide structure for easier automated processing.</li></ol><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">For both of these use cases, it can be helpful to use the <code class="InlineCodeBlock-module-scss-module__nsPAba__code">--verbose</code> flag for debugging the Claude invocation. We generally recommend turning verbose mode off in production for cleaner output.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">What are your tips and best practices for working with Claude Code? Tag @AnthropicAI so we can see what you're building!</p><h2 class="Body-module-scss-module__z40yvW__reading-column headline-5 post-section" id="acknowledgements">Acknowledgements</h2><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text">Written by Boris Cherny. This work draws upon best practices from across the broader Claude Code user community, whose creative approaches and workflows continue to inspire us. Special thanks also to Daisy Hollman, Ashwin Bhat, Cat Wu, Sid Bidasaria, Cal Rueb, Nodir Turakulov, Barry Zhang, Drew Hodun and many other Anthropic engineers whose valuable insights and practical experience with Claude Code helped shape these recommendations.</p><p class="Body-module-scss-module__z40yvW__reading-column body-2 serif post-text"></p><div class="Body-module-scss-module__z40yvW__media-column Body-module-scss-module__z40yvW__inline"><a href="https://anthropic.skilljar.com/" class="ToutCallout-module-scss-module__gZk6bG__root" rel="noopener" target="_blank"><div class="ToutCallout-module-scss-module__gZk6bG__illustration bg-cactus"><img alt="Interlocking puzzle piece with complex geometric shape and detailed surface texture" loading="lazy" width="1000" height="1000" decoding="async" data-nimg="1" style="color:transparent" src="https://www-cdn.anthropic.com/images/4zrzovbb/website/43abe7e54b56a891e74a8542944dfbd33f07f49c-1000x1000.svg"></div><div class="ToutCallout-module-scss-module__gZk6bG__content"><div class="ToutCallout-module-scss-module__gZk6bG__textWrapper"><h3 class="body-2 serif ToutCallout-module-scss-module__gZk6bG__title">Looking to learn more?</h3></div><div class="caption ToutCallout-module-scss-module__gZk6bG__cta"><svg class="Icon-module-scss-module__lqbdHG__icon ToutCallout-module-scss-module__gZk6bG__icon" width="13" height="13" viewBox="0 0 13 13"><path d="M5.85 0C6.09853 0 6.3 0.201472 6.3 0.45C6.3 0.698528 6.09853 0.9 5.85 0.9H1.35C1.10147 0.9 0.9 1.10147 0.9 1.35V11.25C0.9 11.4985 1.10147 11.7 1.35 11.7H11.25C11.4985 11.7 11.7 11.4985 11.7 11.25V6.75C11.7 6.50147 11.9015 6.3 12.15 6.3C12.3985 6.3 12.6 6.50147 12.6 6.75V11.25C12.6 11.9956 11.9956 12.6 11.25 12.6H1.35C0.604416 12.6 1.81197e-08 11.9956 0 11.25V1.35C0 0.604416 0.604416 1.44959e-08 1.35 0H5.85ZM12.15 0C12.1836 -2.39063e-08 12.2172 0.00392809 12.2502 0.0114258C12.2712 0.0162292 12.2917 0.0230317 12.3117 0.0307617C12.3183 0.0333063 12.3246 0.036683 12.3311 0.0395508C12.3492 0.0475468 12.3668 0.056447 12.3838 0.0667969C12.3907 0.0710271 12.3982 0.0744632 12.4049 0.0791016C12.4274 0.0945678 12.4486 0.11224 12.4682 0.131836L12.5262 0.202148C12.536 0.217047 12.542 0.233889 12.5499 0.249609C12.555 0.259711 12.5614 0.269045 12.5657 0.279492C12.5811 0.31691 12.5899 0.355926 12.5947 0.395508C12.5969 0.413573 12.6 0.43161 12.6 0.45V4.05C12.6 4.29853 12.3985 4.5 12.15 4.5C11.9015 4.5 11.7 4.29853 11.7 4.05V1.53633L7.96816 5.26816C7.79243 5.4439 7.50757 5.4439 7.33184 5.26816C7.1561 5.09243 7.1561 4.80757 7.33184 4.63184L11.0637 0.9H8.55C8.30147 0.9 8.1 0.698528 8.1 0.45C8.1 0.201472 8.30147 4.25227e-08 8.55 0H12.15Z" fill="#5E5D59"></path></svg><span>Explore courses</span></div></div></a></div></div></div></article><div class="NewsletterEngineering-module-scss-module__AiizZa__wrapper"><div class="NewsletterEngineering-module-scss-module__AiizZa__content"><div class="NewsletterEngineering-module-scss-module__AiizZa__textContent"><h2 class="headline-5 NewsletterEngineering-module-scss-module__AiizZa__title">Get the developer newsletter</h2><div class="NewsletterEngineering-module-scss-module__AiizZa__body"><p class="body-1 serif tight">Product updates, how-tos, community spotlights, and more. Delivered monthly to your inbox.</p></div></div><div class="NewsletterEngineering-module-scss-module__AiizZa__formContainer"><form class="NewsletterEngineering-module-scss-module__AiizZa__emailForm"><div class="NewsletterEngineering-module-scss-module__AiizZa__inputWrapper"><input type="email" placeholder="Enter your email" class="NewsletterEngineering-module-scss-module__AiizZa__emailInput" required="" name="email" value=""><button type="submit" class="NewsletterEngineering-module-scss-module__AiizZa__submitButton"><svg class="Icon-module-scss-module__lqbdHG__icon" width="20" height="20" viewBox="0 0 21 21"><path d="M4.14585 9.87492L14.4584 9.87492L9.60419 5.04158L10.5 4.14575L16.8542 10.4999L10.5 16.8541L9.60419 15.9583L14.4584 11.1249L4.14585 11.1249L4.14585 9.87492Z" fill="#ffffff"></path></svg></button></div><p class="body-3">Please provide your email address if youd like to receive our monthly developer newsletter. You can unsubscribe at any time.</p></form></div></div></div></div></main><footer id="footer" class="SiteFooter-module-scss-module__JdOqwq__root" role="contentinfo" aria-label="Site footer"><div class="page-wrapper SiteFooter-module-scss-module__JdOqwq__footer"><div class="SiteFooter-module-scss-module__JdOqwq__logoWrapper"><a href="/" aria-label="Return to homepage"><svg class="Icon-module-scss-module__lqbdHG__icon" width="46" height="32" viewBox="0 0 46 32"><path d="M32.73 0h-6.945L38.45 32h6.945L32.73 0ZM12.665 0 0 32h7.082l2.59-6.72h13.25l2.59 6.72h7.082L19.929 0h-7.264Zm-.702 19.337 4.334-11.246 4.334 11.246h-8.668Z" fill="#faf9f5"></path></svg></a></div><nav class="SiteFooter-module-scss-module__JdOqwq__linksWrapper" aria-label="Footer navigation"><div class="SiteFooter-module-scss-module__JdOqwq__columnSection"><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Products</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://claude.com/product/overview" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude</a></li><li><a href="https://claude.com/product/claude-code" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude Code</a></li><li><a href="https://claude.com/chrome" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude in Chrome</a></li><li><a href="https://claude.com/claude-in-excel" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude in Excel</a></li><li><a href="https://claude.com/claude-in-slack" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude in Slack</a></li><li><a href="https://www.claude.com/skills" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Skills</a></li><li><a href="https://claude.com/pricing/max" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Max plan</a></li><li><a href="https://claude.com/pricing/team" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Team plan</a></li><li><a href="https://claude.com/pricing/enterprise" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Enterprise plan</a></li><li><a href="https://claude.ai/download" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Download app</a></li><li><a href="https://claude.com/pricing" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Pricing</a></li><li><a href="https://claude.ai/" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Log in to Claude</a></li></ul></div><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Models</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://www.anthropic.com/claude/opus" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Opus</a></li><li><a href="https://www.anthropic.com/claude/sonnet" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Sonnet</a></li><li><a href="https://www.anthropic.com/claude/haiku" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Haiku</a></li></ul></div></div><div class="SiteFooter-module-scss-module__JdOqwq__columnSection"><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Solutions</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://claude.com/solutions/agents" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">AI agents</a></li><li><a href="https://claude.com/solutions/code-modernization" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Code modernization</a></li><li><a href="https://claude.com/solutions/coding" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Coding</a></li><li><a href="https://claude.com/solutions/customer-support" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Customer support</a></li><li><a href="https://claude.com/solutions/education" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Education</a></li><li><a href="https://claude.com/solutions/financial-services" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Financial services</a></li><li><a href="https://claude.com/solutions/government" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Government</a></li><li><a href="https://claude.com/solutions/life-sciences" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Life sciences</a></li><li><a href="https://claude.com/solutions/nonprofits" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Nonprofits</a></li></ul></div><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Claude Developer Platform</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://claude.com/platform/api" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Overview</a></li><li><a href="https://platform.claude.com/docs" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Developer docs</a></li><li><a href="https://claude.com/pricing#api" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Pricing</a></li><li><a href="https://claude.com/regional-compliance" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Regional Compliance</a></li><li><a href="https://claude.com/partners/amazon-bedrock" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Amazon Bedrock</a></li><li><a href="https://claude.com/partners/google-cloud-vertex-ai" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Google Clouds Vertex AI</a></li><li><a href="http://console.anthropic.com/" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Console login</a></li></ul></div></div><div class="SiteFooter-module-scss-module__JdOqwq__columnSection"><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Learn</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://claude.com/blog" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Blog</a></li><li><a href="https://claude.com/partners" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Claude partner network</a></li><li><a href="https://claude.com/connectors" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Connectors</a></li><li><a href="/learn" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Courses</a></li><li><a href="https://claude.com/customers" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Customer stories</a></li><li><a href="/engineering" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Engineering at Anthropic</a></li><li><a href="/events" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Events</a></li><li><a href="https://claude.com/partners/powered-by-claude" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Powered by Claude</a></li><li><a href="https://claude.com/partners/services" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Service partners</a></li><li><a href="https://claude.com/programs/startups" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Startups program</a></li><li><a href="https://claude.com/resources/tutorials" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Tutorials</a></li><li><a href="https://claude.com/resources/use-cases" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Use cases</a></li></ul></div><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Company</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="/company" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Anthropic</a></li><li><a href="/careers" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Careers</a></li><li><a href="/economic-index" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Economic Futures</a></li><li><a href="/research" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Research</a></li><li><a href="/news" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">News</a></li><li><a href="https://www.anthropic.com/news/announcing-our-updated-responsible-scaling-policy" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Responsible Scaling Policy</a></li><li><a href="https://trust.anthropic.com/" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Security and compliance</a></li><li><a href="/transparency" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Transparency</a></li></ul></div></div><div class="SiteFooter-module-scss-module__JdOqwq__columnSection"><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Help and security</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><li><a href="https://www.anthropic.com/supported-countries" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Availability</a></li><li><a href="https://status.anthropic.com/" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Status</a></li><li><a href="https://support.claude.com/en/" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2" target="_blank" rel="noopener noreferrer">Support center</a></li></ul></div><div class="SiteFooter-module-scss-module__JdOqwq__listSection"><h3 class="body-2 bold">Terms and policies</h3><ul class="SiteFooter-module-scss-module__JdOqwq__list"><button class="ConsentContainer-module-scss-module__lrYMKa__consentButton body-2 agate" tabindex="0">Privacy choices</button><li><a href="https://www.anthropic.com/legal/privacy" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Privacy policy</a></li><li><a href="https://www.anthropic.com/responsible-disclosure-policy" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Responsible disclosure policy</a></li><li><a href="https://www.anthropic.com/legal/commercial-terms" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Terms of service: Commercial</a></li><li><a href="https://www.anthropic.com/legal/consumer-terms" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Terms of service: Consumer</a></li><li><a href="https://www.anthropic.com/legal/aup" class="SiteFooter-module-scss-module__JdOqwq__listItem body-2">Usage policy</a></li></ul></div></div></nav><div class="SiteFooter-module-scss-module__JdOqwq__socialWrapper"><small class="body-2 SiteFooter-module-scss-module__JdOqwq__copyright" role="contentinfo">© 2025 Anthropic PBC</small><ul class="SiteFooter-module-scss-module__JdOqwq__socialIcons" role="navigation" aria-label="Social media links"><li><a href="https://www.linkedin.com/company/anthropicresearch" aria-label="Visit our LinkedIn page" target="_blank" rel="noopener noreferrer"><svg class="Icon-module-scss-module__lqbdHG__icon" width="24" height="24" viewBox="0 0 32 32"><path d="M25.8182 4H6.18182C4.97636 4 4 4.97636 4 6.18182V25.8182C4 27.0236 4.97636 28 6.18182 28H25.8182C27.0236 28 28 27.0236 28 25.8182V6.18182C28 4.97636 27.0236 4 25.8182 4ZM11.5862 23.6364H8.368V13.2815H11.5862V23.6364ZM9.94436 11.8011C8.90691 11.8011 8.068 10.96 8.068 9.92473C8.068 8.88945 8.908 8.04945 9.94436 8.04945C10.9785 8.04945 11.8196 8.89055 11.8196 9.92473C11.8196 10.96 10.9785 11.8011 9.94436 11.8011ZM23.6407 23.6364H20.4247V18.6007C20.4247 17.3996 20.4029 15.8549 18.7524 15.8549C17.0778 15.8549 16.8204 17.1629 16.8204 18.5135V23.6364H13.6044V13.2815H16.6916V14.6964H16.7353C17.1651 13.8825 18.2145 13.024 19.78 13.024C23.0385 13.024 23.6407 15.1687 23.6407 17.9571V23.6364Z" fill="#b0aea5"></path></svg></a></li><li><a href="https://x.com/AnthropicAI" aria-label="Visit our X (formerly Twitter) profile" target="_blank" rel="noopener noreferrer"><svg class="Icon-module-scss-module__lqbdHG__icon" width="24" height="24" viewBox="0 0 32 32"><path d="M28 28L18.6145 14.0124L18.6305 14.0255L27.0929 4H24.265L17.3713 12.16L11.8968 4H4.48021L13.2425 17.0593L13.2414 17.0582L4 28H6.82792L14.4921 18.9215L20.5834 28H28ZM10.7763 6.18182L23.9449 25.8182H21.7039L8.52468 6.18182H10.7763Z" fill="#b0aea5"></path></svg></a></li><li><a href="https://www.youtube.com/@anthropic-ai" aria-label="Visit our YouTube channel" target="_blank" rel="noopener noreferrer"><svg class="Icon-module-scss-module__lqbdHG__icon" width="24" height="24" viewBox="0 0 32 32"><path d="M29.2184 9.4375C28.9596 8.06299 27.7263 7.06201 26.2951 6.74951C24.1533 6.3125 20.1896 6 15.901 6C11.615 6 7.58782 6.3125 5.44354 6.74951C4.01486 7.06201 2.77905 7.99951 2.52021 9.4375C2.25884 11 2 13.1875 2 16C2 18.8125 2.25884 21 2.58365 22.5625C2.84502 23.937 4.0783 24.938 5.50698 25.2505C7.78068 25.6875 11.6784 26 15.967 26C20.2556 26 24.1533 25.6875 26.427 25.2505C27.8557 24.938 29.089 24.0005 29.3504 22.5625C29.6092 21 29.934 18.749 30 16C29.868 13.1875 29.5432 11 29.2184 9.4375ZM12.3941 20.375V11.625L20.319 16L12.3941 20.375Z" fill="#b0aea5"></path></svg></a></li></ul></div></div></footer><!--$--><!--/$--><script nonce="">requestAnimationFrame(function(){$RT=performance.now()});</script><script src="/_next/static/chunks/55ee5a30d5bf1901.js" nonce="" id="_R_" async=""></script><title>Claude Code Best Practices \ Anthropic</title><meta name="description" content="A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. "><meta name="msapplication-TileColor" content="141413"><meta name="msapplication-config" content="/browserconfig.xml"><meta property="og:title" content="Claude Code Best Practices"><meta property="og:description" content="A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. "><meta property="og:image" content="https://cdn.sanity.io/images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png"><meta property="og:image:alt" content="Anthropic logo"><meta property="og:type" content="website"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@AnthropicAI"><meta name="twitter:creator" content="@AnthropicAI"><meta name="twitter:title" content="Claude Code Best Practices"><meta name="twitter:description" content="A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. "><meta name="twitter:image" content="https://cdn.sanity.io/images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png"><meta name="twitter:image:alt" content="Anthropic logo"><link rel="shortcut icon" href="/favicon.ico"><link rel="mask-icon" href="/images/icons/safari-pinned-tab.svg" color="141413"><script nonce="">document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el))</script><script nonce="">$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$~"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0};
$RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$~",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")</script><script nonce="">$RC("B:1","S:1")</script><script nonce="">(self.__next_f=self.__next_f||[]).push([0])</script><script nonce="">self.__next_f.push([1,"1:\"$Sreact.fragment\"\n4:I[339756,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"default\"]\n5:I[837457,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"default\"]\n9:I[168027,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"default\"]\na:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"OutletBoundary\"]\nb:\"$Sreact.suspense\"\nd:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"ViewportBoundary\"]\nf:I[897367,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"MetadataBoundary\"]\n11:I[264900,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\"],\"default\"]\n12:I[649551,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\"],\"default\"]\n13:I[96155,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\"],\"default\"]\n15:I[775710,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\",\"/_next/static/chunks/087d24e120af8951.js\",\"/_next/static/chunks/5a54cbc61310f12f.js\",\"/_next/static/chunks/1815ce47fc23f8f1.js\",\"/_next/static/chunks/2e3229a62c65aaec.js\",\"/_next/static/chunks/2fd2aa01a4bc9178.js\",\"/_next/static/chunks/05917cb05607d7dd.js\",\"/_next/static/chunks/ec60785b1e42b5f0.js\",\"/_next/static/chunks/6c680011ff6c5ba2.js\",\"/_next/static/chunks/dabacb64939959b3.js\",\"/_next/static/chunks/630870b77208f43d.js\",\"/_next/static/chunks/580b5807c3737d13.js\",\"/_next/static/chunks/5c1988096a7b174a.js\",\"/_next/static/chunks/970df6eb64a0adda.js\"],\"default\"]\n16:I[212433,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\",\"/_next/static/chunks/1962982119ba7bb0.js\",\"/_next/static/chunks/5a54cbc61310f12f.js\",\"/_next/static/chunks/ca184bae2cf15209.js\",\"/_next/static/chunks/2fd2aa01a4bc9178.js\",\"/_next/static/chunks/2e3229a62c65aaec.js\",\"/_next/static/chunks/1815ce47fc23f8f1.js\",\"/_next/static/chunks/ec60785b1e42b5f0.js\",\"/_next/static/chunks/5c1988096a7b174a.js\",\"/_next/static/chunks/6c680011ff6c5ba2.js\",\"/_next/static/chunks/2c9eb3077aa18f16.js\",\"/_next/static/chunks/630870b77208f43d.js\",\"/_next/static/chunks/33647e5ba6496195.js\",\"/_next/static/chunks/970df6eb64a0adda.js\"],\"default\"]\n18:I[307003,[\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"/_next/static/chunks/177e1cabb8223520.js\",\"/_next/static/chunks/c1896c986be1a2e2.js\",\"/_next/static/chunks/1962982119ba7bb0.js\",\"/_next/static/chunks/5a54cbc61310f12f.js\",\"/_next/static/chunks/ca184bae2cf15209.js\",\"/_next/static/chunks/2fd2aa01a4bc9178.js\",\"/_next/static/chunks/2e3229a62c65aaec.js\",\"/_next/static/chunks/1815ce47fc23f8f1.js\",\"/_next/static/chunks/ec60785b1e42b5f0.js\",\"/_next/static/chunks/5c1988096a7b174a.js\",\"/_next/static/chunks/6c680011ff6c5ba2.js\",\"/_next/static/chunks/2c9eb3077aa18f16.js\",\"/_next/static/chunks/630870b77208f43d.js\",\"/_next/static/chunks/33647e5ba6496195.js\",\"/_next/static/chunks/970df6eb64a0adda.js\"],\"default\"]\n19:I[27201,[\"/_next/static/chunks/d96012bcfc98706a.js\",\"/_next/static/chunks/d80b3790a119a285.js\"],\"IconMark\"]\n:HL[\"/_next/static/chunks/9ef3f201fb4c8030.css\",\"style\",{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]\n:HL[\"/_next/static/chunks/d01d4651f1fe3a5d.css\",\"style\",{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]\n:HL[\"/_next/static/media/AnthropicSans_Italic_Variable-s.p.dfc8e235.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/AnthropicSans_Roman_Variable-s.p.52cc3a10.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/AnthropicSerif_Italic_Variable-s.p.9"])</script><script nonce="">self.__next_f.push([1,"d7ca5ec.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/AnthropicSerif_Roman_Variable-s.p.55835b1f.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/Copernicus_Book-s.p.f166c0ba.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/Copernicus_Medium-s.p.59728346.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/JetBrainsMono_VF-s.p.8dac7c36.ttf\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/StyreneA_MediumItalic_Web-s.p.e9bc3c6e.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/StyreneA_Medium_Web-s.p.e5135f7e.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/StyreneA_RegularItalic_Web-s.p.7c6a646d.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/StyreneA_Regular_Web-s.p.429c699d.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/StyreneB_Medium_Web-s.p.88fa5a67.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/StyreneB_Regular_Web-s.p.cb3cc1a3.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/TiemposText_Medium-s.p.520d99f8.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/TiemposText_MediumItalic-s.p.10f44518.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/TiemposText_Regular-s.p.7f1d46d6.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/TiemposText_RegularItalic-s.p.1a798fcf.woff2\",\"font\",{\"crossOrigin\":\"\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/chunks/75f1e332600e6b96.css\",\"style\",{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]\n:HL[\"/_next/static/chunks/94371e9eef46cc2b.css\",\"style\",{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]\n:HL[\"/_next/static/chunks/509085f8d765c683.css\",\"style\",{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]\n"])</script><script nonce="">self.__next_f.push([1,"0:{\"P\":null,\"b\":\"Sx_Qy0qgdon6R03M_yf0K\",\"c\":[\"\",\"engineering\",\"claude-code-best-practices\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"(site)\",{\"children\":[\"engineering\",{\"children\":[[\"slug\",\"claude-code-best-practices\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/9ef3f201fb4c8030.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/d01d4651f1fe3a5d.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/1fb574e7be3f9a05.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/177e1cabb8223520.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/c1896c986be1a2e2.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]],\"$L3\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L6\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/75f1e332600e6b96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/94371e9eef46cc2b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/509085f8d765c683.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/087d24e120af8951.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/5a54cbc61310f12f.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/_next/static/chunks/1815ce47fc23f8f1.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/_next/static/chunks/2e3229a62c65aaec.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-4\",{\"src\":\"/_next/static/chunks/2fd2aa01a4bc9178.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-5\",{\"src\":\"/_next/static/chunks/05917cb05607d7dd.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-6\",{\"src\":\"/_next/static/chunks/ec60785b1e42b5f0.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-7\",{\"src\":\"/_next/static/chunks/6c680011ff6c5ba2.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-8\",{\"src\":\"/_next/static/chunks/dabacb64939959b3.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-9\",{\"src\":\"/_next/static/chunks/630870b77208f43d.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-10\",{\"src\":\"/_next/static/chunks/580b5807c3737d13.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-11\",{\"src\":\"/_next/static/chunks/5c1988096a7b174a.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"script\",\"script-12\",{\"src\":\"/_next/static/chunks/970df6eb64a0adda.js\",\"async\":true,\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]],\"$L7\"]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false]},null,false,false],\"$L8\",false]],\"m\":\"$undefined\",\"G\":[\"$9\",[]],\"S\":false}\n"])</script><script nonce="">self.__next_f.push([1,"7:[\"$\",\"$La\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@c\"}]}]\n8:[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$@e\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$b\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@10\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}]\n"])</script><script nonce="">self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"anthropicsans_38ab20ab-module__m_Ag9q__variable anthropicserif_9dcb6d5c-module__l8Ld2a__variable copernicus_f8782a09-module__ahfGZW__variable styrenea_5e06b95-module__JuxQ9a__variable styreneb_4765efd3-module__CFivSW__variable tiempostext_7f420b3d-module__SmwvBG__variable jetbrainsmono_7d7bdbc6-module__j_XgJq__variable\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]\n"])</script><script nonce="">self.__next_f.push([1,"3:[\"$\",\"$L11\",null,{\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\",\"children\":[\"$\",\"$L12\",null,{\"gpcDetected\":false,\"children\":[[\"$\",\"$L13\",null,{}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$L14\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/94371e9eef46cc2b.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/509085f8d765c683.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/75f1e332600e6b96.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"NWVkMTdjMWQtOTcyZC00MTk2LTg3ODctMDhjMTc5NDc5MjMw\"}]]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]\n"])</script><script nonce="">self.__next_f.push([1,"6:[\"$\",\"$L15\",null,{\"article\":{\"_createdAt\":\"2025-02-12T16:10:07Z\",\"_id\":\"052ae47e-ea95-4699-bac4-63b37221544f\",\"_rev\":\"vZKV2neOJ3OHgyn2dMUUhG\",\"_system\":{\"base\":{\"id\":\"052ae47e-ea95-4699-bac4-63b37221544f\",\"rev\":\"vZKV2neOJ3OHgyn2dMUPmu\"}},\"_type\":\"engineeringArticle\",\"_updatedAt\":\"2025-11-18T14:15:46Z\",\"body\":[{\"_key\":\"3aa156420891\",\"_type\":\"block\",\"children\":[{\"_key\":\"31fb7ee373700\",\"_type\":\"span\",\"marks\":[],\"text\":\"We recently \"},{\"_key\":\"31fb7ee373701\",\"_type\":\"span\",\"marks\":[\"4ba079b9cc47\"],\"text\":\"released Claude Code\"},{\"_key\":\"31fb7ee373702\",\"_type\":\"span\",\"marks\":[],\"text\":\", a command line tool for agentic coding. Developed as a research project, Claude Code gives Anthropic engineers and researchers a more native way to integrate Claude into their coding workflows.\"}],\"markDefs\":[{\"_key\":\"4ba079b9cc47\",\"_type\":\"link\",\"href\":\"https://www.anthropic.com/news/claude-3-7-sonnet\"}],\"style\":\"normal\"},{\"_key\":\"f972bb540140\",\"_type\":\"block\",\"children\":[{\"_key\":\"3cc01f19124f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code is intentionally low-level and unopinionated, providing close to raw model access without forcing specific workflows. This design philosophy creates a flexible, customizable, scriptable, and safe power tool. While powerful, this flexibility presents a learning curve for engineers new to agentic coding tools—at least until they develop their own best practices.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e76faea853bb\",\"_type\":\"block\",\"children\":[{\"_key\":\"14407e3d32360\",\"_type\":\"span\",\"marks\":[],\"text\":\"This post outlines general patterns that have proven effective, both for Anthropic's internal teams and for external engineers using Claude Code across various codebases, languages, and environments. Nothing in this list is set in stone nor universally applicable; consider these suggestions as starting points. We encourage you to experiment and find what works best for you!\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"189918441030\",\"_type\":\"block\",\"children\":[{\"_key\":\"047be1e975110\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"Looking for more detailed information? Our comprehensive documentation at \"},{\"_key\":\"047be1e975111\",\"_type\":\"span\",\"marks\":[\"8939befab95f\",\"em\"],\"text\":\"claude.ai/code\"},{\"_key\":\"047be1e975112\",\"_type\":\"span\",\"marks\":[],\"text\":\" \"},{\"_key\":\"047be1e975113\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"covers all the features mentioned in this post and provides additional examples, implementation details, and advanced techniques.\"}],\"markDefs\":[{\"_key\":\"8939befab95f\",\"_type\":\"link\",\"href\":\"https://claude.ai/code\"}],\"style\":\"normal\"},{\"_key\":\"457fd240599e\",\"_type\":\"block\",\"children\":[{\"_key\":\"4104ea1f6bea\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"6ebe21ee2114\",\"_type\":\"block\",\"children\":[{\"_key\":\"f16d2064d4da0\",\"_type\":\"span\",\"marks\":[],\"text\":\"1. Customize your setup\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"8df671184758\",\"_type\":\"block\",\"children\":[{\"_key\":\"f6c98c3b215e0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code is an agentic coding assistant that automatically pulls context into prompts. This context gathering consumes time and tokens, but you can optimize it through environment tuning.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f9c9641b7d1c\",\"_type\":\"block\",\"children\":[{\"_key\":\"e3cfcd5c5609\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Create \"},{\"_key\":\"aa93045dbbfb\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"6b1f327d3839\",\"_type\":\"span\",\"marks\":[],\"text\":\" files\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"c355c70fcb42\",\"_type\":\"block\",\"children\":[{\"_key\":\"5ec6ba275b680\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"15275f518cc7\",\"_type\":\"span\",\"marks\":[],\"text\":\" is a special file that Claude automatically pulls into context when starting a conversation. This makes it an ideal place for documenting:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"31568a0bddbf\",\"_type\":\"block\",\"children\":[{\"_key\":\"f5974fb6e4180\",\"_type\":\"span\",\"marks\":[],\"text\":\"Common bash commands\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"54378e4af260\",\"_type\":\"block\",\"children\":[{\"_key\":\"6c41847abca40\",\"_type\":\"span\",\"marks\":[],\"text\":\"Core files and utility functions\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"b9ac02f602d0\",\"_type\":\"block\",\"children\":[{\"_key\":\"10a22d004ed10\",\"_type\":\"span\",\"marks\":[],\"text\":\"Code style guidelines\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"02b2d317ced7\",\"_type\":\"block\",\"children\":[{\"_key\":\"693f0649fad10\",\"_type\":\"span\",\"marks\":[],\"text\":\"Testing instructions\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"975be85093d7\",\"_type\":\"block\",\"children\":[{\"_key\":\"3ac92b7996e80\",\"_type\":\"span\",\"marks\":[],\"text\":\"Repository etiquette (e.g., branch naming, merge vs. rebase, etc.)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1b15066d0d2e\",\"_type\":\"block\",\"children\":[{\"_key\":\"5fc3250c4a2d0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Developer environment setup (e.g., pyenv use, which compilers work)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d3e1c04554a9\",\"_type\":\"block\",\"children\":[{\"_key\":\"f6614e2118550\",\"_type\":\"span\",\"marks\":[],\"text\":\"Any unexpected behaviors or warnings particular to the project\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"870ef1565ac9\",\"_type\":\"block\",\"children\":[{\"_key\":\"2ffdd67159d50\",\"_type\":\"span\",\"marks\":[],\"text\":\"Other information you want Claude to remember\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"406aff13d69f\",\"_type\":\"block\",\"children\":[{\"_key\":\"336eed0be7ab0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Theres no required format for \"},{\"_key\":\"4a93743ce778\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"bdabea1854e9\",\"_type\":\"span\",\"marks\":[],\"text\":\" files. We recommend keeping them concise and human-readable. For example:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1fb2c7be4d13\",\"_type\":\"codeBlock\",\"code\":\"# Bash commands\\n- npm run build: Build the project\\n- npm run typecheck: Run the typechecker\\n\\n# Code style\\n- Use ES modules (import/export) syntax, not CommonJS (require)\\n- Destructure imports when possible (eg. import { foo } from 'bar')\\n\\n# Workflow\\n- Be sure to typecheck when youre done making a series of code changes\\n- Prefer running single tests, and not the whole test suite, for performance\",\"markDefs\":null},{\"_key\":\"0ca178041e1f\",\"_type\":\"block\",\"children\":[{\"_key\":\"cad3bfe2f55f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"You can place \"},{\"_key\":\"75b742f40b27\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"dd486dbad6ba\",\"_type\":\"span\",\"marks\":[],\"text\":\" files in several locations:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4b45357fb0e5\",\"_type\":\"block\",\"children\":[{\"_key\":\"59d686fcd3660\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"The root of your repo\"},{\"_key\":\"4f3b431d6c67\",\"_type\":\"span\",\"marks\":[],\"text\":\", or wherever you run \"},{\"_key\":\"5c95a53b84b1\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude\"},{\"_key\":\"184605153710\",\"_type\":\"span\",\"marks\":[],\"text\":\" from (the most common usage). Name it \"},{\"_key\":\"f2f30a908fed\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"b645d44754ee\",\"_type\":\"span\",\"marks\":[],\"text\":\" and check it into git so that you can share it across sessions and with your team (recommended), or name it \"},{\"_key\":\"c4d9cd5491ef\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.local.md\"},{\"_key\":\"cd8be8324c15\",\"_type\":\"span\",\"marks\":[],\"text\":\" and \"},{\"_key\":\"9404d3e5a0ac\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".gitignore\"},{\"_key\":\"c1aad55fed2d\",\"_type\":\"span\",\"marks\":[],\"text\":\" it\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"80f8f71d271c\",\"_type\":\"block\",\"children\":[{\"_key\":\"0d023b86b2950\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Any parent of the directory\"},{\"_key\":\"f339b7b61e46\",\"_type\":\"span\",\"marks\":[],\"text\":\" where you run \"},{\"_key\":\"4b10c5b920aa\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude\"},{\"_key\":\"01a03c7c1b3c\",\"_type\":\"span\",\"marks\":[],\"text\":\". This is most useful for monorepos, where you might run \"},{\"_key\":\"94a34f4e2df0\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude\"},{\"_key\":\"b4d80cc515da\",\"_type\":\"span\",\"marks\":[],\"text\":\" from \"},{\"_key\":\"79fabc0d2b3b\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"root/foo\"},{\"_key\":\"24527ce6a6fd\",\"_type\":\"span\",\"marks\":[],\"text\":\", and have \"},{\"_key\":\"f0d87e295af6\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"eabb55c5dc09\",\"_type\":\"span\",\"marks\":[],\"text\":\" files in both \"},{\"_key\":\"581c7cf946fb\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"root/CLAUDE.md\"},{\"_key\":\"91ed753c92c6\",\"_type\":\"span\",\"marks\":[],\"text\":\" and \"},{\"_key\":\"b1a5932722e9\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"root/foo/CLAUDE.md\"},{\"_key\":\"858047cff55a\",\"_type\":\"span\",\"marks\":[],\"text\":\". Both of these will be pulled into context automatically\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1fbe673047c0\",\"_type\":\"block\",\"children\":[{\"_key\":\"610c269073720\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Any child of the directory\"},{\"_key\":\"9249643cdb40\",\"_type\":\"span\",\"marks\":[],\"text\":\" where you run \"},{\"_key\":\"35675e86ab18\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude\"},{\"_key\":\"3ec6970827ef\",\"_type\":\"span\",\"marks\":[],\"text\":\". This is the inverse of the above, and in this case, Claude will pull in \"},{\"_key\":\"5eea9e624b53\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"8429cdd7985a\",\"_type\":\"span\",\"marks\":[],\"text\":\" files on demand when you work with files in child directories\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"14fe1bf1b984\",\"_type\":\"block\",\"children\":[{\"_key\":\"a51cde635f470\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Your home folder\"},{\"_key\":\"2ba990f1cc0e\",\"_type\":\"span\",\"marks\":[],\"text\":\" (\"},{\"_key\":\"6a0547e5d043\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"~/.claude/CLAUDE.md\"},{\"_key\":\"e36a0370ec58\",\"_type\":\"span\",\"marks\":[],\"text\":\"), which applies it to all your \"},{\"_key\":\"b141f672f35c\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"claude\"},{\"_key\":\"d3746ae21a0d\",\"_type\":\"span\",\"marks\":[],\"text\":\" sessions\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c52c09720d5e\",\"_type\":\"block\",\"children\":[{\"_key\":\"e2959efbc5ac0\",\"_type\":\"span\",\"marks\":[],\"text\":\"When you run the \"},{\"_key\":\"7628aeb2d7f6\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/init\"},{\"_key\":\"47e0c970a7dc\",\"_type\":\"span\",\"marks\":[],\"text\":\" command, Claude will automatically generate a \"},{\"_key\":\"78a9048672f3\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"04026381d262\",\"_type\":\"span\",\"marks\":[],\"text\":\" for you.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d9ef154f92a5\",\"_type\":\"block\",\"children\":[{\"_key\":\"4164b73f72c1\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Tune your \"},{\"_key\":\"d7381991f7e5\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"934acf14cfe6\",\"_type\":\"span\",\"marks\":[],\"text\":\" files\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"b4aca4ae9008\",\"_type\":\"block\",\"children\":[{\"_key\":\"de5b9c3ec7580\",\"_type\":\"span\",\"marks\":[],\"text\":\"Your \"},{\"_key\":\"2872baa70832\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"39fbf5a02e38\",\"_type\":\"span\",\"marks\":[],\"text\":\" files become part of Claudes prompts, so they should be refined like any frequently used prompt. A common mistake is adding extensive content without iterating on its effectiveness. Take time to experiment and determine what produces the best instruction following from the model.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"02712607fda7\",\"_type\":\"block\",\"children\":[{\"_key\":\"cc59d81be0b90\",\"_type\":\"span\",\"marks\":[],\"text\":\"You can add content to your \"},{\"_key\":\"5da49aef4780\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"a87aa3fc4589\",\"_type\":\"span\",\"marks\":[],\"text\":\" manually or press the \"},{\"_key\":\"9a9bf0ccfadb\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"#\"},{\"_key\":\"916245d39f7a\",\"_type\":\"span\",\"marks\":[],\"text\":\" key to give Claude an instruction that it will automatically incorporate into the relevant \"},{\"_key\":\"e3fe156df0e9\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"85e509785ac9\",\"_type\":\"span\",\"marks\":[],\"text\":\". Many engineers use \"},{\"_key\":\"982f2fc14178\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"#\"},{\"_key\":\"391e8eb44c1f\",\"_type\":\"span\",\"marks\":[],\"text\":\" frequently to document commands, files, and style guidelines while coding, then include \"},{\"_key\":\"545177adc93d\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"279f7bea921a\",\"_type\":\"span\",\"marks\":[],\"text\":\" changes in commits so team members benefit as well.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"fe833c7522f5\",\"_type\":\"block\",\"children\":[{\"_key\":\"0bb31a50f0510\",\"_type\":\"span\",\"marks\":[],\"text\":\"At Anthropic, we occasionally run \"},{\"_key\":\"2d4ae5521e31\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"},{\"_key\":\"806772bf1856\",\"_type\":\"span\",\"marks\":[],\"text\":\" files through the \"},{\"_key\":\"0bb31a50f0511\",\"_type\":\"span\",\"marks\":[\"446858049c39\"],\"text\":\"prompt improver\"},{\"_key\":\"0bb31a50f0512\",\"_type\":\"span\",\"marks\":[],\"text\":\" and often tune instructions (e.g. adding emphasis with \\\"IMPORTANT\\\" or \\\"YOU MUST\\\") to improve adherence.\"}],\"markDefs\":[{\"_key\":\"446858049c39\",\"_type\":\"link\",\"href\":\"https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/prompt-improver\"}],\"style\":\"normal\"},{\"_key\":\"d401e6675ec7\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-6961243cc6409e41ba93895faded4f4bc1772366-1600x1231-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Claude Code tool allowlist\",\"height\":1231,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/6961243cc6409e41ba93895faded4f4bc1772366-1600x1231.png\",\"width\":1600},{\"_key\":\"7d4094533c82\",\"_type\":\"block\",\"children\":[{\"_key\":\"dd38c7d6c410\",\"_type\":\"span\",\"marks\":[],\"text\":\"c. Curate Claude's list of allowed tools\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"f34f242d7609\",\"_type\":\"block\",\"children\":[{\"_key\":\"1349afe368d6\",\"_type\":\"span\",\"marks\":[],\"text\":\"By default, Claude Code requests permission for any action that might modify your system: file writes, many bash commands, MCP tools, etc. We designed Claude Code with this deliberately conservative approach to prioritize safety. You can customize the allowlist to permit additional tools that you know are safe, or to allow potentially unsafe tools that are easy to undo (e.g., file editing, \"},{\"_key\":\"0e37aed98433\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"git commit\"},{\"_key\":\"b20b088a0941\",\"_type\":\"span\",\"marks\":[],\"text\":\").\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9d6aee10726b\",\"_type\":\"block\",\"children\":[{\"_key\":\"324d9a55cba0\",\"_type\":\"span\",\"marks\":[],\"text\":\"There are four ways to manage allowed tools:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"03fca1f5f965\",\"_type\":\"block\",\"children\":[{\"_key\":\"109b10d9c2f9\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Select \\\"Always allow\\\"\"},{\"_key\":\"6457b4b22d8f\",\"_type\":\"span\",\"marks\":[],\"text\":\" when prompted during a session.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"738c0a81b118\",\"_type\":\"block\",\"children\":[{\"_key\":\"ed4c40d90fb4\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Use the\"},{\"_key\":\"3923312c918f\",\"_type\":\"span\",\"marks\":[\"strong\",\"em\"],\"text\":\" \"},{\"_key\":\"844827013205\",\"_type\":\"span\",\"marks\":[\"strong\",\"code\"],\"text\":\"/permissions\"},{\"_key\":\"7f02902b147a\",\"_type\":\"span\",\"marks\":[\"strong\",\"em\"],\"text\":\" \"},{\"_key\":\"2f07c8b2898d\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"command\"},{\"_key\":\"ef5af96fef75\",\"_type\":\"span\",\"marks\":[],\"text\":\" after starting Claude Code to add or remove tools from the allowlist. For example, you can add \"},{\"_key\":\"9f37424876cc\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"Edit\"},{\"_key\":\"a676acb2ba35\",\"_type\":\"span\",\"marks\":[],\"text\":\" to always allow file edits, \"},{\"_key\":\"892daf202866\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"Bash(git commit:*)\"},{\"_key\":\"5bbdb8061367\",\"_type\":\"span\",\"marks\":[],\"text\":\" to allow git commits, or \"},{\"_key\":\"0189dbbba809\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"mcp__puppeteer__puppeteer_navigate\"},{\"_key\":\"942ff0d315ca\",\"_type\":\"span\",\"marks\":[],\"text\":\" to allow navigating with the Puppeteer MCP server.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"fcaafbb959d8\",\"_type\":\"block\",\"children\":[{\"_key\":\"cde6c5b1a153\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Manually edit\"},{\"_key\":\"6487c9e51700\",\"_type\":\"span\",\"marks\":[],\"text\":\" your \"},{\"_key\":\"ac99516c529a\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".claude/settings.json\"},{\"_key\":\"e0b295d29fa0\",\"_type\":\"span\",\"marks\":[],\"text\":\" or \"},{\"_key\":\"406025774852\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"~/.claude.json\"},{\"_key\":\"9a4cfd731fe0\",\"_type\":\"span\",\"marks\":[],\"text\":\" (we recommend checking the former into source control to share with your team)\"},{\"_key\":\"f7fd93cf092d\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\".\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0b7d92e9c718\",\"_type\":\"block\",\"children\":[{\"_key\":\"dca79f0e3f67\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Use the\"},{\"_key\":\"5136af2dd31e\",\"_type\":\"span\",\"marks\":[\"strong\",\"code\"],\"text\":\" --allowedTools\"},{\"_key\":\"06587a01e20d\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\" CLI flag\"},{\"_key\":\"7656e43d0c39\",\"_type\":\"span\",\"marks\":[],\"text\":\" for session-specific permissions.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"8a8bda7fc04e\",\"_type\":\"block\",\"children\":[{\"_key\":\"3f635f308af60\",\"_type\":\"span\",\"marks\":[],\"text\":\"d. If using GitHub, install the gh CLI\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"aa75a6072cfd\",\"_type\":\"block\",\"children\":[{\"_key\":\"13f00b4173bf0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude knows how to use the \"},{\"_key\":\"05a8abafa96a\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"gh\"},{\"_key\":\"157ea547eb75\",\"_type\":\"span\",\"marks\":[],\"text\":\" CLI to interact with GitHub for creating issues, opening pull requests, reading comments, and more. Without \"},{\"_key\":\"d4468eac9c11\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"gh\"},{\"_key\":\"4dd4a3394e39\",\"_type\":\"span\",\"marks\":[],\"text\":\" installed, Claude can still use the GitHub API or MCP server (if you have it installed).\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f5cbb384cac7\",\"_type\":\"block\",\"children\":[{\"_key\":\"1eb2248d0c64\",\"_type\":\"span\",\"marks\":[],\"text\":\"2. Give Claude more tools\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"4545677ac29d\",\"_type\":\"block\",\"children\":[{\"_key\":\"0e555a19eb190\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude has access to your shell environment, where you can build up sets of convenience scripts and functions for it just like you would for yourself. It can also leverage more complex tools through MCP and REST APIs.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9bd981ac713a\",\"_type\":\"block\",\"children\":[{\"_key\":\"5bcbe8892aa50\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Use Claude with bash tools\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"4ba585505538\",\"_type\":\"block\",\"children\":[{\"_key\":\"700edaebcfb50\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code inherits your bash environment, giving it access to all your tools. While Claude knows common utilities like unix tools and \"},{\"_key\":\"16caaed1e306\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"gh\"},{\"_key\":\"5afacc35ac69\",\"_type\":\"span\",\"marks\":[],\"text\":\", it won't know about your custom bash tools without instructions:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3ea656627c6c\",\"_type\":\"block\",\"children\":[{\"_key\":\"ef0af2c12b7e0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Tell Claude the tool name with usage examples\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"7200013f0ef4\",\"_type\":\"block\",\"children\":[{\"_key\":\"c9827d7d67e30\",\"_type\":\"span\",\"marks\":[],\"text\":\"Tell Claude to run\"},{\"_key\":\"b3805495c23a\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\" \"},{\"_key\":\"7a1f1e8245e7\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"--help\"},{\"_key\":\"7eaeddf4a53f\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\" \"},{\"_key\":\"f26ae3ef5ee3\",\"_type\":\"span\",\"marks\":[],\"text\":\"to see tool documentation\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"5c6e61a554ef\",\"_type\":\"block\",\"children\":[{\"_key\":\"de7461ae4aa60\",\"_type\":\"span\",\"marks\":[],\"text\":\"Document frequently used tools in \"},{\"_key\":\"a3932914fbb6\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CLAUDE.md\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c3ac7e5d8608\",\"_type\":\"block\",\"children\":[{\"_key\":\"8ff3e3a5617f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Use Claude with MCP\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"940c42bca7f4\",\"_type\":\"block\",\"children\":[{\"_key\":\"4a7cebaff7720\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code functions as both an MCP server and client. As a client, it can connect to any number of MCP servers to access their tools in three ways:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"76b25b2aa99b\",\"_type\":\"block\",\"children\":[{\"_key\":\"94ccd7741a580\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"In project config\"},{\"_key\":\"c22ea3077dac\",\"_type\":\"span\",\"marks\":[],\"text\":\" (available when running Claude Code in that directory)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"fe27c7f25c87\",\"_type\":\"block\",\"children\":[{\"_key\":\"2281fead55090\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"In global config \"},{\"_key\":\"b65d072b10e6\",\"_type\":\"span\",\"marks\":[],\"text\":\"(available in all projects)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e55ac9362001\",\"_type\":\"block\",\"children\":[{\"_key\":\"5687f84c1923\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"In a checked-in \"},{\"_key\":\"4361a6efdd87\",\"_type\":\"span\",\"marks\":[\"strong\",\"code\"],\"text\":\".mcp.json\"},{\"_key\":\"f1683a083533\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\" file\"},{\"_key\":\"fd9d9c79dd1e\",\"_type\":\"span\",\"marks\":[],\"text\":\" (available to anyone working in your codebase). For example, you can add Puppeteer and Sentry servers to your \"},{\"_key\":\"b524e3403507\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".mcp.json\"},{\"_key\":\"5fff317c6b66\",\"_type\":\"span\",\"marks\":[],\"text\":\", so that every engineer working on your repo can use these out of the box.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"62c940af9104\",\"_type\":\"block\",\"children\":[{\"_key\":\"cd3f7df2206c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"When working with MCP, it can also be helpful to launch Claude with the \"},{\"_key\":\"5301c75e0290\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"--mcp-debug\"},{\"_key\":\"0815f55fad52\",\"_type\":\"span\",\"marks\":[],\"text\":\" flag to help identify configuration issues.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"27459a7dee4b\",\"_type\":\"block\",\"children\":[{\"_key\":\"db88e780c2e20\",\"_type\":\"span\",\"marks\":[],\"text\":\"c. Use custom slash commands\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"d34ac53bc8ea\",\"_type\":\"block\",\"children\":[{\"_key\":\"17136ebab3d40\",\"_type\":\"span\",\"marks\":[],\"text\":\"For repeated workflows—debugging loops, log analysis, etc.—store prompt templates in Markdown files within the \"},{\"_key\":\"62dcd1e1d836\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".claude/commands\"},{\"_key\":\"b102df7868f4\",\"_type\":\"span\",\"marks\":[],\"text\":\" folder. These become available through the slash commands menu when you type \"},{\"_key\":\"297627ed0222\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/\"},{\"_key\":\"6c9bc2129d07\",\"_type\":\"span\",\"marks\":[],\"text\":\". You can check these commands into git to make them available for the rest of your team.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3f6bcefec186\",\"_type\":\"block\",\"children\":[{\"_key\":\"c2e9196b63b50\",\"_type\":\"span\",\"marks\":[],\"text\":\"Custom slash commands can include the special keyword \"},{\"_key\":\"764667b395d6\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"$$ARGUMENTS\"},{\"_key\":\"8ca379ec3e58\",\"_type\":\"span\",\"marks\":[],\"text\":\" to pass parameters from command invocation.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"ef567ab0ffac\",\"_type\":\"block\",\"children\":[{\"_key\":\"3ad2628bbd890\",\"_type\":\"span\",\"marks\":[],\"text\":\"For example, heres a slash command that you could use to automatically pull and fix a Github issue:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"fe1b44d6918a\",\"_type\":\"codeBlock\",\"code\":\"Please analyze and fix the GitHub issue: $ARGUMENTS.\\n\\nFollow these steps:\\n\\n1. Use `gh issue view` to get the issue details\\n2. Understand the problem described in the issue\\n3. Search the codebase for relevant files\\n4. Implement the necessary changes to fix the issue\\n5. Write and run tests to verify the fix\\n6. Ensure code passes linting and type checking\\n7. Create a descriptive commit message\\n8. Push and create a PR\\n\\nRemember to use the GitHub CLI (`gh`) for all GitHub-related tasks.\",\"markDefs\":null},{\"_key\":\"9e91f96885e8\",\"_type\":\"block\",\"children\":[{\"_key\":\"2b9db7fb91340\",\"_type\":\"span\",\"marks\":[],\"text\":\"Putting the above content into \"},{\"_key\":\"1de3420c23ce\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".claude/commands/fix-github-issue.md\"},{\"_key\":\"839be9c6f72c\",\"_type\":\"span\",\"marks\":[],\"text\":\" makes it available as the \"},{\"_key\":\"8d9b011a5597\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/project:fix-github-issue\"},{\"_key\":\"228999137f32\",\"_type\":\"span\",\"marks\":[],\"text\":\" command in Claude Code. You could then for example use \"},{\"_key\":\"1f253dcd1b17\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/project:fix-github-issue 1234\"},{\"_key\":\"92daeb1c07e8\",\"_type\":\"span\",\"marks\":[],\"text\":\" to have Claude fix issue #1234. Similarly, you can add your own personal commands to the\"},{\"_key\":\"d8f156b78ab2\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\" \"},{\"_key\":\"0030d4a081ff\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"~/.claude/commands\"},{\"_key\":\"0ca06e3965da\",\"_type\":\"span\",\"marks\":[],\"text\":\" folder for commands you want available in all of your sessions.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1f0b98b5c580\",\"_type\":\"block\",\"children\":[{\"_key\":\"7d7dd6b5d6d60\",\"_type\":\"span\",\"marks\":[],\"text\":\"3. Try common workflows\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"66baf4c84e09\",\"_type\":\"block\",\"children\":[{\"_key\":\"71fb0ed04e490\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code doesnt impose a specific workflow, giving you the flexibility to use it how you want. Within the space this flexibility affords, several successful patterns for effectively using Claude Code have emerged across our community of users:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"678439fae263\",\"_type\":\"block\",\"children\":[{\"_key\":\"9bba4ac854830\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Explore, plan, code, commit\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"0f58ff3df6c3\",\"_type\":\"block\",\"children\":[{\"_key\":\"641a11b7bd600\",\"_type\":\"span\",\"marks\":[],\"text\":\"This versatile workflow suits many problems:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"12c9855e50b8\",\"_type\":\"block\",\"children\":[{\"_key\":\"3b1cb4b5b220\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to read relevant files, images, or URLs\"},{\"_key\":\"8e65e3680dec\",\"_type\":\"span\",\"marks\":[],\"text\":\", providing either general pointers (\\\"read the file that handles logging\\\") or specific filenames (\\\"read logging.py\\\"), but explicitly tell it not to write any code just yet.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0ff7298370ba\",\"_type\":\"block\",\"children\":[{\"_key\":\"2d7777d313a4\",\"_type\":\"span\",\"marks\":[],\"text\":\"This is the part of the workflow where you should consider strong use of subagents, especially for complex problems. Telling Claude to use subagents to verify details or investigate particular questions it might have, especially early on in a conversation or task, tends to preserve context availability without much downside in terms of lost efficiency.\"}],\"level\":2,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"817242c9292c\",\"_type\":\"block\",\"children\":[{\"_key\":\"eb23d22b6dfb0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to make a plan for how to approach a specific problem\"},{\"_key\":\"a6d2245498d5\",\"_type\":\"span\",\"marks\":[],\"text\":\". We recommend using the word \\\"think\\\" to trigger extended thinking mode, which gives Claude additional computation time to evaluate alternatives more thoroughly. These specific phrases are mapped directly to increasing levels of thinking budget in the system: \\\"think\\\" \u003c \\\"think hard\\\" \u003c \\\"think harder\\\" \u003c \\\"ultrathink.\\\" Each level allocates progressively more thinking budget for Claude to use.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c524a22dcc15\",\"_type\":\"block\",\"children\":[{\"_key\":\"15fc2d001699\",\"_type\":\"span\",\"marks\":[],\"text\":\"If the results of this step seem reasonable, you can have Claude create a document or a GitHub issue with its plan so that you can reset to this spot if the implementation (step 3) isnt what you want.\"}],\"level\":2,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"34ae58c41468\",\"_type\":\"block\",\"children\":[{\"_key\":\"cab710af9cb00\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to implement its solution in code\"},{\"_key\":\"f3f0264141dd\",\"_type\":\"span\",\"marks\":[],\"text\":\". This is also a good place to ask it to explicitly verify the reasonableness of its solution as it implements pieces of the solution.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"38caf794e1c9\",\"_type\":\"block\",\"children\":[{\"_key\":\"64d92080fca60\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to commit the result and create a pull request\"},{\"_key\":\"d91bc42253a2\",\"_type\":\"span\",\"marks\":[],\"text\":\". If relevant, this is also a good time to have Claude update any READMEs or changelogs with an explanation of what it just did.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c5708ff04424\",\"_type\":\"block\",\"children\":[{\"_key\":\"aac0c51189520\",\"_type\":\"span\",\"marks\":[],\"text\":\"Steps #1-#2 are crucial—without them, Claude tends to jump straight to coding a solution. While sometimes that's what you want, asking Claude to research and plan first significantly improves performance for problems requiring deeper thinking upfront.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e4d5e45e726e\",\"_type\":\"block\",\"children\":[{\"_key\":\"6243a0c1e59a0\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Write tests, commit; code, iterate, commit\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"53cebc19567e\",\"_type\":\"block\",\"children\":[{\"_key\":\"f123a148a2c70\",\"_type\":\"span\",\"marks\":[],\"text\":\"This is an Anthropic-favorite workflow for changes that are easily verifiable with unit, integration, or end-to-end tests. Test-driven development (TDD) becomes even more powerful with agentic coding:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c15d66318cc6\",\"_type\":\"block\",\"children\":[{\"_key\":\"26458b3e7ee2\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to write tests based on expected input/output pairs\"},{\"_key\":\"61c4b8af2ae4\",\"_type\":\"span\",\"marks\":[],\"text\":\". Be explicit about the fact that youre doing test-driven development so that it avoids creating mock implementations, even for functionality that doesnt exist yet in the codebase.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"26e0d771d8cf\",\"_type\":\"block\",\"children\":[{\"_key\":\"828f73db1b28\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Tell Claude to run the tests and confirm they fail\"},{\"_key\":\"6bdf1f20ad1d\",\"_type\":\"span\",\"marks\":[],\"text\":\". Explicitly telling it not to write any implementation code at this stage is often helpful.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d7c12e22f2a5\",\"_type\":\"block\",\"children\":[{\"_key\":\"26e4e01c49b9\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to commit the tests \"},{\"_key\":\"97a1d9a77689\",\"_type\":\"span\",\"marks\":[],\"text\":\"when youre satisfied with them.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d796872495d3\",\"_type\":\"block\",\"children\":[{\"_key\":\"5b3ce8aabf82\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to write code that passes the tests\"},{\"_key\":\"0ef5e63e78d0\",\"_type\":\"span\",\"marks\":[],\"text\":\", instructing it not to modify the tests. Tell Claude to keep going until all tests pass. It will usually take a few iterations for Claude to write code, run the tests, adjust the code, and run the tests again.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1d2a4def2d32\",\"_type\":\"block\",\"children\":[{\"_key\":\"2326a8d2b11b\",\"_type\":\"span\",\"marks\":[],\"text\":\"At this stage, it can help to ask it to verify with independent subagents that the implementation isnt overfitting to the tests\"}],\"level\":2,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"eebe69a54b13\",\"_type\":\"block\",\"children\":[{\"_key\":\"575b2c376e690\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to commit the code\"},{\"_key\":\"575b2c376e691\",\"_type\":\"span\",\"marks\":[],\"text\":\" once youre satisfied with the changes.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"6ede90233176\",\"_type\":\"block\",\"children\":[{\"_key\":\"999752bd42510\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude performs best when it has a clear target to iterate against—a visual mock, a test case, or another kind of output. By providing expected outputs like tests, Claude can make changes, evaluate results, and incrementally improve until it succeeds.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0bdbbde85e53\",\"_type\":\"block\",\"children\":[{\"_key\":\"a464d5410a1b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"c. Write code, screenshot result, iterate\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"efd026ecfda3\",\"_type\":\"block\",\"children\":[{\"_key\":\"c69b119d7ab70\",\"_type\":\"span\",\"marks\":[],\"text\":\"Similar to the testing workflow, you can provide Claude with visual targets:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e59f5e1758aa\",\"_type\":\"block\",\"children\":[{\"_key\":\"6cad2c7bbe310\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Give Claude a way to take browser screenshots\"},{\"_key\":\"a026da16bbb3\",\"_type\":\"span\",\"marks\":[],\"text\":\" (e.g., with the \"},{\"_key\":\"6cad2c7bbe311\",\"_type\":\"span\",\"marks\":[\"aea8ca220001\"],\"text\":\"Puppeteer MCP server\"},{\"_key\":\"6cad2c7bbe312\",\"_type\":\"span\",\"marks\":[],\"text\":\", an \"},{\"_key\":\"6cad2c7bbe313\",\"_type\":\"span\",\"marks\":[\"7715603ff7c1\"],\"text\":\"iOS simulator MCP server\"},{\"_key\":\"6cad2c7bbe314\",\"_type\":\"span\",\"marks\":[],\"text\":\", or manually copy / paste screenshots into Claude).\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[{\"_key\":\"aea8ca220001\",\"_type\":\"link\",\"href\":\"https://github.com/modelcontextprotocol/servers/tree/c19925b8f0f2815ad72b08d2368f0007c86eb8e6/src/puppeteer\"},{\"_key\":\"7715603ff7c1\",\"_type\":\"link\",\"href\":\"https://github.com/joshuayoes/ios-simulator-mcp\"}],\"style\":\"normal\"},{\"_key\":\"92fa5fb09392\",\"_type\":\"block\",\"children\":[{\"_key\":\"a09dac90f2340\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Give Claude a visual mock\"},{\"_key\":\"53cfca540a90\",\"_type\":\"span\",\"marks\":[],\"text\":\" by copying / pasting or drag-dropping an image, or giving Claude the image file path.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"66f229facb50\",\"_type\":\"block\",\"children\":[{\"_key\":\"3a6b321f6e5d0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to implement the design\"},{\"_key\":\"7aa984a0ae26\",\"_type\":\"span\",\"marks\":[],\"text\":\" in code, take screenshots of the result, and iterate until its result matches the mock.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9100699ac0ac\",\"_type\":\"block\",\"children\":[{\"_key\":\"5efdee46d5300\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to commit\"},{\"_key\":\"2d2c626c0f1a\",\"_type\":\"span\",\"marks\":[],\"text\":\" when you're satisfied.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e459167eccc9\",\"_type\":\"block\",\"children\":[{\"_key\":\"b87614403abb0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Like humans, Claude's outputs tend to improve significantly with iteration. While the first version might be good, after 2-3 iterations it will typically look much better. Give Claude the tools to see its outputs for best results.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e12b24c73d27\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-6ea59a36fe82c2b300bceaf3b880a4b4852c552d-1600x1143-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Safe yolo mode\",\"height\":1143,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/6ea59a36fe82c2b300bceaf3b880a4b4852c552d-1600x1143.png\",\"width\":1600},{\"_key\":\"477685af88db\",\"_type\":\"block\",\"children\":[{\"_key\":\"b42baed4511d0\",\"_type\":\"span\",\"marks\":[],\"text\":\"d. Safe YOLO mode\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"504a9238b2a5\",\"_type\":\"block\",\"children\":[{\"_key\":\"c70da7acaf16\",\"_type\":\"span\",\"marks\":[],\"text\":\"Instead of supervising Claude, you can use \"},{\"_key\":\"0fee53fcc0b7\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude --dangerously-skip-permissions\"},{\"_key\":\"3ae2b6d2ac44\",\"_type\":\"span\",\"marks\":[],\"text\":\" to bypass all permission checks and let Claude work uninterrupted until completion. This works well for workflows like fixing lint errors or generating boilerplate code.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0af8fc5b2ac7\",\"_type\":\"block\",\"children\":[{\"_key\":\"3ce0d98bc94b\",\"_type\":\"span\",\"marks\":[],\"text\":\"Letting Claude run arbitrary commands is risky and can result in data loss, system corruption, or even data exfiltration (e.g., via prompt injection attacks). To minimize these risks, use \"},{\"_key\":\"f9073195d24c\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"--dangerously-skip-permissions\"},{\"_key\":\"42dbb928679e\",\"_type\":\"span\",\"marks\":[],\"text\":\" in a container without internet access. You can follow this \"},{\"_key\":\"e3cf503142cf\",\"_type\":\"span\",\"marks\":[\"603d05752417\"],\"text\":\"reference implementation\"},{\"_key\":\"ad8345fbea97\",\"_type\":\"span\",\"marks\":[],\"text\":\" using Docker Dev Containers.\"}],\"markDefs\":[{\"_key\":\"603d05752417\",\"_type\":\"link\",\"href\":\"https://github.com/anthropics/claude-code/tree/main/.devcontainer\"}],\"style\":\"normal\"},{\"_key\":\"f5f2e0994e21\",\"_type\":\"block\",\"children\":[{\"_key\":\"3c1483b99d360\",\"_type\":\"span\",\"marks\":[],\"text\":\"e. Codebase Q\u0026A\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"c5a9425f092d\",\"_type\":\"block\",\"children\":[{\"_key\":\"8adba2eaa9220\",\"_type\":\"span\",\"marks\":[],\"text\":\"When onboarding to a new codebase, use Claude Code for learning and exploration. You can ask Claude the same sorts of questions you would ask another engineer on the project when pair programming. Claude can agentically search the codebase to answer general questions like:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d904e6c367c6\",\"_type\":\"block\",\"children\":[{\"_key\":\"d08efec64277\",\"_type\":\"span\",\"marks\":[],\"text\":\"How does logging work?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"65ec77c9d03b\",\"_type\":\"block\",\"children\":[{\"_key\":\"a202a9a8fdc6\",\"_type\":\"span\",\"marks\":[],\"text\":\"How do I make a new API endpoint?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"b6f386b56925\",\"_type\":\"block\",\"children\":[{\"_key\":\"f5e4895e33ea\",\"_type\":\"span\",\"marks\":[],\"text\":\"What does \"},{\"_key\":\"9ed0f1d96785\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"async move { ... }\"},{\"_key\":\"9c443592176b\",\"_type\":\"span\",\"marks\":[],\"text\":\" do on line 134 of \"},{\"_key\":\"f3cb470297f1\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"foo.rs\"},{\"_key\":\"585547b12276\",\"_type\":\"span\",\"marks\":[],\"text\":\"?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"09fb234457b7\",\"_type\":\"block\",\"children\":[{\"_key\":\"924f9b46fc8a\",\"_type\":\"span\",\"marks\":[],\"text\":\"What edge cases does \"},{\"_key\":\"f4399e014b6a\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"CustomerOnboardingFlowImpl\"},{\"_key\":\"5b86765be737\",\"_type\":\"span\",\"marks\":[],\"text\":\" handle?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"ec8ab765aee3\",\"_type\":\"block\",\"children\":[{\"_key\":\"4f8e73c77f07\",\"_type\":\"span\",\"marks\":[],\"text\":\"Why are we calling \"},{\"_key\":\"e313fe6172d1\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"foo()\"},{\"_key\":\"13ddbb5c3035\",\"_type\":\"span\",\"marks\":[],\"text\":\" instead of \"},{\"_key\":\"fcc3871cf612\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"bar()\"},{\"_key\":\"87ec4d751f00\",\"_type\":\"span\",\"marks\":[],\"text\":\" on line 333?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"fc6c13636a3e\",\"_type\":\"block\",\"children\":[{\"_key\":\"af4ffe0b96c4\",\"_type\":\"span\",\"marks\":[],\"text\":\"Whats the equivalent of line 334 of \"},{\"_key\":\"49a8c72dec8c\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"baz.py\"},{\"_key\":\"d9b62ffaecd4\",\"_type\":\"span\",\"marks\":[],\"text\":\" in Java?\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"a3094e230919\",\"_type\":\"block\",\"children\":[{\"_key\":\"213ba16bb4ba0\",\"_type\":\"span\",\"marks\":[],\"text\":\"At Anthropic, using Claude Code in this way has become our core onboarding workflow, significantly improving ramp-up time and reducing load on other engineers. No special prompting is required! Simply ask questions, and Claude will explore the code to find answers.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d7ffbbaf25b2\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-a08ea13c2359aac0eceacebf2e15f81e8e8ec8d2-1600x1278-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Use Claude to interact with git\",\"height\":1278,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/a08ea13c2359aac0eceacebf2e15f81e8e8ec8d2-1600x1278.png\",\"width\":1600},{\"_key\":\"a24a469f0db5\",\"_type\":\"block\",\"children\":[{\"_key\":\"512935a758d80\",\"_type\":\"span\",\"marks\":[],\"text\":\"f. Use Claude to interact with git\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"5d7f5ebb751f\",\"_type\":\"block\",\"children\":[{\"_key\":\"8f0ffbceb39b\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude can effectively handle many git operations. Many Anthropic engineers use Claude for 90%+ of our \"},{\"_key\":\"34f9cafcfc0e\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"git\"},{\"_key\":\"b2d3d728268d\",\"_type\":\"span\",\"marks\":[],\"text\":\" interactions:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4d656433a662\",\"_type\":\"block\",\"children\":[{\"_key\":\"036ae9e4351a\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Searching \"},{\"_key\":\"089e95df7e71\",\"_type\":\"span\",\"marks\":[\"em\",\"strong\"],\"text\":\"git\"},{\"_key\":\"9fcc3395cb3c\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\" history\"},{\"_key\":\"f2997838b79f\",\"_type\":\"span\",\"marks\":[],\"text\":\" to answer questions like \\\"What changes made it into v1.2.3?\\\", \\\"Who owns this particular feature?\\\", or \\\"Why was this API designed this way?\\\" It helps to explicitly prompt Claude to look through git history to answer queries like these.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"064e04ca5333\",\"_type\":\"block\",\"children\":[{\"_key\":\"80b7c01ec501\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Writing commit messages\"},{\"_key\":\"c67178c6e617\",\"_type\":\"span\",\"marks\":[],\"text\":\".\"},{\"_key\":\"be01d717c669\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\" \"},{\"_key\":\"7e6ca2bac377\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude will look at your changes and recent history automatically to compose a message taking all the relevant context into account\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4a9d7cbdd332\",\"_type\":\"block\",\"children\":[{\"_key\":\"4c7a8aa88db7\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Handling complex git operations\"},{\"_key\":\"2380e9353ebe\",\"_type\":\"span\",\"marks\":[],\"text\":\" like reverting files, resolving rebase conflicts, and comparing and grafting patches\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"352231e34306\",\"_type\":\"block\",\"children\":[{\"_key\":\"49316ffc10da0\",\"_type\":\"span\",\"marks\":[],\"text\":\"g. Use Claude to interact with GitHub\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"40bd3a3644d4\",\"_type\":\"block\",\"children\":[{\"_key\":\"8cec5e3131360\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code can manage many GitHub interactions:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"b09b45e24f69\",\"_type\":\"block\",\"children\":[{\"_key\":\"946f16a3e70f0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Creating pull requests\"},{\"_key\":\"5468a9022e72\",\"_type\":\"span\",\"marks\":[],\"text\":\": Claude understands the shorthand \\\"pr\\\" and will generate appropriate commit messages based on the diff and surrounding context.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d536bdd511e9\",\"_type\":\"block\",\"children\":[{\"_key\":\"fc223c887ab20\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Implementing one-shot resolutions\"},{\"_key\":\"865015e6d5ae\",\"_type\":\"span\",\"marks\":[],\"text\":\" for simple code review comments: just tell it to fix comments on your PR (optionally, give it more specific instructions) and push back to the PR branch when it's done.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"001479944a2d\",\"_type\":\"block\",\"children\":[{\"_key\":\"9b062fa27dda0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Fixing failing builds\"},{\"_key\":\"b106e3b8fe42\",\"_type\":\"span\",\"marks\":[],\"text\":\" or linter warnings\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"8eba7b0ab1a9\",\"_type\":\"block\",\"children\":[{\"_key\":\"e7129ad3cf790\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Categorizing and triaging open issues\"},{\"_key\":\"546a50ccf20b\",\"_type\":\"span\",\"marks\":[],\"text\":\" by asking Claude to loop over open GitHub issues\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"7243a12ada96\",\"_type\":\"block\",\"children\":[{\"_key\":\"1d716f1ea95c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"This eliminates the need to remember \"},{\"_key\":\"1ed385389861\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"gh\"},{\"_key\":\"2bd390f9f774\",\"_type\":\"span\",\"marks\":[],\"text\":\" command line syntax while automating routine tasks.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c3712a027189\",\"_type\":\"block\",\"children\":[{\"_key\":\"78a0ac496f8a0\",\"_type\":\"span\",\"marks\":[],\"text\":\"h. Use Claude to work with Jupyter notebooks\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"fb1bc32d4ec8\",\"_type\":\"block\",\"children\":[{\"_key\":\"7552519b19cc0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Researchers and data scientists at Anthropic use Claude Code to read and write Jupyter notebooks. Claude can interpret outputs, including images, providing a fast way to explore and interact with data. There are no required prompts or workflows, but a workflow we recommend is to have Claude Code and a \"},{\"_key\":\"dcc1e14901f9\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\".ipynb\"},{\"_key\":\"1c4dd0ed77c7\",\"_type\":\"span\",\"marks\":[],\"text\":\" file open side-by-side in VS Code.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"6fb4af048bfa\",\"_type\":\"block\",\"children\":[{\"_key\":\"ffe14d56453f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"You can also ask Claude to clean up or make aesthetic improvements to your Jupyter notebook before you show it to colleagues. Specifically telling it to make the notebook or its data visualizations “aesthetically pleasing” tends to help remind it that its optimizing for a human viewing experience.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"055d37faf42a\",\"_type\":\"block\",\"children\":[{\"_key\":\"e48b33ffbfa50\",\"_type\":\"span\",\"marks\":[],\"text\":\"4. Optimize your workflow\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"89b251722703\",\"_type\":\"block\",\"children\":[{\"_key\":\"4f66532e6ed40\",\"_type\":\"span\",\"marks\":[],\"text\":\"The suggestions below apply across all workflows:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"ee02dd00fd9e\",\"_type\":\"block\",\"children\":[{\"_key\":\"690127141ac50\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Be specific in your instructions\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"c0e1b12f4cb2\",\"_type\":\"block\",\"children\":[{\"_key\":\"c247741483430\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Codes success rate improves significantly with more specific instructions, especially on first attempts. Giving clear directions upfront reduces the need for course corrections later.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"da59b74df73a\",\"_type\":\"block\",\"children\":[{\"_key\":\"91f4027686990\",\"_type\":\"span\",\"marks\":[],\"text\":\"For example:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"99405ba2a6a0\",\"_type\":\"table\",\"cta\":null,\"layout\":{\"direction\":\"horizontal\",\"fixedFirstColumn\":false,\"width\":\"full\"},\"markDefs\":null,\"rows\":[{\"_key\":\"6d49dad02a8f\",\"_type\":\"tableRow\",\"cells\":[{\"_key\":\"b4c78bdce065\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"bf7e8607ec56\",\"_type\":\"block\",\"children\":[{\"_key\":\"5f34a744e25a\",\"_type\":\"span\",\"marks\":[],\"text\":\"Poor\"}],\"markDefs\":[],\"style\":\"normal\"}]},{\"_key\":\"0b69041546ce\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"0124c5d43233\",\"_type\":\"block\",\"children\":[{\"_key\":\"d47961f87cf2\",\"_type\":\"span\",\"marks\":[],\"text\":\"Good\"}],\"markDefs\":[],\"style\":\"normal\"}]}],\"isHeaderRow\":true},{\"_key\":\"4a506a89498c\",\"_type\":\"tableRow\",\"cells\":[{\"_key\":\"223f2aa720f4\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"339942db3e14\",\"_type\":\"block\",\"children\":[{\"_key\":\"a23d876f8e4e0\",\"_type\":\"span\",\"marks\":[],\"text\":\"add tests for foo.py\"}],\"markDefs\":[],\"style\":\"normal\"}]},{\"_key\":\"0e32e7da9b2d\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"3caa42000036\",\"_type\":\"block\",\"children\":[{\"_key\":\"a5fd6844b3de0\",\"_type\":\"span\",\"marks\":[],\"text\":\"write a new test case for foo.py, covering the edge case where the user is logged out. avoid mocks\"}],\"markDefs\":[],\"style\":\"normal\"}]}],\"isHeaderRow\":false},{\"_key\":\"3b2068e1485f\",\"_type\":\"tableRow\",\"cells\":[{\"_key\":\"b46bf977483a\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"164ac68600ab\",\"_type\":\"block\",\"children\":[{\"_key\":\"1a3913dcf9620\",\"_type\":\"span\",\"marks\":[],\"text\":\"why does ExecutionFactory have such a weird api?\"}],\"markDefs\":[],\"style\":\"normal\"}]},{\"_key\":\"7f7f079f7208\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"cbec280093a4\",\"_type\":\"block\",\"children\":[{\"_key\":\"63a2e5311d160\",\"_type\":\"span\",\"marks\":[],\"text\":\"look through ExecutionFactory's git history and summarize how its api came to be\"}],\"markDefs\":[],\"style\":\"normal\"}]}],\"isHeaderRow\":false},{\"_key\":\"e85c95b5594c\",\"_type\":\"tableRow\",\"cells\":[{\"_key\":\"4cdeb1490220\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"3b3f5d31d373\",\"_type\":\"block\",\"children\":[{\"_key\":\"982b6c53321b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"add a calendar widget\"}],\"markDefs\":[],\"style\":\"normal\"}]},{\"_key\":\"38c25563ef35\",\"_type\":\"tableCell\",\"content\":[{\"_key\":\"d94e0915f961\",\"_type\":\"block\",\"children\":[{\"_key\":\"3a041caf85a30\",\"_type\":\"span\",\"marks\":[],\"text\":\"look at how existing widgets are implemented on the home page to understand the patterns and specifically how code and interfaces are separated out. HotDogWidget.php is a good example to start with. then, follow the pattern to implement a new calendar widget that lets the user select a month and paginate forwards/backwards to pick a year. Build from scratch without libraries other than the ones already used in the rest of the codebase.\"}],\"markDefs\":[],\"style\":\"normal\"}]}],\"isHeaderRow\":false}]},{\"_key\":\"5727e05be55d\",\"_type\":\"block\",\"children\":[{\"_key\":\"bca2ff2c70ba0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude can infer intent, but it can't read minds. Specificity leads to better alignment with expectations.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"86b14b6d3656\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-75e1b57a0b696e7aafeca1ed5fa6ba7c601a5953-1360x1126-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Give Claude images\",\"height\":1126,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/75e1b57a0b696e7aafeca1ed5fa6ba7c601a5953-1360x1126.png\",\"width\":1360},{\"_key\":\"d7b3bac0ccac\",\"_type\":\"block\",\"children\":[{\"_key\":\"8e18be462489\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Give Claude images\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"e4885601b2b2\",\"_type\":\"block\",\"children\":[{\"_key\":\"34a3d48ece980\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude excels with images and diagrams through several methods:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f3463d50378d\",\"_type\":\"block\",\"children\":[{\"_key\":\"a64c0968a5dd0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Paste screenshots \"},{\"_key\":\"4a261b18e927\",\"_type\":\"span\",\"marks\":[],\"text\":\"(pro tip: hit \"},{\"_key\":\"11c162c604c9\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\"cmd+ctrl+shift+4\"},{\"_key\":\"e6c76aaa745c\",\"_type\":\"span\",\"marks\":[],\"text\":\" in macOS to screenshot to clipboard and\"},{\"_key\":\"90e07c1594d3\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\" ctrl+v\"},{\"_key\":\"c05b47940fab\",\"_type\":\"span\",\"marks\":[],\"text\":\" to paste. Note that this is not cmd+v like you would usually use to paste on mac and does not work remotely.)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4a2d966c9b5e\",\"_type\":\"block\",\"children\":[{\"_key\":\"1396c38407920\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Drag and drop\"},{\"_key\":\"863181e782d2\",\"_type\":\"span\",\"marks\":[],\"text\":\" images directly into the prompt input\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9c5a8f366603\",\"_type\":\"block\",\"children\":[{\"_key\":\"bdf5ca923e750\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Provide file paths \"},{\"_key\":\"57f599f422d2\",\"_type\":\"span\",\"marks\":[],\"text\":\"for images\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"2d2c01900e67\",\"_type\":\"block\",\"children\":[{\"_key\":\"645661409b880\",\"_type\":\"span\",\"marks\":[],\"text\":\"This is particularly useful when working with design mocks as reference points for UI development, and visual charts for analysis and debugging. If you are not adding visuals to context, it can still be helpful to be clear with Claude about how important it is for the result to be visually appealing.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"99e8065ff1cb\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-7372868757dd17b6f2d3fef98d499d7991d89800-1450x1164-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Mention files you want Claude to look at or work on\",\"height\":1164,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/7372868757dd17b6f2d3fef98d499d7991d89800-1450x1164.png\",\"width\":1450},{\"_key\":\"394f058f5968\",\"_type\":\"block\",\"children\":[{\"_key\":\"b0f1d7e5fb8c\",\"_type\":\"span\",\"marks\":[],\"text\":\"c. Mention files you want Claude to look at or work on\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"9d28153ca3ff\",\"_type\":\"block\",\"children\":[{\"_key\":\"889d2570c788\",\"_type\":\"span\",\"marks\":[],\"text\":\"Use tab-completion to quickly reference files or folders anywhere in your repository, helping Claude find or update the right resources.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c575b38519ca\",\"_type\":\"image\",\"asset\":{\"_ref\":\"image-e071de707f209bbaa7f16b593cc7ed0739875dae-1306x1088-png\",\"_type\":\"reference\"},\"caption\":null,\"description\":\"Give Claude URLs\",\"height\":1088,\"markDefs\":null,\"style\":\"inline\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/e071de707f209bbaa7f16b593cc7ed0739875dae-1306x1088.png\",\"width\":1306},{\"_key\":\"f3a8de08a00d\",\"_type\":\"block\",\"children\":[{\"_key\":\"544a7fcb379b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"d. Give Claude URLs\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"eb818ae7973d\",\"_type\":\"block\",\"children\":[{\"_key\":\"8a9796205513\",\"_type\":\"span\",\"marks\":[],\"text\":\"Paste specific URLs alongside your prompts for Claude to fetch and read. To avoid permission prompts for the same domains (e.g., docs.foo.com), use\"},{\"_key\":\"f861320c52b6\",\"_type\":\"span\",\"marks\":[\"em\"],\"text\":\" \"},{\"_key\":\"1728625f7079\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/permissions\"},{\"_key\":\"14174daa4e6a\",\"_type\":\"span\",\"marks\":[],\"text\":\" to add domains to your allowlist.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"7f34f2f6fe34\",\"_type\":\"block\",\"children\":[{\"_key\":\"34103bff73d40\",\"_type\":\"span\",\"marks\":[],\"text\":\"e. Course correct early and often\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"48793629461b\",\"_type\":\"block\",\"children\":[{\"_key\":\"c0c09b2835a00\",\"_type\":\"span\",\"marks\":[],\"text\":\"While auto-accept mode (shift+tab to toggle) lets Claude work autonomously, you'll typically get better results by being an active collaborator and guiding Claude's approach. You can get the best results by thoroughly explaining the task to Claude at the beginning, but you can also course correct Claude at any time.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3faf56e5510b\",\"_type\":\"block\",\"children\":[{\"_key\":\"b9b153ebf0c80\",\"_type\":\"span\",\"marks\":[],\"text\":\"These four tools help with course correction:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3863e1aacbca\",\"_type\":\"block\",\"children\":[{\"_key\":\"65c92377739a0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to make a plan\"},{\"_key\":\"846cd01422e8\",\"_type\":\"span\",\"marks\":[],\"text\":\" before coding. Explicitly tell it not to code until youve confirmed its plan looks good.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9d50e7137491\",\"_type\":\"block\",\"children\":[{\"_key\":\"29dfdd640d8c0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Press Escape to interrupt\"},{\"_key\":\"093730243b97\",\"_type\":\"span\",\"marks\":[],\"text\":\" Claude during any phase (thinking, tool calls, file edits), preserving context so you can redirect or expand instructions.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"a03e12d63547\",\"_type\":\"block\",\"children\":[{\"_key\":\"21c42dd75e270\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Double-tap Escape to jump back in history\"},{\"_key\":\"f485d068f163\",\"_type\":\"span\",\"marks\":[],\"text\":\", edit a previous prompt, and explore a different direction. You can edit the prompt and repeat until you get the result you're looking for.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"8320513d04b0\",\"_type\":\"block\",\"children\":[{\"_key\":\"fe8b16f6ead70\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to undo changes\"},{\"_key\":\"270f77039572\",\"_type\":\"span\",\"marks\":[],\"text\":\", often in conjunction with option #2 to take a different approach.\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4e1115b8d346\",\"_type\":\"block\",\"children\":[{\"_key\":\"7bdbbc6f4d870\",\"_type\":\"span\",\"marks\":[],\"text\":\"Though Claude Code occasionally solves problems perfectly on the first attempt, using these correction tools generally produces better solutions faster.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"32ed7accccd1\",\"_type\":\"block\",\"children\":[{\"_key\":\"33cb5c7627860\",\"_type\":\"span\",\"marks\":[],\"text\":\"f. Use \"},{\"_key\":\"8820226fd707\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/clear\"},{\"_key\":\"45246b1ce9e0\",\"_type\":\"span\",\"marks\":[],\"text\":\" to keep context focused\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"803deb7a3772\",\"_type\":\"block\",\"children\":[{\"_key\":\"f2be771fbbf60\",\"_type\":\"span\",\"marks\":[],\"text\":\"During long sessions, Claude's context window can fill with irrelevant conversation, file contents, and commands. This can reduce performance and sometimes distract Claude. Use the \"},{\"_key\":\"405581c7bfd5\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/clear\"},{\"_key\":\"a4d939a46300\",\"_type\":\"span\",\"marks\":[],\"text\":\" command frequently between tasks to reset the context window.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f40a048eb2f7\",\"_type\":\"block\",\"children\":[{\"_key\":\"b6b06f5316c40\",\"_type\":\"span\",\"marks\":[],\"text\":\"g. Use checklists and scratchpads for complex workflows\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"cf6c0e15e672\",\"_type\":\"block\",\"children\":[{\"_key\":\"d9e72769450f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"For large tasks with multiple steps or requiring exhaustive solutions—like code migrations, fixing numerous lint errors, or running complex build scripts—improve performance by having Claude use a Markdown file (or even a GitHub issue!) as a checklist and working scratchpad:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"47c8bbd7dd00\",\"_type\":\"block\",\"children\":[{\"_key\":\"029f1ba229c40\",\"_type\":\"span\",\"marks\":[],\"text\":\"For example, to fix a large number of lint issues, you can do the following:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"85da98e4d1a9\",\"_type\":\"block\",\"children\":[{\"_key\":\"5d2c43a4e3950\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Tell Claude to run the lint command\"},{\"_key\":\"3db02b43e8e0\",\"_type\":\"span\",\"marks\":[],\"text\":\" and write all resulting errors (with filenames and line numbers) to a Markdown checklist\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"673dbdb91021\",\"_type\":\"block\",\"children\":[{\"_key\":\"85d50a685a010\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Instruct Claude to address each issue one by one\"},{\"_key\":\"a6623632c7a1\",\"_type\":\"span\",\"marks\":[],\"text\":\", fixing and verifying before checking it off and moving to the next\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f9a817d1239c\",\"_type\":\"block\",\"children\":[{\"_key\":\"3f83522ef3340\",\"_type\":\"span\",\"marks\":[],\"text\":\"h. Pass data into Claude\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"6ce1baca389e\",\"_type\":\"block\",\"children\":[{\"_key\":\"07afa30a5b290\",\"_type\":\"span\",\"marks\":[],\"text\":\"Several methods exist for providing data to Claude:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"abd3e87df348\",\"_type\":\"block\",\"children\":[{\"_key\":\"cd6b71324a570\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Copy and paste\"},{\"_key\":\"5c7d8582b408\",\"_type\":\"span\",\"marks\":[],\"text\":\" directly into your prompt (most common approach)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"b8afbce15940\",\"_type\":\"block\",\"children\":[{\"_key\":\"cd750e4cdfb40\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Pipe into Claude Code\"},{\"_key\":\"4c35044575ea\",\"_type\":\"span\",\"marks\":[],\"text\":\" (e.g., \"},{\"_key\":\"fb37080ca61c\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"cat foo.txt | claude\"},{\"_key\":\"74ffcb45675d\",\"_type\":\"span\",\"marks\":[],\"text\":\"), particularly useful for logs, CSVs, and large data\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d00dd7dea0fb\",\"_type\":\"block\",\"children\":[{\"_key\":\"ddfd220b4b530\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Tell Claude to pull data\"},{\"_key\":\"18b907ed2a9d\",\"_type\":\"span\",\"marks\":[],\"text\":\" via bash commands, MCP tools, or custom slash commands\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"649b99d0f9fb\",\"_type\":\"block\",\"children\":[{\"_key\":\"26150bc5723d0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Ask Claude to read files\"},{\"_key\":\"81e11e292323\",\"_type\":\"span\",\"marks\":[],\"text\":\" or fetch URLs (works for images too)\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"54b6dfecff0c\",\"_type\":\"block\",\"children\":[{\"_key\":\"f6db9a0e75730\",\"_type\":\"span\",\"marks\":[],\"text\":\"Most sessions involve a combination of these approaches. For example, you can pipe in a log file, then tell Claude to use a tool to pull in additional context to debug the logs.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"729b8825b72e\",\"_type\":\"block\",\"children\":[{\"_key\":\"fe01455ffc7a\",\"_type\":\"span\",\"marks\":[],\"text\":\"5. Use headless mode to automate your infra\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"6886083f8c1d\",\"_type\":\"block\",\"children\":[{\"_key\":\"ecb3d6f8773c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code includes \"},{\"_key\":\"ecb3d6f8773c1\",\"_type\":\"span\",\"marks\":[\"0097c246ffa3\"],\"text\":\"headless mode\"},{\"_key\":\"ecb3d6f8773c2\",\"_type\":\"span\",\"marks\":[],\"text\":\" for non-interactive contexts like CI, pre-commit hooks, build scripts, and automation. Use the \"},{\"_key\":\"bc1463e41a2c\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"-p\"},{\"_key\":\"94f44c324aa2\",\"_type\":\"span\",\"marks\":[],\"text\":\" flag with a prompt to enable headless mode, and \"},{\"_key\":\"46c8b68cda61\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"--output-format stream-json\"},{\"_key\":\"f58612c4fc01\",\"_type\":\"span\",\"marks\":[],\"text\":\" for streaming JSON output.\"}],\"markDefs\":[{\"_key\":\"0097c246ffa3\",\"_type\":\"link\",\"href\":\"https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#automate-ci-and-infra-workflows\"}],\"style\":\"normal\"},{\"_key\":\"7989f8547ac0\",\"_type\":\"block\",\"children\":[{\"_key\":\"1d105b60ff42\",\"_type\":\"span\",\"marks\":[],\"text\":\"Note that headless mode does not persist between sessions. You have to trigger it each session.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9a3fdd69edc5\",\"_type\":\"block\",\"children\":[{\"_key\":\"8f33b7e450b60\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Use Claude for issue triage\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"0ecb210fcb61\",\"_type\":\"block\",\"children\":[{\"_key\":\"ae884967babb0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Headless mode can power automations triggered by GitHub events, such as when a new issue is created in your repository. For example, the public \"},{\"_key\":\"ae884967babb1\",\"_type\":\"span\",\"marks\":[\"77f41f57c7e7\"],\"text\":\"Claude Code repository\"},{\"_key\":\"ae884967babb2\",\"_type\":\"span\",\"marks\":[],\"text\":\" uses Claude to inspect new issues as they come in and assign appropriate labels.\"}],\"markDefs\":[{\"_key\":\"77f41f57c7e7\",\"_type\":\"link\",\"href\":\"https://github.com/anthropics/claude-code/blob/main/.github/actions/claude-issue-triage-action/action.yml\"}],\"style\":\"normal\"},{\"_key\":\"95bb8bf7b7ee\",\"_type\":\"block\",\"children\":[{\"_key\":\"fcb3a2db2b560\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Use Claude as a linter\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"923f3b9dbc63\",\"_type\":\"block\",\"children\":[{\"_key\":\"79cfd7f06e2b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Claude Code can provide \"},{\"_key\":\"79cfd7f06e2b1\",\"_type\":\"span\",\"marks\":[\"83cfabb6cb5b\"],\"text\":\"subjective code reviews\"},{\"_key\":\"79cfd7f06e2b2\",\"_type\":\"span\",\"marks\":[],\"text\":\" beyond what traditional linting tools detect, identifying issues like typos, stale comments, misleading function or variable names, and more.\"}],\"markDefs\":[{\"_key\":\"83cfabb6cb5b\",\"_type\":\"link\",\"blank\":true,\"href\":\"https://github.com/anthropics/claude-code-action/blob/main/action.yml\"}],\"style\":\"normal\"},{\"_key\":\"a25a51a6c730\",\"_type\":\"block\",\"children\":[{\"_key\":\"9acda7ac635c\",\"_type\":\"span\",\"marks\":[],\"text\":\"6. Uplevel with multi-Claude workflows\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"885fd6d7e5a6\",\"_type\":\"block\",\"children\":[{\"_key\":\"5dfb12f15a010\",\"_type\":\"span\",\"marks\":[],\"text\":\"Beyond standalone usage, some of the most powerful applications involve running multiple Claude instances in parallel:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"890acd401549\",\"_type\":\"block\",\"children\":[{\"_key\":\"eab45243ce200\",\"_type\":\"span\",\"marks\":[],\"text\":\"a. Have one Claude write code; use another Claude to verify\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"1144f5b47bbd\",\"_type\":\"block\",\"children\":[{\"_key\":\"da4b3c26d2000\",\"_type\":\"span\",\"marks\":[],\"text\":\"A simple but effective approach is to have one Claude write code while another reviews or tests it. Similar to working with multiple engineers, sometimes having separate context is beneficial:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"570b2711d9d6\",\"_type\":\"block\",\"children\":[{\"_key\":\"f68bc19511a90\",\"_type\":\"span\",\"marks\":[],\"text\":\"Use Claude to write code\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"6ad715fd48be\",\"_type\":\"block\",\"children\":[{\"_key\":\"56d1140345580\",\"_type\":\"span\",\"marks\":[],\"text\":\"Run \"},{\"_key\":\"4f31e513abab\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/clear\"},{\"_key\":\"54468593ce00\",\"_type\":\"span\",\"marks\":[],\"text\":\" or start a second Claude in another terminal\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1c07e4d30bce\",\"_type\":\"block\",\"children\":[{\"_key\":\"7dff29e61bf30\",\"_type\":\"span\",\"marks\":[],\"text\":\"Have the second Claude review the first Claude's work\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"72e4bdf7e1be\",\"_type\":\"block\",\"children\":[{\"_key\":\"8612107d8b2c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Start another Claude (or \"},{\"_key\":\"2de5aac279f8\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"/clear\"},{\"_key\":\"77b4bab79c6d\",\"_type\":\"span\",\"marks\":[],\"text\":\" again) to read both the code and review feedback\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3d9a192baea2\",\"_type\":\"block\",\"children\":[{\"_key\":\"6011116be33b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Have this Claude edit the code based on the feedback\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"ad77036a97dc\",\"_type\":\"block\",\"children\":[{\"_key\":\"cf48c0c291b40\",\"_type\":\"span\",\"marks\":[],\"text\":\"You can do something similar with tests: have one Claude write tests, then have another Claude write code to make the tests pass. You can even have your Claude instances communicate with each other by giving them separate working scratchpads and telling them which one to write to and which one to read from.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"3a80207530e6\",\"_type\":\"block\",\"children\":[{\"_key\":\"e8b3bdca28150\",\"_type\":\"span\",\"marks\":[],\"text\":\"This separation often yields better results than having a single Claude handle everything.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"b3ae21897add\",\"_type\":\"block\",\"children\":[{\"_key\":\"a7ff2196f1760\",\"_type\":\"span\",\"marks\":[],\"text\":\"b. Have multiple checkouts of your repo\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"74146fc3d46b\",\"_type\":\"block\",\"children\":[{\"_key\":\"4ebb0b7cf70c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Rather than waiting for Claude to complete each step, something many engineers at Anthropic do is:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4ade594dccad\",\"_type\":\"block\",\"children\":[{\"_key\":\"51d529a8fb570\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Create 3-4 git checkouts\"},{\"_key\":\"b7f2ef372643\",\"_type\":\"span\",\"marks\":[],\"text\":\" in separate folders\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"6732f88e1462\",\"_type\":\"block\",\"children\":[{\"_key\":\"8e5e98821ec40\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Open each folder\"},{\"_key\":\"1f56a34be201\",\"_type\":\"span\",\"marks\":[],\"text\":\" in separate terminal tabs\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f9f562ea2d56\",\"_type\":\"block\",\"children\":[{\"_key\":\"e936870ac0640\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Start Claude in each folder \"},{\"_key\":\"adfae38cd9fb\",\"_type\":\"span\",\"marks\":[],\"text\":\"with different tasks\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0b77f61ddfcf\",\"_type\":\"block\",\"children\":[{\"_key\":\"4cbb90cfcdd80\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Cycle through\"},{\"_key\":\"338f73855a4b\",\"_type\":\"span\",\"marks\":[],\"text\":\" to check progress and approve/deny permission requests\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"0b48893d6a91\",\"_type\":\"block\",\"children\":[{\"_key\":\"6341896a1f530\",\"_type\":\"span\",\"marks\":[],\"text\":\"c. Use git worktrees\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"903e72cc49df\",\"_type\":\"block\",\"children\":[{\"_key\":\"7d3a7e9af6a50\",\"_type\":\"span\",\"marks\":[],\"text\":\"This approach shines for multiple independent tasks, offering a lighter-weight alternative to multiple checkouts. Git worktrees allow you to check out multiple branches from the same repository into separate directories. Each worktree has its own working directory with isolated files, while sharing the same Git history and reflog.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"811ffe3556c8\",\"_type\":\"block\",\"children\":[{\"_key\":\"329a5c272c5c0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Using git worktrees enables you to run multiple Claude sessions simultaneously on different parts of your project, each focused on its own independent task. For instance, you might have one Claude refactoring your authentication system while another builds a completely unrelated data visualization component. Since the tasks don't overlap, each Claude can work at full speed without waiting for the other's changes or dealing with merge conflicts:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"c16e6320cc7b\",\"_type\":\"block\",\"children\":[{\"_key\":\"4ef52e2baab70\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Create worktrees\"},{\"_key\":\"7dfe76dd30f5\",\"_type\":\"span\",\"marks\":[],\"text\":\": \"},{\"_key\":\"81b10709c37e\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"git worktree add ../project-feature-a feature-a\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"f405b49fb4e2\",\"_type\":\"block\",\"children\":[{\"_key\":\"d92257fdc1af0\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Launch Claude in each worktree\"},{\"_key\":\"0e21a7962c08\",\"_type\":\"span\",\"marks\":[],\"text\":\": \"},{\"_key\":\"487c4dd5ceee\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"cd ../project-feature-a \u0026\u0026 claude\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"93ac1e9a0ff7\",\"_type\":\"block\",\"children\":[{\"_key\":\"cc4f5456b8e90\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Create additional worktrees\"},{\"_key\":\"3b0a2499861c\",\"_type\":\"span\",\"marks\":[],\"text\":\" as needed (repeat steps 1-2 in new terminal tabs)\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"59095f740b8e\",\"_type\":\"block\",\"children\":[{\"_key\":\"09ebb090f0cd0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Some tips:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"70181e7e8bfb\",\"_type\":\"block\",\"children\":[{\"_key\":\"a87d899ef24f0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Use consistent naming conventions\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9c49b5ba64ec\",\"_type\":\"block\",\"children\":[{\"_key\":\"d78c2b9f20d30\",\"_type\":\"span\",\"marks\":[],\"text\":\"Maintain one terminal tab per worktree\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d483405317ea\",\"_type\":\"block\",\"children\":[{\"_key\":\"f6195bb7d6d70\",\"_type\":\"span\",\"marks\":[],\"text\":\"If youre using iTerm2 on Mac, \"},{\"_key\":\"f6195bb7d6d71\",\"_type\":\"span\",\"marks\":[\"21c2247d96de\"],\"text\":\"set up notifications\"},{\"_key\":\"f6195bb7d6d72\",\"_type\":\"span\",\"marks\":[],\"text\":\" for when Claude needs attention\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[{\"_key\":\"21c2247d96de\",\"_type\":\"link\",\"href\":\"https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview#notification-setup\"}],\"style\":\"normal\"},{\"_key\":\"61c13fd887e4\",\"_type\":\"block\",\"children\":[{\"_key\":\"d3f66aa895af0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Use separate IDE windows for different worktrees\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4f0be4640d75\",\"_type\":\"block\",\"children\":[{\"_key\":\"f40ce1d9440b0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Clean up when finished: \"},{\"_key\":\"8b2f8f2695b3\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"git worktree remove ../project-feature-a\"}],\"level\":1,\"listItem\":\"bullet\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"a3da119437bc\",\"_type\":\"block\",\"children\":[{\"_key\":\"03d27f00143e0\",\"_type\":\"span\",\"marks\":[],\"text\":\"d. Use headless mode with a custom harness\"}],\"markDefs\":[],\"style\":\"h4\"},{\"_key\":\"faef31a915a7\",\"_type\":\"block\",\"children\":[{\"_key\":\"b3f0577fa6e00\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude -p\"},{\"_key\":\"f7f70939a46b\",\"_type\":\"span\",\"marks\":[],\"text\":\" (headless mode) integrates Claude Code programmatically into larger workflows while leveraging its built-in tools and system prompt. There are two primary patterns for using headless mode:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"4b0ee2605658\",\"_type\":\"block\",\"children\":[{\"_key\":\"6855bcda176a0\",\"_type\":\"span\",\"marks\":[],\"text\":\"1. \"},{\"_key\":\"6855bcda176a1\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Fanning out\"},{\"_key\":\"6855bcda176a2\",\"_type\":\"span\",\"marks\":[],\"text\":\" handles large migrations or analyses (e.g., analyzing sentiment in hundreds of logs or analyzing thousands of CSVs):\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"a1d8150f15ea\",\"_type\":\"block\",\"children\":[{\"_key\":\"13eebf53c3bc0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Have Claude write a script to generate a task list. For example, generate a list of 2k files that need to be migrated from framework A to framework B.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"d22b3042e01d\",\"_type\":\"block\",\"children\":[{\"_key\":\"1e3754039b2e0\",\"_type\":\"span\",\"marks\":[],\"text\":\"Loop through tasks, calling Claude programmatically for each and giving it a task and a set of tools it can use. For example: \"},{\"_key\":\"0f9248db9834\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude -p “migrate foo.py from React to Vue. When you are done, you MUST return the string OK if you succeeded, or FAIL if the task failed.” --allowedTools Edit Bash(git commit:*)\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"5b6949a1fc9a\",\"_type\":\"block\",\"children\":[{\"_key\":\"a7043708e5d70\",\"_type\":\"span\",\"marks\":[],\"text\":\"Run the script several times and refine your prompt to get the desired outcome.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"9c19df80a90b\",\"_type\":\"block\",\"children\":[{\"_key\":\"206a5539032a0\",\"_type\":\"span\",\"marks\":[],\"text\":\"2. \"},{\"_key\":\"886551550f6c\",\"_type\":\"span\",\"marks\":[\"strong\"],\"text\":\"Pipelining\"},{\"_key\":\"5ddb1165b0b3\",\"_type\":\"span\",\"marks\":[],\"text\":\" integrates Claude into existing data/processing pipelines:\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"94b126b87d67\",\"_type\":\"block\",\"children\":[{\"_key\":\"0d39b115cd350\",\"_type\":\"span\",\"marks\":[],\"text\":\"Call \"},{\"_key\":\"30fa83e31584\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"claude -p “\u003cyour prompt\u003e” --json | your_command\"},{\"_key\":\"1525eb74ad4c\",\"_type\":\"span\",\"marks\":[],\"text\":\", where \"},{\"_key\":\"0dc0dfd95c6a\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"your_command\"},{\"_key\":\"a00a34615d97\",\"_type\":\"span\",\"marks\":[],\"text\":\" is the next step of your processing pipeline\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"a55618aa83e7\",\"_type\":\"block\",\"children\":[{\"_key\":\"83cdacc0d7d90\",\"_type\":\"span\",\"marks\":[],\"text\":\"Thats it! JSON output (optional) can help provide structure for easier automated processing.\"}],\"level\":1,\"listItem\":\"number\",\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"e635f099d8ae\",\"_type\":\"block\",\"children\":[{\"_key\":\"137a13f65e060\",\"_type\":\"span\",\"marks\":[],\"text\":\"For both of these use cases, it can be helpful to use the \"},{\"_key\":\"1fbafacb4c3f\",\"_type\":\"span\",\"marks\":[\"code\"],\"text\":\"--verbose\"},{\"_key\":\"d9b39975e0a1\",\"_type\":\"span\",\"marks\":[],\"text\":\" flag for debugging the Claude invocation. We generally recommend turning verbose mode off in production for cleaner output.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"57ae26cc8ab1\",\"_type\":\"block\",\"children\":[{\"_key\":\"0068dde4411a0\",\"_type\":\"span\",\"marks\":[],\"text\":\"What are your tips and best practices for working with Claude Code? Tag @AnthropicAI so we can see what you're building!\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"1ecb302273db\",\"_type\":\"block\",\"children\":[{\"_key\":\"2a3272a0b1330\",\"_type\":\"span\",\"marks\":[],\"text\":\"Acknowledgements\"}],\"markDefs\":[],\"style\":\"h3\"},{\"_key\":\"73e46fb742cc\",\"_type\":\"block\",\"children\":[{\"_key\":\"ad05b91a0c210\",\"_type\":\"span\",\"marks\":[],\"text\":\"Written by Boris Cherny. This work draws upon best practices from across the broader Claude Code user community, whose creative approaches and workflows continue to inspire us. Special thanks also to Daisy Hollman, Ashwin Bhat, Cat Wu, Sid Bidasaria, Cal Rueb, Nodir Turakulov, Barry Zhang, Drew Hodun and many other Anthropic engineers whose valuable insights and practical experience with Claude Code helped shape these recommendations.\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"8b35bd9ff328\",\"_type\":\"block\",\"children\":[{\"_key\":\"83e8318c0325\",\"_type\":\"span\",\"marks\":[],\"text\":\"\"}],\"markDefs\":[],\"style\":\"normal\"},{\"_key\":\"03db00585959\",\"_type\":\"toutCallout\",\"cta\":{\"_createdAt\":\"2025-07-31T18:20:17Z\",\"_id\":\"d0a0579e-9b70-497f-9437-b9a6f3a97106\",\"_rev\":\"x5rNijPBIECk0DNEFQdYZx\",\"_type\":\"link\",\"_updatedAt\":\"2025-07-31T18:21:05Z\",\"fileAsset\":null,\"modalId\":null,\"page\":null,\"text\":\"Explore courses\",\"url\":\"https://anthropic.skilljar.com/\"},\"illustration\":{\"backgroundColor\":\"cactus\",\"illustration\":{\"_createdAt\":\"2025-03-11T20:06:48Z\",\"_id\":\"illustration-hero-objects-puzzle\",\"_rev\":\"MSyv171NSvWZvUt9ouKnbw\",\"_system\":{\"base\":{\"id\":\"illustration-hero-objects-puzzle\",\"rev\":\"ywswJJUxLstmcebkfFoJyU\"}},\"_type\":\"illustration\",\"_updatedAt\":\"2025-07-18T21:03:02Z\",\"description\":\"Interlocking puzzle piece with complex geometric shape and detailed surface texture\",\"image\":{\"_type\":\"image\",\"asset\":{\"_ref\":\"image-43abe7e54b56a891e74a8542944dfbd33f07f49c-1000x1000-svg\",\"_type\":\"reference\"},\"height\":1000,\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/43abe7e54b56a891e74a8542944dfbd33f07f49c-1000x1000.svg\",\"width\":1000},\"keywords\":\"puzzle, piece, solution, problem solving, fitting together, completion, assembly, matching, solving, integration, piece fitting, problem resolution, challenge\",\"name\":\"Object Puzzle\",\"type\":\"hero\"}},\"markDefs\":null,\"summary\":\"Master API development, Model Context Protocol, and Claude Code with courses on Anthropic Academy. Earn certificates upon completion.\",\"title\":\"Looking to learn more?\"}],\"cardImage\":{\"_type\":\"image\",\"asset\":{\"_ref\":\"image-6295100fcf8952bed666ba69536c581af87eef15-2554x2554-svg\",\"_type\":\"reference\"},\"height\":2554,\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/6295100fcf8952bed666ba69536c581af87eef15-2554x2554.svg\",\"width\":2554},\"hero\":{\"_type\":\"image\",\"asset\":{\"_ref\":\"image-6295100fcf8952bed666ba69536c581af87eef15-2554x2554-svg\",\"_type\":\"reference\"},\"caption\":null,\"height\":2554,\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/6295100fcf8952bed666ba69536c581af87eef15-2554x2554.svg\",\"width\":2554},\"meta\":{\"robotsIndexable\":true,\"seoDescription\":\"A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. \",\"seoTitle\":\"Claude Code Best Practices\",\"socialImage\":{\"_type\":\"image\",\"asset\":{\"_createdAt\":\"2025-04-22T14:36:22Z\",\"_id\":\"image-19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260-png\",\"_rev\":\"xn9zAYek4ZGpTrsbzZKqft\",\"_type\":\"sanity.imageAsset\",\"_updatedAt\":\"2025-04-22T14:36:22Z\",\"assetId\":\"19121280eda2955bdd2d0b12c4f61b1a89b6098f\",\"extension\":\"png\",\"metadata\":{\"_type\":\"sanity.imageMetadata\",\"blurHash\":\"MBR3N8xu~q%LD%x]ofxtNGRk-;oLIAR+xu\",\"dimensions\":{\"_type\":\"sanity.imageDimensions\",\"aspectRatio\":1.9047619047619047,\"height\":1260,\"width\":2400},\"hasAlpha\":true,\"isOpaque\":true,\"lqip\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAYAAAB/Ca1DAAAACXBIWXMAAAsTAAALEwEAmpwYAAABGUlEQVR4nJ2Sy07CUBRF+XBNDP6ITgRHkihGUROkCrZAC5VCelugjwu09IVfsIwdONNYB3t0TlayV3btkG/5Sz6K3Xd++6v9dMhTSRL77COPeLcm2q6QoUAGDuk+qAYssg27zRLHNrHeR0z0AS/KI42LM5qNcxZzozow9AXmRGWo9lAHXe7aV5zWj6mfHKGpPYqqlWUgMPQB+ugVMdeZGX3arSY3rUtc26zuUAaCoaagawqeMJCOgbcYErpT0sirXnm9tOg9d+grD7iWRijGSDEm8i3yvV8d6NhTOvfXdJ9uETOV0DWQrlECs/8AA88u/ZnGG8FqRixtYilIdkuKNKzuMEvCcn9fO8ySoIQUqaTIJId8Ux3433wCXmgnPAkuFjUAAAAASUVORK5CYII=\",\"palette\":{\"_type\":\"sanity.imagePalette\",\"darkMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#443c3c\",\"foreground\":\"#fff\",\"population\":0.03,\"title\":\"#fff\"},\"darkVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#724212\",\"foreground\":\"#fff\",\"population\":0,\"title\":\"#fff\"},\"dominant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#dfd6c4\",\"foreground\":\"#000\",\"population\":0.09,\"title\":\"#000\"},\"lightMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#dfd6c4\",\"foreground\":\"#000\",\"population\":0.09,\"title\":\"#000\"},\"lightVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#fcf4ec\",\"foreground\":\"#000\",\"population\":0.08,\"title\":\"#000\"},\"muted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#7c7c74\",\"foreground\":\"#fff\",\"population\":0.05,\"title\":\"#fff\"},\"vibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#dc7f22\",\"foreground\":\"#fff\",\"population\":0,\"title\":\"#fff\"}}},\"mimeType\":\"image/png\",\"originalFilename\":\"eng-blog-social4.png\",\"path\":\"images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png\",\"sha1hash\":\"19121280eda2955bdd2d0b12c4f61b1a89b6098f\",\"size\":51193,\"uploadId\":\"hXW01YuhmYLfksgWTSIed8JxofeJkITs\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png\"}}},\"publishedOn\":\"2025-04-18\",\"slug\":{\"_type\":\"slug\",\"current\":\"claude-code-best-practices\"},\"spotIllustration\":{\"_type\":\"image\",\"asset\":{\"_ref\":\"image-c423cdaa6733c03a5d10f38c76e1ecf1900c6716-1200x1200-svg\",\"_type\":\"reference\"},\"height\":1200,\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/c423cdaa6733c03a5d10f38c76e1ecf1900c6716-1200x1200.svg\",\"width\":1200},\"subjects\":[{\"_key\":\"developer-tools\",\"_type\":\"tag\",\"label\":\"Developer Tools\",\"value\":\"developer-tools\"}],\"summary\":\"Claude Code is a command line tool for agentic coding. This post covers tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. \",\"title\":\"Claude Code: Best practices for agentic coding\"},\"siteSettings\":{\"_createdAt\":\"2023-11-03T16:49:36Z\",\"_id\":\"13c6e1a1-6f38-400c-ae18-89d73b6ba991\",\"_rev\":\"lKcsmHdx4q1IKN0yIVmh2Q\",\"_system\":{\"base\":{\"id\":\"13c6e1a1-6f38-400c-ae18-89d73b6ba991\",\"rev\":\"Jchwq2rEU1uoIdLXcpNNwP\"}},\"_type\":\"siteSettings\",\"_updatedAt\":\"2026-01-05T18:33:08Z\",\"announcement\":null,\"claudeCta\":{\"desktopCtas\":null,\"mobileCtas\":[{\"title\":\"Log in to Claude\",\"url\":\"https://claude.ai/login\"},{\"title\":\"Download app\",\"url\":\"https://claude.ai/download\"}],\"sections\":[{\"category\":\"Products\",\"links\":[{\"title\":\"Claude\",\"url\":\"https://claude.com/product/overview\"},{\"title\":\"Claude Code\",\"url\":\"https://claude.com/product/claude-code\"},{\"title\":\"Claude Developer Platform\",\"url\":\"https://claude.com/platform/api\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing\"},{\"title\":\"Contact sales\",\"url\":\"https://claude.com/contact-sales\"}]},{\"category\":\"Models\",\"links\":[{\"title\":\"Opus\",\"url\":\"/claude/opus\"},{\"title\":\"Sonnet\",\"url\":\"/claude/sonnet\"},{\"title\":\"Haiku\",\"url\":\"/claude/haiku\"}]},{\"category\":\"Log in\",\"links\":[{\"title\":\"Claude.ai\",\"url\":\"https://claude.ai\"},{\"title\":\"Claude Console\",\"url\":\"https://console.claude.com\"}]}],\"title\":\"Try Claude\",\"url\":\"https://claude.ai/\"},\"copyright\":\"© 2025 Anthropic PBC\",\"footerNavigation\":[{\"_key\":\"716b96b62292\",\"links\":[{\"title\":\"Claude\",\"url\":\"https://claude.com/product/overview\"},{\"title\":\"Claude Code\",\"url\":\"https://claude.com/product/claude-code\"},{\"title\":\"Claude in Chrome\",\"url\":\"https://claude.com/chrome\"},{\"title\":\"Claude in Excel\",\"url\":\"https://claude.com/claude-in-excel\"},{\"title\":\"Claude in Slack\",\"url\":\"https://claude.com/claude-in-slack\"},{\"title\":\"Skills\",\"url\":\"https://www.claude.com/skills\"},{\"title\":\"Max plan\",\"url\":\"https://claude.com/pricing/max\"},{\"title\":\"Team plan\",\"url\":\"https://claude.com/pricing/team\"},{\"title\":\"Enterprise plan\",\"url\":\"https://claude.com/pricing/enterprise\"},{\"title\":\"Download app\",\"url\":\"https://claude.ai/download\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing\"},{\"title\":\"Log in to Claude\",\"url\":\"https://claude.ai/\"}],\"title\":\"Products\"},{\"_key\":\"0229138ff25d\",\"links\":[{\"title\":\"Opus\",\"url\":\"https://www.anthropic.com/claude/opus\"},{\"title\":\"Sonnet\",\"url\":\"https://www.anthropic.com/claude/sonnet\"},{\"title\":\"Haiku\",\"url\":\"https://www.anthropic.com/claude/haiku\"}],\"title\":\"Models\"},{\"_key\":\"df2df9219e3abce95d6d83387e2d9bd6\",\"links\":[{\"title\":\"AI agents\",\"url\":\"https://claude.com/solutions/agents\"},{\"title\":\"Code modernization\",\"url\":\"https://claude.com/solutions/code-modernization\"},{\"title\":\"Coding\",\"url\":\"https://claude.com/solutions/coding\"},{\"title\":\"Customer support\",\"url\":\"https://claude.com/solutions/customer-support\"},{\"title\":\"Education\",\"url\":\"https://claude.com/solutions/education\"},{\"title\":\"Financial services\",\"url\":\"https://claude.com/solutions/financial-services\"},{\"title\":\"Government\",\"url\":\"https://claude.com/solutions/government\"},{\"title\":\"Life sciences\",\"url\":\"https://claude.com/solutions/life-sciences\"},{\"title\":\"Nonprofits\",\"url\":\"https://claude.com/solutions/nonprofits\"}],\"title\":\"Solutions\"},{\"_key\":\"f286ca01fc7aaabd131f347b711a971b\",\"links\":[{\"title\":\"Overview\",\"url\":\"https://claude.com/platform/api\"},{\"title\":\"Developer docs\",\"url\":\"https://platform.claude.com/docs\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing#api\"},{\"title\":\"Regional Compliance\",\"url\":\"https://claude.com/regional-compliance\"},{\"title\":\"Amazon Bedrock\",\"url\":\"https://claude.com/partners/amazon-bedrock\"},{\"title\":\"Google Clouds Vertex AI\",\"url\":\"https://claude.com/partners/google-cloud-vertex-ai\"},{\"title\":\"Console login\",\"url\":\"http://console.anthropic.com/\"}],\"title\":\"Claude Developer Platform\"},{\"_key\":\"4b255e67f68c270e0072c7564e084e24\",\"links\":[{\"title\":\"Blog\",\"url\":\"https://claude.com/blog\"},{\"title\":\"Claude partner network\",\"url\":\"https://claude.com/partners\"},{\"title\":\"Connectors\",\"url\":\"https://claude.com/connectors\"},{\"title\":\"Courses\",\"url\":\"/learn\"},{\"title\":\"Customer stories\",\"url\":\"https://claude.com/customers\"},{\"title\":\"Engineering at Anthropic\",\"url\":\"/engineering\"},{\"title\":\"Events\",\"url\":\"/events\"},{\"title\":\"Powered by Claude\",\"url\":\"https://claude.com/partners/powered-by-claude\"},{\"title\":\"Service partners\",\"url\":\"https://claude.com/partners/services\"},{\"title\":\"Startups program\",\"url\":\"https://claude.com/programs/startups\"},{\"title\":\"Tutorials\",\"url\":\"https://claude.com/resources/tutorials\"},{\"title\":\"Use cases\",\"url\":\"https://claude.com/resources/use-cases\"}],\"title\":\"Learn\"},{\"_key\":\"4f2729951e15b0b870897e0444f5f3e1\",\"links\":[{\"title\":\"Anthropic\",\"url\":\"/company\"},{\"title\":\"Careers\",\"url\":\"/careers\"},{\"title\":\"Economic Futures\",\"url\":\"/economic-index\"},{\"title\":\"Research\",\"url\":\"/research\"},{\"title\":\"News\",\"url\":\"/news\"},{\"title\":\"Responsible Scaling Policy\",\"url\":\"https://www.anthropic.com/news/announcing-our-updated-responsible-scaling-policy\"},{\"title\":\"Security and compliance\",\"url\":\"https://trust.anthropic.com/\"},{\"title\":\"Transparency\",\"url\":\"/transparency\"}],\"title\":\"Company\"},{\"_key\":\"a886dd1838335844d635f2857b25d66a\",\"links\":[{\"title\":\"Availability\",\"url\":\"https://www.anthropic.com/supported-countries\"},{\"title\":\"Status\",\"url\":\"https://status.anthropic.com/\"},{\"title\":\"Support center\",\"url\":\"https://support.claude.com/en/\"}],\"title\":\"Help and security\"},{\"_key\":\"3c3b033c11fa832a35d43b87d55a5364\",\"links\":[{\"title\":\"Privacy choices\",\"url\":\"#\"},{\"title\":\"Privacy policy\",\"url\":\"https://www.anthropic.com/legal/privacy\"},{\"title\":\"Responsible disclosure policy\",\"url\":\"https://www.anthropic.com/responsible-disclosure-policy\"},{\"title\":\"Terms of service: Commercial\",\"url\":\"https://www.anthropic.com/legal/commercial-terms\"},{\"title\":\"Terms of service: Consumer\",\"url\":\"https://www.anthropic.com/legal/consumer-terms\"},{\"title\":\"Usage policy\",\"url\":\"https://www.anthropic.com/legal/aup\"}],\"title\":\"Terms and policies\"}],\"headerNavigation\":[{\"_key\":\"a340f9d4b859\",\"category\":\"Research\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/research\"},{\"_key\":\"a483c7dfd38a\",\"category\":\"Economic Futures\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/economic-futures\"},{\"_key\":\"82c471bd311d\",\"category\":\"Commitments\",\"displayType\":\"sections\",\"sections\":[{\"_key\":\"675871636e4d\",\"links\":[{\"title\":\" Transparency\",\"url\":\"/transparency\"},{\"title\":\"Responsible Scaling Policy\",\"url\":\"/news/announcing-our-updated-responsible-scaling-policy\"}],\"title\":\"Initiatives\"},{\"_key\":\"16af50a6e2dd\",\"links\":[{\"title\":\"Security and compliance\",\"url\":\"https://trust.anthropic.com/\"}],\"title\":\"Trust center\"}]},{\"_key\":\"861a11ed9931\",\"category\":\"Learn\",\"displayType\":\"sections\",\"sections\":[{\"_key\":\"9f9f720a8793\",\"links\":[{\"title\":\"Anthropic Academy\",\"url\":\"/learn\"},{\"title\":\"Tutorials\",\"url\":\"https://claude.com/resources/tutorials\"},{\"title\":\"Use cases\",\"url\":\"https://claude.com/resources/use-cases\"},{\"title\":\"Engineering at Anthropic\",\"url\":\"/engineering\"},{\"title\":\"Developer docs\",\"url\":\"https://docs.claude.com\"}],\"title\":\"Learn\"},{\"_key\":\"6bd061c46b10\",\"links\":[{\"title\":\"About\",\"url\":\"/company\"},{\"title\":\"Careers\",\"url\":\"/careers\"},{\"title\":\"Events\",\"url\":\"/events\"}],\"title\":\"Company\"}]},{\"_key\":\"22e8d8d2923d\",\"category\":\"News\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/news\"}],\"internalName\":\"anthropic.com Site Settings\",\"linkedInUsername\":\"anthropicresearch\",\"meta\":{\"_createdAt\":\"2023-11-20T21:56:31Z\",\"_id\":\"0f6290ad-6d21-407d-8deb-ce02815d1383\",\"_rev\":\"NyW74GU9ZzyWgAYa8qUSlF\",\"_type\":\"metadata\",\"_updatedAt\":\"2023-11-20T23:54:09Z\",\"robotsIndexable\":true,\"seoDescription\":\"Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.\",\"seoTitle\":\"Anthropic\",\"socialImage\":{\"_type\":\"image\",\"asset\":{\"_createdAt\":\"2025-05-23T14:14:18Z\",\"_id\":\"image-c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260-jpg\",\"_rev\":\"v1N2wBpLqoO2Q3HXueYiJi\",\"_type\":\"sanity.imageAsset\",\"_updatedAt\":\"2025-05-23T14:14:18Z\",\"assetId\":\"c07f638082c569e8ce1e89ae95ee6f332a98ec08\",\"extension\":\"jpg\",\"metadata\":{\"_type\":\"sanity.imageMetadata\",\"blurHash\":\"MASPU,%M?b%Ms:-;j[j[j[fQ~qj[9FayWB\",\"dimensions\":{\"_type\":\"sanity.imageDimensions\",\"aspectRatio\":1.9047619047619047,\"height\":1260,\"width\":2400},\"hasAlpha\":false,\"isOpaque\":true,\"lqip\":\"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAKABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAQFCP/EACAQAAEEAgEFAAAAAAAAAAAAAAABAgMEBRETEhQhIjH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDS96axCjO2r8yqvn21oiR3ci6TT8d0t395ELUGVAAB/9k=\",\"palette\":{\"_type\":\"sanity.imagePalette\",\"darkMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#444440\",\"foreground\":\"#fff\",\"population\":0.05,\"title\":\"#fff\"},\"darkVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#68681c\",\"foreground\":\"#fff\",\"population\":0,\"title\":\"#fff\"},\"dominant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#fcfcf4\",\"foreground\":\"#000\",\"population\":90.85,\"title\":\"#000\"},\"lightMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#bcbcb4\",\"foreground\":\"#000\",\"population\":0.03,\"title\":\"#fff\"},\"lightVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#fcfcf4\",\"foreground\":\"#000\",\"population\":90.85,\"title\":\"#000\"},\"muted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#7c7c74\",\"foreground\":\"#fff\",\"population\":0.02,\"title\":\"#fff\"},\"vibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#c8c836\",\"foreground\":\"#000\",\"population\":0,\"title\":\"#fff\"}}},\"mimeType\":\"image/jpeg\",\"originalFilename\":\"Anthropic-OG-image.jpg\",\"path\":\"images/4zrzovbb/website/c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260.jpg\",\"sha1hash\":\"c07f638082c569e8ce1e89ae95ee6f332a98ec08\",\"size\":132598,\"uploadId\":\"pxmJEaCvYm0cHoZTfnCcZYXxrWKBhHf0\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260.jpg\"},\"description\":\"Anthropic logo\"}},\"siteName\":\"Anthropic\",\"sitemapUrls\":[\"/\",\"/careers\",\"/company\",\"/events\",\"/events/aws-summit-dc\",\"/events/aws-summit-nyc\",\"/events/aws-summit-london\",\"/events/aws-summit-tokyo\",\"/events/claude-for-finance\",\"/events/google-cloud-next-2025\",\"/events/paris-builder-summit\",\"/events/seoul-builder-summit\",\"/learn\",\"/supported-countries\",\"/unsubscribe\"],\"twitterUsername\":\"AnthropicAI\",\"youtubeUsername\":\"anthropic-ai\"}}]\n"])</script><script nonce="">self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#141413\"}]]\n"])</script><script nonce="">self.__next_f.push([1,"14:[\"$\",\"$L16\",null,{\"siteSettings\":{\"_createdAt\":\"2023-11-03T16:49:36Z\",\"_id\":\"13c6e1a1-6f38-400c-ae18-89d73b6ba991\",\"_rev\":\"lKcsmHdx4q1IKN0yIVmh2Q\",\"_system\":{\"base\":{\"id\":\"13c6e1a1-6f38-400c-ae18-89d73b6ba991\",\"rev\":\"Jchwq2rEU1uoIdLXcpNNwP\"}},\"_type\":\"siteSettings\",\"_updatedAt\":\"2026-01-05T18:33:08Z\",\"announcement\":null,\"claudeCta\":{\"desktopCtas\":null,\"mobileCtas\":[{\"title\":\"Log in to Claude\",\"url\":\"https://claude.ai/login\"},{\"title\":\"Download app\",\"url\":\"https://claude.ai/download\"}],\"sections\":[{\"category\":\"Products\",\"links\":[{\"title\":\"Claude\",\"url\":\"https://claude.com/product/overview\"},{\"title\":\"Claude Code\",\"url\":\"https://claude.com/product/claude-code\"},{\"title\":\"Claude Developer Platform\",\"url\":\"https://claude.com/platform/api\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing\"},{\"title\":\"Contact sales\",\"url\":\"https://claude.com/contact-sales\"}]},{\"category\":\"Models\",\"links\":[{\"title\":\"Opus\",\"url\":\"/claude/opus\"},{\"title\":\"Sonnet\",\"url\":\"/claude/sonnet\"},{\"title\":\"Haiku\",\"url\":\"/claude/haiku\"}]},{\"category\":\"Log in\",\"links\":[{\"title\":\"Claude.ai\",\"url\":\"https://claude.ai\"},{\"title\":\"Claude Console\",\"url\":\"https://console.claude.com\"}]}],\"title\":\"Try Claude\",\"url\":\"https://claude.ai/\"},\"copyright\":\"© 2025 Anthropic PBC\",\"footerNavigation\":[{\"_key\":\"716b96b62292\",\"links\":[{\"title\":\"Claude\",\"url\":\"https://claude.com/product/overview\"},{\"title\":\"Claude Code\",\"url\":\"https://claude.com/product/claude-code\"},{\"title\":\"Claude in Chrome\",\"url\":\"https://claude.com/chrome\"},{\"title\":\"Claude in Excel\",\"url\":\"https://claude.com/claude-in-excel\"},{\"title\":\"Claude in Slack\",\"url\":\"https://claude.com/claude-in-slack\"},{\"title\":\"Skills\",\"url\":\"https://www.claude.com/skills\"},{\"title\":\"Max plan\",\"url\":\"https://claude.com/pricing/max\"},{\"title\":\"Team plan\",\"url\":\"https://claude.com/pricing/team\"},{\"title\":\"Enterprise plan\",\"url\":\"https://claude.com/pricing/enterprise\"},{\"title\":\"Download app\",\"url\":\"https://claude.ai/download\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing\"},{\"title\":\"Log in to Claude\",\"url\":\"https://claude.ai/\"}],\"title\":\"Products\"},{\"_key\":\"0229138ff25d\",\"links\":[{\"title\":\"Opus\",\"url\":\"https://www.anthropic.com/claude/opus\"},{\"title\":\"Sonnet\",\"url\":\"https://www.anthropic.com/claude/sonnet\"},{\"title\":\"Haiku\",\"url\":\"https://www.anthropic.com/claude/haiku\"}],\"title\":\"Models\"},{\"_key\":\"df2df9219e3abce95d6d83387e2d9bd6\",\"links\":[{\"title\":\"AI agents\",\"url\":\"https://claude.com/solutions/agents\"},{\"title\":\"Code modernization\",\"url\":\"https://claude.com/solutions/code-modernization\"},{\"title\":\"Coding\",\"url\":\"https://claude.com/solutions/coding\"},{\"title\":\"Customer support\",\"url\":\"https://claude.com/solutions/customer-support\"},{\"title\":\"Education\",\"url\":\"https://claude.com/solutions/education\"},{\"title\":\"Financial services\",\"url\":\"https://claude.com/solutions/financial-services\"},{\"title\":\"Government\",\"url\":\"https://claude.com/solutions/government\"},{\"title\":\"Life sciences\",\"url\":\"https://claude.com/solutions/life-sciences\"},{\"title\":\"Nonprofits\",\"url\":\"https://claude.com/solutions/nonprofits\"}],\"title\":\"Solutions\"},{\"_key\":\"f286ca01fc7aaabd131f347b711a971b\",\"links\":[{\"title\":\"Overview\",\"url\":\"https://claude.com/platform/api\"},{\"title\":\"Developer docs\",\"url\":\"https://platform.claude.com/docs\"},{\"title\":\"Pricing\",\"url\":\"https://claude.com/pricing#api\"},{\"title\":\"Regional Compliance\",\"url\":\"https://claude.com/regional-compliance\"},{\"title\":\"Amazon Bedrock\",\"url\":\"https://claude.com/partners/amazon-bedrock\"},{\"title\":\"Google Clouds Vertex AI\",\"url\":\"https://claude.com/partners/google-cloud-vertex-ai\"},{\"title\":\"Console login\",\"url\":\"http://console.anthropic.com/\"}],\"title\":\"Claude Developer Platform\"},{\"_key\":\"4b255e67f68c270e0072c7564e084e24\",\"links\":[{\"title\":\"Blog\",\"url\":\"https://claude.com/blog\"},{\"title\":\"Claude partner network\",\"url\":\"https://claude.com/partners\"},{\"title\":\"Connectors\",\"url\":\"https://claude.com/connectors\"},{\"title\":\"Courses\",\"url\":\"/learn\"},{\"title\":\"Customer stories\",\"url\":\"https://claude.com/customers\"},{\"title\":\"Engineering at Anthropic\",\"url\":\"/engineering\"},{\"title\":\"Events\",\"url\":\"/events\"},{\"title\":\"Powered by Claude\",\"url\":\"https://claude.com/partners/powered-by-claude\"},{\"title\":\"Service partners\",\"url\":\"https://claude.com/partners/services\"},{\"title\":\"Startups program\",\"url\":\"https://claude.com/programs/startups\"},{\"title\":\"Tutorials\",\"url\":\"https://claude.com/resources/tutorials\"},{\"title\":\"Use cases\",\"url\":\"https://claude.com/resources/use-cases\"}],\"title\":\"Learn\"},{\"_key\":\"4f2729951e15b0b870897e0444f5f3e1\",\"links\":[{\"title\":\"Anthropic\",\"url\":\"/company\"},{\"title\":\"Careers\",\"url\":\"/careers\"},{\"title\":\"Economic Futures\",\"url\":\"/economic-index\"},{\"title\":\"Research\",\"url\":\"/research\"},{\"title\":\"News\",\"url\":\"/news\"},{\"title\":\"Responsible Scaling Policy\",\"url\":\"https://www.anthropic.com/news/announcing-our-updated-responsible-scaling-policy\"},{\"title\":\"Security and compliance\",\"url\":\"https://trust.anthropic.com/\"},{\"title\":\"Transparency\",\"url\":\"/transparency\"}],\"title\":\"Company\"},{\"_key\":\"a886dd1838335844d635f2857b25d66a\",\"links\":[{\"title\":\"Availability\",\"url\":\"https://www.anthropic.com/supported-countries\"},{\"title\":\"Status\",\"url\":\"https://status.anthropic.com/\"},{\"title\":\"Support center\",\"url\":\"https://support.claude.com/en/\"}],\"title\":\"Help and security\"},{\"_key\":\"3c3b033c11fa832a35d43b87d55a5364\",\"links\":[{\"title\":\"Privacy choices\",\"url\":\"#\"},{\"title\":\"Privacy policy\",\"url\":\"https://www.anthropic.com/legal/privacy\"},{\"title\":\"Responsible disclosure policy\",\"url\":\"https://www.anthropic.com/responsible-disclosure-policy\"},{\"title\":\"Terms of service: Commercial\",\"url\":\"https://www.anthropic.com/legal/commercial-terms\"},{\"title\":\"Terms of service: Consumer\",\"url\":\"https://www.anthropic.com/legal/consumer-terms\"},{\"title\":\"Usage policy\",\"url\":\"https://www.anthropic.com/legal/aup\"}],\"title\":\"Terms and policies\"}],\"headerNavigation\":[{\"_key\":\"a340f9d4b859\",\"category\":\"Research\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/research\"},{\"_key\":\"a483c7dfd38a\",\"category\":\"Economic Futures\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/economic-futures\"},{\"_key\":\"82c471bd311d\",\"category\":\"Commitments\",\"displayType\":\"sections\",\"sections\":[{\"_key\":\"675871636e4d\",\"links\":[{\"title\":\" Transparency\",\"url\":\"/transparency\"},{\"title\":\"Responsible Scaling Policy\",\"url\":\"/news/announcing-our-updated-responsible-scaling-policy\"}],\"title\":\"Initiatives\"},{\"_key\":\"16af50a6e2dd\",\"links\":[{\"title\":\"Security and compliance\",\"url\":\"https://trust.anthropic.com/\"}],\"title\":\"Trust center\"}]},{\"_key\":\"861a11ed9931\",\"category\":\"Learn\",\"displayType\":\"sections\",\"sections\":[{\"_key\":\"9f9f720a8793\",\"links\":[{\"title\":\"Anthropic Academy\",\"url\":\"/learn\"},{\"title\":\"Tutorials\",\"url\":\"https://claude.com/resources/tutorials\"},{\"title\":\"Use cases\",\"url\":\"https://claude.com/resources/use-cases\"},{\"title\":\"Engineering at Anthropic\",\"url\":\"/engineering\"},{\"title\":\"Developer docs\",\"url\":\"https://docs.claude.com\"}],\"title\":\"Learn\"},{\"_key\":\"6bd061c46b10\",\"links\":[{\"title\":\"About\",\"url\":\"/company\"},{\"title\":\"Careers\",\"url\":\"/careers\"},{\"title\":\"Events\",\"url\":\"/events\"}],\"title\":\"Company\"}]},{\"_key\":\"22e8d8d2923d\",\"category\":\"News\",\"displayType\":\"singleLink\",\"sections\":null,\"url\":\"/news\"}],\"internalName\":\"anthropic.com Site Settings\",\"linkedInUsername\":\"anthropicresearch\",\"meta\":{\"_createdAt\":\"2023-11-20T21:56:31Z\",\"_id\":\"0f6290ad-6d21-407d-8deb-ce02815d1383\",\"_rev\":\"NyW74GU9ZzyWgAYa8qUSlF\",\"_type\":\"metadata\",\"_updatedAt\":\"2023-11-20T23:54:09Z\",\"robotsIndexable\":true,\"seoDescription\":\"Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.\",\"seoTitle\":\"Anthropic\",\"socialImage\":{\"_type\":\"image\",\"asset\":{\"_createdAt\":\"2025-05-23T14:14:18Z\",\"_id\":\"image-c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260-jpg\",\"_rev\":\"v1N2wBpLqoO2Q3HXueYiJi\",\"_type\":\"sanity.imageAsset\",\"_updatedAt\":\"2025-05-23T14:14:18Z\",\"assetId\":\"c07f638082c569e8ce1e89ae95ee6f332a98ec08\",\"extension\":\"jpg\",\"metadata\":{\"_type\":\"sanity.imageMetadata\",\"blurHash\":\"MASPU,%M?b%Ms:-;j[j[j[fQ~qj[9FayWB\",\"dimensions\":{\"_type\":\"sanity.imageDimensions\",\"aspectRatio\":1.9047619047619047,\"height\":1260,\"width\":2400},\"hasAlpha\":false,\"isOpaque\":true,\"lqip\":\"data:image/jpeg;base64,/9j/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAKABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAQFCP/EACAQAAEEAgEFAAAAAAAAAAAAAAABAgMEBRETEhQhIjH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwDS96axCjO2r8yqvn21oiR3ci6TT8d0t395ELUGVAAB/9k=\",\"palette\":{\"_type\":\"sanity.imagePalette\",\"darkMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#444440\",\"foreground\":\"#fff\",\"population\":0.05,\"title\":\"#fff\"},\"darkVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#68681c\",\"foreground\":\"#fff\",\"population\":0,\"title\":\"#fff\"},\"dominant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#fcfcf4\",\"foreground\":\"#000\",\"population\":90.85,\"title\":\"#000\"},\"lightMuted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#bcbcb4\",\"foreground\":\"#000\",\"population\":0.03,\"title\":\"#fff\"},\"lightVibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#fcfcf4\",\"foreground\":\"#000\",\"population\":90.85,\"title\":\"#000\"},\"muted\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#7c7c74\",\"foreground\":\"#fff\",\"population\":0.02,\"title\":\"#fff\"},\"vibrant\":{\"_type\":\"sanity.imagePaletteSwatch\",\"background\":\"#c8c836\",\"foreground\":\"#000\",\"population\":0,\"title\":\"#fff\"}}},\"mimeType\":\"image/jpeg\",\"originalFilename\":\"Anthropic-OG-image.jpg\",\"path\":\"images/4zrzovbb/website/c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260.jpg\",\"sha1hash\":\"c07f638082c569e8ce1e89ae95ee6f332a98ec08\",\"size\":132598,\"uploadId\":\"pxmJEaCvYm0cHoZTfnCcZYXxrWKBhHf0\",\"url\":\"https://cdn.sanity.io/images/4zrzovbb/website/c07f638082c569e8ce1e89ae95ee6f332a98ec08-2400x1260.jpg\"},\"description\":\"Anthropic logo\"}},\"siteName\":\"Anthropic\",\"sitemapUrls\":[\"/\",\"/careers\",\"/company\",\"/events\",\"/events/aws-summit-dc\",\"/events/aws-summit-nyc\",\"/events/aws-summit-london\",\"/events/aws-summit-tokyo\",\"/events/claude-for-finance\",\"/events/google-cloud-next-2025\",\"/events/paris-builder-summit\",\"/events/seoul-builder-summit\",\"/learn\",\"/supported-countries\",\"/unsubscribe\"],\"twitterUsername\":\"AnthropicAI\",\"youtubeUsername\":\"anthropic-ai\",\"hideFooter\":true},\"page\":{\"_type\":\"page\",\"_id\":\"not-found\",\"_rev\":\"\",\"_createdAt\":\"\",\"_updatedAt\":\"\",\"title\":\"Not Found\",\"slug\":{\"_type\":\"slug\",\"current\":\"not-found\"},\"meta\":{},\"sections\":[]},\"children\":\"$L17\"}]\n"])</script><script nonce="">self.__next_f.push([1,"17:[\"$\",\"$L18\",null,{}]\n"])</script><script nonce="">self.__next_f.push([1,"10:[[\"$\",\"title\",\"0\",{\"children\":\"Claude Code Best Practices \\\\ Anthropic\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. \"}],[\"$\",\"meta\",\"2\",{\"name\":\"msapplication-TileColor\",\"content\":\"141413\"}],[\"$\",\"meta\",\"3\",{\"name\":\"msapplication-config\",\"content\":\"/browserconfig.xml\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Claude Code Best Practices\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. \"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:image\",\"content\":\"https://cdn.sanity.io/images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:image:alt\",\"content\":\"Anthropic logo\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"9\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"10\",{\"name\":\"twitter:site\",\"content\":\"@AnthropicAI\"}],[\"$\",\"meta\",\"11\",{\"name\":\"twitter:creator\",\"content\":\"@AnthropicAI\"}],[\"$\",\"meta\",\"12\",{\"name\":\"twitter:title\",\"content\":\"Claude Code Best Practices\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:description\",\"content\":\"A blog post covering tips and tricks that have proven effective for using Claude Code across various codebases, languages, and environments. \"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:image\",\"content\":\"https://cdn.sanity.io/images/4zrzovbb/website/19121280eda2955bdd2d0b12c4f61b1a89b6098f-2400x1260.png\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:image:alt\",\"content\":\"Anthropic logo\"}],[\"$\",\"link\",\"16\",{\"rel\":\"shortcut icon\",\"href\":\"/favicon.ico\"}],[\"$\",\"link\",\"17\",{\"rel\":\"icon\",\"href\":\"/images/icons/favicon-32x32.png\"}],[\"$\",\"link\",\"18\",{\"rel\":\"apple-touch-icon\",\"href\":\"/images/icons/apple-touch-icon.png\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/images/icons/apple-touch-icon.png\",\"sizes\":\"180x180\"}],[\"$\",\"link\",\"20\",{\"rel\":\"mask-icon\",\"href\":\"/images/icons/safari-pinned-tab.svg\",\"color\":\"141413\"}],[\"$\",\"$L19\",\"21\",{}]]\n"])</script><script nonce="">self.__next_f.push([1,"c:null\n"])</script><next-route-announcer style="position: absolute;"></next-route-announcer><script id="gtm-init" data-nscript="afterInteractive">
window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('consent', 'default', {"ad_personalization":"granted","ad_user_data":"granted","ad_storage":"granted","analytics_storage":"granted","functionality_storage":"granted","personalization_storage":"granted","security_storage":"granted"});
gtag('js', new Date());
var firstTag = document.getElementsByTagName('script')[0]
scriptTag = document.createElement('script');
scriptTag.async = true;
scriptTag.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-KWW2N9TQ';
firstTag.parentNode.insertBefore(scriptTag ,firstTag);
</script></body></html>