<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Claude Code Wiki</title><link>http://www.markalston.net/claude-code-wiki/</link><description>Recent content on Claude Code Wiki</description><generator>Hugo</generator><language>en-us</language><atom:link href="http://www.markalston.net/claude-code-wiki/index.xml" rel="self" type="application/rss+xml"/><item><title>The 'AI Will Replace Programmers' Narrative</title><link>http://www.markalston.net/claude-code-wiki/perspectives/ai-replacing-programmers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/perspectives/ai-replacing-programmers/</guid><description>&lt;h1 id="the-ai-will-replace-programmers-narrative"&gt;The &amp;ldquo;AI Will Replace Programmers&amp;rdquo; Narrative&lt;a class="anchor" href="#the-ai-will-replace-programmers-narrative"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;What&amp;rsquo;s actually happening vs. what people think is happening, based on conversations with colleagues, observations from local meetups, and the steady stream of hot takes online.&lt;/p&gt;
&lt;h2 id="the-claim"&gt;The Claim&lt;a class="anchor" href="#the-claim"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Non-technical people are building personal tools with AI and concluding:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We don&amp;rsquo;t need programmers anymore&lt;/li&gt;
&lt;li&gt;Anyone can vibe-code an application&lt;/li&gt;
&lt;li&gt;SaaS is dead because why pay for something you can build yourself&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="whats-actually-true"&gt;What&amp;rsquo;s Actually True&lt;a class="anchor" href="#whats-actually-true"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The barrier to building personal tools has genuinely collapsed. Someone who couldn&amp;rsquo;t code two years ago can now build something that solves their specific problem. That&amp;rsquo;s real and worth taking seriously.&lt;/p&gt;</description></item><item><title>Amazon Bedrock Fundamentals</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/bedrock-fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/bedrock-fundamentals/</guid><description>&lt;h1 id="amazon-bedrock-fundamentals"&gt;Amazon Bedrock Fundamentals&lt;a class="anchor" href="#amazon-bedrock-fundamentals"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-is-amazon-bedrock"&gt;What Is Amazon Bedrock?&lt;a class="anchor" href="#what-is-amazon-bedrock"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bedrock is AWS&amp;rsquo;s managed API gateway for foundation models. Instead of going directly to Anthropic for model access, Bedrock gives you a single AWS-native service that brokers access to foundation models through the same IAM, billing, networking, and compliance infrastructure you already use for everything else in AWS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analogy for Cloud Foundry practitioners:&lt;/strong&gt; If Cloud Foundry abstracts away infrastructure for app developers, Bedrock does the same for model inference. Developers don&amp;rsquo;t think about where Claude is running &amp;ndash; they just call the API. The platform team controls the networking, access, cost, and compliance layer underneath.&lt;/p&gt;</description></item><item><title>Audit and Compliance -- Three-Layer Architecture</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/audit-compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/audit-compliance/</guid><description>&lt;h1 id="audit-and-compliance--three-layer-architecture"&gt;Audit and Compliance &amp;ndash; Three-Layer Architecture&lt;a class="anchor" href="#audit-and-compliance--three-layer-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="layer-1-aws-cloudtrail"&gt;Layer 1: AWS CloudTrail&lt;a class="anchor" href="#layer-1-aws-cloudtrail"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Captures every Bedrock &lt;code&gt;InvokeModel&lt;/code&gt; call with IAM principal attribution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What it records:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Timestamp of every API call&lt;/li&gt;
&lt;li&gt;IAM principal (which user/role made the call)&lt;/li&gt;
&lt;li&gt;Model ID invoked&lt;/li&gt;
&lt;li&gt;Source IP address&lt;/li&gt;
&lt;li&gt;Request parameters (not prompt content by default)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Configuration:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enable CloudTrail in the dedicated Bedrock AWS account&lt;/li&gt;
&lt;li&gt;Send logs to a centralized S3 bucket with immutable retention policy&lt;/li&gt;
&lt;li&gt;Set up CloudWatch Alarms for unusual patterns (e.g., API calls outside business hours, unexpected model IDs)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitation:&lt;/strong&gt; CloudTrail records that a call was made but not what was asked or returned. It&amp;rsquo;s an access log, not a content log.&lt;/p&gt;</description></item><item><title>Build-Out Timeline -- 12-Week Implementation</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/build-out-timeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/build-out-timeline/</guid><description>&lt;h1 id="build-out-timeline--12-week-implementation"&gt;Build-Out Timeline &amp;ndash; 12-Week Implementation&lt;a class="anchor" href="#build-out-timeline--12-week-implementation"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="week-by-week-schedule"&gt;Week-by-Week Schedule&lt;a class="anchor" href="#week-by-week-schedule"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="weeks-12-discovery-and-infrastructure-design"&gt;Weeks 1–2: Discovery and Infrastructure Design&lt;a class="anchor" href="#weeks-12-discovery-and-infrastructure-design"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure Workstream&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CISO alignment meeting: define &amp;ldquo;no code leaves network&amp;rdquo; (Level 1, 2, or 3)&lt;/li&gt;
&lt;li&gt;Design AWS account structure for Bedrock isolation&lt;/li&gt;
&lt;li&gt;Design VPC endpoint + PrivateLink architecture&lt;/li&gt;
&lt;li&gt;Evaluate LLM gateway options (LiteLLM vs. Kong vs. Portkey)&lt;/li&gt;
&lt;li&gt;Begin Terraform for VPC endpoint and networking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Platform Engineering Workstream&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inventory top 5 codebases by developer count&lt;/li&gt;
&lt;li&gt;Interview 2–3 senior engineers per codebase: &amp;ldquo;What do you always tell new developers? What patterns do people consistently get wrong?&amp;rdquo;&lt;/li&gt;
&lt;li&gt;Identify Cohort 1 candidates (25 power users)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Change Management Workstream&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Phased Rollout -- Cohort Strategy</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/04-phase-2-phased-rollout/cohort-strategy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/04-phase-2-phased-rollout/cohort-strategy/</guid><description>&lt;h1 id="phased-rollout--cohort-strategy"&gt;Phased Rollout &amp;ndash; Cohort Strategy&lt;a class="anchor" href="#phased-rollout--cohort-strategy"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="principle"&gt;Principle&lt;a class="anchor" href="#principle"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Don&amp;rsquo;t light up 500 developers at once. Each cohort discovers different classes of issues and builds institutional knowledge for the next cohort.&lt;/p&gt;
&lt;h2 id="cohort-1-power-users-25-developers-weeks-56"&gt;Cohort 1: Power Users (25 developers, Weeks 5–6)&lt;a class="anchor" href="#cohort-1-power-users-25-developers-weeks-56"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="selection-criteria"&gt;Selection Criteria&lt;a class="anchor" href="#selection-criteria"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Hand-picked across 3–4 teams representing different technology stacks&lt;/li&gt;
&lt;li&gt;Mix of senior engineers (who know the patterns) and enthusiastic mid-levels (who&amp;rsquo;ll push boundaries)&lt;/li&gt;
&lt;li&gt;At least one developer per major codebase&lt;/li&gt;
&lt;li&gt;Include developers who are already CLI/terminal-native&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="objectives"&gt;Objectives&lt;a class="anchor" href="#objectives"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Validate infrastructure end-to-end (Bedrock routing, gateway, PrivateLink)&lt;/li&gt;
&lt;li&gt;Test managed-settings.json enforcement &amp;ndash; do the deny rules work? Does bypass mode stay disabled?&lt;/li&gt;
&lt;li&gt;Write the first project CLAUDE.md and agent_docs/ files for their repos&lt;/li&gt;
&lt;li&gt;Co-create the initial 5–8 org-wide skills based on real workflows&lt;/li&gt;
&lt;li&gt;Become internal champions who can support Cohort 2&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="expected-discoveries"&gt;Expected Discoveries&lt;a class="anchor" href="#expected-discoveries"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Bedrock inference profiles required for on-demand usage (common first gotcha)&lt;/li&gt;
&lt;li&gt;Prompt caching behavior differs from direct API&lt;/li&gt;
&lt;li&gt;Some model versions lag behind on Bedrock&lt;/li&gt;
&lt;li&gt;Specific CLAUDE.md instructions that Claude follows well vs. ignores&lt;/li&gt;
&lt;li&gt;MCP servers that are most valuable for the org&amp;rsquo;s toolchain&lt;/li&gt;
&lt;li&gt;Skills that need more or fewer steps than initially designed&lt;/li&gt;
&lt;li&gt;Edge cases in deny rules (false positives blocking legitimate work)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="success-metrics"&gt;Success Metrics&lt;a class="anchor" href="#success-metrics"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;All 25 developers able to use Claude Code through the enterprise infrastructure&lt;/li&gt;
&lt;li&gt;At least 3 project CLAUDE.md files written and reviewed&lt;/li&gt;
&lt;li&gt;At least 5 org-wide skills tested and iterated&lt;/li&gt;
&lt;li&gt;Zero security policy violations (deny rules holding)&lt;/li&gt;
&lt;li&gt;Qualitative feedback: &amp;ldquo;This makes me faster&amp;rdquo; vs. &amp;ldquo;This gets in the way&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="platform-team-commitment"&gt;Platform Team Commitment&lt;a class="anchor" href="#platform-team-commitment"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Daily Slack channel for issues during first week&lt;/li&gt;
&lt;li&gt;30-minute stand-up twice per week with Cohort 1&lt;/li&gt;
&lt;li&gt;Same-day turnaround on configuration issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cohort-2-full-teams-100-developers-weeks-79"&gt;Cohort 2: Full Teams (100 developers, Weeks 7–9)&lt;a class="anchor" href="#cohort-2-full-teams-100-developers-weeks-79"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="selection-criteria-1"&gt;Selection Criteria&lt;a class="anchor" href="#selection-criteria-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Expand to complete teams (beyond individual developers)&lt;/li&gt;
&lt;li&gt;Include at least one team that&amp;rsquo;s skeptical &amp;ndash; they&amp;rsquo;ll surface real objections&lt;/li&gt;
&lt;li&gt;Include the team with the most complex codebase&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="objectives-1"&gt;Objectives&lt;a class="anchor" href="#objectives-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stress-test the LLM gateway&amp;rsquo;s rate limiting and budget model&lt;/li&gt;
&lt;li&gt;Validate that team-level CLAUDE.md and skills work across a full team&lt;/li&gt;
&lt;li&gt;Discover the actual cost model (tokens per developer per day)&lt;/li&gt;
&lt;li&gt;Instrument OpenTelemetry metrics&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="new-infrastructure-requirements"&gt;New Infrastructure Requirements&lt;a class="anchor" href="#new-infrastructure-requirements"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Gateway rate limiting tuned based on Cohort 1 usage patterns&lt;/li&gt;
&lt;li&gt;Per-team token budgets configured&lt;/li&gt;
&lt;li&gt;CloudWatch dashboards showing per-user token consumption, latency percentiles, error rates&lt;/li&gt;
&lt;li&gt;Cost allocation tags in AWS for team-level billing&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="expected-discoveries-1"&gt;Expected Discoveries&lt;a class="anchor" href="#expected-discoveries-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Real-world token consumption rates (expect 50K–200K tokens/developer/day depending on usage intensity)&lt;/li&gt;
&lt;li&gt;Teams that use Claude Code very differently (some use it for code gen, others for review, others for documentation)&lt;/li&gt;
&lt;li&gt;Teams that need different model access (Opus for architecture work, Sonnet for routine coding)&lt;/li&gt;
&lt;li&gt;Edge cases in project CLAUDE.md that only surface with diverse usage patterns&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="success-metrics-1"&gt;Success Metrics&lt;a class="anchor" href="#success-metrics-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Gateway handles 100 concurrent developers without latency spikes&lt;/li&gt;
&lt;li&gt;Per-team budgets prevent runaway costs&lt;/li&gt;
&lt;li&gt;At least 80% of developers reporting increased productivity&lt;/li&gt;
&lt;li&gt;Zero infrastructure outages&lt;/li&gt;
&lt;li&gt;Cost model validated and predictable&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="platform-team-commitment-1"&gt;Platform Team Commitment&lt;a class="anchor" href="#platform-team-commitment-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Slack channel continues, monitored 8am–6pm&lt;/li&gt;
&lt;li&gt;Weekly office hours for questions&lt;/li&gt;
&lt;li&gt;Bi-weekly feedback surveys&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="cohort-3-full-organization-375-developers-weeks-1012"&gt;Cohort 3: Full Organization (375 developers, Weeks 10–12)&lt;a class="anchor" href="#cohort-3-full-organization-375-developers-weeks-1012"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="prerequisites-must-be-true-before-launching"&gt;Prerequisites (Must Be True Before Launching)&lt;a class="anchor" href="#prerequisites-must-be-true-before-launching"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Gateway proven at 100-developer scale&lt;/li&gt;
&lt;li&gt;Managed-settings.json deployed to all developer machines via Mobile Device Management (MDM)&lt;/li&gt;
&lt;li&gt;Internal documentation written by Cohort 1 champions&lt;/li&gt;
&lt;li&gt;Onboarding guide tested with Cohort 2 (developers who weren&amp;rsquo;t hand-picked)&lt;/li&gt;
&lt;li&gt;Cost projections validated and approved by finance&lt;/li&gt;
&lt;li&gt;CISO sign-off on the security architecture still current&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="rollout-approach"&gt;Rollout Approach&lt;a class="anchor" href="#rollout-approach"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Department-by-department, not all-at-once&lt;/li&gt;
&lt;li&gt;Each department gets a 15-minute onboarding session led by a Cohort 1/2 champion&lt;/li&gt;
&lt;li&gt;Self-service documentation available for async onboarding&lt;/li&gt;
&lt;li&gt;Platform team monitors gateway metrics for capacity issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="expected-discoveries-2"&gt;Expected Discoveries&lt;a class="anchor" href="#expected-discoveries-2"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Long-tail support issues from developers with non-standard setups&lt;/li&gt;
&lt;li&gt;Teams that need custom skills not anticipated during Cohort 1/2&lt;/li&gt;
&lt;li&gt;Organizational patterns in how different teams use Claude Code&lt;/li&gt;
&lt;li&gt;Real productivity data at scale for leadership reporting&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="success-metrics-2"&gt;Success Metrics&lt;a class="anchor" href="#success-metrics-2"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;90%+ of developers have used Claude Code at least once within 2 weeks of access&lt;/li&gt;
&lt;li&gt;Weekly active usage rate &amp;gt; 60% after first month&lt;/li&gt;
&lt;li&gt;Support ticket volume declining (not growing) after first 2 weeks&lt;/li&gt;
&lt;li&gt;Total cost within 10% of projection&lt;/li&gt;
&lt;li&gt;No security incidents&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="rollback-plan"&gt;Rollback Plan&lt;a class="anchor" href="#rollback-plan"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="principle-1"&gt;Principle&lt;a class="anchor" href="#principle-1"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Rollback is cohort-level, not all-or-nothing. If a cohort encounters serious issues, pause that cohort while earlier cohorts continue operating.&lt;/p&gt;</description></item><item><title>Developer Path</title><link>http://www.markalston.net/claude-code-wiki/training/developer-path/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/training/developer-path/</guid><description>&lt;h1 id="developer-path"&gt;Developer Path&lt;a class="anchor" href="#developer-path"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A structured progression from basic Claude Code usage to advanced workflows. Each module builds on the previous one &amp;ndash; work through them in order.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Module&lt;/th&gt;
 &lt;th&gt;Focus&lt;/th&gt;
 &lt;th&gt;Prerequisites&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-1-prompting-foundations"&gt;1. Prompting Foundations&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Writing requests that produce correct code&lt;/td&gt;
 &lt;td&gt;None&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-2-the-verification-loop"&gt;2. The Verification Loop&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Building feedback into every task&lt;/td&gt;
 &lt;td&gt;Module 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-3-test-driven-development"&gt;3. Test-Driven Development&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Using tests as requirements for Claude&lt;/td&gt;
 &lt;td&gt;Module 2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-4-debugging-with-claude"&gt;4. Debugging with Claude&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Systematic troubleshooting when things break&lt;/td&gt;
 &lt;td&gt;Modules 2-3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-5-context-management"&gt;5. Context Management&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Understanding what Claude sees and remembers&lt;/td&gt;
 &lt;td&gt;Modules 1-4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-6-extending-claude-code"&gt;6. Extending Claude Code&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Subagents, skills, MCP servers, and custom tooling&lt;/td&gt;
 &lt;td&gt;Module 5&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="exercise-materials"&gt;Exercise Materials&lt;a class="anchor" href="#exercise-materials"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Clone the exercise repo for hands-on practice alongside each module:&lt;/p&gt;</description></item><item><title>Effective Prompting: Getting Better Results from Claude Code</title><link>http://www.markalston.net/claude-code-wiki/guides/effective-prompting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/effective-prompting/</guid><description>&lt;h1 id="effective-prompting-getting-better-results-from-claude-code"&gt;Effective Prompting: Getting Better Results from Claude Code&lt;a class="anchor" href="#effective-prompting-getting-better-results-from-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The quality of your results from Claude Code depends heavily on how you structure your requests. Claude Code&amp;rsquo;s latest models (Opus 4.6, Sonnet 4.5) follow instructions precisely &amp;ndash; which means vague prompts get vague results and specific prompts get specific results. Understanding a few key patterns dramatically improves outcomes.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Principle&lt;/th&gt;
 &lt;th&gt;Impact&lt;/th&gt;
 &lt;th&gt;Effort&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Be explicit, not vague&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Biggest single improvement in result quality&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Action over suggestion&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Gets implementation instead of recommendations&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Provide context (&amp;ldquo;why&amp;rdquo;)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Helps Claude generalize and make good choices&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Reference specific code&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Eliminates guesswork and speeds up responses&lt;/td&gt;
 &lt;td&gt;Low&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Decompose large tasks&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Reduces errors, enables course correction&lt;/td&gt;
 &lt;td&gt;Medium&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Use CLAUDE.md well&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Persistent rules applied to every message&lt;/td&gt;
 &lt;td&gt;One-time&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Manage multi-window work&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Enables tasks that span beyond a single session&lt;/td&gt;
 &lt;td&gt;Medium&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#effective-prompting-getting-better-results-from-claude-code"&gt;Effective Prompting: Getting Better Results from Claude Code&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-claude-code-processes-your-messages"&gt;How Claude Code Processes Your Messages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-fundamentals"&gt;The Fundamentals&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#be-explicit-not-vague"&gt;Be Explicit, Not Vague&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#action-vs-suggestion"&gt;Action vs Suggestion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#provide-context-and-motivation"&gt;Provide Context and Motivation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#reference-specific-code"&gt;Reference Specific Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#task-decomposition"&gt;Task Decomposition&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#when-to-decompose"&gt;When to Decompose&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-iterative-loop"&gt;The Iterative Loop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#plan-mode-for-complex-work"&gt;Plan Mode for Complex Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#claudemd-persistent-prompting"&gt;CLAUDE.md: Persistent Prompting&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-goes-in-claudemd"&gt;What Goes in CLAUDE.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-doesnt-belong-in-claudemd"&gt;What Doesn&amp;rsquo;t Belong in CLAUDE.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#keeping-it-concise"&gt;Keeping It Concise&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#working-across-context-windows"&gt;Working Across Context Windows&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#tests-first-strategy"&gt;Tests-First Strategy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#state-files-and-progress-notes"&gt;State Files and Progress Notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#starting-fresh-vs-compaction"&gt;Starting Fresh vs Compaction&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#directing-tool-usage"&gt;Directing Tool Usage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subagent-delegation"&gt;Subagent Delegation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#parallel-operations"&gt;Parallel Operations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-claude-over-explores"&gt;When Claude Over-Explores&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#common-anti-patterns"&gt;Common Anti-Patterns&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-vague-request"&gt;The Vague Request&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#over-constraining"&gt;Over-Constraining&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fighting-the-model"&gt;Fighting the Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#not-reading-output"&gt;Not Reading Output&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-kitchen-sink-prompt"&gt;The Kitchen-Sink Prompt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#best-practices-summary"&gt;Best Practices Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-claude-code-processes-your-messages"&gt;How Claude Code Processes Your Messages&lt;a class="anchor" href="#how-claude-code-processes-your-messages"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every message you type becomes part of an API call that includes the full system prompt, entire conversation history, and your new message. Claude reads all of this &amp;ndash; the system prompt instructions, your CLAUDE.md rules, the skill catalog, every previous turn &amp;ndash; before generating a response.&lt;/p&gt;</description></item><item><title>Executive Summary</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/00-overview/executive-summary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/00-overview/executive-summary/</guid><description>&lt;h1 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-engagement"&gt;The Engagement&lt;a class="anchor" href="#the-engagement"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A 500-developer engineering organization with strict security requirements needs to adopt Claude Code as an enterprise-wide AI-assisted development tool. Their core constraint: &lt;strong&gt;no code can leave their network.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This document describes a 12-week implementation across three workstreams:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure (30% effort):&lt;/strong&gt; Cloud LLM service (AWS Bedrock / GCP Vertex AI / Azure Foundry) + private networking + LLM Gateway&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Platform Engineering (40% effort):&lt;/strong&gt; Managed configurations, CLAUDE.md architecture, skills library, developer environments&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change Management (30% effort):&lt;/strong&gt; Phased rollout, champion program, productivity measurement&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="the-architecture-in-one-paragraph"&gt;The Architecture in One Paragraph&lt;a class="anchor" href="#the-architecture-in-one-paragraph"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Developer workstations connect through the corporate network to an internal LLM gateway (LiteLLM or Kong AI Gateway), which routes requests through a VPC endpoint via AWS PrivateLink to Amazon Bedrock. Bedrock hosts the Claude models within AWS&amp;rsquo;s data boundary. No traffic touches the public internet. No code is retained or used for training. The LLM gateway provides per-user token budgets, centralized authentication, and audit logging. Managed settings enforce organization-wide security policies that individual developers cannot override.&lt;/p&gt;</description></item><item><title>Subagents, Skills, and MCP Servers: Architecture Deep Dive</title><link>http://www.markalston.net/claude-code-wiki/extending/extension-mechanisms/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/extending/extension-mechanisms/</guid><description>&lt;h1 id="subagents-skills-and-mcp-servers-architecture-deep-dive"&gt;Subagents, Skills, and MCP Servers: Architecture Deep Dive&lt;a class="anchor" href="#subagents-skills-and-mcp-servers-architecture-deep-dive"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code extends capabilities through three distinct mechanisms with different isolation models, memory characteristics, and context window implications:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Aspect&lt;/th&gt;
 &lt;th&gt;Subagents&lt;/th&gt;
 &lt;th&gt;Skills&lt;/th&gt;
 &lt;th&gt;MCP Servers&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Task delegation with reasoning&lt;/td&gt;
 &lt;td&gt;Knowledge/workflow injection&lt;/td&gt;
 &lt;td&gt;External tool/API access&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Reasoning&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Full AI (isolated instance)&lt;/td&gt;
 &lt;td&gt;Inherits main instance&lt;/td&gt;
 &lt;td&gt;None (deterministic)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Memory&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Session-based, resumable&lt;/td&gt;
 &lt;td&gt;Shared with main&lt;/td&gt;
 &lt;td&gt;Stateless per call&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Context&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Own isolated window&lt;/td&gt;
 &lt;td&gt;Injected into main&lt;/td&gt;
 &lt;td&gt;Minimal overhead&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Invocation&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Explicit (Task tool)&lt;/td&gt;
 &lt;td&gt;Auto-discovered&lt;/td&gt;
 &lt;td&gt;Explicit tool calls&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Fresh but resumable&lt;/td&gt;
 &lt;td&gt;Part of main conversation&lt;/td&gt;
 &lt;td&gt;Truly stateless&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subagents-skills-and-mcp-servers-architecture-deep-dive"&gt;Subagents, Skills, and MCP Servers: Architecture Deep Dive&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagents-task-tool"&gt;Subagents (Task Tool)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-they-are"&gt;What They Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#key-characteristics"&gt;Key Characteristics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-use-subagents"&gt;When to Use Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-when-to-create-a-custom-subagent"&gt;Example: When to Create a Custom Subagent&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#example-1-domain-specific-code-reviewer"&gt;Example 1: Domain-Specific Code Reviewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-2-legacy-system-migration-assistant"&gt;Example 2: Legacy System Migration Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-3-incident-response-debugger"&gt;Example 3: Incident Response Debugger&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-not-to-create-a-subagent"&gt;When NOT to Create a Subagent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#skills"&gt;Skills&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-they-are-1"&gt;What They Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#technical-structure"&gt;Technical Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#key-characteristics-1"&gt;Key Characteristics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#context-window-impact"&gt;Context Window Impact&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-use-skills"&gt;When to Use Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-when-to-create-a-custom-skill"&gt;Example: When to Create a Custom Skill&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#example-1-api-design-guidelines"&gt;Example 1: API Design Guidelines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-2-database-migration-checklist"&gt;Example 2: Database Migration Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-3-security-review-lens"&gt;Example 3: Security Review Lens&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-not-to-create-a-skill"&gt;When NOT to Create a Skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skills-vs-claudemd"&gt;Skills vs CLAUDE.md&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skills-vs-subagents"&gt;Skills vs Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pattern-lens-skill--reviewer-subagent"&gt;Pattern: Lens (Skill) + Reviewer (Subagent)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-pattern"&gt;The Pattern&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-code-review"&gt;Example: Code Review&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-use-which"&gt;When to Use Which&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#other-domains-that-fit-this-pattern"&gt;Other Domains That Fit This Pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-servers"&gt;MCP Servers&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-they-are-2"&gt;What They Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#key-characteristics-2"&gt;Key Characteristics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#output-limits"&gt;Output Limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-use-mcp-tools"&gt;When to Use MCP Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#context-window-implications"&gt;Context Window Implications&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#main-instance"&gt;Main Instance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagent-context-distribution"&gt;Subagent Context Distribution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-context-impact"&gt;MCP Context Impact&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#memory-system-architecture"&gt;Memory System Architecture&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#two-kinds-of-memory"&gt;Two Kinds of Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#instruction-memory-hierarchy"&gt;Instruction Memory Hierarchy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#auto-memory"&gt;Auto Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#memory-isolation-boundaries"&gt;Memory Isolation Boundaries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-memory-stores"&gt;What Memory Stores&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#memory-impact-on-context"&gt;Memory Impact on Context&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#data-flow-comparison"&gt;Data Flow Comparison&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subagent-flow"&gt;Subagent Flow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-tool-flow"&gt;MCP Tool Flow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#decision-matrix"&gt;Decision Matrix&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#quick-reference"&gt;Quick Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#best-practices"&gt;Best Practices&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subagent-configuration"&gt;Subagent Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skill-design"&gt;Skill Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-server-usage"&gt;MCP Server Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#context-optimization"&gt;Context Optimization&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#key-insight"&gt;Key Insight&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-three-extension-mechanisms"&gt;The Three Extension Mechanisms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="subagents-task-tool"&gt;Subagents (Task Tool)&lt;a class="anchor" href="#subagents-task-tool"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="what-they-are"&gt;What They Are&lt;a class="anchor" href="#what-they-are"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Subagents are specialized AI assistants spawned via the &lt;code&gt;Task&lt;/code&gt; tool. Each operates as an independent Claude instance with its own conversation context.&lt;/p&gt;</description></item><item><title>Managed Settings and Security Policy</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/managed-settings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/managed-settings/</guid><description>&lt;h1 id="managed-settings-and-security-policy"&gt;Managed Settings and Security Policy&lt;a class="anchor" href="#managed-settings-and-security-policy"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="anchor" href="#overview"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;managed-settings.json&lt;/code&gt; file is the enterprise-level configuration that sits at the top of Claude Code&amp;rsquo;s settings hierarchy and &lt;strong&gt;cannot be overridden by any developer or project-level setting.&lt;/strong&gt; It&amp;rsquo;s deployed to every developer machine via Mobile Device Management (MDM) or configuration management tooling.&lt;/p&gt;
