<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0"><channel><title>Pulumi Blog: Codex</title><link>https://www.pulumi.com/blog/tags/codex/</link><description>Pulumi blog posts: Codex.</description><language>en-us</language><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><item><title>10 tips to improve your coding agent game</title><link>https://www.pulumi.com/blog/10-tips-to-improve-your-coding-agent-game/</link><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/10-tips-to-improve-your-coding-agent-game/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/10-tips-to-improve-your-coding-agent-game/index.png" /&gt;
&lt;p&gt;In May I told you to &lt;a href="https://www.pulumi.com/blog/stop-tuning-prompts-build-a-harness/"&gt;trim the root instruction file until it fits on one screen&lt;/a&gt;. I also said anything that needs a hard guarantee belongs in a hook. In June I argued that &lt;a href="https://www.pulumi.com/blog/stop-prompting-design-the-loop/"&gt;the model that wrote the code shouldn&amp;rsquo;t be the one grading it&lt;/a&gt;. Several papers published this summer tested related questions.&lt;/p&gt;
&lt;p&gt;Most of the findings support that advice, while the research on subagent costs calls for more caution. Below are ten tips for working with any coding agent. Each one is checked against what the research measured, which is sometimes narrower than the abstract suggests.&lt;/p&gt;
&lt;p&gt;Instructions kept only in chat can disappear during summarization. Nearly every fix below moves something out of the chat and into a file, a hook, a test, or a fresh session. That&amp;rsquo;s what I meant in June by &amp;ldquo;the agent forgets, the repo does not.&amp;rdquo;&lt;/p&gt;
&lt;h2 id="agent-instructions"&gt;Agent instructions&lt;/h2&gt;
&lt;h3 id="1-write-for-the-agent-not-for-a-new-hire"&gt;1. Write for the agent, not for a new hire&lt;/h3&gt;
&lt;p&gt;A new hire can ask a teammate what a vague convention means. An agent may proceed with an interpretation you never intended. Anthropic&amp;rsquo;s &lt;a href="https://code.claude.com/docs/en/memory"&gt;docs on project instructions&lt;/a&gt; ask for instructions &amp;ldquo;concrete enough to verify,&amp;rdquo; like &amp;ldquo;API handlers live in &lt;code&gt;src/api/handlers/&lt;/code&gt;&amp;rdquo; instead of &amp;ldquo;Keep files organized.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;One line in my own Go instructions says to wrap errors with &lt;code&gt;fmt.Errorf(&amp;quot;...: %w&amp;quot;, err)&lt;/code&gt; and never discard one silently. An agent can follow that, and a reviewer can check it. Try doing either with &amp;ldquo;handle errors properly.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The instruction file is also where agents look first. A Peking University study by Zhijun Gao and Jing Chen &lt;a href="https://arxiv.org/abs/2608.20195"&gt;traced 557 real agent sessions&lt;/a&gt; and sorted every documentation touch. Instruction files and the agents&amp;rsquo; own working notes made up 60.5% of them, and API references only 1.3%. The authors couldn&amp;rsquo;t show that any particular writing style changes behavior. Most of their sessions also came from Claude Code, so the style question is still open.&lt;/p&gt;
&lt;h3 id="2-treat-agent-instructions-like-code-because-they-rot"&gt;2. Treat agent instructions like code, because they rot&lt;/h3&gt;
&lt;p&gt;Specific instructions go stale. Rename a folder or swap a database, and the file keeps describing a codebase that no longer exists. The agent then has two options: burn turns reconciling the two, or believe the file.&lt;/p&gt;
&lt;p&gt;How often does that happen? Christoph Treude and Sebastian Baltes &lt;a href="https://arxiv.org/abs/2606.09090"&gt;ran an existing documentation checker&lt;/a&gt;, DOCER, unchanged over 612 agent config files from 356 randomly sampled GitHub repositories. In close to one in four of those repositories, a file named a function, path, or script that had since vanished from the code.&lt;/p&gt;
&lt;p&gt;The authors call the number a feasibility signal rather than a precise rate. That&amp;rsquo;s fair, since only 32 of the 50 flags they checked by hand were real. A second paper explains why rot piles up. Across 441 repositories, &lt;a href="https://arxiv.org/abs/2608.25241"&gt;73.8% of AI configuration files&lt;/a&gt; were committed once and never touched again.&lt;/p&gt;
&lt;p&gt;A crude version of the check ran in September against the AGENTS.md of the repository this blog is built from. It flagged 37 of 124 path-like references. Nearly all were noise, mostly relative paths and files that live in other repositories. One wasn&amp;rsquo;t. Since a dark mode change in June, the file had been pointing agents at a &lt;code&gt;docs-logo.html&lt;/code&gt; partial that was never added to the repository.&lt;/p&gt;
&lt;p&gt;The authors suggest running the check in CI, and DOCER already has a &lt;a href="https://github.com/wesleytanws/DOCER_tool"&gt;GitHub Actions version&lt;/a&gt;. In May I described &lt;a href="https://www.pulumi.com/blog/stop-tuning-prompts-build-a-harness/"&gt;a &lt;code&gt;Stop&lt;/code&gt; hook that drafts instruction-file updates&lt;/a&gt; at the end of every session. It catches drift while the diff is still small. Either works if a human reads what it flags.&lt;/p&gt;
&lt;h3 id="3-keep-agentsmd-short-but-dont-delete-it"&gt;3. Keep AGENTS.md short, but don&amp;rsquo;t delete it&lt;/h3&gt;
&lt;p&gt;The mistake I see most often is a root AGENTS.md that has grown into a small book loaded into every session. Anthropic&amp;rsquo;s docs for Claude Code set a target of &lt;a href="https://code.claude.com/docs/en/memory"&gt;under 200 lines per file&lt;/a&gt;, because &amp;ldquo;longer files consume more context and reduce adherence.&amp;rdquo; Codex &lt;a href="https://learn.chatgpt.com/docs/agent-configuration/agents-md"&gt;stops reading AGENTS.md files&lt;/a&gt; once they add up to 32 KiB by default. Since v2.1.277, Claude Code &lt;a href="https://code.claude.com/docs/en/memory#agents-md"&gt;reads AGENTS.md directly&lt;/a&gt; as well, so one short file can now brief both agents.&lt;/p&gt;
&lt;p&gt;The cleanest measurement of that cost comes from outside coding. Lodha and colleagues at Microsoft &lt;a href="https://arxiv.org/abs/2606.10209"&gt;followed a GPT-5 agent&lt;/a&gt; that itemizes hotel expenses. They trimmed the tool-call history it carried from step to step down to the last five calls. Completion went up from 71.0% to 79.0%, and the agent used 63.9% fewer tokens doing it.&lt;/p&gt;
&lt;p&gt;Closer to home, a team from ETH Zurich and LogicStar.ai &lt;a href="https://arxiv.org/abs/2602.11988"&gt;tested context files&lt;/a&gt; with Claude Code, Codex, and Qwen Code. The files didn&amp;rsquo;t measurably help. Neither the generated nor the developer-written ones produced a statistically significant gain in task success. The generated ones also raised inference cost by 20% or more.&lt;/p&gt;
&lt;p&gt;Don&amp;rsquo;t delete the file, though. &lt;a href="https://arxiv.org/abs/2608.25241"&gt;Denisov-Blanch and colleagues&lt;/a&gt; followed 509 open-source repositories after they adopted coding agents. Among the agent-first ones, those with no committed AI configuration saw cognitive complexity grow 53%. The ones with at least an instruction file grew 27%. The authors call that hypothesis-generating rather than causal.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s still a good reason to keep the file and prune it instead. Anthropic&amp;rsquo;s &lt;a href="https://code.claude.com/docs/en/best-practices"&gt;best practices&lt;/a&gt; suggest one question for every line: &amp;ldquo;Would removing this cause Claude to make mistakes? If not, cut it.&amp;rdquo; Whatever survives the cut but only matters for some tasks belongs in skills or subdirectory files that load when the work gets there.&lt;/p&gt;
&lt;h2 id="long-sessions"&gt;Long sessions&lt;/h2&gt;
&lt;h3 id="4-dont-let-compact-carry-your-instructions"&gt;4. Don&amp;rsquo;t let /compact carry your instructions&lt;/h3&gt;
&lt;p&gt;When a session gets long, &lt;code&gt;/compact&lt;/code&gt; is the obvious move: summarize, free up the window, keep going. The research says to watch what you let it summarize.&lt;/p&gt;
&lt;p&gt;A University of Passau team &lt;a href="https://arxiv.org/abs/2608.22752"&gt;ran real agent config files through several compactors&lt;/a&gt;, including Claude Code&amp;rsquo;s &lt;code&gt;/compact&lt;/code&gt; on Sonnet 4.6. The prompt asked them to keep every safety instruction verbatim. After five rounds in a row, each halving the text, 10% of the safety instructions were left. After just one round, 53% survived, despite the prompt asking to preserve them all.&lt;/p&gt;
&lt;p&gt;Shiyang Chen &lt;a href="https://arxiv.org/abs/2606.22528"&gt;measured what agents do afterwards&lt;/a&gt;. Across seven models, one compaction raised policy violations from 0% to 30%, and to 59% for the worst two.&lt;/p&gt;
&lt;p&gt;Where the policy lived decided most of it. Policies in a preserved system message held. The same policies given as a standing user instruction, a memory entry, or tool output decayed by 33 to 50 points. For DeepSeek-V4, a compacted policy did worse than no policy at all. The summary kept the pending task and dropped the policy that constrained it.&lt;/p&gt;
&lt;p&gt;Claude Code handles part of this for you. After &lt;code&gt;/compact&lt;/code&gt;, it &lt;a href="https://code.claude.com/docs/en/context-window#what-survives-compaction"&gt;re-injects its project-root instruction file from disk&lt;/a&gt;. Anything you only typed into the chat gets summarized with the rest. AGENTS.md isn&amp;rsquo;t on that list, so if your instructions live there, a &lt;a href="https://code.claude.com/docs/en/hooks-guide#re-inject-context-after-compaction"&gt;&lt;code&gt;SessionStart&lt;/code&gt; hook that matches &lt;code&gt;compact&lt;/code&gt;&lt;/a&gt; is the documented way to put them back.&lt;/p&gt;
&lt;p&gt;Summaries aren&amp;rsquo;t useless. The expense agent from tip 3 did best, at 91.6%, when a summary replaced the tool calls it dropped. Summaries are fine for the trail of what happened.&lt;/p&gt;
&lt;p&gt;The better habit is to keep each task small enough that the session never needs compacting. Anthropic&amp;rsquo;s best practices already say to run &lt;code&gt;/clear&lt;/code&gt; between unrelated tasks. When a task runs long anyway, a handoff note you write yourself beats a summary you can&amp;rsquo;t inspect. In August I wrote that &lt;a href="https://www.pulumi.com/blog/sandboxing-coding-agents-yolo-mode/"&gt;prompt guardrails degrade with context length&lt;/a&gt;, and compaction is one way that happens.&lt;/p&gt;
&lt;h3 id="5-use-hooks-for-what-must-always-happen"&gt;5. Use hooks for what must always happen&lt;/h3&gt;
&lt;p&gt;An instruction in a markdown file is a request. The model honors it most of the time. That&amp;rsquo;s fine for naming conventions, and not fine for anything that has to happen every time. Ask an agent to run the tests before it finishes and it usually will. A &lt;code&gt;Stop&lt;/code&gt; hook runs them every time and hands the failures back. Claude Code&amp;rsquo;s &lt;a href="https://code.claude.com/docs/en/hooks-guide"&gt;hooks guide&lt;/a&gt; calls that &amp;ldquo;deterministic control: certain actions always happen rather than relying on the LLM to choose to run them.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;Chen&amp;rsquo;s fix points the same way: pinning the policy outside the summary took about 47 tokens and brought violations back to 0%. A hook goes further still. It never enters the context, so compaction has nothing to drop. For infrastructure, &lt;a href="https://www.pulumi.com/docs/discovery-governance/concepts/policy-as-code/"&gt;Pulumi Policies&lt;/a&gt; plays that role at deploy time: a mandatory policy blocks a noncompliant deployment, whatever the agent was told.&lt;/p&gt;
&lt;p&gt;My own setup has two small guardrail hooks. One blocks destructive shell commands, and the other scans every edited file for secrets. While I was working on this post, &lt;a href="https://github.com/rtk-ai/rtk"&gt;rtk&lt;/a&gt;, a &lt;code&gt;PreToolUse&lt;/code&gt; hook I use to compress command output, collided with Claude Code&amp;rsquo;s worktree isolation check. Every git command in the session was refused until I called git by its full path. That&amp;rsquo;s the behavior you want for the checks that matter, and a good reason to keep the list of hooks short.&lt;/p&gt;
&lt;h3 id="6-dont-switch-to-a-bigger-model-mid-task"&gt;6. Don&amp;rsquo;t switch to a bigger model mid-task&lt;/h3&gt;
&lt;p&gt;When a session goes sideways, it&amp;rsquo;s tempting to type &lt;code&gt;/model&lt;/code&gt;, pick the bigger one, and keep going. Keeping the same transcript can carry earlier mistakes into the stronger model&amp;rsquo;s attempt. Drew Breunig describes this as &lt;a href="https://www.dbreunig.com/2025/06/22/how-contexts-fail-and-how-to-fix-them.html"&gt;context poisoning&lt;/a&gt;: an error &amp;ldquo;makes it into the context, where it is repeatedly referenced.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;This tip has the strongest paper on the list. A group at AWS &lt;a href="https://arxiv.org/abs/2608.24358"&gt;ran all 500 SWE-bench Verified tasks&lt;/a&gt; with a cheap model that hands over to a strong one partway through. They tested Claude Haiku 4.5 to Opus 4.7 plus a GPT pair, across 58,000 runs. Handing over the full transcript recovered 47% of the gap between the two Claude models and 36% for GPT. It also cost more: $1.61 a task, against $0.72 for starting with Opus. Restarting Opus from scratch, even after paying for Haiku&amp;rsquo;s wasted attempt, came to $0.90 and solved more.&lt;/p&gt;
&lt;p&gt;When they dropped the transcript and kept only the file edits on disk, recovery climbed to 64% for Claude and 84% for GPT. If the task needs the big model, start with it. If you&amp;rsquo;re already halfway in, write down what&amp;rsquo;s done and where it&amp;rsquo;s stuck. Then open a new session on the stronger model, and point it at that note and the working tree.&lt;/p&gt;
&lt;h2 id="parallel-agents"&gt;Parallel agents&lt;/h2&gt;
&lt;h3 id="7-count-the-tokens-your-subagents-burn"&gt;7. Count the tokens your subagents burn&lt;/h3&gt;
&lt;p&gt;Parallel agents burn tokens fast. Anthropic&amp;rsquo;s write-up of &lt;a href="https://www.anthropic.com/engineering/multi-agent-research-system"&gt;its multi-agent research system&lt;/a&gt; puts rough numbers on it. Agents use about 4× the tokens of a chat. Multi-agent systems use about 15×. The same post notes that most coding tasks parallelize less well than research does. Claude Code&amp;rsquo;s &lt;a href="https://code.claude.com/docs/en/costs"&gt;cost docs&lt;/a&gt; put agent teams at roughly 7× the tokens of a standard session when teammates run in plan mode.&lt;/p&gt;
&lt;p&gt;The newer multi-agent features cost more too. Claude Code&amp;rsquo;s docs say a &lt;a href="https://code.claude.com/docs/en/workflows"&gt;dynamic workflow&lt;/a&gt; &amp;ldquo;can use meaningfully more tokens than working through the same task in conversation.&amp;rdquo; Claude Code warns when a run schedules more than 25 agents or its projected token total passes 1.5 million. Even a message sent through &lt;a href="https://code.claude.com/docs/en/cross-session-messaging"&gt;cross-session messaging&lt;/a&gt; &amp;ldquo;counts toward usage like a prompt you type.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The cost figures qualify my earlier advice. In May I told you to &lt;a href="https://www.pulumi.com/blog/stop-tuning-prompts-build-a-harness/"&gt;use the Explore subagent liberally&lt;/a&gt;, and for exploration I still would. A subagent that reads forty files to find the three that matter keeps all forty out of your main session.&lt;/p&gt;
&lt;p&gt;On Claude subscription plans, &lt;code&gt;/usage&lt;/code&gt; now breaks recent usage down by subagents, skills, plugins, and MCP servers, so you can see where it went. I prefer to decide which tasks get delegated before the agent starts spawning helpers. In &lt;a href="https://www.pulumi.com/blog/parallel-coding-playbook-for-pulumi/"&gt;the parallel coding playbook&lt;/a&gt;, the parallelism came from issues a human wrote, and that&amp;rsquo;s how I&amp;rsquo;d keep it.&lt;/p&gt;
&lt;h3 id="8-skip-the-coordinator-agent"&gt;8. Skip the coordinator agent&lt;/h3&gt;
&lt;p&gt;The team-lead pattern is tempting. One agent assigns the work, the others report back and message each other, and you get to watch it all happen. Claude Code&amp;rsquo;s own &lt;a href="https://code.claude.com/docs/en/agent-teams"&gt;agent teams&lt;/a&gt; are still &amp;ldquo;experimental and disabled by default,&amp;rdquo; and the research gives a reason not to rush. Dynamic workflows sit alongside agent teams rather than replacing them. Cross-session messaging is for your separate sessions, not a supervised team.&lt;/p&gt;
&lt;p&gt;Giuseppe Destefanis and Tomaso Aste at UCL &lt;a href="https://arxiv.org/abs/2608.16801"&gt;tested the cheapest kind of coordinator&lt;/a&gt;: a prompt that names one agent the lead. Their sample covered 1,902 graded Claude Code runs, with teams of one to sixteen agents. The coordinator created no communication hub and no reliable improvement.&lt;/p&gt;
&lt;p&gt;The failure worth remembering came from an eight-step invoice pipeline, which worked in nine of ten runs with two or four agents. With eight, one agent per step, it failed all ten. Every failure sat on the same seam: whether to round at each step or once at the end. The agents discussed rounding in all ten runs. It didn&amp;rsquo;t help. As the authors put it, &amp;ldquo;Talking more did not close an interface that nobody owned.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The tasks were synthetic Python, and the coordinator was only a prompt label. Still, Walden Yan at Cognition &lt;a href="https://cognition.com/blog/dont-build-multi-agents"&gt;described the mechanism in 2025&lt;/a&gt;: &amp;ldquo;Actions carry implicit decisions, and conflicting decisions carry bad results.&amp;rdquo; The rounding failure is a clean example of that.&lt;/p&gt;
&lt;p&gt;A main agent that hands out self-contained tasks and collects the results is enough. Give every interface between those tasks an owner, and write the contract into a file. That&amp;rsquo;s what stood out in GSD when I &lt;a href="https://www.pulumi.com/blog/claude-code-orchestration-frameworks/"&gt;compared orchestration frameworks in April&lt;/a&gt;: its orchestrator never touches source files. Dynamic workflows push the same idea further. In the docs&amp;rsquo; words, &amp;ldquo;a workflow moves the plan into code,&amp;rdquo; so no lead agent has to hold it in its context.&lt;/p&gt;
&lt;h2 id="checking-the-work"&gt;Checking the work&lt;/h2&gt;
&lt;h3 id="9-plan-the-checks-first-and-keep-the-writer-out-of-them"&gt;9. Plan the checks first, and keep the writer out of them&lt;/h3&gt;
&lt;p&gt;Two habits belong together here. Decide before the first line of code how the work gets checked. Pick the tools the agent uses to test itself, the tests it writes, and the command that proves the build. Know what you&amp;rsquo;ll look at when it says it&amp;rsquo;s done.&lt;/p&gt;
&lt;p&gt;The second habit is to never let the model that wrote the code approve it. Anthropic&amp;rsquo;s &lt;a href="https://code.claude.com/docs/en/best-practices"&gt;best practices&lt;/a&gt; call this a writer/reviewer pattern. Their reason: &amp;ldquo;a fresh context improves code review since Claude won&amp;rsquo;t be biased toward code it just wrote.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;The best measurement comes from an unusual source: &lt;a href="https://arxiv.org/abs/2607.17044"&gt;an evaluation of Leni&lt;/a&gt;, an AI business analyst. The company that builds Leni wrote it, and the results come from single runs, so read it with that in mind. Of the agent&amp;rsquo;s 11-point gain on SpreadsheetBench Verified, scaffolding and prompting account for 9.5. The verification loop added the last 1.5 by rescuing six tasks, but only two when the model that produced the output did the checking.&lt;/p&gt;
&lt;p&gt;The code repair study in the next tip saw the same thing from the other side. Left to decide on its own when to stop, the model accepted 99.8% of its answers, and 29.5% of what it accepted was wrong. A gate on the visible tests cut that to 2.4%.&lt;/p&gt;
&lt;p&gt;Run the tests and build before review, then &lt;a href="https://www.pulumi.com/blog/stop-prompting-design-the-loop/"&gt;review the change in a fresh session&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="10-stop-revising-once-it-passes"&gt;10. Stop revising once it passes&lt;/h3&gt;
&lt;p&gt;An Alibaba Cloud team &lt;a href="https://arxiv.org/abs/2607.24604"&gt;tested repeated revision&lt;/a&gt; by forcing three revisions on each of 30 HumanEval repair tasks with a 7-billion-parameter open model. With test traces as feedback, 82.0% of runs were correct after the first revision. The second revision knocked that down to 67.3%, and the third only brought it back to 69.3%. About 85% found a correct patch at some point along the way, while about one in six found one and then lost it. With plain pass-or-fail feedback, 8.0% found a correct patch and then lost it.&lt;/p&gt;
&lt;p&gt;Test output from an older version of the code was one source of mistakes. In one task, the model read a stale report from a version with a Caesar shift of 12. It then changed the correct shift of 4 back to 12, in every seed.&lt;/p&gt;
&lt;p&gt;The study used a small model, but the precautions are straightforward. Commit the moment the tests pass, so there&amp;rsquo;s a last-known-good version to go back to. Rerun the tests on the current code before each revision instead of feeding back output from three edits ago. Set a retry limit for fixes that keep failing.&lt;/p&gt;
&lt;h2 id="where-to-start"&gt;Where to start&lt;/h2&gt;
&lt;p&gt;If you have one afternoon, go in this order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Run a drift check on every AGENTS.md you have.&lt;/strong&gt; Read what it flags yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cut the root file to what&amp;rsquo;s specific and true.&lt;/strong&gt; Move the rest into skills or subdirectory files.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Move one must-run step into a hook.&lt;/strong&gt; For most teams, that&amp;rsquo;s running the tests.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restart instead of compacting or escalating.&lt;/strong&gt; Write the handoff note yourself.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Commit on green, and review in a separate session.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="rounded-lg bg-violet-50 p-6 my-8"&gt;
&lt;p class="heading-4 m-0 mb-3 flex items-center gap-1.5"&gt;Check infrastructure changes before they ship&lt;/p&gt;
&lt;div class="body-base m-0 text-gray-950"&gt;For infrastructure code, &lt;code&gt;pulumi preview&lt;/code&gt; gives an agent a deterministic diff to check, and a mandatory policy blocks a noncompliant deployment. Wire those checks into Claude Code, Codex, Cursor, or Pulumi Neo with Agent Skills and the Pulumi MCP server.&lt;/div&gt;
&lt;a href="https://www.pulumi.com/docs/ai/" data-track="blog-body-cta" class="btn btn-primary mt-4"&gt;
Get started
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--regular size-4" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#p-arrow-right-regular"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;Start by checking the paths and commands in your root AGENTS.md. Fix anything stale, then remove instructions the agent doesn&amp;rsquo;t need.&lt;/p&gt;</description><author>Engin Diri</author><category>ai</category><category>ai-agents</category><category>claude-code</category><category>codex</category></item><item><title>Superpowers, GSD, and GSTACK: Picking the Right Framework for Your Coding Agent</title><link>https://www.pulumi.com/blog/claude-code-orchestration-frameworks/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/claude-code-orchestration-frameworks/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/claude-code-orchestration-frameworks/index.png" /&gt;
&lt;p&gt;Three community frameworks have emerged that fix the specific ways AI coding agents break down on real projects. &lt;a href="https://github.com/obra/superpowers"&gt;Superpowers&lt;/a&gt; enforces test-driven development. &lt;a href="https://github.com/open-gsd/gsd-core"&gt;GSD&lt;/a&gt; prevents context rot. &lt;a href="https://github.com/garrytan/gstack"&gt;GSTACK&lt;/a&gt; adds role-based governance. All three started as Claude Code plugins and now reach across Codex, Cursor, Windsurf, Gemini CLI, OpenCode, and half a dozen other agents.&lt;/p&gt;
&lt;p&gt;Pulumi uses general-purpose programming languages to define infrastructure. TypeScript, JavaScript, Python, Go, .NET, Java. Every framework that makes AI agents write better TypeScript also makes your &lt;code&gt;pulumi up&lt;/code&gt; better. After spending a few weeks with each one, and revisiting them again as the space moved, I have opinions about when to use which.&lt;/p&gt;
&lt;h2 id="the-problem-these-orchestration-frameworks-solve"&gt;The problem these orchestration frameworks solve&lt;/h2&gt;
&lt;p&gt;AI coding agents are impressive for the first 30 minutes. Then things go sideways. The patterns are predictable enough that three separate teams independently built agent orchestration frameworks to fix them:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Context rot.&lt;/strong&gt; Every LLM has a context window. As that window fills up, earlier instructions fade. You start a session asking for an &lt;a href="https://www.pulumi.com/docs/iac/clouds/aws/guides/"&gt;S3 bucket&lt;/a&gt; with AES-256 encryption, proper ACLs, and access logging. Two hours and 200K tokens later, the agent creates a new bucket with none of those requirements. The context window got crowded and your original instructions lost weight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No test discipline.&lt;/strong&gt; Agents write code that looks plausible. Plausible code compiles. Plausible code even runs, for a while. But plausible code without tests is a liability. The agent adds a feature and quietly breaks two others because nothing verified the existing behavior was preserved.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scope drift.&lt;/strong&gt; You ask for a &lt;a href="https://www.pulumi.com/docs/iac/guides/clouds/aws/vpc/"&gt;VPC with three subnets&lt;/a&gt;. The agent decides you also need a NAT gateway, a transit gateway, a VPN endpoint, and a custom DNS resolver. Helpful in theory. In practice, you now have infrastructure you never requested and barely understand. You will also pay for it monthly.&lt;/p&gt;
&lt;p&gt;These problems aren&amp;rsquo;t specific to Claude Code or any particular agent; they happen with Cursor, Codex, Windsurf, and every other LLM-powered coding tool. The context window doesn&amp;rsquo;t care which name is on the wrapper.&lt;/p&gt;
&lt;p&gt;That&amp;rsquo;s where agent-orchestration frameworks come in. In a single-agent workflow, the agent uses one continuous conversation to hold the whole project in its head. With an orchestration framework, the agent decomposes work into phases, enforcing tests or reviews along the way, handing state between context windows, and dispatching subagents for isolated tasks. Superpowers, GSD, and GSTACK are the three most widely adopted frameworks that do this.&lt;/p&gt;
&lt;h2 id="superpowers-what-does-it-do-and-who-is-it-for"&gt;Superpowers: What does it do, and who is it for?&lt;/h2&gt;
&lt;p&gt;Superpowers enforces a strict rule: no production code gets written without a failing test first. &lt;a href="https://github.com/obra/superpowers"&gt;Superpowers&lt;/a&gt; was created by &lt;a href="https://www.linkedin.com/in/jessevincent/"&gt;Jesse Vincent&lt;/a&gt; and has grown to roughly 279K GitHub stars.&lt;/p&gt;
&lt;p&gt;The framework enforces a 7-phase workflow. Brainstorm the approach. Write a spec. Create a plan. Write failing tests (TDD). Spin up subagents to implement. Review. Finalize. Every phase has gates. You cannot skip ahead. The iron law is that production code only exists to make a failing test pass.&lt;/p&gt;
&lt;p&gt;This sounds rigid. It is. That is the point.&lt;/p&gt;
&lt;p&gt;Superpowers includes a Visual Companion for design decisions, which helps when you are making architectural choices that need visual reasoning. The main orchestrator manages the entire workflow from a single context window, delegating implementation work to subagents that run in isolation.&lt;/p&gt;
&lt;p&gt;The tradeoff is that the mega-orchestrator pattern means the orchestrator itself can hit context limits on very long sessions. One big brain coordinating everything works well until the big brain fills up. For most projects, this is not an issue. For marathon sessions with dozens of files, keep it in mind.&lt;/p&gt;
&lt;p&gt;The workflow breaks down into skills that trigger automatically:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;th&gt;Phase&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;brainstorming&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Design&lt;/td&gt;
&lt;td&gt;Refines rough ideas through Socratic questions, saves design doc&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;writing-plans&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Planning&lt;/td&gt;
&lt;td&gt;Breaks work into 2-5 minute tasks with exact file paths and code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;test-driven-development&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Implementation&lt;/td&gt;
&lt;td&gt;RED-GREEN-REFACTOR: failing test first, minimal code, commit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;subagent-driven-development&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Implementation&lt;/td&gt;
&lt;td&gt;Dispatches fresh subagent per task with two-stage review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;requesting-code-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Review&lt;/td&gt;
&lt;td&gt;Reviews against plan, blocks progress on critical issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;finishing-a-development-branch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Finalize&lt;/td&gt;
&lt;td&gt;Verifies tests pass, presents merge/PR/keep/discard options&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The results are worth citing carefully. &lt;a href="https://chardet.readthedocs.io/en/7.0.0/performance.html"&gt;chardet 7.0&amp;rsquo;s own performance docs&lt;/a&gt; show it running 41x faster than chardet 6.0.0 (494 files/sec versus 12). Maintainer Dan Blanchard &lt;a href="https://dan-blanchard.github.io/blog/chardet-rewrite-controversy/"&gt;wrote about rewriting chardet from scratch&lt;/a&gt; with Claude, delegating implementation work to subagents — but his post never names Superpowers, and it&amp;rsquo;s mostly about whether the result counts as a derivative work. Take the 41x figure as verified; take &amp;ldquo;built with Superpowers specifically&amp;rdquo; as unconfirmed.&lt;/p&gt;
&lt;p&gt;Superpowers now reaches well beyond Claude Code: Antigravity, Codex App, Codex CLI, Cursor, Devin CLI, Factory Droid, Gemini CLI, GitHub Copilot CLI, Grok Build CLI, Kimi Code, OpenCode, Pi, and Hermes Agent are all in its current install list.&lt;/p&gt;
&lt;h2 id="gsd-how-does-it-prevent-context-rot"&gt;GSD: How does it prevent context rot?&lt;/h2&gt;
&lt;p&gt;GSD prevents context rot by keeping the orchestrator out of the work: your main session spawns a fresh-context subagent for each research, planning, execution, and verification task, then collects results instead of accumulating them. &lt;a href="https://github.com/open-gsd/gsd-core"&gt;GSD&lt;/a&gt; (Get Shit Done) was created by Lex Christopherson, known online as TÂCHES.&lt;/p&gt;
&lt;p&gt;The key architectural decision: the orchestrator never touches source files. Because it only spawns agents, collects their results, and updates shared state on disk, its own context window grows slowly and predictably, while each spawned agent starts with a clean window scoped to exactly one task. Phase state lands in &lt;code&gt;.planning/&lt;/code&gt; as durable files, so the next step reads artifacts rather than conversation history.&lt;/p&gt;
&lt;p&gt;Think about why this matters. When the orchestrator also writes the code, your 200K token context window is a shared resource. Instructions from hour one compete with code from hour three. GSD sidesteps this entirely, because the orchestrator&amp;rsquo;s job is dispatch and bookkeeping, not implementation. GSD also includes quality gates that detect schema drift and scope reduction. If the agent starts cutting corners or wandering from the plan, the gates catch it.&lt;/p&gt;
&lt;div class="note note-info"&gt;
&lt;div class="icon-and-line"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--fill" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#p-info-fill"/&gt;&lt;/svg&gt;
&lt;div class="line"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class="content"&gt;&lt;strong&gt;Editor&amp;rsquo;s note:&lt;/strong&gt; Since this post was first published, GSD&amp;rsquo;s original repository, &lt;code&gt;gsd-build/get-shit-done&lt;/code&gt;, was &lt;a href="https://github.com/gsd-build/get-shit-done"&gt;archived by its owner on June 26, 2026&lt;/a&gt; with 64.6K stars frozen in place. Development continues in the Open GSD organization as &lt;a href="https://github.com/open-gsd/gsd-core"&gt;GSD Core&lt;/a&gt;, currently at roughly 8.8K stars and installed via &lt;code&gt;npx @opengsd/gsd-core@latest&lt;/code&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The tradeoff: GSD has more ceremony than the other two frameworks. For a quick script or a single-file change, the phase-based workflow is overkill. GSD earns its keep on projects that span multiple files, multiple sessions, or multiple days.&lt;/p&gt;
&lt;p&gt;The core commands map to a phase-based workflow:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-new-project&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Full initialization: questions, research, requirements, roadmap&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-onboard&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Onboard an existing codebase instead of starting greenfield&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-discuss-phase&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Capture implementation decisions before planning starts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-plan-phase&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Research, plan, and verify for a single phase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-execute-phase&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Execute all plans in parallel waves, verify when complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-verify-work&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Manual user acceptance testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/gsd-ship&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Create PR from verified phase work with auto-generated body&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;GSD Core&amp;rsquo;s installer supports Claude Code, OpenCode, Antigravity CLI, Kimi CLI, Kilo, Codex, Copilot, Cursor, and Windsurf, and prompts you for which one at install time.&lt;/p&gt;
&lt;h2 id="gstack-what-does-role-based-governance-buy-you"&gt;GSTACK: What does role-based governance buy you?&lt;/h2&gt;
&lt;p&gt;GSTACK buys you a division of labor: instead of one agent trying to hold product, engineering, QA, and security judgment simultaneously, it splits the work across 23 specialist roles, each with its own scope and constraints. &lt;a href="https://github.com/garrytan/gstack"&gt;GSTACK&lt;/a&gt; was created by &lt;a href="https://www.linkedin.com/in/garrytan/"&gt;Garry Tan&lt;/a&gt; (President and CEO of Y Combinator) and has grown to roughly 130K stars.&lt;/p&gt;
&lt;p&gt;The framework enforces five layers of constraint. Role focus keeps each specialist in their lane. Data flow controls what information passes between roles. Quality control gates ensure standards at handoff points. The &amp;ldquo;boil the lake&amp;rdquo; principle means each role finishes what it can do perfectly and skips what it cannot, rather than producing mediocre work across everything. And the simplicity layer pushes back against unnecessary complexity.&lt;/p&gt;
&lt;p&gt;The role isolation is what makes GSTACK distinctive. The engineer role does not see the product roadmap. The QA role does not see the implementation details. Each role only receives the context it needs to do its job. This is not just about efficiency. It prevents the kind of scope creep where an agent that knows everything tries to do everything.&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Boil the lake&amp;rdquo; is my favorite principle across all three frameworks. It is the opposite of how most agents work. Agents default to attempting everything and producing something mediocre. GSTACK says: do fewer things, but do them right.&lt;/p&gt;
&lt;p&gt;The tradeoff: 23 specialist roles feels heavy for pure infrastructure work. If you are writing Pulumi programs and deploying cloud resources with &lt;a href="https://www.pulumi.com/docs/iac/concepts/components/"&gt;component resources&lt;/a&gt;, you probably do not need a product manager role or a designer role. GSTACK shines when you are building a product, not just provisioning infrastructure.&lt;/p&gt;
&lt;p&gt;Each slash command activates a different specialist:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/office-hours&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;YC partner&lt;/td&gt;
&lt;td&gt;Six forcing questions that reframe your product before you write code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/plan-ceo-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;Four modes: expand scope, selective expand, hold, reduce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/plan-eng-review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Engineering manager&lt;/td&gt;
&lt;td&gt;Lock architecture, map data flow, list edge cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/review&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Staff engineer&lt;/td&gt;
&lt;td&gt;Find bugs that pass CI but break in production, auto-fix the obvious ones&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/qa&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;QA lead&lt;/td&gt;
&lt;td&gt;Real Playwright browser testing, not simulated&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/ship&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Release engineer&lt;/td&gt;
&lt;td&gt;One-command deploy with coverage audit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/cso&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Security officer&lt;/td&gt;
&lt;td&gt;OWASP and STRIDE security audits&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;GSTACK&amp;rsquo;s Codex support is the most deliberate of the three: setup reads the &lt;code&gt;model&lt;/code&gt; field from your &lt;code&gt;~/.codex/config.toml&lt;/code&gt; and generates a matching behavioral profile automatically, so the role constraints adapt to the specific Codex model you are running. It also supports Claude Code, OpenCode, Cursor, Factory Droid, Slate, Kiro, and Hermes.&lt;/p&gt;
&lt;h2 id="superpowers-gsd-or-gstack-which-ones-the-best-fit-for-you"&gt;Superpowers, GSD, or GSTACK: Which one&amp;rsquo;s the best fit for you?&lt;/h2&gt;
&lt;p&gt;None of these is universally best. Knowing your failure mode is the real decision.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Superpowers&lt;/th&gt;
&lt;th&gt;GSD&lt;/th&gt;
&lt;th&gt;GSTACK&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;What it locks down&lt;/td&gt;
&lt;td&gt;The dev process itself&lt;/td&gt;
&lt;td&gt;The execution environment&lt;/td&gt;
&lt;td&gt;Who decides what&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Orchestration&lt;/td&gt;
&lt;td&gt;Single orchestrator&lt;/td&gt;
&lt;td&gt;Per-phase orchestrators&lt;/td&gt;
&lt;td&gt;23 specialist roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context management&lt;/td&gt;
&lt;td&gt;One window&lt;/td&gt;
&lt;td&gt;State-to-disk, fresh per phase&lt;/td&gt;
&lt;td&gt;Role-scoped handoffs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where it shines&lt;/td&gt;
&lt;td&gt;TDD, subagent delegation, disciplined plan execution&lt;/td&gt;
&lt;td&gt;Marathon sessions, parallel workstreams, crash recovery&lt;/td&gt;
&lt;td&gt;Product strategy, multi-perspective review, real browser QA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Where it struggles&lt;/td&gt;
&lt;td&gt;Anything beyond the build phase&lt;/td&gt;
&lt;td&gt;Overkill for small tasks, no role separation&lt;/td&gt;
&lt;td&gt;The actual writing-code part&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best for&lt;/td&gt;
&lt;td&gt;Solo devs who need test discipline&lt;/td&gt;
&lt;td&gt;Complex projects that span days or weeks&lt;/td&gt;
&lt;td&gt;Founder-engineers shipping a product&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub stars (current)&lt;/td&gt;
&lt;td&gt;~279K&lt;/td&gt;
&lt;td&gt;~8.8K on the new repo (plus 64.6K on the archived original)&lt;/td&gt;
&lt;td&gt;~130K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent support&lt;/td&gt;
&lt;td&gt;13+ agents&lt;/td&gt;
&lt;td&gt;9+ agents via installer&lt;/td&gt;
&lt;td&gt;8+ agents&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;For infrastructure work, GSD&amp;rsquo;s context management matters most. Long Pulumi sessions that provision dozens of resources across multiple stacks are exactly the scenario where context rot bites hardest. GSD&amp;rsquo;s phase-based approach keeps each orchestrator fresh. If you would rather not manage that context yourself, &lt;a href="https://www.pulumi.com/product/neo/"&gt;Pulumi Neo&lt;/a&gt; is an infrastructure agent that starts from your stacks, dependencies, and deployment history.&lt;/p&gt;
&lt;p&gt;Superpowers&amp;rsquo; TDD workflow maps well to application code where unit tests are straightforward. Infrastructure testing is different. You cannot unit test whether an &lt;a href="https://www.pulumi.com/docs/iac/guides/clouds/aws/iam/"&gt;IAM policy&lt;/a&gt; actually grants the right permissions. You can test the shape of the policy with &lt;a href="https://www.pulumi.com/docs/iac/guides/testing/"&gt;Pulumi&amp;rsquo;s testing frameworks&lt;/a&gt;, but the real validation happens at &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_preview/"&gt;&lt;code&gt;pulumi preview&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_up/"&gt;&lt;code&gt;pulumi up&lt;/code&gt;&lt;/a&gt;. Superpowers still helps here (discipline is discipline), but the TDD cycle is less natural for infra than for app code.&lt;/p&gt;
&lt;p&gt;GSTACK shines when the project has product dimensions. If you are building a SaaS platform where the infrastructure serves a product vision, GSTACK&amp;rsquo;s multi-role governance keeps the product thinking connected to the engineering work. For pure infra provisioning, the extra roles add overhead without much benefit.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What keeps going wrong&lt;/th&gt;
&lt;th&gt;Try this&lt;/th&gt;
&lt;th&gt;The reason&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Code works today, breaks tomorrow&lt;/td&gt;
&lt;td&gt;Superpowers&lt;/td&gt;
&lt;td&gt;Forces every change through a failing test first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quality drops after the first hour&lt;/td&gt;
&lt;td&gt;GSD&lt;/td&gt;
&lt;td&gt;Fresh context per phase, nothing carries over&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;You ship features nobody asked for&lt;/td&gt;
&lt;td&gt;GSTACK&lt;/td&gt;
&lt;td&gt;Product review before engineering starts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All of the above&lt;/td&gt;
&lt;td&gt;GSTACK for direction, bolt on Superpowers TDD&lt;/td&gt;
&lt;td&gt;No single framework covers everything yet&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class="rounded-lg bg-violet-50 p-6 my-8"&gt;
&lt;p class="heading-4 m-0 mb-3 flex items-center gap-1.5"&gt;Point your coding agent at Pulumi&lt;/p&gt;
&lt;div class="body-base m-0 text-gray-950"&gt;Whichever framework and agent you run, Pulumi defines infrastructure in TypeScript, Python, and Go, so your agent generates cloud resources it already knows how to write.&lt;/div&gt;
&lt;a href="https://www.pulumi.com/docs/ai/" data-track="blog-body-cta" class="btn btn-primary mt-4"&gt;
Get started
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon ph-icon--regular size-4" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#p-arrow-right-regular"/&gt;&lt;/svg&gt;
&lt;/a&gt;
&lt;/div&gt;
&lt;h2 id="do-superpowers-gsd-and-gstack-work-with-codex"&gt;Do Superpowers, GSD, and GSTACK work with Codex?&lt;/h2&gt;
&lt;p&gt;Yes, all three now support OpenAI&amp;rsquo;s Codex, though the depth of that support varies. Superpowers ships two separate Codex integrations distributed through the official OpenAI plugin marketplace; GSTACK goes furthest by detecting your specific Codex model and generating a matching behavioral profile; GSD&amp;rsquo;s installer offers Codex as one of several supported runtimes without Codex-specific tuning.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Framework&lt;/th&gt;
&lt;th&gt;Codex support&lt;/th&gt;
&lt;th&gt;How it works&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Superpowers&lt;/td&gt;
&lt;td&gt;Native, dual-mode&lt;/td&gt;
&lt;td&gt;Separate &amp;ldquo;Codex App&amp;rdquo; and &amp;ldquo;Codex CLI&amp;rdquo; integrations, both installed through the &lt;a href="https://github.com/openai/plugins"&gt;official Codex plugin marketplace&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GSD (GSD Core)&lt;/td&gt;
&lt;td&gt;Native, generic&lt;/td&gt;
&lt;td&gt;The &lt;code&gt;npx @opengsd/gsd-core@latest&lt;/code&gt; installer lists Codex as a supported runtime alongside Claude Code, Cursor, and others&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GSTACK&lt;/td&gt;
&lt;td&gt;Native, model-aware&lt;/td&gt;
&lt;td&gt;&lt;code&gt;./setup --host codex&lt;/code&gt; installs to &lt;code&gt;~/.codex/skills/gstack-*/&lt;/code&gt; and reads your Codex model from &lt;code&gt;config.toml&lt;/code&gt; to tune role behavior automatically&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Codex support has deepened noticeably since this post first ran. All three frameworks now treat it as a first-class target rather than one more name in an install matrix.&lt;/p&gt;
&lt;h2 id="what-are-the-alternatives-to-superpowers-gsd-and-gstack"&gt;What are the alternatives to Superpowers, GSD, and GSTACK?&lt;/h2&gt;
&lt;p&gt;The most talked-about alternative right now is &lt;a href="https://github.com/affaan-m/ecc"&gt;Everything Claude Code&lt;/a&gt; (ECC), built by Affaan Mustafa. Where Superpowers, GSD, and GSTACK each impose one opinionated methodology, ECC takes the opposite approach: a large pre-built bundle of subagents, skills, hooks, and commands — dozens of the first, hundreds of the second — plus a security layer called AgentShield. It works best with Claude Code today, has a supported Codex sync path, and offers capability-limited adapters for Cursor and OpenCode, so check its support-status matrix before assuming feature parity across agents. It has grown large enough that community threads now debate &amp;ldquo;ECC vs. Superpowers&amp;rdquo; the same way they debate the three frameworks above. Choose ECC if you want breadth and are willing to pick your own process; choose one of the three above if you want the process itself enforced.&lt;/p&gt;
&lt;p&gt;Also worth knowing: &lt;a href="https://github.com/wshobson/agents"&gt;&lt;code&gt;wshobson/agents&lt;/code&gt;&lt;/a&gt; positions itself as a plugin marketplace rather than a single framework, aggregating dozens of agents, skills, and commands that install natively through Claude Code&amp;rsquo;s plugin system. It is less a competitor to Superpowers, GSD, or GSTACK than a different shelf in the same store.&lt;/p&gt;
&lt;p&gt;You can also roll your own. Claude Code&amp;rsquo;s native subagents, hooks, and skills now cover a meaningful slice of what these frameworks automate, including asynchronous subagent execution that used to require a third-party context-management layer. If your needs are narrow, a CLAUDE.md file plus a couple of custom skills may get you 80% of the value without adopting a whole framework.&lt;/p&gt;
&lt;p&gt;For infrastructure specifically, there is also the managed-agent route rather than the framework route — see the note on &lt;a href="https://www.pulumi.com/product/neo/"&gt;Pulumi Neo&lt;/a&gt; at the end of this post.&lt;/p&gt;
&lt;h2 id="how-do-these-frameworks-work-with-pulumi"&gt;How do these frameworks work with Pulumi?&lt;/h2&gt;
&lt;p&gt;These frameworks solve the &amp;ldquo;how&amp;rdquo; of agent orchestration. &lt;a href="https://www.pulumi.com/blog/top-8-claude-skills-devops-2026/"&gt;Skills&lt;/a&gt; (like the ones from &lt;a href="https://github.com/pulumi/agent-skills"&gt;Pulumi Agent Skills&lt;/a&gt;) solve the &amp;ldquo;what,&amp;rdquo; teaching agents the right patterns for specific technologies. Frameworks and skills complement each other. A skill tells the agent to use &lt;a href="https://www.pulumi.com/docs/esc/guides/configuring-oidc/aws/"&gt;OIDC&lt;/a&gt; instead of hardcoded credentials. A framework makes sure the agent still remembers that instruction 200K tokens later. This works because Pulumi infrastructure is real code: an agent operating under Superpowers&amp;rsquo; TDD gates or GSD&amp;rsquo;s phase boundaries can test, refactor, and version infrastructure the same way it does application code, which a declarative config format does not give it room to do.&lt;/p&gt;
&lt;p&gt;GSD&amp;rsquo;s state-to-disk approach pairs naturally with &lt;a href="https://www.pulumi.com/docs/iac/concepts/inputs-outputs/"&gt;Pulumi stack outputs&lt;/a&gt;. Each phase can read the previous phase&amp;rsquo;s stack outputs from the state files, so a networking phase can provision a VPC and the compute phase can reference the subnet IDs without any context window gymnastics.&lt;/p&gt;
&lt;p&gt;Superpowers&amp;rsquo; TDD cycle maps to infrastructure validation. Write a failing test (the expected shape of your infrastructure). Run &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_preview/"&gt;&lt;code&gt;pulumi preview&lt;/code&gt;&lt;/a&gt; (red, the resources do not exist yet). Run &lt;a href="https://www.pulumi.com/docs/iac/cli/commands/pulumi_up/"&gt;&lt;code&gt;pulumi up&lt;/code&gt;&lt;/a&gt; (green, the infrastructure matches the test). This is not a perfect analogy since infrastructure tests are broader than unit tests, but the discipline of &amp;ldquo;verify before moving on&amp;rdquo; translates directly.&lt;/p&gt;
&lt;p&gt;You do not have to pick one framework and commit forever. Try GSD for a long multi-stack project. Try Superpowers for a focused library. See which failure mode bites you most and let that guide your choice.&lt;/p&gt;
&lt;h2 id="how-do-you-install-and-get-started"&gt;How do you install and get started?&lt;/h2&gt;
&lt;a href="https://github.com/obra/superpowers" target="_blank" rel="noopener noreferrer" class="github-card"&gt;
&lt;img
src="https://opengraph.githubassets.com/1/obra/superpowers"
alt="GitHub repository: obra/superpowers"
class="github-card-image"
loading="lazy"
/&gt;
&lt;div class="github-card-content"&gt;
&lt;div class="github-card-domain"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon github-card-icon" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#b-github"/&gt;&lt;/svg&gt;
github.com/obra/superpowers
&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;a href="https://github.com/open-gsd/gsd-core" target="_blank" rel="noopener noreferrer" class="github-card"&gt;
&lt;img
src="https://opengraph.githubassets.com/1/open-gsd/gsd-core"
alt="GitHub repository: open-gsd/gsd-core"
class="github-card-image"
loading="lazy"
/&gt;
&lt;div class="github-card-content"&gt;
&lt;div class="github-card-domain"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon github-card-icon" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#b-github"/&gt;&lt;/svg&gt;
github.com/open-gsd/gsd-core
&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;a href="https://github.com/garrytan/gstack" target="_blank" rel="noopener noreferrer" class="github-card"&gt;
&lt;img
src="https://opengraph.githubassets.com/1/garrytan/gstack"
alt="GitHub repository: garrytan/gstack"
class="github-card-image"
loading="lazy"
/&gt;
&lt;div class="github-card-content"&gt;
&lt;div class="github-card-domain"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" class="ph-icon github-card-icon" fill="currentColor" aria-hidden="true" focusable="false"&gt;&lt;use href="https://www.pulumi.com/icons/sprite.8a5c5cb3b24d4409c815bbda3711a212d8b4ecb896537b36600f91e09433004b.svg#b-github"/&gt;&lt;/svg&gt;
github.com/garrytan/gstack
&lt;/div&gt;
&lt;/div&gt;
&lt;/a&gt;
&lt;p&gt;All three frameworks support multiple agents. For Claude Code, the current install commands are:&lt;/p&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;# Superpowers&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/plugin install superpowers@claude-plugins-official
&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;# GSD Core (installer asks which agent and whether to install globally or locally)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx @opengsd/gsd-core@latest
&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;# GSTACK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;git clone --single-branch --depth &lt;span class="m"&gt;1&lt;/span&gt; https://github.com/garrytan/gstack.git ~/.claude/skills/gstack &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; ~/.claude/skills/gstack &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./setup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you have an old GSD install pointed at &lt;code&gt;get-shit-done-cc&lt;/code&gt;, switch to &lt;code&gt;@opengsd/gsd-core&lt;/code&gt;; the original repository is archived and will not receive further updates. Check each repository&amp;rsquo;s README for Codex, Cursor, Windsurf, and other agent-specific instructions.&lt;/p&gt;
&lt;p&gt;If you want a managed experience that handles orchestration for you, &lt;a href="https://www.pulumi.com/product/neo/"&gt;Pulumi Neo&lt;/a&gt; is &lt;a href="https://www.pulumi.com/blog/grounded-ai-why-neo-knows-your-infrastructure/"&gt;grounded in your actual infrastructure&lt;/a&gt;, not internet patterns. It understands your stacks, your dependencies, and your deployment history. The &lt;a href="https://www.pulumi.com/blog/10-things-you-can-do-with-neo/"&gt;10 things you can do with Neo&lt;/a&gt; post shows what that looks like in practice.&lt;/p&gt;
&lt;p&gt;Pick one and give it a project. You will know within an hour whether it fixes your particular failure mode.&lt;/p&gt;
&lt;a
href="https://www.pulumi.com/docs/get-started/"
class="btn btn-primary"
&gt;
Try Pulumi for Free
&lt;/a&gt;</description><author>Engin Diri</author><category>ai</category><category>claude-code</category><category>ai-agents</category><category>devops</category><category>cursor</category><category>ai-coding</category><category>codex</category></item><item><title>Pulumi Agent Skills: Best practices and more for AI coding assistants</title><link>https://www.pulumi.com/blog/pulumi-agent-skills/</link><pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate><guid>https://www.pulumi.com/blog/pulumi-agent-skills/</guid><description>
&lt;img src="https://www.pulumi.com/images/generated/blog/pulumi-agent-skills/index.png" /&gt;
&lt;p&gt;AI coding assistants have transformed how developers write software, including infrastructure code. Tools like Claude Code, Cursor, and GitHub Copilot can generate code, explain complex systems, and automate tedious tasks. But when it comes to infrastructure, these tools often produce code that works but misses the mark on patterns that matter: proper secret handling, correct resource dependencies, idiomatic component structure, and the dozens of other details that separate working infrastructure from production-ready infrastructure.&lt;/p&gt;
&lt;p&gt;We built &lt;a href="https://www.pulumi.com/product/neo/"&gt;Neo&lt;/a&gt; for teams that want deep Pulumi expertise combined with organizational context and deployment governance. But developers have preferred tools, and we want people to succeed with Pulumi wherever they work. Some teams live in Claude Code. Others use Cursor, Copilot, Codex, Gemini CLI, or other platforms. That is why we are releasing Pulumi Agent Skills, a collection of packaged expertise that teaches any AI coding assistant how to work with Pulumi the way an experienced practitioner would.&lt;/p&gt;
&lt;h2 id="what-are-agent-skills"&gt;What are agent skills?&lt;/h2&gt;
&lt;p&gt;Skills are structured knowledge packages that follow the open &lt;a href="https://agentskills.io"&gt;Agent Skills&lt;/a&gt; specification. They work across multiple AI coding platforms including Claude Code, GitHub Copilot, Cursor, VS Code, Codex, and Gemini CLI. When you install Pulumi skills, your AI assistant gains access to detailed workflows, code patterns, and decision trees for common infrastructure tasks.&lt;/p&gt;
&lt;h2 id="available-pulumi-skills"&gt;Available Pulumi skills&lt;/h2&gt;
&lt;p&gt;We are launching a set of skills organized into two plugin groups: authoring and migration. You can install all skills at once or choose specific plugin groups based on your needs.&lt;/p&gt;
&lt;h3 id="authoring-skills"&gt;Authoring skills&lt;/h3&gt;
&lt;p&gt;This plugin includes four skills focused on code quality, reusability, and configuration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pulumi best practices&lt;/strong&gt; encodes the patterns that prevent common mistakes. It covers output handling, component structure, secrets management, safe refactoring with aliases, and deployment workflows. The skill flags anti-patterns that can cause issues with preview, dependencies, and production deployments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pulumi Component&lt;/strong&gt; provides a complete guide for authoring ComponentResource classes. The skill covers designing component interfaces, multi-language support, and distribution. It teaches assistants how to build reusable infrastructure abstractions that can be consumed from any Pulumi language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pulumi Automation API&lt;/strong&gt; covers programmatic orchestration of Pulumi operations. The skill explains when to use Automation API versus the CLI, the tradeoffs between local source and inline programs, and patterns for multi-stack deployments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pulumi ESC&lt;/strong&gt; covers centralized secrets and configuration management. The skill guides assistants through setting up dynamic OIDC credentials, composing environments, and integrating secrets into Pulumi programs and other applications.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="migration-skills"&gt;Migration skills&lt;/h3&gt;
&lt;p&gt;Convert and import infrastructure from other tools to Pulumi. This plugin includes four skills covering complete migration workflows, not just syntax translation.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Terraform to Pulumi&lt;/strong&gt; walks through the full migration workflow. It handles state translation, provider version alignment, and the iterative process of achieving a clean &lt;code&gt;pulumi preview&lt;/code&gt; with no unexpected changes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CloudFormation to Pulumi&lt;/strong&gt; covers the complete AWS CloudFormation migration workflow, from template conversion and stack import to handling CloudFormation-specific constructs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;CDK to Pulumi&lt;/strong&gt; covers the complete AWS CDK migration workflow end to end, from conversion and import to handling CDK-specific constructs like Lambda-backed custom resources and cross-stack references.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Azure to Pulumi&lt;/strong&gt; covers the complete Azure Resource Manager and Bicep migration workflow, handling template conversion and resource import with guidance on achieving zero-diff validation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="how-to-install"&gt;How to install&lt;/h2&gt;
&lt;h3 id="claude-code-plugin-marketplace"&gt;Claude Code plugin marketplace&lt;/h3&gt;
&lt;p&gt;For Claude Code users, the plugin system provides the simplest installation experience:&lt;/p&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;claude plugin marketplace add pulumi/agent-skills
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin install pulumi-authoring &lt;span class="c1"&gt;# Install authoring skills&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;claude plugin install pulumi-migration &lt;span class="c1"&gt;# Install migration skills&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can install both plugin groups or choose only the ones you need.&lt;/p&gt;
&lt;h3 id="universal-installation"&gt;Universal installation&lt;/h3&gt;
&lt;p&gt;For Cursor, GitHub Copilot, VS Code, Codex, Gemini, and other platforms, use the universal &lt;a href="https://agentskills.io"&gt;Agent Skills&lt;/a&gt; CLI. The universal installer does not read plugin marketplace manifests, so install each end-user skill group:&lt;/p&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;npx skills add pulumi/agent-skills/pulumi --skill &lt;span class="s1"&gt;&amp;#39;*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx skills add pulumi/agent-skills/migration --skill &lt;span class="s1"&gt;&amp;#39;*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx skills add pulumi/agent-skills/delegation --skill &lt;span class="s1"&gt;&amp;#39;*&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This works across all platforms that support the Agent Skills specification.&lt;/p&gt;
&lt;h2 id="using-skills"&gt;Using skills&lt;/h2&gt;
&lt;p&gt;Once installed, skills activate automatically based on context. When you ask your assistant to help migrate a Terraform project, it draws on the Terraform skill&amp;rsquo;s workflow. When you are debugging why resources are being recreated unexpectedly, the best practices skill helps the assistant check for missing aliases.&lt;/p&gt;
&lt;p&gt;In Codex and Claude Code, you can invoke skills directly via slash commands.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;/pulumi-terraform-to-pulumi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Or describe what you need in natural language:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Help me migrate this CDK application to Pulumi&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Review this Pulumi code for best practices issues&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Create a reusable component for a web service with load balancer&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;The assistant will follow the skill&amp;rsquo;s procedures, ask clarifying questions when needed, and produce output that reflects Pulumi best practices rather than generic code generation.&lt;/p&gt;
&lt;h2 id="get-started"&gt;Get started&lt;/h2&gt;
&lt;p&gt;We expect this collection to grow. If you have Pulumi expertise worth packaging, whether provider-specific patterns, debugging workflows, or operational practices, we welcome contributions. See the &lt;a href="https://github.com/pulumi/agent-skills/blob/main/CONTRIBUTING.md"&gt;contributing guide&lt;/a&gt; for details.&lt;/p&gt;
&lt;p&gt;The skills are available now in the &lt;a href="https://github.com/pulumi/agent-skills"&gt;agent-skills repository&lt;/a&gt;. Install them in your preferred AI coding environment and let us know what you build.&lt;/p&gt;</description><author>Pulumi Neo Team</author><category>ai</category><category>platform-engineering</category><category>features</category><category>claude-code</category><category>codex</category><category>ai-agents</category></item></channel></rss>