<?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: Deduped</title>
    <description>The latest articles on DEV Community by Deduped (@dedupedai).</description>
    <link>https://dev.to/dedupedai</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4203466%2F0f25f361-068b-4c4c-b73d-b6a70c4fdd23.png</url>
      <title>DEV Community: Deduped</title>
      <link>https://dev.to/dedupedai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dedupedai"/>
    <language>en</language>
    <item>
      <title>Add Claude to your GitHub pull requests with one command in Claude Code</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Mon, 02 Nov 2026 02:05:13 +0000</pubDate>
      <link>https://dev.to/dedupedai/add-claude-to-your-github-pull-requests-with-one-command-in-claude-code-5a2j</link>
      <guid>https://dev.to/dedupedai/add-claude-to-your-github-pull-requests-with-one-command-in-claude-code-5a2j</guid>
      <description>&lt;p&gt;Code review is where a lot of small bugs get caught, and where a lot of teams run out of hours. &lt;a href="https://github.com/anthropics/claude-code-action" rel="noopener noreferrer"&gt;claude-code-action&lt;/a&gt; is Anthropic's GitHub Action that lets Claude answer questions and make changes straight from pull request and issue comments. Setting a GitHub App, secrets and a workflow file by hand is fiddly. The README has a quicker route, and it starts inside Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Once installed, you can mention &lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; in a PR or issue comment. According to the README, the action can answer questions about code and architecture, review the changes in a PR and suggest improvements, and implement simple fixes, refactors and even new features. It shows progress with checkboxes that update as it works, and it runs on your own GitHub runner. Anthropic API calls go to the provider you choose.&lt;/p&gt;

&lt;p&gt;It picks its mode automatically from your workflow context: responding to &lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; mentions, issue assignments, or automation with an explicit prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you start
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You must be a repository admin, because you will install a GitHub App and add secrets.&lt;/li&gt;
&lt;li&gt;The quickstart below is only for direct Anthropic API users. If you use Amazon Bedrock, Google Vertex AI or Microsoft Foundry, follow docs/cloud-providers.md in the repo instead.&lt;/li&gt;
&lt;li&gt;Coming from v0.x? The repo has a migration guide to v1.0 that simplifies configuration around two inputs, &lt;code&gt;prompt&lt;/code&gt; and &lt;code&gt;claude_args&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: open Claude Code in the repo
&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;cd &lt;/span&gt;your-repo
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: run the installer command
&lt;/h2&gt;

&lt;p&gt;Inside Claude Code, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/install-github-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The command walks you through installing the GitHub App and adding the required secrets. Follow the prompts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: confirm the setup
&lt;/h2&gt;

&lt;p&gt;Check the repository settings: the GitHub App should be installed, and the API key secret should exist under Actions secrets. Also look for the new workflow file the setup adds, and read it before merging. It defines when Claude is allowed to run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: test with a harmless comment
&lt;/h2&gt;

&lt;p&gt;Open a throwaway PR and comment:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; explain what the main function in this file does&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If Claude replies with a progress checklist and then an answer, you are done. Only then try a real request such as "&lt;a class="mentioned-user" href="https://dev.to/claude"&gt;@claude&lt;/a&gt; add a unit test for this edge case".&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips for staying safe
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Treat it like a new contributor. Review its changes before merging, every time.&lt;/li&gt;
&lt;li&gt;Keep the permissions in the workflow minimal. The README says additional tools can be enabled through configuration, so enable them one at a time.&lt;/li&gt;
&lt;li&gt;Remember that PR text goes to your chosen model provider, so check that fits your code policy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A prompt you can hand to your agent
&lt;/h2&gt;

&lt;p&gt;If you would rather not click through, give Claude Code this: "Install anthropics/claude-code-action on this repo using /install-github-app, confirm the secrets, then open a test PR comment asking Claude to explain one function."&lt;/p&gt;

&lt;h2&gt;
  
  
  More
&lt;/h2&gt;

&lt;p&gt;The step-by-step card is on Deduped: &lt;a href="https://dedupedai.com/use-cases/anthropics-claude-code-action/install-the-github-app-from-claude-code/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudecodeaction" rel="noopener noreferrer"&gt;Add Claude to your GitHub repo's pull requests and issues&lt;/a&gt;. For more things people do with the terminal agent, see &lt;a href="https://dedupedai.com/use-cases/a/claude-code/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudecodeaction" rel="noopener noreferrer"&gt;AI use cases for Claude Code&lt;/a&gt; and &lt;a href="https://dedupedai.com/use-cases/anthropics-claude-code/explain-unfamiliar-codebase/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudecodeaction" rel="noopener noreferrer"&gt;how to explain an unfamiliar codebase with Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Source repo: &lt;a href="https://github.com/anthropics/claude-code-action" rel="noopener noreferrer"&gt;anthropics/claude-code-action&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Get one email every Monday with the week's hottest AI repos and exactly how to use them: &lt;a href="https://dedupedai.com/join/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudecodeaction" rel="noopener noreferrer"&gt;subscribe free at dedupedai.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>github</category>
      <category>claude</category>
      <category>devops</category>
    </item>
    <item>
      <title>Use your Claude, ChatGPT or Gemini subscription in goose, no API key</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Mon, 02 Nov 2026 02:05:12 +0000</pubDate>
      <link>https://dev.to/dedupedai/use-your-claude-chatgpt-or-gemini-subscription-in-goose-no-api-key-2mkn</link>
      <guid>https://dev.to/dedupedai/use-your-claude-chatgpt-or-gemini-subscription-in-goose-no-api-key-2mkn</guid>
      <description>&lt;p&gt;Most AI agents ask for a pay-per-token API key, even when you already pay for Claude, ChatGPT or Gemini every month. That means two bills for the same models. &lt;a href="https://github.com/aaif-goose/goose" rel="noopener noreferrer"&gt;goose&lt;/a&gt;, the open source agent now run under the Linux Foundation's Agentic AI Foundation, has a way around it: its README says you can use your existing Claude, ChatGPT or Gemini subscription through ACP providers instead of API keys.&lt;/p&gt;

&lt;p&gt;This is the short version of how to set that up, plus what to check before you trust it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What goose is
&lt;/h2&gt;

&lt;p&gt;goose is a general-purpose agent that runs on your machine. It ships as a native desktop app (macOS, Linux, Windows), a CLI, and an API. It is written in Rust, works with 15+ providers (Anthropic, OpenAI, Google, Ollama, OpenRouter, Azure, Bedrock and more), and connects to 70+ extensions through the Model Context Protocol. It is not only for code: research, writing, automation and data analysis are all in scope.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: install it
&lt;/h2&gt;

&lt;p&gt;Either download the desktop app from the installation page, or install the CLI with the command from the README:&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://github.com/aaif-goose/goose/releases/download/stable/download_cli.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As with any piped script, read it first if you are cautious. It is the official release script from the repo, but it is still a remote script running on your machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: pick the subscription route
&lt;/h2&gt;