&lt;h2 id="baseline-enterprise-configuration"&gt;Baseline Enterprise Configuration&lt;a class="anchor" href="#baseline-enterprise-configuration"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_USE_BEDROCK&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ANTHROPIC_BEDROCK_BASE_URL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://llm-gateway.internal.corp.com/bedrock&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_SKIP_BEDROCK_AUTH&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cleanupPeriodDays&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permissions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;disableBypassPermissionsMode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;disable&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deny&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.env)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.env.*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/secrets/**)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.ssh/**)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/credentials*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(sudo:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(su:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(curl:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(wget:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(ssh:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(rm -rf:*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowManagedPermissionRulesOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowManagedHooksOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;strictKnownMarketplaces&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="key-design-decisions"&gt;Key Design Decisions&lt;a class="anchor" href="#key-design-decisions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="bedrock-routing-env-section"&gt;Bedrock Routing (env section)&lt;a class="anchor" href="#bedrock-routing-env-section"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE_CODE_USE_BEDROCK&lt;/code&gt;: Routes all requests through Bedrock instead of api.anthropic.com&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ANTHROPIC_BEDROCK_BASE_URL&lt;/code&gt;: Points to the internal LLM gateway, not directly to Bedrock&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CLAUDE_CODE_SKIP_BEDROCK_AUTH&lt;/code&gt;: The gateway holds AWS credentials, developers don&amp;rsquo;t need them&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="telemetry-lockdown"&gt;Telemetry Lockdown&lt;a class="anchor" href="#telemetry-lockdown"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&lt;/code&gt; bundles four flags into one:&lt;/p&gt;</description></item><item><title>Product Thinking for Engineers</title><link>http://www.markalston.net/claude-code-wiki/product/product-thinking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/product/product-thinking/</guid><description>&lt;h1 id="product-thinking-for-engineers"&gt;Product Thinking for Engineers&lt;a class="anchor" href="#product-thinking-for-engineers"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Most engineers build what they&amp;rsquo;re told to build, and build it well. The gap is that &amp;ldquo;well&amp;rdquo; usually means technically sound &amp;ndash; correct algorithms, clean architecture, good test coverage &amp;ndash; while the thing being built may not solve the problem it was meant to solve. Product thinking is the discipline of questioning what you&amp;rsquo;re building and why, before optimizing how.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Article&lt;/th&gt;
 &lt;th&gt;Focus&lt;/th&gt;
 &lt;th&gt;What You&amp;rsquo;ll Get&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Product Thinking (this page)&lt;/td&gt;
 &lt;td&gt;Why engineers should care about product work&lt;/td&gt;
 &lt;td&gt;A concrete example of product-blind vs. product-aware engineering, and how the section fits together&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="http://www.markalston.net/claude-code-wiki/product/user-research/"&gt;User Research &amp;amp; Validation&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Discovering what users need&lt;/td&gt;
 &lt;td&gt;Interview techniques, assumption mapping, validation methods&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="http://www.markalston.net/claude-code-wiki/product/requirements-specifications/"&gt;Requirements &amp;amp; Specifications&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Turning research into buildable definitions&lt;/td&gt;
 &lt;td&gt;Spec writing, acceptance criteria, traceability&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="http://www.markalston.net/claude-code-wiki/product/prototyping-iteration/"&gt;Prototyping &amp;amp; Iteration&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Building to learn, not to ship&lt;/td&gt;
 &lt;td&gt;Throwaway prototypes, feedback loops, iteration discipline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="http://www.markalston.net/claude-code-wiki/product/prioritization-tradeoffs/"&gt;Prioritization &amp;amp; Trade-offs&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Deciding what to build next&lt;/td&gt;
 &lt;td&gt;Impact vs. effort, RICE scoring, opportunity cost, cost of delay, saying no&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-gap-between-building-and-solving"&gt;The Gap Between Building and Solving&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-product-thinking-is"&gt;What Product Thinking Is&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#an-example-search-autocomplete"&gt;An Example: Search Autocomplete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-claude-code-changes-the-equation"&gt;How Claude Code Changes the Equation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-this-section-is-organized"&gt;How This Section Is Organized&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-gap-between-building-and-solving"&gt;The Gap Between Building and Solving&lt;a class="anchor" href="#the-gap-between-building-and-solving"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Engineers optimize. Given a problem, they reduce latency, improve throughput, eliminate edge cases, and harden failure modes. This is valuable work. It is also, frequently, the wrong work.&lt;/p&gt;</description></item><item><title>Enterprise Claude Code Adoption -- Skill Gaps</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/01-skill-gaps-and-market-opportunity/skill-gaps/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/01-skill-gaps-and-market-opportunity/skill-gaps/</guid><description>&lt;h1 id="enterprise-claude-code-adoption--skill-gaps"&gt;Enterprise Claude Code Adoption &amp;ndash; Skill Gaps&lt;a class="anchor" href="#enterprise-claude-code-adoption--skill-gaps"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-meta-gap"&gt;The Meta-Gap&lt;a class="anchor" href="#the-meta-gap"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Enterprises treat Claude Code adoption as a &lt;strong&gt;training problem&lt;/strong&gt; (&amp;ldquo;teach developers to use the tool&amp;rdquo;) when it&amp;rsquo;s really a &lt;strong&gt;platform engineering problem&lt;/strong&gt; (&amp;ldquo;build the scaffolding so the tool works well for everyone by default&amp;rdquo;).&lt;/p&gt;
