<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Ayyaz Zafar</title>
    <description>The latest articles on DEV Community by Ayyaz Zafar (@ayyazzafar).</description>
    <link>https://dev.to/ayyazzafar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3726527%2F02c462d2-bddf-424f-a7ff-92695425756c.png</url>
      <title>DEV Community: Ayyaz Zafar</title>
      <link>https://dev.to/ayyazzafar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ayyazzafar"/>
    <language>en</language>
    <item>
      <title>Why Most Free Claude Code Setups Break (And the One That Doesn't)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Sat, 11 Apr 2026 13:36:21 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/why-most-free-claude-code-setups-break-and-the-one-that-doesnt-43pi</link>
      <guid>https://dev.to/ayyazzafar/why-most-free-claude-code-setups-break-and-the-one-that-doesnt-43pi</guid>
      <description>&lt;p&gt;There's a specific reason why plugging a free model into Claude Code usually fails, and it's not the model quality.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/iYEtOmkvw7k"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Requirement: Tool Calling
&lt;/h2&gt;

&lt;p&gt;Claude Code's agent loop works like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Receive task&lt;/li&gt;
&lt;li&gt;Call a tool (create file, run command, read output)&lt;/li&gt;
&lt;li&gt;Observe result&lt;/li&gt;
&lt;li&gt;Continue or adjust&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 2 requires the model to support &lt;strong&gt;function calling&lt;/strong&gt; — the ability to call structured tools, not just generate text. Most free models either don't support it at all, or implement it in a way that breaks at step 2 or 3. The agent starts working and then silently fails or returns garbage.&lt;/p&gt;

&lt;p&gt;This is why OpenRouter free tiers, most local models, and generic API proxies don't work well with Claude Code as an agent. They work fine for chat. They fail for agentic tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemma 4 31B: Native Function Calling
&lt;/h2&gt;

&lt;p&gt;Gemma 4 31B has proper native function calling support. That's what makes it actually work as a coding agent — not just a code generator that hands text back to you.&lt;/p&gt;

&lt;p&gt;To verify: I ran two tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 1: Build a Python terminal dashboard&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;Create&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="n"&gt;script&lt;/span&gt; &lt;span class="n"&gt;called&lt;/span&gt; &lt;span class="n"&gt;dashboard&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;py&lt;/span&gt; &lt;span class="n"&gt;that&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Generates&lt;/span&gt; &lt;span class="n"&gt;sample&lt;/span&gt; &lt;span class="n"&gt;SaaS&lt;/span&gt; &lt;span class="nf"&gt;metrics &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Revenue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Users&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Signups&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Churn&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Prints&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="n"&gt;metric&lt;/span&gt; &lt;span class="n"&gt;cards&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;trend&lt;/span&gt; &lt;span class="n"&gt;arrows&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;ASCII&lt;/span&gt; &lt;span class="n"&gt;bar&lt;/span&gt; &lt;span class="n"&gt;chart&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;months&lt;/span&gt; &lt;span class="n"&gt;of&lt;/span&gt; &lt;span class="n"&gt;revenue&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Recent&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="n"&gt;table&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;Python&lt;/span&gt; &lt;span class="n"&gt;standard&lt;/span&gt; &lt;span class="n"&gt;library&lt;/span&gt; &lt;span class="n"&gt;only&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;run&lt;/span&gt; &lt;span class="n"&gt;it&lt;/span&gt; &lt;span class="n"&gt;after&lt;/span&gt; &lt;span class="n"&gt;creating&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It created the file, ran it, verified the output. Full agent loop, zero issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 2: Find and fix 3 bugs in user_report.py&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The script had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;=&lt;/code&gt; instead of &lt;code&gt;==&lt;/code&gt; in a list comprehension (syntax error)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;datetime.datetime.now&lt;/code&gt; without &lt;code&gt;()&lt;/code&gt; (subtle runtime error)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user[email]&lt;/code&gt; instead of &lt;code&gt;user["email"]&lt;/code&gt; (missing quotes)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemma 4 found all three, explained each one, fixed them, and ran the fixed version to confirm output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup (One Command)
&lt;/h2&gt;

&lt;p&gt;Install Ollama if you don't have it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ollama launch claude &lt;span class="nt"&gt;--model&lt;/span&gt; gemma4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This connects Claude Code to Gemma 4 31B running on Ollama's cloud. The download is a small routing file — not 20GB. First run asks you to authenticate with Ollama. After that, it's instant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest Limitations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Free tier:&lt;/strong&gt; Measured in GPU time, not tokens. Resets periodically. A normal coding session fits fine. Heavy daily use will hit the limit — $20/month gives 50x more headroom.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;HTML generation bug:&lt;/strong&gt; Current version produces malformed output (doubled tags) for HTML specifically. Python, shell, JSON, config files — all fine. Don't use it for frontend templating.&lt;/p&gt;

&lt;h2&gt;
  
  
  When This Is Useful
&lt;/h2&gt;

&lt;p&gt;If you want to test Claude Code's agentic capabilities before committing to an Anthropic plan, this is the most functional free option available right now. The tool calling works, the agent loop completes, and the model is capable enough to handle real tasks.&lt;/p&gt;

&lt;p&gt;Full writeup: &lt;a href="https://ayyaztech.com/blog/gemma4-claude-code-ollama-cloud-free" rel="noopener noreferrer"&gt;ayyaztech.com/blog/gemma4-claude-code-ollama-cloud-free&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ollama</category>
      <category>ai</category>
      <category>llm</category>
    </item>
    <item>
      <title>The 3 Things That Trip Up Every VPS Beginner (And How to Handle Each One)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Fri, 10 Apr 2026 15:25:43 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/the-3-things-that-trip-up-every-vps-beginner-and-how-to-handle-each-one-44pp</link>
      <guid>https://dev.to/ayyazzafar/the-3-things-that-trip-up-every-vps-beginner-and-how-to-handle-each-one-44pp</guid>
      <description>&lt;p&gt;Setting up a VPS for the first time is manageable — until you hit one of three walls. Here's what they are and exactly how to get past each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wall 1: UFW Firewall
&lt;/h2&gt;

&lt;p&gt;Most tutorials tell you to run &lt;code&gt;ufw enable&lt;/code&gt; and move on. The part they skip: what to allow first.&lt;/p&gt;

&lt;p&gt;If you enable UFW before allowing SSH, you lock yourself out of your own server.&lt;/p&gt;

&lt;p&gt;Safe sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ufw allow 22      &lt;span class="c"&gt;# SSH — do this FIRST&lt;/span&gt;
ufw allow 80      &lt;span class="c"&gt;# HTTP&lt;/span&gt;
ufw allow 443     &lt;span class="c"&gt;# HTTPS&lt;/span&gt;
ufw &lt;span class="nb"&gt;enable&lt;/span&gt;        &lt;span class="c"&gt;# now enable it&lt;/span&gt;
ufw status        &lt;span class="c"&gt;# verify&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Everything not on this list is blocked. An open VPS gets port-scanned within hours of provisioning — don't skip this step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wall 2: nginx Reverse Proxy
&lt;/h2&gt;

&lt;p&gt;Your Node.js app runs on port 3000. Visitors come in on port 80. nginx is the bridge between them.&lt;/p&gt;

&lt;p&gt;The config that makes this work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;server&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;listen&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kn"&gt;server_name&lt;/span&gt; &lt;span class="s"&gt;your-domain.com&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="kn"&gt;location&lt;/span&gt; &lt;span class="n"&gt;/&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_pass&lt;/span&gt; &lt;span class="s"&gt;http://localhost:3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_http_version&lt;/span&gt; &lt;span class="mf"&gt;1.1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Upgrade&lt;/span&gt; &lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Connection&lt;/span&gt; &lt;span class="s"&gt;'upgrade'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_set_header&lt;/span&gt; &lt;span class="s"&gt;Host&lt;/span&gt; &lt;span class="nv"&gt;$host&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="kn"&gt;proxy_cache_bypass&lt;/span&gt; &lt;span class="nv"&gt;$http_upgrade&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save this to &lt;code&gt;/etc/nginx/sites-available/myapp&lt;/code&gt;, symlink it to &lt;code&gt;sites-enabled&lt;/code&gt;, test with &lt;code&gt;nginx -t&lt;/code&gt;, reload with &lt;code&gt;systemctl reload nginx&lt;/code&gt;. That's the full flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wall 3: PM2 (The One Everyone Forgets)
&lt;/h2&gt;

&lt;p&gt;If you start your app with &lt;code&gt;node app.js&lt;/code&gt; and close the terminal — app is gone. If the server reboots — app is gone.&lt;/p&gt;

&lt;p&gt;PM2 fixes this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; pm2
pm2 start app.js &lt;span class="nt"&gt;--name&lt;/span&gt; myapp
pm2 startup        &lt;span class="c"&gt;# generates a command — run it&lt;/span&gt;
pm2 save           &lt;span class="c"&gt;# saves the process list for reboot&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two commands most people miss: &lt;code&gt;pm2 startup&lt;/code&gt; and &lt;code&gt;pm2 save&lt;/code&gt;. Without both, your app won't survive a reboot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Putting It All Together with Claude Code
&lt;/h2&gt;

&lt;p&gt;If you want to see these three things handled automatically on a fresh VPS, I put together a full walkthrough where Claude Code does the entire setup from one SSH prompt — including the firewall, reverse proxy, and PM2 config.&lt;/p&gt;

&lt;p&gt;Full guide: &lt;a href="https://ayyaztech.com/blog/hostinger-vps-setup-claude-code" rel="noopener noreferrer"&gt;ayyaztech.com/blog/hostinger-vps-setup-claude-code&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Video walkthrough: &lt;a href="https://youtu.be/AX9Wp_YxTpU" rel="noopener noreferrer"&gt;youtu.be/AX9Wp_YxTpU&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vps</category>
      <category>devops</category>
      <category>nginx</category>
      <category>linux</category>
    </item>
    <item>
      <title>Claude AI in Slack: Summarize Threads, Review Code, and Fix Bugs with a PR</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Thu, 09 Apr 2026 19:28:40 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/claude-ai-in-slack-summarize-threads-review-code-and-fix-bugs-with-a-pr-3df6</link>
      <guid>https://dev.to/ayyazzafar/claude-ai-in-slack-summarize-threads-review-code-and-fix-bugs-with-a-pr-3df6</guid>
      <description>&lt;p&gt;What if you could ask Claude to fix all the bugs in your GitHub repo — without leaving Slack?&lt;/p&gt;

&lt;p&gt;One message. It clones the repo, finds the bugs, fixes them, and opens a pull request. Here's the full setup and three real demos.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/goqn4Et1xhw"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Be Able to Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;✅ Summarize threads and extract action items instantly&lt;/li&gt;
&lt;li&gt;✅ Review code snippets pasted directly in a channel&lt;/li&gt;
&lt;li&gt;✅ Analyze your entire GitHub repo, fix bugs, and create a PR — all from one message&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;Slack workspace&lt;/strong&gt; where you have permission to install apps&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;Claude Pro or Max plan&lt;/strong&gt; (Claude Code routing requires this)&lt;/li&gt;
&lt;li&gt;At least one &lt;strong&gt;GitHub repo connected&lt;/strong&gt; on &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;claude.ai/code&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Install Claude in Your Slack Workspace
&lt;/h2&gt;

&lt;p&gt;Open Slack → More → Tools → Apps → Search "Claude" → Add to Slack → Authorize.&lt;/p&gt;

&lt;p&gt;Once installed, the Claude app appears in your Slack sidebar.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Connect Your Claude Account
&lt;/h2&gt;

&lt;p&gt;Click the Claude app → connect your account via the App Home tab.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Configure Routing Mode (Critical)
&lt;/h2&gt;

&lt;p&gt;Go to the &lt;strong&gt;Home tab&lt;/strong&gt; of the Claude app. Set &lt;strong&gt;Routing Mode&lt;/strong&gt; to &lt;strong&gt;Code + Chat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Without this, Claude won't route to Claude Code for repository work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Connect Your GitHub Repo
&lt;/h2&gt;

&lt;p&gt;Go to &lt;a href="https://claude.ai/code" rel="noopener noreferrer"&gt;claude.ai/code&lt;/a&gt;, click &lt;strong&gt;Select Repository&lt;/strong&gt;, and connect the repo you want Claude to work with.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo 1: Summarize a Thread in 5 Seconds
&lt;/h2&gt;

&lt;p&gt;In any Slack channel (invite Claude first with &lt;code&gt;/invite @Claude&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Claude summarize this thread and list any action items
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5 seconds. Full summary with action items extracted. Ideal for catching up after being away.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo 2: Code Review Without Leaving Slack
&lt;/h2&gt;

&lt;p&gt;Paste code directly in Slack:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/:id&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Claude review this code — why might it return undefined for a valid user ID?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude catches it immediately: &lt;code&gt;req.params.id&lt;/code&gt; is a &lt;strong&gt;string&lt;/strong&gt;, but user IDs are &lt;strong&gt;numbers&lt;/strong&gt;. Strict &lt;code&gt;===&lt;/code&gt; comparison always fails. No tab switching needed.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo 3: Fix Your Entire Repo from Slack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@Claude look at this repo: https://github.com/your-username/your-repo
Find all the bugs and fix them.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Routes to Claude Code automatically&lt;/li&gt;
&lt;li&gt;Clones and reads all files&lt;/li&gt;
&lt;li&gt;Lists every bug (location + explanation)&lt;/li&gt;
&lt;li&gt;Fixes them&lt;/li&gt;
&lt;li&gt;Creates a branch and opens a PR&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You get two buttons: &lt;strong&gt;View session&lt;/strong&gt; (full Claude Code web view) and &lt;strong&gt;Create PR&lt;/strong&gt; (one click, PR is live).&lt;/p&gt;

&lt;p&gt;In my demo it found 4 bugs: string/number comparison in GET and DELETE, missing validation on POST, and broken ID generation.&lt;/p&gt;




&lt;h2&gt;
  
  
  Important Limitations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No session memory across messages&lt;/strong&gt; — each new &lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; mention = fresh session. For follow-up work, use the Claude Code web session it opens.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Channels only&lt;/strong&gt; — doesn't work in DMs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Requires Pro or Max plan&lt;/strong&gt; + GitHub connected.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Quick Setup Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Claude installed in Slack workspace&lt;/li&gt;
&lt;li&gt;[ ] Account connected (App Home → Connect)&lt;/li&gt;
&lt;li&gt;[ ] Routing Mode → &lt;strong&gt;Code + Chat&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;[ ] GitHub repo connected on claude.ai/code&lt;/li&gt;
&lt;li&gt;[ ] Claude invited to your channel&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Slack → Claude Code → GitHub PR flow is what makes this worth setting up. One prompt, full diff, ready to review.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>slack</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>STOP — Claim Your Free Claude Credits Before April 17 (New Usage Bundles)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Mon, 06 Apr 2026 16:36:26 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/stop-claim-your-free-claude-credits-before-april-17-new-usage-bundles-5ala</link>
      <guid>https://dev.to/ayyazzafar/stop-claim-your-free-claude-credits-before-april-17-new-usage-bundles-5ala</guid>
      <description>&lt;p&gt;Anthropic just changed how third-party tools work with your Claude subscription. Tools like OpenClaw now use "extra usage" instead of your plan.&lt;/p&gt;

&lt;p&gt;To make up for it, they're giving every subscriber a one-time FREE credit:&lt;br&gt;
💰 Pro plan → $20 free&lt;br&gt;
💰 Max 5x plan → $100 free&lt;br&gt;
💰 Max 20x plan → $200 free&lt;/p&gt;

&lt;p&gt;I claimed my $100 live in this video. Took 5 seconds.&lt;/p&gt;

&lt;p&gt;⚠️ You MUST claim before April 17, 2026 or you lose it.&lt;/p&gt;

&lt;p&gt;They also launched usage bundles:&lt;br&gt;
• $50 bundle → pay $45 (10% off)&lt;br&gt;
• $250 bundle → pay $200 (20% off)&lt;br&gt;
• $1000 bundle → pay $700 (30% off)&lt;/p&gt;

&lt;p&gt;Claim here: &lt;a href="https://claude.ai/settings/usage" rel="noopener noreferrer"&gt;https://claude.ai/settings/usage&lt;/a&gt;&lt;br&gt;
Full walkthrough: &lt;a href="https://youtu.be/rfTmTpAcPvs" rel="noopener noreferrer"&gt;https://youtu.be/rfTmTpAcPvs&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>claude</category>
    </item>
    <item>
      <title>Deploy Next.js to Hostinger with One AI Prompt (Claude Code Tutorial)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Sun, 05 Apr 2026 17:20:13 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/deploy-nextjs-to-hostinger-with-one-ai-prompt-claude-code-tutorial-347b</link>
      <guid>https://dev.to/ayyazzafar/deploy-nextjs-to-hostinger-with-one-ai-prompt-claude-code-tutorial-347b</guid>
      <description>&lt;p&gt;What if deploying a Next.js app to a VPS took just one sentence?&lt;/p&gt;

&lt;p&gt;You just bought a fresh Hostinger VPS. It's a blank Ubuntu server — nothing installed. No Node.js, no Nginx, no PM2, nothing.&lt;/p&gt;

&lt;p&gt;Normally, you'd spend 30+ minutes SSHing in, installing packages, creating config files, setting up reverse proxies, and troubleshooting why port 80 isn't working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if you could skip all of that and just tell an AI to do it?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That's exactly what this tutorial shows. One prompt to &lt;a href="https://docs.anthropic.com/en/docs/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, and your Next.js app is live on your VPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Watch the Full Tutorial
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/8xwFqyVj9ms"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://www.hostg.xyz/aff_c?offer_id=988&amp;amp;aff_id=77550&amp;amp;url=https%3A%2F%2Fwww.hostinger.com%2Fvps-hosting" rel="noopener noreferrer"&gt;Hostinger VPS&lt;/a&gt; running Ubuntu (fresh, nothing installed)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.anthropic.com/en/docs/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; installed on your Mac or Linux machine&lt;/li&gt;
&lt;li&gt;Your VPS IP address from the Hostinger dashboard&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Set Up SSH Key Access
&lt;/h2&gt;

&lt;p&gt;Before Claude Code can connect to your server, you need SSH key authentication. This is a one-time step.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate an SSH Key (if you don't have one):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Press Enter through the prompts to accept defaults. This creates a key pair in &lt;code&gt;~/.ssh/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Copy your public key:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the entire output and paste it into your Hostinger VPS dashboard under SSH Keys.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: The One Prompt That Does Everything
&lt;/h2&gt;

&lt;p&gt;Open Claude Code in your terminal and give it this single prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSH into my server at root@YOUR_SERVER_IP, install Node.js, 
create a new Next.js app at /var/www/mysite, configure nginx 
as a reverse proxy to port 3000, set up a systemd service to 
keep the app running, and make it live on port 80.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;YOUR_SERVER_IP&lt;/code&gt; with your actual Hostinger VPS IP address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's it. One prompt.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude Code Does Automatically
&lt;/h2&gt;

&lt;p&gt;After you hit Enter, Claude Code handles everything — without you typing a single SSH command:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SSHs into your server using your key&lt;/li&gt;
&lt;li&gt;Updates system packages&lt;/li&gt;
&lt;li&gt;Installs Node.js (via NodeSource)&lt;/li&gt;
&lt;li&gt;Creates a &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; app at &lt;code&gt;/var/www/mysite&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Builds the app for production&lt;/li&gt;
&lt;li&gt;Installs and configures Nginx as a reverse proxy to port 3000&lt;/li&gt;
&lt;li&gt;Creates a systemd service so the app auto-starts on reboot&lt;/li&gt;
&lt;li&gt;Starts the app and makes it live on port 80&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The whole process takes a few minutes — compared to 30+ minutes of manual configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  See It Live
&lt;/h2&gt;

&lt;p&gt;Once Claude Code finishes, open your browser and navigate to your VPS IP address. You'll see your Next.js app running live — the default welcome page, served via Nginx on port 80.&lt;/p&gt;

&lt;p&gt;No Docker. No CI/CD pipeline. No YAML files. Just one prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Update Your App with a Follow-Up Prompt
&lt;/h2&gt;

&lt;p&gt;Want to make changes? Just give Claude Code another prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SSH into my server at root@YOUR_SERVER_IP and change the heading 
of the Next.js app at /var/www/mysite to "Deployed by AI", 
then rebuild and restart the app.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code will SSH in, find the right file, update the heading, rebuild the app, restart the systemd service, and your site is updated.&lt;/p&gt;

&lt;h2&gt;
  
  
  This Works for More Than Next.js
&lt;/h2&gt;

&lt;p&gt;The same pattern works for deploying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React apps (with serve or Nginx for static files)&lt;/li&gt;
&lt;li&gt;Angular apps&lt;/li&gt;
&lt;li&gt;Python/Django/Flask apps&lt;/li&gt;
&lt;li&gt;Express.js APIs&lt;/li&gt;
&lt;li&gt;Any web application that runs on a Linux server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Just describe what you want in plain English, and Claude Code figures out the commands.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Hostinger VPS?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.hostg.xyz/aff_c?offer_id=988&amp;amp;aff_id=77550&amp;amp;url=https%3A%2F%2Fwww.hostinger.com%2Fvps-hosting" rel="noopener noreferrer"&gt;Hostinger VPS&lt;/a&gt; is an excellent choice for this workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Affordable pricing&lt;/strong&gt; — plans start very low for a full Ubuntu VPS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clean Ubuntu installs&lt;/strong&gt; — fresh slate, no bloatware&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSH key support&lt;/strong&gt; built into the dashboard&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast provisioning&lt;/strong&gt; — server ready in minutes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full root access&lt;/strong&gt; — install whatever you need&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Server deployment doesn't have to be tedious and error-prone. With Claude Code and a Hostinger VPS, you can go from a blank server to a live Next.js application in one prompt.&lt;/p&gt;

&lt;p&gt;Try it yourself: grab a &lt;a href="https://www.hostg.xyz/aff_c?offer_id=988&amp;amp;aff_id=77550&amp;amp;url=https%3A%2F%2Fwww.hostinger.com%2Fvps-hosting" rel="noopener noreferrer"&gt;Hostinger VPS&lt;/a&gt;, install &lt;a href="https://docs.anthropic.com/en/docs/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt;, and deploy your next project with a single sentence.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>ai</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
    <item>
      <title>Open Code + MiniMax M2.7: Get 95% Cheaper AI Coding (Claude Code Alternative)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Sat, 04 Apr 2026 13:38:22 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/open-code-minimax-m27-get-95-cheaper-ai-coding-claude-code-alternative-eem</link>
      <guid>https://dev.to/ayyazzafar/open-code-minimax-m27-get-95-cheaper-ai-coding-claude-code-alternative-eem</guid>
      <description>&lt;p&gt;&lt;em&gt;How I replaced my $200/month Claude Code subscription with a setup that costs $5-15/month — and barely noticed the difference.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/yIugnFXvO6Y"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you've been using Claude Code (or want to), you know the pain: it's incredible, but it's expensive. Claude Code Max runs $100-200/month, and even API usage with Claude Opus 4.6 at $5/M input and $25/M output adds up fast.&lt;/p&gt;

&lt;p&gt;What if I told you there's an open-source alternative with 135K+ GitHub stars that gives you 90% of Opus quality at roughly 95% less cost?&lt;/p&gt;

&lt;p&gt;Meet &lt;strong&gt;Open Code + MiniMax M2.7&lt;/strong&gt; — the combo that changed my workflow completely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Full blog post:&lt;/strong&gt; &lt;a href="https://ayyaztech.com/blog/open-code-minimax-m2-7-cheap-ai-coding-claude-code-alternative" rel="noopener noreferrer"&gt;Read on AyyazTech&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Open Code?
&lt;/h2&gt;

&lt;p&gt;Open Code is an open-source AI coding assistant that runs in your terminal — just like Claude Code. But here's the key difference: you can use &lt;em&gt;any&lt;/em&gt; AI model with it, not just Claude. That means you can pick cheaper models that still deliver great results.&lt;/p&gt;

&lt;p&gt;With 135K+ GitHub stars, it's one of the most popular AI coding tools out there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MiniMax M2.7?
&lt;/h2&gt;

&lt;p&gt;MiniMax M2.7 is where the magic happens. According to Kilo Code benchmarks, it delivers approximately 90% of Claude Opus quality. But look at the pricing difference:&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;MiniMax M2.7&lt;/th&gt;
&lt;th&gt;Claude Opus 4.6&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Input&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.30/M tokens&lt;/td&gt;
&lt;td&gt;$5.00/M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$1.20/M tokens&lt;/td&gt;
&lt;td&gt;$25.00/M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monthly (typical)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$5-15&lt;/td&gt;
&lt;td&gt;$100-200&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's roughly a &lt;strong&gt;95% cost reduction&lt;/strong&gt; for 90% of the quality. For most day-to-day coding tasks, you won't notice the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup Guide (5 Minutes)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Install Open Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://opencode.ai/install | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Authenticate via OpenRouter
&lt;/h3&gt;

&lt;p&gt;We use OpenRouter as the provider because MiniMax direct requires a $25 minimum topup. OpenRouter has no minimum — even $1 works.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This opens an interactive CLI. Select &lt;strong&gt;OpenRouter&lt;/strong&gt; from the provider list, then paste your OpenRouter API key when prompted.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Select MiniMax M2.7
&lt;/h3&gt;

&lt;p&gt;Launch Open Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once inside, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/models
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search for &lt;strong&gt;MiniMax M2.7&lt;/strong&gt; and select it. That's it — you're ready to code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Can It Do? (Three Live Demos)
&lt;/h2&gt;

&lt;p&gt;In the video, I put this setup through three real-world tests:&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo 1: Node.js Express API with JWT Auth
&lt;/h3&gt;

&lt;p&gt;I asked it to build a complete REST API with signup, login, and a protected route using JWT authentication. It generated clean, working code on the first try — proper middleware, token handling, everything.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo 2: Python Bug Fix
&lt;/h3&gt;

&lt;p&gt;I gave it a buggy Python function for merging sorted arrays that was returning incomplete results. It identified the issue, explained what was wrong, and fixed it correctly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo 3: Responsive Landing Page with Tailwind CSS
&lt;/h3&gt;

&lt;p&gt;I asked for a full landing page with a dark theme, hero section, and feature cards using Tailwind CSS. It produced a polished, responsive design that looked production-ready.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use This vs Claude Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use Open Code + MiniMax M2.7 for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day-to-day coding tasks&lt;/li&gt;
&lt;li&gt;Building features and prototypes&lt;/li&gt;
&lt;li&gt;Bug fixes and debugging&lt;/li&gt;
&lt;li&gt;Learning and experimentation&lt;/li&gt;
&lt;li&gt;When budget matters&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Keep Claude Code for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex architectural decisions&lt;/li&gt;
&lt;li&gt;Very large codebase refactoring&lt;/li&gt;
&lt;li&gt;When you need absolute top-tier reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;You don't need to spend $200/month to get high-quality AI coding assistance. Open Code + MiniMax M2.7 through OpenRouter gives you an incredible developer experience at a fraction of the cost.&lt;/p&gt;

&lt;p&gt;Try it today — the setup takes 5 minutes, and your wallet will thank you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Watch the full tutorial with live demos:&lt;/strong&gt; &lt;a href="https://www.youtube.com/watch?v=yIugnFXvO6Y" rel="noopener noreferrer"&gt;YouTube Video&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read the detailed blog post:&lt;/strong&gt; &lt;a href="https://ayyaztech.com/blog/open-code-minimax-m2-7-cheap-ai-coding-claude-code-alternative" rel="noopener noreferrer"&gt;AyyazTech Blog&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>coding</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Run Claude Code with a Free Local Model — Qwen 3.5 + Ollama Setup</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Thu, 02 Apr 2026 08:52:22 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/run-claude-code-with-a-free-local-model-qwen-35-ollama-setup-22k6</link>
      <guid>https://dev.to/ayyazzafar/run-claude-code-with-a-free-local-model-qwen-35-ollama-setup-22k6</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/EEP9B2GyuQk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Claude Code is powerful but costs money. Every prompt burns API tokens and your code is sent to external servers. What if you could run the same workflow with a free local model?&lt;/p&gt;

&lt;h2&gt;
  
  
  Meet Qwen 3.5
&lt;/h2&gt;

&lt;p&gt;A 27B parameter model distilled from Claude 4.6 Opus reasoning traces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Beats Claude Sonnet 4.5 on SWE-bench&lt;/li&gt;
&lt;li&gt;96.91% HumanEval accuracy&lt;/li&gt;
&lt;li&gt;24% less chain-of-thought bloat (faster responses)&lt;/li&gt;
&lt;li&gt;Fits on a single GPU with 16GB VRAM&lt;/li&gt;
&lt;li&gt;300K+ downloads on Hugging Face&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install Ollama&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://ollama.com/install.sh | sh

&lt;span class="c"&gt;# Pull the model&lt;/span&gt;
ollama pull qwen3.5

&lt;span class="c"&gt;# Launch Claude Code with local model&lt;/span&gt;
claude &lt;span class="nt"&gt;--model&lt;/span&gt; ollama:qwen3.5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One command and you're coding with local AI. Same workflow as Claude, running on your GPU.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Can Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Write code:&lt;/strong&gt; Clean async Python with error handling and type hints&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fix bugs:&lt;/strong&gt; Reads file, finds bug, explains why, fixes in place&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build UIs:&lt;/strong&gt; Full dark-theme landing page with Tailwind CSS from one prompt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All locally. No API call. No internet required.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Free forever&lt;/strong&gt; — no API costs, no rate limits&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Private&lt;/strong&gt; — your code never leaves your machine&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Same workflow&lt;/strong&gt; — identical Claude Code experience&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opus-level reasoning&lt;/strong&gt; — distilled from Claude 4.6 Opus&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Qwen 3.5 + Ollama + Claude Code = full agentic AI coding, running locally, free forever.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://ayyaztech.com/blog/qwen-35-local-claude-code-free-ai-coding" rel="noopener noreferrer"&gt;ayyaztech.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Claude Code Built My Portfolio in 5 Minutes — Next.js + Tailwind CSS from One Prompt</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Wed, 01 Apr 2026 12:45:14 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/claude-code-built-my-portfolio-in-5-minutes-nextjs-tailwind-css-from-one-prompt-50hp</link>
      <guid>https://dev.to/ayyazzafar/claude-code-built-my-portfolio-in-5-minutes-nextjs-tailwind-css-from-one-prompt-50hp</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/e8Gx6dAs59E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;What if you could build an entire developer portfolio — Next.js, Tailwind CSS, fully responsive, dark mode, animations — from a single prompt? In under 5 minutes?&lt;/p&gt;

&lt;p&gt;I started with an empty folder. No boilerplate, no templates. Just Claude Code and one detailed prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude Code Built
&lt;/h2&gt;

&lt;p&gt;One prompt created:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Navbar&lt;/strong&gt; — responsive with animated mobile menu&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hero&lt;/strong&gt; — clean, bold landing section&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;About&lt;/strong&gt; — hover effects, professional styling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projects&lt;/strong&gt; — card layout with hover animations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; — each skill changes color with animation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact&lt;/strong&gt; — form with clean layout, fully responsive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All with TypeScript, Tailwind CSS, and the Next.js App Router.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Real Power: Iterating
&lt;/h2&gt;

&lt;p&gt;Building it is impressive. But changing it is where AI shines.&lt;/p&gt;

&lt;p&gt;I asked: "Add a floating navigation bar that changes background on scroll. Also add a dark/light mode toggle button."&lt;/p&gt;

&lt;p&gt;One sentence. Claude Code reviewed existing files, edited components, and delivered:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Floating navbar — semi-transparent, changes color on scroll&lt;/li&gt;
&lt;li&gt;Dark/light mode toggle — all colors update properly in both modes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Manual development: 2-4 hours&lt;/li&gt;
&lt;li&gt;Claude Code: Under 5 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No templates. No boilerplate. Just one prompt and iterative refinement.&lt;/p&gt;

&lt;p&gt;The key is prompt quality — a detailed prompt describing sections, features, and design expectations gives Claude Code enough context to make good architectural decisions.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://ayyaztech.com/blog/claude-code-portfolio-nextjs-tailwind-one-prompt" rel="noopener noreferrer"&gt;ayyaztech.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>I Control My Server from Telegram with AI — OpenClaw Setup Guide</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Tue, 31 Mar 2026 19:42:19 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/i-control-my-server-from-telegram-with-ai-openclaw-setup-guide-4h2m</link>
      <guid>https://dev.to/ayyazzafar/i-control-my-server-from-telegram-with-ai-openclaw-setup-guide-4h2m</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/Jdsat09xf5I"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;If you run a VPS, you know the drill. Something feels off, you open a terminal, SSH in, try to remember the right command, check the logs, restart a service. And if you're on your phone? Forget it.&lt;/p&gt;

&lt;p&gt;What if you could just text your server and ask it what's going on — in plain English? That's exactly what we're building today with &lt;strong&gt;OpenClaw&lt;/strong&gt;, a free, open-source AI agent that lives on your server and talks to you through Telegram.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You'll Build
&lt;/h2&gt;

&lt;p&gt;By the end of this guide, you'll have an AI agent on your server that you can message from Telegram to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check if your website is up and healthy&lt;/li&gt;
&lt;li&gt;Monitor disk space, CPU, and memory usage&lt;/li&gt;
&lt;li&gt;Read and summarize nginx access logs&lt;/li&gt;
&lt;li&gt;Restart services like nginx or your Node.js app&lt;/li&gt;
&lt;li&gt;Edit source code and deploy changes — all from one message&lt;/li&gt;
&lt;li&gt;Diagnose performance issues with AI-powered analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[VPS 1: Website]  &amp;lt;--- SSH ---&amp;gt;  [VPS 2: OpenClaw + Telegram]
   nginx                              AI Agent
   Next.js app                        Controls VPS 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;VPS 1 runs your website (a Next.js app behind nginx). VPS 2 runs OpenClaw, which connects to Telegram and has SSH access to VPS 1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Create a Dedicated User
&lt;/h2&gt;

&lt;p&gt;SSH into your second VPS. Create a dedicated user — don't run this as root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;adduser openclaw
usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;openclaw
loginctl enable-linger openclaw
su - openclaw
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: Install OpenClaw
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://openclaw.ai/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The installer starts onboarding automatically. Connect your LLM (OpenRouter + DeepSeek V3.2), then connect Telegram via BotFather bot token.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Set Up the Background Service
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /run/user/&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export XDG_RUNTIME_DIR=/run/user/$(id -u)'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'export DBUS_SESSION_BUS_ADDRESS="unix:path=${XDG_RUNTIME_DIR}/bus"'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.bashrc
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
openclaw gateway &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--force&lt;/span&gt;
systemctl &lt;span class="nt"&gt;--user&lt;/span&gt; daemon-reload
systemctl &lt;span class="nt"&gt;--user&lt;/span&gt; start openclaw-gateway.service
systemctl &lt;span class="nt"&gt;--user&lt;/span&gt; &lt;span class="nb"&gt;enable &lt;/span&gt;openclaw-gateway.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify: &lt;code&gt;openclaw gateway status&lt;/code&gt; — should show "Runtime: running".&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: SSH Access to Website Server
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519
ssh-copy-id root@YOUR_WEBSITE_SERVER_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 5: Pair with Telegram
&lt;/h2&gt;

&lt;p&gt;Send your bot a message, then approve the pairing code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw pairing approve telegram YOUR_CODE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Give OpenClaw Context
&lt;/h2&gt;

&lt;p&gt;Send one detailed message in Telegram with your server's IP, SSH user, file paths, service names, and deploy steps. OpenClaw has persistent memory — it remembers everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Can Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Health Check:&lt;/strong&gt; "Is my site up?" → SSHes in, curls the site, reports status&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Disk Space:&lt;/strong&gt; "How much disk space is left?" → Human-readable summary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log Analysis:&lt;/strong&gt; "Show nginx access logs from last hour" → AI-summarized traffic patterns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Restart:&lt;/strong&gt; "Restart nginx" → Done. Confirmed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code + Deploy:&lt;/strong&gt; "Change the heading to 'Powered by AI'" → Edits code, rebuilds, restarts service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Diagnosis:&lt;/strong&gt; "My site feels slow" → Checks CPU, memory, disk, nginx, response time — full diagnosis&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Not Just a Bash Script?
&lt;/h2&gt;

&lt;p&gt;A script runs one command. OpenClaw &lt;em&gt;thinks&lt;/em&gt;. It checks multiple metrics, synthesizes a diagnosis, remembers your server config, and gives human-readable answers instead of raw terminal output.&lt;/p&gt;

&lt;p&gt;OpenClaw is free, open-source, and runs on any server. Connect it to Telegram, Discord, WhatsApp, or whatever you use.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published at &lt;a href="https://ayyaztech.com/blog/control-server-telegram-ai-openclaw-setup-guide" rel="noopener noreferrer"&gt;ayyaztech.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Claude Code Channels: Text Your AI from iMessage — Complete Setup Guide</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Mon, 30 Mar 2026 16:12:22 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/claude-code-channels-text-your-ai-from-imessage-complete-setup-guide-332m</link>
      <guid>https://dev.to/ayyazzafar/claude-code-channels-text-your-ai-from-imessage-complete-setup-guide-332m</guid>
      <description>&lt;p&gt;Claude Code Channels now supports iMessage natively on Mac. You can text your AI assistant from your iPhone and it texts you back — no Telegram bot, no Discord server, no external service. Just iMessage.&lt;/p&gt;

&lt;p&gt;If you've seen my &lt;a href="https://ayyaztech.com/blog/claude-code-channels-discord-setup-guide" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; and &lt;a href="https://ayyaztech.com/blog/claude-code-channels-telegram-setup-guide" rel="noopener noreferrer"&gt;Telegram&lt;/a&gt; channel guides, this is the simplest one yet.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/CLL8yG3keLk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Your Mac stores all iMessage data in a SQLite database called &lt;code&gt;chat.db&lt;/code&gt;. The iMessage plugin polls this database every second for new messages. When it finds one, it pushes the message to Claude Code. For replies, Claude tells Messages.app to send a text through AppleScript.&lt;/p&gt;

&lt;p&gt;Everything stays local on your Mac. No cloud services, no API tokens, no hosted bots.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;macOS (iMessage is Mac-only)&lt;/li&gt;
&lt;li&gt;Claude Code installed and up to date&lt;/li&gt;
&lt;li&gt;Full Disk Access permission for your terminal app&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Grant Full Disk Access
&lt;/h2&gt;

&lt;p&gt;macOS protects the &lt;code&gt;chat.db&lt;/code&gt; database. Your terminal needs Full Disk Access to read it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;System Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Privacy &amp;amp; Security → Full Disk Access&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Add your terminal app (Terminal, iTerm2, Warp, or VS Code)&lt;/li&gt;
&lt;li&gt;Restart your terminal if prompted&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key rule: whatever app launches &lt;code&gt;bun&lt;/code&gt; (which runs Claude Code) needs this permission. Without it, the plugin exits immediately.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install the iMessage Plugin
&lt;/h2&gt;

&lt;p&gt;First, make sure Claude Code is up to date:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the iMessage plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin &lt;span class="nb"&gt;install&lt;/span&gt; @anthropic/claude-plugin-imessage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you get a "plugin not found" error, install or update the official marketplace first:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/plugin marketplace add anthropic/claude-plugin-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose &lt;strong&gt;user scope&lt;/strong&gt; when prompted so the plugin works across all your projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Launch Claude Code with Channels
&lt;/h2&gt;

&lt;p&gt;Exit Claude Code and restart with the channels flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--channels&lt;/span&gt; plugin:imessage:imessage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see: &lt;em&gt;"Listening for channel messages"&lt;/em&gt;. That's it — the plugin is now polling your messages database.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Test with Self-Chat
&lt;/h2&gt;

&lt;p&gt;Open Messages on your iPhone and text yourself (your iCloud phone number or email). Self-chat bypasses all access control — it works immediately with no setup.&lt;/p&gt;

&lt;p&gt;Try sending: &lt;em&gt;"Hey Claude, what's in my working directory?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In self-chat, every message appears twice (as sender and receiver). That's normal iMessage behavior, not a bug. To avoid this, allow-list a second phone number and text from that device instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Access Control
&lt;/h2&gt;

&lt;p&gt;By default, only your self-chat works. Everyone else is silently dropped. To let someone else reach your Claude Code session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/imessage:access allow +1234567890
/imessage:access allow friend@icloud.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each time you add someone, Claude Code asks for confirmation — you can approve from your terminal OR directly from your iPhone by typing the secret code.&lt;/p&gt;

&lt;p&gt;To remove access:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/imessage:access remove +1234567890
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Real Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Remote file lookup:&lt;/strong&gt; Text Claude to check config values while away from desk&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Build things remotely:&lt;/strong&gt; Text "Create a landing page" — file is ready when you return&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check build status:&lt;/strong&gt; Text "Did the tests pass?" — get results on your phone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standup prep:&lt;/strong&gt; Text "What did I commit yesterday?" — formatted summary on iPhone&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Additional Configuration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Disable the Signature
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;IMESSAGE_APPEND_SIGNATURE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;false &lt;/span&gt;claude &lt;span class="nt"&gt;--channels&lt;/span&gt; plugin:imessage:imessage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Group Chat Support
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/imessage:access &lt;span class="nb"&gt;set &lt;/span&gt;mention-patterns &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"@claude"&lt;/span&gt;, &lt;span class="s2"&gt;"hey claude"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Bypass Permissions (Use Carefully)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--channels&lt;/span&gt; plugin:imessage:imessage &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Things to Know
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code must be running&lt;/strong&gt; — close the terminal, messages stop&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;macOS only&lt;/strong&gt; — chat.db only exists on Mac&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;First reply triggers an automation prompt&lt;/strong&gt; — click OK (one-time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security matters&lt;/strong&gt; — this reads your personal messages database&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Related Guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-channels-discord-setup-guide" rel="noopener noreferrer"&gt;Claude Code Channels: Discord Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-channels-telegram-setup-guide" rel="noopener noreferrer"&gt;Claude Code Channels: Telegram Setup Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-remote-control-terminal-from-phone" rel="noopener noreferrer"&gt;Claude Code Remote Control from Phone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three channel options work. Pick whichever platform you use the most.&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Claude Code Channels: Control Your AI Agent from Telegram (Complete Setup Guide)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Mon, 23 Mar 2026 16:08:22 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/claude-code-channels-control-your-ai-agent-from-telegram-complete-setup-guide-4jkc</link>
      <guid>https://dev.to/ayyazzafar/claude-code-channels-control-your-ai-agent-from-telegram-complete-setup-guide-4jkc</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/y1kZdq83G4Y"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Control Claude Code from Your Phone via Telegram
&lt;/h2&gt;

&lt;p&gt;What if you could message your AI coding agent from your phone and have it build things on your computer — even when you're not at your desk? That's exactly what Claude Code Channels does with Telegram.&lt;/p&gt;

&lt;p&gt;In this guide, I walk you through setting up a Telegram bot that connects directly to Claude Code. You send a message, Claude does the work, and sends the result right back to your Telegram — including screenshots of what it built.&lt;/p&gt;

&lt;p&gt;If you saw my &lt;a href="https://ayyaztech.com/blog/claude-code-channels-discord-setup-guide" rel="noopener noreferrer"&gt;Discord version of this setup&lt;/a&gt;, this is the Telegram companion.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Claude Code installed and working&lt;/li&gt;
&lt;li&gt;A Telegram account&lt;/li&gt;
&lt;li&gt;Terminal access&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a Telegram Bot with BotFather
&lt;/h2&gt;

&lt;p&gt;Open Telegram and search for &lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/botfather"&gt;@botfather&lt;/a&gt;&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Start&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Type &lt;code&gt;/newbot&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Enter a display name and a username ending in "bot"&lt;/li&gt;
&lt;li&gt;Copy the &lt;strong&gt;bot token&lt;/strong&gt; BotFather gives you&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 2: Install the Telegram Plugin
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude update
claude plugin &lt;span class="nb"&gt;install&lt;/span&gt; @anthropic/channel-telegram
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Choose &lt;strong&gt;global&lt;/strong&gt; scope. If you get "plugin not found":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude marketplace refresh
&lt;span class="c"&gt;# or first-time setup:&lt;/span&gt;
claude marketplace &lt;span class="nb"&gt;install&lt;/span&gt; @anthropic/official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then reload and &lt;strong&gt;restart your Claude Code session&lt;/strong&gt; (important!):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude plugin reload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Configure and Pair
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/telegram:configure   &lt;span class="c"&gt;# paste your bot token&lt;/span&gt;
claude &lt;span class="nt"&gt;--channel&lt;/span&gt; telegram   &lt;span class="c"&gt;# start listening&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Telegram: message your bot → get a 6-character pairing code → enter it in the terminal → approve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Lock Down Access
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/telegram:access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change DM policy from &lt;strong&gt;pairing&lt;/strong&gt; to &lt;strong&gt;allow-list&lt;/strong&gt;. Only approved senders can now interact with your bot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Demo
&lt;/h2&gt;

&lt;p&gt;I asked Claude Code from Telegram to build a landing page. It created the HTML, opened it in my browser, took a screenshot, and sent it back to Telegram. All remotely.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unattended Mode
&lt;/h2&gt;

&lt;p&gt;For fully remote control without permission prompts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--channel&lt;/span&gt; telegram &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Only use in trusted environments.&lt;/strong&gt; This bypasses all safety prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Cases
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build web pages and get screenshots on your phone&lt;/li&gt;
&lt;li&gt;Organize files and folders remotely&lt;/li&gt;
&lt;li&gt;Get YouTube transcript summaries on the go&lt;/li&gt;
&lt;li&gt;Run development tasks from anywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-channels-discord-setup-guide" rel="noopener noreferrer"&gt;Discord Version: Claude Code Channels Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-remote-control-terminal-from-phone" rel="noopener noreferrer"&gt;Claude Code Remote Control — Terminal from Phone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-tutorial-beginners-complete-guide-2026" rel="noopener noreferrer"&gt;Claude Code Tutorial for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>telegram</category>
      <category>automation</category>
    </item>
    <item>
      <title>Claude Code Channels: Control Your AI Agent from Discord (Complete Setup Guide)</title>
      <dc:creator>Ayyaz Zafar</dc:creator>
      <pubDate>Sat, 21 Mar 2026 14:00:06 +0000</pubDate>
      <link>https://dev.to/ayyazzafar/claude-code-channels-control-your-ai-agent-from-discord-complete-setup-guide-4kd8</link>
      <guid>https://dev.to/ayyazzafar/claude-code-channels-control-your-ai-agent-from-discord-complete-setup-guide-4kd8</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/wrMtFyzOoGk"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Developers were paying for Mac Minis just to run &lt;strong&gt;OpenClaw&lt;/strong&gt; so they could message their AI agent from their phone. Anthropic just made that completely unnecessary. &lt;strong&gt;Claude Code Channels&lt;/strong&gt; is the native, secure version of what OpenClaw was trying to do — and it supports Discord and Telegram out of the box.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through the complete setup process: from testing with a local Fake Chat demo, to creating a Discord bot, pairing your account, and locking down access for security.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Are Claude Code Channels?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;channel&lt;/strong&gt; is an MCP server that pushes events into your running Claude Code session. This means Claude can react to things that happen while you're not at the terminal. Channels are two-way — Claude reads the event and replies back through the same channel, like a chat bridge.&lt;/p&gt;

&lt;p&gt;Key points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Events only arrive while the session is open&lt;/li&gt;
&lt;li&gt;For an always-on setup, run Claude in a background process or persistent terminal&lt;/li&gt;
&lt;li&gt;Discord and Telegram are included in the research preview&lt;/li&gt;
&lt;li&gt;You can build your own custom channels for Slack, WhatsApp, or anything else&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick Start: Testing with Fake Chat
&lt;/h2&gt;

&lt;p&gt;Before connecting Discord, let's verify everything works with the built-in &lt;strong&gt;Fake Chat&lt;/strong&gt; demo — a local chat UI that requires no authentication or external services.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Make sure Claude Code is up to date&lt;/span&gt;
claude update

&lt;span class="c"&gt;# Add the official plugins marketplace (if not already added)&lt;/span&gt;
claude plugin add-marketplace claude-plugins-official

&lt;span class="c"&gt;# Install the Fake Chat plugin&lt;/span&gt;
claude plugin &lt;span class="nb"&gt;install&lt;/span&gt; @anthropic-ai/claude-code-fakechat

&lt;span class="c"&gt;# Start Claude Code with the Fake Chat channel&lt;/span&gt;
claude &lt;span class="nt"&gt;--channels&lt;/span&gt; fakechat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once running, open &lt;code&gt;http://localhost:8787&lt;/code&gt; in your browser. You'll see a simple chat interface where you can type messages and even attach files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting Up Discord
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create a Discord Bot
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;a href="https://discord.com/developers/applications" rel="noopener noreferrer"&gt;Discord Developer Portal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New Application&lt;/strong&gt; and name it (e.g., "Claude Code")&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Bot&lt;/strong&gt; section in the left sidebar&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Reset Token&lt;/strong&gt; and &lt;strong&gt;copy the token&lt;/strong&gt; — save it somewhere safe&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Message Content Intent&lt;/strong&gt; under Privileged Gateway Intents&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save Changes&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Invite the Bot to Your Server
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;strong&gt;OAuth2 → URL Generator&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;bot&lt;/strong&gt; scope&lt;/li&gt;
&lt;li&gt;Under Bot Permissions, enable: &lt;strong&gt;View Channels&lt;/strong&gt;, &lt;strong&gt;Send Messages&lt;/strong&gt;, &lt;strong&gt;Read Message History&lt;/strong&gt;, and &lt;strong&gt;Attach Files&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Copy the generated URL and open it in a new tab&lt;/li&gt;
&lt;li&gt;Select your server and click &lt;strong&gt;Authorize&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3: Install and Configure the Discord Plugin
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install the Discord channel plugin&lt;/span&gt;
claude plugin &lt;span class="nb"&gt;install&lt;/span&gt; @claude-plugins-official/discord

&lt;span class="c"&gt;# Configure with your bot token&lt;/span&gt;
/discord:configure YOUR_BOT_TOKEN_HERE

&lt;span class="c"&gt;# Restart Claude Code with the Discord channel enabled&lt;/span&gt;
claude &lt;span class="nt"&gt;--channels&lt;/span&gt; discord
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Pair Your Discord Account
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;DM your bot on Discord — it will reply with a pairing code&lt;/li&gt;
&lt;li&gt;Run the pairing command shown in the bot's reply in your Claude Code terminal&lt;/li&gt;
&lt;li&gt;Approve the pairing when prompted&lt;/li&gt;
&lt;li&gt;You're connected! Send messages from Discord and Claude responds&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Security: Locking Down Access
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This step is critical.&lt;/strong&gt; Without locking down access, anyone who can message your bot could potentially control your Claude Code session — and by extension, your entire computer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Lock down to allow-list mode&lt;/span&gt;
/discord:access policy allowlist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This changes the DM policy from &lt;strong&gt;pairing&lt;/strong&gt; (anyone can request access) to &lt;strong&gt;allowlist&lt;/strong&gt; (only pre-approved users can interact).&lt;/p&gt;

&lt;h2&gt;
  
  
  What Can You Do from Discord?
&lt;/h2&gt;

&lt;p&gt;Once connected, you can do everything from Discord that you'd normally do in the terminal:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send text messages&lt;/strong&gt; — ask Claude to read files, explain code, or answer questions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload images&lt;/strong&gt; — Claude can analyze screenshots, diagrams, or any visual content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create files&lt;/strong&gt; — ask Claude to generate code, HTML pages, configs, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run commands&lt;/strong&gt; — anything Claude Code can do locally, you can trigger remotely&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bypass Permissions (Use with Caution)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# WARNING: Only use in sandboxed/trusted environments&lt;/span&gt;
claude &lt;span class="nt"&gt;--channels&lt;/span&gt; discord &lt;span class="nt"&gt;--dangerously-skip-permissions&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⚠️ &lt;strong&gt;Warning:&lt;/strong&gt; This flag bypasses ALL permission prompts. Only use this in sandboxed environments you can easily restore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/channels" rel="noopener noreferrer"&gt;Claude Code Channels Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://discord.com/developers/applications" rel="noopener noreferrer"&gt;Discord Developer Portal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.anthropic.com/en/docs/claude-code/channels#build-your-own-channel" rel="noopener noreferrer"&gt;Build Your Own Custom Channel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related Articles
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-tutorial-beginners-complete-guide-2026" rel="noopener noreferrer"&gt;Claude Code Tutorial for Beginners (2026)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/chrome-devtools-mcp-vs-claude-in-chrome-vs-playwright" rel="noopener noreferrer"&gt;I Tested All 3 Browser Tools for Claude Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ayyaztech.com/blog/claude-code-remote-control-terminal-from-phone" rel="noopener noreferrer"&gt;Claude Code Remote Control — Control Your Terminal from Your Phone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>claudecode</category>
      <category>discord</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