&lt;p&gt;Open the ACP providers guide linked from the README (goose-docs.ai, under guides, ACP providers). ACP is the protocol goose uses to talk to a provider that you are already logged into. The idea is that goose drives your existing Claude, ChatGPT or Gemini plan instead of billing API tokens.&lt;/p&gt;

&lt;p&gt;Connect the provider you pay for, following the guide for that one. The exact flow differs per provider, so I will not guess at flags here. Use the guide as the source of truth, and check the repo for newer instructions, since this part moves fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: run a small test task
&lt;/h2&gt;

&lt;p&gt;Do not start with a big job. Give goose something short and checkable, for example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Research three open source tools that do X, and give me a table with name, licence, and last release date.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Confirm two things: the task completes, and your provider's usage page shows the usage against your plan rather than a new API charge. If you see an API charge, you are on the wrong provider entry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: switch providers later
&lt;/h2&gt;

&lt;p&gt;Because goose supports many providers, you can swap models without changing how you work. That is the practical win: try Claude for one task, Gemini for the next, or a local Ollama model when you are offline, all from the same interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this suits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You have a consumer or team plan and no appetite for API billing.&lt;/li&gt;
&lt;li&gt;You want one agent UI across several model vendors.&lt;/li&gt;
&lt;li&gt;You want an open source, inspectable agent rather than a closed app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Subscription terms are set by each provider. Check that your plan allows this kind of use before you rely on it.&lt;/li&gt;
&lt;li&gt;We wrote our walkthrough from the README, not from a test run, so verify each step against the docs.&lt;/li&gt;
&lt;li&gt;Extensions give an agent real access to your machine. Add them one at a time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where to go next
&lt;/h2&gt;

&lt;p&gt;The full card, with the steps and a ready agent prompt, is on Deduped: &lt;a href="https://dedupedai.com/use-cases/aaif-goose-goose/use-goose-with-your-existing-subscription/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_goose" rel="noopener noreferrer"&gt;Use goose with your existing subscription&lt;/a&gt;. If you want other agents that work with the tools you already have, browse &lt;a href="https://dedupedai.com/use-cases/a/claude-code/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_goose" rel="noopener noreferrer"&gt;AI use cases for Claude Code&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Source repo: &lt;a href="https://github.com/aaif-goose/goose" rel="noopener noreferrer"&gt;aaif-goose/goose&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Get one email every Monday with the week's hottest AI repos and exactly how to use them: &lt;a href="https://dedupedai.com/join/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_goose" rel="noopener noreferrer"&gt;subscribe free at dedupedai.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>Let Claude Code or Cursor debug your page in a real Chrome browser</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sun, 01 Nov 2026 20:01:59 +0000</pubDate>
      <link>https://dev.to/dedupedai/let-claude-code-or-cursor-debug-your-page-in-a-real-chrome-browser-ldc</link>
      <guid>https://dev.to/dedupedai/let-claude-code-or-cursor-debug-your-page-in-a-real-chrome-browser-ldc</guid>
      <description>&lt;p&gt;When Claude Code or Cursor fixes a front-end bug, it is usually guessing. It reads your source, but it cannot see the page, the console errors or the network calls. The &lt;a href="https://github.com/ChromeDevTools/chrome-devtools-mcp" rel="noopener noreferrer"&gt;Chrome DevTools MCP server&lt;/a&gt; closes that gap: it lets your coding agent control and inspect a live Chrome browser, so it can reproduce a bug, read the real error and check that its fix worked. Here is the setup, using the commands from the README. The short version is on the &lt;a href="https://dedupedai.com/use-cases/chromedevtools-chrome-devtools-mcp/let-your-agent-debug-a-page-in-real-chrome/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_chromedevtools" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it gives your agent
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;chrome-devtools-mcp&lt;/code&gt; is a Model Context Protocol server that exposes Chrome DevTools to an AI coding assistant such as Claude, Cursor, Copilot or Antigravity. According to the README it does three main things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Performance insights&lt;/strong&gt;: records traces with Chrome DevTools and extracts actionable findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced browser debugging&lt;/strong&gt;: analyzes network requests, takes screenshots and reads console messages with source-mapped stack traces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliable automation&lt;/strong&gt;: uses puppeteer to act in Chrome and waits for the results of each action.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js (an LTS version)&lt;/li&gt;
&lt;li&gt;Current stable Chrome&lt;/li&gt;
&lt;li&gt;npm&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: add the server to your MCP client
&lt;/h2&gt;

&lt;p&gt;Add this config to your MCP client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"chrome-devtools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"chrome-devtools-mcp@latest"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using &lt;code&gt;@latest&lt;/code&gt; means your client always starts the newest version. The README has per-client instructions for Claude Code, Cursor, VS Code and others in its client configuration guide.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: run the first prompt
&lt;/h2&gt;

&lt;p&gt;Paste this into your client to check that everything works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Check the performance of https://developers.chrome.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your client should open Chrome and record a performance trace. The browser starts only when the agent first uses a tool that needs it, so connecting alone will not open a window.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: point it at your own bug
&lt;/h2&gt;

&lt;p&gt;Now give it a real task. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open http://localhost:3000/checkout, click Pay, and tell me what the console
and network panel show. Then fix the cause and verify it in the browser.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can reproduce the click, read the failing request and the source-mapped stack trace, edit your code, reload and confirm the error is gone. That loop is the whole value: it checks its own work against a real browser instead of assuming.&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional: use the CLI instead of MCP
&lt;/h2&gt;

&lt;p&gt;The package also ships a &lt;code&gt;chrome-devtools&lt;/code&gt; CLI, so you can drive the browser from a terminal or a script without MCP:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i chrome-devtools-mcp@latest &lt;span class="nt"&gt;-g&lt;/span&gt;
chrome-devtools navigate_page 1 &lt;span class="nt"&gt;--url&lt;/span&gt; &lt;span class="s2"&gt;"https://developers.chrome.com"&lt;/span&gt;
chrome-devtools take_screenshot 1 &lt;span class="nt"&gt;--filePath&lt;/span&gt; screenshot.png
chrome-devtools stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Privacy settings worth knowing
&lt;/h2&gt;

&lt;p&gt;The server exposes the content of the browser instance to your MCP client, so avoid sharing sensitive data in that browser. A few details from the README:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google collects usage statistics by default. Opt out with the &lt;code&gt;--no-usage-statistics&lt;/code&gt; flag, for example &lt;code&gt;"args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Performance tools may send trace URLs to the Google CrUX API to add real-user data. Disable that with &lt;code&gt;--no-performance-crux&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Update checks can be turned off with the &lt;code&gt;CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS&lt;/code&gt; environment variable.&lt;/li&gt;
&lt;li&gt;Only Google Chrome and Chrome for Testing are officially supported. Other Chromium browsers may work but are not guaranteed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When to use it
&lt;/h2&gt;