&lt;h2 id="six-key-gaps"&gt;Six Key Gaps&lt;a class="anchor" href="#six-key-gaps"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="1-prompt-engineering-as-a-development-discipline"&gt;1. Prompt Engineering as a Development Discipline&lt;a class="anchor" href="#1-prompt-engineering-as-a-development-discipline"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Most enterprise developers treat Claude Code like a slightly smarter autocomplete. They haven&amp;rsquo;t internalized that the skill system, CLAUDE.md files, and structured context injection are where the actual value is. The gap isn&amp;rsquo;t &amp;ldquo;can you use the tool&amp;rdquo; but &amp;ldquo;can you make the tool consistently produce enterprise-grade output.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Implementation Support Landscape</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/06-implementation-support-ecosystem/support-landscape/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/06-implementation-support-ecosystem/support-landscape/</guid><description>&lt;h1 id="implementation-support-landscape"&gt;Implementation Support Landscape&lt;a class="anchor" href="#implementation-support-landscape"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="layer-1-aws-infrastructure-plumbing"&gt;Layer 1: AWS (Infrastructure Plumbing)&lt;a class="anchor" href="#layer-1-aws-infrastructure-plumbing"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="aws-solutions-architects-free"&gt;AWS Solutions Architects (Free)&lt;a class="anchor" href="#aws-solutions-architects-free"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Every enterprise account gets assigned SAs who can help design networking. They&amp;rsquo;ll walk through VPC endpoint setup, Direct Connect integration, and IAM policy design. Excellent at the infrastructure layer.&lt;/p&gt;
&lt;h3 id="aws-professional-services-paid"&gt;AWS Professional Services (Paid)&lt;a class="anchor" href="#aws-professional-services-paid"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Hands-on implementation engagements. Now have people specifically focused on Bedrock deployment patterns. The &amp;ldquo;Guidance for Claude Code with Amazon Bedrock&amp;rdquo; reference architecture implements proven patterns deployable in hours &amp;ndash; ProServ uses this as a starting point.&lt;/p&gt;</description></item><item><title>The System Prompt: What Claude Reads Before You Say Anything</title><link>http://www.markalston.net/claude-code-wiki/internals/system-prompt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/system-prompt/</guid><description>&lt;h1 id="the-system-prompt-what-claude-reads-before-you-say-anything"&gt;The System Prompt: What Claude Reads Before You Say Anything&lt;a class="anchor" href="#the-system-prompt-what-claude-reads-before-you-say-anything"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The system prompt is the hidden instruction text sent to the model on every API call, before any conversation messages. It defines Claude&amp;rsquo;s behavior, available tools, safety rules, and injected knowledge. In Claude Code, it&amp;rsquo;s assembled from multiple sources and re-sent with every message &amp;ndash; making it the single largest factor in per-message token overhead.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;Source&lt;/th&gt;
 &lt;th&gt;Typical Size&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Core instructions&lt;/td&gt;
 &lt;td&gt;Claude Code built-in&lt;/td&gt;
 &lt;td&gt;~3,000-5,000 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Tool definitions&lt;/td&gt;
 &lt;td&gt;Built-in + MCP servers&lt;/td&gt;
 &lt;td&gt;~3,000-5,000 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CLAUDE.md files&lt;/td&gt;
 &lt;td&gt;User, project, enterprise scopes&lt;/td&gt;
 &lt;td&gt;~2,000-4,000 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Skill catalog&lt;/td&gt;
 &lt;td&gt;Enabled skills + plugins&lt;/td&gt;
 &lt;td&gt;~2,000-5,000 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Subagent catalog&lt;/td&gt;
 &lt;td&gt;Plugin subagent descriptions&lt;/td&gt;
 &lt;td&gt;~1,000-2,000 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Environment + git context&lt;/td&gt;
 &lt;td&gt;Auto-detected&lt;/td&gt;
 &lt;td&gt;~200-500 tokens&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Typical total&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;~12,000-20,000 tokens&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-system-prompt-what-claude-reads-before-you-say-anything"&gt;The System Prompt: What Claude Reads Before You Say Anything&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-the-system-prompt-is"&gt;What the System Prompt Is&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#anatomy-of-a-claude-code-api-call"&gt;Anatomy of a Claude Code API Call&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-prompt-components"&gt;System Prompt Components&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#core-instructions"&gt;Core Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tool-definitions"&gt;Tool Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#claudemd-files"&gt;CLAUDE.md Files&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skill-catalog"&gt;Skill Catalog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagent-catalog"&gt;Subagent Catalog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-server-instructions"&gt;MCP Server Instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#environment-and-git-context"&gt;Environment and Git Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#plugin-injected-content"&gt;Plugin-Injected Content&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#how-it-gets-assembled"&gt;How It Gets Assembled&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#why-this-matters"&gt;Why This Matters&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#token-cost"&gt;Token Cost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#behavior-shaping"&gt;Behavior Shaping&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#prompt-caching"&gt;Prompt Caching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-you-can-control"&gt;What You Can Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-the-system-prompt-is"&gt;What the System Prompt Is&lt;a class="anchor" href="#what-the-system-prompt-is"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every API call to Claude has three parts: system prompt, conversation history, and the current message. The system prompt is the first part &amp;ndash; instructions the model reads before seeing any conversation.&lt;/p&gt;</description></item><item><title>Architecture Overview</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/00-overview/architecture-overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/00-overview/architecture-overview/</guid><description>&lt;h1 id="architecture-overview"&gt;Architecture Overview&lt;a class="anchor" href="#architecture-overview"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="end-to-end-request-flow"&gt;End-to-End Request Flow&lt;a class="anchor" href="#end-to-end-request-flow"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌─────────────────────────────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ CORPORATE NETWORK │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ Developer &lt;span class="m"&gt;1&lt;/span&gt; │ │ Developer &lt;span class="m"&gt;2&lt;/span&gt; │ │ Developer N │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ claude CLI │ │ claude CLI │ │ claude CLI │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │ │ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ managed- │ │ managed- │ │ managed- │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ settings.json│ │ settings.json│ │ settings.json│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └──────┬────────┘ └──────┬────────┘ └──────┬────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └──────────────────┼──────────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ▼ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ┌──────────────────────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ LLM GATEWAY │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ &lt;span class="o"&gt;(&lt;/span&gt;LiteLLM / Kong AI&lt;span class="o"&gt;)&lt;/span&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • SSO authentication │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Per-user/team budgets │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Rate limiting │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Request logging │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Model routing │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Holds AWS credentials │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └───────────┬──────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└──────────────────────────┼──────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │ &lt;span class="o"&gt;(&lt;/span&gt;Direct Connect / Site-to-Site VPN&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;┌──────────────────────────┼──────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ AWS ACCOUNT &lt;span class="o"&gt;(&lt;/span&gt;Dedicated&lt;span class="o"&gt;)&lt;/span&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ┌───────────┴─────────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ VPC ENDPOINT │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ &lt;span class="o"&gt;(&lt;/span&gt;PrivateLink&lt;span class="o"&gt;)&lt;/span&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ com.amazonaws.&lt;span class="o"&gt;{&lt;/span&gt;region&lt;span class="o"&gt;}&lt;/span&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ .bedrock-runtime │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ Policy: InvokeModel, │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ InvokeModelWith │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ ResponseStream ONLY │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └───────────┬─────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ┌───────────┴─────────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ AMAZON BEDROCK │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ Claude Sonnet/Opus │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ &lt;span class="o"&gt;(&lt;/span&gt;primary model&lt;span class="o"&gt;)&lt;/span&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ Claude Haiku │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ &lt;span class="o"&gt;(&lt;/span&gt;fast model&lt;span class="o"&gt;)&lt;/span&gt; │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • No data retention │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • No training use │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • CloudTrail audit │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └─────────────────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ┌─────────────────────────────────────────────────────────────┐ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ OBSERVABILITY │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • CloudTrail → every InvokeModel call with IAM principal │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • CloudWatch → token usage, latency, error rates │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │ • Cost Explorer → per-account Bedrock spending │ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └─────────────────────────────────────────────────────────────┘ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└─────────────────────────────────────────────────────────────────────┘&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This diagram shows AWS Bedrock deployment. Equivalent architectures for GCP Vertex AI (VPC Service Controls, Private Service Connect, Cloud Logging) and Azure Foundry (Private Endpoints, VNet integration, Azure Monitor) are documented in the Phase 0 infrastructure guides.&lt;/p&gt;</description></item><item><title>Building Custom Subagents &amp; Skills: Extending Claude Code</title><link>http://www.markalston.net/claude-code-wiki/extending/custom-extensions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/extending/custom-extensions/</guid><description>&lt;h1 id="building-custom-subagents--skills-extending-claude-code"&gt;Building Custom Subagents &amp;amp; Skills: Extending Claude Code&lt;a class="anchor" href="#building-custom-subagents--skills-extending-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code&amp;rsquo;s capabilities can be extended through custom subagents (autonomous task executors with isolated context), skills (injected instructions that guide behavior), and plugins (packages that bundle everything together). This article covers how to build each from scratch &amp;ndash; file structures, YAML configuration, tool permissions, model selection, and the architectural patterns that make extensions effective.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Extension&lt;/th&gt;
 &lt;th&gt;What It Is&lt;/th&gt;
 &lt;th&gt;File Location&lt;/th&gt;
 &lt;th&gt;When It Runs&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Subagent&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Isolated AI worker&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;.claude/agents/*.md&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;When Claude delegates a task&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Skill&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Injected instructions&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;.claude/skills/*/SKILL.md&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Auto-discovered or &lt;code&gt;/invoked&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Plugin&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Packaged bundle of all three&lt;/td&gt;
 &lt;td&gt;Plugin marketplace or local&lt;/td&gt;
 &lt;td&gt;When plugin is enabled&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#building-custom-subagents--skills-extending-claude-code"&gt;Building Custom Subagents &amp;amp; Skills: Extending Claude Code&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagents"&gt;Subagents&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-subagents-are"&gt;What Subagents Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagent-file-structure"&gt;Subagent File Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagent-yaml-reference"&gt;Subagent YAML Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-prompt-body"&gt;System Prompt Body&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tool-permissions"&gt;Tool Permissions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#model-selection"&gt;Model Selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#permission-modes"&gt;Permission Modes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#persistent-memory"&gt;Persistent Memory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hooks-in-subagents"&gt;Hooks in Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#preloading-skills"&gt;Preloading Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cli-defined-subagents"&gt;CLI-Defined Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#foreground-vs-background"&gt;Foreground vs Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-code-reviewer"&gt;Example: Code Reviewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-test-runner"&gt;Example: Test Runner&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#skills"&gt;Skills&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-skills-are"&gt;What Skills Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skill-file-structure"&gt;Skill File Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skill-yaml-reference"&gt;Skill YAML Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#invocation-control"&gt;Invocation Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#auto-discovery-and-token-cost"&gt;Auto-Discovery and Token Cost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#string-substitutions"&gt;String Substitutions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#dynamic-context-injection"&gt;Dynamic Context Injection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#running-skills-in-a-subagent"&gt;Running Skills in a Subagent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hooks-in-skills"&gt;Hooks in Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-commit-skill"&gt;Example: Commit Skill&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-pr-review-skill"&gt;Example: PR Review Skill&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-lens--reviewer-pattern"&gt;The Lens + Reviewer Pattern&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#lens-reviewer-architecture"&gt;Lens Reviewer Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-use-which"&gt;When to Use Which&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#domains-that-fit"&gt;Domains That Fit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#example-security-domain"&gt;Example: Security Domain&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#plugins"&gt;Plugins&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#what-plugins-are"&gt;What Plugins Are&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#plugin-directory-structure"&gt;Plugin Directory Structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-plugin-manifest"&gt;The Plugin Manifest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-servers-in-plugins"&gt;MCP Servers in Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hooks-in-plugins"&gt;Hooks in Plugins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#plugin-namespacing"&gt;Plugin Namespacing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#testing-plugins-locally"&gt;Testing Plugins Locally&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#installation-and-management"&gt;Installation and Management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#managing-extensions-with-claudeup"&gt;Managing Extensions with claudeup&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#claudeup-commands"&gt;claudeup Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#directory-layout"&gt;Directory Layout&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#scope-and-priority"&gt;Scope and Priority&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#subagents-1"&gt;Subagents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#skills-1"&gt;Skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#permission-rules"&gt;Permission Rules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#best-practices"&gt;Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#anti-patterns"&gt;Anti-Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="subagents"&gt;Subagents&lt;a class="anchor" href="#subagents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="what-subagents-are"&gt;What Subagents Are&lt;a class="anchor" href="#what-subagents-are"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;A subagent is an isolated AI worker that Claude delegates tasks to. Each subagent gets its own context window, its own system prompt, and a defined set of tools. When Claude spawns a subagent, the main conversation&amp;rsquo;s context is protected &amp;ndash; the subagent does its work, returns a result, and that result is all that enters the main context.&lt;/p&gt;</description></item><item><title>Cloud Foundry to Claude Code Analogy Map</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/cf-analogy-map/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/cf-analogy-map/</guid><description>&lt;h1 id="cloud-foundry-to-claude-code-analogy-map"&gt;Cloud Foundry to Claude Code Analogy Map&lt;a class="anchor" href="#cloud-foundry-to-claude-code-analogy-map"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;For consultants coming from a Cloud Foundry background, these analogies help translate platform engineering concepts into the Claude Code domain.&lt;/p&gt;
