<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Venkata Pavan Kumar Gummadi</title>
    <description>The latest articles on DEV Community by Venkata Pavan Kumar Gummadi (@venkatagummadi).</description>
    <link>https://dev.to/venkatagummadi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3873527%2F026fb30c-2391-4842-9d62-6274a427e008.png</url>
      <title>DEV Community: Venkata Pavan Kumar Gummadi</title>
      <link>https://dev.to/venkatagummadi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/venkatagummadi"/>
    <language>en</language>
    <item>
      <title>How to Ship Features Faster with AI Coding Assistants and Git: A 90% First‑Try Workflow</title>
      <dc:creator>Venkata Pavan Kumar Gummadi</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:13:51 +0000</pubDate>
      <link>https://dev.to/venkatagummadi/shipping-features-with-claude-code-in-2026-3k3b</link>
      <guid>https://dev.to/venkatagummadi/shipping-features-with-claude-code-in-2026-3k3b</guid>
      <description>&lt;p&gt;An updated, battle-tested workflow for using Claude Code to ship four features in ~30 minutes refreshed for Opus 4.6, Sonnet 4.6, plugins, skills, and the new GitHub Actions integration&lt;/p&gt;

&lt;p&gt;I use Claude Code to ship four small-to-medium features (or bug fixes) in roughly &lt;strong&gt;25–35 minutes&lt;/strong&gt;, with a first-try success rate around &lt;strong&gt;90–95%&lt;/strong&gt;. The trick isn't faster typing or a better model — it's spending most of my human time on the &lt;em&gt;issue&lt;/em&gt;, not the &lt;em&gt;code&lt;/em&gt;, and then letting Claude Code run autonomously across multiple Git worktrees in parallel.&lt;/p&gt;

&lt;p&gt;In this article I'll walk through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The philosophy (orchestrate, don't micromanage)&lt;/li&gt;
&lt;li&gt;The two custom slash commands that do all the work&lt;/li&gt;
&lt;li&gt;How to wire it into GitHub Actions so the same workflow runs in CI&lt;/li&gt;
&lt;li&gt;What's actually changed in 2026 and why it matters&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The full repo with commands, workflows, and a &lt;code&gt;CLAUDE.md&lt;/code&gt; template is linked at the bottom.&lt;/p&gt;

&lt;p&gt;Why this still works (and why it works &lt;em&gt;better&lt;/em&gt; now)&lt;/p&gt;

&lt;p&gt;The original premise hasn't changed: AI coding assistants reach their highest success rate when the &lt;em&gt;specification&lt;/em&gt; is good. A vague prompt produces vague code. A precise, well-scoped GitHub issue produces production-ready code on the first try, most of the time.&lt;/p&gt;

&lt;p&gt;What &lt;em&gt;has&lt;/em&gt; changed since 2025 is the ground underneath this workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Opus 4.6 and Sonnet 4.6&lt;/strong&gt; ship with a 1M-token context window in beta, which means an entire mid-sized codebase can fit in a single planning session without aggressive trimming.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code plugins and skills&lt;/strong&gt; let you package custom commands, agents, and project conventions as reusable, version-controlled units instead of scattered prompt files.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/rewind&lt;/code&gt;&lt;/strong&gt; (added in late 2025) means you can undo a bad agent run in one keystroke instead of fighting Git.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The official &lt;code&gt;anthropics/claude-code-action&lt;/code&gt;&lt;/strong&gt; runs the same Claude Code runtime inside GitHub Actions, so the local workflow described here can be triggered from a PR comment by anyone on your team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Headless mode (&lt;code&gt;claude -p&lt;/code&gt;)&lt;/strong&gt; is now stable enough to drive long-running, scheduled jobs — the same &lt;code&gt;/solve-issue&lt;/code&gt; command I run locally also works in CI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The workflow below assumes Claude Code v2.x or newer and a project that already has &lt;strong&gt;decent documentation&lt;/strong&gt;: a PRD, a UI spec, and a software requirements doc. If your project has none of those, fix that first. Claude Code is roughly as good as the context you give it, and architectural decisions made in a vacuum are exactly where AI-generated code falls apart.&lt;/p&gt;

&lt;h2&gt;
  
  
  The philosophy: orchestrate, don't micromanage
&lt;/h2&gt;

&lt;p&gt;Most developers use Claude Code like a fancy autocomplete — they type a prompt, watch every token, and interrupt the moment something looks off. That's a perfectly valid way to use the tool, but it caps your output at roughly the speed you can read.&lt;/p&gt;