&lt;p&gt;Use it for bugs you can only see in a running page: a layout that breaks at one width, a request that fails only after login, a slow page where you need a trace rather than a hunch. For pure logic bugs a normal test run is faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  More like this
&lt;/h2&gt;

&lt;p&gt;Compare it with other browser tools on &lt;a href="https://dedupedai.com/best-ai-repos-for/browser-automation/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_chromedevtools" rel="noopener noreferrer"&gt;best AI repos for browser automation&lt;/a&gt;, or see every &lt;a href="https://dedupedai.com/use-cases/chromedevtools-chrome-devtools-mcp/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_chromedevtools" rel="noopener noreferrer"&gt;Chrome DevTools MCP use case&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>webdev</category>
      <category>chrome</category>
    </item>
    <item>
      <title>Turn any web page into clean markdown for ChatGPT or Claude</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sun, 01 Nov 2026 20:00:22 +0000</pubDate>
      <link>https://dev.to/dedupedai/turn-any-web-page-into-clean-markdown-for-chatgpt-or-claude-1pj</link>
      <guid>https://dev.to/dedupedai/turn-any-web-page-into-clean-markdown-for-chatgpt-or-claude-1pj</guid>
      <description>&lt;p&gt;Paste a web page into ChatGPT or Claude and most of what you send is navigation, cookie banners and script tags. Fetch it with plain &lt;code&gt;requests&lt;/code&gt; and a JavaScript-heavy page often comes back nearly empty. &lt;a href="https://github.com/firecrawl/firecrawl" rel="noopener noreferrer"&gt;Firecrawl&lt;/a&gt; solves both: give it a URL and it returns clean markdown of the page's main content, ready for a prompt or a vector store. Here is how to set it up from Python, Node, curl or the CLI, with the commands from the README. The short version lives on the &lt;a href="https://dedupedai.com/use-cases/firecrawl-firecrawl/turn-any-url-into-clean-markdown/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_firecrawl" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Firecrawl does
&lt;/h2&gt;

&lt;p&gt;Firecrawl is an API to search, scrape and interact with the web, built for AI agents. Its scrape endpoint converts any URL to markdown, HTML, screenshots or structured JSON. It handles rotating proxies, rate limits and JavaScript-blocked content, and it can parse PDFs and DOCX files into markdown too.&lt;/p&gt;

&lt;p&gt;It is open source under AGPL-3.0 (the SDKs are MIT) and also runs as a hosted service. The examples below use the hosted API, which needs a key from firecrawl.dev. The README links a self-hosting guide if you would rather run it yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: get a key and keep it out of your code
&lt;/h2&gt;

&lt;p&gt;Sign up at firecrawl.dev to get your API key. It starts with &lt;code&gt;fc-&lt;/code&gt;. Put it in an environment variable rather than in a file you commit:&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;export &lt;/span&gt;&lt;span class="nv"&gt;FIRECRAWL_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"fc-YOUR_API_KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 2: scrape a page to markdown
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Python&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;pip &lt;span class="nb"&gt;install &lt;/span&gt;firecrawl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;firecrawl&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Firecrawl&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Firecrawl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;FIRECRAWL_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="n"&gt;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scrape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://firecrawl.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;formats&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;markdown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;doc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Node.js&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;npm &lt;span class="nb"&gt;install &lt;/span&gt;firecrawl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Firecrawl&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;firecrawl&lt;/span&gt;&lt;span class="dl"&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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Firecrawl&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FIRECRAWL_API_KEY&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;doc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scrape&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://firecrawl.dev&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="na"&gt;formats&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;markdown&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;curl&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;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s1"&gt;'https://api.firecrawl.dev/v2/scrape'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$FIRECRAWL_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
  "url": "firecrawl.dev"
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CLI&lt;/strong&gt;, with only the main content of the page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;firecrawl https://firecrawl.dev &lt;span class="nt"&gt;--only-main-content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output is plain markdown: headings, lists and text, without the page chrome. That is what you paste into a prompt or split into chunks for retrieval.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: go wider when one page is not enough
&lt;/h2&gt;

&lt;p&gt;The same client covers the jobs that usually come next:&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="c1"&gt;# Find URLs on a site, ordered by relevance to a word
&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://firecrawl.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pricing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Scrape several URLs at once
&lt;/span&gt;&lt;span class="n"&gt;job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;batch_scrape&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://firecrawl.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docs.firecrawl.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;formats&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;markdown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# Crawl a docs site (the SDK waits for the job to finish)
&lt;/span&gt;&lt;span class="n"&gt;docs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;crawl&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://docs.firecrawl.dev&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;docs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;metadata&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;source_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;markdown&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crawling a whole docs site this way is the fastest route to a knowledge base for a docs chatbot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: give Claude Code or Cursor the same power
&lt;/h2&gt;

&lt;p&gt;If you want your coding agent to read current docs instead of guessing from training data, install Firecrawl as a skill and restart the agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx &lt;span class="nt"&gt;-y&lt;/span&gt; firecrawl-cli@latest init &lt;span class="nt"&gt;--all&lt;/span&gt; &lt;span class="nt"&gt;--browser&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or add it as an MCP server in any MCP client:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"firecrawl-mcp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"firecrawl-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"FIRECRAWL_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fc-YOUR_API_KEY"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That config holds your key, so keep it out of shared or committed config files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Respect each site's terms and robots rules when you scrape.&lt;/li&gt;
&lt;li&gt;Crawls cost credits per page on the hosted service, so set a &lt;code&gt;limit&lt;/code&gt; while testing.&lt;/li&gt;
&lt;li&gt;The README examples hardcode &lt;code&gt;fc-YOUR_API_KEY&lt;/code&gt;; reading it from the environment, as above, is the safer habit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  More like this
&lt;/h2&gt;

&lt;p&gt;Compare Firecrawl with other options on &lt;a href="https://dedupedai.com/best-ai-repos-for/web-scraping-for-llms/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_firecrawl" rel="noopener noreferrer"&gt;best AI repos for web scraping for LLMs&lt;/a&gt;, or see every &lt;a href="https://dedupedai.com/use-cases/firecrawl-firecrawl/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_firecrawl" rel="noopener noreferrer"&gt;Firecrawl use case&lt;/a&gt;, including giving your coding agent live web access.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>webscraping</category>
      <category>llm</category>
    </item>
    <item>
      <title>Make Claude Code design, plan and test before it writes code</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sun, 01 Nov 2026 19:47:31 +0000</pubDate>
      <link>https://dev.to/dedupedai/make-claude-code-design-plan-and-test-before-it-writes-code-cjg</link>
      <guid>https://dev.to/dedupedai/make-claude-code-design-plan-and-test-before-it-writes-code-cjg</guid>
      <description>&lt;p&gt;Ask Claude Code for a feature and it usually starts typing code in the first reply. Sometimes that works. Often you get a half-guessed design, no tests, and an hour of rework. &lt;a href="https://github.com/obra/superpowers" rel="noopener noreferrer"&gt;Superpowers&lt;/a&gt; fixes that by giving your coding agent a full development method as a set of skills: it asks what you want first, writes a design you sign off on, turns that into a plan, then builds it task by task with tests and a review after each task. Here is the setup and the workflow, with the real commands from the README. The short version lives on the &lt;a href="https://dedupedai.com/use-cases/obra-superpowers/build-feature-from-design-to-review/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_superpowers" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Superpowers is