&lt;h2 id="core-concept-mapping"&gt;Core Concept Mapping&lt;a class="anchor" href="#core-concept-mapping"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Cloud Foundry&lt;/th&gt;
 &lt;th&gt;Claude Code&lt;/th&gt;
 &lt;th&gt;Explanation&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Org/Space structure&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Settings hierarchy (managed → project → user)&lt;/td&gt;
 &lt;td&gt;Multi-level configuration with inheritance and isolation between teams&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Buildpacks&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Skills and CLAUDE.md conventions&lt;/td&gt;
 &lt;td&gt;Opinionated frameworks that encode best practices &amp;ndash; developers get patterns by default&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Service Broker catalog&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Approved MCP servers&lt;/td&gt;
 &lt;td&gt;Curated set of external integrations available to developers, centrally managed&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;App manifest (manifest.yml)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Project &lt;code&gt;.claude/settings.json&lt;/code&gt; + &lt;code&gt;CLAUDE.md&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Declarative configuration checked into the repo that defines how the tool interacts with the project&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Platform operator&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Platform engineering team managing &lt;code&gt;managed-settings.json&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Central team that owns the platform layer, sets policies, and enables developer self-service&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;&lt;code&gt;cf push&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Developer runs &lt;code&gt;claude&lt;/code&gt; with everything pre-configured&lt;/td&gt;
 &lt;td&gt;The developer experience is simple because the platform handles complexity underneath&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Stemcells / base images&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Devcontainers / Coder workspace templates&lt;/td&gt;
 &lt;td&gt;Standardized environment that ensures consistent tooling across all developers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Diego cells&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;LLM Gateway + Bedrock&lt;/td&gt;
 &lt;td&gt;The compute layer that actually runs workloads, abstracted from the developer&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;UAA (User Account and Authentication)&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;SSO + gateway authentication&lt;/td&gt;
 &lt;td&gt;Centralized identity and access management&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Quota plans&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Per-team token budgets via LLM gateway&lt;/td&gt;
 &lt;td&gt;Resource limits that prevent any single team from consuming disproportionate capacity&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;App security groups&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Deny rules in managed-settings.json&lt;/td&gt;
 &lt;td&gt;Network/access restrictions that define what the workload can and cannot reach&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Route services / service mesh&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;LLM Gateway (LiteLLM / Kong AI)&lt;/td&gt;
 &lt;td&gt;Intermediary that handles routing, auth, logging, and policy enforcement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;BOSH releases&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Skills packaged as plugins&lt;/td&gt;
 &lt;td&gt;Versioned, distributable packages of capability&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Cloud Controller API&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Claude Code CLI + MCP protocol&lt;/td&gt;
 &lt;td&gt;The interface through which developers and automation interact with the platform&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Logs / Loggregator&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CloudTrail + gateway logs + CloudWatch&lt;/td&gt;
 &lt;td&gt;Multi-layer observability stack for audit, debugging, and cost tracking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Ops Manager tiles&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;MCP server integrations&lt;/td&gt;
 &lt;td&gt;Pre-built integrations that extend the platform&amp;rsquo;s capabilities&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="the-core-insight"&gt;The Core Insight&lt;a class="anchor" href="#the-core-insight"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Claude Code without platform engineering is like giving 500 developers raw &lt;code&gt;cf push&lt;/code&gt; access with no buildpacks, service brokers, or app manifests.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Context Management: Working Within the Token Budget</title><link>http://www.markalston.net/claude-code-wiki/internals/context-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/context-management/</guid><description>&lt;h1 id="context-management-working-within-the-token-budget"&gt;Context Management: Working Within the Token Budget&lt;a class="anchor" href="#context-management-working-within-the-token-budget"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The context window is Claude&amp;rsquo;s working memory &amp;ndash; everything the model can reference when generating a response. In Claude Code, it fills with the system prompt, conversation history, tool results, and file contents. Managing this space is the single most important factor in maintaining effective sessions as they grow longer.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Model&lt;/th&gt;
 &lt;th&gt;Standard Window&lt;/th&gt;
 &lt;th&gt;Extended (Beta)&lt;/th&gt;
 &lt;th&gt;Long Context Pricing&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Opus 4.6&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;td&gt;1M tokens&lt;/td&gt;
 &lt;td&gt;2x input, 1.5x output above 200K&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;td&gt;1M tokens&lt;/td&gt;
 &lt;td&gt;2x input, 1.5x output above 200K&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Sonnet 4.5&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Sonnet 4&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Claude Haiku 4.5&lt;/td&gt;
 &lt;td&gt;200K tokens&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;td&gt;&amp;ndash;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The 1M token context window is currently available in beta on the API only. Standard claude.ai and Claude Code users access the 200K window unless the beta header is explicitly enabled.&lt;/p&gt;</description></item><item><title>Cost Tracking and Budgets</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/cost-tracking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/cost-tracking/</guid><description>&lt;h1 id="cost-tracking-and-budgets"&gt;Cost Tracking and Budgets&lt;a class="anchor" href="#cost-tracking-and-budgets"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-cost-challenge"&gt;The Cost Challenge&lt;a class="anchor" href="#the-cost-challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Bedrock bills per-token. 500 developers using Opus for everything can cost $50K–$200K+/month depending on usage intensity. Without controls, costs are unpredictable and can spike when developers discover long-running agentic workflows.&lt;/p&gt;
&lt;h2 id="model-tiering-strategy"&gt;Model Tiering Strategy&lt;a class="anchor" href="#model-tiering-strategy"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The LLM gateway is the control point for cost management.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Use Case&lt;/th&gt;
 &lt;th&gt;Model&lt;/th&gt;
 &lt;th&gt;Approx. Cost&lt;/th&gt;
 &lt;th&gt;Access&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Routine coding, quick edits&lt;/td&gt;
 &lt;td&gt;Sonnet&lt;/td&gt;
 &lt;td&gt;Lower per-token&lt;/td&gt;
 &lt;td&gt;Default for all developers&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Architecture, complex reasoning&lt;/td&gt;
 &lt;td&gt;Opus&lt;/td&gt;
 &lt;td&gt;Higher per-token&lt;/td&gt;
 &lt;td&gt;Gated to senior engineers or by request&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Summarization, classification&lt;/td&gt;
 &lt;td&gt;Haiku&lt;/td&gt;
 &lt;td&gt;Lowest per-token&lt;/td&gt;
 &lt;td&gt;Claude Code uses automatically as fast model&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="implementation"&gt;Implementation&lt;a class="anchor" href="#implementation"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Configure the LLM gateway to:&lt;/p&gt;</description></item><item><title>Developer Environment Standardization</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/developer-environment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/developer-environment/</guid><description>&lt;h1 id="developer-environment-standardization"&gt;Developer Environment Standardization&lt;a class="anchor" href="#developer-environment-standardization"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-problem"&gt;The Problem&lt;a class="anchor" href="#the-problem"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Without standardization, 500 developers debug 500 different environment configurations. Claude Code needs Node.js 18+, correct environment variables, network connectivity to the LLM gateway, and managed settings in the right filesystem location. Every permutation is a support ticket.&lt;/p&gt;
&lt;h2 id="option-a-managed-devcontainers-recommended-for-vs-codecodespaces-orgs"&gt;Option A: Managed Devcontainers (Recommended for VS Code/Codespaces Orgs)&lt;a class="anchor" href="#option-a-managed-devcontainers-recommended-for-vs-codecodespaces-orgs"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If the org uses VS Code or GitHub Codespaces, create a standard devcontainer with everything pre-configured.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// .devcontainer/devcontainer.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Enterprise Dev Environment&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;image&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;mcr.microsoft.com/devcontainers/base:ubuntu&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;features&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ghcr.io/devcontainers/features/node:1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;20&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;postCreateCommand&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;npm install -g @anthropic-ai/claude-code&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;containerEnv&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_USE_BEDROCK&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ANTHROPIC_BEDROCK_BASE_URL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://llm-gateway.internal.corp.com/bedrock&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_SKIP_BEDROCK_AUTH&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;mounts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;source=/Library/Application Support/ClaudeCode,target=/etc/claude-code,type=bind,readonly&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Developer opens repo → devcontainer starts → Claude Code just works.&lt;/p&gt;</description></item><item><title>The AI Disruption Speed Problem</title><link>http://www.markalston.net/claude-code-wiki/perspectives/ai-disruption-speed-problem/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/perspectives/ai-disruption-speed-problem/</guid><description>&lt;h1 id="the-ai-disruption-speed-problem"&gt;The AI Disruption Speed Problem&lt;a class="anchor" href="#the-ai-disruption-speed-problem"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Comparing Dario Amodei&amp;rsquo;s macro predictions with what practitioners are seeing on the ground &amp;ndash; and where both perspectives agree that the speed of AI disruption is the real concern.&lt;/p&gt;
&lt;p&gt;This piece draws on Amodei&amp;rsquo;s &lt;a href="http://www.markalston.net/claude-code-wiki/perspectives/2026-02-12-dario-we-dont-know-ai-conscious/"&gt;Feb. 2026 interview with Ross Douthat&lt;/a&gt; and the observations in &lt;a href="http://www.markalston.net/claude-code-wiki/perspectives/ai-replacing-programmers/"&gt;The &amp;ldquo;AI Will Replace Programmers&amp;rdquo; Narrative&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="where-the-ceo-and-the-practitioner-agree"&gt;Where the CEO and the Practitioner Agree&lt;a class="anchor" href="#where-the-ceo-and-the-practitioner-agree"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Software is getting hit first.&lt;/strong&gt; Amodei says software might be disrupted faster than other white-collar work because developers adopt quickly and are &amp;ldquo;socially adjacent to the AI world.&amp;rdquo; The practitioner perspective confirms this: code production is already not the constraint. The disruption is already here for devs.&lt;/p&gt;</description></item><item><title>Google Vertex AI Fundamentals</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/vertex-fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/vertex-fundamentals/</guid><description>&lt;h1 id="google-vertex-ai-fundamentals"&gt;Google Vertex AI Fundamentals&lt;a class="anchor" href="#google-vertex-ai-fundamentals"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-is-vertex-ai"&gt;What Is Vertex AI?&lt;a class="anchor" href="#what-is-vertex-ai"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Vertex AI is Google Cloud&amp;rsquo;s managed AI platform. Anthropic&amp;rsquo;s Claude models are available as partner models through Vertex AI, giving you a GCP-native API that uses the same IAM, billing, networking, and compliance infrastructure you already use for everything else in Google Cloud.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analogy for Cloud Foundry practitioners:&lt;/strong&gt; Same abstraction as Bedrock &amp;ndash; developers call an API, the platform team controls networking, access, cost, and compliance underneath. The difference is which cloud&amp;rsquo;s control plane you&amp;rsquo;re working with.&lt;/p&gt;</description></item><item><title>Market Opportunity Analysis</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/01-skill-gaps-and-market-opportunity/market-opportunity/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/01-skill-gaps-and-market-opportunity/market-opportunity/</guid><description>&lt;h1 id="market-opportunity-analysis"&gt;Market Opportunity Analysis&lt;a class="anchor" href="#market-opportunity-analysis"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-gap-in-the-implementation-landscape"&gt;The Gap in the Implementation Landscape&lt;a class="anchor" href="#the-gap-in-the-implementation-landscape"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="layer-1-aws-infrastructure-plumbing"&gt;Layer 1: AWS (Infrastructure Plumbing)&lt;a class="anchor" href="#layer-1-aws-infrastructure-plumbing"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AWS Solutions Architects&lt;/strong&gt; (free with account): VPC endpoint setup, Direct Connect, IAM policy design&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS Professional Services&lt;/strong&gt; (paid): Hands-on implementation. Reference architecture &amp;ldquo;Guidance for Claude Code with Amazon Bedrock&amp;rdquo; deployable in hours&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS Partner Network consultancies&lt;/strong&gt; (Accenture, Deloitte, Slalom): Routine networking/security work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gap:&lt;/strong&gt; Excellent at infrastructure plumbing. No depth on Claude Code configuration, skills architecture, or developer experience.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="layer-2-anthropic-product-expertise"&gt;Layer 2: Anthropic (Product Expertise)&lt;a class="anchor" href="#layer-2-anthropic-product-expertise"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude for Enterprise plan:&lt;/strong&gt; SSO, domain capture, RBAC, Compliance API, managed policy settings for org-wide Claude Code configs&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enterprise sales team:&lt;/strong&gt; Contractual/compliance side &amp;ndash; DPAs, security questionnaires, Compliance API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gap:&lt;/strong&gt; Model company, not consulting firm. Won&amp;rsquo;t Terraform your VPC or deploy your LLM gateway.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="layer-3-strategic-system-integrators-enterprise-relationships"&gt;Layer 3: Strategic System Integrators (Enterprise Relationships)&lt;a class="anchor" href="#layer-3-strategic-system-integrators-enterprise-relationships"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Accenture:&lt;/strong&gt; Accenture Anthropic Business Group, ~30,000 trained professionals, full-stack transformation&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cognizant:&lt;/strong&gt; Deploying Claude to 350,000 employees, engineering platform integration, industry blueprints&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IBM:&lt;/strong&gt; Claude integration into software portfolio, contributing enterprise reference architectures and open-source MCP tooling&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;deepsense.ai:&lt;/strong&gt; Official Anthropic Service Partner, &amp;ldquo;Jumpstart Packages&amp;rdquo; for regulated sectors&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gap:&lt;/strong&gt; Sweet spot is $2M+ full-stack transformation. Many &amp;ldquo;trained professionals&amp;rdquo; completed certification, not production deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="layer-4-llm-gateway-products"&gt;Layer 4: LLM Gateway Products&lt;a class="anchor" href="#layer-4-llm-gateway-products"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;LiteLLM:&lt;/strong&gt; Enterprise cloud with SOC 2/ISO 27001 &amp;ndash; or self-hosted open-source&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Kong AI Gateway:&lt;/strong&gt; Enterprise support contracts, existing Kong customers&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Portkey:&lt;/strong&gt; Managed gateway with observability focus&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gap:&lt;/strong&gt; Products, not consultancies. Enterprises self-host with platform engineering team or hire separately.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-unserved-middle-layer"&gt;The Unserved Middle Layer&lt;a class="anchor" href="#the-unserved-middle-layer"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Nobody&lt;/strong&gt; is doing the middle layer well &amp;ndash; the consultant who understands:&lt;/p&gt;</description></item><item><title>Platform Engineer Path</title><link>http://www.markalston.net/claude-code-wiki/training/platform-engineer-path/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/training/platform-engineer-path/</guid><description>&lt;h1 id="platform-engineer-path"&gt;Platform Engineer Path&lt;a class="anchor" href="#platform-engineer-path"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;A structured progression for platform engineers deploying Claude Code to teams and organizations. Each module covers one layer of the deployment stack &amp;ndash; work through them in order.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Module&lt;/th&gt;
 &lt;th&gt;Focus&lt;/th&gt;
 &lt;th&gt;Prerequisites&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-1-architecture"&gt;1. Architecture&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Request flow, control points, configuration hierarchy&lt;/td&gt;
 &lt;td&gt;None&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-2-infrastructure"&gt;2. Infrastructure&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Bedrock/provider setup, VPC endpoints, LLM gateway&lt;/td&gt;
 &lt;td&gt;Module 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-3-configuration-and-policy"&gt;3. Configuration and Policy&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Managed settings, CLAUDE.md hierarchy, distribution&lt;/td&gt;
 &lt;td&gt;Module 2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-4-permissions-and-security"&gt;4. Permissions and Security&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Permission rules, sandboxing, compliance controls&lt;/td&gt;
 &lt;td&gt;Module 3&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-5-cost-management"&gt;5. Cost Management&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Budgets, model tiering, observability dashboards&lt;/td&gt;
 &lt;td&gt;Modules 2-4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-6-phased-rollout"&gt;6. Phased Rollout&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Cohort strategy, success metrics, rollback triggers&lt;/td&gt;
 &lt;td&gt;Modules 1-5&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="exercise-materials"&gt;Exercise Materials&lt;a class="anchor" href="#exercise-materials"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Clone the exercise repo for hands-on practice alongside each module:&lt;/p&gt;</description></item><item><title>Common Customer Requests -- Pushback Recommendations</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/06-implementation-support-ecosystem/pushback-recommendations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/06-implementation-support-ecosystem/pushback-recommendations/</guid><description>&lt;h1 id="common-customer-requests--pushback-recommendations"&gt;Common Customer Requests &amp;ndash; Pushback Recommendations&lt;a class="anchor" href="#common-customer-requests--pushback-recommendations"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Things the customer will probably ask for that should be redirected.&lt;/p&gt;