&lt;p&gt;The alternative is to treat Claude Code like a junior engineer you've handed a well-written ticket to. You don't read over their shoulder. You wait for the PR. The job of the human shifts from &lt;em&gt;writing code&lt;/em&gt; to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Defining what "done" means in concrete, testable terms&lt;/li&gt;
&lt;li&gt;Picking the right architectural seam&lt;/li&gt;
&lt;li&gt;Reviewing the diff with a clear head, not while it's being written&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The two custom slash commands below codify exactly that split.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — &lt;code&gt;/create-issue&lt;/code&gt;: the highest-leverage 5 minutes you'll spend all day
&lt;/h2&gt;

&lt;p&gt;This is the only step where I spend significant human attention. The command tells Claude Code to read the codebase, classify the request, decompose it into atomic tasks with acceptance criteria, and produce a GitHub issue I can review before it's filed.&lt;/p&gt;

&lt;p&gt;Save this as &lt;code&gt;.claude/commands/create-issue.md&lt;/code&gt; in your repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Create&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;well-scoped&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;GitHub&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;issue&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;from&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;a&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;freeform&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;description"&lt;/span&gt;
&lt;span class="na"&gt;argument-hint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;description of what you want built&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bash, Read, Glob, Grep, WebSearch&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

You are creating a GitHub issue from this description:

$ARGUMENTS

Follow these steps in order. Do not skip any.

&lt;span class="gu"&gt;## 1. Understand the project&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Detect the Git repo and remote (&lt;span class="sb"&gt;`git remote -v`&lt;/span&gt;)
&lt;span class="p"&gt;-&lt;/span&gt; Read README.md, CLAUDE.md, and any docs/ folder
&lt;span class="p"&gt;-&lt;/span&gt; Identify the project's stack and conventions

&lt;span class="gu"&gt;## 2. Explore the codebase&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Find files related to the request
&lt;span class="p"&gt;-&lt;/span&gt; Look for similar existing patterns
&lt;span class="p"&gt;-&lt;/span&gt; Note any dependencies or modules that will be touched

&lt;span class="gu"&gt;## 3. Classify&lt;/span&gt;
Decide whether this is a Bug, Feature, Enhancement, or Task.

&lt;span class="gu"&gt;## 4. Decompose&lt;/span&gt;
Break the work into atomic, independently testable tasks.
Each task should be one logical commit's worth of work.
Include both implementation and test tasks.

&lt;span class="gu"&gt;## 5. Define acceptance criteria&lt;/span&gt;
For each major component, write testable success conditions.
Cover the happy path, the obvious edge cases, and at least one failure mode.

&lt;span class="gu"&gt;## 6. Draft the issue&lt;/span&gt;
Format as:&lt;span class="sb"&gt;

    Title: &amp;lt;concise, action-oriented&amp;gt;
    Type: &amp;lt;Bug | Feature | Enhancement | Task&amp;gt;

    ## Context
    &amp;lt;why this matters, in 2-3 sentences&amp;gt;

    ## Tasks
    - [ ] ...
    - [ ] ...

    ## Acceptance Criteria
    - [ ] ...
    - [ ] ...

    ## Technical Notes
    &amp;lt;anything Claude Code will need to know to implement this&amp;gt;

    ## Related Files
    - path/to/file1
    - path/to/file2

&lt;/span&gt;&lt;span class="gu"&gt;## 7. Show me the draft&lt;/span&gt;
Print the full issue and ask: "Create this issue? (yes/no)"

&lt;span class="gu"&gt;## 8. File it&lt;/span&gt;
On confirmation, use &lt;span class="sb"&gt;`gh issue create`&lt;/span&gt; to file it and print the URL.
If &lt;span class="sb"&gt;`gh`&lt;/span&gt; isn't available, print the body for manual creation.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output format is the entire point. By the time I confirm, the issue contains everything Claude Code will need on the second pass: scope, file list, test conditions, edge cases. There is no ambiguity left to misinterpret.&lt;/p&gt;

&lt;p&gt;For four issues this step takes me roughly &lt;strong&gt;10–20 minutes total&lt;/strong&gt;. I sometimes iterate on the draft with Opus 4.6 to add nuance — that's what I'm paying for, and it's where the success rate comes from.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — &lt;code&gt;/solve-issue&lt;/code&gt;: autonomous implementation
&lt;/h2&gt;

&lt;p&gt;Once the issues are filed, the implementation step is almost entirely hands-off. Save this as &lt;code&gt;.claude/commands/solve-issue.md&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Implement a GitHub issue end-to-end in an isolated worktree&lt;/span&gt;
&lt;span class="na"&gt;argument-hint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;github issue url or number&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Bash, Read, Write, Edit, Glob, Grep, WebFetch&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