&lt;/h2&gt;

&lt;p&gt;Superpowers is a set of composable skills plus some starting instructions that make sure your agent uses them. The skills trigger on their own, so you do not call them by hand. When the agent sees you are building something, it steps back and asks what you are really trying to do before it writes anything.&lt;/p&gt;

&lt;p&gt;It works with Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot CLI, OpenCode and several other agents. If you use more than one, install it separately for each.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install it
&lt;/h2&gt;

&lt;p&gt;In Claude Code, install from Anthropic's official plugin marketplace:&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;superpowers@claude-plugins-official
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or register the Superpowers marketplace and install from there:&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 obra/superpowers-marketplace
/plugin &lt;span class="nb"&gt;install &lt;/span&gt;superpowers@superpowers-marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other agents, from the same README:&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;# Gemini CLI&lt;/span&gt;
gemini extensions &lt;span class="nb"&gt;install &lt;/span&gt;https://github.com/obra/superpowers

&lt;span class="c"&gt;# GitHub Copilot CLI&lt;/span&gt;
copilot plugin marketplace add obra/superpowers-marketplace
copilot plugin &lt;span class="nb"&gt;install &lt;/span&gt;superpowers@superpowers-marketplace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Cursor Agent chat, run &lt;code&gt;/add-plugin superpowers&lt;/code&gt;. In Codex CLI, open &lt;code&gt;/plugins&lt;/code&gt;, search for Superpowers and select Install Plugin.&lt;/p&gt;

&lt;p&gt;A quick check from the README: start a fresh session and send "Let's make a react todo list". A working install triggers brainstorming before any code is written.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow, step by step
&lt;/h2&gt;

&lt;p&gt;You describe a feature in a few sentences, in a git project. Then the skills take over in this order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;brainstorming&lt;/strong&gt; draws out what you actually want through questions, then plays its understanding back for correction. Small changes get agreed in chat; bigger projects get a written design document.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;using-git-worktrees&lt;/strong&gt; activates after you approve the design. It creates an isolated workspace on a new branch, runs project setup and checks that tests pass before anything changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;writing-plans&lt;/strong&gt; breaks the work into bite-sized tasks of 2 to 5 minutes each. Every task has exact file paths, complete code and verification steps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;subagent-driven-development&lt;/strong&gt; (or &lt;strong&gt;executing-plans&lt;/strong&gt;) runs the plan. The first dispatches a fresh subagent per task with a review after each, which is the most thorough. The second implements every task inline in the current session with one review of the whole branch at the end, which is the cheapest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;test-driven-development&lt;/strong&gt; enforces red, green, refactor: write a failing test, watch it fail, write minimal code, watch it pass, commit. It deletes code written before tests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;requesting-code-review&lt;/strong&gt; runs between tasks, reviews against the plan and reports issues by severity. Critical issues block progress.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;finishing-a-development-branch&lt;/strong&gt; verifies tests and gives you the choice to merge, open a PR, keep or discard, then cleans up the worktree.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What you actually do
&lt;/h2&gt;

&lt;p&gt;Your job shrinks to three checkpoints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Answer the brainstorming questions honestly. This is where vague features turn into a clear spec.&lt;/li&gt;
&lt;li&gt;Read the design in the short chunks the agent shows you, and sign off only when it matches what you want.&lt;/li&gt;
&lt;li&gt;Check the plan. Every task should list exact file paths and how it will be verified. If one does not, ask for it before you say "go".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then say "go" and read each code review as it comes back.&lt;/p&gt;

&lt;p&gt;A prompt you can paste into any supported agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Using the Superpowers skills, take this feature: &amp;lt;feature description&amp;gt;.
Run brainstorming, then writing-plans, then subagent-driven-development
in this project. Show me the design and the plan before any code.
Every plan task must list exact file paths and a verification step.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;p&gt;The README says it is not uncommon for the agent to work autonomously for a couple of hours without deviating from the plan. That is the point, and also the risk: whatever is in the approved plan is what gets built. Spend your attention on the design and plan, not on watching the code scroll.&lt;/p&gt;

&lt;p&gt;If a session misbehaves (a skill fires when it should not, or the agent ignores its plan), ask the agent to "figure out what went wrong with superpowers in this session". That invokes the diagnosing-superpowers skill, which reads the transcript and reports what happened with evidence.&lt;/p&gt;

&lt;p&gt;One more thing worth knowing: the optional visual companion in brainstorming loads a logo from the maintainers' site that includes the Superpowers version. To turn that off, set &lt;code&gt;SUPERPOWERS_DISABLE_TELEMETRY&lt;/code&gt; to any true value. It also honors Claude Code's &lt;code&gt;DISABLE_TELEMETRY&lt;/code&gt; setting.&lt;/p&gt;

&lt;h2&gt;
  
  
  More like this
&lt;/h2&gt;

&lt;p&gt;Superpowers is one of several skill packs that change how a coding agent works. Compare it with the others on &lt;a href="https://dedupedai.com/best-ai-repos-for/coding-agent-skills/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_superpowers" rel="noopener noreferrer"&gt;best coding agent skills&lt;/a&gt;, or see every &lt;a href="https://dedupedai.com/use-cases/obra-superpowers/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_superpowers" rel="noopener noreferrer"&gt;Superpowers use case&lt;/a&gt;, including root-cause debugging.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Build a Blender scene from a text prompt with Claude Code</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sun, 01 Nov 2026 01:04:05 +0000</pubDate>
      <link>https://dev.to/dedupedai/build-a-blender-scene-from-a-text-prompt-with-claude-code-2mpf</link>
      <guid>https://dev.to/dedupedai/build-a-blender-scene-from-a-text-prompt-with-claude-code-2mpf</guid>
      <description>&lt;p&gt;Blocking out a scene in Blender by hand means hours of menus and modifiers. &lt;a href="https://github.com/ahujasid/mcp-for-blender" rel="noopener noreferrer"&gt;MCP for Blender&lt;/a&gt; lets Claude Code, Codex or another AI app drive Blender directly: it creates objects, places them, applies materials and checks its own work with renders. The short version is on the &lt;a href="https://dedupedai.com/use-cases/ahujasid-mcp-for-blender/build-a-blender-scene-from-a-prompt/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_blenderscene" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;. Below is the route with the commands from the README.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;p&gt;Blender installed, an AI app that supports MCP, and macOS or Linux for the one-line installer. This walkthrough comes from the README, not a test run, so check the repo for newer instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  One-command setup