&lt;h2 id="can-we-run-claude-locally-on-prem"&gt;&amp;ldquo;Can we run Claude locally on-prem?&amp;rdquo;&lt;a class="anchor" href="#can-we-run-claude-locally-on-prem"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Answer:&lt;/strong&gt; No. Anthropic doesn&amp;rsquo;t offer self-hosted model deployment. The Bedrock/Vertex path with PrivateLink is the closest you get &amp;ndash; data stays within the cloud provider&amp;rsquo;s private backbone and never touches the public internet.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If they truly need on-prem inference:&lt;/strong&gt; The conversation shifts to open-source models (Code Llama, DeepSeek-Coder, StarCoder) via Ollama or vLLM. Quality drops significantly for agentic coding tasks. This is a fundamentally different engagement.&lt;/p&gt;</description></item><item><title>User Research &amp; Validation with Claude Code</title><link>http://www.markalston.net/claude-code-wiki/product/user-research/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/product/user-research/</guid><description>&lt;h1 id="user-research--validation-with-claude-code"&gt;User Research &amp;amp; Validation with Claude Code&lt;a class="anchor" href="#user-research--validation-with-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Engineers skip user research because it feels like a separate discipline &amp;ndash; interviews, surveys, affinity diagrams, personas. Most of that overhead is mechanical: reading, categorizing, synthesizing. Claude Code handles the mechanical parts, which means you can do useful research in 20 minutes from your terminal. This article shows you how.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Research Method&lt;/th&gt;
 &lt;th&gt;What It Tells You&lt;/th&gt;
 &lt;th&gt;Claude Code Technique&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Support ticket analysis&lt;/td&gt;
 &lt;td&gt;Where users get stuck right now&lt;/td&gt;
 &lt;td&gt;Feed ticket exports, extract patterns and frequency&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Interview transcript synthesis&lt;/td&gt;
 &lt;td&gt;What users say they need (and what they reveal accidentally)&lt;/td&gt;
 &lt;td&gt;Load transcripts, pull out themes and contradictions&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Competitive analysis&lt;/td&gt;
 &lt;td&gt;What alternatives exist and where they fall short&lt;/td&gt;
 &lt;td&gt;Describe competitor features, identify gaps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Usage data interpretation&lt;/td&gt;
 &lt;td&gt;What users actually do (vs. what they say)&lt;/td&gt;
 &lt;td&gt;Feed metrics, generate hypotheses for observed behavior&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Survey design and analysis&lt;/td&gt;
 &lt;td&gt;Targeted answers to specific questions&lt;/td&gt;
 &lt;td&gt;Generate questions from assumptions, analyze response data&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Feasibility prototyping&lt;/td&gt;
 &lt;td&gt;Whether a solution is technically viable&lt;/td&gt;
 &lt;td&gt;Build proof-of-concept scripts to test core mechanics&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#why-engineers-skip-research"&gt;Why Engineers Skip Research&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#support-ticket-and-bug-report-analysis"&gt;Support Ticket and Bug Report Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#synthesizing-interview-transcripts"&gt;Synthesizing Interview Transcripts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#competitive-analysis"&gt;Competitive Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#usage-data-interpretation"&gt;Usage Data Interpretation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#validation-before-commitment"&gt;Validation Before Commitment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-to-stop-researching"&gt;When to Stop Researching&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-engineers-skip-research"&gt;Why Engineers Skip Research&lt;a class="anchor" href="#why-engineers-skip-research"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Research feels slow because it&amp;rsquo;s unstructured. Writing code has a tight feedback loop &amp;ndash; write, run, see results. Research has no compiler. You read a stack of support tickets and come away with vague impressions. You interview three users and get three different stories. There&amp;rsquo;s no green bar that tells you you&amp;rsquo;re done.&lt;/p&gt;</description></item><item><title>Workflow Patterns: Common Development Workflows with Claude Code</title><link>http://www.markalston.net/claude-code-wiki/guides/workflow-patterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/workflow-patterns/</guid><description>&lt;h1 id="workflow-patterns-common-development-workflows-with-claude-code"&gt;Workflow Patterns: Common Development Workflows with Claude Code&lt;a class="anchor" href="#workflow-patterns-common-development-workflows-with-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code is an agentic coding tool &amp;ndash; it explores, plans, and implements rather than just answering questions. Getting the most out of it means structuring your work around its strengths: verification-driven development, iterative feedback loops, context management, and knowing when to delegate to subagents. This article covers the core workflow patterns for day-to-day development.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Workflow&lt;/th&gt;
 &lt;th&gt;When to Use&lt;/th&gt;
 &lt;th&gt;Key Pattern&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Explore-Plan-Implement&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;New features, unfamiliar code&lt;/td&gt;
 &lt;td&gt;Separate research from coding&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Fix with Verification&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Bug fixes, error resolution&lt;/td&gt;
 &lt;td&gt;Reproduce, fix, verify&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Test-Driven Development&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;New features, bug fixes&lt;/td&gt;
 &lt;td&gt;Write tests first, then implement&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Code Review&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Before merge, after implementation&lt;/td&gt;
 &lt;td&gt;Fresh session, different perspective&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Refactor&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Code improvement, migration&lt;/td&gt;
 &lt;td&gt;Small steps with continuous verification&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Multi-Session&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Large features, multi-day work&lt;/td&gt;
 &lt;td&gt;State files, named sessions, checkpoints&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Parallel Sessions&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Independent tasks, writer/reviewer split&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;--worktree&lt;/code&gt;, &lt;code&gt;--tmux&lt;/code&gt;, headless mode&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Headless / CI Integration&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Automated checks, batch operations&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;claude -p&lt;/code&gt; with structured output&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#workflow-patterns-common-development-workflows-with-claude-code"&gt;Workflow Patterns: Common Development Workflows with Claude Code&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-core-loop"&gt;The Core Loop&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#explore-plan-implement"&gt;Explore-Plan-Implement&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#when-to-plan-vs-when-to-just-do-it"&gt;When to Plan vs When to Just Do It&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-four-phases"&gt;The Four Phases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-interview-pattern"&gt;The Interview Pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#fix-with-verification"&gt;Fix with Verification&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-debugging-workflow"&gt;The Debugging Workflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#providing-verification-criteria"&gt;Providing Verification Criteria&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#test-driven-development"&gt;Test-Driven Development&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#tdd-with-claude-code"&gt;TDD with Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tests-as-durable-requirements"&gt;Tests as Durable Requirements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#code-review"&gt;Code Review&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#self-review-vs-fresh-session"&gt;Self-Review vs Fresh Session&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-writerreviewer-pattern"&gt;The Writer/Reviewer Pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#refactoring"&gt;Refactoring&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#small-steps-with-verification"&gt;Small Steps with Verification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#large-scale-migrations"&gt;Large-Scale Migrations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#session-management"&gt;Session Management&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#when-to-clear-context"&gt;When to Clear Context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#rewind-and-checkpoints"&gt;Rewind and Checkpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#named-sessions"&gt;Named Sessions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#resuming-work"&gt;Resuming Work&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#multi-session-and-parallel-work"&gt;Multi-Session and Parallel Work&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#git-worktrees-for-isolation"&gt;Git Worktrees for Isolation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#tmux-monitoring-layouts"&gt;tmux Monitoring Layouts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#headless-mode-for-automation"&gt;Headless Mode for Automation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fan-out-pattern"&gt;Fan-Out Pattern&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#subagent-patterns"&gt;Subagent Patterns&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#investigation-without-context-pollution"&gt;Investigation Without Context Pollution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#post-implementation-verification"&gt;Post-Implementation Verification&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#when-not-to-use-subagents"&gt;When Not to Use Subagents&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#common-failure-patterns"&gt;Common Failure Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#best-practices"&gt;Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-core-loop"&gt;The Core Loop&lt;a class="anchor" href="#the-core-loop"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every Claude Code workflow follows the same fundamental loop:&lt;/p&gt;</description></item><item><title>Azure Foundry Fundamentals</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/foundry-fundamentals/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/foundry-fundamentals/</guid><description>&lt;h1 id="azure-foundry-fundamentals"&gt;Azure Foundry Fundamentals&lt;a class="anchor" href="#azure-foundry-fundamentals"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="what-is-azure-ai-foundry"&gt;What Is Azure AI Foundry?&lt;a class="anchor" href="#what-is-azure-ai-foundry"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Azure AI Foundry (also called Microsoft Foundry) is Microsoft&amp;rsquo;s managed AI platform. Anthropic&amp;rsquo;s Claude models are available as partner models through Foundry, giving you an Azure-native API that uses the same Entra ID, billing, networking, and compliance infrastructure you already use for everything else in Azure.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analogy for Cloud Foundry practitioners:&lt;/strong&gt; Same abstraction as Bedrock &amp;ndash; developers call an API, the platform team controls networking, access, cost, and compliance underneath. The difference is which cloud&amp;rsquo;s control plane you&amp;rsquo;re working with.&lt;/p&gt;</description></item><item><title>CLAUDE.md Architecture -- Four-Layer Context Hierarchy</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/claude-md-architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/claude-md-architecture/</guid><description>&lt;h1 id="claudemd-architecture--four-layer-context-hierarchy"&gt;CLAUDE.md Architecture &amp;ndash; Four-Layer Context Hierarchy&lt;a class="anchor" href="#claudemd-architecture--four-layer-context-hierarchy"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="the-core-design-problem"&gt;The Core Design Problem&lt;a class="anchor" href="#the-core-design-problem"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code has a context window of ~200K tokens. Every CLAUDE.md file, every rule, every skill description, every file Claude reads, every conversation turn competes for space. The context window is the scarce resource, and the platform engineer&amp;rsquo;s job is to manage it like memory in a constrained system.&lt;/p&gt;
