<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Dev Shorts: Bytes]]></title><description><![CDATA[A space for thoughtful, detailed articles on development and tech. Here, you'll find guides, reviews, and opinions covering everything from coding techniques to industry insights. Whether you’re learning something new or exploring deep dives, "Bytes" offers practical and interesting reads for developers at all levels.]]></description><link>https://www.devshorts.in/s/bytes</link><image><url>https://substackcdn.com/image/fetch/$s_!c2er!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb5d87ed5-d2dc-4e24-937f-a69cd15aee86_1280x1280.png</url><title>Dev Shorts: Bytes</title><link>https://www.devshorts.in/s/bytes</link></image><generator>Substack</generator><lastBuildDate>Sun, 14 Jun 2026 10:17:05 GMT</lastBuildDate><atom:link href="https://www.devshorts.in/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Aravind Putrevu]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[devshorts@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[devshorts@substack.com]]></itunes:email><itunes:name><![CDATA[Aravind Putrevu]]></itunes:name></itunes:owner><itunes:author><![CDATA[Aravind Putrevu]]></itunes:author><googleplay:owner><![CDATA[devshorts@substack.com]]></googleplay:owner><googleplay:email><![CDATA[devshorts@substack.com]]></googleplay:email><googleplay:author><![CDATA[Aravind Putrevu]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Claude Certified Architect Foundations: The Complete Guide - Part 2]]></title><description><![CDATA[CCA-F exam prep - domains, code examples, and practice questions. All in one place.]]></description><link>https://www.devshorts.in/p/claude-certified-architect-foundations-fe5</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-certified-architect-foundations-fe5</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 20 May 2026 14:37:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b4309678-ec02-456d-94a8-2e2e11a4c5b0_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We started this guide with <a href="https://devshorts.substack.com/p/claude-certified-architect-foundations">Part 1</a>. We covered agentic architecture, MCP integration, and Claude Code configuration. If you have not read part 1 yet, start there.</p><p>This part covers the remaining domains and how to register for the exam. Here is what we will cover.</p><ol><li><p>Prompt Engineering &amp; Structured Output</p></li><li><p>Context Management &amp; Reliability</p></li><li><p>How to register for the exam</p></li></ol><p>I have also added more practice questions to the <a href="https://github.com/devgotomarket/cca-prep">CCAF GitHub repo</a>. Six sets now, covering all domains.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>1. Prompt Engineering &amp; Structured Output</strong></h2><ul><li><p>Explicit Criteria</p></li><li><p>Few-shot Prompting</p></li><li><p>Structured Output</p></li><li><p>Validation-Retry Loops</p></li><li><p>Multi-pass Review</p></li><li><p>Schema Design</p></li></ul><h4><strong>Explicit Criteria</strong></h4><p>We have to give exact instructions to Claude instead of vague conditions. This is called <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#be-clear-and-direct">explicit criteria</a>. Telling Claude like &#8220;be careful&#8221; or &#8220;report high security issues&#8221; does not work. Claude does not know what that means in practice. </p><p>Tell Claude exactly what to do and what not to do. When you are more specific, Claude makes fewer mistakes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;5e504cea-e6ff-4980-8254-81bbe5009f51&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; vague, 
system_prompt = """
Review this code and flag any security issues.
Only report high confidence findings.
"""

# Good &#8212; categorical, Claude knows exactly what to flag
system_prompt = """
Review this code for security issues.
Flag a finding ONLY when:
- User input is passed directly to a SQL query without parameterization
- A secret or API key is hardcoded as a string literal
- User-supplied data is rendered in HTML without escaping

Do not flag theoretical risks or best practice suggestions.
"""</code></pre></div><h4><strong>Few-shot Prompting</strong></h4><p>Give Claude examples before asking it to do the task. This is called <a href="https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices#use-examples-effectively">few-shot prompting</a>. Two to four examples is enough. More than that wastes tokens.</p><p>One thing to keep in mind. Few-shot prompting is probabilistic. Claude will follow the examples most of the time but not always. If you want something to run without fail, put it in a hook.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;a4be0fbb-d757-49f1-a7e2-ccbe69e60f32&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">system_prompt = """
Extract the customer name and order ID from the message below.

Example 1:
Message: "Hi, I am John and my order 1234 has not arrived."
Output: {"name": "John", "order_id": "1234"}

Example 2:
Message: "This is Sarah. Order #5678 is damaged."
Output: {"name": "Sarah", "order_id": "5678"}

Now extract from this message:
"""</code></pre></div><h4><strong>Structured Output</strong></h4><p>If you ask Claude to &#8220;output as JSON&#8221; in the prompt, it will try. But it is not guaranteed. <a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs">The reliable way is to use structured outputs.</a></p><p><strong><a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs#json-outputs">Method 1 &#8212; JSON outputs</a></strong></p><ul><li><p>Define the schema in <code>output_config</code> of the <code>client.messages.create()</code> call.</p></li><li><p>Claude returns the answer as JSON text in <code>response.content[0].text.</code></p></li><li><p>Parse it with <code>json.loads()</code> to get the data.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;52bacdb3-edf2-4c37-b406-6263f8a2b0b6&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Extract order details from: John's order 1234 is missing"}],
    output_config={ # tells Claude to return structured JSON
        "format": {
            "type": "json_schema",
            "schema": {
                "type": "object",
                "properties": {
                    "customer_name": {"type": "string"},
                    "order_id": {"type": "string"},
                    "issue": {"type": "string"}
                },
                "required": ["customer_name", "order_id", "issue"]
            }
        }
    }
)
# Claude returns guaranteed JSON in content[0].text
result = json.loads(response.content[0].text)
# {"customer_name": "John", "order_id": "1234", "issue": "missing"}</code></pre></div><p><strong><a href="https://platform.claude.com/docs/en/build-with-claude/structured-outputs#strict-tool-use">Method 2 &#8212; Strict tool use</a></strong></p><p>This method is used to pass structured input to your tools with guaranteed schema compliance. </p><p>When Claude calls a tool in an agentic workflow, it passes parameters to that tool. Without strict mode, those parameters may not match your schema exactly. With <code>strict: True</code> on the tool definition, Claude is forced to pass parameters that exactly match your <code>input_schema</code>. The structured data Claude fills in is available in <code>block.input</code> on the tool call response.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ce56c18b-8959-4557-92f6-b066eeeae62d&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">tools = [{
    "name": "extract_order",
    "description": "Extract order details",
    "strict": True,          # Claude must fill in all fields exactly as defined
    "input_schema": {
        "type": "object",
        "properties": {
            "customer_name": {"type": "string"},
            "order_id": {"type": "string"},
            "issue": {"type": "string"}
        },
        "required": ["customer_name", "order_id", "issue"]
    }
}]

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    tools=tools,
    tool_choice={"type": "tool", "name": "extract_order"},  # force Claude to call this tool
    messages=[{"role": "user", "content": "John's order 1234 is missing"}]
)

for block in response.content:
    if block.type == "tool_use":
        print(block.input)   # structured data Claude filled in
        # {"customer_name": "John", "order_id": "1234", "issue": "missing"}</code></pre></div><h4><strong>Validation-Retry Loops</strong></h4><p>Structured output guarantees the structure. It does not guarantee the values are correct. This is where the validation-retry loop comes in. When Claude returns wrong values, you send the error back with specific details about what went wrong. Claude fixes it and tries again.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;8cc35597-9251-4e3e-a5de-ab1d1acf569c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">
MAX_RETRIES = 3
for attempt in range(MAX_RETRIES):
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        tools=tools,
        tool_choice={"type": "tool", "name": "extract_order"},
        messages=messages
    )

    for block in response.content:
        if block.type == "tool_use":
            result = block.input

            # Validate the result
            if not result.get("order_id").startswith("ORD-"):
                # Send specific error back &#8212; not a generic "try again"
                messages.append({"role": "assistant", "content": response.content})
                messages.append({"role": "user", "content": [{
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": "order_id must start with ORD-. You returned: " + result["order_id"]
                }]})
                break  # go to next attempt

            return result  # valid &#8212; done

raise RuntimeError("Failed to get valid output after max retries")</code></pre></div><blockquote><p>Always send specific error details. Tell Claude which field failed and what you expected. A generic "try again" does not give Claude enough context to fix the issue.</p></blockquote><p>Retry loops fix format errors. But if the data is simply not there in the source, retrying will not help. Claude cannot return something that does not exist.</p><h4>Multi-pass Review</h4><p>When Claude generates something and then reviews it in the same session, it already knows how it was built. It will miss its own mistakes. That is the problem with self-review.</p><p>Multi-pass review fixes this. You use a separate Claude session to review the output. The reviewer session has no memory of how the output was generated. It looks at the result with fresh eyes.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3507f1cc-b960-4dc1-90c9-92725184b20c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Pass 1 &#8212; generate the code
generation_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    messages=[{"role": "user", "content": "Write a FastAPI endpoint for processing refunds"}]
)
generated_code = generation_response.content[0].text

# Pass 2 &#8212; review in a separate session
review_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": f"Review this code for security vulnerabilities:\n\n{generated_code}"}]
)</code></pre></div><blockquote><p>Never use the same session for generation and review. Always use a separate session.</p></blockquote><h4><strong>Schema Design</strong></h4><p>When you define a JSON schema for structured output, each field tells Claude what to extract and in what format. One of those fields can be an enum.  It is a fixed list of allowed values.  For example, if you have an <code>issue</code> field you can restrict it to <code>"missing"</code>, <code>"damaged"</code>, or <code>"wrong_item"</code>, you define it as an enum. Claude can only pick from that list.</p><p>Three things to know in Schema Design:</p><p><strong>Enums</strong> - always add <code>"other"</code> to the list. If Claude sees something that does not fit any of the defined values, it will pick the closest one instead of telling you it does not know. With <code>"other"</code> in the list, Claude has a safe option to fall back to.</p><p><strong>Nullable fields</strong> &#8212; if a field may not always be present, use <code>["string", "null"]</code> instead of <code>"string"</code>. Never mark optional fields as required. Claude will make up a value just to fill it.</p><p><strong>Flat structures</strong> &#8212; avoid deeply nested objects in your schema. Deep nesting makes it harder for Claude to fill the schema accurately. Keep your schema flat. If the data is complex, split it across multiple tool calls.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;2696e9ef-15b2-4181-9918-0d1d678c1c65&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">tools = [{
    "name": "extract_order",
    "description": """Extract order details. Issue must be one of: missing, damaged, wrong_item, other.
    Use other when the issue does not fit the above categories.""",
    "strict": True,  # Claude must follow the schema exactly
    "input_schema": {
        "type": "object",
        "additionalProperties": False,  # no extra fields allowed
        "properties": {
            "customer_name": {"type": "string"},
            "order_id": {"type": "string"},
            # issue must be a string 
            # issue can only be one of these four values &#8212; always include "other" in enum.
            "issue": {
                "type": "string",
                "enum": ["missing", "damaged", "wrong_item", "other"]
            },
            # fill this when issue is "other" &#8212; gives Claude somewhere to put unexpected values
            "issue_detail": {"type": "string"},
            # nullable &#8212; Claude returns null when delivery date is not mentioned in the source
            "delivery_date": {"type": ["string", "null"]}
        },
        # only these fields are required &#8212; issue_detail and delivery_date are optional
        "required": ["customer_name", "order_id", "issue"]
    }
}]</code></pre></div><h2><strong>2. Context Management &amp; Reliability</strong></h2><p>This domain carries 15% of your exam score. It is the smallest domain. But it matters. If you do not manage context well, your agents become unreliable in production.</p><p>Below are the key concepts.</p><ul><li><p>Lost-in-the-Middle Effect</p></li><li><p>Progressive Summarization</p></li><li><p>Tool Result Trimming</p></li><li><p>Escalation and Ambiguity</p></li><li><p>Error Propagation</p></li><li><p>Prompt Caching</p></li><li><p>Message Batches API</p></li></ul><h4><strong>Lost-in-the-Middle Effect</strong></h4><p>Claude can process up to 1 million tokens in a single request. But more context does not always mean better results.</p><p>When you pass a long input, Claude processes the beginning and end reliably. What is in the middle often gets missed. This is called the lost-in-the-middle effect.</p><p>Two things to know</p><ul><li><p>Place critical information at the beginning or end. Never place it in the middle.</p></li><li><p>For large context tasks, delegate to subagents. Each subagent starts fresh with only what it needs.</p></li></ul><h4><strong>Progressive Summarization</strong></h4><p>As an agent runs through multiple turns, the conversation history keeps growing. At some point it gets too large to pass in full on every API call.</p><p>Progressive summarization solves this. Instead of passing everything, you summarize the older turns and keep only the recent ones in full. The summary replaces the old turns in the messages array.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;6cca05bb-295d-45d9-bacb-6d619e80d9c3&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># When history gets too long, summarize older turns
summary_response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{
        "role": "user",
        "content": f"Summarize this conversation history into key facts only:\n\n{old_turns}"
    }]
)

summary = summary_response.content[0].text

# Replace old turns with the summary
messages = [
    {"role": "user", "content": f"Previous context: {summary}"},
    *recent_turns  # keep the last few turns in full
]</code></pre></div><blockquote><p>When we summarize, we may lose details. Dates, percentages, and numeric values often become vague. If you want anything to stay precise, extract it into a structured state object before summarizing.</p></blockquote><h4><strong>Tool Result Trimming</strong></h4><p>Every tool call adds output to the context. If a tool returns 40 fields but you only need 5, the remaining 35 are wasting tokens. Over multiple turns this adds up fast and fills your context with noise.</p><p>Trim tool results before appending them to the next API messages array. Always keep your context clean. Pass only what Claude needs. Learn more about <a href="https://platform.claude.com/docs/en/agents-and-tools/tool-use/manage-tool-context">managing tool context here</a>.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;7683b261-c7df-448b-a9d3-d15ffeeb5962&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; full tool result, 40+ fields appended to messages
result = get_customer(customer_id="C-42")
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": block.id,
        "content": json.dumps(result)
    }]
})

# Good &#8212; trim before appending, only what Claude needs
result = get_customer(customer_id="C-42")
trimmed = {
    "id": result["id"],
    "name": result["name"],
    "status": result["status"]
}
messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": block.id,
        "content": json.dumps(trimmed)
    }]
})</code></pre></div><h4><strong>Escalation and Ambiguity</strong></h4><p>Not every task should be handled autonomously. Knowing when to escalate to a human is just as important as knowing how to complete a task.</p><p>Three valid reasons to escalate:</p><ul><li><p>When the user explicitly requests a human, escalate immediately. Do not attempt to investigate first.</p></li><li><p>When the agent does not have clear instructions for the situation, escalate. Do not guess.</p></li><li><p>When the agent cannot make meaningful progress, escalate.</p></li></ul><p>When a tool returns multiple matching results, ask the user for more details to narrow it down. Never pick one based on a guess.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;83d9c817-9acd-45c5-81d6-ab5240ba468e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Tool returns escalation signal
@mcp.tool()
def process_refund(order_id: str, amount: float) -&gt; dict:
    if amount &gt; 500:
        return {"requires_human": True, "reason": "Refund above $500 needs approval"}
    return {"success": True, "refund_id": "REF-001"}

# Agent loop checks for it
result = tool_map[block.name](**block.input)

if result.get("requires_human"):
    escalate_to_human(result)
    return</code></pre></div><p><strong>Two common mistakes to avoid.</strong></p><p>Do not escalate just because the user seems frustrated. Frustration does not mean the task needs human intervention. Acknowledge it, try to resolve it, and only escalate if the user explicitly asks for a human.</p><p>Do not use the agent&#8217;s own confidence score as an escalation signal. Models tend to be overconfident even when they are wrong. It is not reliable.</p><h4><strong>Error Propagation</strong></h4><p>In a multi-agent system, when a subagent fails, the coordinator needs to know what went wrong. If the subagent returns a generic error, the coordinator cannot decide what to do next.</p><p>Subagents should always return structured error context. Not a generic failure status.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;981c7293-d1f0-4bee-86c1-84fb99e40c54&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; coordinator has no idea what went wrong
return {"error": True}

# Good &#8212; coordinator knows what failed and what to do next
return {
    "error": True,
    "type": "tool_failure",
    "tool": "lookup_order",
    "reason": "Order not found in database",
    "retryable": False
}</code></pre></div><p>Never suppress errors silently. If a subagent fails without sending a signal, the coordinator assumes success and moves on. That produces wrong results in the next steps.</p><p>Not all errors are the same. A timeout can be retried. A missing record cannot be retried. Tell the coordinator what went wrong so it can decide what to do.</p><p>Also remember, subagents do not share context automatically. If one fails, the coordinator has to pass that information forward explicitly.</p><h4><strong>Prompt Caching</strong></h4><p>Every time you call the Claude API, you send the full context. You send system prompt, conversation history, tool definitions. Claude processes all of it from scratch on every single call. That adds up fast. It becomes more tokens with higher cost. </p><p><a href="https://platform.claude.com/docs/en/build-with-claude/prompt-caching">With prompt caching we can reduce the cost</a>. You mark the static parts of your prompt with <code>cache_control</code>. Claude caches them on the first call. Instead of paying full price on every call, you pay only 10% for the tokens that are already cached.</p><p>There are two ways to enable it.</p><p><strong>Automatic caching</strong> - You  just add <code>cache_control</code> at the top level of your request. Claude scans your prompt from top to bottom and places the cache breakpoint at the end of the last block that can be cached, which is typically the end of your system prompt or tool definitions.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;642363a2-3c80-4472-a12b-d9561835ffa8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    cache_control={"type": "ephemeral"},  # automatic &#8212; Claude picks the breakpoint
    system="You are a customer support agent.................  ",
    messages=[{"role": "user", "content": user_query}]
)</code></pre></div><p><strong>Explicit caching</strong> - you mark specific content blocks with <code>cache_control</code> directly inside the <code>system</code> array. Claude caches everything before and up to that block. Use this when you want to control exactly where the cache ends.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ca941d48-468b-4ccf-bbbd-5b68c4310617&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[
        {"type": "text", "text": "You are a customer support agent."},
        {
            "type": "text",
            "text": large_document,
            "cache_control": {"type": "ephemeral"}  # cache everything up to here
        }
    ],
    messages=[{"role": "user", "content": user_query}]
)
</code></pre></div><p>Always cache static content only. You can put system prompts, tool definitions, and large documents in cache. Never put dynamic content in cache.</p><p>Every API call checks whether the cached prefix matches exactly. Even a single character difference causes a cache miss and Claude reprocesses everything from scratch.</p><h4>TTL and pricing</h4><p>TTL stands for Time to Live. It is how long the cache stays active. By default the cache expires after 5 minutes. Every cache hit resets the timer. If your requests come in less frequently, you can extend the TTL to 1 hour at 2x the cache write price.</p><ul><li><p>The first call writes to cache and costs 1.25x normal input tokens.</p></li><li><p>Cache read costs 0.1x normal input tokens.</p></li><li><p>You can place a maximum of 4 <code>cache_control</code> breakpoints in a single request. </p></li><li><p>If you use the Batch API and prompt caching together, both discounts apply.</p></li><li><p>The first call costs more because it writes to cache. From the 4th read onwards you start saving money.</p></li></ul><p>To check if caching is working, look at the response usage.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;935f3e34-ee0c-4730-aa33-dc8fe10299b5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">print(response.usage.cache_read_input_tokens)     # tokens read from cache
print(response.usage.cache_creation_input_tokens)  # tokens written to cache</code></pre></div><p>If <code>cache_read_input_tokens</code> is greater than 0, the cache was hit.</p><h4><strong>Message Batches API</strong></h4><p>When you need to process a large number of API requests without needing an immediate response, use the <a href="https://platform.claude.com/docs/en/build-with-claude/batch-processing#message-batches-api">Message Batches API</a>. For example, processing thousands of customer feedback forms overnight, or doing bulk content generation.</p><p>You can submit up to 100,000 requests in one batch. Claude processes them asynchronously. Most batches finish within 1 hour, but they can run up to 24 hours. If they do not complete within 24 hours, they expire. </p><p>The cost is 50% off standard API pricing. The output quality is the same. Only the timing is different.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;909214b1-ed94-49a7-9916-22580bf1c7c5&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import anthropic
import time

client = anthropic.Anthropic()

# Create a batch with multiple independent requests
batch = client.messages.batches.create(
    requests=[
        {
            # This custom id will be returned with the result, 
            # so we know this output is for feedback_001
            "custom_id": "feedback_001",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 500,
                "system": "You are a support analyst. Summarize customer feedback in 2 short bullet points.",
                "messages": [
                    {
                        "role": "user",
                        "content": "The app is useful, but the login takes too much time."
                    }]
            }},
        {
            # This custom id will be returned with the result
            # so we know this output is for feedback_002
            "custom_id": "feedback_002",
            "params": {
                "model": "claude-sonnet-4-6",
                "max_tokens": 500,
                "system": "You are a support analyst. Summarize customer feedback in 2 short bullet points.",
                "messages": [
                    {
                        "role": "user",
                        "content": "The dashboard is clean, but export to PDF is missing."
                    }]
            }}
    ])

print(f"Batch ID: {batch.id}")

# Wait until the batch completes
while True:
    current_batch = client.messages.batches.retrieve(batch.id)

    if current_batch.processing_status == "ended":
        break

    time.sleep(30)

# Read the results
for result in client.messages.batches.results(batch.id):
    if result.result.type == "succeeded":
        print(f"{result.custom_id}: {result.result.message.content[0].text}")

    elif result.result.type == "errored":
        print(f"Error in {result.custom_id}: {result.result.error}")

    elif result.result.type == "canceled":
        print(f"Canceled: {result.custom_id}")

    elif result.result.type == "expired":
        print(f"Expired: {result.custom_id}")</code></pre></div><p>Three things to know.</p><ul><li><p>Use <code>custom_id</code> to tie each result back to your input. Without it you cannot match results to requests.</p></li><li><p>You can combine the Batch API with prompt caching. Both discounts apply together, so if your requests share the same system prompt, use both for maximum savings.</p></li><li><p>Use the Batch API for async workloads only. If you need a real-time response, use the standard Messages API.</p></li></ul><h2><strong>3. How to Register for the exam</strong></h2><p>The exam is currently available to employees of companies in the Anthropic Partner Network. The Partner Network is free to join. Any company building with Claude qualifies for it.</p><h4><strong>Step 1 &#8212; Join the Partner Network</strong></h4><p>Your company needs to be part of the Anthropic Partner Network. If you are not in the partner network then <a href="https://partnerportal.anthropic.com/s/partner-registration">apply for Claude Partner Network</a>.</p><h4><strong>Step 2 &#8212; Request exam access</strong></h4><p>If you are already in the partner network, then <a href="https://partnerportal.anthropic.com/s/login/">login to the network</a> and take up the exam.</p><h4><strong>Step 3 &#8212; About exam</strong></h4><p>60 questions. 120 minutes. No notes, no AI tools, no external resources are allowed.</p><h4><strong>Free prep resources</strong></h4><p>Free resources are available on <a href="https://anthropic.skilljar.com">Anthropic Academy</a> and open to everyone. Start there regardless of whether you have exam access yet.</p><h4><strong>Certificate validity</strong></h4><p>The certificate is valid for 6 months. After that you need to recertify.</p><h2>Conclusion</h2><p>I hope this gave you a clear picture of what the exam covers. We went through all the domains across both parts. </p><p>I have also added 6 sets of practice questions to the <a href="https://github.com/devgotomarket/cca-prep">GitHub repo</a>. </p><p>These concepts are not just for the exam. Knowing them well will make you a better engineer when building with Claude.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-certified-architect-foundations-fe5?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Claude Certified Architect Foundations: The Complete Guide - Part 1]]></title><description><![CDATA[CCA-F exam prep - domains, code examples, and practice questions. All in one place.]]></description><link>https://www.devshorts.in/p/claude-certified-architect-foundations</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-certified-architect-foundations</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Thu, 30 Apr 2026 12:31:48 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/646665a0-551a-4898-9fa2-0be0e6d7c542_1672x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://anthropic.skilljar.com/claude-certified-architect-foundations-access-request">The Claude Certified Architect Foundations</a> exam was recently launched. It is Anthropic&#8217;s first official technical certification.</p><p>I have been building agentic systems with Claude for a long time. When I heard about the exam, I wanted to understand what it actually tests. </p><p>So I went through the entire exam guide, also took some mock tests to understand what they covered. </p><p>Below are the sections you need to understand to become a Claude Certified Architect.</p><ol><li><p>Agentic Architecture &amp; Orchestration</p></li><li><p>Tool Design &amp; MCP Integration</p></li><li><p>Claude Code Configuration </p></li><li><p>Prompt Engineering &amp; Structured Output</p></li><li><p>Context &amp; Reliability</p></li></ol><p>Each section is detailed enough to be its own blog. We will cover the first three in this part. The remaining sections along with how to register will be in Part 2.</p><p>I have also put together a <a href="https://github.com/devgotomarket/cca-prep">set of practice questions with answers</a> on GitHub. I will keep adding more as I come across them.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Agentic Architecture &amp; Orchestration</h2><p>This section carries 27% of your exam score. It covers Claude Agent SDK, the library you use to build production grade agents. Below are the key Agent SDK concepts, that turn a normal LLM into an agent.</p><ul><li><p>stop_reason</p></li><li><p>Conversation History</p></li><li><p>Loop Termination</p></li><li><p>Multi-Agent Systems</p></li><li><p>Task Decomposition</p></li><li><p>Hooks</p></li><li><p>Session Management</p></li></ul><p>A normal LLM call is simple. You send a message, Claude replies, done. An agent is different. It is multiple LLM calls chained together until the task is fully complete. It includes tool calling, getting results, and deciding what to do next.</p><p>Let us start with stop_reason. It is the core of every agent loop.</p><h3><strong>stop_reason</strong></h3><p>Every Claude API response has a field called stop_reason. It tells you why Claude stopped. This is what decides whether your loop continues or ends. stop_reason has multiple values. The three you need to know for the exam are,</p><p>If <code>stop_reason == "tool_use"</code> then it means Claude wants to call a tool. Then you execute the tool, append the result, and loop again.</p><p>If <code>stop_reason == "end_turn"</code> then Claude is done. We can return the response to the user. Loop ends.</p><p>If <code>stop_reason == "max_tokens"</code> then the response got cut off. This happens when Claude hits the <code>max_tokens</code> limit you set in the API call. </p><p>If the response genuinely needs more tokens, increase <code>max_tokens</code>. If the response is too verbose, then restructure your prompt to produce a shorter output. Never return a cut-off response as it is incomplete.</p><p>Here is the stop_reason with all three options, explained in code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f285f3e5-4407-4f0a-959b-1fe7feff7ac4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import anthropic
import json

client = anthropic.Anthropic()

class Agent:
    def __init__(self, tools):
        self.tools = tools

    def run(self, task: str) -&gt; str:
        # Every conversation starts with the user task
        messages = [{"role": "user", "content": task}]

        while True:
            # Claude does not remember previous call, 
            # So we pass the full conversation history every time
            response = client.messages.create(
                model="claude-sonnet-4-6",
                max_tokens=1024,
                tools=self.tools,
                messages=messages
            )

            # Check the stop_reason to ensure the Task is complete
            if response.stop_reason == "end_turn":
                return extract_text(response.content)
            
            # If stop_reason is tool_use then execute the tool
            elif response.stop_reason == "tool_use":

                # Step 1 &#8212; save what Claude said, including which tool it wants to call
                messages.append({
                    "role": "assistant",
                    "content": response.content
                })

                for block in response.content:
                    if block.type == "tool_use":

                        # Step 2 &#8212; we execute the tool, not Claude
                        result = tool_map[block.name](**block.input)

                        # Step 3 &#8212; send the tool result back so Claude can continue
                        # tool_use_id tells Claude which tool call this result belongs to
                        messages.append({
                            "role": "user",
                            "content": [{
                                "type": "tool_result",
                                "tool_use_id": block.id,
                                "content": json.dumps(result)
                            }]
                        })
                # Claude now sees the result and decides what to do next

            else:
                # stop_reason == "max_tokens" &#8212; response was cut off, never return incomplete results
                raise RuntimeError(f"Unexpected: {response.stop_reason}")
</code></pre></div><p>The loop runs until Claude returns <code>end_turn</code>. </p><p>Handling stop_reason is one of the most important concepts in agentic workflows. Learn more in the <a href="https://platform.claude.com/docs/en/build-with-claude/handling-stop-reasons">official docs</a>.</p><p>Now that you understand stop_reason, let us look at how Claude keeps track of everything that happens in the loop.</p><h3>Conversation History</h3><p>In agentic workflows, Claude has no memory between API calls. Every time you call the API, you have to pass the full conversation history. That is how Claude knows what happened before.</p><blockquote><p>The <code>messages</code> array holds that history. User messages, Claude responses, and tool results all get appended here until the task is done.</p></blockquote><p>So how does the messages array grow?  Every time stop_reason == "tool_use", you append two things.</p><p>First, you append the response Claude just sent. This contains the tool name Claude wants to call and the input values it decided to pass.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;1b3804fe-e180-43a9-84fb-e8d7254d83a0&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">messages.append({
    "role": "assistant",
    "content": response.content    # text block + tool_use block
})</code></pre></div><p>Then you execute the tool and append the result back. The <code>tool_use_id</code> in the result must match the one from the response we appended previously. This tells Claude that this result is for the tool call it requested.</p><p>Now you loop again. Claude reads everything in the <code>messages</code> array and decides what to do next.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ccd22067-89e0-4415-a815-fdf6bbd232c4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">for block in response.content:
    if block.type == "tool_use":
        result = tool_map[block.name](**block.input)

        messages.append({
            "role": "user",
            "content": [{
                "type": "tool_result",
                "tool_use_id": block.id,
                "content": json.dumps(result)
            }]
        })</code></pre></div><blockquote><p>Do not add text immediately after tool results. Send tool results directly without additional text</p></blockquote><h3><strong>Loop Termination</strong></h3><p>An agent loop can terminate for different reasons. We need to identify each termination reason and handle it. If we do not, the agent either runs forever, returns incomplete results, or takes actions it should not.</p><p>Here are the three ways we handle it.</p><ul><li><p>stop_reason == "end_turn" - Claude is done. Return the response to the user and exit the loop.</p></li><li><p>result.get("requires_human") == True - escalate to a human and exit the loop.</p></li><li><p>MAX_ITERATIONS = 10 - the loop hit the safety cap. Raise an error and exit.</p></li></ul><p>In all three cases, we handle the termination and never return incomplete results. Here is how all three work together in code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;9854d351-ebfb-4ae8-806b-e1187e1f320f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">MAX_ITERATIONS = 10

def escalate_to_human(result: dict) -&gt; None:
    # Notify your human review system &#8212; ticket, Slack, email etc.
    print(f"Escalating to human: {result}")

def extract_text(content) -&gt; str:
    # Extract the text block from Claude's response
    for block in content:
        if hasattr(block, "text"):
            return block.text

class Agent:
    def __init__(self, tools):
        self.tools = tools

    def run(self, task: str) -&gt; str:
        # Every conversation starts with the user task
        messages = [{"role": "user", "content": task}]

        for i in range(MAX_ITERATIONS):
            # Claude does not remember previous calls
            # So we pass the full conversation history every time
            response = client.messages.create(
                model="claude-sonnet-4-6",
                max_tokens=1024,
                tools=self.tools,
                messages=messages
            )

            # Claude is done &#8212; return the response to the user
            if response.stop_reason == "end_turn":
                return extract_text(response.content)

            elif response.stop_reason == "tool_use":
                # Append Claude's response to history
                messages.append({
                    "role": "assistant",
                    "content": response.content
                })

                for block in response.content:
                    if block.type == "tool_use":
                        # we execute the tool
                        result = tool_map[block.name](**block.input)

                        # Tool requires human intervention &#8212; escalate and exit the loop
                        if result.get("requires_human"):
                            escalate_to_human(result)
                            return

                        # Append tool result so Claude can continue
                        messages.append({
                            "role": "user",
                            "content": [{
                                "type": "tool_result",
                                "tool_use_id": block.id,
                                "content": json.dumps(result)
                            }]
                        })

        # Max iterations reached &#8212; exit with error, never return incomplete results
        raise RuntimeError("Agent hit max iterations without completing")</code></pre></div><h3><strong>Multi-Agent Systems</strong></h3><p>You now know how a single agent works. But some tasks are too complex for one agent to handle alone.</p><p>That is where multi-agent systems come in. You break the work across multiple specialized agents. Each one is the same <code>Agent</code> class we defined in the previous sections, just with different tools and a different responsibility.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;0b3c28db-550e-4352-82b0-c8890ea1413e&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">search_agent = Agent(tools=[web_search_tool])
analysis_agent = Agent(tools=[analysis_tool])
report_agent = Agent(tools=[report_tool])</code></pre></div><p>Anthropic uses a pattern called hub-and-spoke to coordinate agents. Think of it like this. One coordinator receives the task, breaks it down, and delegates to specialized agents. Each agent does its part and reports back. The coordinator collects everything and produces the final response.</p><blockquote><p>Now, when do you run agents in parallel and when in sequence?</p></blockquote><p>If the tasks are independent, run them in parallel. If one task needs the output of another, run them in sequence.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;dfd6df01-7311-4167-9c3b-a82f0c7ff965&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">import asyncio

# Step 1 &#8212; Independent subagents, run in parallel
search_result, document_result = await asyncio.gather(
    search_agent.run("Search web for competitors"),
    analysis_agent.run("Analyze our internal documents")
)

# Step 2 &#8212; This subagent depends on Step 1, runs after
report_result = report_agent.run("Generate report", search_result, document_result)

# Step 3 &#8212; Coordinator collects all results and produces the final response
final_result = coordinator_agent.run("Finalize", search_result, document_result, report_result)</code></pre></div><p>Every subagent starts with a fresh context. It does not have access to the coordinator's conversation history. The only way to pass context to a subagent is through its prompt. So be specific and detailed in what you pass.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;2db101fd-f0eb-4886-93b7-5ea084a08a21&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Too vague &#8212; subagent does not know enough to do its job well
search_agent.run("Search web for competitors.")

# Right &#8212; give the subagent exactly what it needs
search_agent.run("Search web for competitors in the B2B SaaS space. Focus on pricing and features.")</code></pre></div><p>Agents never talk directly to the user. They always report back to the coordinator. The coordinator owns the task from start to finish.</p><h3><strong>Task Decomposition</strong></h3><p>Task decomposition is an important part of building multi-agent systems. When you build one, remember that your coordinator agent should never delegate a vague task directly to a subagent.</p><p>Take this for example. Your coordinator receives &#8220;Research the competitive landscape for our project management tool.&#8221; If it passes this directly to a subagent, the subagent does not know where to start. You will get different results every run.</p><p>Break it down first.</p><ul><li><p>Search Google for &#8220;Notion vs Linear pricing plans 2026&#8221;</p></li><li><p>Extract pricing tiers, feature limits, and target user segments for both</p></li><li><p>Generate a comparison table showing where your product has an advantage</p></li></ul><p>Each subtask goes to one specialized agent. Each agent has one job and knows exactly what to return.</p><p>The agents are not the problem. Vague instructions are.</p><h3><strong>Hooks</strong></h3><p>When you build an agent, some actions need to be controlled programmatically. You cannot rely on Claude to always follow prompt instructions. That is where hooks come in.</p><p><a href="https://code.claude.com/docs/en/agent-sdk/hooks">Hooks</a> are callback functions you register in the Claude Agent SDK. They fire automatically at specific points during agent execution. No prompts involved.</p><p>Two hooks you need to know for the exam,</p><h4><strong>PreToolUse :</strong></h4><p>It<strong> </strong>fires before a tool executes. Since it runs before, it can block the action. Use it when you want to stop Claude from doing something like blocking <code>rm -rf</code> commands, preventing writes to <code>.env</code>, or requiring human approval before processing a refund above $500.</p><h4><strong>PostToolUse :</strong></h4><p>PostToolUse fires after a tool executes. It cannot block anything since the action already happened. Use it for things like auto-formatting a file after Claude edits it, writing to an audit log after a deletion, or running a linter after every code change.</p><p>Here is a real example. Your agent has a <code>process_refund</code> tool. Any refund above $500 needs human approval before it goes through.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;d9440bb1-e2d4-45fe-9240-0bca16bca71f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, ClaudeSDKClient, HookMatcher

async def block_large_refunds(input_data, tool_use_id, context):
    tool_name = input_data["tool_name"]
    tool_input = input_data["tool_input"]

    # Only intercept the process_refund tool
    if tool_name != "process_refund":
        return {}  # allow all other tools to proceed

    # Block refunds above $500 &#8212; requires human approval
    if tool_input.get("amount", 0) &gt; 500:
        return {
            "hookSpecificOutput": {
                "hookEventName": input_data["hook_event_name"],
                # deny stops the tool from executing
                "permissionDecision": "deny",
                # this reason is sent back to Claude so it knows why it was blocked
                "permissionDecisionReason": "Refunds above $500 require human approval"
            }
        }

    # Allow refunds under $500 to proceed normally
    return {}

options = ClaudeAgentOptions(
    hooks={
        # PreToolUse fires before the tool executes
        "PreToolUse": [
            # matcher tells the SDK which tool to intercept
            HookMatcher(matcher="process_refund", hooks=[block_large_refunds])
        ]
    }
)

async with ClaudeSDKClient(options=options) as client:
    await client.query("Process a $600 refund for order ORD-999")
    async for message in client.receive_response():
        print(message)</code></pre></div><blockquote><p>The key difference between hooks and prompt instructions is reliability. A prompt instruction like &#8220;never process refunds above $500&#8221; is not guaranteed. Claude may follow it or not. A hook always fires. If you want something enforced without exception, put it in a hook.</p></blockquote><h3><strong>Session Management</strong></h3><p>A session contains the full conversation history. The SDK saves it to disk automatically so you can come back to it later.</p><p>Here is what you need to know.</p><ul><li><p>Session Resumption</p></li><li><p>Session Isolation</p></li><li><p>Session Forking</p></li></ul><h4><strong>Session Resumption</strong></h4><p>Imagine your agent is halfway through a long task and the server crashes. Without session resumption, it starts from scratch. With it, you pass the session ID and the agent continues from where it stopped.</p><p>Here is how you implement it.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;91e78953-c982-4b71-adf3-80ecc235b47c&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, query, ResultMessage

# Start a session and save the session ID
session_id = None
async for message in query("Analyze the refund flow in our codebase"):
    if isinstance(message, ResultMessage):
        session_id = message.session_id

# Resume later &#8212; agent has full context from before
async for message in query(
    prompt="Now fix the bug you found",
    options=ClaudeAgentOptions(
        resume=session_id,
        allowed_tools=["Read", "Edit", "Write", "Glob", "Grep"],
    ),
):
    if isinstance(message, ResultMessage) and message.subtype == "success":
        print(message.result)</code></pre></div><h4><strong>Session Isolation</strong></h4><p>Each user or task gets its own session. If two users share the same session, Claude will mix up their context and produce wrong results. Always create a new session for each user or task.</p><h4><strong>Session Forking</strong></h4><p>Sometimes you want to try a different approach from where you are, without affecting your current session. For example, your agent has analyzed a codebase and you want to try both a REST and a GraphQL implementation. Instead of starting over, you fork the session. Both forks start from the same point. The original stays untouched.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;3d09f20f-732b-4e55-9436-08980b7d6c41&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from claude_agent_sdk import ClaudeAgentOptions, query

# Fork &#8212; original session stays unchanged
options = ClaudeAgentOptions(
    resume=session_id,
    fork_session=True   # new session ID, same history
)

async for message in query("Try a GraphQL approach instead", options=options):
    print(message)</code></pre></div><p>To learn more about working with sessions, check out the <a href="https://code.claude.com/docs/en/agent-sdk/sessions">Claude Agent SDK session guide</a>.</p><h2><strong>2. Tool Design &amp; MCP Integration </strong></h2><p><a href="https://modelcontextprotocol.io/docs/getting-started/intro">MCP stands for Model Context Protocol</a>. It is an open standard for connecting your agent to external services. For example, your agent can query a database, fetch GitHub issues, or send a Slack message through an MCP server.</p><p>If you are new to MCP, check out our <a href="https://www.devshorts.in/p/the-complete-mcp-server-guide">complete MCP Server Guide</a> that covers everything from scratch.</p><p>Below are the key concepts.</p><ul><li><p>MCP Components</p></li><li><p>Tool Descriptions</p></li><li><p>Structured Error Responses</p></li><li><p>Tool Distribution</p></li><li><p>MCP Server Configuration</p></li></ul><h3>MCP Components</h3><p>An MCP server consists of three things.</p><ul><li><p><strong>Tools</strong> are functions exposed by the MCP server. When Claude calls a tool, the MCP server executes that function. Claude decides when to call the tool and what input to send. </p></li><li><p><strong>Resources</strong> are read only data exposed by the MCP server. They give Claude extra context for the task. For example, a resource can be an API spec, database schema, product catalog, or project document. </p></li><li><p><strong>Prompts</strong> are reusable instructions exposed by the MCP server. They tell Claude how to handle a repeated task. In supported clients, prompts can also be triggered as slash commands.</p></li></ul><p>Here is a simple MCP server example. This one connects to PostgreSQL and shows all three components.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;f743c158-a1b3-468c-9927-be517c8d4151&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">from mcp.server.fastmcp import FastMCP
import psycopg2
import os

mcp = FastMCP("DatabaseServer")

# Connect to PostgreSQL &#8212; use environment variables for credentials
conn = psycopg2.connect(
    host=os.getenv("DB_HOST"),
    database=os.getenv("DB_NAME"),
    user=os.getenv("DB_USER"),
    password=os.getenv("DB_PASSWORD")
)

# Tool &#8212; model calls this to query the database
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Look up an order by order ID from the database."""
    cursor = conn.cursor()
    cursor.execute("SELECT id, status, item FROM orders WHERE id = %s", (order_id,))
    row = cursor.fetchone()
    
    if not row:
        return {"error": "Order not found"}
    
    return {"id": row[0], "status": row[1], "item": row[2]}

# Resource &#8212; exposes the full product catalog from the database
@mcp.resource("data://product-catalog")
def get_product_catalog() -&gt; str:
    """Returns all products from the database."""
    cursor = conn.cursor()
    cursor.execute("SELECT name, price FROM products")
    rows = cursor.fetchall()
    return "\n".join([f"{row[0]} - ${row[1]}" for row in rows])

# Prompt &#8212; can appear as a slash command in supported clients
@mcp.prompt()
def review_order_prompt() -&gt; str:
    """Template for reviewing an order status."""
    return """You are an order review specialist. 
When reviewing an order:
- Check the current status
- Identify any issues
- Suggest next steps"""

if __name__ == "__main__":
    mcp.run()</code></pre></div><p>Once this MCP server is running and connected to your agent, you can query it directly.</p><p>&#8220;What is the status of order ORD-999?&#8221;</p><p>The agent calls the <code>get_order</code> tool, queries the database in real time, and returns the result.</p><h3>Tool Descriptions</h3><p>When Claude has multiple tools, it uses the tool description to decide which one to call. If the description is vague, Claude may pick the wrong tool.</p><p>A good tool description should clearly say three things.</p><ul><li><p>What the tool does</p></li><li><p>What input it expects</p></li><li><p>When to use it and when not to</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;7548bb2a-89b4-4fed-a011-ac8789d8351a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; too vague, Claude cannot differentiate
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Retrieves order details."""
    ...

# Good &#8212; clear boundaries, Claude knows exactly when to use it
@mcp.tool()
def get_order(order_id: str) -&gt; dict:
    """Look up an order by order ID. 
    Use this when you need order status, items, and shipping details. 
    Do not use this for customer account lookups."""
    ...</code></pre></div><h3><strong>Structured Error Responses</strong></h3><p>When a tool fails, do not return a generic error. Claude needs to know what went wrong so it can decide what to do next.</p><p>In production, return more than just an error. Tell Claude what went wrong, whether it can retry, and what to do next.</p><p>Here are a few common categories.</p><ul><li><p>Transient - If the external service is down or timed out, we return the error as transient. It means the failure is temporary and usually safe to retry.</p></li><li><p>Validation - If the input is missing or invalid, we return the error as validation. It means Claude should fix the input before calling the tool again.</p></li><li><p>Business - If the tool runs, but the action is not allowed by your system rules, we return the error as business. It means there is no point retrying the same request.</p></li><li><p>Permission - If the user or agent does not have access to perform the action, we return the error as permission. It means access should be granted first before retrying.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;ea327071-46b2-49b6-bcc7-95c516a3ee80&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">@mcp.tool()
def process_refund(order_id: str, amount: float) -&gt; dict:
    """Process a refund for a given order."""

    # validation &#8212; bad input, no point retrying
    if not order_id:
        return {"error": True, "errorCategory": "validation", "isRetryable": False, "message": "order_id is required"}

    # business &#8212; order is not eligible for refund, refund window has expired
    if order_status == "delivered_over_30_days":
        return {"error": True, "errorCategory": "business", "isRetryable": False, "message": "Refund window has expired. Orders can only be refunded within 30 days of delivery."}
    
    # transient &#8212; service down, safe to retry
    if not payment_service.is_available():
        return {"error": True, "errorCategory": "transient", "isRetryable": True, "message": "Payment service unavailable. Try again."}

    return {"success": True, "refundId": "REF-001"}</code></pre></div><p>Never return a generic error like <code>{"error": "Operation failed"}</code>. The more context you give Claude, the better it recovers. </p><h3><strong>Tool Distribution</strong></h3><p>Give each agent only the tools it really needs. Too many tools can confuse Claude. It may call the wrong tool or take the wrong action.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;485f1a78-3afe-41e7-ad58-c28e00e389f4&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python"># Bad &#8212; agent has access to tools it should never use
research_agent = Agent(tools=[
    web_search_tool,
    process_refund_tool,    # research agent should never process refunds
    delete_record_tool,     # research agent should never delete records
    synthesis_tool
])

# Good &#8212; agent only gets what it needs
research_agent = Agent(tools=[
    web_search_tool,
    synthesis_tool
])</code></pre></div><p>Use <code>allowed_tools</code> and <code>disallowed_tools</code> in the Claude Agent SDK to control which tools each agent can access.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;python&quot;,&quot;nodeId&quot;:&quot;be4edd20-eb9a-48d3-95c4-eab80776e70f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-python">options = ClaudeAgentOptions(
    mcp_servers={"orders": order_server},
    allowed_tools=[
        "mcp__orders__get_order",       # pre-approve read operations
        "mcp__orders__get_customer"
    ],
    disallowed_tools=[
        "mcp__orders__delete_record",   # block delete operations
        "mcp__orders__update_record"    # block write operations
    ]
)</code></pre></div><p>To learn more, check the <a href="https://code.claude.com/docs/en/agent-sdk/permissions#allow-and-deny-rules">official SDK reference</a>.</p><h3><strong>MCP Server Configuration</strong></h3><p>When you add an MCP server to your project, you need to decide where to configure it. <a href="https://code.claude.com/docs/en/settings#what-uses-scopes">There are two scopes</a>.</p><ul><li><p>Project level &#8212; .mcp.json in your repo. It can be shared with the whole team via version control.</p></li><li><p>User level &#8212; ~/.claude.json. It is personal and experimental. It is not shared.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;cf2f3064-2b70-4132-9dc5-27772ae6105f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">// .mcp.json &#8212; project level, committed to the repo
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["@anthropic-ai/mcp-server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"  // never hardcode secrets
      }
    },
    "database": {
      "command": "python",
      "args": ["./mcp_servers/database_server.py"],
      "env": {
        "DB_URL": "${DATABASE_URL}"
      }
    }
  }
}</code></pre></div><p>Use existing community MCP servers for standard integrations like GitHub, Slack, and Jira. Build custom servers only for internal or team-specific workflows.</p><p>Check the <a href="https://code.claude.com/docs/en/agent-sdk/mcp">official docs for MCP and Agent SDK integration</a>.</p><h2><strong>3. Claude Code Configuration &amp; Workflows</strong></h2><p>Claude Code deserves its own blog. We have covered the important concepts that will be useful for your daily development as well as for the exam. </p><ul><li><p>CLAUDE.md</p></li><li><p>Custom Commands and Skills</p></li><li><p>Path-specific Rules</p></li><li><p>Plan Mode vs Direct Execution</p></li><li><p>Headless Mode</p></li><li><p>Hooks</p></li><li><p>Built-in Tools</p></li></ul><h3><strong>CLAUDE.md</strong></h3><p><a href="https://code.claude.com/docs/en/memory#claude-md-files">CLAUDE.md</a> is the first file Claude reads when it starts a session. It tells Claude the project conventions and rules.</p><p>It supports three levels:</p><ul><li><p>User level &#8212; ~/.claude/CLAUDE.md. Applies to all your projects.</p></li><li><p>Project level &#8212; CLAUDE.md in the repo root. Applies to the whole project. Commit this to Git.</p></li><li><p>Directory level &#8212; CLAUDE.md inside a subdirectory. Applies only when Claude is working in that folder.</p></li></ul><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;41a57f8f-442a-40db-8cdb-08ad5782de59&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">repo/
&#9500;&#9472;&#9472; CLAUDE.md              # applies to everything
&#9500;&#9472;&#9472; frontend/
&#9474;   &#9492;&#9472;&#9472; CLAUDE.md          # applies only in /frontend
&#9492;&#9472;&#9472; backend/
    &#9492;&#9472;&#9472; CLAUDE.md          # applies only in /backend</code></pre></div><p>It can be placed directly in the repo root or inside the <code>.claude/</code> directory. Both work the same way.</p><p>CLAUDE.md is advisory. Claude reads it and tries to follow it. But it is not guaranteed. Claude may not always follow it. If you have a constraint that must always run without exception, put it in a hook. Hooks fire programmatically and always run regardless of what Claude decides. </p><h3><strong>Custom Commands and Skills</strong></h3><p><a href="https://code.claude.com/docs/en/skills">Skills</a> give domain-specific expertise to Claude. You package your team&#8217;s workflows, standards, and best practices into a SKILL.md file. Claude picks them up automatically when the task matches, or you call them directly with a slash command.</p><p>Skills live in two places:</p><ul><li><p>.claude/skills/ &#8212; project level. Shared with the team via Git.</p></li><li><p>~/.claude/skills/ &#8212; user level. Personal, not shared.</p></li></ul><p>Each skill lives in its own subdirectory. For example, a review-security skill would be at .claude/skills/review-security/SKILL.md.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;7fd5253a-6c92-47ef-88b5-c1e8868cdea8&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/skills/review-security/SKILL.md --&gt;
---
name: review-security
description: Run a security audit on the current file
allowed-tools: Read, Grep
context: fork
argument-hint: [file-path to review]
---

Review this file for SQL injection, XSS, and hardcoded secrets.
Output findings as JSON with severity, line number, and recommendation.</code></pre></div><p>Three fields to know:</p><ul><li><p>allowed-tools - It controls which tools the skill can use. For example, if you set <code>Read, Grep</code>, the skill can only read files and search. It cannot write or run commands.</p></li><li><p>context: fork - It runs the skill in a separate session. Whatever Claude does in that session stays there. Use this when you want Claude to explore something without affecting your main session.</p></li><li><p>argument-hint - It shows a hint when someone types the slash command. It helps the user to understand what input to provide.</p></li></ul><blockquote><p>All fields are optional. But always include <code>description</code> so Claude knows when to load the skill automatically. Check the <a href="https://code.claude.com/docs/en/skills#frontmatter-reference">full frontmatter reference</a> for all available fields.</p></blockquote><p>Custom Commands were the older way to define slash commands in Claude Code. They lived in <code>.claude/commands/*.md</code>. Skills have now replaced them. If you are starting fresh, use Skills.</p><p>You can also find community-built skills at <a href="https://skills.sh/">skills.sh</a>.</p><h3><strong>Path-specific Rules</strong></h3><p>Rules live in <code>.claude/rules/</code> as markdown files. When you want <a href="https://code.claude.com/docs/en/memory#path-specific-rules">path-specific rules</a> for your codebase, you add a <code>paths</code> field in your rules. </p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;d82809e6-b44b-4525-af70-a3dabd3863bd&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/rules/frontend-rules.md --&gt;
---
paths:
  - "frontend/**/*.ts"
  - "frontend/**/*.tsx"
---

Always use React functional components.
Never use class components.
Use Tailwind for styling. Never use inline styles.</code></pre></div><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:&quot;7d36d717-8449-490c-940f-057b46303387&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">&lt;!-- .claude/rules/backend-rules.md --&gt;
---
paths:
  - "backend/**/*.py"
---

Always use FastAPI for routes.
Business logic goes in services/. Never in routes/.
Always add type hints.</code></pre></div><p>When you write rules like above, Claude picks up the right rules based on the file it is touching. This is more token efficient than putting all rules in one big CLAUDE.md. </p><blockquote><p>Note: The official docs use <code>paths:</code> but some versions of Claude Code work more reliably with <code>globs:</code>. If <code>paths:</code> does not work, try <code>globs:</code> with your pattern instead.</p></blockquote><h3><strong>Plan Mode vs Direct Execution</strong></h3><p>By default, Claude executes tasks immediately. It reads files, writes code, runs commands without stopping.</p><p>Plan mode changes that. Claude outlines what it is going to do first. No files written, no commands run. You review the plan and approve before anything happens.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;bc18db4c-329a-44b9-96bf-8013c2886673&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude --permission-mode plan</code></pre></div><p>Use plan mode for large scale or destructive changes. For small, well-scoped tasks, just run directly.</p><h3><strong>Headless Mode</strong></h3><p>Headless mode runs Claude non-interactively using the <code>-p</code> flag. No terminal prompts. No approvals. Used for CI/CD pipelines and automation scripts.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:&quot;8f17b429-1013-4f83-bdf5-84f847df7005&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">claude -p "Review this PR for security vulnerabilities" --output-format json &gt; report.json
</code></pre></div><p>Use --output-format json when you need the output in json. </p><p>Check more about <a href="https://code.claude.com/docs/en/permission-modes">Claude&#8217;s mode in the Claude Code docs.</a></p><h3><strong>Hooks</strong></h3><p>We already covered hooks in the Claude Agent SDK section. The concept is the same but the implementation is different in Claude Code.</p><p>In the Agent SDK, hooks are Python callback functions. <a href="https://code.claude.com/docs/en/hooks">In Claude Code, hooks</a> are shell commands configured in <code>.claude/settings.json</code>. They fire automatically at specific points in Claude Code&#8217;s lifecycle.</p><p>As we already saw, two hooks matter here.</p><p><code>PreToolUse</code> fires before a tool executes and can block the action. <code>PostToolUse</code> fires after tool execution. Here is how they look in Claude Code.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;json&quot;,&quot;nodeId&quot;:&quot;f4a95153-d732-4114-8202-06d786e87a7f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-json">{
  "hooks": {
    "PreToolUse": [{
      "matcher": "Bash",
      "hooks": [{"type": "command", "command": "echo '$CLAUDE_TOOL_INPUT' | grep -q 'rm -rf' &amp;&amp; exit 2 || exit 0"}]
    }],
    "PostToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{"type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"}]
    }]
  }
}</code></pre></div><h3><strong>Built-in Tools</strong></h3><p>Claude Code ships with built-in tools. As an architect, you need to know when each one is the right choice.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;plaintext&quot;,&quot;nodeId&quot;:&quot;53c58b88-46e6-4121-86c0-4796dd60f6a1&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-plaintext">Tool              When to use
-------           -----------
Read              Read the contents of a file
Write             Create or overwrite a file
Edit              Make targeted changes to a specific file
Bash              Run shell commands
Grep              Search for patterns inside file contents
Glob              Find files by name or pattern
LSP               Code intelligence &#8212; jump to definitions, find references, get type errors
Agent             Spawn a subagent with its own context window to handle a task
WebFetch          Fetch content from a URL
WebSearch         Search the web
Skill             Run a skill within the main conversation
NotebookEdit      Edit Jupyter notebook cells
AskUserQuestion   Ask the user a multiple choice question to clarify requirements</code></pre></div><p>These are the most commonly used tools. Claude Code has many more built-in tools. Check the <a href="https://code.claude.com/docs/en/tools-reference">full tools reference</a> for the complete list.</p><h2>Up Next:</h2><p>That is it for Part 1.</p><p>We covered agentic architecture, MCP integration, and Claude Code configuration.</p><p>In Part 2, we will move to the remaining areas. That includes prompt engineering, structured outputs, context management, reliability, and the registration flow.</p><p>I have added the mock test materials to this <a href="https://github.com/devgotomarket/cca-prep">GitHub page</a>. I will keep adding more questions as I find useful ones.</p><p>If you are planning to take the exam, use this blog and the mock questions as a practical guide. But before the exam, make sure you also go through the official docs once.</p><p>See you in Part 2.</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-certified-architect-foundations?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[OpenClaw Workflow and Automation - The Developer Guide]]></title><description><![CDATA[How I use OpenClaw in my daily workflow]]></description><link>https://www.devshorts.in/p/openclaw-workflow-and-automation</link><guid isPermaLink="false">https://www.devshorts.in/p/openclaw-workflow-and-automation</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Thu, 12 Feb 2026 13:31:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-mdE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>OpenClaw (earlier Moltbot and even earlier Clawbot) got really popular a few weeks ago. Once I kept seeing it everywhere, I wanted to try it on my own day to day workflows.</p><p>What I liked first was the variety of channels OpenClaw supports. I can use it from Slack, WhatsApp, and Telegram. I just message it there, and it runs the task for me.</p><p>But that power is also where the risk starts. So, it is better to run OpenClaw in an isolated environment where it does not have direct access to your main machine.</p><p>I spent time using it on real day to day tasks and picked a few practical workflows that are worth sharing. I will start with the basics, then move into the workflows.</p><p>Here is what we will cover.</p><ol><li><p>What is OpenClaw</p></li><li><p>Installation and Setup for Local, Docker, and Cloud</p></li><li><p>OpenClaw Workflow and Automation</p><ol><li><p>How I fix GitHub issues from slack</p></li><li><p>How I use cron to check pull requests and spot the ones ready to merge</p></li><li><p>How I setup daily AI updates through WhatsApp</p></li></ol></li><li><p>Adding Custom Skills to OpenClaw</p></li><li><p>OpenClaw Agent in Moltbook </p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is OpenClaw</h2><p>OpenClaw is an open-source personal AI assistant that runs on your own machine. You can talk to the AI assistant from chat apps such as WhatsApp, Telegram, Slack, Discord, and Teams.</p><p>The diagram below shows how it works internally. What impressed me most is how clearly OpenClaw separates the agent from the rest of the system. The gateway, configuration, and lifecycle components are well organized. So, it becomes much easier to understand and debug when something goes wrong.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-mdE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-mdE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 424w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 848w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 1272w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-mdE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png" width="1268" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:1268,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71154,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-mdE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 424w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 848w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 1272w, https://substackcdn.com/image/fetch/$s_!-mdE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c10ff62-cb76-4261-9f0a-5b374639dce2_1268x398.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Gateway</h4><p>Messages come in from channels like WhatsApp, Slack, or web chat. The gateway receives them and sends them to the right agent. It also keeps the session active and queues follow ups if a run is already happening.</p><h4>Agent</h4><p>The agent is the brain. OpenClaw builds the prompt and context, then passes your message to the agent. The agent decides the next step, uses tools if needed, and replies back.</p><h4>Tools and Skills</h4><p>Tools do the actual work. They can run shell commands, browse, call APIs, read files, or send messages. Skills are reusable workflows that tell the agent how to use those tools for a task.</p><h4>Memory</h4><p>Memory helps the agent remember. It stores project notes and past context so you do not have to repeat the same details every time.</p><p>This diagram shows how messages flow through OpenClaw from user input to agent reasoning and action.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9O90!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9O90!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 424w, https://substackcdn.com/image/fetch/$s_!9O90!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 848w, https://substackcdn.com/image/fetch/$s_!9O90!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!9O90!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9O90!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png" width="1456" height="281" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:281,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:560145,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9O90!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 424w, https://substackcdn.com/image/fetch/$s_!9O90!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 848w, https://substackcdn.com/image/fetch/$s_!9O90!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 1272w, https://substackcdn.com/image/fetch/$s_!9O90!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c10ddbd-88b4-4641-b430-6b038c950bc1_8129x1570.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>2. Installation and Setup </h2><h4><strong>Local Installation</strong></h4><p>Local setup is straightforward. Run this one-line command.</p><pre><code>curl -fsSL https://openclaw.ai/install.sh | bash</code></pre><p>You will then go through a short onboarding flow where you choose options based on your setup. It&#8217;s a simple process, and you can always configure channels and skills later.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;7b6091ef-ad5a-4174-a56d-a5d236e48b2b&quot;,&quot;duration&quot;:null}"></div><h4><strong>Docker Installation </strong></h4><p>If you are not comfortable running OpenClaw directly on your system, Docker is a great option. It keeps the environment more isolated and safer.</p><pre><code>git clone https://github.com/openclaw/openclaw
cd openclaw
./docker-setup.sh</code></pre><p>This time, I used manual onboarding so I could follow each step clearly.</p><p>Once installed, you will typically see two key locations.</p><ul><li><p>~/.openclaw -  stores config, memory, and keys</p></li><li><p>~/openclaw/workspace - the agent workspace</p></li></ul><p>If your dashboard is not connecting, then try this.</p><pre><code><code>docker compose run --rm openclaw-cli dashboard --no-open</code></code></pre><h4><strong>Other hosting methods</strong></h4><p>OpenClaw already provides clear guides for hosting on Render, Railway.</p><ul><li><p><a href="https://docs.openclaw.ai/install/render">OpenClaw deployment on Render</a></p></li><li><p><a href="https://docs.openclaw.ai/install/railway">OpenClaw deployment on Railway</a></p></li><li><p>You can also run <a href="https://github.com/cloudflare/moltworker">OpenClaw on Cloudflare using moltworker.</a></p></li></ul><h2>3. OpenClaw Workflow and Automation</h2><p>One part I really wanted to test was how OpenClaw fits into day-to-day workflow, especially for development tasks.</p><h4>Slack Integration</h4><p>For my testing, I connected Slack and WhatsApp. Before connecting Slack to OpenClaw, I first created a Slack app. OpenClaw already has clear documentation for <a href="https://docs.openclaw.ai/channels/slack">Slack app setup</a>.</p><p>Here are the exact steps I followed.</p><h4>Create the Slack app + enable Socket Mode</h4><ol><li><p>Go to <a href="https://api.slack.com/apps">https://api.slack.com/apps</a></p></li><li><p>Click Create New App &#8594; From scratch &#8594; Give App Name &#8594; Select Workspace</p></li><li><p>Open Socket Mode and turn it ON &#8594; In Basic Information &#8594; App-Level Tokens, generate a token with scope connections:write</p></li><li><p>Copy this App Token (xapp-...)</p></li><li><p>Go to OAuth &amp; Permissions</p></li><li><p>Add bot scopes (minimum needed):<br>chat:write, app_mentions:read, channels:history, groups:history, im:history, im:read, im:write, mpim:history, reactions:read, reactions:write, pins:read, pins:write, commands</p></li><li><p>Go to Install App &#8594; Click Install to Workspace</p></li><li><p>Copy the Bot User OAuth Token (xoxb-...)</p></li></ol><p>Once the Slack App is created, use openclaw configure to connect the slack app. </p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;99ab414d-cdd4-494d-8c6d-7bcab1631b89&quot;,&quot;duration&quot;:null}"></div><h2>How I fix GitHub issues directly from slack</h2><p>Once Slack is connected, I can talk to OpenClaw directly from Slack and use it to handle GitHub issues.</p><p>When a new issue comes in, I ask OpenClaw to take a look. It reads the issue, checks my local code, makes the fix, and pushes the change back to GitHub. It also posts a reply on the issue with a short note on what it fixed.</p><p>In short: I can go from issue &#8594; fix &#8594; update, without constantly switching tools.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6219da20-6fde-4481-b0a1-e5eccc1ccf7d&quot;,&quot;duration&quot;:null}"></div><h2>How I use cron to check pull requests and see which ones are ready to merge</h2><p>As a GitHub repository maintainer, I like checking which pull requests are merge-ready first thing in the morning. So I set up a daily cron job in OpenClaw.</p><p>Every morning, it checks recent PRs and verifies whether the basic merge conditions are met, such as.</p><ul><li><p>no merge conflicts</p></li><li><p>required CI/status checks passed</p></li><li><p>required approvals completed</p></li></ul><p>This gives me a quick &#8220;merge-ready vs not-ready&#8221; snapshot without manual checking. <a href="https://docs.openclaw.ai/automation/cron-jobs#cron-jobs">Setting up cron in OpenClaw</a> is simple. You can either.</p><ul><li><p>use the CLI (<code>openclaw cron add</code>), or</p></li><li><p>ask the agent in chat to create it for you.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pltm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pltm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 424w, https://substackcdn.com/image/fetch/$s_!pltm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 848w, https://substackcdn.com/image/fetch/$s_!pltm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 1272w, https://substackcdn.com/image/fetch/$s_!pltm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pltm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png" width="1456" height="1070" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/baf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1070,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:833920,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pltm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 424w, https://substackcdn.com/image/fetch/$s_!pltm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 848w, https://substackcdn.com/image/fetch/$s_!pltm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 1272w, https://substackcdn.com/image/fetch/$s_!pltm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbaf1b29f-f396-4b66-a1a3-1c77be51370c_2098x1542.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8azz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8azz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 424w, https://substackcdn.com/image/fetch/$s_!8azz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 848w, https://substackcdn.com/image/fetch/$s_!8azz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 1272w, https://substackcdn.com/image/fetch/$s_!8azz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8azz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png" width="1456" height="299" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:299,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144399,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8azz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 424w, https://substackcdn.com/image/fetch/$s_!8azz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 848w, https://substackcdn.com/image/fetch/$s_!8azz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 1272w, https://substackcdn.com/image/fetch/$s_!8azz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff64b4af8-19f1-4338-a9c0-347ac13feba5_1696x348.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Here is how i get my daily PR Report.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vldM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vldM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 424w, https://substackcdn.com/image/fetch/$s_!vldM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 848w, https://substackcdn.com/image/fetch/$s_!vldM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!vldM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vldM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png" width="1456" height="915" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:915,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:337692,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vldM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 424w, https://substackcdn.com/image/fetch/$s_!vldM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 848w, https://substackcdn.com/image/fetch/$s_!vldM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 1272w, https://substackcdn.com/image/fetch/$s_!vldM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc74b3dd3-cc84-4139-a113-2b0ec59963e5_1696x1066.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>How I set up my AI Daily Digest with OpenClaw + WhatsApp</h2><p>I wanted a daily AI news summary delivered to my personal WhatsApp, using newsletters that already land in my Gmail label called &#8220;AI digest.&#8221;</p><h4>What I wanted</h4><ul><li><p>Source: Gmail label - AI digest</p></li><li><p>Output: Concise AI summary to my WhatsApp</p></li><li><p>Schedule: 10:00 AM IST daily</p></li><li><p>Query support: &#8220;what&#8217;s the last week updates?&#8221;</p></li></ul><p>At first, I considered Gmail push automation (webhook/Pub/Sub) using the official docs. But that route needed extra infrastructure (like Tailscale). I tried it, but Tailscale was blocked on macOS in my setup, so I dropped that approach and moved to a simpler CLI + cron flow.</p><h4>Whatsapp Integration</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;6d637323-4fc0-4dc7-8049-9d0a6d907f1f&quot;,&quot;duration&quot;:null}"></div><h4>Setup: gog CLI + OpenClaw cron</h4><p>Here&#8217;s the exact setup I used.</p><ol><li><p>Install - gog CLI (Google Workspace CLI) on the host.</p></li><li><p>Configure Google OAuth client credentials for gog.</p></li><li><p>Enable Gmail API in Google Cloud Console.</p></li><li><p>Get/download Google OAuth client JSON.</p></li><li><p>Register credentials with gog</p><pre><code>gog auth credentials set /path/to/client_secret.json</code></pre></li><li><p>Authenticate Gmail account for CLI access</p><pre><code>gog auth add "your-email"  --services gmail</code></pre></li><li><p>Test auth</p><pre><code>gog auth list</code></pre></li><li><p>Test search query (last 24h email from AI Digest)</p><pre><code>gog gmail messages search "label:\"AI digest\" newer_than:1d" --account "your-email-id" --max 50 --json</code></pre></li><li><p>Set up cron job in OpenClaw</p><p></p><pre><code>openclaw cron add \
  --name "Daily AI digest from Gmail label" \
  --session isolated \
  --cron "0 10 * * *" \
  --tz "Asia/Kolkata" \
  --message 'Using gog with account "your-email-id", check Gmail label "AI digest" for emails from the last 24 hours. Extract the most important AI updates/news, deduplicate repeated stories, and send a concise WhatsApp digest with: (1) top updates as bullets, (2) why each matters in one line, and (3) links/sources when available. If no relevant emails are found, say there were no major AI updates in the last 24 hours.' \
  --announce \
  --channel whatsapp \
  --to "your-whatsapp-number" \
  --timeout 180000 \
  --timeout-seconds 120 \                                                                  </code></pre></li><li><p>Once this is active, OpenClaw automatically delivers the AI digest to WhatsApp through its messaging route.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OUNk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OUNk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 424w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 848w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 1272w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OUNk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png" width="1456" height="1200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d50cf905-617d-4059-b128-ae395bed5005_1696x1398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1200,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:722465,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OUNk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 424w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 848w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 1272w, https://substackcdn.com/image/fetch/$s_!OUNk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd50cf905-617d-4059-b128-ae395bed5005_1696x1398.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ol><blockquote><p>Notes/Troubleshooting</p><ol><li><p>If cron fails with <code>"</code>missing refresh token<code>"</code> then do re-auth again.</p></li></ol><p><code>  gog auth add "your-email-id"  --services gmail</code></p><ol start="2"><li><p>Always configure both gateway and agent timeouts for cron jobs.</p></li></ol></blockquote><h2>Openclaw commands</h2><p>These are the commands I used while working with OpenClaw</p><ul><li><p><code>openclaw configure</code> &#8212; Runs interactive setup after installation.</p></li><li><p><code>openclaw dashboard --no-open</code> &#8212; Opens the OpenClaw UI in browser.</p></li><li><p><code>openclaw devices list</code> &#8212; Shows paired devices and their status.</p></li><li><p><code>openclaw plugins list</code> &#8212; Lists installed/available plugins and their state.</p></li><li><p><code>openclaw security audit</code> &#8212; Runs a standard security audit.</p></li><li><p><code>openclaw security audit --deep</code> &#8212; Runs deep security audit.</p></li></ul><ul><li><p><code>openclaw status</code> &#8212; Quick overall health check  of gateway, channels etc..</p></li><li><p><code>openclaw doctor</code> &#8212; Diagnoses common setup/runtime issues and suggests fixes.</p></li><li><p><code>openclaw gateway status</code> &#8212; Checks whether the gateway service is running.</p></li><li><p><code>openclaw gateway restart</code> &#8212; Restarts the gateway service (very useful after config/auth changes).</p></li><li><p><code>openclaw logs</code> &#8212; Shows gateway logs for debugging.</p></li><li><p><code>openclaw cron list</code> &#8212; Lists all scheduled cron jobs.</p></li><li><p><code>openclaw cron runs &#8212;-id &lt;job-id&gt;</code> &#8212; Shows execution history for a specific cron job.</p></li><li><p><code>openclaw cron run &lt;job-id&gt;</code> &#8212; Manually triggers a cron job for testing.</p></li><li><p><code>openclaw cron rm &lt;job-id&gt;</code> &#8212; Deletes a cron job.</p></li><li><p><code>openclaw message send ...</code> &#8212; Sends a test/proactive message (useful for validating delivery routes).</p></li></ul><p>For more commands: <a href="https://docs.openclaw.ai/cli">https://docs.openclaw.ai/cli</a>     </p><h2>4. Adding Custom Skills</h2><p>You can add custom skills to openclaw.  Check <a href="https://skills.sh/">skills.sh</a>. Select the skill you want to add. Get inside the workspace and install the skill.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;76585c60-84b0-4bf3-a0c7-d5002c0ad936&quot;,&quot;duration&quot;:null}"></div><h2>5. OpenClaw Agent in Moltbook </h2><p>If you are interested about giving your agent a more &#8220;social&#8221; layer, Moltbook is an interesting add-on to explore.</p><p><a href="https://www.moltbook.com/">Moltbook - Social network for AI Agent</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lvhY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lvhY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 424w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 848w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 1272w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lvhY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png" width="964" height="548" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:548,&quot;width&quot;:964,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72495,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lvhY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 424w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 848w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 1272w, https://substackcdn.com/image/fetch/$s_!lvhY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe64c7830-05f3-4dac-8cac-f5eba826edfb_964x548.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Read this, before you try OpenClaw</strong></h3><p>OpenClaw is powerful. That is also why you should be careful. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nYx1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nYx1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 424w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 848w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 1272w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nYx1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif" width="853" height="562" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/de1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:562,&quot;width&quot;:853,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:182764,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/186736098?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nYx1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 424w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 848w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 1272w, https://substackcdn.com/image/fetch/$s_!nYx1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fde1bf3e2-e65d-441e-98fe-7bb7e70b36b9_853x562.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Safety tips</h4><ul><li><p>Do not run this on your primary machine.</p></li><li><p>Use Docker or a VM or a spare laptop.</p></li><li><p>Give only the permissions you need.</p></li><li><p>Treat it as an experiment, not production.</p></li><li><p>Stick to official sources for downloads and updates.</p></li></ul><h2>Conclusion</h2><p>Now you have seen what OpenClaw is and a few workflows and automations. For daily work, it can save time and reduce tool switching.</p><p>I am still exploring more workflows and use cases. If you are experimenting with OpenClaw, start with one simple workflow and build from there.</p><p>Hope this post helps you get started.</p><p>Happy building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/openclaw-workflow-and-automation?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/openclaw-workflow-and-automation?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/openclaw-workflow-and-automation?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Claude Skills - Automate your workflows]]></title><description><![CDATA[Claude Skills for developer workflows]]></description><link>https://www.devshorts.in/p/claude-skills-automate-your-workflows</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-skills-automate-your-workflows</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 23 Jan 2026 14:31:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!H6Kj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We all know many GitHub repos now list Claude as a contributor. Even Claude's Cowork was built entirely using Claude Code. Developers have adopted Claude Code. They build custom workflows using hooks, MCP servers, and slash commands to ship faster.</p><p>Claude Skills are the newest addition to this workflow. Skills teach domain expertise. </p><p>Anthropic released <a href="https://github.com/anthropics/skills">Claude Skills</a> in October 2025. They added document creation &amp; handling capabilities to Claude using Skills. They also open-sourced <a href="https://github.com/anthropics/skills/tree/main/skills">the production Skills that power Claude's capabilities</a>.</p><p>Skills unlock full potential when combined with other tools. You can combine skills with hooks and MCP Servers to automate your workflows. Since Skills launched, developers use Claude as a general-purpose agent for more than just coding.</p><p>So, I&#8217;m covering about Claude Skills and how I use them in my workflow.</p><ol><li><p>What are Claude Skills </p></li><li><p>Why Claude Skills </p></li><li><p>Skills Vs MCP</p></li><li><p>Automate - Git Commit, PR workflow with Claude Skills</p></li><li><p>Automate - Invoice Generation with Claude Skills</p></li><li><p>Top Claude Code skills</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What are Claude Skills</h2><p>Skills are folders with a SKILL.md file containing instructions. The folder can also include scripts, templates, and reference docs. Each skill is self-contained in its own folder. Skills teach Claude how to complete specific tasks. They are reusable too. Claude loads the right skill when its needed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!H6Kj!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!H6Kj!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 424w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 848w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 1272w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!H6Kj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png" width="1129" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:1129,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88027,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!H6Kj!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 424w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 848w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 1272w, https://substackcdn.com/image/fetch/$s_!H6Kj!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7522cc8a-6dc9-4c01-8e68-ecbbdf5b3fcf_1129x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>SKILL.md starts with YAML metadata and then the instructions. The metadata includes fields like name and description. Claude uses the description to decide when to apply the Skill.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vo15!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vo15!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 424w, https://substackcdn.com/image/fetch/$s_!vo15!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 848w, https://substackcdn.com/image/fetch/$s_!vo15!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 1272w, https://substackcdn.com/image/fetch/$s_!vo15!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vo15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png" width="875" height="295" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:295,&quot;width&quot;:875,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38123,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vo15!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 424w, https://substackcdn.com/image/fetch/$s_!vo15!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 848w, https://substackcdn.com/image/fetch/$s_!vo15!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 1272w, https://substackcdn.com/image/fetch/$s_!vo15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe4c7247c-76c3-450c-a0e2-0af9b5cb9776_875x295.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>A skill is not just a markdown file. It can include code samples, reference docs, and templates in the same folder.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!m3sf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!m3sf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 424w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 848w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 1272w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!m3sf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png" width="1456" height="744" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:744,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123217,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!m3sf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 424w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 848w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 1272w, https://substackcdn.com/image/fetch/$s_!m3sf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd98b2479-65dd-4eaa-b354-c8d0a7237ca3_1578x806.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In Claude Code, you can keep Skills in two places. </p><ul><li><p>Personal Skills go in <code>~/.claude/skills/</code>. It can work across projects. </p></li><li><p>Project Skills go in <code>.claude/skills/.</code> You can commit them and share them with your team.</p></li></ul><p>A big advantage of Skills is they are not loaded fully all the time. Claude reads small metadata first to identify the right skill. Then it loads full instructions only when needed. This keeps your context clean. You can use heavy skills with scripts and docs without bloating tokens.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Q0F7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Q0F7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 424w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 848w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Q0F7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png" width="1205" height="540" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:540,&quot;width&quot;:1205,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93009,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Q0F7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 424w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 848w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 1272w, https://substackcdn.com/image/fetch/$s_!Q0F7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fef2b9d9b-6bc6-4db5-9f94-4537cfc23cc0_1205x540.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>Skills also work across Claude app, Claude Code.  You can also<a href="https://agentskills.io/integrate-skills"> integrate skills to your agent</a>. </p></blockquote><h2>2. Why Claude Skills</h2><p>Here is why Claude Skills are worth adding to your workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!et-n!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!et-n!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 424w, https://substackcdn.com/image/fetch/$s_!et-n!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 848w, https://substackcdn.com/image/fetch/$s_!et-n!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 1272w, https://substackcdn.com/image/fetch/$s_!et-n!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!et-n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png" width="745" height="460" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:460,&quot;width&quot;:745,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66477,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!et-n!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 424w, https://substackcdn.com/image/fetch/$s_!et-n!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 848w, https://substackcdn.com/image/fetch/$s_!et-n!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 1272w, https://substackcdn.com/image/fetch/$s_!et-n!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf8bcae6-79d6-4be3-b603-bbab0bf7ac56_745x460.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Skills Vs MCP</h2><p>Here is a quick side by side view of how Claude Skills and MCP differ.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!izEk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!izEk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 424w, https://substackcdn.com/image/fetch/$s_!izEk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 848w, https://substackcdn.com/image/fetch/$s_!izEk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 1272w, https://substackcdn.com/image/fetch/$s_!izEk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!izEk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png" width="1095" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:1095,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67819,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!izEk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 424w, https://substackcdn.com/image/fetch/$s_!izEk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 848w, https://substackcdn.com/image/fetch/$s_!izEk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 1272w, https://substackcdn.com/image/fetch/$s_!izEk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb070d760-6c82-4f98-9223-db22f35aa64d_1095x594.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>4. Automate - Git Commit, PR workflow with Claude Skills</h2><p>Git commits and PR creation happen daily in my work. Running type checks, linting, writing commit messages, and filling PR descriptions add up over time.</p><p>I built a skill to automate this workflow. The skill manages everything from pre-commit checks to PR creation. It runs quality checks before every commit, commits the code with proper messages, and automatically raises pull requests with descriptions.</p><blockquote><p>Claude Code handles commits and PRs natively with Git CLI. But it won't follow your exact patterns. I needed standardized commit messages, specific PR templates, and quality checks in my preferred order. So, I built a skill that enforces my workflow.</p></blockquote><h4>The Setup</h4><p>I have three components in my workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P_t3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P_t3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 424w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 848w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 1272w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P_t3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png" width="850" height="335" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:335,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23917,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P_t3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 424w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 848w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 1272w, https://substackcdn.com/image/fetch/$s_!P_t3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c06025e-5d91-4b0f-a131-b3951db976c6_850x335.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>CLAUDE Skill - Workflow Orchestrator</h4><p>It defines the commit-to-PR workflow. It summarizes changes, proposes commit messages, runs pre-commit checks, and orchestrates PR creation with proper descriptions.</p><h4>Hook for Pre-commit Checks</h4><p>It intercepts <code>git commit</code> commands. It runs lint, type check, and tests automatically. When checks fail, it blocks the commit and returns errors.</p><h4>GitHub MCP Server - PR Automation</h4><p>GitHub MCP Server handles all GitHub operations. It connects to the GitHub API and creates pull requests with descriptions, labels, and reviewers.</p><h4>How It Works Together</h4><pre><code><code>I invoke skill- /commit-guardian
    &#8595;
Skill summarizes changes, proposes commit message
    &#8595;
Hook intercepts git commit and runs checks
    &#8595;
Checks fail? &#8594; Hook blocks and returns errors. Skill guides Claude to fix and retry
    &#8595;
Checks pass? &#8594; Commit proceeds
    &#8595;
Skill invokes GitHub MCP Server
    &#8595;
MCP creates/updates PR
    &#8595;
Done - PR URL returned</code></code></pre><h4>Setting Up the Hook</h4><p><a href="https://code.claude.com/docs/en/hooks">The hooks configuration</a> lives in <code>.claude/settings.json</code>.  You can create this using /hooks.  You can also <a href="https://code.claude.com/docs/en/hooks#hooks-in-skills-and-agents">define hooks inside Claude Skill</a>. This hook will run during Claude Skill&#8217;s lifecycle.</p><pre><code><code>{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "python .claude/hooks/commit_guard.py"
          }
        ]
      }
    ]
  }
}</code></code></pre><p>Our hook executes the script - <code>.claude/hooks/commit_guard.py</code>. Here&#8217;s the script structure.</p><pre><code><code>#.claude/hooks/commit_guard.py
# Pre-commit quality gate - runs lint, typecheck, tests

import json
import subprocess
import sys

def detect_package_manager():
    """Returns npm, yarn, or pnpm based on lock files."""
    # ...

def run_checks():
    """Runs lint, typecheck, and tests. Returns results."""
    # ...

def main():
    raw = sys.stdin.read().strip()
    data = json.loads(raw)
    
    # Only intercept git commit commands
    if "git commit" not in data.get("tool_input", {}).get("command", ""):
        return 0
    
    results = run_checks()
    failed = [r for r in results if not r[1]]
    
    if failed:
        sys.stderr.write("Commit blocked - checks failed\n")
        return 2  # Block commit
    
    return 0  # Allow commit

if __name__ == "__main__":
    raise SystemExit(main())</code></code></pre><h4>Creating the Skill</h4><p>I created the skill based on my requirements. My commit messages follow a standard format with conventional commits using type and scope. PRs need specific templates with changes, motivation, and testing sections. The skill defines these rules. Claude follows them exactly every time.</p><p>The skill lives at <code>.claude/skills/commit_guardian/SKILL.md</code>. </p><pre><code><code>---
name: commit_guardian
description: Manages commit workflow with quality checks and automated PR creation. Use when committing code or creating pull requests.
allowed-tools:
  - Read
  - Edit
  - Write
  - Bash
---

# Commit Guardian Workflow

## Process

1. **Pre-Commit Summary**
   - List staged files
   - Summarize changes (2-3 lines)

2. **Commit Message**
   - Format: `type(scope): description`
   - Types: feat, fix, docs, style, refactor, test, chore
   - Under 72 characters

3. **Quality Checks**
   - Hook runs: lint, typecheck, tests
   - If fail: explain, fix, rerun
   - Repeat until pass

4. **PR Creation**
   - Get branch and target
   - Use GitHub MCP to create PR
   - Add title, description, labels, reviewers

## PR Template
```
## Changes
[What changed]

## Motivation
[Why needed]

## Testing
- [ ] Tests added/updated
- [ ] Manually tested
- [ ] All checks passing
```</code></code></pre><h4>Setting Up GitHub MCP</h4><p>Install the GitHub MCP server to Claude Code. It handles all GitHub operations.</p><pre><code><code>claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT"}}'</code></code></pre><h4>Testing the workflow- Commit to PR Skill </h4><p>You can manually invoke skills using their name. I invoked <code>/commit-guardian</code> to test the workflow. Claude can also invoke skills automatically based on context.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e58d5129-a0eb-4c6d-aac2-fb405b40a794&quot;,&quot;duration&quot;:null}"></div><p>As this is my daily routine, I customized this flow with skills. So that it can complete the flow just like me.</p><h4>Get the Code</h4><p>Above mentioned skill files, scripts are available at this <a href="https://github.com/Sridevi17j/claude-skills">GitHub Repo</a>. </p><h2>5. Automate Invoice Generation with Claude Skills</h2><p>I work on small projects often. I track my hours, calculate totals, and fill the invoice template. Simple work, but it adds up.</p><p>So, I automated it using Claude Skills. The goal is straightforward. Track time while I work, calculate billable hours, and generate a ready-to-send invoice PDF.</p><h4>The Flow:</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D4Hc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D4Hc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 424w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 848w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 1272w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D4Hc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif" width="1088" height="560" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:560,&quot;width&quot;:1088,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:179622,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D4Hc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 424w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 848w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 1272w, https://substackcdn.com/image/fetch/$s_!D4Hc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff99c937a-2131-4c68-bf97-e73933f258d3_1088x560.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Slash commands</h4><p>I created slash commands to log start and end times. The commands live in .claude/commands/.</p><p><code>/start-work</code> logs the start time. <code>/stop-work</code> logs the end time.</p><p>If you want, you can add <code>/pause</code> for breaks or customize commands for your workflow.</p><h4>CLAUDE Skill</h4><p>The Claude skill reads <code>.work_log.json</code> and totals hours for the selected period. It fills the invoice PDF template using the bundled script and generates the final invoice.</p><h4>How it works</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;21b7b478-9805-4fdc-993c-6096d932d7f1&quot;,&quot;duration&quot;:null}"></div><h4>Get the Code</h4><p>The invoice generation skill, slash commands, and scripts are available in the <a href="https://github.com/Sridevi17j/claude-skills">GitHub repo</a>.</p><h2>6. Top Claude Code skills</h2><ol><li><p><strong><a href="https://github.com/obra/superpowers">Superpowers</a></strong> &#8211; Skills that add structured workflow commands like brainstorm and execute plan to organize development tasks.</p></li><li><p><strong><a href="https://github.com/SawyerHood/dev-browser">dev-browser</a> - </strong>Claude skills to give your agent the ability to use web browser.</p></li><li><p><strong><a href="https://github.com/anthropics/skills/tree/main/skills/mcp-builder">mcp-builder</a> </strong>- Skills to create MCP servers</p></li><li><p><strong><a href="https://github.com/anthropics/skills/tree/main/skills/frontend-design">frontend-design</a> </strong>- Skills to create production grade frontend design.</p></li><li><p><strong><a href="https://github.com/anthropics/skills/tree/main/skills/pdf">pdf-skills </a>- </strong>Skills to do pdf operations.</p></li><li><p><strong><a href="https://www.notion.so/notiondevs/Notion-Skills-for-Claude-28da4445d27180c7af1df7d8615723d0">Notion Skills</a></strong> - Skills that teach Claude how to work in Notion.</p></li></ol><p>Want to build your own skills? Check out this article on <a href="https://support.claude.com/en/articles/12512198-how-to-create-custom-skills">creating custom skills.</a></p><h4>Using Skill Creator</h4><p>Claude Code has a built-in skill creator. Enable it in settings and describe what you need. Claude generates the skill.md and all the files for you.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9q7j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9q7j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 424w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 848w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 1272w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9q7j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png" width="1456" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:200592,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/184280650?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9q7j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 424w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 848w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 1272w, https://substackcdn.com/image/fetch/$s_!9q7j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06d99720-b667-4f6f-82f5-9dabf91b3fe4_2402x642.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conclusion</h2><p>We covered Claude Skills and two workflows I use daily for commit automation and invoice generation.</p><p>Skills turn repetitive work into reusable instructions. Combine them with hooks and MCP to build reliable automation. <a href="https://huggingface.co/blog/sionic-ai/claude-code-skills-training">See how developers use Claude Skills in production to capture ML experiment results and prevent duplicate work</a>. </p><p>If you have repeatable routines in your day-to-day work, you can likely automate them with Skills. Build one skill for your workflow and see how much time it saves.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-skills-automate-your-workflows?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-skills-automate-your-workflows?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-skills-automate-your-workflows?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Finetuning DeepSeek-V3 With Tinker API]]></title><description><![CDATA[Fine tuning DeepSeek-V3 with Tinker to write in my newsletter style]]></description><link>https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker</link><guid isPermaLink="false">https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Tue, 23 Dec 2025 10:31:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!K-yJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We all know <a href="https://thinkingmachines.ai/">Thinking Machines Lab</a> by now. When <a href="https://x.com/miramurati">Mira Murati, OpenAI&#8217;s former CTO</a>, started this company, many people were curious about what they would build first.</p><p>They started with <a href="https://thinkingmachines.ai/tinker/">Tinker</a>.</p><p>Tinker is an API for fine tuning large language models. The idea behind it is simple. You control the training logic. This includes your data, loss functions, and training loop. Tinker takes care of the hard parts like distributed GPU training, scheduling, and system reliability.</p><p>In simple terms, Tinker helps you fine tune models without worrying about infrastructure, while still giving you full control.</p><p>In this blog, I walk through:</p><ol><li><p>What is Tinker</p></li><li><p>Why Tinker</p></li><li><p>Finetuning DeepSeek V3 with Tinker</p></li><li><p>Inference and Deployment Options</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is Tinker</h2><p>Tinker is an API for fine tuning large language models.</p><p>Fine tuning means taking an existing model and training it on your own data. This is how a model learns a new style or task.</p><p>With Tinker, you still write the training logic. You decide how data is loaded, how loss is calculated, and how the training loop runs.</p><p>But you do not have to manage the infrastructure. You call the Tinker API from your local machine, and the training runs on Tinker&#8217;s GPUs.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Nmj9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Nmj9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 424w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 848w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 1272w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Nmj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif" width="1097" height="144" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:144,&quot;width&quot;:1097,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90214,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Nmj9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 424w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 848w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 1272w, https://substackcdn.com/image/fetch/$s_!Nmj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb604c95d-99fa-41dc-9af5-2870abbcb588_1097x144.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The Tinker API has four functions:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8G75!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8G75!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8G75!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8G75!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8G75!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8G75!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg" width="1120" height="348" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:348,&quot;width&quot;:1120,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41116,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8G75!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8G75!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8G75!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8G75!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1db67a3-1653-478e-a405-502c442a39e1_1120x348.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. Why Tinker</h2><p>Fine-tuning LLMs typically falls into two extremes.</p><h4><strong>Manual fine-tuning</strong> </h4><p>It gives you complete control. Your GPUs. Your CUDA setup. Your choice of libraries and optimizers. Every knob is yours to turn.  </p><p>But so is every failure. Every compatibility issue. Every hour spent on infrastructure instead of actual training.</p><h4><strong>Platform-based fine-tuning</strong>:</h4><p>It offers simplicity. just upload a dataset, click train, download weights. No infrastructure to manage, no code to write. </p><p>But you&#8217;re locked out of the training process entirely.</p><h4>Tinker: The Middle Ground</h4><p>Tinker fits in the right sweet spot between Manual Finetuning and Platform based Finetuning. It gives you control where it matters.</p><p>You define the datasets, loss functions, and training loops. Tinker handles the infrastructure headache like GPU setup, Distributed training, Memory management and Hardware failures. </p><p>Tinker gives you full control over fine-tuning without the infrastructure tax.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K-yJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K-yJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K-yJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg" width="1154" height="540" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:540,&quot;width&quot;:1154,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92767,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!K-yJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 424w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 848w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!K-yJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aa886e8-1eb9-4046-b5e8-5d047c049f43_1154x540.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Both extremes come with some disadvantages, which makes Tinker Existence Valuable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8M7K!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8M7K!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8M7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg" width="1079" height="524" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:524,&quot;width&quot;:1079,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93462,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8M7K!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8M7K!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedb41f26-3f13-4506-8633-999fa4af988d_1079x524.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Finetuning DeepSeek V3 with Tinker API</h2><p>Now let us finetune DeepSeek Model with Tinker API.</p><p>I send out the Dev Catch Up newsletter every week. Each item follows a clear style. It is short, simple, and focused on what actually matters. I read AI updates and releases, then rewrite them in my own voice.</p><p>I wanted to see if DeepSeek could learn this style. </p><p>So, I fine-tuned the model on my newsletter data. After training, it started picking up the Dev Shorts tone. Simple and Short sentences. No unnecessary hype.</p><p>Before fine tuning, the base model behaves like most LLMs. It uses bullet points, emojis, and phrases like &#8220;game changer&#8221; or &#8220;massive upgrade&#8221;. That is not how I write.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yF7I!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yF7I!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 424w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 848w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 1272w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yF7I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png" width="1216" height="678" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:678,&quot;width&quot;:1216,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76379,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yF7I!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 424w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 848w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 1272w, https://substackcdn.com/image/fetch/$s_!yF7I!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa8e5fd41-e9f7-4fe8-99d5-c4c05f7ed840_1216x678.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let us now fine tune it step by step and see how the output changes.</p><h4>Step 1: Install Tinker </h4><pre><code>!pip install tinker
!pip install torch
!pip install tinker_cookbook</code></pre><h4>Step 2: Set Your API Key</h4><pre><code>import os
os.environ["TINKER_API_KEY"] = "your-api-key-here"</code></pre><h4>Step 3: Import necessary packages</h4><p>Tinker is the core training API. It runs the training on managed infrastructure.</p><blockquote><p><a href="https://github.com/thinking-machines-lab/tinker-cookbook">Tinker Cookbook</a> is an optional helper library. I am using it here for tokenization, chat formatting, and dataset conversion.</p><p> If you want, you can write tokenization and the rest from scratch without using Cookbook and work directly with the Tinker API.</p></blockquote><pre><code>import json
import time
import tinker
import torch
from tinker import types
from tinker_cookbook import renderers
from tinker_cookbook.supervised.data import conversation_to_datum
from tinker_cookbook.renderers import TrainOnWhat
from tinker_cookbook.tokenizer_utils import get_tokenizer
from tinker_cookbook import model_info
from tinker_cookbook.supervised.common import compute_mean_nll</code></pre><h4>Step 4: Connect to Tinker and see available models:</h4><pre><code>service_client = tinker.ServiceClient()
capabilities = service_client.get_server_capabilities()

print(&#8221;Available models:&#8221;)
for model in capabilities.supported_models:
    print(f&#8221;  {model.model_name}&#8221;)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fz_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 424w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 848w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 1272w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png" width="826" height="579" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/56157656-e69c-46cd-8af2-112eeccc4904_826x579.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:579,&quot;width&quot;:826,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52796,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 424w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 848w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 1272w, https://substackcdn.com/image/fetch/$s_!Fz_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F56157656-e69c-46cd-8af2-112eeccc4904_826x579.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 5: Select the base model to finetune</h4><pre><code>MODEL_NAME = &#8220;deepseek-ai/DeepSeek-V3.1&#8221;</code></pre><p>This is the base model we are going to fine-tune.  The model's name must match one of the available models returned by the Tinker API.</p><h4>Step 6: Configure LORA Finetuning Parameters</h4><pre><code>BATCH_SIZE = 8
LEARNING_RATE = 2e-5
LORA_RANK = 32
MAX_LENGTH = 4096
NUM_EPOCHS = 10</code></pre><blockquote><p><code>LEARNING_RATE = 2e-5</code> is <code>0.00002</code>. - Start conservative for large models.</p><p><code>LORA_RANK = 32</code> - Controls the adapter size. Higher means more capacity but slower training.</p><p><code>NUM_EPOCHS = 10</code> - means model go through the dataset 10 times.</p></blockquote><h4>Step 7: Load Tokenizer and Renderer</h4><pre><code>tokenizer = get_tokenizer(MODEL_NAME)
renderer_name = model_info.get_recommended_renderer_name(MODEL_NAME)
renderer = renderers.get_renderer(renderer_name, tokenizer)</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kutS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kutS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 424w, https://substackcdn.com/image/fetch/$s_!kutS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 848w, https://substackcdn.com/image/fetch/$s_!kutS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 1272w, https://substackcdn.com/image/fetch/$s_!kutS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kutS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png" width="850" height="257" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:257,&quot;width&quot;:850,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26799,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kutS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 424w, https://substackcdn.com/image/fetch/$s_!kutS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 848w, https://substackcdn.com/image/fetch/$s_!kutS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 1272w, https://substackcdn.com/image/fetch/$s_!kutS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a63676b-e374-4c55-bac5-0d6e5708a211_850x257.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The tokenizer converts text into tokens. The renderer defines how chat messages are formatted before they are sent to the model.</p><h4>Step 8: Prepare the Dataset for Training</h4><p>My dataset is a JSONL file. </p><p>The user message contains raw content scraped from release pages. The assistant message contains the <a href="https://www.devshorts.in/">Dev Shorts newsletter</a> style.</p><p>I prepared around 100 rows in total. Each row follows this format. For this walkthrough, I am using a small sample of 16 rows.</p><pre><code>{
  "messages": [
    {
      "role": "user",
      "content": "Rewrite in Dev Shorts newsletter style. 
We are introducing GPT&#8209;5.2, the most capable model series yet for professional knowledge work.

Already, the average ChatGPT Enterprise user says&#8288; AI saves them 40&#8211;60 minutes a day, and heavy users say it saves them more than 10 hours a week. We designed GPT&#8209;5.2 to unlock even more economic value for people; it&#8217;s better at creating spreadsheets, building presentations, writing code, perceiving images, understanding long contexts, using tools, and handling complex, multi-step projects.

GPT&#8209;5.2 sets a new state of the art across many benchmarks, including GDPval, where it outperforms industry professionals at well-specified knowledge work tasks spanning 44 occupations."
    },
    {
      "role": "assistant",
      "content": "OpenAI has launched GPT 5.2. It is better at creating spreadsheets, building presentations, writing code, understanding images. It can work with long context. It also uses tools more effectively and handles multi-step work with more accuracy. Read OpenAI&#8217;s GPT 5.2 post for more details."
    }
  ]
}
</code></pre><h4>Step 9: Load the Dataset</h4><pre><code>DATASET_PATH = "dataset.jsonl"

training_data_raw = []
with open(DATASET_PATH, "r") as f:
    for line in f:
        training_data_raw.append(json.loads(line.strip()))

print(f"Loaded {len(training_data_raw)} examples")</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rqsz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rqsz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 424w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 848w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 1272w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rqsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png" width="718" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:718,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21022,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rqsz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 424w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 848w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 1272w, https://substackcdn.com/image/fetch/$s_!rqsz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9db97c3c-e402-4c4f-8b45-5b56915a236b_718x271.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 10: Convert the data to training format</h4><p><code>conversation_to_datum</code> - This function converts each conversation into a format Tinker can use for training. </p><p><code>TrainOnWhat.ALL_ASSISTANT_MESSAGES</code> - It tells Tinker to only learn from assistant responses, not user messages.</p><pre><code>training_data = [
    conversation_to_datum(
        ex["messages"],
        renderer,
        MAX_LENGTH,
        TrainOnWhat.ALL_ASSISTANT_MESSAGES,
    )
    for ex in training_data_raw
]</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MMfN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MMfN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 424w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 848w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 1272w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MMfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png" width="676" height="353" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:353,&quot;width&quot;:676,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21350,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MMfN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 424w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 848w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 1272w, https://substackcdn.com/image/fetch/$s_!MMfN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34ef6e06-c721-4d25-b98f-67ae0a3ab5ba_676x353.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 11: Create Training Client</h4><pre><code>training_client = service_client.create_lora_training_client(
    base_model=MODEL_NAME,
    rank=LORA_RANK,
)

print("Training client created")</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!A-Xe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!A-Xe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 424w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 848w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 1272w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!A-Xe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png" width="825" height="254" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/923403a5-a76a-41c0-9922-592607a8990a_825x254.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:254,&quot;width&quot;:825,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14552,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!A-Xe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 424w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 848w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 1272w, https://substackcdn.com/image/fetch/$s_!A-Xe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F923403a5-a76a-41c0-9922-592607a8990a_825x254.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 12: Train the Model</h4><p>Tinker has 4 core functions. The training loop uses two of them.</p><ul><li><p><code>forward_backward()</code> - compute gradients</p></li><li><p><code>optim_step()</code> - update weights</p></li></ul><pre><code>n_batches = len(training_data) // BATCH_SIZE

for epoch in range(NUM_EPOCHS):
    print(f"\nEpoch {epoch + 1}/{NUM_EPOCHS}")
    
    for batch_idx in range(n_batches):
        t_start = time.time()
        
        # Learning rate decay
        step = epoch * n_batches + batch_idx
        total_steps = NUM_EPOCHS * n_batches
        lr_mult = max(0.0, 1.0 - step / total_steps)
        current_lr = LEARNING_RATE * lr_mult
        
        adam_params = types.AdamParams(
            learning_rate=current_lr,
            beta1=0.9,
            beta2=0.95,
            eps=1e-8,
        )
        
        # Get batch
        batch_start = batch_idx * BATCH_SIZE
        batch_end = batch_start + BATCH_SIZE
        batch = training_data[batch_start:batch_end]
        
        # Training step
        fwd_bwd_future = training_client.forward_backward(batch, loss_fn="cross_entropy")
        optim_step_future = training_client.optim_step(adam_params)
        
        fwd_bwd_result = fwd_bwd_future.result()
        optim_step_future.result()
        
        # Compute loss
        logprobs = [out["logprobs"] for out in fwd_bwd_result.loss_fn_outputs]
        weights_list = [d.loss_fn_inputs["weights"] for d in batch]
        mean_nll = compute_mean_nll(logprobs, weights_list)
        
        elapsed = time.time() - t_start
        print(f"  Batch {batch_idx + 1}/{n_batches} | NLL: {mean_nll:.4f} | LR: {current_lr:.2e} | Time: {elapsed:.2f}s")

print("\nTraining complete")</code></pre><p>The loss (NLL) should decrease as training progresses.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MVAe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MVAe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 424w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 848w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 1272w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MVAe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png" width="976" height="835" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:835,&quot;width&quot;:976,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69820,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MVAe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 424w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 848w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 1272w, https://substackcdn.com/image/fetch/$s_!MVAe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff0fa9f46-2c49-4bea-abdb-ac99b1f41b62_976x835.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Note: The dataset size and epochs shown here are for demonstration. I actually finetuned with more rows and higher epochs to get the model to pick up the style properly.</p><h4>Step 13: Save Checkpoint</h4><p>This uses Tinker's third function.</p><p><code>save_weights_for_sampler()</code> - It stores the checkpoint on Tinker's servers.</p><pre><code>final_path = training_client.save_weights_for_sampler(name="final").result().path
print(f"Final checkpoint: {final_path}")</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!g94X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!g94X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 424w, https://substackcdn.com/image/fetch/$s_!g94X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 848w, https://substackcdn.com/image/fetch/$s_!g94X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 1272w, https://substackcdn.com/image/fetch/$s_!g94X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!g94X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png" width="954" height="156" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:156,&quot;width&quot;:954,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21544,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b371b2e-a4ae-4240-bfaa-eff6c0b95408_954x156.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!g94X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 424w, https://substackcdn.com/image/fetch/$s_!g94X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 848w, https://substackcdn.com/image/fetch/$s_!g94X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 1272w, https://substackcdn.com/image/fetch/$s_!g94X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee131fd-727b-42ac-9e17-6fdcf7944040_954x156.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Step 14: Test the Finetuned Model</h4><p>Finally, test the finetuned model using Tinker&#8217;s fourth function- <code>sample()</code>.</p><pre><code>test_client = service_client.create_sampling_client(model_path=final_path)

test_input = (
    "The Gemma is a family of generative AI models designed for tasks like question answering, summarization etc. It is a family of open models from Google. Gemma recently crossed 100 million downloads and has a growing community with tens of thousands of model variants created by developers. Google has now introduced Gemma 3, a new set of lightweight open models built on the same research used for Gemini 2.0. These models are designed to run efficiently on devices like phones, laptops, and workstations. Gemma 3 is available in multiple sizes including 1B, 4B, 12B, and 27B. Gemma 3 supports text and image reasoning, a 128k token context window, function calling, and structured outputs. It also offers support for more than 140 languages and includes official quantized versions to improve performance while reducing compute requirements."
)

STYLE_PREFIX = (
    "Rewrite in Dev Shorts newsletter style."
)

convo = [
    {
        "role": "user",
        "content": STYLE_PREFIX + "\n\n" + test_input
    }
]

model_input = renderer.build_generation_prompt(convo)

result = test_client.sample(
    prompt=model_input,
    num_samples=1,
    sampling_params=types.SamplingParams(
        max_tokens=200,
        stop=renderer.get_stop_sequences(),
        temperature=0.2,
    ),
).result()

parsed_message, _ = renderer.parse_response(result.sequences[0].tokens)
output = parsed_message["content"]

print("INPUT:")
print(test_input)
print("\nOUTPUT:")
print(output)</code></pre><p>The finetuned model writes in the style we finetuned.</p><p>Output:</p><p>Google released Gemma 3. It is a set of open models for tasks like question answering and summarization. It has a 128K token context window and supports text and image reasoning. It is designed to run on phones, laptops, and workstations. It supports over 140 languages. Check Google&#8217;s Gemma 3 for more details.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Z2i7!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Z2i7!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 424w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 848w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Z2i7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png" width="1456" height="639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:639,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55031,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Z2i7!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 424w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 848w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 1272w, https://substackcdn.com/image/fetch/$s_!Z2i7!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd108b39f-4f90-4c06-ad0a-7838fc09f4d2_1471x646.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 15: Download the finetuned model weights</h4><pre><code>import urllib.request

sc = tinker.ServiceClient()
rc = sc.create_rest_client()
future = rc.get_checkpoint_archive_url_from_tinker_path("tinker://8c8-------2d0bd:train:0/sampler_weights/final")
checkpoint_archive_url_response = future.result()
urllib.request.urlretrieve(checkpoint_archive_url_response.url, "deepseek_finetuned.tar")</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EciN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EciN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 424w, https://substackcdn.com/image/fetch/$s_!EciN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 848w, https://substackcdn.com/image/fetch/$s_!EciN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 1272w, https://substackcdn.com/image/fetch/$s_!EciN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EciN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png" width="1447" height="500" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:500,&quot;width&quot;:1447,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60187,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F539f408c-45ef-4253-9070-b57064c70ce7_1447x500.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EciN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 424w, https://substackcdn.com/image/fetch/$s_!EciN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 848w, https://substackcdn.com/image/fetch/$s_!EciN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 1272w, https://substackcdn.com/image/fetch/$s_!EciN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F89384ff3-e2ee-4de7-8eb0-ff241755a314_1447x500.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5JnM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5JnM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5JnM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg" width="989" height="354" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:354,&quot;width&quot;:989,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44697,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/181648138?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5JnM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 424w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 848w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!5JnM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbfaae484-a837-4cde-bd75-2c283317e011_989x354.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We tested the fine-tuned model using Tinker. Now let us see how to use the fine-tuned weights outside Tinker.</p><h2>4. Inference and deployment options</h2><p>As we can download finetuned weights - LoRA adapters, we can also use it outside the Tinker platform.</p><h4>1. Load the LoRA adapter using Hugging Face PEFT</h4><p>You can load the LoRA adapter on top of the base model using <a href="https://huggingface.co/docs/peft/index">HuggingFace PEFT.</a> and use for inference.</p><pre><code>from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained("deepseek-ai/DeepSeek-V3.1")
tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/DeepSeek-V3.1")
model = PeftModel.from_pretrained(base_model, "./deepseek_finetuned")

prompt = "Rewrite in Dev Shorts newsletter style.\n\nOpenAI released GPT-5..."
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=200)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))</code></pre><h4>2. Run the model with vLLM for fast inference</h4><p>You can run the base model with the <a href="https://nm-vllm.readthedocs.io/en/latest/models/lora.html">LoRA adapter using vLLM</a> for fast inference.</p><pre><code>from vllm import LLM
from vllm.lora.request import LoRARequest

llm = LLM(model="deepseek-ai/DeepSeek-V3.1", enable_lora=True)

output = llm.generate(
    "Rewrite in Dev Shorts newsletter style.\n\nOpenAI released GPT-5...",
    lora_request=LoRARequest("devshorts", 1, "./deepseek_finetuned")
)
print(output[0].outputs[0].text)</code></pre><h4>Note on hardware requirements</h4><p>Running large models using Hugging Face or vLLM requires significant GPU memory. Make sure your hardware can handle the base model size.</p><p>If you do not want to manage infrastructure, you can also host the model on third party platforms that support LoRA adapters.</p><h2>Conclusion</h2><p>Tinker does one thing well. It lets you focus on training behavior instead of infrastructure.</p><p>If your goal is to fine tune models, <a href="https://thinkingmachines.ai/tinker/">Tinker</a> is worth trying. You stay close to the training loop. You can see how the model changes at each step. And you can still take the weights and run them anywhere you want.</p><p>I hope this blog gave you a clear idea of what Tinker is and how it works.</p><p>See you in the next Bytes blog,</p><p>Until then, happy learning and happy holidays!!!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/finetuning-deepseek-v3-with-tinker?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Cursor + Opus 4.5 - The Developer Workflow]]></title><description><![CDATA[A walkthrough of how I use Cursor with Opus 4.5]]></description><link>https://www.devshorts.in/p/cursor-opus-45-the-developer-workflow</link><guid isPermaLink="false">https://www.devshorts.in/p/cursor-opus-45-the-developer-workflow</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 10 Dec 2025 15:45:43 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KuBW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Anthropic released <a href="https://www.anthropic.com/news/claude-opus-4-5">Claude Opus 4.5</a> recently. It is their strongest model so far.</p><p>I have been using it inside Cursor for a few weeks. Opus 4.5 handled the coding work with ease. Cursor managed the agents and kept them running side by side. Together they cut my build time almost in half.</p><p>My iteration cycle changed as well. Most tasks worked on the first try. When something failed, the fix was fast. Less back and forth. More time to build.</p><p>This guide captures my workflow with Cursor and Opus 4.5 while building a real time application.</p><p>What we will cover</p><ol><li><p>Claude Opus 4.5 features</p></li><li><p>Cursor&#8217;s latest features</p></li><li><p>A developer workflow with Cursor and Opus 4.5</p></li><li><p>What I noticed in the code while using Opus 4.5</p></li><li><p>Cursor with other models</p></li></ol><p>Let us start.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Claude Opus 4.5 </h2><p>Here is a quick view of what Opus 4.5 offers. I grouped the model spec and the capabilities so you can see both sides at once.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!szY5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!szY5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 424w, https://substackcdn.com/image/fetch/$s_!szY5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 848w, https://substackcdn.com/image/fetch/$s_!szY5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 1272w, https://substackcdn.com/image/fetch/$s_!szY5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!szY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png" width="1456" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:110303,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!szY5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 424w, https://substackcdn.com/image/fetch/$s_!szY5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 848w, https://substackcdn.com/image/fetch/$s_!szY5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 1272w, https://substackcdn.com/image/fetch/$s_!szY5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3096103-5624-437c-a4d8-224dbf23af0f_1693x714.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>Opus comes with its own strengths, but it is not the best choice for every task. Other models perform better in some areas. </p><p>When it comes to multilingual tasks, Gemini performs better than Opus. For visual tasks, GPT takes the lead.</p></blockquote><h2>2. Cursor Features</h2><p>Here are the Cursor features that helped the most during the build. I grouped them so you can see how all in one place. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hlEL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hlEL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 424w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 848w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 1272w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hlEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png" width="1456" height="357" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:357,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:255370,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hlEL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 424w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 848w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 1272w, https://substackcdn.com/image/fetch/$s_!hlEL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fce3db042-4dbc-4081-b231-fb34cf153387_3886x953.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Both tools bring their own strengths. When used together, the workflow becomes faster and easier. </p><p>Here is the cursor + opus 4.5 workflow for building an application.</p><h2>3. Cursor + Opus 4.5: The new developer workflow</h2><p>The application I built is a small <strong>API monitoring tool</strong>. </p><p>What it does :- Captures all API calls from my local apps and shows them in a clean UI.</p><p>Why I built it :-  DevTools works, but shows everything like network requests, console logs, DOM changes. Too much noise when I just want to see API calls.</p><p>How it helps :- Clean view of only API requests and responses. No clutter. Makes debugging faster.</p><p>I will start by pre-cursor setup.</p><h4>Step 1: Pre-Cursor Setup</h4><pre><code>mkdir api-monitor-demo
cd api-monitor-demo
git init
cursor .</code></pre><h4>Step 2: Set Up Rules Before Writing Code</h4><p>Cursor supports <a href="https://cursor.com/docs/context/rules">rules</a>. These rules act like project standards. Once you set them, Cursor follows them whenever needed.</p><p>There is a <a href="https://github.com/PatrickJS/awesome-cursorrules">Cursor rules repo on GitHub</a> with examples for many languages.</p><p>I copy the rules and send them to an agent. I ask the agent to create the rule files. I keep sending prompts for creating rules for both frontend and backend. <a href="https://cursor.com/docs/agent/planning#queued-messages">Cursor queues the messages</a><strong><a href="https://cursor.com/docs/agent/planning#queued-messages"> </a></strong>and completes each task one by one while I plan the rest of the work.</p><p><strong>Create Rules Folders and Files</strong></p><p>Prompt to the Agent:</p><ul><li><p>Create .cursor/rules/ folder </p></li><li><p>Create core.mdc  inside <code>.cursor/rules</code> with below content.</p></li><li><p>Create backend.mdc inside <code>.cursor/rules</code> with below content.</p></li><li><p>Create frontend.mdc inside <code>.cursor/rules</code> with below content.</p></li></ul><p>Sample content for core.mdc</p><pre><code>
---
description: Core project standards
globs:
alwaysApply: true
---

# Standards

- TypeScript strict mode
- Never use `any` &#8212; use `unknown` and narrow
- Never write `// ... rest of code` placeholders
- Always provide complete implementations
- Use Zod for runtime validation
- Log errors with context: `console.error(&#8217;[Component]&#8217;, error)`</code></pre><blockquote><p>Start with a few rules. Add more only when you see repeated mistakes. Keep the tab open and update it as you build.</p></blockquote><h4><strong>Step 3: Plan with Opus 4.5 (Use Commands for Planning)</strong></h4><p>Cursor has an Ask Mode for read only conversations. It answers questions but does not touch the code.</p><p>I used Ask Mode at first, but I often forgot to switch back to Agent Mode when I wanted to make code changes. Then I had to repeat the prompt in Agent Mode. </p><p>To avoid this, I use a small planning command. I run this command in Agent Mode, but it does not make any code changes.</p><p>Create a file at <code>.cursor/commands/planonly.mdc</code> with this content:</p><pre><code>#planonly.mdc

Do not update any code. Instead:
- Explain the approach
- List options with pros and cons
- Highlight potential challenges
- Ask clarifying questions if the request is unclear
- Respond based on prompt</code></pre><p>This works like a clean planning mode inside Agent Mode. I use it when I want Cursor to think through the problem without touching the repo.</p><p><a href="https://cursor.com/docs/agent/chat/commands#examples">Cursor gives a few example commands on its page</a>. You can create your own commands based on your workflow. </p><p>I keep a small set of commands that I use often. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CckW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CckW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 424w, https://substackcdn.com/image/fetch/$s_!CckW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 848w, https://substackcdn.com/image/fetch/$s_!CckW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 1272w, https://substackcdn.com/image/fetch/$s_!CckW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CckW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png" width="331" height="306" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:306,&quot;width&quot;:331,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17289,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CckW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 424w, https://substackcdn.com/image/fetch/$s_!CckW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 848w, https://substackcdn.com/image/fetch/$s_!CckW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 1272w, https://substackcdn.com/image/fetch/$s_!CckW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5a84752-760f-433d-8b04-e1d0bb318d55_331x306.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>For any new project,</p><blockquote><p>I think through the design with Opus first. Once the design is clear, I ask it for the detailed prompts to build the frontend and backend. </p><p><strong>Opus works like a prompt builder in this stage</strong>. </p><p>Since it knows the full context, it gives detailed prompts for each part. I paste them into different agents, and they start to build in parallel.</p></blockquote><h4><strong>Step 4: Building the app with cursor parallel agents</strong></h4><p>Once I had the prompts from Opus, I sent them to separate agents. </p><p>This is where Cursor and Opus change the way we build. Instead of working on one part at a time, you can run many<a href="https://cursor.com/docs/configuration/worktrees"> agents in parallel</a>. Each agent focuses on a single part of the project.</p><p>For this app, I used three agents: frontend, backend, and infra.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vsUT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vsUT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 424w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 848w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vsUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif" width="864" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:864,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:165501,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vsUT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 424w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 848w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!vsUT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F933799af-287d-4c35-ad81-1d9e898ad3d8_864x280.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><strong>Backend Agent: </strong></p><pre><code>Prompt:- Build the backend proxy server in src/server/ with these requirements:

[backend requirements here]</code></pre><p><strong>Frontend Agent </strong></p><pre><code>Prompt:- Build the React UI in src/ui/ with these requirements:

[frontend requirements here]</code></pre><p><strong>Infrastructure Agent</strong></p><pre><code>Prompt:- Set up project infrastructure

[infra requirements here]</code></pre><p>All three agents run at the same time. This is the folder structure I got for the API monitoring app.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OXYM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OXYM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 424w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 848w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 1272w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OXYM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png" width="321" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:321,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10858,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OXYM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 424w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 848w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 1272w, https://substackcdn.com/image/fetch/$s_!OXYM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff3d2fdf7-e13b-4383-88af-8a44b7f32b73_321x253.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Watch three agents build the API Monitoring app in parallel. Backend, frontend, and infrastructure - all at the same time</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;98bc981a-648f-43bd-83ee-bc07f07bd250&quot;,&quot;duration&quot;:null}"></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sIdV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sIdV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 424w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 848w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 1272w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sIdV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png" width="1456" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121747,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!sIdV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 424w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 848w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 1272w, https://substackcdn.com/image/fetch/$s_!sIdV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f38c030-2009-4b4d-96aa-3302388bdcf7_1915x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The API monitoring tool was a small project built locally from scratch, so running all agents in the same folder worked fine. </p><p>But in bigger projects and git repos, the number of files and changes grows, and conflicts become more likely. This is where git worktrees help.</p><h4>Working with existing GitHub repo</h4><p><a href="https://devshorts.substack.com/p/coding-with-parallel-agents-and-git">Git worktrees let you work on multiple branches</a> at the same time. Each agent gets its own workspace. No overlap. No risk of one agent overwriting the work of another. Also, multiple feature development can be done at the same time.</p><p>In that case, I start by creating feature branches with git worktrees. </p><pre><code><code>git worktree add ../ui -b feature/ui
git worktree add ../api -b feature/api</code></code></pre><p>I open each worktree in its own editor window. Then I ask Opus to read the code and understand the repo.  Then each agent starts to work in its own folder.</p><p>When the work is done, I merge the feature branch back into main. Cursor shows the diffs clearly, and the review tools help catch mistakes before the merge.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cw96!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cw96!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 424w, https://substackcdn.com/image/fetch/$s_!cw96!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 848w, https://substackcdn.com/image/fetch/$s_!cw96!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 1272w, https://substackcdn.com/image/fetch/$s_!cw96!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cw96!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif" width="1082" height="603" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:603,&quot;width&quot;:1082,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:348056,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cw96!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 424w, https://substackcdn.com/image/fetch/$s_!cw96!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 848w, https://substackcdn.com/image/fetch/$s_!cw96!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 1272w, https://substackcdn.com/image/fetch/$s_!cw96!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1369413-337a-4555-9d9e-a803de1bb257_1082x603.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Code review</h4><p>Cursor has a built-in review flow. It helps you check the changes made by the agents. It shows a simple diff, and you can choose which changes to accept.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Oq8w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Oq8w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 424w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 848w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 1272w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Oq8w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png" width="1641" height="198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:198,&quot;width&quot;:1641,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42053,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5f7e450f-00de-4147-9c71-b7749e2200c0_1641x198.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Oq8w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 424w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 848w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 1272w, https://substackcdn.com/image/fetch/$s_!Oq8w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbec7677d-7c4d-44c4-80ac-2d2b1f40d41c_1641x198.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Cursor can review after each commit, include untracked files, or include submodules.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DGDS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DGDS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 424w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 848w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 1272w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DGDS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png" width="626" height="268" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:268,&quot;width&quot;:626,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23614,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DGDS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 424w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 848w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 1272w, https://substackcdn.com/image/fetch/$s_!DGDS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cbc4632-8b6a-4f04-b41a-f93a73d328a8_626x268.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cVIy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cVIy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 424w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 848w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 1272w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cVIy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png" width="463" height="153" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/032d4280-3923-4fbd-a09f-549953c49161_463x153.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:153,&quot;width&quot;:463,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7550,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cVIy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 424w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 848w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 1272w, https://substackcdn.com/image/fetch/$s_!cVIy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F032d4280-3923-4fbd-a09f-549953c49161_463x153.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can also create a command for code review and use it in chat. </p><p>You can also use tools like <a href="https://www.coderabbit.ai/">Coderabbit AI</a> to review your code inside IDE.</p><h2>4. What I noticed in the code while using Opus 4.5</h2><p>Here are some things I noticed in the code while using Opus 4.5.</p><ol><li><p>Handled complex logic without breaking the flow</p></li><li><p>Delivered clean code in a single prompt in many cases</p></li><li><p>Kept the structure stable across long tasks</p></li><li><p>Produced modular and efficient code by default</p></li><li><p>Wrote clear and consistent UI components</p></li><li><p>Created well-structured API endpoints</p></li><li><p>Used predictable naming and patterns across files</p></li><li><p>Generated self-explanatory code that needed fewer comments</p></li></ol><h2>5. Cursor with other models</h2><p>After working with cursor for many months, I switch between models based on the kind of work I am doing. Each one has a strength.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KuBW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KuBW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 424w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 848w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 1272w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KuBW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png" width="1034" height="528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:528,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123862,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/180578013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KuBW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 424w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 848w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 1272w, https://substackcdn.com/image/fetch/$s_!KuBW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ac32a8c-52c1-4c2a-977b-8b39ffc24ca6_1034x528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conclusion</h2><p>We looked how Cursor agents with Opus 4.5 help speed up development. If you are using Cursor, try with agents - Opus 4.5 and git worktrees. It keeps the work organized and makes it easy to build features in parallel.</p><p>This setup is not about changing everything you do. It just gives you a smoother way to move through your work. </p><p>Next time you start a project, try this: Open parallel agents. Give each one a clear task. Let them run while you plan what&#8217;s next. You&#8217;ll finish faster than you expect</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/cursor-opus-45-the-developer-workflow?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/cursor-opus-45-the-developer-workflow?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/cursor-opus-45-the-developer-workflow?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Coding with Parallel Agents and Git worktrees]]></title><description><![CDATA[Parallel Agents with Git worktrees]]></description><link>https://www.devshorts.in/p/coding-with-parallel-agents-and-git</link><guid isPermaLink="false">https://www.devshorts.in/p/coding-with-parallel-agents-and-git</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 26 Nov 2025 15:50:46 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!4WCA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most of us use AI agents every day. Many times, we do not even notice it. Agents are now common in coding, and they help us with many tasks. </p><p>We are now moving to the next stage of agent-based coding. We can use parallel agents to work on many features and fixes at the same time inside the same repo.</p><p>Claude Code and Cursor support parallel agents. They use Git work trees to give each agent its own space to work. You can follow the same approach by creating work trees in your project.</p><p>Let us first understand what Git worktrees are and how they help with parallel coding.</p><ol><li><p>What is a Git worktree</p></li><li><p>Git worktree Vs Git Clone</p></li><li><p>Git worktree Commands</p></li><li><p>Claude Code&#8217;s Parallel Agents with Git worktrees</p></li><li><p>Cursor&#8217;s Parallel Agents with Git worktrees</p></li><li><p>CodeRabbit&#8217;s  Git worktree runner</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is a Git worktree</h2><p><a href="https://git-scm.com/docs/git-worktree">Git worktree</a> is a feature in Git.  Before we see Git worktree, let us see the normal Git flow.</p><h4><strong>The normal Git flow</strong></h4><ul><li><p>You have one working folder.</p></li><li><p>You have one active branch.</p></li><li><p>Switching branches changes all files in that folder</p></li></ul><pre><code>my-app/
&#9500;&#9472;&#9472; src/
&#9500;&#9472;&#9472; README.md
&#9492;&#9472;&#9472; .git/</code></pre><p>When you run <code>git checkout &#8220;feature-abc&#8221;, </code>the whole folder switches to that branch.</p><h4><strong>The Git work tree flow</strong></h4><ul><li><p>Work trees let you have many working folders from the same repo.</p></li><li><p>Each folder can have its own branch.</p></li><li><p>You can work in all of them at the same time without switching anything.</p></li></ul><blockquote><p>In simple words, you can work in parallel without switching branches.</p></blockquote><pre><code>my-app/                    
&#9500;&#9472;&#9472; src/
&#9500;&#9472;&#9472; README.md
&#9492;&#9472;&#9472; .git/

my-app-feature-a/          &#8592; Worktree 1 (feature-a branch)
&#9500;&#9472;&#9472; src/
&#9500;&#9472;&#9472; README.md
&#9492;&#9472;&#9472; .git                   &#8592; File points to main repo

my-app-feature-b/          &#8592; Worktree 2 (feature-b branch)
&#9500;&#9472;&#9472; src/
&#9500;&#9472;&#9472; README.md
&#9492;&#9472;&#9472; .git                   &#8592; File points to main repo</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4WCA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4WCA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 424w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 848w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 1272w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4WCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif" width="912" height="416" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:416,&quot;width&quot;:912,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:196226,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!4WCA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 424w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 848w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 1272w, https://substackcdn.com/image/fetch/$s_!4WCA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7516bd6-3f3e-4af1-b58c-2660da84c2c8_912x416.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. Git worktree Vs Git Clone</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BZmn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BZmn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 424w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 848w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 1272w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BZmn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png" width="1035" height="415" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:415,&quot;width&quot;:1035,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BZmn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 424w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 848w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 1272w, https://substackcdn.com/image/fetch/$s_!BZmn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e72a510-629d-419a-80ef-3edc24a291f7_1035x415.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The points above explain the concept. But the commands make it crystal clear.</p><p>This is what we do in a normal clone and what we do when we use work trees.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UA9Q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UA9Q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 424w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 848w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 1272w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UA9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png" width="1100" height="560" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/af1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:560,&quot;width&quot;:1100,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121309,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UA9Q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 424w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 848w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 1272w, https://substackcdn.com/image/fetch/$s_!UA9Q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faf1a5aa9-0fa5-48f8-8662-6c665a5dac48_1100x560.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Git Worktree Commands</h2><p>There are a few basic Git work tree commands you will use often.</p><h4>1. Create worktree </h4><pre><code># Create a work tree and a new branch
git worktree add &lt;worktree-path&gt; -b &lt;new-branch-name&gt;

# Example
git worktree add ../add-header -b feature/add-header


# Create a work tree from an existing branch
git worktree add &lt;worktree-path&gt; &lt;branch-name&gt;

# Example
git worktree add ../ui-changes feature/ui-changes</code></pre><h4>2. List worktree </h4><pre><code># list all active work trees
git worktree list</code></pre><h4>3. Remove worktree </h4><pre><code># remove a work tree
git worktree remove &lt;worktree-path&gt;

# Example
git worktree remove ../add-header</code></pre><h4><strong>One branch per Worktree Rule</strong></h4><p>Git has a simple rule for work trees. One branch can live in only one work tree at a time.  </p><p>If the branch is already used in a work tree, Git will block you from using it again. See the screenshot below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aFfr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aFfr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 424w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 848w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 1272w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aFfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png" width="1112" height="164" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:164,&quot;width&quot;:1112,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49786,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F65e72a2b-2ca5-4ba2-9a4b-6f1c212bd0ed_1112x164.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aFfr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 424w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 848w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 1272w, https://substackcdn.com/image/fetch/$s_!aFfr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F32bf0228-7a07-4daa-9008-cfd8c5623f9f_1112x164.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>4. Claude Code with Git worktrees</h2><p><a href="https://code.claude.com/docs/en/common-workflows#run-parallel-claude-code-sessions-with-git-worktrees">Claude Code can run parallel agents when you use Git work trees</a>. Each work tree has its own folder and its own branch, so Claude can work on many tasks at the same time.</p><p>I was building a Gmail mail hub for my personal use. I had ui changes and oauth work going on at the same time. </p><p>Here is how I used Claude Code with work trees to build two features at the same time.</p><h4>1. Created a new worktree for ui changes</h4><pre><code>git worktree add ../ui-changes -b feature/ui-changes</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pJmO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pJmO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 424w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 848w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 1272w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pJmO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png" width="942" height="85" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3d83b907-68bd-41a8-924f-91be186e74de_942x85.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:85,&quot;width&quot;:942,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18102,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37ab69de-6ba7-4b4a-a219-2cfb87852796_942x85.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pJmO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 424w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 848w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 1272w, https://substackcdn.com/image/fetch/$s_!pJmO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3d83b907-68bd-41a8-924f-91be186e74de_942x85.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>2. Created another worktree for oauth integration</h4><pre><code><code>git worktree add ../oauth-integration -b feature/oauth-integration</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UGmC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UGmC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 424w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 848w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 1272w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UGmC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png" width="1068" height="84" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:84,&quot;width&quot;:1068,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18398,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe855b558-988d-42b9-bbe8-6f09486f960b_1068x84.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!UGmC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 424w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 848w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 1272w, https://substackcdn.com/image/fetch/$s_!UGmC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1ccce20a-519c-45a4-8fd9-35eb92a2941a_1068x84.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>After creating them, I listed the work trees to make sure everything was set:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Gd3U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Gd3U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 424w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 848w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 1272w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Gd3U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png" width="931" height="113" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:113,&quot;width&quot;:931,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18969,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F06136418-3807-49c2-8ef5-7743576cb58a_931x113.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Gd3U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 424w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 848w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 1272w, https://substackcdn.com/image/fetch/$s_!Gd3U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c2fae53-4083-4d20-9630-20dd9339c69a_931x113.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can also see the separate folders for each branch. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nYqB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nYqB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 424w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 848w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 1272w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nYqB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png" width="941" height="265" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:265,&quot;width&quot;:941,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23591,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!nYqB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 424w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 848w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 1272w, https://substackcdn.com/image/fetch/$s_!nYqB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2aaf253e-2ff6-473a-a64d-7ae213a4121b_941x265.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now Claude Code can work across these branches without switching, as we have separate folders.</p><p>I worked on ui changes and oauth integration at the same time using Claude Code.</p><p>The video below shows how it works in real time.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;c79ee830-29a7-45a3-aadb-4b1777cd1890&quot;,&quot;duration&quot;:null}"></div><h2>5. Cursor&#8217;s Parallel Agents with Git Worktrees</h2><p>Cursor makes it easy to run <a href="https://cursor.com/docs/configuration/worktrees">parallel agents by using Git work trees</a> in the background. </p><p>You can start by selecting a work tree and choosing many models for the same task, as shown in the image. Cursor will run the same prompt across all the selected models at once.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IgFr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IgFr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 424w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 848w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 1272w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IgFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png" width="647" height="234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:234,&quot;width&quot;:647,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19460,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30d81bc3-bb4a-459c-9048-a05047865f3d_647x234.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!IgFr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 424w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 848w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 1272w, https://substackcdn.com/image/fetch/$s_!IgFr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc483b99b-bcde-41e1-840e-2d6cf83941ca_647x234.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>After you submit the prompt, Cursor shows one card for each model. You can click through the cards and see how each model changed the code.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kZrh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kZrh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 424w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 848w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 1272w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kZrh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png" width="1140" height="344" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:344,&quot;width&quot;:1140,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43149,&quot;alt&quot;:&quot;Best-of-N cards&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Best-of-N cards" title="Best-of-N cards" srcset="https://substackcdn.com/image/fetch/$s_!kZrh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 424w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 848w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 1272w, https://substackcdn.com/image/fetch/$s_!kZrh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7cf34421-c15c-41ac-ad62-c8dc1dcbdf9a_1140x344.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">source:- <a href="https://cursor.com/docs/configuration/worktrees">cursor&#8217;s multiple models</a></figcaption></figure></div><p>When you like one of the versions, you can click <a href="https://cursor.com/docs/configuration/worktrees#apply-functionality">Apply</a>. Cursor will bring those edits into your checked out branch.</p><p>You can also customize worktrees by editing  .cursor/worktrees.json file.</p><p>All commands you add under setup-worktree will run inside the work tree during setup.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!swVh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!swVh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 424w, https://substackcdn.com/image/fetch/$s_!swVh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 848w, https://substackcdn.com/image/fetch/$s_!swVh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 1272w, https://substackcdn.com/image/fetch/$s_!swVh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!swVh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png" width="675" height="234" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:234,&quot;width&quot;:675,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:10582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!swVh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 424w, https://substackcdn.com/image/fetch/$s_!swVh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 848w, https://substackcdn.com/image/fetch/$s_!swVh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 1272w, https://substackcdn.com/image/fetch/$s_!swVh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc967172b-b3cd-4e95-87b5-5c439dd8023f_675x234.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can see all active worktrees anytime by running git worktree list. If you want to see Cursor created worktrees in your SCM panel, you can enable the git.showCursorWorktrees setting.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!futx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!futx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 424w, https://substackcdn.com/image/fetch/$s_!futx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 848w, https://substackcdn.com/image/fetch/$s_!futx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 1272w, https://substackcdn.com/image/fetch/$s_!futx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!futx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png" width="944" height="380" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:380,&quot;width&quot;:944,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60400,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!futx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 424w, https://substackcdn.com/image/fetch/$s_!futx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 848w, https://substackcdn.com/image/fetch/$s_!futx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 1272w, https://substackcdn.com/image/fetch/$s_!futx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa82e3ce0-3749-4b10-984e-3d1cb9c0e7da_944x380.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>6. Git Worktree Runner - gtr</h2><p>If you want a simpler way to handle worktrees, CodeRabbit offers a helper tool called Git Worktree Runner. It makes it easy to create, open, and manage worktrees with short commands. If you use worktrees often, this tool saves a lot of typing.</p><p>You can find it here: <a href="https://github.com/coderabbitai/git-worktree-runner">CodeRabbit&#8217;s Git Worktree Runner</a></p><p>Here is how you can install and use it.</p><pre><code># Installation

git clone https://github.com/coderabbitai/git-worktree-runner.git
cd git-worktree-runner
sudo ln -s &#8220;$(pwd)/bin/git-gtr&#8221; /usr/local/bin/git-gtr

# Usage

cd ~/your-repo                              # Navigate to git repo
git gtr config set gtr.editor.default cursor    # One-time setup
git gtr config set gtr.ai.default claude        # One-time setup

# Daily workflow
git gtr new my-feature                          # Create worktree
git gtr editor my-feature                       # Open in editor
git gtr ai my-feature                           # Start AI tool
git gtr rm my-feature                           # Remove when done</code></pre><p>This table gives a quick comparison of Git worktree commands and the matching gtr commands.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fVLZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fVLZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 424w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 848w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 1272w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fVLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png" width="1248" height="614" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:614,&quot;width&quot;:1248,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90822,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/179121983?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!fVLZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 424w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 848w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 1272w, https://substackcdn.com/image/fetch/$s_!fVLZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0d73f1cd-4356-4352-92d2-7b0fa6d313d9_1248x614.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source:- <a href="https://github.com/coderabbitai/git-worktree-runner">CodeRabbit&#8217;s git-worktree-runner</a></figcaption></figure></div><h2><strong>Conclusion</strong></h2><p>We looked at Git worktrees and how they help with parallel agentic coding.</p><p>Worktrees let you build many features at the same time without switching branches or creating extra clones.</p><p>Tools like Claude Code, Cursor make it even better by linking every agent to its own work tree. This keeps your work clean, safe, and fast.</p><p>Once you start using work trees, it is hard to go back to the old single folder flow. You get more focus, more speed, and fewer mistakes with this new workflow. Try creating a few work trees for your next project and see how simple it feels to work on many features at the same time.</p><p>If you use any agent-based coding tool, work trees will become a natural part of your daily workflow.</p><p>Try now and let me know how it helps in your workflow!</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/coding-with-parallel-agents-and-git?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/coding-with-parallel-agents-and-git?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/coding-with-parallel-agents-and-git?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to build Voice Agents]]></title><description><![CDATA[Building Voice Agents using different frameworks]]></description><link>https://www.devshorts.in/p/how-to-build-voice-agents</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-build-voice-agents</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 12 Nov 2025 15:55:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!gmzd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We have been talking about AI agents for a while. This week&#8217;s blog is again about agents. But this time, it&#8217;s about voice agents. The recent announcement of <a href="https://x.com/krandiash/status/1983202316397453676">&#8220;Sonic 3 - the state of the art model in conversation&#8221;</a> made me curious to explore voice agents. Let us see how far we have come in this space.</p><p>During the LLM wave, we saw models that could convert text to speech. Now, in the agent era, voice agents are taking the spotlight. Out of every ten calls I get, at least one is from an automated voice agent promoting something. The conversational AI space is growing fast.</p><p>So, let&#8217;s explore how to build our own voice agent.</p><p>In this blog, we will cover,</p><ol><li><p>Getting Started with Voice Agents</p></li><li><p>Frameworks for Voice Agents</p></li><li><p>Building voice agents with code -OpenAI&#8217;s Agent SDK</p></li><li><p>Building voice agents without code - Voice Flow, Retell AI, Vapi</p></li><li><p>Further Reading: TTS, STT, and Speech-to-Speech Models and APIs</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Getting Started with Voice Agents</h2><p>We have come a long way from simple text-to-speech models. Voice agents today can talk, reason, and respond in real time. It&#8217;s a big step forward in conversational AI.</p><p>A voice agent is a virtual assistant that holds natural conversations. It works over phone calls or websites. The agent listens to speech, processes it using language models, takes action, and responds in a human-like voice.</p><p>These agents can handle real tasks. They schedule appointments, answer customer questions, and make sales calls. They can call APIs, maintain context across conversations, and connect with other systems to get things done.</p><p>You can build voice agents in two ways.</p><h4>Pipeline Method</h4><p>The first way is a kind of pipeline approach using separate models:</p><ul><li><p>Speech-to-text (STT)</p></li><li><p>A language model for reasoning and tool calls, </p></li><li><p>Text-to-speech. (TTS)</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XxWW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XxWW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 424w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 848w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 1272w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XxWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png" width="1456" height="392" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:392,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:71645,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XxWW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 424w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 848w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 1272w, https://substackcdn.com/image/fetch/$s_!XxWW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd9967572-5ee4-4ef7-851e-e6a6bbc03074_1472x396.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Example speech-to-text models:   <a href="https://github.com/openai/whisper">Whisper</a>, <a href="https://deepgram.com/learn/introducing-nova-3-speech-to-text-api">Deepgram</a>, <a href="https://www.assemblyai.com/products/speech-to-text">AssemblyAI</a> </p><p>Example text-to-speech models: <a href="https://platform.openai.com/docs/models/gpt-4o-mini-tts">gpt-4o-mini-tts</a>, <a href="https://cloud.google.com/text-to-speech">Google TTS</a>, <a href="https://elevenlabs.io/text-to-speech">ElevenLabs</a>, <a href="https://docs.cartesia.ai/build-with-cartesia/tts-models/latest">Sonic 3</a></p><h4>Speech to Speech Method</h4><p>The second approach uses a single speech-to-speech model. This removes the hand-off delays between STT and TTS models, making conversations smoother. This is faster and feels more natural.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CRb8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CRb8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 424w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 848w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 1272w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CRb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png" width="856" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:856,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49665,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CRb8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 424w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 848w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 1272w, https://substackcdn.com/image/fetch/$s_!CRb8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fe0abc6-b739-4380-8533-be084a5e3687_856x395.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Example speech-to-speech models: <a href="https://platform.openai.com/docs/models/gpt-realtime">GPT Realtime Models</a>, <a href="https://deepmind.google/en/models/gemini/flash/">Gemini Models</a> , </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kp23!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kp23!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 424w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 848w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 1272w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kp23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png" width="1059" height="395" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:395,&quot;width&quot;:1059,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86090,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kp23!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 424w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 848w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 1272w, https://substackcdn.com/image/fetch/$s_!Kp23!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6fd534b3-a41e-4f59-a1e7-ca4f8a626d35_1059x395.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: <a href="https://github.com/pipecat-ai/pipecat?tab=readme-ov-file#-available-services">Popular Models used in Voice Agents</a></figcaption></figure></div><p>Now that you understand how voice agents work, here&#8217;s how to choose the right approach for your project.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V7N1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V7N1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 424w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 848w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 1272w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V7N1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif" width="1104" height="265" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:265,&quot;width&quot;:1104,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:150925,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V7N1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 424w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 848w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 1272w, https://substackcdn.com/image/fetch/$s_!V7N1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4185c433-f1bd-4dbf-a0ea-8bdf0af36a98_1104x265.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>2. Frameworks for Voice Agents</h2><p>As voice agents become more common, new frameworks are coming up to build and launch them faster.</p><p>Like other AI agents, voice agents also have two types of frameworks - code and no code.</p><p>Code frameworks give developers full control. They let you handle speech, logic, and real-time audio in your own way.</p><p>No code frameworks help teams move faster. You can design, test, and launch voice agents with visual tools.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qGgF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qGgF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 424w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 848w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 1272w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qGgF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png" width="883" height="433" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07829268-d873-439a-9353-57618f1060ba_883x433.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:433,&quot;width&quot;:883,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:66842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qGgF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 424w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 848w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 1272w, https://substackcdn.com/image/fetch/$s_!qGgF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07829268-d873-439a-9353-57618f1060ba_883x433.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. Building Voice Agents with code - OpenAI&#8217;s Agent SDK</h2><p>Let us first build a simple voice agent using OpenAI Agent SDK.</p><blockquote><p>This voice agent can search for files on your laptop. You can ask it to find files by name in specific folders like Downloads, Documents, or Desktop. Just speak naturally, and it will search and tell you what it found.</p></blockquote><h4>How it works</h4><p>This voice agent follows a five-step process from input to output.</p><ol><li><p>Sound Device - This Python library captures audio from your microphone.</p></li><li><p>Voice Pipeline - It converts your speech into text using a speech-to-text model.</p></li><li><p>Agent SDK - The agent reads the text, executes the logic, and generates a response.</p></li><li><p>Voice Pipeline - It converts the agent&#8217;s text response back into natural voice audio.</p></li><li><p>Sound Device - The library plays the voice response through your speakers.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gmzd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gmzd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 424w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 848w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 1272w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gmzd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png" width="1154" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/adef3696-6804-436d-ad43-3e9939617256_1154x398.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:1154,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107340,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gmzd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 424w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 848w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 1272w, https://substackcdn.com/image/fetch/$s_!gmzd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadef3696-6804-436d-ad43-3e9939617256_1154x398.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The entire flow happens in real time. You speak, the agent processes, and responds with voice.</p><p>Here is the code</p><h4>1. Install required packages </h4><pre><code>pip install openai-agents[voice] sounddevice scipy </code></pre><h4>2. Setting Up the File Search Tool</h4><pre><code>import asyncio
import os
import sounddevice as sd
from scipy.io import wavfile
from agents import Agent, function_tool
from agents.voice import AudioInput, SingleAgentVoiceWorkflow, VoicePipeline

@function_tool
def search_files(pattern: str, directory: str = &#8220;home&#8221;) -&gt; str:
    &#8220;&#8221;&#8220;Search for files matching a pattern in common directories.&#8221;&#8220;&#8221;
    import glob
    
    BASE_DIR = r&#8221;C:\Users\YourUsername&#8221;  # Change this
    
    # Map common folder names
    folder_map = {
        &#8220;downloads&#8221;: &#8220;Downloads&#8221;, &#8220;documents&#8221;: &#8220;Documents&#8221;,
        &#8220;desktop&#8221;: &#8220;Desktop&#8221;, &#8220;pictures&#8221;: &#8220;Pictures&#8221;, &#8220;home&#8221;: &#8220;&#8221;
    }
    
    # Determine search directory
    dir_lower = directory.lower().strip()
    if dir_lower in folder_map:
        folder_name = folder_map[dir_lower]
        search_dir = os.path.join(BASE_DIR, folder_name) if folder_name else BASE_DIR
    else:
        search_dir = directory
    
    # Search for files
    files = glob.glob(f&#8221;{search_dir}/**/*{pattern}*&#8221;, recursive=True)[:10]
    
    if not files:
        return f&#8221;No files found matching &#8216;{pattern}&#8217;&#8221;
    
    result = f&#8221;Found {len(files)} file(s):\n&#8221;
    for f in files:
        result += f&#8221;- {f}\n&#8221;
    return result</code></pre><h4>3. Creating the Agent with tool access</h4><pre><code>agent = Agent(
    name=&#8221;FileSearchAssistant&#8221;,
    instructions=&#8221;You help users search for files. Be concise.&#8221;,
    model=&#8221;gpt-4.1&#8221;,
    tools=[search_files],
)</code></pre><h4>4. Capturing User Audio</h4><pre><code>def record_audio(duration=8, samplerate=24000):
    &#8220;&#8221;&#8220;Record audio from microphone.&#8221;&#8220;&#8221;
    print(f&#8221;Recording for {duration} seconds... Speak now!&#8221;)
    
    recording = sd.rec(int(duration * samplerate), samplerate=samplerate, 
                      channels=1, dtype=np.int16)
    sd.wait()
    
    wavfile.write(&#8221;user_input.wav&#8221;, samplerate, recording)
    return recording.flatten()</code></pre><h4>5. Processing Audio Through Pipeline</h4><pre><code>async def process_voice():
    # Capture voice
    audio_data = record_audio(duration=8)
    
    # Create pipeline and process
    pipeline = VoicePipeline(workflow=SingleAgentVoiceWorkflow(agent))
    audio_input = AudioInput(buffer=audio_data)
    result = await pipeline.run(audio_input)
    
    return result</code></pre><h4>6. Playing Agent Response</h4><pre><code>async def main():
    print(&#8221;Voice Agent - File Search&#8221;)
    
    # Process voice through pipeline
    result = await process_voice()
    
    # Play response
    print(&#8221;Playing response...&#8221;)
    player = sd.OutputStream(samplerate=24000, channels=1, dtype=np.int16)
    player.start()
    
    output_audio = []
    async for event in result.stream():
        if event.type == &#8220;voice_stream_event_audio&#8221;:
            player.write(event.data)
            output_audio.append(event.data)
    
    player.stop()
    
    # Save output
    if output_audio:
        agent_audio = np.concatenate(output_audio)
        wavfile.write(&#8221;agent_output.wav&#8221;, 24000, agent_audio)
    
    print(&#8221;Done!&#8221;)

if __name__ == &#8220;__main__&#8221;:
    asyncio.run(main())</code></pre><p><strong>To run:</strong></p><pre><code>python voice_agent.py</code></pre><h4>Below is an example conversation</h4><p>I asked: &#8220;Search for MCP text file in the Applications folder&#8221;</p><p>Listen to my voice input</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;90b8e944-4a83-49fb-9000-64797b69429a&quot;,&quot;duration&quot;:5.041633,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><p>The agent searched through my Applications directory and found matching files. </p><p>Listen to agent&#8217;s response</p><div class="native-audio-embed" data-component-name="AudioPlaceholder" data-attrs="{&quot;label&quot;:null,&quot;mediaUploadId&quot;:&quot;9f5c2579-9290-47d1-ba60-4fc38754cfbd&quot;,&quot;duration&quot;:17.29306,&quot;downloadable&quot;:false,&quot;isEditorNode&quot;:true}"></div><h4>Choosing Your Transport Method</h4><p>Latency matters in voice agents. <a href="https://platform.openai.com/docs/guides/realtime-models-prompting#meet-the-models">OpenAI&#8217;s Realtime API</a> offers two low-latency transport methods.</p><h4><strong>1. WebRTC (Client-side)</strong></h4><ul><li><p>Best for browser-based voice agents.</p></li><li><p>Peer-to-peer connection with low latency.</p></li><li><p>Direct audio streaming between user and OpenAI.</p></li></ul><h4><strong>2. WebSocket (Server-side)</strong></h4><ul><li><p>Best for phone call systems.</p></li><li><p>More control over the call flow.</p></li><li><p>Required integrations like Twilio.</p></li></ul><blockquote><p>The <a href="https://openai.github.io/openai-agents-js/">OpenAI Agents SDK</a> automatically picks the right transport. It uses WebRTC in browsers and WebSocket for server-side applications.</p></blockquote><h4>Building a Phone Call Agent</h4><p>For phone calls, you need a telephony service like Twilio. The architecture looks like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!75EK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!75EK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 424w, https://substackcdn.com/image/fetch/$s_!75EK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 848w, https://substackcdn.com/image/fetch/$s_!75EK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 1272w, https://substackcdn.com/image/fetch/$s_!75EK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!75EK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png" width="1131" height="390" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:390,&quot;width&quot;:1131,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:85529,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!75EK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 424w, https://substackcdn.com/image/fetch/$s_!75EK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 848w, https://substackcdn.com/image/fetch/$s_!75EK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 1272w, https://substackcdn.com/image/fetch/$s_!75EK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F615aa6c1-9f87-416b-a850-00580e4ca303_1131x390.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>How it works:</strong></h4><ol><li><p>User calls a Twilio phone number.</p></li><li><p>Twilio connects to WebSocket.</p></li><li><p>WebSocket forwards streaming audio to OpenAI.</p></li><li><p>The Realtime OpenAI API responds back in audio.</p></li><li><p>Audio streams back through the same path.</p></li></ol><p>OpenAI provides a <a href="https://github.com/openai/openai-realtime-twilio-demo">complete demo on GitHub</a> showing how to build a phone call agent with Twilio.</p><h2>4. Building Voice Agent without Code - Vapi.ai</h2><p>Not everyone wants to write code. Sometimes you just need to build the agent fast. That&#8217;s where platforms like <a href="https://www.voiceflow.com/">Voiceflow</a> and <a href="https://vapi.ai/">Vapi</a> comes into the picture.</p><h4>Building with Vapi:</h4><p>Vapi&#8217;s platform is self-explanatory. You can explore on your own. But here&#8217;s what I built as an example.</p><p>I created a voice assistant called &#8220;Abigail&#8221; that checks domain availability. You call the assistant, ask if a domain name is available, and it tells you in real-time. Simple use case to show how Vapi works.</p><h4>1. Create an Assistant</h4><p>I created an assistant called &#8220;Abigail&#8221; and configured the basics like model, voice, and first message.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6grS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6grS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 424w, https://substackcdn.com/image/fetch/$s_!6grS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 848w, https://substackcdn.com/image/fetch/$s_!6grS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 1272w, https://substackcdn.com/image/fetch/$s_!6grS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6grS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png" width="1913" height="922" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:922,&quot;width&quot;:1913,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173553,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15862bb9-fa87-412f-ad0f-3cf97895015c_1913x922.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6grS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 424w, https://substackcdn.com/image/fetch/$s_!6grS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 848w, https://substackcdn.com/image/fetch/$s_!6grS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 1272w, https://substackcdn.com/image/fetch/$s_!6grS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe09f2a07-612c-4452-990a-79e614d23cf2_1913x922.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>2. Add Tools</strong></h4><p>You can add available tools and integrations. Slack, Google Sheets, API calls etc.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BhHD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BhHD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 424w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 848w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 1272w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BhHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png" width="1911" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1911,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173253,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67ffe741-df71-4248-b708-842549d418ed_1911x971.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!BhHD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 424w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 848w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 1272w, https://substackcdn.com/image/fetch/$s_!BhHD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffec614db-b8fb-4893-8ce4-032f8a63416c_1911x971.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I integrated MCP Tool to check domain availability. Tools let your agent take actions during calls. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2kbn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2kbn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 424w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 848w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 1272w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2kbn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png" width="1905" height="921" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:921,&quot;width&quot;:1905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:138549,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F190a9e5a-4b45-496d-b2eb-fe55d84689b8_1905x921.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2kbn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 424w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 848w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 1272w, https://substackcdn.com/image/fetch/$s_!2kbn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9e15f861-60fd-45c5-ba0b-0d56e63d1c3d_1905x921.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>3. Configure Call Settings</strong></h4><p>Vapi supports both inbound and outbound calls. You can configure phone numbers for either direction.</p><p>Inbound - Agent receives calls. Users call a phone number, and your agent answers.</p><p>Outbound - Agent makes calls. The agent dials phone numbers to reach users.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xE16!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xE16!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 424w, https://substackcdn.com/image/fetch/$s_!xE16!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 848w, https://substackcdn.com/image/fetch/$s_!xE16!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 1272w, https://substackcdn.com/image/fetch/$s_!xE16!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xE16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png" width="1910" height="911" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:911,&quot;width&quot;:1910,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:156343,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F51b3e0ea-6ebe-408d-b275-2b1bb6c1787f_1910x911.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xE16!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 424w, https://substackcdn.com/image/fetch/$s_!xE16!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 848w, https://substackcdn.com/image/fetch/$s_!xE16!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 1272w, https://substackcdn.com/image/fetch/$s_!xE16!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a2478c5-8616-48cf-b00e-fe1a4171bede_1910x911.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>4. Test and Publish your Voice Assistant</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mTL9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mTL9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 424w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 848w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 1272w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mTL9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png" width="1206" height="191" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:191,&quot;width&quot;:1206,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27375,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mTL9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 424w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 848w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 1272w, https://substackcdn.com/image/fetch/$s_!mTL9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94b80031-de85-479c-b7af-67d64c56baf0_1206x191.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I tested it with a call. Here&#8217;s the transcript.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-aZE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-aZE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 424w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 848w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 1272w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-aZE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png" width="1240" height="868" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:868,&quot;width&quot;:1240,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:114837,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-aZE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 424w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 848w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 1272w, https://substackcdn.com/image/fetch/$s_!-aZE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c30830f-3648-4a1e-b80c-796a084a52b6_1240x868.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can connect Vapi with n8n agentic workflow. We&#8217;ll save that topic for next blog. If you want to see how it works now, check out this video that walks through the <a href="https://vapi.ai/library/how-to-connect-vapi-to-n8n-ai-agents-in-9-minutes">vapi and n8n setup</a>.</p><h2>Building with Voiceflow: FAQ Agent </h2><p><a href="https://www.voiceflow.com/">Voiceflow</a> is another no-code platform for voice agents. It&#8217;s drag, drop, and configure.</p><p>I built an FAQ agent called &#8220;Ellie&#8221; for Dr. Jones Clinic. The agent answers common questions about consultation hours, appointments, insurance, and services.</p><h4><strong>1. Create the Agent</strong></h4><p>I started with a new agent and named it &#8220;Ellie - The FAQ Agent.&#8221;</p><p>I did set up a greeting message.  The Start block connects to the Agent block. That&#8217;s the basic flow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AQ1w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AQ1w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 424w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 848w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 1272w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AQ1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png" width="1026" height="428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:428,&quot;width&quot;:1026,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64071,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AQ1w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 424w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 848w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 1272w, https://substackcdn.com/image/fetch/$s_!AQ1w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff165d03e-4f96-4b3c-9cfe-7d114077fc76_1026x428.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>2. Add Knowledge Base</strong></h4><p>I went to the Knowledge Base section and created a data source called &#8220;Appointment &amp; Scheduling.&#8221; Added FAQs as text content.</p><p>The &#8220;Ellie - The FAQ Agent&#8221; can now read this knowledge base and respond to user&#8217;s questions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hsyd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hsyd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 424w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 848w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 1272w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hsyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png" width="1456" height="708" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:708,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119527,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hsyd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 424w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 848w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 1272w, https://substackcdn.com/image/fetch/$s_!hsyd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F246a69cb-b5e0-4eef-bfc7-3035c0edce3a_1899x924.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>3. Connect a Phone Number</strong></h4><p>I went to Interfaces &gt; Telephony &gt; Phone numbers </p><p>I added a Twilio number. Now the agent can receive calls.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GnEG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GnEG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 424w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 848w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 1272w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GnEG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png" width="1456" height="393" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:393,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46367,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GnEG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 424w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 848w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 1272w, https://substackcdn.com/image/fetch/$s_!GnEG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ddfa808-367e-48e3-b579-868fdefce6b8_1571x424.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>4. Test and Publish</strong></h4><p>I talked to Ellie. Asked about insurance services. She answered using the knowledge base. Here is the transcript.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5kwd!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5kwd!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 424w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 848w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 1272w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5kwd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png" width="1456" height="669" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:669,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:217493,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/178455948?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5kwd!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 424w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 848w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 1272w, https://substackcdn.com/image/fetch/$s_!5kwd!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff18c01af-fce3-4dcb-a136-ad966057d74a_1827x839.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Other platforms like <a href="https://www.retellai.com/">Retell AI</a> and <a href="https://synthflow.ai/">Synthflow</a> offer similar capabilities. The setup is mostly the same - configure, connect, and deploy.</p><h4>Here&#8217;s a customer support agent I built in Retell AI</h4><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;dafddc53-351e-448c-9f77-7b6f38cdb0c2&quot;,&quot;duration&quot;:null}"></div><h2>5. Further Reading: TTS, STT, and Speech-to-Speech Models and APIs</h2><p>Building voice agents means choosing the right models. Here are resources to explore.</p><h4><strong>Speech-to-Speech Models:</strong></h4><ul><li><p><a href="https://artificialanalysis.ai/models/speech-to-speech#bigBenchAudio">Speech to Speech Model Comparison</a> </p></li><li><p><a href="https://www.tavus.io/post/speech-to-speech">8 Best Speech to Speech APIs</a> </p></li></ul><h4><strong>Speech-to-Text (STT):</strong></h4><ul><li><p><a href="https://modal.com/blog/open-source-stt">Opensource Speech to Text Models</a> </p></li><li><p><a href="https://www.telusdigital.com/insights/data-and-ai/article/10-speech-to-text-models-tested">Ten Speech to Text Models Tested</a></p></li><li><p><a href="https://deepgram.com/learn/best-speech-to-text-apis">Speech to Text APIs</a></p></li></ul><h4><strong>Text-to-Speech (TTS):</strong></h4><ul><li><p><a href="https://tts-agi-tts-arena-v2.hf.space/leaderboard">TTS Leaderboard on Hugging Face</a> </p></li><li><p><a href="https://modal.com/blog/open-source-tts">Open-Source Text to Speech Models</a> </p></li><li><p><a href="https://huggingface.co/models?pipeline_tag=text-to-speech">Hugging Face Text to Speech Models</a></p></li></ul><p>These links will help you pick the right models for your voice agent. Compare costs, latency, accuracy, and pick what works for you.</p><h2>Conclusion</h2><p>We covered two ways of building voice agents.</p><ul><li><p>Code frameworks like OpenAI SDK, </p></li><li><p>No-code platforms like Vapi, Voiceflow</p></li></ul><p>Code gives you control. No-code gives you speed. Pick what fits for you.     </p><p>Start small. Build one voice agent. Test it and see what works.                                  </p><p>Voice AI is here. The tools are ready. Now it&#8217;s your turn to build one.</p><p>Happy Building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-build-voice-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-build-voice-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-build-voice-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to Prepare Agentic Apps for Production]]></title><description><![CDATA[Getting your agentic apps ready for real users]]></description><link>https://www.devshorts.in/p/how-to-prepare-agentic-apps-for-production</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-prepare-agentic-apps-for-production</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 05 Nov 2025 15:45:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!cr9C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I attended an AI conference where teams from big companies shared how they moved their agentic apps to production. The talks were full of real lessons from people who&#8217;ve built and deployed agentic systems in production.</p><p>When you build an agent, the demo usually looks smooth. But once you run it in production, new challenges appear around safety, memory, recovery, and control.</p><p>The conference focused on what we need to consider before moving agentic apps to production. Below are the five areas that were discussed the most. That&#8217;s exactly what we&#8217;ll cover in this blog.</p><ol><li><p>Guardrails</p></li><li><p>Memory Management</p></li><li><p>Error Handling and Recovery</p></li><li><p>Human in the Loop</p></li><li><p>Observability and Monitoring</p></li></ol><p>If you are moving your agentic app to production, make sure you can confidently say yes to these questions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cr9C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cr9C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 424w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 848w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 1272w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cr9C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png" width="1096" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:1096,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:250294,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cr9C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 424w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 848w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 1272w, https://substackcdn.com/image/fetch/$s_!cr9C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe568706e-e21f-49b3-b02d-7f874be81d19_1096x438.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>1. Guardrails</strong></h2><p>If you ask an AI chatbot for something harmful, it will refuse. That is a guardrail which keeps the system safe, ethical, and within limits.</p><p>Guardrails act as a shield for agentic apps. They protect the agent from bad inputs and make sure it responds in the right way. In simple terms it defines the boundaries for an agent&#8217;s behavior. They keep it safe, prevent unwanted actions, and ensure it only operates within its intended scope.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FIP4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FIP4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 424w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 848w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 1272w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FIP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png" width="1098" height="543" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/db1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:543,&quot;width&quot;:1098,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:104278,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FIP4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 424w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 848w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 1272w, https://substackcdn.com/image/fetch/$s_!FIP4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdb1a37f5-1933-4145-8e07-71405bc5ce42_1098x543.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Why Guardrails</h4><p>In real-world setups, guardrails don&#8217;t stop at inputs and outputs. They extend across multiple layers to control how agents act, decide, and interact with tools or users. Each layer adds safety and stability to the system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iRwe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iRwe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 424w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 848w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 1272w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iRwe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png" width="1181" height="577" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44bca211-28df-40f6-850a-7b7fde836292_1181x577.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:1181,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195303,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iRwe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 424w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 848w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 1272w, https://substackcdn.com/image/fetch/$s_!iRwe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44bca211-28df-40f6-850a-7b7fde836292_1181x577.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Tools and Frameworks for Guardrails</h4><p>There are two main ways to add guardrails when taking an agentic system to production.</p><p>You can use the built-in guardrails that come with your agent framework or integrate separate libraries for more control and compliance.</p><p>Frameworks like LangGraph and OpenAI Agent SDK already include basic checks such as input moderation, safe tool access, and retry logic. For most apps, these are enough.</p><p>If you need deeper validation, you can plug in external toolkits built for strong control.</p><ul><li><p><a href="https://github.com/guardrails-ai/guardrails">Guardrails AI</a> is a Python framework. It helps build reliable and safe AI applications. It works by adding input and output &#8220;guards&#8221; around your LLM calls. These guards detect and reduce different types of risks in real time, such as toxic language, personal data leaks or exposed secrets.</p></li><li><p><a href="https://docs.nvidia.com/nemo/guardrails/latest/index.html">NVIDIA NeMo Guardrails</a> is an open-source toolkit by NVIDIA. It lets you add programmable guardrails to your AI Apps. It works by layering &#8220;rails&#8221; between your application logic and the LLM.  It controls how the model behaves, what it says, and what actions it takes.</p></li><li><p><a href="https://github.com/microsoft/presidio">Microsoft Presidio</a> is an open-source framework. It focuses on detecting and redacting personal or sensitive data (PII) in text and images. It has options for connecting to external PII detection models.</p></li><li><p><a href="https://docs.langchain.com/oss/javascript/langchain/guardrails">Langchain Guardrails</a> provide built in guardrails. They can detect sensitive information, enforce policies, validate outputs, and prevent unsafe behaviors before they cause problems.</p></li><li><p><a href="https://openai.github.io/openai-agents-python/guardrails">OpenAI Agents SDK</a> includes built-in guardrails for both inputs and outputs. These run alongside your agents to validate and enforce safe behavior in agentic apps.</p></li><li><p><a href="https://guardrails.openai.com/">OpenAI Guardrails</a> is a ready-to-use toolkit for adding safety and compliance checks to your LLM apps. You can select prebuilt guardrails such as Mask PII, Moderation API, or Jailbreak Detection directly from the dashboard, export them as a JSON config file, and use them in your application.</p></li></ul><p>You can also build your own guardrails for your app. Think of them as simple toolkits that protect your agentic system and keep it under control.</p><h2><strong>2. Memory Management</strong></h2><p>When you chat with ChatGPT, it remembers what you said earlier. That is what memory does. It helps the system stay consistent and feel more human.</p><p>Memory helps the agent retain context, recall past steps so it can respond properly. </p><p>An agent without memory starts from zero every time. With memory, it remembers what happened, adapts to the user, and gets smarter with every run.</p><p><a href="https://redis.io/blog/build-smarter-ai-agents-manage-short-term-and-long-term-memory-with-redis/">The Redis blog</a> explains this well. Here&#8217;s how short-term and long-term memory connect with the agent, tools, and LLM.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZPoa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZPoa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 424w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 848w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZPoa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png" width="1456" height="728" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:728,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Image&quot;,&quot;title&quot;:&quot;Image&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Image" title="Image" srcset="https://substackcdn.com/image/fetch/$s_!ZPoa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 424w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 848w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 1272w, https://substackcdn.com/image/fetch/$s_!ZPoa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F093bfbb3-db4b-4632-acb5-5e62d7170188_3840x1920.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: - <a href="https://redis.io/blog/build-smarter-ai-agents-manage-short-term-and-long-term-memory-with-redis/">Agent Memory - Redis</a></figcaption></figure></div><h4><strong>Types of Memory</strong></h4><p>Agents work with two types of memory.</p><ul><li><p>Short-term memory &#8211; Keeps track of recent steps or the current task.</p></li><li><p>Long-term memory &#8211; Holds information that should last beyond a single run. This could be user details, preferences, or past interactions.</p></li></ul><p>Different frameworks handle memory in their own ways.</p><p>In LangGraph, every message is saved in the state variable as an AIMessage or HumanMessage. This helps the agent maintain context during the current session. When the agent restarts, it starts fresh. That&#8217;s short-term memory.</p><p>To make it remember across sessions, you need long-term memory. Here, past messages or summaries are stored externally, usually in a vector database or memory store. This allows the agent to retrieve relevant context from older sessions when needed.</p><p><a href="https://www.youtube.com/watch?v=JTL0yp85FsE">The LangChain video</a> explains this Agent memory well. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LPNR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LPNR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 424w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 848w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 1272w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LPNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png" width="861" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:861,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:226067,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb05c7bb3-c0fb-47be-bb3c-29018b59040f_861x540.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LPNR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 424w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 848w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 1272w, https://substackcdn.com/image/fetch/$s_!LPNR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F75c8e1bb-49f6-4bd8-9419-f3f7c2386a07_861x496.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Source: - <a href="https://www.youtube.com/watch?v=JTL0yp85FsE">Langchain&#8217;s Short and Long Memory</a></figcaption></figure></div><h4><strong>Why Memory Matters</strong></h4><ul><li><p>Most LLMs are stateless. They don&#8217;t remember what happened earlier unless we tell them. In real-world apps, that&#8217;s not enough.</p></li><li><p>Agents need memory to recall user preferences, track progress, and carry context across steps. Without it, they repeat questions and lose continuity.</p></li></ul><ul><li><p>Without good memory design, too much context slows down responses, increases cost, and can even confuse the model.</p></li></ul><h4><strong>Tools and Frameworks for Memory</strong></h4><p>When you&#8217;re building agentic apps, you don&#8217;t have to invent your memory layer from scratch. There are tools and frameworks ready for use.</p><ul><li><p><a href="https://mem0.ai/">Mem0:</a> A self-improving memory layer for AI agents that stores user preferences and past sessions. It supports short- and long-term memory.</p></li><li><p><a href="https://help.getzep.com/graphiti">Graphiti:</a> An open-source Python framework for building temporally aware knowledge graphs for agents. It captures relationships over time, enabling agents to reason beyond vector store.</p></li><li><p><a href="https://github.com/getzep/zep">Zep</a>: Zep is a memory platform for AI agents. It learns from user interactions. It builds a time-based knowledge graph that helps agents give accurate and personalized answers. Over time, it keeps learning and improving user experience. It is powered by Graphiti.</p></li></ul><h2><strong>3. Error Handling and Recovery</strong></h2><p>When you run agentic apps in production, things will break. A tool call might fail, an API might timeout, or the model might return something you didn&#8217;t expect. Error handling and recovery is about catching those issues, dealing with them properly, and keeping the agent running safely.</p><h4><strong>Why It Matters</strong></h4><p>Agentic apps rarely fail because of big bugs. They fail because of the small things like a bad response, or a tool call that never returns. One silent error can stop the whole workflow. Without a plan, the agent either crashes or keeps looping endlessly trying to fix itself.</p><p>Good error handling makes your agent resilient. It helps the agent fail safely and continue from where it left off.</p><h4><strong>How to Handle Errors in Production</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yAF0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yAF0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 424w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 848w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 1272w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yAF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png" width="980" height="610" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:980,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:192221,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yAF0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 424w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 848w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 1272w, https://substackcdn.com/image/fetch/$s_!yAF0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58a81bf2-6c01-4814-9f74-629e9058ff55_980x610.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p>Retry and fallback - Add retry logic for every tool or API call and have a fallback plan when retries fail.</p></li><li><p>Save progress - Use checkpoints to save the agent&#8217;s state so it can resume after failure.</p></li><li><p>Validate outputs - Always check if the model&#8217;s response or tool output is valid before using it.</p></li><li><p>Add a human step when needed - Some errors need manual review. Don&#8217;t let the agent keep guessing.</p></li><li><p>Log and monitor failures - Track the errors. This helps you fix recurring issues early.</p></li></ul><h2><strong>4. Human in the Loop (HITL)</strong></h2><p>Human in the Loop (HITL) adds a human step inside the agent&#8217;s workflow. The agent pauses, waits for human input or approval, and then continues. It keeps humans involved at key moments and lets them guide the agent when needed.</p><h4><strong>Why It Matters</strong></h4><p>Agents can automate a lot, but not everything should run on autopilot. When a task involves compliance, sensitive data, or critical actions, a human check adds safety. It keeps the system reliable. </p><h4><strong>How to Add HITL in Production</strong></h4><p>Many frameworks support adding human-in-the-loop steps directly into your workflows.</p><ol><li><p>You can add a <a href="https://docs.langchain.com/oss/python/langgraph/interrupts">LangGraph Human in the Loop</a> step using the <code>interrupt()</code> function inside a node. The agent stops, waits for feedback, and then continues from the same point. This is useful when the agent needs human confirmation before taking an action.</p></li><li><p><a href="https://docs.crewai.com/en/learn/human-input-on-execution">CrewAI supports human-input tasks</a> within the workflow. You can enable this by setting <code>human_input=True</code> in the task configuration. When the agent reaches that task, it pauses, collects feedback, and moves forward with the updated response.</p></li><li><p><a href="https://openai.github.io/openai-agents-js/guides/human-in-the-loop">In OpenAI&#8217;s Agents SDK, you can mark certain actions for approval</a> using <code>needsApproval=True</code>. The agent pauses at those steps until the user reviews and confirms, keeping humans involved in key decisions.</p></li><li><p><a href="https://google.github.io/adk-docs/agents/multi-agents/#human-in-the-loop-pattern">Google&#8217;s ADK supports a human-in-the-Loop pattern</a>. You can create a small review agent that asks for user confirmation before the main agent continues. This keeps humans in control of important decisions.</p></li></ol><h2>5. Observability and Monitoring</h2><p>Almost every team at the conference talked about this part. No matter how advanced their setup was, observability came up again and again.</p><p>Observability shows how your agent really works, not just what it outputs. It helps you follow every step the model takes, from the first prompt to the final response. </p><p>In real-world agentic systems where many tools, memory calls, and APIs run together, observability becomes essential. It helps you spot failures early, understand the cause, and measure how each part performs.</p><h4><strong>Langfuse for Observability and Monitoring</strong></h4><p><a href="https://langfuse.com/">Langfuse</a> is an open-source observability tool built for LLM and agentic applications. It records each step in the workflow and shows a full trace of what happened. You can see how prompts evolved, which tools were called, what data was fetched, and how long each step took.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sYUt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sYUt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 424w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 848w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 1272w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sYUt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png" width="983" height="753" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ebc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:753,&quot;width&quot;:983,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:380122,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sYUt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 424w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 848w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 1272w, https://substackcdn.com/image/fetch/$s_!sYUt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Febc0128d-e954-4467-b4e9-8618d5b7775e_983x753.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I integrated Langfuse into one of my agentic apps to see what kind of traces it captures and how deep the visibility goes.</p><p>I was able to capture all traces and observations from the app in one place. I could see the total traces, token usage, and model cost for my app at a glance.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5-5E!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5-5E!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 424w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 848w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 1272w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5-5E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80248,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5-5E!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 424w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 848w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 1272w, https://substackcdn.com/image/fetch/$s_!5-5E!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F58607d7f-c98c-42ce-afdd-4cd256c69abf_1644x860.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This view gave me a full snapshot of each run - inputs, outputs, and all the metadata in between. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gyqX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gyqX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 424w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 848w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 1272w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gyqX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png" width="1456" height="688" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:688,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157935,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!gyqX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 424w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 848w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 1272w, https://substackcdn.com/image/fetch/$s_!gyqX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaa76a14-542e-4a40-b2da-b55b57031353_1654x781.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When I opened a single trace, I could see the full flow, how the user&#8217;s input moved through each tool and LLM call, step by step. Both preview and raw JSON views made it clear what data was being passed across the system.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!shFY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!shFY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 424w, https://substackcdn.com/image/fetch/$s_!shFY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 848w, https://substackcdn.com/image/fetch/$s_!shFY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 1272w, https://substackcdn.com/image/fetch/$s_!shFY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!shFY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png" width="1145" height="925" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:925,&quot;width&quot;:1145,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:123744,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!shFY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 424w, https://substackcdn.com/image/fetch/$s_!shFY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 848w, https://substackcdn.com/image/fetch/$s_!shFY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 1272w, https://substackcdn.com/image/fetch/$s_!shFY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb90f446-7f89-4f15-b274-7b5423d3d7c6_1145x925.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It also captured detailed tool-level metrics. Langfuse showed which tools were triggered, how long they took, and how much each call cost. It&#8217;s a simple way to track efficiency and debug issues without digging through logs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TO4N!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TO4N!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 424w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 848w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 1272w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TO4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png" width="1142" height="471" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:471,&quot;width&quot;:1142,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73768,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177480321?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TO4N!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 424w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 848w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 1272w, https://substackcdn.com/image/fetch/$s_!TO4N!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0692c7d-7c55-4c57-b50c-747661471fce_1142x471.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conclusion</h2><p>Taking agentic apps to production needs more than just good prompts or models. </p><p>They need safety, memory, recovery, human checks, and visibility.</p><ul><li><p>Guardrails keep your agents safe.</p></li><li><p>Memory helps them stay consistent.</p></li><li><p>Error handling makes them reliable.</p></li><li><p>Human-in-the-loop brings control.</p></li><li><p>Observability shows how everything works together.</p></li></ul><p>Build, test, observe, and refine. That&#8217;s how good agents become production ready.</p><p>Hope you find this blog useful!</p><p>Happy Building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-prepare-agentic-apps-for-production?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-prepare-agentic-apps-for-production?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-prepare-agentic-apps-for-production?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[OpenAI AgentKit : How to build AI Agents in Minutes]]></title><description><![CDATA[A step-by-step guide to building AI agents using AgentKit]]></description><link>https://www.devshorts.in/p/openai-agentkit-how-to-build-ai-agents</link><guid isPermaLink="false">https://www.devshorts.in/p/openai-agentkit-how-to-build-ai-agents</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 29 Oct 2025 15:40:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/01dce72a-442b-4b4f-8ce3-b8ef36a7a0aa_1277x683.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI agents are becoming more popular. Sooner or later every web application will have an agent running inside.</p><p>As a result, many new agent frameworks are appearing. Some frameworks are code-based. You write code to build agents. <a href="https://www.langchain.com/langgraph">LangGraph</a>, <a href="https://www.crewai.com/">CrewAI</a>, <a href="https://github.com/microsoft/autogen">AutoGen</a> are some of the code-based frameworks.</p><p>Some are no-code frameworks. These let you drag and drop components to create agentic workflows. Frameworks like <a href="https://n8n.io/">n8n</a> and <a href="https://www.langflow.org/">LangFlow</a> work this way.</p><p>OpenAI recently released one of these no-code frameworks at their Dev Day 2025. It&#8217;s called <a href="https://openai.com/index/introducing-agentkit/">AgentKit</a>.</p><p>In this blog we will explore AgentKit and build a real agent with it. We will cover,</p><ol><li><p>Agent Frameworks </p></li><li><p>Code vs No-Code Frameworks</p></li><li><p>What is Agent Kit</p></li><li><p>How to build an agent using AgentKit</p></li><li><p>Choosing the Right Agent Framework</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2><strong>1. Agent Frameworks</strong></h2><p>Agent frameworks help us build AI agents faster by providing useful tools and services.</p><p>Agent frameworks fall into two categories. </p><p>Code based frameworks give us packages and libraries to build agents directly in code. They offer full control and deep customization. They require more time to learn and build with, but they can handle complex logic.</p><p>No code frameworks provide visual tools where we drag and drop blocks to create the workflow. They are faster to begin with, and we can build agents in minutes. They offer less control for advanced logic, but they are great for quick automation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BgyO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BgyO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 424w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 848w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 1272w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BgyO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png" width="1034" height="442" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:442,&quot;width&quot;:1034,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88586,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c5f5db7-0203-488c-84c8-b441baebdaa7_1103x565.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BgyO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 424w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 848w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 1272w, https://substackcdn.com/image/fetch/$s_!BgyO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4192fa00-3c0e-4646-9299-1bbff28e5bcb_1034x442.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. Code vs No-Code Frameworks</h2><p>Each approach has its own strengths. The table below breaks down how they compare across setup time, control level, deployment, and more.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tP9z!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tP9z!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 424w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 848w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 1272w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tP9z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png" width="660" height="580" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:580,&quot;width&quot;:660,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:70398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F221359b0-14db-427e-8f3e-cf50526aa590_660x726.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tP9z!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 424w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 848w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 1272w, https://substackcdn.com/image/fetch/$s_!tP9z!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88a73d7f-ff24-48e6-b59b-34c49d78e0ac_660x580.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. What is Agent Kit</h2><p>AgentKit is one of the no code frameworks. AgentKit comes with four main components. </p><ul><li><p><a href="https://platform.openai.com/agent-builder">Agent Builder</a></p></li><li><p><a href="https://platform.openai.com/docs/guides/chatkit">ChatKit</a></p></li><li><p>Connector Registry</p></li><li><p><a href="https://platform.openai.com/docs/guides/trace-grading">Evals for Agents</a></p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!asja!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!asja!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 424w, https://substackcdn.com/image/fetch/$s_!asja!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 848w, https://substackcdn.com/image/fetch/$s_!asja!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 1272w, https://substackcdn.com/image/fetch/$s_!asja!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!asja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png" width="812" height="318" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:318,&quot;width&quot;:812,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:62828,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F37269dee-5a7a-4515-99ec-9f038f533e89_924x429.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!asja!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 424w, https://substackcdn.com/image/fetch/$s_!asja!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 848w, https://substackcdn.com/image/fetch/$s_!asja!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 1272w, https://substackcdn.com/image/fetch/$s_!asja!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff230c19e-6413-4ea4-a09e-1798d181b5d7_812x318.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Agent Builder: </h4><p>It is a visual canvas. You can drag and drop nodes to build your agent. No coding needed for workflows. You can also export the workflow as code if you want to customize it later.</p><h4>ChatKit:</h4><p>It is an embeddable chat interface. Instead of building your own chat UI, you can use ChatKit to test the agentic workflow.</p><h4>Connector Registry:</h4><p>Connector Registry consists of tools you can connect with agents. There are some built-in tools like Google Drive, Dropbox, and SharePoint.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kUN1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kUN1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 424w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 848w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 1272w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kUN1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png" width="1269" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:169893,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kUN1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 424w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 848w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 1272w, https://substackcdn.com/image/fetch/$s_!kUN1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F63b69122-8ff4-4350-bfe1-5af88f55c2a5_1269x601.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If a tool is not available in the registry, you can connect it through <a href="https://github.com/modelcontextprotocol/servers">MCP (Model Context Protocol) servers</a>.</p><h4>Evals for Agents:</h4><p>It is used to evaluate Agent Performance across many examples. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7tL1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7tL1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 424w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 848w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 1272w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7tL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png" width="1456" height="362" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:362,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:90510,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7tL1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 424w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 848w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 1272w, https://substackcdn.com/image/fetch/$s_!7tL1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F83ea2c57-a0d9-4312-9e7f-d16629ca19b6_1856x462.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>4. How to build an agent using AgentKit</h2><p>Let us build a simple agent using AgentKit. The agent reads a GitHub repo and deploys it to Render, Vercel, or Railway based on what the user asks.</p><p>Here are the steps to build it,</p><h4>Step 1: Create the Workflow in the Agent Builder</h4><p>Open <a href="https://platform.openai.com/agent-builder">Agent Builder</a> and create a new workflow. You get a blank canvas with visual nodes. Drag and drop to start shaping the decision flow.</p><h4>Step 2: Add the Deployment Classifier Agent</h4><p>The workflow starts with a Start node. Add an Agent node next to it and name it Deployment Classifier Agent. This agent reads the user input and classifies the deployment target. It returns a JSON with two fields, the GitHub repo and the target platform. Here is the configuration.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-sGr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-sGr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 424w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 848w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 1272w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-sGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png" width="434" height="658" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aae4454-9751-4247-98f2-22630b498a55_434x658.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:658,&quot;width&quot;:434,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65748,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-sGr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 424w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 848w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 1272w, https://substackcdn.com/image/fetch/$s_!-sGr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aae4454-9751-4247-98f2-22630b498a55_434x658.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Below is my response schema</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D7DZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D7DZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 424w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 848w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 1272w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D7DZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png" width="926" height="494" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:494,&quot;width&quot;:926,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52416,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D7DZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 424w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 848w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 1272w, https://substackcdn.com/image/fetch/$s_!D7DZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6a1a9880-fbf9-4578-88e6-a3b8f75acb23_926x494.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is a sample output from the Deployment Classifier Agent when the user says &#8220;deploy this github repo in render&#8221;.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AYgv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AYgv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 424w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 848w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 1272w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AYgv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png" width="473" height="139" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:139,&quot;width&quot;:473,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8710,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50210d96-e796-4c11-872c-df45ac38251c_473x139.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!AYgv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 424w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 848w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 1272w, https://substackcdn.com/image/fetch/$s_!AYgv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe664885c-344d-4cfd-a7ce-a40db6b95f19_473x139.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can also add guardrails in the workflow. AgentKit supports PII checks, moderation, jailbreak detection, and hallucination filtering. </p><h4>Step 3: Add an If / else Node for Decision Making</h4><p>Now add an If / else node after the Deployment Classifier Agent. This node checks the output from the classifier. Based on the classification value, it sends the flow to the correct deployment agent.</p><p>If the classification value from the classifier agent is,</p><ul><li><p>vercel_deployment &#8594; Connect to Vercel Deployment Agent</p></li><li><p>render_deployment  &#8594; Connect to Render Deployment Agent</p></li><li><p>railway_deployment&#8594; Connect to Railway Deployment Agent</p></li><li><p>None of the above &#8594; Connect to Fallback Deployment Agent</p></li></ul><p>This creates a clean decision tree where every path leads to a specific action.</p><p>Below is how the If / else node is configured and connected.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ZR5U!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ZR5U!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 424w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 848w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 1272w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ZR5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png" width="1456" height="598" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:598,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:173233,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ZR5U!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 424w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 848w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 1272w, https://substackcdn.com/image/fetch/$s_!ZR5U!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb09b5633-fba1-4845-aa0d-64ef24774170_1912x785.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 4: Configure Each Deployment Agent</h4><p>After the If / else node, create separate agents for every case and connect them to the correct branch. </p><p>Each deployment agent has its own MCP server connection. We also use the GitHub MCP server to read project files.</p><ul><li><p>Vercel Deployment Agent connects to the <a href="https://vercel.com/docs/mcp/vercel-mcp">Vercel MCP server</a> to create deployments.</p></li><li><p>Railway Deployment Agent connects to the <a href="https://docs.railway.com/reference/mcp-server">Railway MCP server</a> to trigger deployments in Railway.</p></li><li><p>Render Deployment Agent connects to the <a href="https://render.com/docs/mcp-server">Render MCP server</a> to deploy applications.</p></li><li><p>Fallback Deployment Agent responds when the platform is missing or not supported and guides the user with valid options.</p></li></ul><p>Here is the sample configuration for the Render Deployment Agent. Remember to add detailed instructions for every agent to perform tasks. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WSOT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WSOT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 424w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 848w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 1272w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WSOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png" width="444" height="725" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:725,&quot;width&quot;:444,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:57138,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WSOT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 424w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 848w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 1272w, https://substackcdn.com/image/fetch/$s_!WSOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff6a8fc00-3c9e-4542-9bf7-bc6403f24382_444x725.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once the workflow is ready, we can test it using the built in chat interface. Click Preview and send a real input to see how the agent responds. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-_hw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-_hw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 424w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 848w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 1272w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-_hw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png" width="1456" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119976,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!-_hw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 424w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 848w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 1272w, https://substackcdn.com/image/fetch/$s_!-_hw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F802ee1b4-390b-48e2-b5d6-a7c4fd5d519d_1913x790.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Below you can see a test in action using ChatKit.</p><h4>Step 5: Test and Deploy</h4><p>Now test the workflow using a real repo. </p><blockquote><p>I asked the agent to deploy a repo to Render.</p></blockquote><p>The Deployment Classifier Agent identified it as a Render deployment. Then the If / Else node routed the flow to the Render Deployment Agent. The Render agent read the project files through the GitHub MCP server. It asked the required questions and deployed the app using the Render MCP server.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;98a36b00-f717-49e4-a1bb-37146907845c&quot;,&quot;duration&quot;:null}"></div><p>I also built a Code Roaster Agent to test more features. It checks a GitHub repo, finds code smells, and gives a fun roast with quick fix ideas.</p><p>Here is the workflow. The Repo Analyser Agent detects code issues and the If Else node routes it to the correct roast agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!slkt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!slkt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 424w, https://substackcdn.com/image/fetch/$s_!slkt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 848w, https://substackcdn.com/image/fetch/$s_!slkt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 1272w, https://substackcdn.com/image/fetch/$s_!slkt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!slkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png" width="1356" height="696" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:696,&quot;width&quot;:1356,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:107765,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!slkt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 424w, https://substackcdn.com/image/fetch/$s_!slkt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 848w, https://substackcdn.com/image/fetch/$s_!slkt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 1272w, https://substackcdn.com/image/fetch/$s_!slkt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d74c080-bf5b-44c7-b320-365fcf642de9_1356x696.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When I tested it with a small clear script, it actually complimented me for clean code. Looks like the clean code compliment agent has done its duty.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qz2A!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qz2A!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 424w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 848w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 1272w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qz2A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png" width="580" height="545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:580,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:93067,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/177235013?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2ef1596-adaa-4396-8c8c-20ee230531cd_731x652.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Qz2A!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 424w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 848w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 1272w, https://substackcdn.com/image/fetch/$s_!Qz2A!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f19fda1-c42c-4b7c-82a1-695378511d6e_580x545.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>That is how we build agents in AgentKit. Simple and fast. Now let us compare code based and no code frameworks.</p><h2>5. Choosing the Right Agent Framework</h2><ul><li><p>Choose LangGraph when you want complex multi agent workflows with full control and state handling.</p></li><li><p>Choose AutoGen when you need flexible research style agents that work together and improve with feedback.</p></li><li><p>Choose CrewAI when you build production systems with defined roles and task delegation across teams.</p></li><li><p>Choose AgentKit when you want fast visual workflows and easy tool integration inside your application.</p></li><li><p>Choose n8n when business automation and many ready connectors are your main focus.</p></li><li><p>Choose LangFlow when you want to visually prototype agent flows and test ideas quickly.</p></li></ul><h2>Conclusion</h2><p>We started with agent frameworks and understood code based and no code approaches. We explored AgentKit and built a working agent step by step, so you now know how to use it. </p><p>Pick a real problem and try it yourself, this is the right time to ship your first agent.</p><p>Happy Building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/openai-agentkit-how-to-build-ai-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/openai-agentkit-how-to-build-ai-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/openai-agentkit-how-to-build-ai-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[CLI Agents Explained: How to Choose the Right One]]></title><description><![CDATA[All about CLI Agents]]></description><link>https://www.devshorts.in/p/cli-agents-explained-how-to-choose</link><guid isPermaLink="false">https://www.devshorts.in/p/cli-agents-explained-how-to-choose</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 22 Oct 2025 14:36:29 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!OR3F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Developers always like the command line. </p><p>There&#8217;s just something about typing on a black screen. It feels more real and comfortable. Maybe that&#8217;s why dark mode is everywhere, from docs to IDEs. </p><p>Since developers spend most of their time in the terminal, it makes sense that AI agents are coming there too.</p><p>CLI Agents are growing fast. They help with coding, reviews, and all code related tasks, right inside the terminal.</p><p>In this blog, I will cover,</p><ol><li><p>What are CLI Agents</p></li><li><p>Popular CLI Coding Agents</p></li><li><p>How CLI Coding Agents work </p></li><li><p>A closer look at Claude Code</p></li><li><p>An overall comparison of CLI agents</p></li><li><p>How to choose your CLI Agent</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div></li></ol><h2>1. What are CLI Agents</h2><p>CLI agents are AI tools that run in the terminal. Most of them are coding agents. They understand your codebase, write code, fix bugs with natural language prompts. These tools run as shell commands. </p><p>Terminal AI agents interact with your codebase through an LLM.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R6qa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R6qa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 424w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 848w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 1272w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R6qa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif" width="978" height="184" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:184,&quot;width&quot;:978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95142,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R6qa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 424w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 848w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 1272w, https://substackcdn.com/image/fetch/$s_!R6qa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F511f7495-df38-449d-a0ad-ef0d5dca3e52_978x184.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>2. Popular CLI Coding Agents</h2><p>There are several CLI agents out there. Each one works differently.</p><p>The three leading AI providers have their own CLI agents.</p><ul><li><p><a href="https://github.com/openai/codex">Codex CLI from OpenAI</a></p></li><li><p><a href="https://github.com/anthropics/claude-code">Claude Code from Anthropic </a></p></li><li><p><a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a> and <a href="https://jules.google/docs/cli/reference">Jules</a> from Google</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OR3F!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OR3F!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 424w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 848w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 1272w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OR3F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png" width="1456" height="1165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1165,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:317753,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OR3F!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 424w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 848w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 1272w, https://substackcdn.com/image/fetch/$s_!OR3F!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9634f1e8-a808-4880-a70f-656551aa4bce_1799x1439.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alongside them, the open-source community has been very active. Developers are building their own CLI agents.</p><ul><li><p><a href="https://github.com/block/goose">Goose CLI</a></p></li><li><p><a href="https://github.com/charmbracelet/crush">Crush</a> </p></li><li><p><a href="https://github.com/QwenLM/qwen-code">Qwen Code</a></p></li><li><p><a href="https://github.com/sst/opencode">OpenCode</a></p></li><li><p><a href="https://github.com/Aider-AI/aider">Aider</a> </p></li></ul><h2>3. How CLI Agents work </h2><p>Let&#8217;s see what happens behind the scenes when you run a CLI agent in the terminal.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PIOT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PIOT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 424w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 848w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 1272w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PIOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png" width="874" height="626" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:626,&quot;width&quot;:874,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:105757,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3ce66e35-30c7-4a0d-b489-d01d3c163499_960x834.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!PIOT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 424w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 848w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 1272w, https://substackcdn.com/image/fetch/$s_!PIOT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fac64e6e2-883f-4b04-b860-b29f04786e3a_874x626.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 1: User Input</h4><p>You start by typing a command in your terminal. The agent reads it as plain text, for example: &#8220;add error handling to login function.&#8221;</p><h4>Step 2: Context Gathering</h4><p>The agent scans your workspace, reads your folders and files, checks your Git commits, and maps how everything connects. It also looks for files like <code>AGENTS.md</code> or <code>README.md</code> to understand your project.</p><h4>Step 3: Prompt Construction</h4><p>Next, it builds a detailed prompt for the model. The prompt includes your request, code structure, relevant files, recent changes, and coding rules. This prompt can be huge. Now LLMs can handle up to 1 million tokens.</p><h4>Step 4: LLM Invocation</h4><p>The agent sends this prompt to the LLM. It could be Claude, Gemini, OpenAI, or any open-source model. The model starts reasoning and streams the response back in real time.</p><h4>Step 5: Reasoning and Planning</h4><p>The model analyses the problem, finds the right files, and breaks the task into small steps. It decides which tools to use for reading, writing, or running commands, and then builds a clear plan before starting.</p><h4>Step 6: Agentic Execution Loop</h4><p>Now the agent begins the real work. It follows the plan, checks the results, and adjusts when something fails. It keeps looping through read, write, test, and fix until the code works as expected.</p><h4><strong>Step 7: Review &amp; Commit</strong></h4><p>When done, the agent shows you the changes. You can review them line by line, accept or reject them, and even ask for tweaks. If you approve, it commits and pushes the change with a proper message.</p><h4><strong>Step 8: Feedback &amp; Iteration</strong></h4><p>The agent learns within the session. If you prefer a different approach, it adjusts and improves. It is not training the model, but it remembers your context during the session.</p><h4><strong>Step 9: State Persistence</strong></h4><p>The agent saves your conversation, edits, and file changes. Some tools like Claude Code even offer checkpoints to revert to earlier stages or continue later from where you left off.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AtFD!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AtFD!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 424w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 848w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 1272w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AtFD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif" width="1309" height="1414" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1414,&quot;width&quot;:1309,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:990168,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AtFD!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 424w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 848w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 1272w, https://substackcdn.com/image/fetch/$s_!AtFD!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29a57ec1-c06c-41b1-88c1-bb7f88dae6f8_1309x1414.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now that we&#8217;ve seen how CLI agents work in general, let&#8217;s take a closer look at one of the best examples, Claude Code.</p><h2>4. How Claude Code Works</h2><p>Claude Code has always been my personal choice for coding.  Let&#8217;s break down how Claude Code handles tasks step by step.</p><h4><strong>1. Agent Loop</strong></h4><p>Claude Code runs in a loop where it keeps calling tools until the job is done. Every task like reading, writing, or searching is done through a structured tool call.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uuvb!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uuvb!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 424w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 848w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 1272w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uuvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png" width="1185" height="291" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:291,&quot;width&quot;:1185,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24671,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uuvb!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 424w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 848w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 1272w, https://substackcdn.com/image/fetch/$s_!uuvb!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb059d016-0855-4af7-afac-8d23a42b2e4b_1185x291.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>2. Security Checks</strong></h4><p>Before running any command, Claude checks if it is safe. It uses smaller models like Haiku, to review shell commands and confirm they are not harmful. Once verified, it keeps a list of trusted commands for future use. This keeps your system protected from unwanted actions.</p><h4><strong>3. Scoped Edits</strong></h4><p>Claude works only inside the current project folder. It does not edit anything outside it, which makes the setup safe for local development.</p><h4><strong>4. Task Planning</strong></h4><p>Claude uses internal Todo tools to plan and track its work. It creates small subtasks, shows progress, and updates them in the terminal while it works.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8-Dp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8-Dp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 424w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 848w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8-Dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png" width="929" height="172" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:172,&quot;width&quot;:929,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22866,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0560afca-20af-43cd-ba37-c77d48e2e3b4_929x210.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8-Dp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 424w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 848w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 1272w, https://substackcdn.com/image/fetch/$s_!8-Dp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbc3a06a2-df64-48b5-a5c9-aca258f6916f_929x172.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>5. Sub Agents</strong></h4><p>When the job is complex, Claude creates small helper agents to handle parts of the task. Each one works in a small context and sends results back to the main process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LW8O!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LW8O!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 424w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 848w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 1272w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LW8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png" width="1186" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:1186,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37070,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4b8a5654-09e4-4bf5-8e8b-82fa565deb63_1186x389.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LW8O!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 424w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 848w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 1272w, https://substackcdn.com/image/fetch/$s_!LW8O!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0856eac-fadf-4bd4-8256-a2358d6d1a2d_1186x389.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>6. Prompt Rules</strong></h4><p>The system prompt keeps Claude Code clear and focused. It asks the model to stay concise, follow the existing code style, avoid random comments, and use tools smartly when needed.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VwjZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VwjZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 424w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 848w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 1272w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VwjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png" width="1411" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1411,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:50314,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VwjZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 424w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 848w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 1272w, https://substackcdn.com/image/fetch/$s_!VwjZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55193462-1cd7-49b3-8750-500c22ad274a_1411x342.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can find the system prompts for many AI tools in this <a href="https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools">System Prompt GitHub Repo.</a></p><h4><strong>7. Context Handling</strong></h4><p>When the chat starts to reach its limit, Claude summarizes old parts automatically. It keeps only what matters so it can continue reasoning without losing track.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mRcQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mRcQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 424w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 848w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 1272w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mRcQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png" width="1175" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:1175,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30466,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mRcQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 424w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 848w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 1272w, https://substackcdn.com/image/fetch/$s_!mRcQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b7aba9d-8f47-4afb-96e5-4659b2414a61_1175x201.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>8. Web Tools</strong></h4><p>Claude can fetch and search the web when it needs extra information. It even uses smaller models for these tasks to save time and cost.</p><h4><strong>9. Built on the standard Anthropic API</strong></h4><p>All calls go through the same Anthropic API that any developer would use. </p><p>Some details in this section are based on a <a href="https://medium.com/@guillaumesabran/understanding-how-claude-code-works-13036595a8a7">Medium article that analyzed Claude Code&#8217;s internal workflow</a> and Anthropic&#8217;s public API behavior.</p><h2>5. An Overall Comparison of CLI agents</h2><p>Here&#8217;s a quick comparison of popular CLI coding agents. The table is based on insights from articles, community posts, and a few I tested locally.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QOu6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QOu6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 424w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 848w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QOu6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png" width="1625" height="1216" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/71e02809-25df-418e-948b-0062d73197a0_1625x1216.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1216,&quot;width&quot;:1625,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:994098,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e8ddf8b-d134-45ed-b156-f9c35ca1e54d_1625x1216.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QOu6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 424w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 848w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 1272w, https://substackcdn.com/image/fetch/$s_!QOu6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F71e02809-25df-418e-948b-0062d73197a0_1625x1216.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>6. Choose your CLI Agent</h2><p>Here&#8217;s a quick guide to help you choose the right CLI agent based on your cost, privacy, and accuracy needs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TN0a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TN0a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 424w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 848w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 1272w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TN0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png" width="1456" height="1232" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1232,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:683518,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174908270?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TN0a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 424w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 848w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 1272w, https://substackcdn.com/image/fetch/$s_!TN0a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3dd6a48b-12c4-4870-a6ac-83466965e7c6_3282x2778.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Each tool suits a different kind of developer. Choose the one that fits your workflow.</p><h2>Conclusion</h2><p>We explored how CLI agents work and why they&#8217;re becoming a favorite among developers. From Claude Code to Goose, each offers its own balance of accuracy, privacy, and cost.</p><p>If you spend most of your time in the terminal, these tools are worth exploring. Everyone will find an agent that fits their workflow best.</p><p>If you&#8217;re already using one, I&#8217;d love to hear how it helps you code better.</p><p>Happy coding!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/cli-agents-explained-how-to-choose?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/cli-agents-explained-how-to-choose?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/cli-agents-explained-how-to-choose?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Apps SDK: Building Apps for ChatGPT]]></title><description><![CDATA[How to build Apps for ChatGPT using Apps SDK]]></description><link>https://www.devshorts.in/p/apps-sdk-building-apps-for-chatgpt</link><guid isPermaLink="false">https://www.devshorts.in/p/apps-sdk-building-apps-for-chatgpt</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 15 Oct 2025 14:05:05 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ad5fe2b2-c093-4489-91ea-e2507ddedce2_905x280.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>OpenAI recently hosted their <a href="https://openai.com/devday/">DevDay 2025</a> and announced a bunch of new tools. The highlights included Apps SDK, AgentKit, and Sora 2 in the API, and more. But the one that really caught my attention was the <a href="https://developers.openai.com/apps-sdk">Apps SDK</a>.</p><p>It&#8217;s not just another API or plugin system. It&#8217;s a framework to build apps that run inside ChatGPT.</p><p>These apps are mini tools with their own UI, powered by an MCP server. ChatGPT can call them directly, and their responses show up right in the chat.</p><p>If the App Store is a home for mobile apps, ChatGPT is becoming a home for AI apps. Apps meet people exactly when they need them. No switching tabs, no leaving the conversation.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KgUg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KgUg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 424w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 848w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 1272w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KgUg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png" width="659" height="440" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:440,&quot;width&quot;:659,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:126255,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/175689016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KgUg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 424w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 848w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 1272w, https://substackcdn.com/image/fetch/$s_!KgUg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F05d5b4cd-55e1-4424-b254-54333f29c171_659x440.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In this post, I&#8217;m going to build an App using Apps SDK.</p><p>We&#8217;ll cover these topics,</p><ol><li><p>What is Apps SDK </p></li><li><p>Why Apps SDK </p></li><li><p>How to build an app for ChatGPT</p></li><li><p>Benefits of ChatGPT apps</p></li></ol><p>The app we&#8217;ll build is a simple API Tester. Like Postman, but inside ChatGPT. Enter an endpoint, hit send, and see the result right in the chat.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is Apps SDK</h2><p>The Apps SDK is an Open Standard built on <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol</a>.</p><p>Apps SDK = MCP server + UI</p><p>It is used to build apps for ChatGPT. These apps are MCP server logic with a custom UI, all running within ChatGPT.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IrAY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IrAY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 424w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 848w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IrAY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif" width="905" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127573,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/175689016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IrAY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 424w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 848w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!IrAY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F945ecb3a-9b52-402b-8b7f-5334a9849e44_905x280.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Like any MCP server, you define your tool and run the server. But with Apps SDK there&#8217;s one extra step. You add a UI layer that users can see and interact with directly. This UI talks to ChatGPT through a simple bridge called <code>window.openai</code>.</p><h2>2. Why Apps SDK</h2><p>ChatGPT is great at conversation. But not everything can be done inside chat.</p><p>Need to edit a design? You switch to Figma. Want to organize your notes? You open Notion.</p><p>Apps SDK brings those tools right into ChatGPT.</p><p>We know MCP connects AI systems with external tools. Apps SDK takes it further. It combines MCP with UI, so the tools you connect to ChatGPT come with their own interface.</p><p>Your app runs inside the conversation, not in a separate tab. Everything happens where the conversation is.</p><h2>3. How to build an App using Apps SDK</h2><h4>Step 1:  Identify the use case</h4><p>Identify what your app should do.</p><blockquote><p>I&#8217;m building an API Tester App. A simple tool to test APIs, like Postman, but inside ChatGPT.</p></blockquote><p>ChatGPT can&#8217;t test APIs on its own. This app fills that gap.</p><h4>Step 2:  Choose an SDK</h4><p>Apps SDK works with both Python and TypeScript.</p><p><a href="https://github.com/modelcontextprotocol/python-sdk">The Python SDK</a> includes FastMCP for quick setup. If you&#8217;re already working with Node or React, go with <a href="https://github.com/modelcontextprotocol/typescript-sdk">TypeScript SDK</a> instead.</p><p>I&#8217;m using Python SDK for this API Tester App.</p><blockquote><p>The official <a href="https://github.com/openai/openai-apps-sdk-examples/tree/main">Apps SDK examples</a> include full sample apps built in both Python and Node. You can check them out to understand the complete setup and structure</p></blockquote><h4><strong>Step 3: Set up the project</strong></h4><p>Let us set up the project. The folder structure should look like this:</p><pre><code><code> API-Tester/
  &#9500;&#9472;&#9472; static/
  &#9474;   &#9500;&#9472;&#9472; api-tester.css
  &#9474;   &#9492;&#9472;&#9472; api-tester.js  
  &#9500;&#9472;&#9472; pyproject.toml
  &#9492;&#9472;&#9472; server.py</code></code></pre><p>Add dependencies in <code>pyproject.toml</code></p><pre><code><code>dependencies = [
      &#8220;fastmcp&gt;=0.1.0&#8221;,
      &#8220;httpx&gt;=0.27.0&#8221;,
      &#8220;uvicorn&gt;=0.30.0&#8221;,
      &#8220;starlette&gt;=0.37.0&#8221;
  ]</code></code></pre><p>Install them:</p><pre><code><code>pip install -e .  </code></code></pre><blockquote><p>The <code>server.py</code> file holds your MCP server tools.  The UI components (CSS and JavaScript) are in the <code>&#8220;static&#8221; </code>folder and get embedded inline by <code>&#8220;server.py&#8221;</code> when serving the widget to ChatGPT.</p></blockquote><h4>Understanding The App Flow</h4><p>Before we dive into code, here&#8217;s how Apps SDK works. Every app needs three things</p><ul><li><p>Register your tool </p></li><li><p>Handle tool execution </p></li><li><p>Register the UI </p></li></ul><p>Now let&#8217;s build each piece in server.py.</p><h4>Step 4: Build server.py</h4><h4>Register your tool</h4><pre><code><code>from mcp.server.fastmcp import FastMCP
import mcp.types as types

mcp = FastMCP(name=&#8221;api-tester&#8221;)

@mcp._mcp_server.list_tools()
async def _list_tools():
    return [
        types.Tool(
            name=&#8221;run_api_test&#8221;,
            description=&#8221;Test an API endpoint&#8221;,
            inputSchema={...},  # Define method, url parameters
            _meta={
                &#8220;openai/outputTemplate&#8221;: &#8220;ui://widget/api-tester.html&#8221;,
                &#8220;openai/widgetAccessible&#8221;: True,
            }
        )
    ]</code></code></pre><p>The <code>_meta</code> field tells ChatGPT which UI to render.</p><h4>Handle tool execution</h4><pre><code>import httpx

async def _call_tool_request(req: types.CallToolRequest):
    method = req.params.arguments.get(&#8221;method&#8221;)
    url = req.params.arguments.get(&#8221;url&#8221;)
    
    async with httpx.AsyncClient() as client:
        response = await client.request(method, url)
    
    return types.ServerResult(
        types.CallToolResult(
            content=[types.TextContent(type=&#8221;text&#8221;, text=f&#8221;Status: {response.status_code}&#8221;)],
            structuredContent={
                &#8220;status&#8221;: response.status_code,
                &#8220;headers&#8221;: dict(response.headers),
                &#8220;body&#8221;: response.text
            }
        )
    )

# Register the handler
mcp._mcp_server.request_handlers[types.CallToolRequest] = _call_tool_request</code></pre><p>The <code>structuredContent</code> is what your UI receives as <code>window.openai.toolOutput</code>.</p><h4>Register the UI</h4><pre><code><code>@mcp._mcp_server.list_resources()
async def _list_resources():
    return [types.Resource(uri=&#8221;ui://widget/api-tester.html&#8221;, mimeType=&#8221;text/html+skybridge&#8221;)]

async def _handle_read_resource(req: types.ReadResourceRequest):
    if req.params.uri == &#8220;ui://widget/api-tester.html&#8221;:
        html = &#8220;&#8221;&#8220;
        &lt;div id=&#8221;api-tester-root&#8221;&gt;&lt;/div&gt;
        &lt;style&gt;/* your CSS */&lt;/style&gt;
        &lt;script&gt;/* your JS */&lt;/script&gt;
        &#8220;&#8221;&#8220;
        return types.ServerResult(
            types.ReadResourceResult(
                contents=[types.TextResourceContents(
                    uri=&#8221;ui://widget/api-tester.html&#8221;,
                    mimeType=&#8221;text/html+skybridge&#8221;,
                    text=html
                )]
            )
        )

# Register the handler
mcp._mcp_server.request_handlers[types.ReadResourceRequest] = _handle_read_resource</code></code></pre><h4>Build the UI</h4><p>Your JavaScript receives data via <code>window.openai.toolOutput</code>. </p><pre><code><code>// Get the data
const toolOutput = window.openai?.toolOutput;

// Display results
if (toolOutput) {
    document.getElementById(&#8217;status&#8217;).textContent = toolOutput.status;
    document.getElementById(&#8217;body&#8217;).textContent = toolOutput.body;
}

// Listen for updates
window.addEventListener(&#8217;openai:set_globals&#8217;, () =&gt; {
    const data = window.openai?.toolOutput;
    // Update UI with new data
});</code></code></pre><h4>Step 5: Run the App locally</h4><pre><code><code>app = mcp.streamable_http_app()

if __name__ == &#8220;__main__&#8221;:
    uvicorn.run(app, host=&#8221;0.0.0.0&#8221;, port=8000)</code></code></pre><p>Run locally and expose with ngrok. You need HTTPS for ChatGPT to connect. Ngrok provides that temporarily. For permanent deployment, we&#8217;ll use Render, which is coming next. </p><pre><code><code>python server.py
ngrok http 8000  # Get HTTPS URL </code></code></pre><h4><strong>Step 6: Deploy to Render</strong></h4><ul><li><p>Go to <a href="https://render.com">Render</a> and create a new Web Service</p></li><li><p>Connect the GitHub repository</p></li><li><p>Set the build command: <code>pip install -e .</code></p></li><li><p>Set the start command: <code>python server.py</code></p></li><li><p>Click &#8220;Create Web Service&#8221;</p></li></ul><p>Once deployed, Render gives you an HTTPS URL like below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6FFc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6FFc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 424w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 848w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 1272w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6FFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png" width="382" height="221" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:221,&quot;width&quot;:382,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22391,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/175689016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc4dfaa5d-9082-4a4d-980f-19d38006b9d5_382x221.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6FFc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 424w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 848w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 1272w, https://substackcdn.com/image/fetch/$s_!6FFc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5914eaba-3695-491c-ada3-fdc93b6c2920_382x221.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Now it&#8217;s time to connect the API Tester app with ChatGPT. </p><h4>Step 7: Connect to ChatGPT</h4><ol><li><p>Enable Developer Mode in ChatGPT </p><p>Settings &#8594; Apps &amp; Connectors &#8594; Advanced Settings&#8594; Dev mode</p></li><li><p>Once Dev Mode is enabled, Create a new connector with your HTTPS URL</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TNRJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TNRJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 424w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 848w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 1272w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TNRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png" width="541" height="786" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:786,&quot;width&quot;:541,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52955,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/175689016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TNRJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 424w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 848w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 1272w, https://substackcdn.com/image/fetch/$s_!TNRJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80742b3c-ddd1-4eca-8aea-818e14f18a5f_541x786.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 8: Test the App</h4><p>Once you create the connector, you can add the app in the chat and start using it. I was able to test the API Tester app successfully.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;cd10e545-d6f6-4066-b3a3-e5ecfb221720&quot;,&quot;duration&quot;:null}"></div><blockquote><p>We have just seen the code snippets. You can check the complete working code of this API Tester app in this <a href="https://github.com/devgotomarket/API-Tester">GitHub repository.</a> </p></blockquote><h2>4. Benefits of ChatGPT Apps</h2><p>What makes ChatGPT apps different? Here are the key benefits.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HJGi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HJGi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 424w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 848w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HJGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png" width="2246" height="1522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1522,&quot;width&quot;:2246,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:331970,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/175689016?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ee7683b-a030-4243-89e6-5884e26a7ffd_2502x2393.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HJGi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 424w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 848w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 1272w, https://substackcdn.com/image/fetch/$s_!HJGi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9d7ea1ef-1890-436d-82cf-593c8f9bc9db_2246x1522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>What&#8217;s next</h2><p>We discussed about Apps SDK, and we built an app for ChatGPT.</p><p>The API Tester app uses a form-based UI. You can actually build the UI you want. Check out the <a href="https://github.com/openai/openai-apps-sdk-examples">official examples</a>. They include maps, carousels, and video players. </p><p>Our app doesn&#8217;t have OAuth. But you can add it. we&#8217;ve already covered OAuth implementation for MCP servers in previous posts.</p><blockquote><p>OpenAI has announced they&#8217;ll start accepting app submissions later this year. They&#8217;ll also share details on how developers can monetize their apps. </p></blockquote><p>The app directory is coming. So, pick a real problem, build an app that solves it, and get ready to submit.</p><p>Apps SDK is still new. The best apps are yet to be built, and your app could be one of them.</p><p>Happy building!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/apps-sdk-building-apps-for-chatgpt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/apps-sdk-building-apps-for-chatgpt?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/apps-sdk-building-apps-for-chatgpt?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[AGENTS.md: One File for All Agents]]></title><description><![CDATA[AGENTs.md - one file, work across many agents]]></description><link>https://www.devshorts.in/p/agentsmd-one-file-for-all-agents</link><guid isPermaLink="false">https://www.devshorts.in/p/agentsmd-one-file-for-all-agents</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Wed, 08 Oct 2025 14:31:08 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!u2mp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI Coding Agents are everywhere now. </p><p>Some live in the terminal, some work inside your IDE. Whatever the setup, every developer is using one today. </p><p><a href="https://github.com/openai/codex">Codex CLI</a>, <a href="https://github.com/anthropics/claude-code">Claude Code</a>, <a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a>, <a href="https://github.com/cline/cline">Cline</a>, <a href="https://cursor.com/">Cursor</a>, <a href="https://docs.github.com/en/enterprise-cloud@latest/copilot/concepts/agents/coding-agent/about-coding-agent">Copilot</a>. The list goes on. </p><p>If you&#8217;ve used any of these coding agents, you might know they work best when they have the right context and clear instructions.  The context and guidance come from their config files. </p><p>But each coding agent has its own config file. That creates a few problems when you switch between coding agents or work in teams that use different agents. </p><blockquote><p>The solution? A single file - <a href="https://agents.md/">AGENTS.md</a>.  An open standard that serves as a common config file for all coding agents.  </p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!u2mp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!u2mp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 424w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 848w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 1272w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!u2mp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png" width="1402" height="941" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:941,&quot;width&quot;:1402,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:739958,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!u2mp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 424w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 848w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 1272w, https://substackcdn.com/image/fetch/$s_!u2mp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcd82b1f0-b8d9-4142-b6dc-2e982a64a6ac_1402x941.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Before we dive in, here&#8217;s what we&#8217;ll cover in this post:</p><ol><li><p>What is AGENTS.md</p></li><li><p>Why AGENTS.md</p></li><li><p>What goes inside AGENTS.md</p></li><li><p>Coding Agents and their native config files</p></li><li><p>Bridging AGENTS.md with Coding Agents</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is AGENTS.md</h2><p>AGENTS.md is an open format, for guiding coding agents. A single place where AI coding agents can get the context and instructions, they need for your project.</p><blockquote><p>README.md is for developers, AGENTS.md is for coding agents.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5pz-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5pz-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 424w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 848w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 1272w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5pz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif" width="510" height="398" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:398,&quot;width&quot;:510,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:99317,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5pz-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 424w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 848w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 1272w, https://substackcdn.com/image/fetch/$s_!5pz-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb30a1853-6f8b-4444-aa05-752ce5546e00_510x398.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Most modern agents can already detect and read AGENTS.md automatically. </p><p>It is now used by more than <a href="https://github.com/search?q=path%3AAGENTS.md&amp;type=code">40K open-source projects</a> and supported by tools like Codex, Cursor, Gemini CLI, Factory, Amp, and many others.</p><h2>2. Why AGENTS.md</h2><h4>The Discussion</h4><p>Developers have already started asking for AGENTS.md support. </p><blockquote><p>In a <a href="https://github.com/anthropics/claude-code/issues/6235">GitHub discussion for Claude Code, user requested for AGENTS.md support</a>.  Similarly, Cline users raised a <a href="https://github.com/cline/cline/discussions/6162">GitHub issue asking for AGENTS.md support.</a>  Because several major tools had already adopted it.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cJyv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cJyv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 424w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 848w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 1272w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cJyv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png" width="936" height="131" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f365a72e-1144-47a1-8e32-54224f33790d_936x131.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:131,&quot;width&quot;:936,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:14131,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cJyv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 424w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 848w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 1272w, https://substackcdn.com/image/fetch/$s_!cJyv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff365a72e-1144-47a1-8e32-54224f33790d_936x131.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>The Reason</h4><p>Since every coding agent follows its own config file, it becomes difficult when you switch tools or work in a team using different agents.</p><h4>The Issue</h4><p>Here is what usually happens,</p><ol><li><p>When you switch to another coding agent, you need to create a new file for it.</p></li><li><p>If you clone a repo that already has a <code>.cursor/rules</code> file, you need to add a <code>CLAUDE.md</code> or another file for your own agent.</p></li><li><p>If you are working in a team, everyone ends up creating a different file for the same project.</p></li><li><p>You end up maintaining multiple files that all describe the same project.</p></li></ol><h4>The Solution</h4><p>That is why many coding agents have started adopting AGENTS.md. Instead of many files with different names, you maintain one common file that works across tools. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VFy6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VFy6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 424w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 848w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 1272w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VFy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif" width="1059" height="594" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:594,&quot;width&quot;:1059,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:219987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VFy6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 424w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 848w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 1272w, https://substackcdn.com/image/fetch/$s_!VFy6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F966b9f5f-dacc-4204-81b8-264bfd206963_1059x594.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. What Goes Inside AGENTS.md</h2><p>AGENTS.md isn't something completely new. It contains the same project knowledge that you'd put in any agent config file.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X9Oq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X9Oq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 424w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 848w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 1272w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X9Oq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png" width="3072" height="2050" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2050,&quot;width&quot;:3072,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:461060,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F45cf190e-f334-4653-9455-e3d70e20766a_3072x2556.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X9Oq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 424w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 848w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 1272w, https://substackcdn.com/image/fetch/$s_!X9Oq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F179189be-0ebb-4cff-862a-7370ecf1f638_3072x2050.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>What we saw above is a general structure. Along with common instructions, you can also include project-specific rules and details.</p><h4><strong>Project Rules the Agent Should Know</strong></h4><p>Your Agent might understand the code, but not the business rules behind it. Add them in AGENTS.md so the agent knows how your system should behave.</p><pre><code><code>## Domain Rules
- Admins can edit, not delete published content
- Orders auto-lock 2 hours after creation
- Free users get 3 exports per month
- Webhooks retry 3 times then dead letter</code></code></pre><h4>Architecture Decisions</h4><p>Add the architecture choices you&#8217;ve already made. So, your Agent knows what to follow and doesn&#8217;t suggest things you&#8217;ve already decided. </p><pre><code><code>## Architecture Decisions
- PostgreSQL: We need ACID for payments
- Redis: Session storage, not business data
- TypeScript: Catch bugs before users do
- Microservices: Deploy teams independently</code></code></pre><h4><strong>Team Rules the Agent Should Follow</strong></h4><p>Every team has its own way of working. The senior developers know it, but new members and your AI won&#8217;t. Add these rules in AGENTS.md so the agent follows the same team practices.</p><pre><code><code>## Team Conventions
- API errors include requestId for support
- Never show stack traces to users
- All forms validate on blur, not submit
- Cache config data, not user data</code></code></pre><h4><strong>API Details the Agent Should Know</strong></h4><p>Docs are helpful, but APIs often behave differently in real use. Add these notes in AGENTS.md so your agent understands how the APIs actually behave in your project.</p><pre><code><code>## API Integration Details
- Stripe: Retry anything, it's idempotent
- SendGrid: Rate limits hard, queue your emails
- S3: Takes time to be consistent, verify uploads
- Analytics: Fire and forget, don't block users</code></code></pre><h4><strong>Common Issues</strong></h4><p>Every project runs into the same issues more than once. Add the ones you&#8217;ve already fixed, so you don&#8217;t waste time fixing them again.</p><pre><code><code>## Common Issues
- Slow app? Check user file uploads
- Auth failing? Redis probably died
- Deploy stuck? Environment variables changed
- Memory leak? Background jobs not cleaning up</code></code></pre><h4>Start Small, Grow Smart</h4><p>Start simple and keep improving it as your project grows. Whenever your team or AI learns something new, add it here.</p><p>Over time, AGENTS.md becomes your project&#8217;s memory. New developer joins? They understand the project right away. Switch to a different coding agent? Still gets the same context and writes the same quality code.</p><h2>4. Coding Agents and their native config files</h2><p>It&#8217;s important to know each coding agent&#8217;s native config file. If an agent doesn&#8217;t support AGENTS.md yet, you&#8217;ll know where to link AGENTS.md so the agent can read it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qo3c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qo3c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 424w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 848w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 1272w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qo3c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png" width="1456" height="701" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:701,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:116919,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Qo3c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 424w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 848w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 1272w, https://substackcdn.com/image/fetch/$s_!Qo3c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a67b7da-d6a7-4205-aff7-58fcf54f2cb3_1703x820.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><a href="https://docs.claude.com/en/docs/claude-code/memory#claude-md-imports">Claude Code uses CLAUDE.md</a></p></li><li><p><a href="https://cursor.com/docs/context/rules">Cursor uses .cursor/rules/rules.mdc </a></p></li><li><p><a href="https://docs.windsurf.com/windsurf/cascade/memories#rules">Windsurf uses .windsurf/rules/rules.md</a></p></li><li><p><a href="https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions?tool=copilotcli#creating-repository-wide-custom-instructions">GitHub Copilot reads from .github/copilot-instructions.md</a></p></li><li><p><a href="https://docs.cline.bot/features/cline-rules">Cline uses .clinerules/rules.md</a></p></li><li><p><a href="https://github.com/google-gemini/gemini-cli/blob/main/docs/cli/gemini-md.md">Gemini CLI uses Gemini.md</a></p></li></ul><h2>5. Bridging AGENTS.md with Coding Agents</h2><p>Some agents, such as Claude Code and Cline don&#8217;t officially support it yet. But they can still read AGENTS.md if it&#8217;s present in your project. I tested this and it works fine in most cases.</p><p>But for safer compatibility, let&#8217;s use symbolic linking. This method makes sure every agent reads from the same source without breaking its own setup.</p><h4>1. Using Symbolic Linking</h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3Ow-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3Ow-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 424w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 848w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 1272w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3Ow-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png" width="1456" height="699" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:699,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:108068,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168038683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3Ow-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 424w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 848w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 1272w, https://substackcdn.com/image/fetch/$s_!3Ow-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5c8a21e-480d-4a2d-a991-95a31758c3cc_1610x773.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Make your coding agent read AGENTS.md directly by linking it like this.</p><pre><code><code># Claude Code
ln -s AGENTS.md CLAUDE.md

# Cline
ln -s AGENTS.md .clinerules/rules.md

# Cursor
ln -s AGENTS.md .cursor/rules/rules.md

# Windsurf
ln -s AGENTS.md .windsurf/rules/rules.md

# GitHub Copilot
ln -s AGENTS.md .github/copilot-instructions.md</code></code></pre><p>Your tools keep working. But now they all read from the same source.</p><h4>2. Using Import Inside Config Files</h4><p>You can also import AGENTS.md directly inside the agent&#8217;s config file. For example, if you are using Claude Code, add this in your CLAUDE.md file.</p><pre><code># In ./CLAUDE.md
@AGENTS.md</code></pre><p>This makes Claude Code read everything from AGENTS.md as its main project context. It keeps your setup simple and avoids repeating the same instructions across files.</p><h2>What&#8217;s Next</h2><p>Coding agents have started to follow a common standard.</p><p>Think of a future where every repo has an AGENTS.md file and every coding agent reads from the same source. </p><p>For now, we use symbolic linking or import methods to make AGENTS.md work with existing agents. It&#8217;s a simple bridge that keeps everything compatible. But this will evolve. </p><p>Soon, new agents may start looking for AGENTS.md by default. </p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/agentsmd-one-file-for-all-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/agentsmd-one-file-for-all-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/agentsmd-one-file-for-all-agents?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Agent Payments Protocol (AP2) Explained]]></title><description><![CDATA[What is AP2, Why AP2, How AP2 works, AP2 in Action.]]></description><link>https://www.devshorts.in/p/agent-payments-protocol-ap2-explained</link><guid isPermaLink="false">https://www.devshorts.in/p/agent-payments-protocol-ap2-explained</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Tue, 30 Sep 2025 13:35:23 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!IsOR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Google has announced the <a href="https://cloud.google.com/blog/products/ai-machine-learning/announcing-agents-to-payments-ap2-protocol">Agent Payments Protocol (AP2)</a> recently. </p><p>We are in a protocol era for AI agents. </p><ul><li><p><a href="https://github.com/modelcontextprotocol/servers">Model Context Protocol :- MCP connects agents with tools and data.</a></p></li><li><p><a href="https://github.com/a2aproject/A2A">Agent to Agent Protocol :- A2A enables agent-to-agent communication.</a></p></li><li><p><a href="https://github.com/google-agentic-commerce/AP2">Agent Payments Protocol :- AP2 brings payments into agentic workflow.</a></p></li><li><p><a href="https://github.com/agentic-commerce-protocol/agentic-commerce-protocol">Agentic Commerce Protocol :- ACP is also for agent led payments.</a></p></li></ul><p>We&#8217;ve already explored <a href="https://devshorts.substack.com/p/the-complete-mcp-server-guide">MCP</a> and <a href="https://devshorts.substack.com/p/agent2agent-a2a-protocol-explained">A2A</a> in earlier posts. This post focuses on AP2.</p><p>We will cover</p><ol><li><p>What is AP2</p></li><li><p>Why AP2</p></li><li><p>How AP2 works</p></li><li><p>AP2 in Action</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. What is AP2</h2><p>AP2 is an open protocol. It provides a secure and verifiable way for agents to make payments on behalf of the user, with clear proof of user intent and authorization.</p><blockquote><p>In simple words, this protocol, is built for the secure agent-led-payments. AP2 works through mandates. Mandates are digital contracts that are signed, secure, and cannot be altered. </p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Pr3j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Pr3j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Pr3j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg" width="991" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:991,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43862,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174417534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Pr3j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Pr3j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcefedda1-1314-4e04-8eff-fa5720a0f8d7_991x275.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In AP2, there are three types of mandates:</p><ul><li><p>Intent mandate &#8211; captures the user&#8217;s intent (what they want to buy).</p></li><li><p>Cart mandate &#8211; captures the user-approved items, price, and shipping details.</p></li><li><p>Payment mandate &#8211; captures the user&#8217;s approval with payment details.</p></li></ul><p>AP2 fits into the current protocol stack. It works alongside A2A and MCP. So, you can add payments without rewriting your existing Tech Stack.</p><h2>2. Why AP2</h2><p>To understand why AP2 is needed, let&#8217;s walk through a real example.</p><p>User asks Agent- &#8220;Buy Apple AirPods Pro&#8221;. </p><p>Now let us compare how the agent handles this request without AP2 and with AP2.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j4of!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j4of!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 424w, https://substackcdn.com/image/fetch/$s_!j4of!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 848w, https://substackcdn.com/image/fetch/$s_!j4of!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 1272w, https://substackcdn.com/image/fetch/$s_!j4of!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j4of!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png" width="1269" height="536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:536,&quot;width&quot;:1269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:60265,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174417534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j4of!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 424w, https://substackcdn.com/image/fetch/$s_!j4of!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 848w, https://substackcdn.com/image/fetch/$s_!j4of!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 1272w, https://substackcdn.com/image/fetch/$s_!j4of!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F198945ce-5a8a-4373-a00e-ee004d9db2df_1269x536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>AP2 addresses the three key questions in any transaction,</p><ul><li><p>Did the user authorize the purchase?</p></li><li><p>Is the agent buying exactly what the user asked?</p></li><li><p>Can we track who is responsible if the transaction fails?</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bi8X!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bi8X!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bi8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg" width="1203" height="735" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:735,&quot;width&quot;:1203,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:125948,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174417534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bi8X!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 424w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 848w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!bi8X!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb1a42a7-994c-4fb7-a1cf-c27dfc90db04_1203x735.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>3. How does AP2 work</h2><p>As already mentioned, AP2 works based on Mandates.</p><ol><li><p>Intent mandate&#8211; The user tells the agent what they want to buy (for example, AirPods). The agent captures this as an intent mandate.</p></li><li><p>Cart mandate &#8211; The agent prepares the cart with items, price, and shipping. The user reviews the cart and signs it as a cart mandate. This locks the exact items and price.</p></li><li><p>Payment mandate &#8211; The agent then prepares the payment mandate. This is the user&#8217;s signed approval to pay the merchant.</p></li><li><p>Order confirmation &#8211; The agent sends both the cart and payment mandates to the merchant. The merchant verifies them and then confirms the order.</p></li><li><p>Credentials &#8211; At each step, signed credentials make sure requests are authentic and verifiable.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!IsOR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!IsOR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!IsOR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg" width="1407" height="623" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:623,&quot;width&quot;:1407,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:112604,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/174417534?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!IsOR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 424w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 848w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!IsOR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffdf86718-0f67-4745-932a-b29d9c982dec_1407x623.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>The process above is the normal AP2 flow when the user is present. AP2 also works when the user is not present.</p><p>For example, the user may allow the agent to buy tickets when the price drops below $100, even if the user is not there at that moment. </p><p>In that case, the agent gets a detailed Intent Mandate with specific conditions, signed by the user. The agent then creates the Cart Mandate when those conditions are met and completes the order transaction.</p></blockquote><h2>4. AP2 in Action</h2><p>Google has open-sourced sample code and scenarios to help developers try AP2 locally.</p><p>The <a href="https://github.com/google-agentic-commerce/AP2">AP2 repo</a> includes:</p><ul><li><p>Python and Android samples showing shopping and checkout flows.</p></li><li><p>An Agent Development Kit (ADK) setup to run the samples.</p></li><li><p>Ready-to-use scripts to start roles like merchant, payment processor, and shopping agents.</p></li></ul><blockquote><p>These samples use Gemini 2.5 Flash in the demos, but you can swap in any model.</p></blockquote><p>Now, let&#8217;s get it running.</p><h4>Step 1: Clone the repo</h4><pre><code>git clone https://github.com/google-agentic-commerce/AP2.git</code></pre><h4>Step 2: Install dependencies</h4><p>AP2 uses <code>uv</code> for Python packages.</p><pre><code><code>cd AP2/samples/python
uv sync</code></code></pre><h4>Step 3: Set your API key</h4><p>You need a <a href="https://aistudio.google.com/api-keys">Google AI Studio API key</a>.</p><p>Linux / Mac / Git Bash</p><pre><code><code>export GOOGLE_API_KEY=&#8221;your_api_key&#8221;
</code></code></pre><p>Windows CMD</p><pre><code><code>set GOOGLE_API_KEY=your_api_key</code></code></pre><h4>Step 4: Run the agents</h4><p>In different terminals, start each role.</p><pre><code><code>cd AP2/samples/python</code></code></pre><pre><code><code>uv run --package ap2-samples python -m roles.merchant_agent
uv run --package ap2-samples python -m roles.credentials_provider_agent
uv run --package ap2-samples python -m roles.merchant_payment_processor_agent
uv run --package ap2-samples adk web src/roles</code></code></pre><h4>Step 5: Try it in the browser</h4><p>Open <a href="http://localhost:8000/dev-ui">http://localhost:8000/dev-ui</a>.</p><p>Pick the shopping agent and give it a command, for example:</p><blockquote><p>&#8220;Buy Apple AirPods Pro under $200.&#8221;</p></blockquote><p>The agent:</p><ul><li><p>Captures user intent.</p></li><li><p>Builds a cart mandate.</p></li><li><p>Requests payment mandate.</p></li><li><p>Sends signed proofs to the merchant.</p></li><li><p>Merchant verifies and confirms the order.</p></li></ul><h4>Step 6: Hands-On Run</h4><p>In my test run, I ran the flow up to the cart mandate step. At that point, the agent asked whether to use a digital wallet. </p><p>If you want to try the full checkout, you can continue by connecting your own digital wallet and check how it works.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;1bee0564-f046-4e3c-ab4a-c6d7b114b3fb&quot;,&quot;duration&quot;:null}"></div><h2>Looking Ahead</h2><p>AP2 is still new, but it solves a real gap for agent-driven commerce. It makes payments safe, verifiable, and accountable. </p><p>For developers, this is the right time to experiment with AP2. Try the sample flows and see how it fits into your stack.</p><p>You might also want to check out another initiative called the <a href="https://www.agenticcommerce.dev/">Agentic Commerce Protocol (ACP)</a>, released more recently. It is also built for agent led payments. You can explore <a href="https://github.com/agentic-commerce-protocol/agentic-commerce-protocol">ACP GitHub repo</a> and <a href="https://stripe.com/blog/developing-an-open-standard-for-agentic-commerce">Stripe&#8217;s blog post</a> for early details.</p><p>I will cover more about this ACP protocol in a future post. For now, AP2 is a great starting point to get hands on with agentic commerce. </p><p>As more merchants, wallets, and banks adopt it, we can expect more agent-led transactions.</p><p>More AI posts are coming. Let us keep exploring!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/agent-payments-protocol-ap2-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/agent-payments-protocol-ap2-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/agent-payments-protocol-ap2-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Essential GitHub Repositories for AI Engineers]]></title><description><![CDATA[A collection of GitHub repos for AI engineers]]></description><link>https://www.devshorts.in/p/essential-github-repositories-for</link><guid isPermaLink="false">https://www.devshorts.in/p/essential-github-repositories-for</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Tue, 23 Sep 2025 16:15:36 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ee025d0a-4844-419e-b967-36a8a599b975_729x433.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>GitHub has become the go-to place for learning and building with AI. Developers open source their work, share frameworks, and publish research code that others can use right away.</p><p>In this blog, I&#8217;ve collected must-know GitHub repos grouped by category. These include everything from LLM fundamentals to RAG, MCP, Agents, Agentic frameworks, and coding agents that can sharpen your AI development journey. These repos are building blocks for any AI engineer looking to learn and build. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!OgZg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!OgZg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 424w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 848w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 1272w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!OgZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png" width="1011" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:1011,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:149746,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/173258212?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2cb020cb-c8b0-4042-8574-2af0d802699f_1011x518.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!OgZg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 424w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 848w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 1272w, https://substackcdn.com/image/fetch/$s_!OgZg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7814c0d-1ae8-4223-ab41-bf5c4d6134f2_1011x441.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. LLM Repos</h2><ul><li><p><a href="https://github.com/rasbt/LLMs-from-scratch">LLMs-from-scratch</a>: This repo shows how to build and train GPT-style models. It explains the process step by step with clear code.</p></li><li><p><a href="https://github.com/HandsOnLLM/Hands-On-Large-Language-Models">Hands-On-Large-Language-Models</a>: This repo has code for practical LLM tasks. It covers text classification, search, clustering, embeddings, and fine-tuning.</p></li><li><p><a href="https://github.com/mlabonne/llm-course">llm-course</a>: This repo has an LLM course. It includes roadmaps and Colab notebooks covering fundamentals, fine-tuning, quantization, and deployment.</p></li><li><p><a href="https://github.com/aishwaryanr/awesome-generative-ai-guide">awesome-generative-ai-guide</a>: This repo serves as a GenAI hub. It provides updates on research, interview prep, course material, and app-building guides.</p></li><li><p><a href="https://github.com/Hannibal046/Awesome-LLM">Awesome-LLM</a>: This repo collects papers and resources about LLMs. It also includes frameworks, tools, and benchmarks.</p></li><li><p><a href="https://github.com/karpathy/nanoGPT">nanoGPT</a>: This repo is by Andrej Karpathy. It gives a simple way to train and fine-tune medium-sized GPTs with clean code.</p></li><li><p><a href="https://github.com/SylphAI-Inc/LLM-engineer-handbook">LLM-engineer-handbook</a>: This repo has resources for AI engineers. It covers training, serving, fine-tuning, and running LLMs in production.</p></li><li><p><a href="https://github.com/ashishps1/learn-ai-engineering">learn-ai-engineering</a>: This repo is a resource for beginners. It teaches AI, LLMs, agents, prompts, and fine-tuning from scratch.</p></li></ul><h2>2. MCP Repos</h2><ul><li><p><a href="https://github.com/modelcontextprotocol">Model Context Protocol</a>: This repo has the base MCP implementation from Anthropic. It is the open standard to connect AI applications with external tools and data.</p></li><li><p><a href="https://github.com/punkpeye/awesome-mcp-servers">Awesome MCP Servers</a>: This repo has a curated list of MCP servers. These servers help you connect MCP clients with external tools.</p></li><li><p><a href="https://github.com/punkpeye/awesome-mcp-clients">Awesome MCP Clients</a>: This repo lists different MCP clients. You can explore them and see how they work with servers.</p></li><li><p><a href="https://github.com/mcp-use/mcp-use">mcp-use</a>: This repo provides a Python library called mcp-use. It connects any LLM with any MCP server.</p></li><li><p><a href="https://github.com/metorial/mcp-containers">MCP Containers</a>: This repo gives you containerized MCP servers. They are simple to run and deploy.</p></li><li><p><a href="https://github.com/idosal/mcp-ui">mcp-ui</a>: This repo has UI components for MCP. Servers can serve them, and clients can render them for interactive use.</p></li><li><p><a href="https://github.com/mark3labs/mcphost">MCPHost</a>: This repo provides a CLI tool called MCPHost. It lets you run MCP servers and connect models like Claude, OpenAI, Gemini, and Ollama with external tools.</p></li></ul><h2>3. Agents Repos</h2><ul><li><p><a href="https://github.com/microsoft/ai-agents-for-beginners">AI Agents for Beginners</a>: This repo has lessons with code examples. It helps you get started with building AI agents.</p></li><li><p><a href="https://github.com/NirDiamant/GenAI_Agents">GenAI Agents</a>: This repo provides implementations of AI agents. It covers basics, LangGraph workflows, multi-agent systems, and advanced applications.</p></li><li><p><a href="https://github.com/e2b-dev/awesome-ai-agents">Awesome AI Agents</a>: This repo offers a curated list of AI agents. It includes projects across different categories and industries.</p></li><li><p><a href="https://github.com/dair-ai/Prompt-Engineering-Guide">Prompt Engineering Guide</a>: This repo has guides, papers, and notebooks. It focuses on prompt engineering techniques with large language models.</p></li><li><p><a href="https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools">System Prompts and Models of AI Tools</a>: This repo exposes system prompts and tools used by popular platforms. It covers Cursor, Claude Code, Lovable, and others.</p></li><li><p><a href="https://github.com/ashishpatel26/500-AI-Agents-Projects">500 AI Agents Projects</a>: This repo contains over 500 AI agent projects. It has examples from healthcare, finance, education, retail, and more.</p></li><li><p><a href="https://github.com/NirDiamant/agents-towards-production">Agents Towards Production</a>: This repo has step-by-step tutorials. It shows how to build GenAI agents that are ready for production.</p></li><li><p><a href="https://github.com/Arindam200/awesome-ai-apps">Awesome AI Apps</a>: This repo includes tutorials and examples. It shows how to build LLM-powered apps from chatbots to advanced agents.</p></li><li><p><a href="https://github.com/break-into-data/ai-engineer-toolkit">AI Engineer Toolkit</a>: This repo gives you projects and resources. It helps build production-grade AI apps with popular frameworks and tools.</p></li></ul><h2>4. Coding Agents Repos</h2><ul><li><p><a href="https://github.com/anthropics/claude-code">Claude Code</a>: This is Anthropic&#8217;s official repo. It is a popular coding agent for terminal-based AI assistance.</p></li><li><p><a href="https://github.com/openai/codex">OpenAI Codex</a>: This repo is OpenAI&#8217;s coding agent. It runs locally in your terminal and works as an alternative to cloud-based coding assistants.</p></li><li><p><a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a>: This repo is Google&#8217;s command-line tool. It brings Gemini AI into your terminal for code analysis and automation.</p></li><li><p><a href="https://github.com/FoundationAgents/OpenManus">OpenManus</a>: This is an open-source coding agent. Developers use it when they want full control without vendor lock-in.</p></li><li><p><a href="https://github.com/block/goose">Goose</a>: This repo is Block&#8217;s coding agent. It is capable of automating complex development tasks from start to finish.</p></li><li><p><a href="https://github.com/sst/opencode">opencode</a>: An AI coding agent built for the terminal. It is open source and works with any provider or model via a simple client interface.</p></li><li><p><a href="https://github.com/charmbracelet/crush">Crush</a>: This repo is Charm&#8217;s coding agent. Developers like it for its clean interface and smooth integration with local tools.</p></li><li><p><a href="https://github.com/cline/cline">Cline</a>: This is a VS Code extension. It works as an autonomous coding agent that creates files, runs commands, and handles complex workflows.</p></li><li><p><a href="https://github.com/antinomyhq/forge">Forge</a>: This repo is an AI pair programming tool. It supports more than 300 models and allows multi-provider flexibility.</p></li><li><p><a href="https://github.com/langchain-ai/open_deep_research">Open Deep Research</a>: This repo is from LangChain. It is an open-source research agent. It works across many model providers, search tools, and MCP servers.</p></li><li><p><a href="https://github.com/voideditor/void">Void</a>: It is an open-source coding editor. It is a free alternative to Cursor with checkpoint visualization.</p></li><li><p><a href="https://github.com/PatrickJS/awesome-cursorrules">Awesome Cursor Rules</a>: This repo is a collection of config files. Cursor users rely on them to customize their editor experience.</p></li><li><p><a href="https://github.com/hesreallyhim/awesome-claude-code">Awesome Claude Code</a>: It is community curated. It has Claude Code workflows and commands that improve productivity.</p></li></ul><h2>5. RAG Repos</h2><ul><li><p><a href="https://github.com/NirDiamant/RAG_Techniques">RAG Techniques</a>: It covers different advanced methods that boost retrieval and generation.</p></li><li><p><a href="https://github.com/langchain-ai/rag-from-scratch">RAG From Scratch</a>: This repo shows how to build RAG step by step with clear notebooks.</p></li><li><p><a href="https://github.com/HKUDS/RAG-Anything">RAG Anything</a>: It is an All-in-One RAG Framework. You get a flexible framework packed with tools.</p></li><li><p><a href="https://github.com/microsoft/rag-time">RAG Time</a>: Microsoft designed this as a 5-week Learning Journey to Mastering RAG.</p></li><li><p><a href="https://github.com/RUC-NLPIR/FlashRAG">FlashRAG</a>: The toolkit includes datasets, algorithms, and a GUI for fast RAG research.</p></li></ul><h2>6. LLM Framework Repos</h2><ul><li><p><a href="https://github.com/langchain-ai/langchain">LangChain</a>: A popular framework repo for building with LLMs. It supports agents, RAG, apps, memory, and many integrations.</p></li><li><p><a href="https://github.com/jerryjliu/llama_index">LlamaIndex</a>: Another popular framework repo for working with LLMs. It helps build agents, RAG systems, and LLM applications.</p></li><li><p><a href="https://github.com/deepset-ai/haystack">Haystack</a>: It is an AI orchestration framework to build customizable, production-ready LLM applications.</p></li><li><p><a href="https://github.com/ollama/ollama">Ollama</a>: This is a framework to run open-source LLMs locally on your machine.</p></li><li><p><a href="https://github.com/ggml-org/llama.cpp">llama.cpp</a>: This repo enables running LLMs locally using C and C++. It makes inference faster and lighter, even on modest hardware.</p></li><li><p><a href="https://github.com/unslothai/unsloth">Unsloth</a>: An open-source framework for LLM fine-tuning and reinforcement learning. It makes training faster and more efficient.</p></li><li><p><a href="https://github.com/microsoft/guidance">Guidance</a>: A guidance language for controlling large language models.</p></li><li><p><a href="https://github.com/stanfordnlp/dspy">DSPy</a>: An open-source Python framework. It helps optimize prompts and modules automatically.</p></li><li><p><a href="https://github.com/huggingface/transformers">Transformers</a>: It is the core library for pretrained models with APIs for training, fine tuning, and deployment.</p></li></ul><h2>7. Agentic Framework Repos</h2><ul><li><p><a href="https://github.com/langchain-ai/langgraph">LangGraph</a>: An orchestration framework for building, managing, and deploying long-running, stateful agents.</p></li><li><p><a href="https://github.com/openai/openai-agents-python">OpenAI Agent SDK</a>: A framework from OpenAI. It supports building multi-agent workflows.</p></li><li><p><a href="https://github.com/microsoft/autogen">AutoGen</a>: This is Microsoft&#8217;s agent framework. It helps create multi-agent AI applications.</p></li><li><p><a href="https://github.com/huggingface/smolagents">SmolAgents</a>: A lightweight framework from Hugging Face. It lets you build and run agents with minimal setup.</p></li><li><p><a href="https://github.com/joaomdmoura/crewai">CrewAI</a>: A framework for orchestrating AI agents. It is fast and flexible for building multi-agent workflows.</p></li></ul><h2>Conclusion</h2><p>This blog highlights key GitHub repos every AI engineer should know. The list includes LLMs, RAG, MCP, agents, frameworks, and coding agents. </p><p>Each repo offers a chance to learn or build something useful. Some help you start small, while others let you scale into real apps. </p><p>Bookmark this list and refer back to it as you progress in your AI journey.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/essential-github-repositories-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/essential-github-repositories-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/essential-github-repositories-for?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[The Complete MCP Server Guide]]></title><description><![CDATA[Build-> Dockerize -> Deploy-> Connect with LLMs, Agents]]></description><link>https://www.devshorts.in/p/the-complete-mcp-server-guide</link><guid isPermaLink="false">https://www.devshorts.in/p/the-complete-mcp-server-guide</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Tue, 16 Sep 2025 16:03:09 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4abfe1f3-a89c-4537-b1f2-85dc6e266ab2_962x543.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol (MCP)</a> has matured into a strong ecosystem. MCP servers are now common in tech stacks. They connect LLMs, AI agents with external systems, data sources, and APIs without custom integrations.</p><p>In my earlier posts, I covered MCP topics from the basics to OAuth. Here are some of those articles.</p><ul><li><p><a href="https://www.devshorts.in/p/how-to-build-your-own-mcp-server">How to build your own MCP Server?</a></p></li><li><p><a href="https://www.devshorts.in/p/how-to-host-your-mcp-server">How to host your MCP Server?</a></p></li><li><p><a href="https://devshorts.substack.com/p/how-to-implement-oauth-for-mcp-server">How to implement OAuth for MCP Server</a></p></li><li><p><a href="https://devshorts.substack.com/p/ten-must-know-mcp-servers-for-every">Ten Must-Know MCP Servers</a></p></li><li><p><a href="https://devshorts.substack.com/p/how-to-build-an-mcp-client">How to build an MCP Client</a></p></li></ul><p>This time we will see the complete workflow. We will build the MCP Server, dockerize and deploy it, and finally connect with LLMs and Agents.</p><p>This blog covers,</p><ol><li><p>Build MCP Server</p></li><li><p>Containerize using Docker and Podman</p></li><li><p>Deploy with Render and Railway</p></li><li><p>Docker Deployment Vs Direct Deployment</p></li><li><p>Test with MCP Inspector</p></li><li><p>Connect MCP Server with LLMs, Agents</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Build MCP Server</h2><p>We will start by building a simple MCP Server with the <a href="https://gofastmcp.com/servers/server">FastMCP</a> framework. An MCP Server has three core features. They are,</p><ol><li><p>Tools</p></li><li><p>Prompts</p></li><li><p>Resources</p></li></ol><p>"<a href="https://modelcontextprotocol.io/docs/learn/server-concepts#tools">Tools</a>"<code> </code>are functions that the LLM can call to perform an action. <code>"</code><a href="https://modelcontextprotocol.io/docs/learn/server-concepts#prompts">Prompts</a><code>"</code> and <code>"</code><a href="https://modelcontextprotocol.io/docs/learn/server-concepts#resources">Resources</a><code>"</code> serve different purposes. In our example we will focus only on tools.</p><p>Our server has a single tool called <code>"web_extraction"</code>. It takes a URL as input and returns the page content. Of course, an MCP server can have multiple tools, each designed for different tasks.</p><p>Here&#8217;s the code for the Web Extraction MCP Server. </p><pre><code>from fastmcp import fastmcp
import requests
from bs4 import BeautifulSoup

mcp = fastmcp("Web Extraction MCP Server")

@mcp.tool
def web_extraction(url: str) -&gt; str:
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")
    return soup.get_text(separator='\n')

if __name__ == "__main__":
    mcp.run(transport="http", host="0.0.0.0", port="8000")</code></pre><p>The full source code for the Web Extraction MCP server, including the <code>pyproject.toml</code> file, is available in this <a href="https://github.com/Sridevi17j/web-extractor-mcp-server">GitHub repo</a>.</p><blockquote><p>You don&#8217;t always need to build an MCP server from scratch. Many servers are already available in the <a href="https://github.com/modelcontextprotocol/servers">MCP registry</a> for common tools and use cases. If you find one that fits your needs, you can simply change the server code from STDIO to a streamable HTTP server by using <code>mcp.run(transport="http")</code>. Then containerize it and deploy for real time use.</p></blockquote><h2>2. Containerize using Docker and Podman</h2><p>Now let us containerize our MCP server. We will cover both Docker and Podman approaches for containerization. </p><p>Containerization bundles the app with everything it needs to run. This fixes the "it works on my machine" problem. With this approach, MCP server will run the same across local development, staging, and production environments.</p><h4>Using Docker</h4><h4>Step 1. Create the Dockerfile</h4><p>First, we need to create a Dockerfile that defines our container environment:</p><pre><code>FROM python:3.11-slim

# Set working directory
WORKDIR /app

# Install system dependencies
RUN apt-get update &amp;&amp; apt-get install -y \
    gcc \
    &amp;&amp; rm -rf /var/lib/apt/lists/*

# Copy requirements files
COPY pyproject.toml ./

# Install Python dependencies
RUN pip install --no-cache-dir -e .

# Copy application code
COPY server.py ./

# Expose the port the app runs on
EXPOSE 8000

# Create a non-root user for security
RUN useradd --create-home --shell /bin/bash app \
    &amp;&amp; chown -R app:app /app
USER app

# Run the application
CMD ["python", "server.py"]</code></pre><h4>Step 2. Build the Docker image from the Dockerfile</h4><pre><code>docker build -t web-extractor-mcp-server .</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fZ67!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fZ67!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 424w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 848w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 1272w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fZ67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png" width="1151" height="719" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:719,&quot;width&quot;:1151,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103801,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!fZ67!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 424w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 848w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 1272w, https://substackcdn.com/image/fetch/$s_!fZ67!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fff8d52ff-2ec9-490a-b694-3b824d895670_1151x719.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Step 3. Tag the image for the registry</h4><pre><code>docker tag web-extractor-mcp-server your-dockerhub-username/web-extractor-mcp-server:latest</code></pre><h4>Step 4. Authenticate with Docker Hub</h4><pre><code>docker login</code></pre><h4>Step 5. Push the image to Docker Hub</h4><pre><code>docker push your-dockerhub-username/web-extractor-mcp-server:latest</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GBsp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GBsp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 424w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 848w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 1272w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GBsp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png" width="1126" height="300" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:300,&quot;width&quot;:1126,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30745,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!GBsp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 424w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 848w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 1272w, https://substackcdn.com/image/fetch/$s_!GBsp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F44f9bbe3-837c-44e7-93b2-0ee6432e3dd9_1126x300.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Using Podman</h4><p>We can also containerize using Podman. It is a container engine that runs without a background daemon. It supports rootless containers, offering better security by default. </p><h4>Step 1. Build the image</h4><p>On some systems, Podman requires <code>sudo</code> unless your user is set up for rootless containers. In my case, the working command was.</p><pre><code>sudo podman build -t web-extraction-mcp .</code></pre><h4>Step 2. Verify image was created</h4><pre><code>podman images</code></pre><h4>Step 3. Tag for registry </h4><p>Podman supports multiple registries including Docker Hub and GitHub Container Registry.</p><pre><code>sudo podman tag web-extraction-mcp:latest your-dockerhub-username/web-extraction-mcp:latest</code></pre><h4>Step 4. Authenticate with the registry</h4><pre><code>podman login docker.io</code></pre><h4>Step 5. Push the image to the registry</h4><pre><code> sudo podman push your-dockerhub-username/web-extraction-mcp:latest</code></pre><p>With Docker images ready, we can now deploy them to various platforms.</p><h2>3. Deploy with Render</h2><p>Let's start with Render first.</p><p>Connect the Docker image and deploy as a web service through <a href="https://render.com/">Render's dashboard.</a> The platform will pull the image and handle the deployment process.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z0mX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z0mX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 424w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 848w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 1272w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z0mX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png" width="1456" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z0mX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 424w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 848w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 1272w, https://substackcdn.com/image/fetch/$s_!z0mX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F66a7d738-6a82-4949-b8de-7df147a58960_1575x433.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ogqh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ogqh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 424w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 848w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 1272w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ogqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png" width="907" height="317" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:317,&quot;width&quot;:907,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61987,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ogqh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 424w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 848w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 1272w, https://substackcdn.com/image/fetch/$s_!ogqh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3082d23a-e569-4f25-bf2c-2fe85cafa4e6_907x317.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Deploy with Railway</h2><p><a href="https://railway.com/">Railway</a> works much like Render. Connect the Docker image and Railway will handle the deployment process automatically.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aCRp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aCRp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 424w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 848w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 1272w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aCRp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png" width="1456" height="389" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f686df33-877a-4620-8d2b-72c2619c7305_1579x422.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:389,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31721,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aCRp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 424w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 848w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 1272w, https://substackcdn.com/image/fetch/$s_!aCRp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff686df33-877a-4620-8d2b-72c2619c7305_1579x422.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Now that our MCP server is deployed, before connecting it with LLMs and Agents, let&#8217;s look at why Docker deployment is better than direct deployment</p><h2>4. Direct Deployment Vs Docker Deployment</h2><p>Direct deployment can fail when the local and server environments don&#8217;t match. Docker solves this by packaging everything, so the MCP server runs the same everywhere.</p><p>Here&#8217;s a quick comparison between Direct deployment and Docker deployment.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FNj9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FNj9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 424w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 848w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 1272w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FNj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png" width="811" height="499" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:499,&quot;width&quot;:811,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FNj9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 424w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 848w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 1272w, https://substackcdn.com/image/fetch/$s_!FNj9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8cf3e877-6352-4f26-9e0b-8b4fa19b64d2_811x499.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>5. Test with MCP Inspector</h2><p><a href="https://github.com/modelcontextprotocol/inspector">MCP Inspector</a> is the standard tool for testing and debugging MCP servers. It provides a user interface to interact with the server's tools and verify functionality.</p><ol><li><p>Run <code>npx @modelcontextprotocol/inspector</code></p></li><li><p>Open MCP Inspector.</p></li><li><p>Enter MCP Server deployment URL with /mcp at the end.</p></li><li><p>Click "Connect" to establish the connection.</p></li><li><p>Once connected, we can see the list of tools our MCP Server provides.</p></li></ol><p>In our case, after we connect with our deployment url, our <code>web_extraction</code> tool shows up in the list. This proves our deployed MCP server is working properly.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yLoB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yLoB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 424w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 848w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 1272w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yLoB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png" width="1456" height="702" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:702,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83137,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yLoB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 424w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 848w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 1272w, https://substackcdn.com/image/fetch/$s_!yLoB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf8373d3-796a-4f65-9b6a-af7d99f7f6f9_1907x920.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/the-complete-mcp-server-guide?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/the-complete-mcp-server-guide?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p><h2>6. Connect MCP Server with LLMs, Agents</h2><p>MCP Servers become really useful when you connect them with LLM-powered apps and agents. In this section, we will see how to connect them with LLMs Agents, and code editors.</p><h4>6.1 Connect MCP Server with Anthropic API</h4><p>To connect with an MCP server you normally need an MCP client, but some providers now let their LLMs talk to MCP servers directly through their APIs. </p><p>Here&#8217;s an example of connecting an MCP server with the Anthropic API. You can see <a href="https://docs.anthropic.com/en/docs/agents-and-tools/mcp-connector">Anthropic&#8217;s docs</a> for more details</p><pre><code>import anthropic

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1000,
    messages=[{
        "role": "user",
        "content": "What tools do you have available?"
    }],
    mcp_servers=[{
        "type": "url",
        "url": "https://mcp.example.com/sse",
        "name": "example-mcp",
        "authorization_token": "YOUR_TOKEN"
    }],
    betas=["mcp-client-2025-04-04"]
)</code></pre><h4>6.2 Connect MCP Server with OpenAI Agent</h4><p>OpenAI&#8217;s Agent supports MCP servers. The table below shows the different MCP integration options supported by the OpenAI Agent Python SDK. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BP9o!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BP9o!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 424w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 848w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 1272w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BP9o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png" width="885" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:885,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:92441,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BP9o!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 424w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 848w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 1272w, https://substackcdn.com/image/fetch/$s_!BP9o!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b3c8ff5-ec46-4c9f-99e7-8acebef263e7_885x590.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can read more about these options in the <a href="https://openai.github.io/openai-agents-python/mcp/">OpenAI MCP docs.</a></p><p>For example, here&#8217;s how an OpenAI Agent connects with a Streamable HTTP MCP server.</p><pre><code>import asyncio
import os

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp
from agents.model_settings import ModelSettings

async def main() -&gt; None:
    token = os.environ["MCP_SERVER_TOKEN"]
    async with MCPServerStreamableHttp(
        name="Streamable HTTP Python Server",
        params={
            "url": "http://localhost:8000/mcp", # URL of the MCP server
            "headers": {"Authorization": f"Bearer {token}"},
            "timeout": 10,
        },
        cache_tools_list=True,
        max_retry_attempts=3,
    ) as server:
        agent = Agent(
            name="Assistant",
            instructions="Use the MCP tools to answer the questions.",
            mcp_servers=[server],
            model_settings=ModelSettings(tool_choice="required"),
        )

        result = await Runner.run(agent, "Add 7 and 22.")
        print(result.final_output)

asyncio.run(main())
   </code></pre><h4>6.3 Connect MCP Server with Claude Code</h4><p>We can also add MCP Server with <a href="https://docs.anthropic.com/en/docs/claude-code/mcp">Claude Code</a>.</p><pre><code><code>claude mcp add --transport http web-extractor-mcp https://web-extractor-mcp-server-1.onrender.com </code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zq20!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zq20!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 424w, https://substackcdn.com/image/fetch/$s_!zq20!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 848w, https://substackcdn.com/image/fetch/$s_!zq20!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 1272w, https://substackcdn.com/image/fetch/$s_!zq20!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zq20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png" width="1151" height="99" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:99,&quot;width&quot;:1151,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26640,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd9478a-ecc2-4cee-903a-cabe4bcf2de9_1151x99.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zq20!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 424w, https://substackcdn.com/image/fetch/$s_!zq20!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 848w, https://substackcdn.com/image/fetch/$s_!zq20!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 1272w, https://substackcdn.com/image/fetch/$s_!zq20!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F16c7b805-dd46-4095-8a13-4e34d7ee9691_1151x99.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Running this command connects the MCP server to Claude Code.</p><h4>6.4 Connect MCP Server with Code Editors</h4><ol><li><p>Cursor Code Editor provides three ways to connect with MCP servers, so your tools can be accessed directly while coding. </p><ul><li><p><a href="https://docs.cursor.com/en/context/mcp#one-click-installation">Cursor-MCP one-click installation</a></p></li><li><p><a href="https://docs.cursor.com/en/context/mcp#using-mcp-json">Using mcp.json</a></p></li><li><p><a href="https://docs.cursor.com/en/context/mcp#using-the-extension-api">Using the Extension API</a></p></li></ul></li><li><p>VS Code also provides multiple options to add MCP servers, including workspace-level, user-level, and dev container configurations:</p><ul><li><p><a href="https://code.visualstudio.com/docs/copilot/customization/mcp-servers#_add-an-mcp-server">VS Code &#8211; How to add an MCP server</a></p></li></ul></li><li><p>Windsurf supports MCP through <a href="https://docs.windsurf.com/windsurf/cascade/mcp">Cascade</a>, so you can plug in your servers and use their tools directly in the editor.</p></li><li><p>Zed also has <a href="https://zed.dev/docs/ai/mcp">MCP integration</a>, letting you add servers in its config and access MCP tools while coding.</p></li><li><p>LangChain provides <a href="https://github.com/langchain-ai/langchain-mcp-adapters">MCP adapters</a>, allowing you to use MCP servers inside your workflows and agents.</p></li><li><p>LlamaIndex supports <a href="https://developers.llamaindex.ai/python/framework/module_guides/mcp/llamaindex_mcp/">MCP</a>, so you can use MCP servers as tools in your pipelines and agents.</p></li></ol><p>Some websites like <a href="https://mcpservers.org/remote-mcp-servers">MCP Server Org</a> provide one-click MCP Server installation options for VS Code and Cursor. It makes setup faster but ensure the legitimacy of the site before installing. Only add MCP servers from trusted publishers and review their configuration carefully.</p><h4>6.5. Connect Any LLM with Any MCP</h4><p><a href="https://github.com/mcp-use/mcp-use">mcp-use</a> is an open-source toolkit that connects any LLM to any MCP server, so you can build agents with tool access without relying on closed clients.</p><p><a href="https://github.com/mark3labs/mcphost">MCPHost</a> is a CLI host application that connects LLMs with MCP servers. It supports multiple providers like Claude, OpenAI, Gemini, and Ollama.</p><h4>6.6 Connect MCP Server with ChatGPT</h4><p>OpenAI recently added <a href="https://platform.openai.com/docs/mcp">support for MCP Server in ChatGPT</a>.  This means you can integrate your own custom MCP servers directly into ChatGPT and use their tools inside conversations.</p><p>To set it up, enable Developer Mode under Advanced Settings. Then create a Connector. From there, you can fill in the details of your MCP server (name, description, and URL).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X6Cp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X6Cp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 424w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 848w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 1272w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X6Cp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png" width="495" height="718" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5700065b-ce84-475d-9e42-9af066ff3744_495x718.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:718,&quot;width&quot;:495,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46887,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X6Cp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 424w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 848w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 1272w, https://substackcdn.com/image/fetch/$s_!X6Cp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5700065b-ce84-475d-9e42-9af066ff3744_495x718.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>6.7 Connect MCP Server with Claude Desktop </h4><p>We can connect MCP Server with Claude Desktop in two ways:</p><p>Through the UI (paid users only)</p><ul><li><p>Open Claude Desktop Settings &#8594; Connectors &#8594; Add Custom Connector.</p></li><li><p>Enter MCP server&#8217;s deployment URL and save the configuration.</p></li></ul><p>Through <code>claude_desktop_config.json</code> (all users)</p><ul><li><p>Open the configuration file: <code>claude_desktop_config.json</code>.</p></li><li><p>Add a new entry for MCP server with the deployment URL.</p></li></ul><p>Let us now try connecting our Web Extraction MCP Server with Claude Desktop. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!moza!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!moza!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 424w, https://substackcdn.com/image/fetch/$s_!moza!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 848w, https://substackcdn.com/image/fetch/$s_!moza!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 1272w, https://substackcdn.com/image/fetch/$s_!moza!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!moza!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png" width="537" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:537,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55856,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!moza!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 424w, https://substackcdn.com/image/fetch/$s_!moza!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 848w, https://substackcdn.com/image/fetch/$s_!moza!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 1272w, https://substackcdn.com/image/fetch/$s_!moza!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4e198491-9032-4e0c-af40-5e0f2734d418_537x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once connected, our web extraction tool is available directly within Claude Desktop. We can now ask Claude to extract content from any webpage, and it will use MCP server&#8217;s tool to perform the task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NNPM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NNPM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 424w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 848w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 1272w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NNPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png" width="803" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:803,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:98407,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/172474183?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NNPM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 424w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 848w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 1272w, https://substackcdn.com/image/fetch/$s_!NNPM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F661b9aaa-5171-4d61-afaf-20c348e5bdd2_803x780.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conclusion:</h2><p>In this guide, we explored the full journey of MCP servers. We built a simple MCP server, then containerized, deployed, and connected it with LLMs, agents, and editors. </p><p>MCP opens the door to building powerful agents with tool access without the friction of custom integrations. </p><p>Give MCP servers a try, and happy learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/the-complete-mcp-server-guide?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/the-complete-mcp-server-guide?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/the-complete-mcp-server-guide?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[ChatGPT Agent Explained]]></title><description><![CDATA[All About ChatGPT Agent]]></description><link>https://www.devshorts.in/p/chatgpt-agent-explained</link><guid isPermaLink="false">https://www.devshorts.in/p/chatgpt-agent-explained</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Tue, 02 Sep 2025 17:10:32 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/5be20111-beda-48f5-ae3e-e50a7367b305_701x561.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>AI agents are everywhere now. They are not just chatbots anymore. They are autonomous systems. They can reason, plan, and execute tasks without constant human oversight. Developers have started integrating them into real workflows. </p><p>I have written about agents before. Here are my blogs on them.</p><p><a href="https://devshorts.substack.com/p/how-to-build-a-full-stack-application">How to build a Full Stack Application using AI Agents</a></p><p><a href="https://devshorts.substack.com/p/what-are-ai-agents-and-must-try-agents">What are AI Agents and Must-Try Agents for Every Developer</a></p><p>Recently, OpenAI has shipped <a href="https://openai.com/index/introducing-chatgpt-agent/">ChatGPT Agent</a>.  This can now do your work using its own computer. It can handle complex tasks from start to finish.</p><p>In this blog, we will cover ChatGPT Agent from features to architecture. Here is the outline.</p><ol><li><p>Browser Agent - ChatGPT Agent runs on its own virtual desktop.</p></li><li><p>Connectors - ChatGPT Agent uses Connectors to connect with external tools.</p></li><li><p>Scheduling - ChatGPT Agent has Scheduling option to schedule the task.</p></li><li><p>Website Permissions</p><ol><li><p>How to allow ChatGPT Agent to access your website.</p></li><li><p>How to block the OpenAI crawlers accessing your site.</p></li></ol></li><li><p>Architecture - ChatGPT Agent reverse engineered - live streaming &amp; control</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div></li></ol><h2>1. Browser Agent</h2><p>Click Agent mode to activate ChatGPT Agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lvtk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lvtk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 424w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 848w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 1272w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lvtk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png" width="757" height="377" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/101a5624-a957-4d70-b816-637c7128f106_757x377.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:377,&quot;width&quot;:757,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46810,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F435e3d81-21f1-4819-8dcb-0b20985c49fd_775x395.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!lvtk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 424w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 848w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 1272w, https://substackcdn.com/image/fetch/$s_!lvtk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F101a5624-a957-4d70-b816-637c7128f106_757x377.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The ChatGPT Agent sets up its own virtual desktop and performs tasks. It can book tickets, create files, order items, or carry out any task based on the prompt.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!faqq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!faqq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 424w, https://substackcdn.com/image/fetch/$s_!faqq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 848w, https://substackcdn.com/image/fetch/$s_!faqq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 1272w, https://substackcdn.com/image/fetch/$s_!faqq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!faqq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png" width="1000" height="240" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:240,&quot;width&quot;:1000,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23293,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!faqq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 424w, https://substackcdn.com/image/fetch/$s_!faqq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 848w, https://substackcdn.com/image/fetch/$s_!faqq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 1272w, https://substackcdn.com/image/fetch/$s_!faqq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa75a7eaf-8b9a-4824-baa8-77b0be47eb46_1000x240.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p>It combines <a href="https://openai.com/index/introducing-operator/">Operator mode</a> and <a href="https://openai.com/index/introducing-deep-research/">Deep Research</a>. Operator could act. Deep Research could analyze. Now both run together in one unified flow.</p></blockquote><p>It uses a browser agent that can browse and interact with websites. For sensitive actions like logins and credentials, it gives control back to user.</p><p>I tried ChatGPT Agent for a grocery order. The initial order was successful. On the second try it struggled because the item was out of stock, but overall, the experience was good.</p><p>The video below shows how it gives control back to users for sensitive steps like login.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;657a43d2-cc8d-4005-97cb-4580638806bc&quot;,&quot;duration&quot;:null}"></div><blockquote><p>The only drawback I noticed was that for a simple order it took quite a bit of time. If I had ordered, I would have done it faster. But I understand this is just the beginning, and the process will only get better over time.</p></blockquote><h2>2. Connectors </h2><p>ChatGPT Agent can connect to external tools through connectors. Connectors have been in regular chat for a while. Now the Agent can use them too. And Web browsing is enabled by default for Agent.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bKdX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bKdX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 424w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 848w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 1272w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!bKdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png" width="1039" height="628" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:628,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58470,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!bKdX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 424w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 848w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 1272w, https://substackcdn.com/image/fetch/$s_!bKdX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2b1f4d9-7440-458c-818a-fba75c696b83_1039x628.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>You can find more connectors in Settings &#8594; Connectors. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sh2r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sh2r!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 424w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 848w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 1272w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sh2r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png" width="672" height="597" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:597,&quot;width&quot;:672,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44964,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!sh2r!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 424w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 848w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 1272w, https://substackcdn.com/image/fetch/$s_!sh2r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F15c3e658-5de5-4d6f-89a2-6cadac99396a_672x597.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you connect a tool, you allow the Agent to read data and take actions in that tool. You still approve sensitive steps while it works.</p><p>You can add custom connectors too. They&#8217;re available for ChatGPT Pro, Team, and Enterprise workspaces. To create a connector, build an MCP server that links external tools or data sources, then deploy it, and connect it with ChatGPT.</p><p>If you want to learn more about MCP, check out my blogs on building MCP servers, deploying them, and adding OAuth support.</p><ul><li><p><a href="https://www.devshorts.in/p/how-to-build-your-own-mcp-server">How to build your own MCP Server?</a></p></li><li><p><a href="https://www.devshorts.in/p/how-to-host-your-mcp-server">How to host your MCP Server?</a></p></li><li><p><a href="https://devshorts.substack.com/p/how-to-implement-oauth-for-mcp-server">How to add OAuth in MCP Server?</a></p></li></ul><h2>3. Scheduling </h2><p>You can now schedule ChatGPT Agent tasks. For Example: Set up a monthly grocery order. Tell the Agent what to buy and set it to run every month. You can include instructions in the schedule. You can use the scheduling option for any kind of recurring tasks.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5K66!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5K66!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 424w, https://substackcdn.com/image/fetch/$s_!5K66!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 848w, https://substackcdn.com/image/fetch/$s_!5K66!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 1272w, https://substackcdn.com/image/fetch/$s_!5K66!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5K66!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png" width="1081" height="742" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29e5331d-a848-4541-9360-798c034511c3_1081x742.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:742,&quot;width&quot;:1081,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:95301,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5K66!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 424w, https://substackcdn.com/image/fetch/$s_!5K66!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 848w, https://substackcdn.com/image/fetch/$s_!5K66!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 1272w, https://substackcdn.com/image/fetch/$s_!5K66!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29e5331d-a848-4541-9360-798c034511c3_1081x742.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Manage the scheduled tasks under settings&#8594; schedules. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gNIH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gNIH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 424w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 848w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 1272w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gNIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png" width="1281" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:1281,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9822,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gNIH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 424w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 848w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 1272w, https://substackcdn.com/image/fetch/$s_!gNIH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23802a9e-7943-4224-8b0e-e0f2ebae08a9_1281x274.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>4. Website controls</h2><p>We all know ChatGPT access websites. OpenAI uses <a href="https://platform.openai.com/docs/bots">three types of crawlers</a> for this. Each crawler is for different purposes. Website owners need to understand them. You can control which ones access your site.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uO70!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uO70!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 424w, https://substackcdn.com/image/fetch/$s_!uO70!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 848w, https://substackcdn.com/image/fetch/$s_!uO70!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 1272w, https://substackcdn.com/image/fetch/$s_!uO70!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uO70!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png" width="1060" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1060,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:100939,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uO70!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 424w, https://substackcdn.com/image/fetch/$s_!uO70!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 848w, https://substackcdn.com/image/fetch/$s_!uO70!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 1272w, https://substackcdn.com/image/fetch/$s_!uO70!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feec4018b-b875-44a5-9e98-cc1b18d240fe_1060x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>How to block the ChatGPT bots</h3><p>We listed the OpenAI bots above. To block them from your site, place the following entries in your robots.txt.</p><pre><code>
User-agent: OAI-SearchBot
Disallow: /

User-agent: ChatGPT-User
Disallow: /

User-agent: GPTBot
Disallow: /</code></pre><h3><strong>How to Allow ChatGPT Agent Access to Your Website</strong></h3><p>The ChatGPT Agent works like a bot that can perform real tasks on websites, from browsing pages to completing actions like shopping. Some site owners may want to allow the Agent to visit their site, since it handles genuine tasks like shopping or bookings.</p><p>The challenge is that fake bots could try to pretend to be ChatGPT Agent. To prevent this, you need a way to verify that a request is truly coming from the Agent.</p><p>OpenAI solves this by adding cryptographic signatures to every request. These signatures prove the request is genuine. By checking them, you can allow the real Agent while blocking impostors.</p><p>For detailed steps, see OpenAI&#8217;s guide on <a href="https://help.openai.com/en/articles/11845367-chatgpt-agent-allowlisting">ChatGPT Agent allowlisting</a>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!77_g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!77_g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 424w, https://substackcdn.com/image/fetch/$s_!77_g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 848w, https://substackcdn.com/image/fetch/$s_!77_g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 1272w, https://substackcdn.com/image/fetch/$s_!77_g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!77_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png" width="1267" height="648" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:648,&quot;width&quot;:1267,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:136005,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!77_g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 424w, https://substackcdn.com/image/fetch/$s_!77_g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 848w, https://substackcdn.com/image/fetch/$s_!77_g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 1272w, https://substackcdn.com/image/fetch/$s_!77_g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd062370d-21a6-43b6-93df-b5b407ddd980_1267x648.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>5. Reverse Engineering ChatGPT Agent</h2><p>After looking at the features, I wanted to see how the Browser Agent actually works under the hood. Since its proprietary, the full architecture isn&#8217;t public. But I came across an <a href="https://www.linkedin.com/pulse/reverse-engineering-openais-agent-mode-infrastructure-vasudevan-q7hvc/">article that reverse-engineered</a> ChatGPT Agent and described a likely design.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zbwn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zbwn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 424w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 848w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 1272w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zbwn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png" width="783" height="406" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:406,&quot;width&quot;:783,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73265,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zbwn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 424w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 848w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 1272w, https://substackcdn.com/image/fetch/$s_!zbwn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3bc1e495-6909-472b-bfb5-08ebbf59fdc9_783x406.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">source:- <a href="https://www.linkedin.com/pulse/reverse-engineering-openais-agent-mode-infrastructure-vasudevan-q7hvc/">Reverse-Engineering OpenAI's Agent Mode Infrastructure</a></figcaption></figure></div><p>It explains how the agent launches a browser inside a virtual desktop, streams it live, and even hands control back to you when needed. When you move the cursor, those actions are applied directly to its virtual desktop. With the right workflow and infrastructure, this setup becomes possible.</p><p>A prototype built with this approach behaved much like ChatGPT Agent. You can see this prototype in action in the video below.</p><p>Source:- <a href="https://www.linkedin.com/posts/prabhuraj-vasudevan_openai-agentmode-livestreaming-activity-7359445870418776064-kXxc?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAAT_a2UB9yelDQrBsC2DRbxuLXcMgi4ypYU">POC on ChatGPT Agent</a> </p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;72b8a9d4-644f-4e04-8657-848e921547f6&quot;,&quot;duration&quot;:null}"></div><p>To make it clearer, here&#8217;s a diagram showing steps of live streaming and user control.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wHvh!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wHvh!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 424w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 848w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 1272w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wHvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png" width="1456" height="342" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:342,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111445,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170157596?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wHvh!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 424w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 848w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 1272w, https://substackcdn.com/image/fetch/$s_!wHvh!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff2a84caf-5673-4155-b0e3-fd2e915e38b0_1667x391.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Let us see the flow in detail now.</p><h4>1. User Types Prompt in Chat Interface</h4><p>The user enters a prompt in the chat. The system captures it and forwards it to the backend, where it&#8217;s added to a queue for execution.</p><h4>2. Server Receives and Parses Command</h4><p>The backend receives the request, analyzes the instruction, identifies the intended action, and extracts the key parameters needed to perform it.</p><h4>3. Browser Action Execution</h4><p>The backend sends the instruction to the browser session. The browser opens the target site, navigates to the right section, fills in fields, and performs the required clicks or actions.</p><h4>4. Screenshot Capture and Processing</h4><p>The system continuously captures snapshots of the browser at short intervals. Each snapshot is resized, compressed, and encoded so it can be streamed efficiently without losing clarity.</p><h4>5. Real-Time Streaming and Display</h4><p>The server streams the processed frames back to the client in real time. So, the user sees a smooth live view of the agent&#8217;s actions as they happen. </p><h4>6. User Can Take Manual Control</h4><p>When the user clicks on the live stream, the system captures the click coordinates and sends them to the backend. The virtual browser then performs the same action at that location.</p><h4>7. State Synchronization and Maintains Session</h4><p>The browser, backend, and client remain in sync so that actions and visuals stay aligned. If the connection drops, the session can recover without losing progress.</p><h4>8. Continuous Feedback Loop</h4><p>Every action is reflected in the next frame, creating a constant loop of feedback. The user gains confidence by seeing the process live and can choose to stop, take over, or let the Agent continue.</p><blockquote><p>This is a likely architecture based on reverse engineering. It may not match the exact internal design of ChatGPT Agent, but a prototype built with this approach was tested and worked in a similar way.</p></blockquote><h2>Conclusion</h2><p>Hope you now got a clear idea about ChatGPT Agent, its core features, and the architecture behind how it works. </p><p>For additional details about ChatGPT Agent, including how reinforcement learning guides tool selection, benchmark results, and safeguards against risks like prompt injection, check <a href="https://www.youtube.com/watch?v=1jn_RpbPbEc">this video</a> from OpenAI.</p><p>The agentic space is evolving fast, and we will see even more powerful agents as this technology matures.</p><p>Happy learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/chatgpt-agent-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/chatgpt-agent-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/chatgpt-agent-explained?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to implement OAuth for MCP Server]]></title><description><![CDATA[Secure Your Remote MCP Server with OAuth (FastMCP + Auth0)]]></description><link>https://www.devshorts.in/p/how-to-implement-oauth-for-mcp-server</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-implement-oauth-for-mcp-server</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Thu, 21 Aug 2025 16:03:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!z0Ve!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Anthropic introduced the <a href="https://modelcontextprotocol.io/docs/getting-started/intro">Model Context Protocol (MCP</a>). Now, developers have started using MCP servers in their workflows. You can now use MCP servers in VSCode, Cursor, and other AI-powered IDEs, or right in your app code, to connect AI with external data. At this point, there&#8217;s an MCP server for almost every system you can think of.</p><p>I have written articles on MCP covering topics like,</p><ul><li><p><a href="https://www.devshorts.in/p/how-to-build-your-own-mcp-server">How to build your own MCP Server?</a></p></li><li><p><a href="https://www.devshorts.in/p/how-to-host-your-mcp-server">How to host your MCP Server?</a></p></li><li><p><a href="https://devshorts.substack.com/p/ten-must-know-mcp-servers-for-every">Ten Must-Know MCP Servers</a></p></li><li><p><a href="https://devshorts.substack.com/p/how-to-build-an-mcp-client">How to build an MCP Client</a></p></li></ul><p>This is my fifth post in this series. Since I haven&#8217;t implemented OAuth with MCP servers before, I decided to give it a try and document the process in this blog.</p><p>In this blog, I&#8217;ll cover:</p><ol><li><p>Quick MCP intro</p></li><li><p>MCP Transport Types</p></li><li><p>Understanding OAuth</p></li><li><p>OAuth Authorization flow for MCP Servers</p></li><li><p>Build and Deploy OAuth-protected MCP Server</p></li><li><p>Test OAuth MCP Server</p></li></ol><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>1. Quick MCP intro</h2><p>For those new to MCP, it&#8217;s a Model Context Protocol that connects LLMs with external data. LLMs exist primarily on the client side. MCP clients talk to MCP servers. The server connects to external systems, fetches data, and sends it to the LLM running in the client.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Kqjf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Kqjf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 424w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 848w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 1272w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Kqjf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png" width="1109" height="455" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:455,&quot;width&quot;:1109,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27225,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Kqjf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 424w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 848w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 1272w, https://substackcdn.com/image/fetch/$s_!Kqjf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85a2eee0-3e47-46fd-8813-b975d6406675_1109x455.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Model Context Protocol lets you build MCP servers that expose data and functionality to LLMs.</p><p>MCP servers have:</p><ul><li><p>Resources (<code>@mcp.resource</code>) - Expose data to LLMs (like reading files or databases)</p></li><li><p>Tools (<code>@mcp.tool</code>) - Provide functionality to LLMs (like sending emails or running code)</p></li><li><p>Prompts (<code>@mcp.prompt</code>) - Define reusable templates for LLM interactions</p></li></ul><h2>2. MCP Transport Types</h2><p>MCP supports different transport types for connecting clients and servers.</p><ul><li><p>STDIO Transport (Local)</p></li><li><p>Streamable HTTP Transport (Remote)</p></li><li><p>Custom Transport </p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7bHX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7bHX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 424w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 848w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 1272w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7bHX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png" width="959" height="457" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:457,&quot;width&quot;:959,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31262,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7bHX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 424w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 848w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 1272w, https://substackcdn.com/image/fetch/$s_!7bHX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c96c764-9488-4f76-bf50-5f4ddca351f2_959x457.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>STDIO Transport: (Local)</h4><p>If you're planning to build a local MCP server that runs on the same machine as your client, use <a href="https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#stdio">STDIO </a>transport. The client will automatically launch your server as a subprocess when it starts up.</p><pre><code>if __name__ == "__main__":
    mcp.run()    # Uses STDIO transport by default</code></pre><h4>Streamable HTTP Transport: (Remote)</h4><p>If you're planning to build a remote MCP server that clients can access from different machines, use <a href="https://modelcontextprotocol.io/specification/2025-06-18/basic/transports#streamable-http">Streamable HTTP transport</a>. Your server will run as a standalone service that clients can connect to over the network.</p><pre><code>if __name__ == "__main__":
   #To use HTTP, specify it in the run() method along with networking options
    mcp.run(transport="http", host="127.0.0.1", port=8000)  </code></pre><blockquote><p>This Streamable HTTP Transport replaced the older <a href="https://modelcontextprotocol.io/specification/2024-11-05/basic/transports#http-with-sse">HTTP+SSE transport</a> method.</p></blockquote><h4>Custom Transport</h4><p>If you need specialized communication between your client and server that doesn't fit STDIO or HTTP patterns, build a custom transport. You define exactly how your client and server will communicate based on your specific requirements.</p><p>Here are some key differences between these transports.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QNEn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QNEn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 424w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 848w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 1272w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QNEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png" width="1158" height="610" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:1158,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65578,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QNEn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 424w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 848w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 1272w, https://substackcdn.com/image/fetch/$s_!QNEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fedf2b2-7fae-4986-b526-301f941af632_1158x610.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>From the above table, we clearly know that OAuth is for remote servers. For Local Servers, credentials can be fetched from environment variables.</p></blockquote><h2>3. Understanding OAuth</h2><p><a href="https://www.microsoft.com/en-us/security/business/security-101/what-is-oauth">OAuth</a> is an Open Authorization that lets a client access a server&#8217;s resources without the user having to share their credentials.</p><p>If no credentials are shared, how does OAuth authorize the client to access the server?</p><p>They use access tokens. These tokens are used to authorize the client to access the server.</p><p>In the MCP setup, there is a MCP client and a MCP server. When the server has OAuth enabled, it requires every incoming request from the client to include a valid access token. The client attaches this token to each request, and the server verifies it before processing. If the token is valid, the request is allowed, if not, the server blocks it. This ensures that only authorized clients can access the server.</p><p>But now a big question comes up. </p><p>How does the client get this token?</p><p>Here&#8217;s how the client obtains an access token in the MCP setup.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!z0Ve!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!z0Ve!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 424w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 848w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 1272w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!z0Ve!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png" width="1269" height="620" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:620,&quot;width&quot;:1269,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:58372,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!z0Ve!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 424w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 848w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 1272w, https://substackcdn.com/image/fetch/$s_!z0Ve!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6b63f7dd-7c11-4b7c-b678-dfdd902ad52e_1269x620.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The client sends a first request to the MCP Server without any Token. The MCP server responds with a 401 error along with details about which Authorization Server to use and how to request a token. Using this information, the client contacts the Authorization Server, obtains a token, and then uses it to access the MCP Server.</p><blockquote><p>Access tokens are not only used to authorize clients. They also specify what level of access the client has, such as read or write permissions.</p></blockquote><p>I hope now you have a clear idea of what OAuth is and how it controls access between the client and the server.</p><h2>4. OAuth Authorization flow for MCP Servers</h2><p>There are four common types of OAuth flows.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AuZX!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AuZX!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 424w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 848w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 1272w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AuZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png" width="1005" height="552" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b00f9973-f276-44f1-a510-ba17aad61397_1005x552.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:552,&quot;width&quot;:1005,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:118047,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AuZX!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 424w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 848w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 1272w, https://substackcdn.com/image/fetch/$s_!AuZX!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb00f9973-f276-44f1-a510-ba17aad61397_1005x552.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In this blog, we are going to see the Authorization Code Flow With PKCE, as this setup supports dynamic clients where any genuine client can authenticate and use the MCP Server.</p><h4>How Authorization Code Flow with PKCE Works</h4><ol><li><p>The MCP Client starts by sending a request to the MCP Server without a token.</p></li><li><p>The MCP Server responds with a 401 Unauthorized and provides authorization server details.</p></li><li><p>The Client extracts the metadata URL, fetches the metadata, and learns about the authorization and token endpoints, scopes, and supported grant types.</p></li><li><p>The Client may register itself dynamically with the Authorization Server to obtain client credentials.</p></li><li><p>The Client generates PKCE parameters (code_challenge, code_verifier) and opens the browser to the Authorization Server&#8217;s login page, passing client_id, resource details, and code_challenge.</p></li><li><p>The User logs in and approves the access request.</p></li><li><p>The Authorization Server redirects back to the Client with an authorization code.</p></li><li><p>The Client sends the authorization code along with the code_verifier to the Authorization Server&#8217;s token endpoint.</p></li><li><p>If valid, the Authorization Server returns an access token.</p></li><li><p>The Client retries the MCP request, now including the access token.</p></li><li><p>The MCP Server validates the token and grants access.</p></li><li><p>From this point, the Client continues communicating with the MCP Server using the access token until it expires.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sRbR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sRbR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 424w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 848w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 1272w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sRbR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png" width="902" height="735" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:735,&quot;width&quot;:902,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:77898,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sRbR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 424w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 848w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 1272w, https://substackcdn.com/image/fetch/$s_!sRbR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2867850-a15a-4dc1-99e8-cd9a57aa08be_902x735.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">source:- <a href="https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization">Authorization - Model Context Protocol</a></figcaption></figure></div><h2>5. Build and Deploy OAuth-protected MCP Server</h2><p>Now we are going to build MCP Server with OAuth and deploy in Render.</p><ul><li><p>Server: Streamable HTTP MCP Server </p></li><li><p>Framework: <a href="https://gofastmcp.com/servers/auth/authentication">FastMCP</a></p></li><li><p>Auth Provider: <a href="https://auth0.com/">Auth0</a></p></li><li><p>Hosting: <a href="https://render.com/">Render</a></p></li></ul><p>Here&#8217;s the simple MCP Server Code with OAuth implemented.</p><pre><code>from fastmcp import FastMCP
#from fastmcp.server.auth import RemoteAuthProvider
from fastmcp.server.auth.providers.jwt import JWTVerifier
from pydantic import AnyHttpUrl
import os
import sys
from datetime import datetime

# Read from environment
AUTH0_DOMAIN = os.getenv("AUTH0_DOMAIN", "your-tenant.us.auth0.com")
AUTH0_AUDIENCE = os.getenv("AUTH0_AUDIENCE", "https://your-api-identifier")
RESOURCE_SERVER_URL = os.getenv("RESOURCE_SERVER_URL", "https://your-domain.example.com/mcp") # your mcp server deployment url

# JWT verification setup
token_verifier = JWTVerifier(
    jwks_uri=f"https://{AUTH0_DOMAIN}/.well-known/jwks.json",
    issuer=f"https://{AUTH0_DOMAIN}/", # note the trailing slash
    audience=AUTH0_AUDIENCE            # must match your API identifier exactly
)

# Remote OAuth provider for MCP
auth = RemoteAuthProvider(
    token_verifier=token_verifier,
    authorization_servers=[AnyHttpUrl(f"https://{AUTH0_DOMAIN}/")],
    resource_server_url=RESOURCE_SERVER_URL      # usually your /mcp endpoint
)
mcp = FastMCP(name="Protected MCP Server", auth=auth)


@mcp.tool  
def test_str(name: str) -&gt; str:    
    return f"Hello, {name}!"


if __name__ == "__main__":
    port = int(os.environ.get("PORT", 8000))

    # Start an HTTP server on port 8000
    mcp.run(transport="http", host="0.0.0.0", port=8000)</code></pre><h4><strong>Auth0 Configurations</strong></h4><p>Quick setup guide for <a href="https://auth0.com/">Auth0</a> configuration required for OAuth-protected MCP server.</p><p><strong>Step 1. Create Application</strong></p><ul><li><p>In the Auth0 Dashboard, under Applications, create an application.</p></li><li><p>Link it to default API - Auth0 Management API or your own API if you plan to create as mentioned in step 2.</p></li><li><p>Grant the scopes: create:clients, read:clients, update:clients.</p></li></ul><p><strong>Step 2: Create API (Audience)</strong></p><ul><li><p>This step is needed if you want your own API instead of the default Auth0 Management API.</p></li><li><p>Under Applications &#8594; APIs, create a new API (e.g., MCP Server API).</p></li><li><p>Use a unique identifier (e.g. https://mcp-content-api ) with signing algorithm RS256.</p></li><li><p>Define scopes such as mcp:read, mcp:write</p></li></ul><p><strong>Step 3: Enable Dynamic Client Registration</strong></p><ul><li><p>Go to Auth0 Dashboard</p></li><li><p>Go to Settings &#8594; Advanced tab</p></li><li><p>Enable "OIDC Dynamic Application Registration"</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RFis!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RFis!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 424w, https://substackcdn.com/image/fetch/$s_!RFis!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 848w, https://substackcdn.com/image/fetch/$s_!RFis!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 1272w, https://substackcdn.com/image/fetch/$s_!RFis!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RFis!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png" width="718" height="158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/78801fb4-eb58-468e-93af-81711d08ec21_718x158.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:158,&quot;width&quot;:718,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18548,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RFis!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 424w, https://substackcdn.com/image/fetch/$s_!RFis!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 848w, https://substackcdn.com/image/fetch/$s_!RFis!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 1272w, https://substackcdn.com/image/fetch/$s_!RFis!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F78801fb4-eb58-468e-93af-81711d08ec21_718x158.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p><strong>Step 4: Make the API Identifier as Default Audience</strong></p><ul><li><p>Go to Auth0 Dashboard</p></li><li><p>Go to Settings &#8594; General Tab</p></li><li><p>Make your Identifier as Default Audience</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YH3k!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YH3k!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 424w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 848w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 1272w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YH3k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png" width="1198" height="274" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:274,&quot;width&quot;:1198,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52041,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!YH3k!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 424w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 848w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 1272w, https://substackcdn.com/image/fetch/$s_!YH3k!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8208f920-4dbe-463e-b697-c4d3d3f2cfb7_1198x274.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p>Remember to do step 3, and 4. Else you will not be able to connect your MCP Server from client even after authorization.</p></blockquote><p>With Auth0 configured, we can now deploy the MCP Server on <a href="https://render.com/">Render</a>. </p><h4><strong>Deploy Remote MCP Server</strong></h4><ul><li><p>In Render Dashboard, Create Web Service from Git repo.</p></li><li><p>Set the Build Command: <code>pip install -r requirements.txt</code></p></li><li><p>Set the Start Command: <code>python server.py</code></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EBg5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EBg5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 424w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 848w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 1272w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EBg5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png" width="1430" height="412" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:412,&quot;width&quot;:1430,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:49839,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EBg5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 424w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 848w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 1272w, https://substackcdn.com/image/fetch/$s_!EBg5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8698f99f-bcfc-4fed-9d78-69962681e590_1430x412.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li><li><p>Add Environment Variables </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!vtCJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!vtCJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 424w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 848w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 1272w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!vtCJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png" width="1247" height="259" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:259,&quot;width&quot;:1247,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!vtCJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 424w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 848w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 1272w, https://substackcdn.com/image/fetch/$s_!vtCJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6bca83e3-8bbf-4daa-ae10-328bb2e5e190_1247x259.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div></li><li><p>Click Deploy - MCP Server will be live at the Render URL</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KSaG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KSaG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 424w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 848w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 1272w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KSaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png" width="1048" height="307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:307,&quot;width&quot;:1048,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43633,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KSaG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 424w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 848w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 1272w, https://substackcdn.com/image/fetch/$s_!KSaG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4685321a-f853-49eb-91b4-c1a92addb3f5_1048x307.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></li></ul><h2><strong>6. Test OAuth MCP Server</strong></h2><p>I connected this remote OAuth MCP Server through <a href="https://github.com/modelcontextprotocol/inspector">MCP Inspector.</a> </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5ani!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5ani!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 424w, https://substackcdn.com/image/fetch/$s_!5ani!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 848w, https://substackcdn.com/image/fetch/$s_!5ani!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 1272w, https://substackcdn.com/image/fetch/$s_!5ani!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5ani!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png" width="737" height="577" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:577,&quot;width&quot;:737,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28787,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!5ani!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 424w, https://substackcdn.com/image/fetch/$s_!5ani!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 848w, https://substackcdn.com/image/fetch/$s_!5ani!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 1272w, https://substackcdn.com/image/fetch/$s_!5ani!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0be5c8d3-698c-4bb5-88a5-9e72836e1600_737x577.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>When you click Connect, the authorization flow begins. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dJo8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dJo8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 424w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 848w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 1272w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dJo8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png" width="382" height="528" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:528,&quot;width&quot;:382,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24401,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F41c1a448-23a7-4af0-9d00-5342ee8ce559_382x528.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dJo8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 424w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 848w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 1272w, https://substackcdn.com/image/fetch/$s_!dJo8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9ee47833-ad8b-4b17-ada3-d621f0c4ad59_382x528.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After you approve the request, MCP Inspector establishes the connection and loads the tools from the server.</p><p>Now test the tool from our MCP server: Enter a name, and the server responds with Hello {name}. </p><p>This is how it works.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aaYs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aaYs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 424w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 848w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 1272w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aaYs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png" width="776" height="801" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:801,&quot;width&quot;:776,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31875,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aaYs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 424w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 848w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 1272w, https://substackcdn.com/image/fetch/$s_!aaYs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3631efc6-3a48-4801-8e5a-b8593b474e49_776x801.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><br>Enable Google OAuth in Auth0</h2><p>To allow users to sign in with Google, enable the Google OAuth in Auth0.</p><ul><li><p>In the Auth0 Dashboard, go to Authentication &#8594; Social &#8594; Google OAuth.</p></li><li><p>Under Applications, turn on the toggle for your application.</p></li><li><p>Save the changes.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JuEn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JuEn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 424w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 848w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 1272w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JuEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png" width="989" height="462" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:462,&quot;width&quot;:989,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:134776,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!JuEn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 424w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 848w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 1272w, https://substackcdn.com/image/fetch/$s_!JuEn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F54a989c6-8a04-4e33-914b-0f5f8bd6e0b0_989x462.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Once enabled, users can sign in to the MCP server using their Google account.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-4Xt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-4Xt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 424w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 848w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 1272w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-4Xt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png" width="813" height="481" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:481,&quot;width&quot;:813,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26406,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/170066966?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-4Xt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 424w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 848w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 1272w, https://substackcdn.com/image/fetch/$s_!-4Xt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5ab9fba-0d37-4a54-8e46-baa5995d64a3_813x481.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Conclusion</h2><p>We walked through how to add OAuth to an MCP server step by step.</p><p>I couldn&#8217;t find a clear guide on setting up OAuth for an MCP server, so I put this together to show a simple, working flow from start to finish. The code and settings here are tested and working, and this MCP Server can work with other MCP clients too.</p><p>You can use any OAuth provider. Just wire it to your MCP server and see how it works for you.</p><p>Happy learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-implement-oauth-for-mcp-server?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-implement-oauth-for-mcp-server?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-implement-oauth-for-mcp-server?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[How to build a Full Stack Application using AI Agents]]></title><description><![CDATA[Product Idea - Planning - Coding - Code Review -Deployment]]></description><link>https://www.devshorts.in/p/how-to-build-a-full-stack-application</link><guid isPermaLink="false">https://www.devshorts.in/p/how-to-build-a-full-stack-application</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Fri, 01 Aug 2025 18:01:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!KL-s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have built many applications with the help of AI. But one question kept popping up in my mind. </p><p>Can we really use AI at every stage of product development, from ideation to deployment, and still ship a full-stack app that actually works?</p><p>To figure this out in detail, I decided to take a hands-on approach. I built a complete full stack app using AI tools. This blog walks through how I built it from end to end and highlights the tools I used at each stage.</p><p>Here are the stages I followed and the tools I used at each step.</p><ol><li><p>Product ideation - with O3</p></li><li><p>Requirements planning - with Traycer AI &amp; Task Master AI</p></li><li><p>Code implementation - with Claude Code</p></li><li><p>Code review - with CodeRabbit</p></li><li><p>Testing - using Claude Code and MCP Servers</p></li><li><p>Deployment - using Claude Code and MCP Servers</p></li></ol><p>If you&#8217;d like to read more posts on building with AI, you can subscribe below.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Product Development Stages</h2><p>When building this full stack app, I divided the product development process into clear stages. Everything started with the idea and moved step by step until deployment. Here are the stages I followed.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KL-s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KL-s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 424w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 848w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 1272w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KL-s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png" width="780" height="601" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:601,&quot;width&quot;:780,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:76396,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KL-s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 424w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 848w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 1272w, https://substackcdn.com/image/fetch/$s_!KL-s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa4f373c4-d638-42cb-8b85-14b3b8008f92_780x601.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The next diagram shows which AI Tool I used, from product ideation to deployment.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqVN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqVN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 424w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 848w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 1272w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png" width="1456" height="269" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:269,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:124665,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jqVN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 424w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 848w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 1272w, https://substackcdn.com/image/fetch/$s_!jqVN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2c720354-a2a9-4bc3-849e-b57554a7f4aa_1800x333.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>1. The Product Ideation: </h2><p>For product ideation, I asked o3 to suggest some ideas. o3 is a reasoning model from OpenAI. I gave a short prompt asking for product ideas and it returned a list of ideas. I picked the one that felt interesting to me. It was called Virtual Try on App.</p><p>Here&#8217;s what the app will do. Users upload their photo and a dress image. The app shows how the outfit looks on their body. It helps them decide before buying.</p><p>I liked this idea because it&#8217;s visual and interactive. It needed a good frontend to handle the image uploads and solid backend to process the images. </p><p>This app was a good use case for me to test how well AI agents can build a real full stack application. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EBRA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EBRA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 424w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 848w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 1272w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EBRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png" width="1307" height="730" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:730,&quot;width&quot;:1307,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:115218,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EBRA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 424w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 848w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 1272w, https://substackcdn.com/image/fetch/$s_!EBRA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e018a7d-2d32-447e-92fa-0c5fa9696f23_1307x730.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>2. Preparing PRD and Plan</h2><p>The next step was preparing the Product Requirements Document (PRD) and Technical Plan Document.</p><blockquote><p>Think of the PRD as the blueprint for the product. It defines what you are building and why. It outlines the core features, constraints, and assumptions. Basically, it serves as a high-level document that explains the product.</p></blockquote><p>I gave the product description to O3 and asked it to prepare PRD.md.</p><h4>Plan with Traycer</h4><p>Once PRD was clear, I gave it to <a href="https://traycer.ai/">Traycer AI</a>, and asked it to generate technical_plan.md </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3_ci!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3_ci!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 424w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 848w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 1272w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3_ci!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png" width="1149" height="545" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:545,&quot;width&quot;:1149,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80666,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3_ci!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 424w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 848w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 1272w, https://substackcdn.com/image/fetch/$s_!3_ci!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4aa2712e-9615-4060-b3fa-c6040932b6ea_1149x545.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Plan with Traycer, and Tasks with TaskMaster </h4><p>After creating the technical plan, there's another option I explored: <a href="https://www.task-master.dev/">TaskMaster AI</a>. I tested giving that plan to TaskMaster, and it generated a detailed task breakdown. While I didn't follow this task-by-task approach for this blog, it's worth noting as an alternative workflow. I'll cover TaskMaster in a separate post.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!XDRz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!XDRz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 424w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 848w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 1272w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!XDRz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png" width="1200" height="402" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:402,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78529,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!XDRz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 424w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 848w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 1272w, https://substackcdn.com/image/fetch/$s_!XDRz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd7ee5c8c-df0f-4244-879d-af9117abff30_1200x402.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here is a glimpse of the tasks generated by TaskMaster AI. Each task had an ID, title, description, priority, test strategy, and step-by-step instructions. </p><p>These tasks could be completed by the TaskMaster Agent itself or passed to Claude Code or any terminal agent to build the codebase task by task.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!o1IO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!o1IO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 424w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 848w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 1272w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!o1IO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png" width="1293" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe178dca-4d34-4112-a581-28336fa29201_1293x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:1293,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38397,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!o1IO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 424w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 848w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 1272w, https://substackcdn.com/image/fetch/$s_!o1IO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe178dca-4d34-4112-a581-28336fa29201_1293x361.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>For this experiment, I used the direct Plan with Traycer approach.</p></blockquote><p>I shared a PRD with Traycer, and it gave me a detailed technical_plan.md covering the system overview, architecture, and approach. </p><p>Here were the kinds of details Traycer included in the Technical Plan,</p><ul><li><p>Tech stack and framework selection</p></li><li><p>End-to-end data flow</p></li><li><p>Service communication diagrams</p></li><li><p>Environment setup</p></li><li><p>Testing strategy</p></li><li><p>Deployment and monitoring plan</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ptXF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ptXF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 424w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 848w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 1272w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ptXF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png" width="960" height="632" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:632,&quot;width&quot;:960,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:43721,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ptXF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 424w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 848w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 1272w, https://substackcdn.com/image/fetch/$s_!ptXF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8f7f8159-4aae-463e-9a20-bd82a3518c61_960x632.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!5VYf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!5VYf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 424w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 848w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 1272w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!5VYf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png" width="536" height="533" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/cf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:536,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:83190,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!5VYf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 424w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 848w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 1272w, https://substackcdn.com/image/fetch/$s_!5VYf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcf25fc5c-820b-481d-8964-9c204068a1e1_536x533.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>By the end of this step, I had a clear technical plan showing how the app would function and what needed to be built.</p><h2>3. Code with Claude Code:</h2><p>After preparing the technical plan, I moved on to the actual development. I gave the technical_plan.md to <a href="https://docs.anthropic.com/en/docs/claude-code/overview">Claude Code</a> and let it handle the setup. It read through the plan and started building the project step by step.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yjOW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yjOW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 424w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 848w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 1272w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yjOW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png" width="793" height="220" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:793,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:45597,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yjOW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 424w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 848w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 1272w, https://substackcdn.com/image/fetch/$s_!yjOW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8ae1dbd-17d6-41be-ad51-fc7bb8fd936c_793x220.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>First, Claude Code created the project structure for me. It set up separate folders for backend and frontend, added all the necessary config files, and got the basic setup ready.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7Kma!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7Kma!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 424w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 848w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 1272w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7Kma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png" width="426" height="213" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:213,&quot;width&quot;:426,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12102,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7Kma!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 424w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 848w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 1272w, https://substackcdn.com/image/fetch/$s_!7Kma!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b48d472-6c9c-4b73-b62a-731578f317ba_426x213.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Next, Claude started building the core of the app. It took care of scaffolding, set up the main routes, created basic UI components, and wired everything together according to the plan. Claude did most of the heavy lifting.</p><p>There were some hiccups. A few files did not run on the first try. A few flows needed adjustments. Whenever something was off, I gave feedback, and Claude updated the code and retried the steps. After a few rounds, the flow was working.</p><p>Once the base version was ready, I used Claude Code to push it to GitHub using the GitHub MCP Server. It initialized the repo, added the remote, committed the files, and pushed the code, all in one go.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JJAA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JJAA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 424w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 848w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 1272w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JJAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png" width="1032" height="533" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:533,&quot;width&quot;:1032,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44621,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JJAA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 424w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 848w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 1272w, https://substackcdn.com/image/fetch/$s_!JJAA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c577de0-7e22-4638-9e89-835f301959fe_1032x533.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p>One thing I&#8217;ve noticed with AI tools is they are good at moving fast. Especially for POCs and early-stage builds. This speed is a huge advantage. But developer oversight is still important.</p></blockquote><p>This is how Claude Code helped me get the base product ready.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;e0b11c87-d922-40e5-a15a-bf33208339ac&quot;,&quot;duration&quot;:null}"></div><p>With the scaffolded app in GitHub, I was ready to move on to the next stage. The next step was to review the code and fix any issues before continuing.</p><h2>4. Code Review with CodeRabbit:</h2><p>I reviewed the code using an AI code reviewer <a href="https://www.coderabbit.ai/">CodeRabbit</a>. It works inside the editor and can also review pull requests.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!r--q!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!r--q!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 424w, https://substackcdn.com/image/fetch/$s_!r--q!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 848w, https://substackcdn.com/image/fetch/$s_!r--q!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 1272w, https://substackcdn.com/image/fetch/$s_!r--q!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!r--q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png" width="1205" height="474" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:474,&quot;width&quot;:1205,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64582,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!r--q!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 424w, https://substackcdn.com/image/fetch/$s_!r--q!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 848w, https://substackcdn.com/image/fetch/$s_!r--q!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 1272w, https://substackcdn.com/image/fetch/$s_!r--q!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1320be8a-598e-4462-b13c-d5ddfd5fe099_1205x474.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This is how CodeRabbit showed reviews inside VS Code. It analyzed the entire codebase and added detailed feedback right inside VS Code. It pointed out potential issues, missing checks, CORS settings, and areas where the code could be improved or refactored. You can see comments on specific lines, and the right panel lists all the feedback in one place.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DPW6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DPW6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 424w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 848w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 1272w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DPW6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png" width="1046" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1046,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:78915,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DPW6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 424w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 848w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 1272w, https://substackcdn.com/image/fetch/$s_!DPW6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F614b8f48-26c6-40b2-973b-b49a850df61c_1046x768.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After each commit, it asked whether to review the changes. This made it easy to spot and fix issues right inside the editor.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-4aP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-4aP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 424w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 848w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 1272w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-4aP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png" width="603" height="166" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/390b0c49-727d-4802-99b7-427e86181a7a_603x166.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:166,&quot;width&quot;:603,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9979,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-4aP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 424w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 848w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 1272w, https://substackcdn.com/image/fetch/$s_!-4aP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F390b0c49-727d-4802-99b7-427e86181a7a_603x166.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>5. Testing</h2><p>For testing I just relied on the tools I already had in my stack.</p><blockquote><p>I tested both the frontend and backend using Claude Code, either directly or with a helper tool.</p></blockquote><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KPgP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KPgP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 424w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 848w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 1272w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KPgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png" width="665" height="157" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:157,&quot;width&quot;:665,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8157,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!KPgP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 424w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 848w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 1272w, https://substackcdn.com/image/fetch/$s_!KPgP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1a0579f-758f-4e60-a4f9-8ea8dbbab6a2_665x157.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Testing the UI</h4><p>To test the UI, I used the Playwright MCP Server along with Claude Code. The UI lets users upload their photo and a garment image. I checked if both uploads worked, if the try on button stayed disabled until both images were picked, and if the layout looked fine across browsers. The tests ran in headless mode and gave a simple pass or fail for each check. This covered the main user flows I wanted to test.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!BcLI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!BcLI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 424w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 848w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 1272w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!BcLI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png" width="1456" height="740" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:740,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:198950,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!BcLI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 424w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 848w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 1272w, https://substackcdn.com/image/fetch/$s_!BcLI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0e682fbc-1fd2-4bc0-a184-8888415a92b2_1903x967.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zWB0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zWB0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 424w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 848w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 1272w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zWB0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png" width="1456" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:97448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zWB0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 424w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 848w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 1272w, https://substackcdn.com/image/fetch/$s_!zWB0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F34e3c717-c434-47a2-9663-3e69ec7b2dec_1914x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Testing the API</h4><p>For backend testing, I asked Claude Code to scan the codebase and list the available API endpoints for testing.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zjDR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zjDR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 424w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 848w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 1272w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zjDR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png" width="978" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:978,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40636,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zjDR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 424w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 848w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 1272w, https://substackcdn.com/image/fetch/$s_!zjDR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd2481e8-bf18-43d3-9f23-1906e841a33b_978x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Claude Code generated the curl commands needed to test each API endpoint, covering both synchronous and asynchronous flows. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dybE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dybE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 424w, https://substackcdn.com/image/fetch/$s_!dybE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 848w, https://substackcdn.com/image/fetch/$s_!dybE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 1272w, https://substackcdn.com/image/fetch/$s_!dybE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dybE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png" width="810" height="568" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:568,&quot;width&quot;:810,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46222,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!dybE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 424w, https://substackcdn.com/image/fetch/$s_!dybE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 848w, https://substackcdn.com/image/fetch/$s_!dybE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 1272w, https://substackcdn.com/image/fetch/$s_!dybE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa47068ba-a9b5-4cea-8f76-a8afb8aa3888_810x568.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Here, Claude Code used curl commands to test the API with sample images. It asked me for confirmation before running each test.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!INrA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!INrA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 424w, https://substackcdn.com/image/fetch/$s_!INrA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 848w, https://substackcdn.com/image/fetch/$s_!INrA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 1272w, https://substackcdn.com/image/fetch/$s_!INrA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!INrA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png" width="1052" height="509" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:509,&quot;width&quot;:1052,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44337,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!INrA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 424w, https://substackcdn.com/image/fetch/$s_!INrA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 848w, https://substackcdn.com/image/fetch/$s_!INrA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 1272w, https://substackcdn.com/image/fetch/$s_!INrA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a23ae94-09ed-4f78-a9cc-3063f795ba10_1052x509.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After running the tests, I checked the results for job creation, fetching the processed image, and deleting a job. The responses confirmed that each API step worked as expected. Finally, Claude Code gave a summary, confirming that all the API endpoints had been tested successfully.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UKkq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UKkq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 424w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 848w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 1272w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UKkq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png" width="1002" height="551" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:551,&quot;width&quot;:1002,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37811,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!UKkq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 424w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 848w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 1272w, https://substackcdn.com/image/fetch/$s_!UKkq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb802b0eb-42e6-4047-a3c4-1ee7243989b5_1002x551.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>6. Deployment</h2><p>Here&#8217;s how I handled deployment for both frontend and backend using Claude Code and two different MCP servers.</p><p>This diagram shows the deployment workflow. The frontend was deployed using the Netlify MCP Server, and the backend was deployed using the Railway MCP Server.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6ond!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6ond!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 424w, https://substackcdn.com/image/fetch/$s_!6ond!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 848w, https://substackcdn.com/image/fetch/$s_!6ond!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 1272w, https://substackcdn.com/image/fetch/$s_!6ond!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6ond!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png" width="1234" height="343" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:343,&quot;width&quot;:1234,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:37063,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6ond!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 424w, https://substackcdn.com/image/fetch/$s_!6ond!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 848w, https://substackcdn.com/image/fetch/$s_!6ond!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 1272w, https://substackcdn.com/image/fetch/$s_!6ond!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4702b2f5-19dc-41a1-9d72-fa378c070d0c_1234x343.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Frontend Deployment</h4><p>I configured <a href="https://docs.netlify.com/build/build-with-ai/netlify-mcp-server/">Netlify MCP Server</a> with Claude Code, and I asked Claude to deploy the frontend. There were few issues during the first attempt, but Claude Code resolved them and deployed successfully.  After the deployment, the frontend was live at the given Netlify URL.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!R8fP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!R8fP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 424w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 848w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 1272w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!R8fP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png" width="1250" height="610" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:610,&quot;width&quot;:1250,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:64329,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!R8fP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 424w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 848w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 1272w, https://substackcdn.com/image/fetch/$s_!R8fP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3a184b-79f9-4678-91aa-5d33c4f0cab5_1250x610.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Netlify Console confirmed that the frontend was deployed successfully.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zE5x!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zE5x!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 424w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 848w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 1272w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zE5x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png" width="871" height="201" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/85750303-3588-409a-a9e1-824e2ba4173e_871x201.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:201,&quot;width&quot;:871,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24540,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zE5x!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 424w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 848w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 1272w, https://substackcdn.com/image/fetch/$s_!zE5x!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F85750303-3588-409a-a9e1-824e2ba4173e_871x201.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Backend Deployment</h4><p>Next, I used Claude Code to deploy the backend using the <a href="https://github.com/jason-tan-swe/railway-mcp">Railway MCP Server</a>. It set the environment variables, triggered deployment, and confirmed the API was live. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WhDy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WhDy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 424w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 848w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 1272w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WhDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png" width="1275" height="711" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:711,&quot;width&quot;:1275,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:80133,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WhDy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 424w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 848w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 1272w, https://substackcdn.com/image/fetch/$s_!WhDy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ef66e32-9df6-45e1-a272-55d5e71073ed_1275x711.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The Railway Console showed that the API was up and running.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ukYp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ukYp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 424w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 848w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 1272w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ukYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png" width="1456" height="535" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:535,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:109215,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ukYp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 424w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 848w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 1272w, https://substackcdn.com/image/fetch/$s_!ukYp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5bcbfbd3-201c-461c-afae-5160e14f1930_1901x699.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Connecting Frontend and Backend</strong></h4><p>Once both parts were live, I needed to integrate them.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mvhx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mvhx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 424w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 848w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 1272w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mvhx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png" width="1235" height="283" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:283,&quot;width&quot;:1235,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69349,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mvhx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 424w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 848w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 1272w, https://substackcdn.com/image/fetch/$s_!Mvhx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feee9013f-a6e5-4805-9643-0c0406a7d7d9_1235x283.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Initially, I faced CORS and Content Security Policy (CSP) issues that blocked API requests from the frontend to the backend.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TR0P!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TR0P!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 424w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 848w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 1272w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TR0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png" width="879" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:304,&quot;width&quot;:879,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:44125,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TR0P!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 424w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 848w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 1272w, https://substackcdn.com/image/fetch/$s_!TR0P!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffe0db44b-cb76-4199-a09b-0ec1387430ec_879x304.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>After adjusting the CORS headers and updating the CSP config, the frontend was able to communicate with the backend. The UI loaded correctly, and I could upload images and start the try-on workflow.</p><p>Here's the final working app I built entirely with AI tools - <a href="https://virtual-costume-frontend.netlify.app/">Virtual Try-On Fashion App</a>. </p><p>The application infrastructure works well. Users can upload images, trigger the try-on process, and receive results. The garment fitting isn't perfect since the underlying method simply merges images rather than realistic fitting, but the complete full-stack workflow functions as intended.</p><p>This shows that AI tools can assist at every stage of full-stack development and help us deliver functional applications.</p><p>Some Visuals from the App: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nFF8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nFF8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 424w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 848w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 1272w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nFF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png" width="1456" height="739" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:739,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:201621,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nFF8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 424w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 848w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 1272w, https://substackcdn.com/image/fetch/$s_!nFF8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b610d44-d3c2-43a3-a52f-017da7e8a894_1908x969.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WVXo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WVXo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 424w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 848w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 1272w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WVXo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png" width="1456" height="738" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:738,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:94973,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WVXo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 424w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 848w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 1272w, https://substackcdn.com/image/fetch/$s_!WVXo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F276a474f-4960-4bac-b291-7a0a113fa528_1918x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V6oi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V6oi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 424w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 848w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 1272w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V6oi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png" width="1456" height="741" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:741,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:327689,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/168535283?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!V6oi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 424w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 848w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 1272w, https://substackcdn.com/image/fetch/$s_!V6oi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff92774b9-4cd4-461d-af6e-aa73181cf874_1918x976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Deployment Notes for Developers</strong></h3><p>If you are building a POC, these free-tier platforms can help,</p><ul><li><p>For frontend: <a href="https://vercel.com/">Vercel</a>, <a href="https://render.com/">Render</a>, or <a href="https://www.netlify.com/">Netlify</a>.</p></li><li><p>For backend: <a href="https://render.com/">Render </a>or <a href="https://railway.com/">Railway</a>.</p></li></ul><blockquote><p>I used Railway for the backend deployment. Because Render&#8217;s MCP Server does not support free-tier API deployments through Claude Code. </p></blockquote><p>However, you can still do the free deployment using Render manually through the console.</p><h2>Conclusion</h2><p>After building this app, using AI Agents at every stage, I got a clear picture of what is possible today. From product planning to code implementation, testing, and deployment, AI agents like Traycer, Claude Code, and CodeRabbit helped move things faster and with less manual effort.</p><p>There were a few bumps along the way, especially with integration and some areas where the AI could do better. But for building a prototype or testing new ideas, this approach works well.</p><p>If you want to speed up development or cut down on manual steps, it is worth trying an AI-first workflow. Just make sure to spend enough time on planning. The clearer the plan, the better the results you get from the tools.</p><p>Hope you found this post useful.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-build-a-full-stack-application?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/how-to-build-a-full-stack-application?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/how-to-build-a-full-stack-application?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item><item><title><![CDATA[Claude Code: The Complete Guide for Developers]]></title><description><![CDATA[A step-by-step walkthrough to install, configure, and master Anthropic&#8217;s CLI-based AI coding agent]]></description><link>https://www.devshorts.in/p/claude-code-the-complete-guide-for</link><guid isPermaLink="false">https://www.devshorts.in/p/claude-code-the-complete-guide-for</guid><dc:creator><![CDATA[Aravind Putrevu]]></dc:creator><pubDate>Mon, 14 Jul 2025 14:31:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/65f27eb5-01e8-49d8-a903-44d2a386f255_608x308.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few months ago, Anthropic introduced <a href="https://docs.anthropic.com/en/docs/claude-code/overview">Claude Code</a>, an AI terminal coding agent to help developers in their workflow.</p><p>Initially, adoption was slow. The main reason? Accessing Claude Code required a separate Anthropic API key, which needed to be topped up with credits. In other words, even if you were a Claude Pro or Max subscriber, you still needed to pay extra to use Claude Code.</p><p>Many developers stayed away because of this cost issue.</p><p>However, Anthropic recently made a significant announcement. Claude Pro/Max users can now access Claude Code as part of their existing Pro ($20) or Max Plan ($100), with some usage limits. This update made Claude Code available to all paid Claude users.</p><p>With this change, more developers have started to use Claude Code. However, many people are still unsure about how to get started or how to make the most of its features. </p><p>So, I write this post to cover everything about Claude Code. The first part of this blog covers Claude Code setup and key features like slash commands, hooks, and MCP server integration. The second part includes useful GitHub repos for Claude Code, developer workflows, and pro tips, all in one place.</p><p>We'll cover:</p><h3>Part 1: Claude Code Basics</h3><ol><li><p>Installation and first run</p></li><li><p>Custom slash commands </p></li><li><p>Claude Code Hooks </p></li><li><p>Claude Code Memory</p></li><li><p>MCP integration, and IDE setup</p></li></ol><h3>Part 2: Claude Code Collections and Developer Workflows</h3><ol><li><p>Collections of Custom slash commands </p></li><li><p>Collections of Claude Code Hooks</p></li><li><p>Collections of claude.md files</p></li><li><p>Collections of Essential MCP servers</p></li><li><p>Build GitHub Actions workflow with Claude Code</p></li><li><p>Work on Multiple Features with Git Worktrees in Claude Code</p></li><li><p>Automate Your Development Workflow with Claude Code</p></li><li><p>Calculate Your Claude Code Usage </p></li><li><p>How to justify the $100 Max plan</p></li><li><p>Ten Pro Tips for Claude Code </p></li></ol><p>Let us get started! </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Dev Shorts is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Part 1: Claude Code Basics</h2><p>Claude Code is a terminal-based coding agent from Anthropic. It's now the latest alternative to Cursor. Since it runs in the terminal, you can use it with any IDE or your existing workflow.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pOnA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pOnA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 424w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 848w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 1272w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pOnA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png" width="721" height="307" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:307,&quot;width&quot;:721,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:12238,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pOnA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 424w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 848w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 1272w, https://substackcdn.com/image/fetch/$s_!pOnA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dd0203f-ee44-4e32-a48a-fcab3a0636b1_721x307.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1.1 Installation and First Run</h3><p>Setting up Claude Code is straightforward. Ensure you have Node.js 18 or newer and a supported operating system such as macOS, Linux, or Windows with WSL. </p><p>Install Claude Code with npm:</p><pre><code>npm install -g @anthropic-ai/claude-code
cd your-project-directory
claude</code></pre><blockquote><p>Do NOT use <code>"sudo npm install -g" </code>as this can lead to permission issues.</p></blockquote><p>Authenticate with your Anthropic account on first run. Make sure you have a Pro or Max subscription to access it without extra API costs.</p><h3>1.2 Slash Commands</h3><p>Claude Code comes with built-in <a href="https://docs.anthropic.com/en/docs/claude-code/slash-commands">slash commands</a>. It makes working with Claude Code much easier. Explore commands by typing <code>/help</code> or just start typing <code>/</code> to see the full list.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;0987af2f-3d3c-474f-8704-37400fc6105b&quot;,&quot;duration&quot;:null}"></div><h4>Custom slash command</h4><p>Claude Code lets you create custom slash commands. These are basically shortcuts for prompts you use often. Instead of typing the same prompts over and over, you create a command and reuse it.</p><p>There are two types of custom commands you can create,</p><ul><li><p><a href="https://docs.anthropic.com/en/docs/claude-code/slash-commands#personal-commands">Personal Commands</a> (will be available across all your projects)</p></li><li><p><a href="https://docs.anthropic.com/en/docs/claude-code/slash-commands#project-commands">Project Commands</a> (specific to a single project)</p></li></ul><h4>Creating Personal (user) Command:</h4><p>a. Create a markdown file and place your file in <code>~/.claude/commands/</code>.</p><pre><code><code>cd /home/user-name
mkdir -p .claude/commands
vi cleanup.md</code></code></pre><p>b. Write all your prompt instruction in that markdown file. Use $ARGUMENTS for dynamic variables.</p><pre><code><code>#cleanup.md

Analyze $ARGUMENTS and identify dead code:
- Unused functions and methods
- Unreachable code paths
- Unused imports and dependencies
- Commented-out code blocks
- Obsolete configuration files

Provide a cleanup plan with safe removal suggestions and potential impact analysis.</code></code></pre><p>c. Save the markdown. Now use <code>/cleanup</code> in Claude Code to run your instruction.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6HCL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6HCL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 424w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 848w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 1272w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6HCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png" width="820" height="165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:165,&quot;width&quot;:820,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:8856,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!6HCL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 424w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 848w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 1272w, https://substackcdn.com/image/fetch/$s_!6HCL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb20facc1-effa-4f40-a9ce-9004f7e095e4_820x165.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HKQA!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HKQA!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 424w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 848w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 1272w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HKQA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png" width="1417" height="532" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:532,&quot;width&quot;:1417,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61757,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!HKQA!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 424w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 848w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 1272w, https://substackcdn.com/image/fetch/$s_!HKQA!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9aca80c8-d90d-491b-a50b-49fef99c85b1_1417x532.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Usage examples:</h4><p>"<code>/cleanup src/components</code>" to clean a directory, "<code>/cleanup UserService.js</code>" to clean a file, and "<code>/cleanup authentication</code>"<code> </code>to clean a specific feature.</p><p>I tried this on my codebase. Here's how it worked based on the instruction given in the cleanup.md file.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!E_Of!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!E_Of!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 424w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 848w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 1272w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!E_Of!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png" width="1456" height="740" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:740,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:129037,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!E_Of!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 424w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 848w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 1272w, https://substackcdn.com/image/fetch/$s_!E_Of!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F290f95f9-d5b4-4d59-985e-b0050caac5ec_1894x962.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Creating Project Command:</h4><p>Project commands live in <code>project_dir/.claude/commands/</code> and are only visible within that project.</p><p>a. Create the markdown file inside your project.</p><pre><code>cd your-project-directory
mkdir -p .claude/commands
vi security-review.md</code></pre><p>b. Add your prompt and save.</p><pre><code><code>#security-review.md

Review this code for security vulnerabilities.
Suggest fixes for any security issues you find.
Highlight any risky dependencies or unsafe patterns in the code.</code></code></pre><p>c. Now you can use <code>/security-review</code> in your project.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_3Yi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_3Yi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 424w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 848w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 1272w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_3Yi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png" width="1042" height="195" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14903b0c-245c-41ae-a796-3675028505cc_1042x195.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:195,&quot;width&quot;:1042,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9644,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!_3Yi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 424w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 848w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 1272w, https://substackcdn.com/image/fetch/$s_!_3Yi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14903b0c-245c-41ae-a796-3675028505cc_1042x195.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4sG6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4sG6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 424w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 848w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 1272w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4sG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png" width="1456" height="496" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:496,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:87685,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!4sG6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 424w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 848w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 1272w, https://substackcdn.com/image/fetch/$s_!4sG6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3fe5aa83-da56-48f4-aa17-2ce911ca9902_1840x627.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Organizing Commands with Folders</h4><p>You can organize commands in subdirectories for better structure. </p><pre><code><code>project_root/.claude/commands/

&#9500;&#9472;&#9472; frontend/
&#9474;   &#9492;&#9472;&#9472; code-refactor.md
&#9500;&#9472;&#9472; backend/
&#9474;   &#9492;&#9472;&#9472; build-api.md
&#9492;&#9472;&#9472; utils/
    &#9492;&#9472;&#9472; create-README.md</code></code></pre><p>When organized this way, Claude Code displays folder names with slash commands. It makes easy to find what you need.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CoTk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CoTk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 424w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 848w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 1272w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CoTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png" width="1422" height="290" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:290,&quot;width&quot;:1422,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146061,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F27577c71-3f26-48ab-96ee-de8588b66e71_1422x290.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CoTk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 424w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 848w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 1272w, https://substackcdn.com/image/fetch/$s_!CoTk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdcf76ffc-5ea1-4b48-b0ab-afa296883f5f_1422x290.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Quick Tips</h4><ul><li><p>Keep commands simple and focused.</p></li><li><p>Use <code>$ARGUMENTS</code> to pass dynamic inputs.</p></li></ul><h3>1.3 Claude Code Hooks</h3><p><a href="https://docs.anthropic.com/en/docs/claude-code/hooks">Claude Code Hooks</a> are user-defined shell commands that run at specific points in your workflow. Because these hooks execute without confirmation, it&#8217;s important to make sure they are safe and secure.</p><p>a. Create hooks using /hooks command.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!F_J9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!F_J9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 424w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 848w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 1272w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!F_J9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png" width="862" height="131" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:131,&quot;width&quot;:862,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6216,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!F_J9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 424w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 848w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 1272w, https://substackcdn.com/image/fetch/$s_!F_J9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F96839e6b-a00a-4356-a517-dd4ac264ee8a_862x131.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>b. Choose when your hook should run (e.g., before a tool runs, after it runs, on notifications, etc.).</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-_V1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-_V1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 424w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 848w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 1272w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-_V1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png" width="1765" height="647" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:647,&quot;width&quot;:1765,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:103990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6c62621c-872d-4193-afff-a2a07143cdfa_1765x647.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-_V1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 424w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 848w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 1272w, https://substackcdn.com/image/fetch/$s_!-_V1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6694c738-8d4c-474c-aead-f5a48f815178_1765x647.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>c. Once the hook event is selected, Add New Matcher </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I0X0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I0X0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 424w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 848w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 1272w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I0X0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png" width="962" height="296" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:296,&quot;width&quot;:962,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:27076,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F791c0724-985a-436d-8ea9-86ddd0656868_962x296.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I0X0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 424w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 848w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 1272w, https://substackcdn.com/image/fetch/$s_!I0X0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc1b87d00-5f3f-42c7-b496-c114496bdda8_962x296.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>d. Type <code>Bash</code> for the matcher. Find the <a href="https://docs.anthropic.com/en/docs/claude-code/hooks#pretooluse">various matchers</a> for PreToolUse. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Tyi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Tyi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 424w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 848w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 1272w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Tyi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png" width="716" height="118" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/729abdfd-e5b2-4be4-b482-f31572274812_716x118.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:118,&quot;width&quot;:716,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3618,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!9Tyi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 424w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 848w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 1272w, https://substackcdn.com/image/fetch/$s_!9Tyi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F729abdfd-e5b2-4be4-b482-f31572274812_716x118.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>e. Click Add New Hook. and enter the command that needs to be run, </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!aI0C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!aI0C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 424w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 848w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 1272w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!aI0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png" width="895" height="285" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:285,&quot;width&quot;:895,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26208,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb87a99bf-384f-48db-9a40-bf72e07b308b_895x285.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!aI0C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 424w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 848w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 1272w, https://substackcdn.com/image/fetch/$s_!aI0C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1d1a6f5-57c0-448f-93aa-e215dcc0b248_895x285.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!lutV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lutV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 424w, https://substackcdn.com/image/fetch/$s_!lutV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 848w, https://substackcdn.com/image/fetch/$s_!lutV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 1272w, https://substackcdn.com/image/fetch/$s_!lutV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lutV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png" width="800" height="211" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:211,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9269,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5bd4f96-ef34-4596-a6ce-c881a02f848b_800x211.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!lutV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 424w, https://substackcdn.com/image/fetch/$s_!lutV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 848w, https://substackcdn.com/image/fetch/$s_!lutV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 1272w, https://substackcdn.com/image/fetch/$s_!lutV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F517e9b74-dcb5-4b7d-93d7-23689e263c74_800x211.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>f. Save the hook either at user or project level.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Vo-i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Vo-i!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 424w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 848w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 1272w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Vo-i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png" width="888" height="322" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:322,&quot;width&quot;:888,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32496,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Vo-i!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 424w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 848w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 1272w, https://substackcdn.com/image/fetch/$s_!Vo-i!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe84b545a-04fb-488d-8e18-1270fd5f080b_888x322.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>g. Once added you can see your hooks with /hooks list.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DxT5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DxT5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 424w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 848w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 1272w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DxT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png" width="947" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:947,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24861,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F50ff2e67-59c8-42bf-b92f-22d346594a74_947x275.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DxT5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 424w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 848w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 1272w, https://substackcdn.com/image/fetch/$s_!DxT5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F55727f73-03b2-4af5-ab53-d18db56941d0_947x275.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>We selected PreToolUse as hook event. It means every time Claude Code is about to execute any prompt, your hook script will run first. If your script finds any issues, it can even stop the process right there. </p><p>This is a simple example of how effectively we can use hooks.</p><p>Hooks settings in Claude Code are saved in settings files. You can set them for yourself or for your whole project.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ywaw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ywaw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 424w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 848w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 1272w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ywaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png" width="785" height="241" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/abc89ae6-1198-4569-839e-d5be878469fa_785x241.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:241,&quot;width&quot;:785,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48371,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!ywaw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 424w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 848w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 1272w, https://substackcdn.com/image/fetch/$s_!ywaw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fabc89ae6-1198-4569-839e-d5be878469fa_785x241.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>1.4 Claude Code Memory</h3><p>Claude Code has a <a href="https://docs.anthropic.com/en/docs/claude-code/memory">memory feature</a> called the CLAUDE.md file. This is the first file it reads with every prompt. Add your project details, coding standards, build steps, or anything else you want Claude to remember, just like Cursor rules.</p><h4>Memory Types</h4><p>Claude Code supports three memory types. Each one serves a different purpose.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2h0w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2h0w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 424w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 848w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 1272w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2h0w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png" width="926" height="369" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/da9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:369,&quot;width&quot;:926,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86889,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!2h0w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 424w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 848w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 1272w, https://substackcdn.com/image/fetch/$s_!2h0w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fda9519f3-f617-4ff8-b112-d629f521f2d9_926x369.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Command to Create CLAUDE.md</h4><p>Run <code>/init</code> to bootstrap the file. Choose the memory type and location.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WQfU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WQfU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 424w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 848w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 1272w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WQfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png" width="884" height="122" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:122,&quot;width&quot;:884,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:6805,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WQfU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 424w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 848w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 1272w, https://substackcdn.com/image/fetch/$s_!WQfU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9fd0658f-19a8-4611-b571-4de8a9742db9_884x122.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4-zm!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4-zm!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 424w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 848w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 1272w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4-zm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png" width="869" height="271" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:271,&quot;width&quot;:869,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31190,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F67a3bb8d-9070-46fe-a6a3-61886caf840f_869x565.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!4-zm!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 424w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 848w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 1272w, https://substackcdn.com/image/fetch/$s_!4-zm!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d4b8b39-0f97-473a-8519-c37889ec3aa8_869x271.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Command to Edit CLAUDE.md</h4><p>Use <code>/memory</code> to edit </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1kIW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1kIW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 424w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 848w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 1272w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1kIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png" width="719" height="127" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:127,&quot;width&quot;:719,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5210,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1kIW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 424w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 848w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 1272w, https://substackcdn.com/image/fetch/$s_!1kIW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F94ce260b-084c-44b9-94b3-1f7440ad21eb_719x127.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zT2b!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zT2b!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 424w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 848w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 1272w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zT2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png" width="840" height="248" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/dd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:248,&quot;width&quot;:840,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22127,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!zT2b!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 424w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 848w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 1272w, https://substackcdn.com/image/fetch/$s_!zT2b!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fdd208875-f578-4c97-9527-eeb7c0bcb9c0_840x248.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>Quickly add memories with the </strong><code>#</code><strong> shortcut</strong></h4><p>To add memory fast, write your input with the `#` character and enter. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8EDk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8EDk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 424w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 848w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 1272w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8EDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png" width="1161" height="275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:275,&quot;width&quot;:1161,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:24685,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!8EDk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 424w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 848w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 1272w, https://substackcdn.com/image/fetch/$s_!8EDk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb7ef485a-58a4-40e6-b798-554c69c3fb76_1161x275.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>What you can write in CLAUDE.md</h4><p>CLAUDE.md can contain any information you want Claude Code to remember about your project. It can have project overview, commands, coding standards, folder structure, design notes, links to docs, etc.</p><p>Below are some examples</p><p>project preferences</p><pre><code><code>See @README for project overview and @package.json for available npm commands for this project.

# Additional Instructions
- git workflow @docs/git-instructions.md</code></code></pre><p>personal preferences</p><pre><code><code># Individual Preferences
- @~/.claude/my-project-instructions.md</code></code></pre><p>Let us now see how to add MCP Servers in Claude Code.</p><h3>1.5 MCP Integration and IDE Setup</h3><p>We can connect <a href="https://docs.anthropic.com/en/docs/claude-code/mcp">Claude Code to different MCP Servers</a>. </p><ul><li><p>Stdio MCP Server (Local or npm/PyPI MCP Server using stdio transport)</p></li><li><p>SSE MCP Server (Remote MCP server using SSE as transport)</p></li><li><p>Streamable HTTP MCP Server (Remote MCP server using HTTP streaming)</p></li></ul><h4>Adding Stdio MCP Server</h4><pre><code># Basic syntax
claude mcp add &lt;name-for-server&gt; -s &lt;scope&gt; &lt;command&gt; [args...] -e &lt;env-variables&gt;</code></pre><p>For example, I added the <a href="https://github.com/makenotion/notion-mcp-server?tab=readme-ov-file#using-npm">Notion MCP server</a> with user-level scope and custom environment variables.</p><ul><li><p>Use <code>-s</code> to set the scope (e.g., <code>user</code> or project)</p></li><li><p>Use <code>-e</code> to pass environment variables</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DVUH!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DVUH!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 424w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 848w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 1272w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DVUH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png" width="1416" height="247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:247,&quot;width&quot;:1416,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:38482,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DVUH!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 424w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 848w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 1272w, https://substackcdn.com/image/fetch/$s_!DVUH!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc59324da-6500-46b6-990f-e6ab72acf53d_1416x247.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>I also tested it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RAaf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RAaf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 424w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 848w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 1272w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RAaf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png" width="1305" height="556" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:556,&quot;width&quot;:1305,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69125,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RAaf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 424w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 848w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 1272w, https://substackcdn.com/image/fetch/$s_!RAaf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F524f1857-d836-491b-8c43-b8e2e3181bc2_1305x556.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Adding SSE MCP Server</h4><p>I built an SSE-based MCP server long back, so let&#8217;s try adding that now.</p><p>Add <code>"--transport SSE" </code>Flag for SSE Server</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kr2e!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kr2e!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 424w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 848w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 1272w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kr2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png" width="1315" height="223" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:223,&quot;width&quot;:1315,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:30643,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kr2e!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 424w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 848w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 1272w, https://substackcdn.com/image/fetch/$s_!kr2e!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F68c84f12-b964-4cea-9c8b-4be9bc816c32_1315x223.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>And it works like below.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S-xN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S-xN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 424w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 848w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 1272w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S-xN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png" width="1456" height="344" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:344,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42854,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S-xN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 424w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 848w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 1272w, https://substackcdn.com/image/fetch/$s_!S-xN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff49591a8-f85d-485c-8b94-f5b0785071a3_1460x345.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><blockquote><p>Note that MCP originally used HTTP + SSE for transport. It now supports the improved HTTP Stream transport but still remains compatible with SSE. If you want to know more about the MCP transport, please check <a href="https://modelcontextprotocol.io/docs/concepts/transports#built-in-transport-types">this page.</a></p></blockquote><p>So let us now try connecting the latest HTTP Stream MCP Server.</p><h4>Adding Streamable HTTP MCP Server</h4><p>I built an MCP server that uses HTTP stream transport. This server deploys your web app to Vercel or Render based on your input. I connected it to Claude Code using the --transport http flag.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_9A6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_9A6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 424w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 848w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 1272w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_9A6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png" width="1527" height="177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:177,&quot;width&quot;:1527,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:28272,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2d712429-7603-4590-bd11-e46838ee627c_1527x177.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_9A6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 424w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 848w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 1272w, https://substackcdn.com/image/fetch/$s_!_9A6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5b802735-4c4b-4421-b2ff-09ce8d0b9680_1527x177.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Explore MCP Servers using <code>/mcp </code>command.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c9yU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c9yU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 424w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 848w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 1272w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c9yU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png" width="946" height="204" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:204,&quot;width&quot;:946,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21842,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c9yU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 424w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 848w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 1272w, https://substackcdn.com/image/fetch/$s_!c9yU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00b4014f-4fb6-4512-a104-5e1175faa688_946x204.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!zhOO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!zhOO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 424w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 848w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 1272w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!zhOO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png" width="846" height="228" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/21e7b79a-7997-43cf-80c3-932e02198852_846x228.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:228,&quot;width&quot;:846,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17724,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!zhOO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 424w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 848w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 1272w, https://substackcdn.com/image/fetch/$s_!zhOO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F21e7b79a-7997-43cf-80c3-932e02198852_846x228.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VyTO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VyTO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 424w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 848w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 1272w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VyTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png" width="742" height="130" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:130,&quot;width&quot;:742,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9461,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VyTO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 424w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 848w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 1272w, https://substackcdn.com/image/fetch/$s_!VyTO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e66fcc7-3eba-4d04-863a-f53886bce86b_742x130.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Import MCP Servers from Claude Desktop</h4><p>If you have MCP servers configured in Claude Desktop, you can <a href="https://docs.anthropic.com/en/docs/claude-code/mcp#import-mcp-servers-from-claude-desktop">import</a> them into Claude Code with a single command.</p><pre><code>claude mcp add-from-claude-desktop</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jJcl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jJcl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 424w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 848w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 1272w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jJcl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png" width="1080" height="443" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:443,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41553,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jJcl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 424w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 848w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 1272w, https://substackcdn.com/image/fetch/$s_!jJcl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa66c3dbd-4a90-44da-88f2-bd321df3f93d_1080x443.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>Add MCP servers from JSON configuration</h4><p>You can also add <a href="https://docs.anthropic.com/en/docs/claude-code/mcp#add-mcp-servers-from-json-configuration">MCP Servers from JSON configuration</a>.</p><pre><code>claude mcp add-json &lt;name&gt; '&lt;json&gt;'</code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tncx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tncx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 424w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 848w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 1272w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tncx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png" width="1477" height="111" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/320850b7-244f-4e13-934b-db87e131a535_1477x111.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:111,&quot;width&quot;:1477,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25722,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23845937-1ad1-40a8-b7bb-0fbde675b2de_1477x111.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Tncx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 424w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 848w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 1272w, https://substackcdn.com/image/fetch/$s_!Tncx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F320850b7-244f-4e13-934b-db87e131a535_1477x111.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>Use MCP prompts as slash commands</h4><p>If you&#8217;ve worked with MCP servers before, you know they <a href="https://github.com/modelcontextprotocol/typescript-sdk?tab=readme-ov-file#prompts">have prompts</a>. Claude Code will automatically detect these prompts from any connected MCP server and <a href="https://docs.anthropic.com/en/docs/claude-code/mcp#use-mcp-prompts-as-slash-commands">show them as slash commands</a> in your console.</p><blockquote><p>By default, Claude Code doesn&#8217;t create slash commands for MCP servers. But if you define prompts in your MCP server, those prompts become available as slash commands inside Claude Code.</p></blockquote><p>You can see this in my screenshot below. After I added a prompt to my web extractor MCP server, Claude Code instantly created a new command called <code>/web-extractor:summarize-url</code>. Now, I can use my MCP server directly with a single command.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W70c!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W70c!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 424w, https://substackcdn.com/image/fetch/$s_!W70c!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 848w, https://substackcdn.com/image/fetch/$s_!W70c!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 1272w, https://substackcdn.com/image/fetch/$s_!W70c!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W70c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png" width="1377" height="147" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:147,&quot;width&quot;:1377,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9357,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!W70c!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 424w, https://substackcdn.com/image/fetch/$s_!W70c!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 848w, https://substackcdn.com/image/fetch/$s_!W70c!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 1272w, https://substackcdn.com/image/fetch/$s_!W70c!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F064dd4a3-9a78-4385-ae0b-cf926ba674cd_1377x147.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Prompts are a core concept in MCP, just like tools and resources. Here&#8217;s the code I added to my MCP server to register this prompt named <code>"</code>summarize-url<code>".</code></p><pre><code>// Prompt: summarize-url
server.registerPrompt(
  "summarize-url",
  {
    title: "Summarize URL Content",
    description: "Extract content from the given URL and summarize it",
    argsSchema: { 
      url: z.string().url().describe("The URL to extract and summarize")
    }
  },
  ({ url }) =&gt; ({
    messages: [{
      role: "user",
      content: {
        type: "text",
        text: `Extract content from ${url} and summarize it`
      }
    }]
  })
);</code></pre><h4>Integrate Claude Code with IDE</h4><p>You can use <a href="https://docs.anthropic.com/en/docs/claude-code/ide-integrations">Claude Code directly inside your code editor</a>. This makes coding much easier.</p><p>Most popular IDEs have Claude Code plugins. Install the plugin for your editor. VS Code, Cursor, Windsurf, and JetBrains IDEs all support it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yTEi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yTEi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 424w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 848w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 1272w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yTEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png" width="1075" height="311" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:311,&quot;width&quot;:1075,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:42328,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!yTEi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 424w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 848w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 1272w, https://substackcdn.com/image/fetch/$s_!yTEi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2fbf7e17-b719-4330-bd1a-00abc517329d_1075x311.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>Part 2: Claude Code Collections and Developer Workflows</h2><p>This second part of the blog will share helpful collections and real developer workflows with Claude Code. You&#8217;ll find links, examples, and tips you can use right away.</p><h3>2.1 Collections of Slash Commands</h3><p>We use custom slash commands to save time and automate tasks.  I&#8217;ve collected some GitHub repos that give useful custom slash commands.</p><ul><li><p><a href="https://github.com/hesreallyhim/awesome-claude-code?tab=readme-ov-file#slash-commands-">slash commands by awesome claude code</a></p></li><li><p><a href="https://www.claudecode.io/commands">claudecode.io commands directory</a></p></li><li><p><a href="https://slashcommands.cc/">slashcommands.cc</a></p></li><li><p><a href="https://github.com/qdhenry/Claude-Command-Suite?tab=readme-ov-file#claude-code-custom-slash-commands">claude command suite</a></p></li><li><p><a href="https://github.com/hikarubw/claude-commands?tab=readme-ov-file#claude-commands">claude custom commands</a></p></li></ul><h3>2.2 Collection of Claude Code Hooks</h3><ul><li><p>The <a href="https://github.com/disler/claude-code-hooks-mastery?tab=readme-ov-file#claude-code-hooks-mastery">claude-code-hooks-mastery</a> repo has hooks for blocking risky commands, logging tool actions, and sending notifications. You can explore the <code>.claude/hooks</code> folder to see real examples.</p></li><li><p>This <a href="https://github.com/hesreallyhim/awesome-claude-code?tab=readme-ov-file#hooks-">awesome-claude-code repo</a> also collects useful hook examples from the community.</p></li><li><p>The <a href="https://github.com/automazeio/claude-code-for-power-users?tab=readme-ov-file#hooks--automation">claude-code-for-power-users</a> repo lists hooks for tasks like code formatting and notifications.</p></li></ul><h3><strong>2.3 Collection of claude.md files</strong></h3><p>Developers use <code>claude.md</code> files to help Claude remember project details, coding standards, and instructions. </p><ul><li><p><a href="https://github.com/hesreallyhim/awesome-claude-code?tab=readme-ov-file#claudemd-files-">This GitHub repo</a> has a collection of claude.md files from different projects.</p></li><li><p><a href="https://github.com/automazeio/claude-code-for-power-users?tab=readme-ov-file#comprehensive-claudemd-structure">claude-code-for-power-users</a> explains a comprehensive claude.md structure.</p></li></ul><h3>2.4 Available MCP Servers for Claude Code</h3><p>There are many MCP servers available for Claude Code. Here are some resources with lists of available and essential MCP servers.</p><ul><li><p><a href="https://github.com/undeadpickle/claude-code-mcpinstall?tab=readme-ov-file#essential-mcp-servers">Essential MCP Servers</a> </p></li><li><p><a href="https://www.anthropic.com/partners/mcp">Anthropic MCP Integrations</a></p></li><li><p><a href="https://github.com/punkpeye/awesome-mcp-servers?tab=readme-ov-file#server-implementations">Awesome MCP Servers</a></p></li><li><p><a href="https://mcp.so/">MCP Server Directory</a></p></li></ul><h3><strong>2.5 Build GitHub Actions workflow with Claude Code</strong></h3><p>You can go from idea to working automation by just describing what you need.<br>Watch a <a href="https://www.youtube.com/watch?v=VC6dmPcin2E">demo video</a> here.</p><p>In this demo, the user asks Claude Code to create a GitHub Actions workflow that updates the README with a list of <code>.md</code> files. Claude Code breaks the request into steps, generates the required Python script and workflow files, commits the changes, and handles any errors along the way. After setup, every commit automatically updates the README as requested.</p><h3><strong>2.6 </strong>Work on Multiple Features with Git Worktrees</h3><ul><li><p>Sometimes you need to work on multiple features at once. But working in the same branch causes conflicts.</p></li><li><p>Use Git worktrees to create separate copies of your codebase with each copy on its own branch.</p></li><li><p>This means you can develop different features in parallel.</p></li><li><p>You can automate the setup with scripts or terminal aliases to create branches and open new IDE windows.</p></li><li><p>Run a separate Claude Code instance in each worktree with its own terminal and port.</p></li><li><p>Your work stays isolated, so features don&#8217;t clash.</p></li><li><p>When you finish a feature, just commit your changes and merge them back into the main branch.</p></li><li><p>This approach is great for anyone who wants to build multiple features at once without waiting.</p></li></ul><p>Watch the complete technical implementation <a href="https://www.youtube.com/watch?v=Bz5fyyCa2-0&amp;t=34s">here</a>.</p><h3><strong>2.7 Automate Development Workflow with Claude Code</strong></h3><ul><li><p>Turn on plan mode with Shift+Tab to see the plan before coding starts.</p></li><li><p>Use <code>/init</code> to set up your claude.md file with project rules and context.</p></li><li><p>Drag in screenshots of errors or UI designs to give Claude more context.</p></li><li><p>Add folders from other projects so Claude understands your full app structure.</p></li><li><p>Share docs or paste URLs so Claude has access to the latest API info.</p></li><li><p>For big projects, let Claude use sub-agents to work on tasks in parallel.</p></li><li><p>Always review the code output, just like you would with a pull request.</p></li><li><p>Create custom slash commands like <code>/issues [task description]</code> to generate GitHub issues in user story format. The issue gets uploaded to GitHub automatically.</p></li><li><p>Run <code>/work [issue number]</code> to pull an issue, let Claude work on it, and make commits after every big change.</p></li></ul><p>See how another developer runs <a href="https://www.youtube.com/watch?v=gNR3XI5Eb0k">this workflow</a> here.</p><h3><strong>2.8 Calculate Your Claude Code Usage</strong></h3><p>If you want to track Claude Code usage, try the <a href="https://github.com/ryoppippi/ccusage">ccusage tool</a>. It analyzes your Claude Code token usage and costs from local JSONL files.</p><pre><code>npm install -g ccusage

ccusage          # Show daily report (default)
ccusage daily    # Daily token usage and costs
ccusage monthly  # Monthly aggregated report</code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-pGg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-pGg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 424w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 848w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 1272w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-pGg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png" width="1456" height="453" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:453,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:65538,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-pGg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 424w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 848w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 1272w, https://substackcdn.com/image/fetch/$s_!-pGg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff7f48be8-2eb1-45a8-966a-613fff14f0d2_1897x590.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>2.9 How to Justify the $100 Max Plan</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xhCk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xhCk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 424w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 848w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 1272w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xhCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png" width="1456" height="438" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:438,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:140904,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xhCk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 424w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 848w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 1272w, https://substackcdn.com/image/fetch/$s_!xhCk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd4fe2b5f-55c8-40ff-8bd0-65ac8d15cf44_1658x499.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><a href="https://github.com/automazeio/claude-code-for-power-users?tab=readme-ov-file#pricing-strategy-for-power-users">source:- Claude API and Plan comparison</a></figcaption></figure></div><h3>2.10 Ten Pro Tips for Claude Code</h3><p><a href="https://www.anthropic.com/engineering/claude-code-best-practices">This post</a> from Anthropic discusses some Claude Code best practices. In addition to that, here are some tips I've found useful.</p><h4><strong>1. Claude Code as a CLI</strong></h4><p>Claude Code works like any command-line tool. You can use arguments, run it headless, chain commands, and pipe data. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!31Y6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!31Y6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 424w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 848w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 1272w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!31Y6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png" width="997" height="310" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:310,&quot;width&quot;:997,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:23550,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!31Y6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 424w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 848w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 1272w, https://substackcdn.com/image/fetch/$s_!31Y6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7756b3c0-a208-487d-827e-7e1b41ccd284_997x310.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>2. Use Claude Code with flags for more features</strong></h4><p>You can add flags to your commands for extra control. For example, you can set the output format as json using a flag. Here are some useful flags.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!S5NU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!S5NU!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 424w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 848w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 1272w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!S5NU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png" width="891" height="293" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:293,&quot;width&quot;:891,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25766,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!S5NU!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 424w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 848w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 1272w, https://substackcdn.com/image/fetch/$s_!S5NU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb9090690-95db-4f33-b7bf-e098c685d9e8_891x293.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4><strong>3. Plan Mode for Better Results</strong> </h4><p>Press Shift+Tab to activate plan mode. Claude Code creates a detailed plan before writing any code. Review the plan first, then let it execute.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KUQp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KUQp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 424w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 848w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 1272w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KUQp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png" width="685" height="126" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/edde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:126,&quot;width&quot;:685,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:9158,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KUQp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 424w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 848w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 1272w, https://substackcdn.com/image/fetch/$s_!KUQp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fedde20a2-4c18-46a7-9d3f-8c7bd9c06067_685x126.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4><strong>4. Use Sub-Agents for Complex Tasks</strong> </h4><p>For big projects, tell Claude Code to use sub-agents. Multiple Claude instances work in parallel on different parts of your task. This turns hours of work into minutes.</p><h4><strong>5. Skip Permissions for Claude Code</strong> </h4><p>Use <code>--dangerously-skip-permissions</code> while starting claude to avoid continuous permission prompts.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WkKF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WkKF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 424w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 848w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 1272w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WkKF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png" width="1456" height="441" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:441,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48678,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!WkKF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 424w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 848w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 1272w, https://substackcdn.com/image/fetch/$s_!WkKF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7b5ae4ce-416c-4d1b-a3fc-b09bd0b47105_1458x442.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>6. Slash Commands for frequent and common Tasks</h4><p>Create slash commands for frequent and common tasks like refactoring or code review. They save time and add flexibility. </p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HNpk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HNpk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 424w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 848w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 1272w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HNpk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png" width="969" height="101" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:101,&quot;width&quot;:969,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:11604,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://www.devshorts.in/i/166586913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HNpk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 424w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 848w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 1272w, https://substackcdn.com/image/fetch/$s_!HNpk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F623e5f34-b2c0-41e3-8b5a-787f3ceca34d_969x101.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>7. Memory Management - claude.md File</h4><p>The claude.md file is your project&#8217;s memory. You can use it to store instructions, style guides, and any important information you want Claude Code to remember.<br>When writing instructions, be as clear and specific as possible.</p><p>For example: &#8220;Use 2-space indentation&#8221; is much better than just saying &#8220;Format code properly.&#8221;</p><h4><strong>8. Image Feedback and Screenshot Automation</strong></h4><p>When you&#8217;re building a UI, you can give feedback to Claude Code by pasting screenshots. Just drag and drop the image. You can also automate taking screenshots using a Puppeteer or Playwright MCP server. Claude Code is really good at handling UI tasks if you share an image and ask it to make changes.</p><h4><strong>9. Claude Code as MCP Server and Client</strong></h4><p>Claude Code works both as an MCP server and a client. You can connect other MCP servers to Claude Code to use their tools. You can also make Claude Code act as an MCP server, so other clients can connect and use what Claude Code offers.</p><h4><strong>10. Claude Code with GitHub </strong></h4><p>Claude Code works seamlessly with the GitHub CLI. You can open pull requests, review code, and manage issues from the interface. The GitHub MCP Server is rarely needed, so you can think and add this, if it is really needed.</p><h2>Conclusion</h2><p>We have now seen everything about Claude Code. It is time for you to try out the commands and configurations we discussed. Explore them and find the workflow that works best for you.</p><p>Since Claude Code is available with both Pro and Max plans, you can use it for all kinds of tasks without any extra cost. It makes development smoother and more efficient.</p><p>So go ahead and give Claude Code a try. See how it fits into your daily workflow and helps you get more done.</p><p>Happy Learning!</p><div class="captioned-button-wrap" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-code-the-complete-guide-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="CaptionedButtonToDOM"><div class="preamble"><p class="cta-caption">Thanks for reading Dev Shorts! This post is public so feel free to share it.</p></div><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://www.devshorts.in/p/claude-code-the-complete-guide-for?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Share&quot;}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://www.devshorts.in/p/claude-code-the-complete-guide-for?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Share</span></a></p></div>]]></content:encoded></item></channel></rss>