&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;-LsSf&lt;/span&gt; https://www.mcp-for-blender.com/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you already have uv, this does the same thing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx mcp-for-blender setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The setup asks which MCP clients to configure. It adds a &lt;code&gt;blender&lt;/code&gt; entry to each and saves a &lt;code&gt;.bak&lt;/code&gt; copy of every config it touches, so you can roll back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Manual route for Claude Code or Codex
&lt;/h2&gt;

&lt;p&gt;If the automatic setup misses your client, add the server yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add blender uvx mcp-for-blender
codex mcp add blender &lt;span class="nt"&gt;--&lt;/span&gt; uvx mcp-for-blender
uvx mcp-for-blender install-addon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last command installs and enables the Blender addon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start the connection
&lt;/h2&gt;

&lt;p&gt;Fully quit and reopen your AI app, then open Blender. The addon starts its server, and the AI app can now see it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask for a scene
&lt;/h2&gt;

&lt;p&gt;Be concrete. A prompt shape that works:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Using ahujasid/mcp-for-blender, build a low-poly campsite at dusk in the open Blender file: create the objects, apply materials, set up a camera and light, then show me renders from two angles and list what you created.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Make it check itself
&lt;/h2&gt;

&lt;p&gt;Ask for multi-angle views or a render after each pass. Models misplace things in 3D often, and a render makes the mistake obvious. Then iterate in plain language: "move the tent left of the fire", "make the sky warmer".&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety note
&lt;/h2&gt;

&lt;p&gt;The server can run Python inside Blender, so save your file first, and use safe mode if you want to limit what it runs. Do not point it at a project you cannot restore.&lt;/p&gt;

&lt;p&gt;For another creative workflow with an agent, see the &lt;a href="https://dedupedai.com/use-cases/heygen-com-hyperframes/product-launch-video-from-url/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_blenderscene" rel="noopener noreferrer"&gt;HyperFrames product video walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blender</category>
      <category>claude</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Sandbox any MCP server in Claude Code with one line</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sun, 01 Nov 2026 01:04:04 +0000</pubDate>
      <link>https://dev.to/dedupedai/sandbox-any-mcp-server-in-claude-code-with-one-line-nkn</link>
      <guid>https://dev.to/dedupedai/sandbox-any-mcp-server-in-claude-code-with-one-line-nkn</guid>
      <description>&lt;p&gt;An MCP server is a program you hand to your agent and let run on your machine, with your user's permissions. Most are fine. If one is buggy or compromised, it can read your SSH keys or call out to any host. Anthropic's &lt;a href="https://github.com/anthropic-experimental/sandbox-runtime" rel="noopener noreferrer"&gt;Sandbox Runtime&lt;/a&gt; (&lt;code&gt;srt&lt;/code&gt;) wraps any process in OS-level file and network limits, no container needed. Here is the setup with the real commands. The short version lives on the &lt;a href="https://dedupedai.com/use-cases/anthropics-sandbox-runtime/sandbox-an-mcp-server/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_srtmcp" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What srt does
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;srt&lt;/code&gt; uses &lt;code&gt;sandbox-exec&lt;/code&gt; on macOS and &lt;code&gt;bubblewrap&lt;/code&gt; on Linux, plus proxy-based network filtering. It was built for Claude Code and is a beta research preview, so config formats may change. Defaults are strict: no network access, no writes outside the working paths, and reads allowed everywhere unless you deny them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&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; @anthropic-ai/sandbox-runtime
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Try it before wiring anything
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;srt &lt;span class="s2"&gt;"curl anthropic.com"&lt;/span&gt;
srt &lt;span class="s2"&gt;"curl example.com"&lt;/span&gt;
srt &lt;span class="s2"&gt;"cat ~/.ssh/id_rsa"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With an allowlist containing anthropic.com, the first call succeeds. The second prints "Connection blocked by network allowlist". The third fails with "Operation not permitted". That is the whole idea: the process only gets the holes you poke.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrap an MCP server
&lt;/h2&gt;

&lt;p&gt;Your unsandboxed &lt;code&gt;.mcp.json&lt;/code&gt; entry probably looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change the command to &lt;code&gt;srt&lt;/code&gt; and move the old command into args:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"srt"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"@modelcontextprotocol/server-filesystem"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set the limits
&lt;/h2&gt;

&lt;p&gt;Create &lt;code&gt;~/.srt-settings.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"filesystem"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"denyRead"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allowWrite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"denyWrite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"~/sensitive-folder"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"allowedDomains"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"deniedDomains"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Writes are allow-only, so &lt;code&gt;allowWrite&lt;/code&gt; lists the places the server may write. Reads are deny-then-allow. Network is allow-only: an empty &lt;code&gt;allowedDomains&lt;/code&gt; means no network at all, so add the hosts your server really needs.&lt;/p&gt;

&lt;p&gt;One gotcha from the README: if the settings file exists but is empty or invalid, &lt;code&gt;srt&lt;/code&gt; exits with an error instead of falling back to defaults. That is on purpose, because a silent fallback would drop your deny rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test that it bites
&lt;/h2&gt;

&lt;p&gt;Ask your agent to write a file into the denied folder. You should see an EPERM "operation not permitted" error. If the write succeeds, your config is not being read, so check the path and run &lt;code&gt;srt --debug&lt;/code&gt; on a sample command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;srt &lt;span class="nt"&gt;--debug&lt;/span&gt; curl https://example.com
srt &lt;span class="nt"&gt;--settings&lt;/span&gt; /path/to/srt-settings.json npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Where it stops
&lt;/h2&gt;

&lt;p&gt;Sandboxing limits what the server can touch, not what it is told to do with data you give it. Keep secrets out of the folders you allow, and keep the allowlist short. Windows support is newer and has documented known limitations, so read that section of the README first.&lt;/p&gt;

&lt;p&gt;For another way to cut risk in Claude Code, see the &lt;a href="https://dedupedai.com/use-cases/github-github-mcp-server/connect-your-agent-to-github-remotely/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_srtmcp" rel="noopener noreferrer"&gt;GitHub MCP server walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>security</category>
      <category>ai</category>
      <category>mcp</category>
    </item>
    <item>
      <title>Stop Claude Code from building the same generic landing page</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sat, 31 Oct 2026 19:02:24 +0000</pubDate>
      <link>https://dev.to/dedupedai/stop-claude-code-from-building-the-same-generic-landing-page-2him</link>
      <guid>https://dev.to/dedupedai/stop-claude-code-from-building-the-same-generic-landing-page-2him</guid>
      <description>&lt;p&gt;Ask Claude for a landing page and you tend to get the same thing: a warm cream background, a terracotta accent, identical rounded cards with soft shadows and an all-caps eyebrow above every heading. The &lt;a href="https://github.com/anthropics/skills" rel="noopener noreferrer"&gt;frontend-design skill&lt;/a&gt; in Anthropic's example skills repo exists to break that habit. Below is the route with the real commands. The short version is on the &lt;a href="https://dedupedai.com/use-cases/anthropics-skills/build-distinctive-frontends-with-the-frontend-design-skill/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_frontenddesign" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the skill does