&lt;p&gt;Unlike human developers who can skim past irrelevant instructions, Claude treats everything in its context with roughly equal attention. Irrelevant instructions don&amp;rsquo;t just waste tokens &amp;ndash; they actively dilute the signal.&lt;/p&gt;</description></item><item><title>Anthropic's Chief on A.I.: 'We Don't Know if the Models Are Conscious'</title><link>http://www.markalston.net/claude-code-wiki/perspectives/2026-02-12-dario-we-dont-know-ai-conscious/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/perspectives/2026-02-12-dario-we-dont-know-ai-conscious/</guid><description>&lt;h1 id="anthropics-chief-on-ai-we-dont-know-if-the-models-are-conscious"&gt;Anthropic&amp;rsquo;s Chief on A.I.: &amp;lsquo;We Don&amp;rsquo;t Know if the Models Are Conscious&amp;rsquo;&lt;a class="anchor" href="#anthropics-chief-on-ai-we-dont-know-if-the-models-are-conscious"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Dario Amodei shares his utopian &amp;ndash; and dystopian &amp;ndash; predictions in the near term for artificial intelligence.&lt;/p&gt;
&lt;/blockquote&gt;&lt;p&gt;&lt;strong&gt;Date:&lt;/strong&gt; Feb. 12, 2026
&lt;strong&gt;Source:&lt;/strong&gt; New York Times, &amp;ldquo;Interesting Times&amp;rdquo; podcast
&lt;strong&gt;Host:&lt;/strong&gt; Ross Douthat
&lt;strong&gt;Guest:&lt;/strong&gt; Dario Amodei, CEO of Anthropic&lt;/p&gt;
&lt;h2 id="the-optimistic-vision"&gt;The Optimistic Vision&lt;a class="anchor" href="#the-optimistic-vision"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="ai-for-biology-and-medicine"&gt;AI for Biology and Medicine&lt;a class="anchor" href="#ai-for-biology-and-medicine"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Douthat:&lt;/strong&gt; If everything goes amazingly in the next five or 10 years, what&amp;rsquo;s A.I. for?&lt;/p&gt;</description></item><item><title>Debugging Techniques: Systematic Troubleshooting with Claude Code</title><link>http://www.markalston.net/claude-code-wiki/guides/debugging-techniques/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/debugging-techniques/</guid><description>&lt;h1 id="debugging-techniques-systematic-troubleshooting-with-claude-code"&gt;Debugging Techniques: Systematic Troubleshooting with Claude Code&lt;a class="anchor" href="#debugging-techniques-systematic-troubleshooting-with-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Debugging with Claude Code works best when treated as a systematic investigation, not a guessing game. The core principle: understand the root cause before attempting a fix. Claude performs dramatically better at debugging when given the actual error, a way to reproduce it, and a way to verify the fix. Ad-hoc &amp;ldquo;try this, try that&amp;rdquo; approaches waste context and produce fragile patches.&lt;/p&gt;</description></item><item><title>Custom Hooks Cookbook: Practical Recipes for Automating Claude Code</title><link>http://www.markalston.net/claude-code-wiki/extending/hooks-cookbook/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/extending/hooks-cookbook/</guid><description>&lt;h1 id="custom-hooks-cookbook-practical-recipes-for-automating-claude-code"&gt;Custom Hooks Cookbook: Practical Recipes for Automating Claude Code&lt;a class="anchor" href="#custom-hooks-cookbook-practical-recipes-for-automating-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Hooks let you run code at specific points in Claude Code&amp;rsquo;s lifecycle &amp;ndash; before a tool runs, after a file is edited, when a session starts, when Claude finishes responding. This cookbook provides copy-paste-ready recipes for the most common use cases: auto-formatting, command safety, test gates, notifications, logging, and context injection. Each recipe includes the hook configuration, the script, and notes on gotchas.&lt;/p&gt;</description></item><item><title>Product Manager Path</title><link>http://www.markalston.net/claude-code-wiki/training/product-manager-path/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/training/product-manager-path/</guid><description>&lt;h1 id="product-manager-path"&gt;Product Manager Path&lt;a class="anchor" href="#product-manager-path"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Technical literacy for product managers using Claude Code. This path starts with what PMs can do directly &amp;ndash; research synthesis, prioritization modeling, requirements writing &amp;ndash; then builds the technical context needed to collaborate effectively with development teams.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Module&lt;/th&gt;
 &lt;th&gt;Focus&lt;/th&gt;
 &lt;th&gt;Prerequisites&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-1-how-claude-code-works"&gt;1. How Claude Code Works&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;What it is, what PMs can do with it&lt;/td&gt;
 &lt;td&gt;None&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-2-product-research--discovery"&gt;2. Product Research &amp;amp; Discovery&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Research synthesis, validation, prototyping&lt;/td&gt;
 &lt;td&gt;Module 1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-3-requirements--prioritization"&gt;3. Requirements &amp;amp; Prioritization&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Specs, decomposition, trade-off modeling&lt;/td&gt;
 &lt;td&gt;Module 2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-4-technical-literacy"&gt;4. Technical Literacy&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Design, architecture, standards, TDD essentials&lt;/td&gt;
 &lt;td&gt;Module 2&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;a href="#module-5-working-with-development-teams"&gt;5. Working with Development Teams&lt;/a&gt;&lt;/td&gt;
 &lt;td&gt;Tickets, reviews, session planning&lt;/td&gt;
 &lt;td&gt;Modules 1-4&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Modules 3 and 4 can be taken in either order. Both depend on Module 2, and Module 5 depends on all four.&lt;/p&gt;</description></item><item><title>Prompt Caching: Why Your System Prompt Doesn't Cost What You Think</title><link>http://www.markalston.net/claude-code-wiki/internals/prompt-caching/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/prompt-caching/</guid><description>&lt;h1 id="prompt-caching-why-your-system-prompt-doesnt-cost-what-you-think"&gt;Prompt Caching: Why Your System Prompt Doesn&amp;rsquo;t Cost What You Think&lt;a class="anchor" href="#prompt-caching-why-your-system-prompt-doesnt-cost-what-you-think"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Prompt caching allows the API to reuse previously processed prompt prefixes, reducing both cost and latency. Since Claude Code re-sends the system prompt on every API call, caching is what makes large system prompts economically viable. Without caching, a 200-message session with a 15,000-token system prompt would cost ~$15 on Opus 4.6. With caching, it costs ~$1.60 &amp;ndash; an 89% reduction.&lt;/p&gt;</description></item><item><title>Reference Configurations</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/reference-configs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/appendix/reference-configs/</guid><description>&lt;h1 id="reference-configurations"&gt;Reference Configurations&lt;a class="anchor" href="#reference-configurations"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="managed-settingsjson-enterprise-baseline"&gt;managed-settings.json (Enterprise Baseline)&lt;a class="anchor" href="#managed-settingsjson-enterprise-baseline"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Deploy to all developer machines via Mobile Device Management (MDM).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_USE_BEDROCK&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;ANTHROPIC_BEDROCK_BASE_URL&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://llm-gateway.internal.corp.com/bedrock&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_SKIP_BEDROCK_AUTH&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;cleanupPeriodDays&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;permissions&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;disableBypassPermissionsMode&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;disable&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;deny&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.env)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.env.*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/secrets/**)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/.ssh/**)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Read(**/credentials*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(sudo:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(su:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(curl:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(wget:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(ssh:*)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;Bash(rm -rf:*)&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowManagedPermissionRulesOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;allowManagedHooksOnly&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;strictKnownMarketplaces&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="file-locations"&gt;File Locations&lt;a class="anchor" href="#file-locations"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Platform&lt;/th&gt;
 &lt;th&gt;Path&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;macOS&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/Library/Application Support/ClaudeCode/managed-settings.json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Linux&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/etc/claude-code/managed-settings.json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Windows&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;C:\Program Files\ClaudeCode\managed-settings.json&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="developer-shell-environment-variables"&gt;Developer Shell Environment Variables&lt;a class="anchor" href="#developer-shell-environment-variables"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# /etc/profile.d/claude-code.sh&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Bedrock routing (also set in managed-settings.json env)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;CLAUDE_CODE_USE_BEDROCK&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;ANTHROPIC_BEDROCK_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;https://llm-gateway.internal.corp.com/bedrock&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;CLAUDE_CODE_SKIP_BEDROCK_AUTH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Corporate CA cert for proxy (if applicable)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;export&lt;/span&gt; &lt;span class="nv"&gt;NODE_EXTRA_CA_CERTS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;/etc/ssl/certs/corp-ca-bundle.pem&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Optional: Model overrides&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# export ANTHROPIC_MODEL=&amp;#39;claude-sonnet-4-5-20250929&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# export ANTHROPIC_DEFAULT_HAIKU_MODEL=&amp;#39;us.anthropic.claude-haiku-4-5-20251001-v1:0&amp;#39;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="terraform-vpc-endpoint-for-bedrock"&gt;Terraform: VPC Endpoint for Bedrock&lt;a class="anchor" href="#terraform-vpc-endpoint-for-bedrock"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_vpc_endpoint&amp;#34; &amp;#34;bedrock_runtime&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; service_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;com.amazonaws.${var.region}.bedrock-runtime&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_endpoint_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Interface&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; private_dns_enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; subnet_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;private_subnet_ids&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; security_group_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;aws_security_group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;bedrock_endpoint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; policy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;jsonencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2012-10-17&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Statement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Effect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Principal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModel&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModelWithResponseStream&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Resource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_security_group&amp;#34; &amp;#34;bedrock_endpoint&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; name_prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bedrock-endpoint-&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ingress&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; from_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; to_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; protocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; cidr_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;developer_subnet_cidrs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Allow HTTPS from developer subnets&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;egress&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; from_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; to_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; protocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;-1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; cidr_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;0.0.0.0/0&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="iam-policy-for-bedrock-access"&gt;IAM Policy for Bedrock Access&lt;a class="anchor" href="#iam-policy-for-bedrock-access"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Version&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2012-10-17&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Statement&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Effect&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Action&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModel&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModelWithResponseStream&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:ListInferenceProfiles&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;&amp;#34;Resource&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Attach to the IAM role used by the LLM gateway service, not to individual developer users.&lt;/p&gt;</description></item><item><title>Requirements &amp; Specifications: From Problem to Prompt</title><link>http://www.markalston.net/claude-code-wiki/product/requirements-specifications/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/product/requirements-specifications/</guid><description>&lt;h1 id="requirements--specifications-from-problem-to-prompt"&gt;Requirements &amp;amp; Specifications: From Problem to Prompt&lt;a class="anchor" href="#requirements--specifications-from-problem-to-prompt"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;You&amp;rsquo;ve done the research. You know what users struggle with. Now you need to turn that understanding into something precise enough that you &amp;ndash; or Claude Code &amp;ndash; can build it. This article covers requirement formats, feature decomposition, edge case discovery, and the handoff to spec-driven development. The goal: close the gap between &amp;ldquo;I understand the problem&amp;rdquo; and &amp;ldquo;I can write a build prompt.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Security Controls</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/security-controls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/security-controls/</guid><description>&lt;h1 id="security-controls"&gt;Security Controls&lt;a class="anchor" href="#security-controls"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="claude-code-permission-model"&gt;Claude Code Permission Model&lt;a class="anchor" href="#claude-code-permission-model"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code requires explicit developer approval for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Writing or modifying files&lt;/li&gt;
&lt;li&gt;Executing shell commands&lt;/li&gt;
&lt;li&gt;Making network requests (beyond the LLM API)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is the first line of defense. Developers see what Claude wants to do before it happens.&lt;/p&gt;
&lt;h2 id="non-negotiable-controls"&gt;Non-Negotiable Controls&lt;a class="anchor" href="#non-negotiable-controls"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="bypass-mode-disabled"&gt;Bypass Mode Disabled&lt;a class="anchor" href="#bypass-mode-disabled"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;disableBypassPermissionsMode: &amp;quot;disable&amp;quot;&lt;/code&gt; in managed-settings.json prevents &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt;. This flag removes all permission prompts and lets Claude execute freely &amp;ndash; never use in production or enterprise environments, regardless of developer convenience arguments.&lt;/p&gt;</description></item><item><title>How Coding Assistants Manage Context</title><link>http://www.markalston.net/claude-code-wiki/guides/coding-assistants-context/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/coding-assistants-context/</guid><description>&lt;h1 id="how-coding-assistants-manage-context"&gt;How Coding Assistants Manage Context&lt;a class="anchor" href="#how-coding-assistants-manage-context"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Raw API usage gives you a context window and a model. Everything else &amp;ndash; deciding what to put in that window, when to remove it, and how to structure requests &amp;ndash; is your problem. Coding assistants like Claude Code and GitHub Copilot take on parts of that work automatically.&lt;/p&gt;
&lt;p&gt;This page covers what they actually do, where the approaches differ, and where both fall short.&lt;/p&gt;</description></item><item><title>Integration Patterns: Connecting Claude Code with External Tools and Services</title><link>http://www.markalston.net/claude-code-wiki/extending/integration-patterns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/extending/integration-patterns/</guid><description>&lt;h1 id="integration-patterns-connecting-claude-code-with-external-tools-and-services"&gt;Integration Patterns: Connecting Claude Code with External Tools and Services&lt;a class="anchor" href="#integration-patterns-connecting-claude-code-with-external-tools-and-services"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code connects to external systems through four integration mechanisms: MCP servers for tool access, hooks for workflow automation, headless mode for CLI scripting, and GitHub Actions for CI/CD. Each serves a different purpose and operates at a different layer. This article covers when to use each, how they work, and practical patterns for combining them.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Mechanism&lt;/th&gt;
 &lt;th&gt;Purpose&lt;/th&gt;
 &lt;th&gt;Direction&lt;/th&gt;
 &lt;th&gt;Runs When&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;MCP servers&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Connect external tools/data&lt;/td&gt;
 &lt;td&gt;Claude calls out&lt;/td&gt;
 &lt;td&gt;Claude decides to use it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Hooks&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Automate around Claude&amp;rsquo;s work&lt;/td&gt;
 &lt;td&gt;System calls scripts&lt;/td&gt;
 &lt;td&gt;Lifecycle events fire&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Headless mode&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Script Claude from outside&lt;/td&gt;
 &lt;td&gt;External calls in&lt;/td&gt;
 &lt;td&gt;Your script invokes it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;CI/CD automation&lt;/td&gt;
 &lt;td&gt;Events call Claude&lt;/td&gt;
 &lt;td&gt;GitHub events trigger it&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#integration-patterns-connecting-claude-code-with-external-tools-and-services"&gt;Integration Patterns: Connecting Claude Code with External Tools and Services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#executive-summary"&gt;Executive Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#table-of-contents"&gt;Table of Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#the-integration-landscape"&gt;The Integration Landscape&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-servers-connecting-external-tools"&gt;MCP Servers: Connecting External Tools&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#transport-types"&gt;Transport Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#configuration-scopes"&gt;Configuration Scopes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#authentication"&gt;Authentication&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#practical-mcp-examples"&gt;Practical MCP Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-tool-search"&gt;MCP Tool Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mcp-resources"&gt;MCP Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#hooks-automating-workflows"&gt;Hooks: Automating Workflows&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#hook-lifecycle"&gt;Hook Lifecycle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hook-types"&gt;Hook Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#common-hook-patterns"&gt;Common Hook Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#async-hooks"&gt;Async Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hook-configuration-locations"&gt;Hook Configuration Locations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#headless-mode-cli-automation"&gt;Headless Mode: CLI Automation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#basic-usage"&gt;Basic Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#output-formats"&gt;Output Formats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-prompt-customization"&gt;System Prompt Customization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#piping-and-composition"&gt;Piping and Composition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#automation-flags"&gt;Automation Flags&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#github-actions-cicd-integration"&gt;GitHub Actions: CI/CD Integration&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-official-action"&gt;The Official Action&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#setup"&gt;Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#common-workflows"&gt;Common Workflows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cost-considerations"&gt;Cost Considerations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#claude-as-mcp-server"&gt;Claude as MCP Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#plugins-packaging-integrations"&gt;Plugins: Packaging Integrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#integration-decision-framework"&gt;Integration Decision Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#combining-integration-patterns"&gt;Combining Integration Patterns&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#mcp--hooks-auto-validated-external-access"&gt;MCP + Hooks: Auto-Validated External Access&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#headless--github-actions-automated-pr-reviews"&gt;Headless + GitHub Actions: Automated PR Reviews&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hooks--headless-self-correcting-ci-pipeline"&gt;Hooks + Headless: Self-Correcting CI Pipeline&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#project-scoped-mcp--claudemd-team-consistency"&gt;Project-Scoped MCP + CLAUDE.md: Team Consistency&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#best-practices"&gt;Best Practices&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#anti-patterns"&gt;Anti-Patterns&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#using-mcp-when-a-hook-would-suffice"&gt;Using MCP When a Hook Would Suffice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#headless-mode-without-turn-limits"&gt;Headless Mode Without Turn Limits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#blocking-hooks-that-should-be-async"&gt;Blocking Hooks That Should Be Async&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#hardcoding-credentials-in-project-config"&gt;Hardcoding Credentials in Project Config&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#over-broad-hook-matchers"&gt;Over-Broad Hook Matchers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#references"&gt;References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-integration-landscape"&gt;The Integration Landscape&lt;a class="anchor" href="#the-integration-landscape"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code integrates with external systems through four distinct mechanisms. Each operates at a different layer and serves a different purpose:&lt;/p&gt;</description></item><item><title>Prototyping &amp; Iteration: Build to Learn</title><link>http://www.markalston.net/claude-code-wiki/product/prototyping-iteration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/product/prototyping-iteration/</guid><description>&lt;h1 id="prototyping--iteration-build-to-learn"&gt;Prototyping &amp;amp; Iteration: Build to Learn&lt;a class="anchor" href="#prototyping--iteration-build-to-learn"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A prototype is a question in code form. You build it to answer a specific question &amp;ndash; &amp;ldquo;can this API handle the load?&amp;rdquo;, &amp;ldquo;does this workflow make sense to users?&amp;rdquo;, &amp;ldquo;will these two systems integrate?&amp;rdquo; &amp;ndash; and then discard it. This article covers the types of prototypes, when to use each, the Claude Code workflow for running them, and the discipline of deciding what comes after.&lt;/p&gt;</description></item><item><title>Skills vs. Slash Commands vs. Rules -- Decision Framework</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/skills-commands-rules-decision-framework/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/skills-commands-rules-decision-framework/</guid><description>&lt;h1 id="skills-vs-slash-commands-vs-rules--decision-framework"&gt;Skills vs. Slash Commands vs. Rules &amp;ndash; Decision Framework&lt;a class="anchor" href="#skills-vs-slash-commands-vs-rules--decision-framework"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="when-to-use-rules-clauderulesmd"&gt;When to Use Rules (.claude/rules/*.md)&lt;a class="anchor" href="#when-to-use-rules-clauderulesmd"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use rules when the instruction is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Declarative&lt;/strong&gt; &amp;ndash; &amp;ldquo;when working on X files, follow Y conventions&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automatic&lt;/strong&gt; &amp;ndash; should apply without the developer invoking anything&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;About patterns and constraints&lt;/strong&gt;, not step-by-step procedures&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Path-scopable&lt;/strong&gt; &amp;ndash; different rules for different parts of the codebase&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Examples:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API endpoint conventions that apply whenever editing API files&lt;/li&gt;