Implement GitHub issue: $ARGUMENTS

Follow this 5-stage process. Commit at the end of each substantive step.

&lt;span class="gu"&gt;## 1. PLAN&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`gh issue view $ARGUMENTS`&lt;/span&gt; to fetch the issue
&lt;span class="p"&gt;-&lt;/span&gt; Search for related PRs: &lt;span class="sb"&gt;`gh pr list --search "..."`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Read the relevant files
&lt;span class="p"&gt;-&lt;/span&gt; Write the plan to a comment on the issue before starting

&lt;span class="gu"&gt;## 2. WORKTREE + BRANCH&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Create a new worktree off main: &lt;span class="sb"&gt;`git worktree add ../wt-issue-&amp;lt;n&amp;gt; -b feat/issue-&amp;lt;n&amp;gt;`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`cd`&lt;/span&gt; into it
&lt;span class="p"&gt;-&lt;/span&gt; All work happens in the worktree

&lt;span class="gu"&gt;## 3. IMPLEMENT&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Work the plan in small, reviewable steps
&lt;span class="p"&gt;-&lt;/span&gt; Commit after each step with a clear message
&lt;span class="p"&gt;-&lt;/span&gt; Update README.md and docs/ as you go

&lt;span class="gu"&gt;## 4. TEST&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; For UI changes, drive the browser via the Playwright MCP server
&lt;span class="p"&gt;-&lt;/span&gt; Write or extend unit + integration tests
&lt;span class="p"&gt;-&lt;/span&gt; Run the full suite and fix anything that breaks
&lt;span class="p"&gt;-&lt;/span&gt; Do not move on until everything is green

&lt;span class="gu"&gt;## 5. LINT + DEPLOY&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Run the project's linter and fix all errors and warnings
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`gh pr create`&lt;/span&gt; with a description that links back to the issue
&lt;span class="p"&gt;-&lt;/span&gt; Add &lt;span class="sb"&gt;`Closes #&amp;lt;n&amp;gt;`&lt;/span&gt; to the PR body
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I run this with &lt;code&gt;--dangerously-skip-permissions&lt;/code&gt; once per issue. The name is intentionally scary, but the safety net is real: every change is committed in an isolated worktree, and &lt;code&gt;/rewind&lt;/code&gt; can undo the whole session if something goes sideways.&lt;/p&gt;

&lt;p&gt;Four issues, four worktrees, all running in parallel terminals. Implementation, tests, lint, and PR creation: roughly &lt;strong&gt;15 minutes&lt;/strong&gt; for the batch.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;A note on parallelism.&lt;/strong&gt; Four is not a benchmark, it's the number where I personally stop losing track. More worktrees mean more potential merge conflicts when the PRs land. Start with two and work up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 3 — &lt;code&gt;CLAUDE.md&lt;/code&gt;: project memory
&lt;/h2&gt;

&lt;p&gt;Every project I work on has a &lt;code&gt;CLAUDE.md&lt;/code&gt; at the root. This is the single highest-ROI file in the repo for anyone using AI coding assistants. Mine usually contains:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to bring the dev environment up (Docker commands, env files, ports)&lt;/li&gt;
&lt;li&gt;How to run the test suite, the linter, and the formatter&lt;/li&gt;
&lt;li&gt;How to log into the local app (e.g. &lt;code&gt;docker compose drush uli&lt;/code&gt; for Drupal, a seeded admin for Rails, etc.)&lt;/li&gt;
&lt;li&gt;Project-specific conventions: directory layout, naming, where new components go&lt;/li&gt;
&lt;li&gt;Anything that bit me once and I never want to explain to an agent again&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A &lt;code&gt;CLAUDE.md&lt;/code&gt; template is included in the repo at the bottom of this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Push the same workflow into CI with GitHub Actions
&lt;/h2&gt;

&lt;p&gt;This is the part that didn't exist when I first wrote about this. Anthropic now ships an official GitHub Action — &lt;code&gt;anthropics/claude-code-action@v1&lt;/code&gt; — that runs the actual Claude Code runtime inside a GitHub Actions runner. Same binary, same tools, same &lt;code&gt;CLAUDE.md&lt;/code&gt;, same slash commands.&lt;/p&gt;