&lt;/h2&gt;

&lt;p&gt;Skills are folders of instructions, scripts and resources that Claude loads when a task calls for them. frontend-design makes Claude commit to a bold aesthetic direction and a reviewed design plan before it writes any UI code. It even lists the generic defaults to avoid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;In Claude Code, register the repo as a plugin marketplace:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add anthropics/skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then install the example skills, which include frontend-design:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin install example-skills@anthropic-agent-skills
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Give it a real brief
&lt;/h2&gt;

&lt;p&gt;Tell Claude the real subject, the audience and the primary job of the page. If the brief leaves the subject out, the skill has Claude propose one and confirm it with you, so you will not get lorem ipsum branding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ask for the plan first
&lt;/h2&gt;

&lt;p&gt;Before any code, ask for a design plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4 to 6 named hex colors&lt;/li&gt;
&lt;li&gt;the typefaces and their roles&lt;/li&gt;
&lt;li&gt;a layout concept with ASCII wireframes&lt;/li&gt;
&lt;li&gt;the principles that make this page unique&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Review the plan
&lt;/h2&gt;

&lt;p&gt;Have Claude check the plan against your brief and rewrite any part that reads like a generic default, saying what changed and why. This one step is where most of the improvement comes from, because it is cheap to change a plan and expensive to change a finished page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the quality floor
&lt;/h2&gt;

&lt;p&gt;The result should be responsive down to mobile, show visible keyboard focus and respect reduced motion. Test each of those yourself before shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prompt you can paste
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use the frontend-design skill from anthropics/skills to design a landing page for my product. Before writing any code, give me a design plan: 4 to 6 named hex colors, the typefaces and their roles, a layout concept with an ASCII wireframe, and the principles. Review the plan against my brief, revise anything that reads like a generic default and tell me what you changed. Spend the boldness in one place, and keep it responsive down to mobile with visible keyboard focus and reduced motion respected.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Who it is for
&lt;/h2&gt;

&lt;p&gt;A developer or founder who keeps getting the same templated look from generated UI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tip
&lt;/h2&gt;

&lt;p&gt;Spend the boldness in one place. A page with one memorable element and a calm everything else usually beats a page where every section shouts.&lt;/p&gt;

&lt;p&gt;For another Claude Code design option, see the &lt;a href="https://dedupedai.com/use-cases/leonxlnx-taste-skill/make-claude-code-design-a-landing-page-with-taste-skill/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_frontenddesign" rel="noopener noreferrer"&gt;Taste Skill walkthrough&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Get one email every Monday with the week's hottest AI repos and exactly how to use them: &lt;a href="https://dedupedai.com/join/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_frontenddesign" rel="noopener noreferrer"&gt;subscribe free at dedupedai.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>webdev</category>
      <category>ai</category>
      <category>design</category>
    </item>
    <item>
      <title>Run a full SEO audit on your site from Claude Code</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sat, 31 Oct 2026 19:02:23 +0000</pubDate>
      <link>https://dev.to/dedupedai/run-a-full-seo-audit-on-your-site-from-claude-code-2cel</link>
      <guid>https://dev.to/dedupedai/run-a-full-seo-audit-on-your-site-from-claude-code-2cel</guid>
      <description>&lt;p&gt;A manual SEO audit takes hours and an agency audit costs thousands. &lt;a href="https://github.com/AgriciDaniel/claude-seo" rel="noopener noreferrer"&gt;Claude SEO&lt;/a&gt; is a free plugin for Claude Code that audits any site in roughly 10 to 15 minutes and hands back a prioritized action plan. Here is the route from the README, with the real commands. The short version lives on the &lt;a href="https://dedupedai.com/use-cases/agricidaniel-claude-seo/run-a-full-seo-audit-with-claude-code/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudeseo" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it checks
&lt;/h2&gt;

&lt;p&gt;The plugin is built from 26 sub-skills and 19 specialist agents, and up to 17 of them work on your site at the same time. It covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical SEO: crawlability, indexing, sitemaps, robots.txt, redirects, page speed and Core Web Vitals.&lt;/li&gt;
&lt;li&gt;Content quality: E-E-A-T, thin pages and topic coverage.&lt;/li&gt;
&lt;li&gt;Structured data: finds, validates and writes Schema.org markup.&lt;/li&gt;
&lt;li&gt;AI search (GEO): how likely Google AI Overviews, ChatGPT, Perplexity and Gemini are to cite your pages.&lt;/li&gt;
&lt;li&gt;Local and e-commerce SEO.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every recommendation explains why it matters and how you will know it worked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install it
&lt;/h2&gt;

&lt;p&gt;Inside Claude Code, register the marketplace and install the plugin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add AgriciDaniel/claude-seo
/plugin install claude-seo@agricidaniel-claude-seo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set it up
&lt;/h2&gt;

&lt;p&gt;Run setup once. It creates its own Python environment and a headless browser:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/seo setup
/seo doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/seo doctor&lt;/code&gt; checks readiness, so fix anything it flags before the first audit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run the audit
&lt;/h2&gt;

&lt;p&gt;Type &lt;code&gt;/seo&lt;/code&gt; to list every command. For a full website audit with parallel agents, give it your URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/seo audit https://your-site.example
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a single page use &lt;code&gt;/seo page&lt;/code&gt; with the URL. Focused commands exist too, for example &lt;code&gt;/seo technical&lt;/code&gt;, &lt;code&gt;/seo content&lt;/code&gt;, &lt;code&gt;/seo schema&lt;/code&gt;, &lt;code&gt;/seo sitemap&lt;/code&gt;, &lt;code&gt;/seo geo&lt;/code&gt; and &lt;code&gt;/seo local&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get back
&lt;/h2&gt;

&lt;p&gt;Reports come out as Markdown, PDF and JSON, with a prioritized action plan. Work through it from the most important item down, and re-run the specific command after each fix to confirm it moved.&lt;/p&gt;

&lt;h2&gt;
  
  
  A prompt you can paste
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install Claude SEO from AgriciDaniel/claude-seo, run /seo setup and /seo doctor, then run /seo audit on &amp;lt;my site url&amp;gt;. Give me the top five fixes ranked by impact and how I will know each one worked.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Who it suits
&lt;/h2&gt;

&lt;p&gt;A founder or freelancer who wants a scored audit and a to-do list without audit software, or a consultant who wants real numbers on the first call.&lt;/p&gt;

&lt;h2&gt;
  
  
  The catch
&lt;/h2&gt;