&lt;li&gt;Testing requirements that activate when editing test files&lt;/li&gt;
&lt;li&gt;Security constraints that apply globally&lt;/li&gt;
&lt;li&gt;Framework-specific patterns (React, Go, etc.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="when-to-use-skills-claudeskills"&gt;When to Use Skills (.claude/skills/)&lt;a class="anchor" href="#when-to-use-skills-claudeskills"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use skills when the instruction is:&lt;/p&gt;</description></item><item><title>Structured AI Development Without the Framework</title><link>http://www.markalston.net/claude-code-wiki/perspectives/structured-ai-development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/perspectives/structured-ai-development/</guid><description>&lt;h1 id="structured-ai-development-without-the-framework"&gt;Structured AI Development Without the Framework&lt;a class="anchor" href="#structured-ai-development-without-the-framework"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Vibe coding &amp;ndash; describing what you want and letting AI build it &amp;ndash; works until it doesn&amp;rsquo;t.&lt;/p&gt;
&lt;p&gt;The first few hundred lines come fast. The AI scaffolds routes, components, database schemas. You iterate by describing changes in conversation. A working prototype appears in minutes.&lt;/p&gt;
&lt;p&gt;Then you hit a wall. Somewhere between 500 and 2,000 lines of generated code, the AI starts contradicting its earlier decisions. It rewrites a function it wrote 20 minutes ago. It adds a dependency it already added under a different name. The context window fills up and the AI loses track of what it built.&lt;/p&gt;</description></item><item><title>Testing Strategies: TDD Patterns and Test Automation with Claude Code</title><link>http://www.markalston.net/claude-code-wiki/guides/testing-strategies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/testing-strategies/</guid><description>&lt;h1 id="testing-strategies-tdd-patterns-and-test-automation-with-claude-code"&gt;Testing Strategies: TDD Patterns and Test Automation with Claude Code&lt;a class="anchor" href="#testing-strategies-tdd-patterns-and-test-automation-with-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Testing is the highest-leverage tool for getting good results from Claude Code. Tests give Claude a concrete feedback loop &amp;ndash; write code, run tests, see failures, fix. Without tests, Claude produces code that looks right but may not work. With tests, Claude iterates until the output actually passes. This article covers how to structure test-driven development with Claude Code, avoid common testing pitfalls, and automate testing workflows.&lt;/p&gt;</description></item><item><title>Optimizing Token Usage: Skills, Plugins, and Context Budget</title><link>http://www.markalston.net/claude-code-wiki/internals/token-optimization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/token-optimization/</guid><description>&lt;h1 id="optimizing-token-usage-skills-plugins-and-context-budget"&gt;Optimizing Token Usage: Skills, Plugins, and Context Budget&lt;a class="anchor" href="#optimizing-token-usage-skills-plugins-and-context-budget"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every Claude Code session carries a baseline token cost from skills, plugins, and system configuration loaded into the context window. This cost is per-message &amp;ndash; paid on every API round-trip regardless of whether the features are used. Understanding and managing this overhead directly impacts session cost, available context for actual work, and response latency.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Component&lt;/th&gt;
 &lt;th&gt;When Loaded&lt;/th&gt;
 &lt;th&gt;Token Cost Pattern&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Skill catalog&lt;/strong&gt; (names + descriptions)&lt;/td&gt;
 &lt;td&gt;Every message&lt;/td&gt;
 &lt;td&gt;~25-100 tokens per skill&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Skill content&lt;/strong&gt; (full SKILL.md)&lt;/td&gt;
 &lt;td&gt;On invocation only&lt;/td&gt;
 &lt;td&gt;Varies (can be significant)&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Plugin subagents&lt;/strong&gt; (descriptions in Task tool)&lt;/td&gt;
 &lt;td&gt;Every message&lt;/td&gt;
 &lt;td&gt;~50-150 tokens per subagent&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;CLAUDE.md files&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Every message&lt;/td&gt;
 &lt;td&gt;Entire file contents&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;MCP tool definitions&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;Every message&lt;/td&gt;
 &lt;td&gt;~30-80 tokens per tool&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A typical setup with 20+ plugins can consume &lt;strong&gt;4,000-5,000+ tokens per message&lt;/strong&gt; just for the skill/subagent catalog &amp;ndash; before any actual work happens.&lt;/p&gt;</description></item><item><title>VPC Endpoint and PrivateLink Architecture</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/vpc-privatelink/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/vpc-privatelink/</guid><description>&lt;h1 id="vpc-endpoint-and-privatelink-architecture"&gt;VPC Endpoint and PrivateLink Architecture&lt;a class="anchor" href="#vpc-endpoint-and-privatelink-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;a class="anchor" href="#purpose"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Create a private connection between the corporate VPC and Amazon Bedrock. No internet gateway, no NAT, no public IPs needed. All traffic between the enterprise network and Bedrock stays within AWS&amp;rsquo;s private backbone.&lt;/p&gt;
&lt;h2 id="key-terraform-resources"&gt;Key Terraform Resources&lt;a class="anchor" href="#key-terraform-resources"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# VPC Endpoint for Bedrock Runtime
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_vpc_endpoint&amp;#34; &amp;#34;bedrock_runtime&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; service_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;com.amazonaws.${var.region}.bedrock-runtime&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_endpoint_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Interface&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; private_dns_enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; subnet_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;private_subnet_ids&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; security_group_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;aws_security_group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;bedrock_endpoint&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; policy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;jsonencode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Version&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;2012-10-17&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Statement&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Effect&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Allow&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Principal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModel&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;bedrock:InvokeModelWithResponseStream&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; Resource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;*&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;span class="c1"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Security group: only allow traffic from developer subnets
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_security_group&amp;#34; &amp;#34;bedrock_endpoint&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; name_prefix&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;bedrock-endpoint-&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; vpc_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_vpc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;ingress&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; from_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; to_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;443&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; protocol&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;tcp&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; cidr_blocks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;developer_subnet_cidrs&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="design-decisions"&gt;Design Decisions&lt;a class="anchor" href="#design-decisions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="private-dns-enabled"&gt;Private DNS Enabled&lt;a class="anchor" href="#private-dns-enabled"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;With &lt;code&gt;private_dns_enabled = true&lt;/code&gt;, Claude Code&amp;rsquo;s standard Bedrock URLs resolve internally to the VPC endpoint&amp;rsquo;s private IP addresses. No application-level configuration changes needed beyond enabling Bedrock mode.&lt;/p&gt;</description></item><item><title>Agent Teams: Multi-Agent Orchestration in Claude Code</title><link>http://www.markalston.net/claude-code-wiki/extending/agent-teams/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/extending/agent-teams/</guid><description>&lt;h1 id="agent-teams-multi-agent-orchestration-in-claude-code"&gt;Agent Teams: Multi-Agent Orchestration in Claude Code&lt;a class="anchor" href="#agent-teams-multi-agent-orchestration-in-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Agent teams let multiple Claude Code instances work together on complex tasks. One session acts as team lead, coordinating work and assigning tasks. Teammates work independently in their own context windows, communicate through direct messaging, and share a task list. This is an experimental feature (disabled by default) that&amp;rsquo;s most valuable for tasks that benefit from parallel work, competing perspectives, or specialized roles.&lt;/p&gt;</description></item><item><title>Extended Thinking: How Claude Reasons Through Complex Problems</title><link>http://www.markalston.net/claude-code-wiki/internals/extended-thinking/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/extended-thinking/</guid><description>&lt;h1 id="extended-thinking-how-claude-reasons-through-complex-problems"&gt;Extended Thinking: How Claude Reasons Through Complex Problems&lt;a class="anchor" href="#extended-thinking-how-claude-reasons-through-complex-problems"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Extended thinking gives Claude additional tokens to reason before responding. On Opus 4.6 and Sonnet 4.6, thinking is adaptive: Claude decides how much to think based on task complexity. Thinking tokens are billed as output tokens ($25/MTok on Opus 4.6), making thinking depth the second-biggest cost lever after model selection. On Opus 4.6, effort levels (low/medium/high/max) control how much Claude thinks; Sonnet 4.6 supports low/medium/high effort.&lt;/p&gt;</description></item><item><title>LLM Gateway Design</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/llm-gateway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/llm-gateway/</guid><description>&lt;h1 id="llm-gateway-design"&gt;LLM Gateway Design&lt;a class="anchor" href="#llm-gateway-design"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="why-a-gateway"&gt;Why a Gateway?&lt;a class="anchor" href="#why-a-gateway"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;The LLM gateway is the piece most enterprises skip and regret. Without it, you have 500 developer machines each holding AWS credentials and making direct Bedrock calls with no centralized visibility or control.&lt;/p&gt;
&lt;p&gt;Deploy &lt;strong&gt;LiteLLM&lt;/strong&gt; (open-source or enterprise cloud) or &lt;strong&gt;Kong AI Gateway&lt;/strong&gt; as an internal service between developers and Bedrock.&lt;/p&gt;
&lt;h2 id="what-the-gateway-provides"&gt;What the Gateway Provides&lt;a class="anchor" href="#what-the-gateway-provides"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="per-userper-team-token-budgets-and-rate-limiting"&gt;Per-User/Per-Team Token Budgets and Rate Limiting&lt;a class="anchor" href="#per-userper-team-token-budgets-and-rate-limiting"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Set monthly token budgets per team or per user&lt;/li&gt;
&lt;li&gt;Default to Sonnet for routine work, gate Opus access to specific use cases&lt;/li&gt;
&lt;li&gt;Prevent a single developer from burning through the entire org&amp;rsquo;s budget&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="centralized-authentication"&gt;Centralized Authentication&lt;a class="anchor" href="#centralized-authentication"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The gateway holds AWS credentials for Bedrock &amp;ndash; developers don&amp;rsquo;t need AWS access&lt;/li&gt;
&lt;li&gt;Developers authenticate to the gateway via corporate SSO&lt;/li&gt;
&lt;li&gt;Eliminates 500 sets of AWS credentials on developer machines&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="requestresponse-logging-for-audit"&gt;Request/Response Logging for Audit&lt;a class="anchor" href="#requestresponse-logging-for-audit"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Log request metadata: who, when, which model, token count, latency&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t log prompt content if Zero Data Retention (ZDR) is active&lt;/li&gt;
&lt;li&gt;Feed metrics to CloudWatch or your observability stack&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="provider-abstraction"&gt;Provider Abstraction&lt;a class="anchor" href="#provider-abstraction"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Swap models or providers without touching developer configs&lt;/li&gt;
&lt;li&gt;Route to different models based on request characteristics&lt;/li&gt;
&lt;li&gt;A/B test model versions transparently&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="developer-facing-configuration"&gt;Developer-Facing Configuration&lt;a class="anchor" href="#developer-facing-configuration"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Once the gateway is deployed, the developer config becomes three environment variables:&lt;/p&gt;</description></item><item><title>Model Selection &amp; Cost Management: Choosing the Right Model and Controlling Spend</title><link>http://www.markalston.net/claude-code-wiki/guides/model-selection/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/model-selection/</guid><description>&lt;h1 id="model-selection--cost-management-choosing-the-right-model-and-controlling-spend"&gt;Model Selection &amp;amp; Cost Management: Choosing the Right Model and Controlling Spend&lt;a class="anchor" href="#model-selection--cost-management-choosing-the-right-model-and-controlling-spend"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code offers three model tiers &amp;ndash; Opus, Sonnet, and Haiku &amp;ndash; each with different capability, speed, and cost profiles. The right model depends on the task: Opus for complex reasoning, Sonnet for daily coding, Haiku for fast simple tasks. Beyond model choice, Claude Code provides several cost control mechanisms: prompt caching, auto-compaction, budget caps, effort levels, and subagent model selection. This article covers how to choose models, configure them, and manage costs effectively.&lt;/p&gt;</description></item><item><title>Feature Prioritization &amp; Trade-offs</title><link>http://www.markalston.net/claude-code-wiki/product/prioritization-tradeoffs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/product/prioritization-tradeoffs/</guid><description>&lt;h1 id="feature-prioritization--trade-offs"&gt;Feature Prioritization &amp;amp; Trade-offs&lt;a class="anchor" href="#feature-prioritization--trade-offs"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Every team has more ideas than capacity. The hard part of product work is deciding what to build next and &amp;ndash; equally important &amp;ndash; what to defer. This article covers prioritization frameworks you can apply to a backlog, the concept of opportunity cost in engineering decisions, the discipline of saying no, and how Claude Code can model trade-offs quantitatively.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Framework&lt;/th&gt;
 &lt;th&gt;Best For&lt;/th&gt;
 &lt;th&gt;Inputs Needed&lt;/th&gt;
 &lt;th&gt;Output&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Impact vs. effort&lt;/td&gt;
 &lt;td&gt;Comparing features against each other&lt;/td&gt;
 &lt;td&gt;Estimated impact (users, revenue, retention), estimated effort (days, complexity)&lt;/td&gt;
 &lt;td&gt;2x2 matrix ranking features by ROI&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;RICE scoring&lt;/td&gt;
 &lt;td&gt;Large backlogs with mixed feature types&lt;/td&gt;
 &lt;td&gt;Reach, impact, confidence, effort&lt;/td&gt;
 &lt;td&gt;Numeric score for stack-ranking&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Opportunity cost&lt;/td&gt;
 &lt;td&gt;Binary build-or-defer decisions&lt;/td&gt;
 &lt;td&gt;What else the team could build with the same time&lt;/td&gt;
 &lt;td&gt;Explicit comparison of alternatives&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cost of delay&lt;/td&gt;
 &lt;td&gt;Time-sensitive features&lt;/td&gt;
 &lt;td&gt;Revenue or retention impact per week of delay&lt;/td&gt;
 &lt;td&gt;Urgency-adjusted priority&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="table-of-contents"&gt;Table of Contents&lt;a class="anchor" href="#table-of-contents"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#the-prioritization-problem"&gt;The Prioritization Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#impact-vs-effort"&gt;Impact vs. Effort&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#rice-scoring"&gt;RICE Scoring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#opportunity-cost"&gt;Opportunity Cost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cost-of-delay"&gt;Cost of Delay&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#saying-no"&gt;Saying No&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#modeling-trade-offs-with-claude-code"&gt;Modeling Trade-offs with Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#worked-example-the-dashboard-backlog"&gt;Worked Example: The Dashboard Backlog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#anti-patterns"&gt;Anti-Patterns&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-prioritization-problem"&gt;The Prioritization Problem&lt;a class="anchor" href="#the-prioritization-problem"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;A team has twelve features in the backlog, capacity for three this quarter, and stakeholders who each believe their feature is the most important. Without a framework, the loudest voice wins &amp;ndash; or the team compromises by starting five features and finishing none.&lt;/p&gt;</description></item><item><title>Skills Library Design -- Three-Tier Architecture</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/skills-library-design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/skills-library-design/</guid><description>&lt;h1 id="skills-library-design--three-tier-architecture"&gt;Skills Library Design &amp;ndash; Three-Tier Architecture&lt;a class="anchor" href="#skills-library-design--three-tier-architecture"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="anchor" href="#overview"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Skills are structured workflows Claude can invoke as complete procedures. Each skill needs a SKILL.md file with YAML frontmatter (name, description) and markdown instructions. The name becomes the /slash-command, and the description helps Claude decide when to load it automatically.&lt;/p&gt;
&lt;h2 id="tier-1-organization-skills-global-all-developers"&gt;Tier 1: Organization Skills (Global, All Developers)&lt;a class="anchor" href="#tier-1-organization-skills-global-all-developers"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Distributed via plugin marketplace (internal) or symlink from a shared repo. Installed to &lt;code&gt;~/.claude/skills/&lt;/code&gt; on each developer machine.&lt;/p&gt;</description></item><item><title>Context Budget Worksheet</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/context-budget-worksheet/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/context-budget-worksheet/</guid><description>&lt;h1 id="context-budget-worksheet"&gt;Context Budget Worksheet&lt;a class="anchor" href="#context-budget-worksheet"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;a class="anchor" href="#purpose"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Before building any CLAUDE.md or skills, do this exercise for each major codebase. It forces discipline about what goes where and prevents context overload.&lt;/p&gt;
&lt;h2 id="the-budget"&gt;The Budget&lt;a class="anchor" href="#the-budget"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code&amp;rsquo;s context window is approximately 200K tokens. Everything competes for this space: system prompt, CLAUDE.md files, rules, skill descriptions, code files Claude reads, conversation history, and Claude&amp;rsquo;s own reasoning.&lt;/p&gt;
&lt;h2 id="fixed-costs-always-loaded"&gt;Fixed Costs (Always Loaded)&lt;a class="anchor" href="#fixed-costs-always-loaded"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;These load into every session regardless of what the developer is doing.&lt;/p&gt;</description></item><item><title>Memory Organization: Structuring CLAUDE.md and Rules for Scale</title><link>http://www.markalston.net/claude-code-wiki/guides/memory-organization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/memory-organization/</guid><description>&lt;h1 id="memory-organization-structuring-claudemd-and-rules-for-scale"&gt;Memory Organization: Structuring CLAUDE.md and Rules for Scale&lt;a class="anchor" href="#memory-organization-structuring-claudemd-and-rules-for-scale"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code&amp;rsquo;s memory system is a hierarchy of markdown files loaded into the system prompt. Every file you add costs context window space on every message, so organization affects both clarity and efficiency. The key is putting the right information at the right scope, keeping files concise, and using the rules directory for modularity when a single CLAUDE.md gets unwieldy.&lt;/p&gt;</description></item><item><title>Security Constraint Clarification</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/security-constraint-clarification/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/02-phase-0-infrastructure-foundation/security-constraint-clarification/</guid><description>&lt;h1 id="security-constraint-clarification"&gt;Security Constraint Clarification&lt;a class="anchor" href="#security-constraint-clarification"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="first-conversation-with-the-ciso"&gt;First Conversation with the CISO&lt;a class="anchor" href="#first-conversation-with-the-ciso"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&amp;ldquo;No code leaves the network&amp;rdquo; has three interpretations that lead to completely different architectures. &lt;strong&gt;Get written alignment before doing anything else.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="level-1-no-code-to-anthropic-directly"&gt;Level 1: &amp;ldquo;No code to Anthropic directly&amp;rdquo;&lt;a class="anchor" href="#level-1-no-code-to-anthropic-directly"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;What it means:&lt;/strong&gt; Route through a cloud provider&amp;rsquo;s managed service (AWS Bedrock, Google Vertex AI). The enterprise&amp;rsquo;s contract is with AWS/GCP, not Anthropic directly. Data isn&amp;rsquo;t retained, isn&amp;rsquo;t used for training.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt; Claude Code → Bedrock (standard) or Vertex AI (standard)&lt;/p&gt;</description></item><item><title>Tool Execution Context</title><link>http://www.markalston.net/claude-code-wiki/internals/tool-execution-context/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/internals/tool-execution-context/</guid><description>&lt;h1 id="tool-execution-context"&gt;Tool Execution Context&lt;a class="anchor" href="#tool-execution-context"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;When Claude runs a bash command or any other tool, the system prompt and skill instructions are &lt;strong&gt;not re-injected&lt;/strong&gt; alongside the tool result. The result passes back to the model as bare output. This is sometimes called &amp;ldquo;pass-through&amp;rdquo; behavior.&lt;/p&gt;
&lt;p&gt;The distinction matters when your workflows depend on behavioral rules defined in CLAUDE.md or a skill file &amp;ndash; those rules are active when Claude is reasoning, but they are not re-delivered when Claude processes tool output.&lt;/p&gt;</description></item><item><title>Common Failure Modes</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/failure-modes/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/failure-modes/</guid><description>&lt;h1 id="common-failure-modes"&gt;Common Failure Modes&lt;a class="anchor" href="#common-failure-modes"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Patterns to watch for and coach against during the rollout.&lt;/p&gt;
&lt;h2 id="1-the-encyclopedia-claudemd"&gt;1. The Encyclopedia CLAUDE.md&lt;a class="anchor" href="#1-the-encyclopedia-claudemd"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Symptom:&lt;/strong&gt; A team dumps their entire wiki into CLAUDE.md. 300+ lines of coding standards, architecture descriptions, and process documentation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Effect:&lt;/strong&gt; Claude&amp;rsquo;s responses get slower, less focused, and the context window fills up before any real work happens. Instructions toward the end of a long CLAUDE.md receive less attention than those at the beginning.&lt;/p&gt;</description></item><item><title>Essential Plugins: Extending Claude Code with MCP Servers and Skill Packs</title><link>http://www.markalston.net/claude-code-wiki/guides/essential-plugins/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/essential-plugins/</guid><description>&lt;h1 id="essential-plugins-extending-claude-code-with-mcp-servers-and-skill-packs"&gt;Essential Plugins: Extending Claude Code with MCP Servers and Skill Packs&lt;a class="anchor" href="#essential-plugins-extending-claude-code-with-mcp-servers-and-skill-packs"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code out of the box has no memory across sessions, no access to library documentation, and no ability to interact with browsers or external services. Plugins fill these gaps. The ecosystem splits into two categories: &lt;strong&gt;MCP servers&lt;/strong&gt; that add new tools (memory databases, documentation APIs, browser control) and &lt;strong&gt;skill packs&lt;/strong&gt; that add workflow knowledge and specialized subagents (code review, feature development, hook automation).&lt;/p&gt;</description></item><item><title>Permissions &amp; Enterprise Deployment: Securing and Scaling Claude Code</title><link>http://www.markalston.net/claude-code-wiki/guides/permissions-enterprise/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/permissions-enterprise/</guid><description>&lt;h1 id="permissions--enterprise-deployment-securing-and-scaling-claude-code"&gt;Permissions &amp;amp; Enterprise Deployment: Securing and Scaling Claude Code&lt;a class="anchor" href="#permissions--enterprise-deployment-securing-and-scaling-claude-code"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code&amp;rsquo;s permission system controls what actions Claude can take &amp;ndash; from file reads to shell commands to network access. Permissions cascade across five settings scopes (managed, CLI, local, project, user), with deny rules always winning. Enterprise deployments add managed policy files, sandbox enforcement, provider flexibility (Bedrock, Vertex AI, Foundry), and organization-wide controls. This article covers the full permission lifecycle from individual developer configuration to team-wide lockdown.&lt;/p&gt;</description></item><item><title>What Developers See</title><link>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/what-developers-see/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/enterprise-rollout/03-phase-1-platform-engineering/what-developers-see/</guid><description>&lt;h1 id="what-developers-see"&gt;What Developers See&lt;a class="anchor" href="#what-developers-see"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;This is the page a team lead hands to developers on day one of rollout.&lt;/p&gt;
&lt;h2 id="when-a-deny-rule-fires"&gt;When a Deny Rule Fires&lt;a class="anchor" href="#when-a-deny-rule-fires"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Claude Code shows a notification explaining which policy blocked the action and why. The developer always sees what was blocked. For the full incident response workflow (rephrase, manual workaround, or policy exception), see &lt;a href="http://www.markalston.net/claude-code-wiki/enterprise-rollout/05-phase-3-observability-and-governance/security-controls/#if-a-deny-rule-is-triggered"&gt;Security Controls&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="checking-effective-permissions"&gt;Checking Effective Permissions&lt;a class="anchor" href="#checking-effective-permissions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Run &lt;code&gt;/permissions&lt;/code&gt; in any Claude Code session to see all active permission rules and their source (managed, project, user). Run &lt;code&gt;/settings&lt;/code&gt; to see the full effective configuration with managed overrides marked.&lt;/p&gt;</description></item><item><title>Spec-Driven Development: Structured Planning for AI-Assisted Projects</title><link>http://www.markalston.net/claude-code-wiki/guides/spec-driven-development/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/spec-driven-development/</guid><description>&lt;h1 id="spec-driven-development-structured-planning-for-ai-assisted-projects"&gt;Spec-Driven Development: Structured Planning for AI-Assisted Projects&lt;a class="anchor" href="#spec-driven-development-structured-planning-for-ai-assisted-projects"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="executive-summary"&gt;Executive Summary&lt;a class="anchor" href="#executive-summary"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Spec-driven development (SDD) is the practice of creating structured specifications &lt;em&gt;before&lt;/em&gt; writing code, then using those specs as context-engineered inputs for AI agents. Instead of describing what you want and hoping for good output, you decompose work into researched, planned, verified phases &amp;ndash; each executed in a fresh context window where quality stays high. This article covers the core principles, the development cycle, practical patterns, and how tools like Superpowers, GSD, and GitHub Spec Kit implement them.&lt;/p&gt;</description></item><item><title>Large Codebase Strategies</title><link>http://www.markalston.net/claude-code-wiki/guides/large-codebase-strategies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/large-codebase-strategies/</guid><description>&lt;h1 id="large-codebase-strategies"&gt;Large Codebase Strategies&lt;a class="anchor" href="#large-codebase-strategies"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Claude Code operates within a finite context window. On large codebases &amp;ndash; monorepos, enterprise services, anything with hundreds or thousands of files &amp;ndash; that window fills fast. When it does, Claude loses track of instructions, hallucinates file paths, and produces increasingly unreliable output.&lt;/p&gt;
&lt;p&gt;This page covers practical strategies for staying within context budget and getting better results when the codebase is bigger than what Claude can hold in its head at once.&lt;/p&gt;</description></item><item><title>Real-World Example: Legacy Java Modernization</title><link>http://www.markalston.net/claude-code-wiki/guides/legacy-java-modernization/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://www.markalston.net/claude-code-wiki/guides/legacy-java-modernization/</guid><description>&lt;h1 id="real-world-example-legacy-java-modernization"&gt;Real-World Example: Legacy Java Modernization&lt;a class="anchor" href="#real-world-example-legacy-java-modernization"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="overview"&gt;Overview&lt;a class="anchor" href="#overview"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;This example shows Agent Teams applied to a common enterprise problem: a legacy Java
monolith with decade-old dependencies that no one wants to touch. The goal is to give
a resistant team the confidence and tooling to act incrementally, rather than forcing
a big-bang rewrite.&lt;/p&gt;
&lt;p&gt;The scenario comes from a real consulting engagement: a 1M-line Spring/Hibernate
codebase, risk-averse stakeholders, and a team that hasn&amp;rsquo;t had the bandwidth or mandate
to address the underlying debt.&lt;/p&gt;</description></item></channel></rss>