&lt;p&gt;Two workflows cover most of what a small team needs:&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow A — &lt;code&gt;@claude&lt;/code&gt; mentions on issues and PRs
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/claude-mention.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Claude on mention&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;issue_comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;pull_request_review_comment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;created&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;assigned&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;claude&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
      &lt;span class="s"&gt;contains(github.event.comment.body, '@claude') ||&lt;/span&gt;
      &lt;span class="s"&gt;contains(github.event.issue.body, '@claude')&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
      &lt;span class="na"&gt;pull-requests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
      &lt;span class="na"&gt;issues&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
      &lt;span class="na"&gt;id-token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Claude Code&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropics/claude-code-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anthropic_api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.ANTHROPIC_API_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;claude_args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;--model claude-opus-4-6&lt;/span&gt;
            &lt;span class="s"&gt;--allowed-tools Bash,Read,Write,Edit,Glob,Grep&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop &lt;code&gt;@claude please implement this&lt;/code&gt; into any issue and the action will pick it up, plan, implement, and open a PR. It auto-detects whether it's reviewing a PR, answering a question, or implementing a feature based on context — no separate workflows needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Workflow B — automated PR review on every pull request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .github/workflows/claude-review.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Claude PR review&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;types&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;opened&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;synchronize&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;reopened&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;paths-ignore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;**/*.md"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;**/*.lock"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;package-lock.json"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yarn.lock"&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pnpm-lock.yaml"&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;review&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;permissions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;contents&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;read&lt;/span&gt;
      &lt;span class="na"&gt;pull-requests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;write&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v4&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;fetch-depth&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Review with Claude&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropics/claude-code-action@v1&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anthropic_api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.ANTHROPIC_API_KEY }}&lt;/span&gt;
          &lt;span class="na"&gt;claude_args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;--model claude-sonnet-4-6&lt;/span&gt;
          &lt;span class="na"&gt;prompt&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
            &lt;span class="s"&gt;Review this pull request against the project's CLAUDE.md and&lt;/span&gt;
            &lt;span class="s"&gt;existing patterns. Look for:&lt;/span&gt;
            &lt;span class="s"&gt;- Logic bugs and missed edge cases&lt;/span&gt;
            &lt;span class="s"&gt;- Security issues (auth, input validation, secrets in code)&lt;/span&gt;
            &lt;span class="s"&gt;- Test coverage gaps&lt;/span&gt;
            &lt;span class="s"&gt;- Deviations from project conventions&lt;/span&gt;

            &lt;span class="s"&gt;Be specific. Reference file paths and line numbers. Group by severity.&lt;/span&gt;
            &lt;span class="s"&gt;Skip nitpicks unless they affect correctness or readability.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sonnet 4.6 is the right choice for routine PR review — it's faster, cheaper, and accurate enough on diffs. Reserve Opus 4.6 for the heavier &lt;code&gt;/solve-issue&lt;/code&gt; runs in Workflow A.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup checklist
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install the Claude GitHub app on your repo: &lt;code&gt;https://github.com/apps/claude&lt;/code&gt; (or run &lt;code&gt;/install-github-app&lt;/code&gt; from inside Claude Code locally — it walks you through it)&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; to your repo secrets&lt;/li&gt;
&lt;li&gt;Drop both workflows into &lt;code&gt;.github/workflows/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Open a test issue with &lt;code&gt;@claude please add a hello-world endpoint&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Cost in 2026
&lt;/h2&gt;

&lt;p&gt;The plan landscape shifted in early 2026. Quick rundown:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pro ($20/month)&lt;/strong&gt; — includes Claude Code access and is genuinely usable for hobby projects, but you'll hit rate limits during a serious 4-issue session.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Max ($100 or $200/month)&lt;/strong&gt; — 5x or 20x the usage of Pro. The $100 tier is the sweet spot for a solo developer running this workflow daily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team ($30/seat/month)&lt;/strong&gt; — now bundles Claude Code access into every standard seat.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API pay-per-token&lt;/strong&gt; — what the GitHub Action consumes, billed separately. Routine PR reviews on Sonnet 4.6 typically come in well under 10 cents apiece.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important note on subscriptions and CI: as of April 2026, Anthropic explicitly blocks subscription tokens from being used by third-party CLI tools and runners. Use a real API key for anything running outside the official Claude Code client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"90–95% first-try success" is for low-to-mid complexity work.&lt;/strong&gt; Anything that touches three subsystems, requires a real architectural decision, or interacts with a flaky external API still needs a human in the loop.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parallel worktrees create merge conflicts.&lt;/strong&gt; The more streams you run, the more time you spend resolving them. Two or three is often a better steady state than four.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reviewing AI-generated PRs is its own skill.&lt;/strong&gt; The diffs look plausible. The temptation to rubber-stamp is real. Build a habit of running the tests yourself and reading the diff like a hostile reviewer, not a proud parent.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>api</category>
      <category>github</category>
    </item>
  </channel>
</rss>