&lt;p&gt;It runs on your Claude Code plan, so a full audit with many agents uses part of your usage allowance. Start with &lt;code&gt;/seo page&lt;/code&gt; on your most important URL if you are on a tight plan.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Get one email every Monday with the week's hottest AI repos and exactly how to use them: &lt;a href="https://dedupedai.com/join/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_claudeseo" rel="noopener noreferrer"&gt;subscribe free at dedupedai.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>seo</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Install a team of specialist agents into Claude Code</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sat, 31 Oct 2026 01:01:53 +0000</pubDate>
      <link>https://dev.to/dedupedai/install-a-team-of-specialist-agents-into-claude-code-202e</link>
      <guid>https://dev.to/dedupedai/install-a-team-of-specialist-agents-into-claude-code-202e</guid>
      <description>&lt;p&gt;Generic prompts give generic answers, and writing a good persona for every role takes hours. &lt;a href="https://github.com/msitarzewski/agency-agents" rel="noopener noreferrer"&gt;Agency Agents&lt;/a&gt; is a collection of ready-made specialist agent files (frontend developer, backend architect, DevOps automator and many more) that you can drop into Claude Code. Below is the route from the README, with the real commands. The short version is on the &lt;a href="https://dedupedai.com/use-cases/msitarzewski-agency-agents/install-an-engineering-team-into-claude-code/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_agencyagents" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you get
&lt;/h2&gt;

&lt;p&gt;Each agent file holds an identity and personality, a core mission and workflow, technical deliverables with code examples, and success metrics. The idea is that you activate the specialist that fits the task instead of re-explaining a role every session.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fastest install
&lt;/h2&gt;

&lt;p&gt;The README now recommends a native desktop app for macOS, Linux and Windows that browses the roster and installs agents into Claude Code, Cursor, Codex, Gemini CLI and others. On a Mac:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; msitarzewski/agency-agents/agency-agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Prefer the terminal? The scripts install the same agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install with the script
&lt;/h2&gt;

&lt;p&gt;Clone the repo, then list what exists:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./scripts/install.sh &lt;span class="nt"&gt;--list&lt;/span&gt; teams
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install only the divisions you need into Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./scripts/install.sh &lt;span class="nt"&gt;--tool&lt;/span&gt; claude-code &lt;span class="nt"&gt;--division&lt;/span&gt; engineering,security
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or install everything for Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./scripts/install.sh &lt;span class="nt"&gt;--tool&lt;/span&gt; claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Or copy one division by hand
&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;cp &lt;/span&gt;engineering/&lt;span class="k"&gt;*&lt;/span&gt;.md ~/.claude/agents/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is all Claude Code needs: the files sit in its agents directory.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a specialist
&lt;/h2&gt;

&lt;p&gt;Start a Claude Code session and ask for a role by name. The README's own example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hey Claude, activate Frontend Developer mode and help me build a React component&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For a feature that spans layers, split the work:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use the Backend Architect agent to design the API for , then the Frontend Developer agent to build its UI. Summarize what each agent produced.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Switch to the DevOps Automator agent when the task becomes pipelines and deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Other tools
&lt;/h2&gt;

&lt;p&gt;The same repo can generate integration files for other tools. The README lists GitHub Copilot, Gemini CLI, OpenCode, Cursor, Aider, Windsurf, Codex and more. Run the converter, then install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./scripts/convert.sh
./scripts/install.sh &lt;span class="nt"&gt;--tool&lt;/span&gt; gemini-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Deduped page on &lt;a href="https://dedupedai.com/use-cases/msitarzewski-agency-agents/use-agency-agents-in-cursor-or-codex/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_agencyagents" rel="noopener noreferrer"&gt;using these agents in Cursor or Codex&lt;/a&gt; covers that route.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Installing every division loads a lot of agent files. Start with engineering and security, and add more only when you use them.&lt;/li&gt;
&lt;li&gt;A persona does not replace review. Read what the Backend Architect proposes the way you would read a colleague's design.&lt;/li&gt;
&lt;li&gt;Agent files are prompts that shape behavior, so skim one before installing a collection from any repo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Setup takes about 10 minutes: one install command, one session, one named specialist. If you want to trim what your agent loads, compare with the Deduped page on &lt;a href="https://dedupedai.com/use-cases/msitarzewski-agency-agents/install-a-startup-mvp-runbook-team/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_agencyagents" rel="noopener noreferrer"&gt;installing a startup MVP runbook team&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Make Claude Code build a landing page with real art direction</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Sat, 31 Oct 2026 01:01:53 +0000</pubDate>
      <link>https://dev.to/dedupedai/make-claude-code-build-a-landing-page-with-real-art-direction-51oh</link>
      <guid>https://dev.to/dedupedai/make-claude-code-build-a-landing-page-with-real-art-direction-51oh</guid>
      <description>&lt;p&gt;Ask a coding agent for a landing page and you usually get the same page: a gradient hero, three feature cards, a stock-looking footer. &lt;a href="https://github.com/Leonxlnx/taste-skill" rel="noopener noreferrer"&gt;Taste Skill&lt;/a&gt; is an Agent Skill that tries to fix that. Per its README, it gives the agent an art direction, real credited pictures, and a way to check its own work in a real browser. Here is the Claude Code route, using the commands from the README. The short version lives on the &lt;a href="https://dedupedai.com/use-cases/leonxlnx-taste-skill/make-claude-code-design-a-landing-page-with-taste-skill/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_tasteskill" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;The README describes a build that runs in steps. The skill reads your brief and lists what only your client has (product, story, materials). A script then deals three art directions, you pick one, and the agent builds with real photographs found in open archives. The skill credits those photos. Finally it checks the result in a real browser at three widths and fixes the top problems for up to three rounds.&lt;/p&gt;

&lt;p&gt;The point is that the page is built from your specifics, not an average of every landing page the model has seen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;Per the README, the skill runs its scripts with Node 22 or newer and needs an installed Chrome, Edge or Chromium. It installs nothing else and needs no API keys. Finding pictures needs network access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install in Claude Code
&lt;/h2&gt;

&lt;p&gt;Run these inside Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/plugin marketplace add Leonxlnx/taste-skill
/plugin install taste-skill@taste-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The skill is namespaced under &lt;code&gt;taste-skill:&lt;/code&gt;, so it will not collide with your other skills. &lt;code&gt;/plugin update&lt;/code&gt; upgrades it later.&lt;/p&gt;

&lt;p&gt;If you prefer the skills CLI, the README gives this instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add https://github.com/Leonxlnx/taste-skill &lt;span class="nt"&gt;--skill&lt;/span&gt; &lt;span class="s2"&gt;"design-taste-frontend"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex users have a plugin route too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex plugin marketplace add Leonxlnx/taste-skill
codex plugin add taste-skill@taste-skill
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start a new Codex session afterwards so the skill loads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write a brief that has something in it
&lt;/h2&gt;

&lt;p&gt;The skill works best when the brief lists what only this client has. Compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Weak: "A landing page for a coffee roaster."&lt;/li&gt;
&lt;li&gt;Better: "A landing page for a two-person roaster in Lisbon. They roast on a 1970s Probat, sell only single-origin beans from three farms, and ship on Mondays. Customers are mostly returning subscribers."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The second brief gives the skill real material for the art direction step and for choosing pictures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Run it
&lt;/h2&gt;

&lt;p&gt;Prompt Claude Code something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Use the taste-skill design-taste-frontend skill to build a landing page for  from this brief: . Pick one of the dealt directions, credit every photo, and show me the screenshots from each check round.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then do three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Look at the three directions it deals and choose one on purpose rather than accepting the first.&lt;/li&gt;
&lt;li&gt;Open the credits file it produces and confirm the photos have open licenses.&lt;/li&gt;
&lt;li&gt;Read the screenshots from each check round, so you see what it found and fixed.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ul&gt;
&lt;li&gt;A build takes roughly 30 to 45 minutes and a few hundred thousand tokens, so check your plan limits before starting.&lt;/li&gt;
&lt;li&gt;It builds from a brief, so vague input gives vague output.&lt;/li&gt;
&lt;li&gt;You still review the page. A browser check at three widths catches layout problems, not whether the copy is true.&lt;/li&gt;
&lt;li&gt;Pin to a version you trust if you rely on it for client work, and run &lt;code&gt;/plugin update&lt;/code&gt; deliberately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your agent keeps handing you generic pages, this is a 45 minute experiment: install the plugin, write one specific brief, and compare the result with what you got before. For other ways to steer Claude Code, see the Deduped page on &lt;a href="https://dedupedai.com/use-cases/multica-ai-andrej-karpathy-skills/stop-claude-code-from-overengineering/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_tasteskill" rel="noopener noreferrer"&gt;stopping Claude Code from overengineering&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Search all your past Claude Code sessions with MemPalace</title>
      <dc:creator>Deduped</dc:creator>
      <pubDate>Fri, 30 Oct 2026 19:13:06 +0000</pubDate>
      <link>https://dev.to/dedupedai/search-all-your-past-claude-code-sessions-with-mempalace-30od</link>
      <guid>https://dev.to/dedupedai/search-all-your-past-claude-code-sessions-with-mempalace-30od</guid>
      <description>&lt;p&gt;Every Claude Code session starts from zero. You explain why you picked GraphQL, and three days later you explain it again. Worse, the MemPalace README warns that Claude Code sessions expire in 30 days unless you wire auto-save hooks. &lt;a href="https://github.com/MemPalace/mempalace" rel="noopener noreferrer"&gt;MemPalace&lt;/a&gt; is a local-first memory tool that stores your conversation history verbatim and lets you search it in plain language. Here is the CLI route, with the commands from the README. The short version is on the &lt;a href="https://dedupedai.com/use-cases/mempalace-mempalace/give-claude-code-searchable-memory-of-past-sessions/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_mempalace" rel="noopener noreferrer"&gt;Deduped use-case page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;MemPalace stores conversation text as it was written. It does not summarize or paraphrase. The index is structured: people and projects become wings, topics become rooms, and original content lives in drawers, so you can scope a search instead of querying one flat pile. The default backend is ChromaDB, and per the README nothing leaves your machine unless you opt in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;The README recommends installing the CLI in an isolated environment, which avoids PEP 668 errors on Debian, Ubuntu and Homebrew Pythons:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uv tool &lt;span class="nb"&gt;install &lt;/span&gt;mempalace
&lt;span class="c"&gt;# or&lt;/span&gt;
pipx &lt;span class="nb"&gt;install &lt;/span&gt;mempalace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is also an agent-guided route. Install the skills, then ask your coding agent to set it up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add MemPalace/mempalace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The setup skill detects your system, installs the package, configures MCP and asks whether you want a private local palace or a shared one. Installing the skill alone does not install the CLI or MCP server, so let the agent finish the guided setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mine your project and your sessions
&lt;/h2&gt;

&lt;p&gt;Point it at a project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mempalace init ~/projects/myapp
mempalace mine ~/projects/myapp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then mine your Claude Code transcripts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mempalace mine ~/.claude/projects/ &lt;span class="nt"&gt;--mode&lt;/span&gt; convos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use &lt;code&gt;--wing&lt;/code&gt; to scope each project to its own wing, so a search about one app does not pull in another.&lt;/p&gt;

&lt;h2&gt;
  
  
  Search and wake up
&lt;/h2&gt;

&lt;p&gt;Ask the question you keep re-explaining:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mempalace search &lt;span class="s2"&gt;"why did we switch to GraphQL"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You get the original conversation back, not a summary of it. To start a new session with context loaded, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mempalace wake-up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check how well organized the palace is, run the read-only audit:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Make Claude use it
&lt;/h2&gt;

&lt;p&gt;A search tool only helps if the agent runs it. A prompt you can put in your first message or in &lt;code&gt;CLAUDE.md&lt;/code&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before answering any question about past decisions in this repo, run &lt;code&gt;mempalace search&lt;/code&gt; with the question and quote the matching original text. Do not delete or move any transcript files.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For other ways to give Claude Code memory, compare with &lt;a href="https://dedupedai.com/use-cases/thedotmack-claude-mem/resume-claude-code-project-context/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_mempalace" rel="noopener noreferrer"&gt;claude-mem&lt;/a&gt;, which summarizes instead of storing verbatim, or the Deduped page on &lt;a href="https://dedupedai.com/use-cases/mempalace-mempalace/run-mempalace-as-a-docker-mcp-server/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_mempalace" rel="noopener noreferrer"&gt;Docker MCP memory for Claude Code&lt;/a&gt;.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;The palace holds your full transcripts verbatim. Keep it on a disk you trust, and be careful with anything containing secrets.&lt;/li&gt;
&lt;li&gt;Back up your existing JSONL transcripts before relying on any of this. The README links a Claude Code retention checklist for the auto-save hooks.&lt;/li&gt;
&lt;li&gt;Mining a large history takes time, so start with one project.&lt;/li&gt;
&lt;li&gt;Verbatim storage means bigger storage than summaries, which is the trade for exact recall.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your sessions keep losing context, this is a 20 minute fix: install, mine, search, and add one line to your rules file.&lt;/p&gt;

&lt;p&gt;Want the setup commands for 50 AI repos people actually ship with? Get the free AI Repos That Actually Ship pack: &lt;a href="https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack" rel="noopener noreferrer"&gt;https://dedupedai.com/ship-pack/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=shippack&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Get one email every Monday with the week's hottest AI repos and exactly how to use them: &lt;a href="https://dedupedai.com/join/?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=howto_mempalace" rel="noopener noreferrer"&gt;subscribe free at dedupedai.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>ai</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
