<?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: Fabrizio</title>
    <description>The latest articles on DEV Community by Fabrizio (@fab-arkad).</description>
    <link>https://dev.to/fab-arkad</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%2F3911955%2F0afe847b-04e1-46f8-a4f2-01e691b3b42b.png</url>
      <title>DEV Community: Fabrizio</title>
      <link>https://dev.to/fab-arkad</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fab-arkad"/>
    <language>en</language>
    <item>
      <title>Claude Code Plugin Marketplace: One Setup for a Whole Team</title>
      <dc:creator>Fabrizio</dc:creator>
      <pubDate>Tue, 20 Oct 2026 06:05:00 +0000</pubDate>
      <link>https://dev.to/fab-arkad/claude-code-plugin-marketplace-one-setup-for-a-whole-team-52a8</link>
      <guid>https://dev.to/fab-arkad/claude-code-plugin-marketplace-one-setup-for-a-whole-team-52a8</guid>
      <description>&lt;p&gt;Claude Skills are the easiest thing in the world to write. A text file, four lines of instructions, and Claude can do something it couldn't do before.&lt;/p&gt;

&lt;p&gt;And the best part? You don't even write it yourself. There's a Skill whose only job is writing Skills: you say what you need, it asks two questions, and it hands you something ready to use. &lt;strong&gt;Claude writing its own instructions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are thousands to download. Curated, free, ready.&lt;/p&gt;

&lt;p&gt;Then you write one yourself. A real one, shaped around your work and your clients. And the most natural urge in the world follows: share it with your team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's where the trouble starts.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need to get started
&lt;/h2&gt;

&lt;p&gt;Before the how, let's clear the question that blocks everything else: what it costs to be in a position to do this at all.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A Cloudflare account.&lt;/strong&gt; Free. That's where the server runs and where the credentials live.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A GitHub account.&lt;/strong&gt; Free. It's the distribution channel — and it's also the login, which is what makes it possible to tell users apart.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A Claude subscription&lt;/strong&gt; (or another coding assistant) to write the server code. You probably have that one already if you've read this far.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No infrastructure to buy. No enterprise plan to activate. No vendor to call.&lt;/p&gt;

&lt;p&gt;For a team of three, the bill is &lt;strong&gt;zero per month&lt;/strong&gt;. The real cost is one afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  How we got into this mess
&lt;/h2&gt;

&lt;p&gt;I'll tell you how it started, because that explains the problem faster than any definition.&lt;/p&gt;

&lt;p&gt;You start your company. You're fired up. You work for one client, then another, then you spend two days fixing your own website. Your partners do roughly the same.&lt;/p&gt;

&lt;p&gt;At the end of the day you open Kimai — the tool we use to assign hours to projects — create a timesheet, and write down that you spent two hours on one thing and four on another.&lt;/p&gt;

&lt;p&gt;You do it once. You do it twice… by the third time you feel like a caveman.&lt;/p&gt;

&lt;p&gt;You work with AI for hours every day, and in the evening you do manual data entry like it's 2010?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unacceptable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So you open the Kimai API docs and in half an hour you build your own tool: from now on you dictate the hours to the agent and it enters them for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deeply satisfying.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then you hand it to your partners. And here you make the first wrong move without noticing: &lt;strong&gt;you write the exact same code three times&lt;/strong&gt;, one per person, because each copy needs the right user id inside it — otherwise Otoni's hours end up under my name.&lt;/p&gt;

&lt;p&gt;A month goes by. You add Matomo to watch traffic on the site. You build the stats tool, wire it into Claude, works beautifully.&lt;/p&gt;

&lt;p&gt;Then you try scheduling a task that sends them to you every Monday morning.&lt;/p&gt;

&lt;p&gt;And it stops working.&lt;/p&gt;

&lt;p&gt;Why? Because scheduled tasks run in the Cowork sandbox. And the sandbox can't see that tool. And while we're at it, neither can Claude Code. Same machine, same person, three separate boxes that don't talk to each other.&lt;/p&gt;

&lt;p&gt;Meanwhile, where's the Matomo token? In plaintext, in a file on your laptop.&lt;/p&gt;

&lt;p&gt;So what do you do? You write a Skill with the token inside it and pass it to your partners. Great — now everyone can ask Claude how the site is doing.&lt;/p&gt;

&lt;p&gt;Except that token is now sitting in plaintext on three different computers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cybersecurity: outstanding.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And your diseased developer brain doesn't stop there. The SEO tool. The one that generates PDFs in the Arkad brand. The one that scans client sites. One after another.&lt;/p&gt;

&lt;p&gt;A few weeks later you look back and find this: &lt;strong&gt;a mess of Skills, with tokens in plaintext inside them, working in one environment and not another, in different versions between you and your partners.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Following me? That's the point where I stopped and thought about an actual solution.&lt;/p&gt;

&lt;p&gt;Five obstacles on the table:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Distribution&lt;/strong&gt; — how my Skills reach my partners.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates&lt;/strong&gt; — how they know whether they have the latest revision.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets&lt;/strong&gt; — where I put a token without scattering it around.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Portability&lt;/strong&gt; — how I make it work in three environments that don't talk to each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identity&lt;/strong&gt; — how the server knows &lt;em&gt;which&lt;/em&gt; of the three is using it.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;One at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude Skills are (and why they're not an MCP server)
&lt;/h2&gt;

&lt;p&gt;We need a distinction. It's the one that unlocks everything else.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Skill&lt;/strong&gt; is a text file with instructions. It tells Claude &lt;em&gt;how&lt;/em&gt; something is done: which procedure to follow, in what order, with what care, what never to do. It executes nothing. It's knowledge, not hands.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;MCP connector&lt;/strong&gt; (Model Context Protocol) is the opposite. It's a service exposing executable functions. It explains nothing: it does. It queries a database, calls an API, writes to a CRM.&lt;/p&gt;

&lt;p&gt;Skills instruct. Connectors act.&lt;/p&gt;

&lt;p&gt;It sounds like a textbook subtlety. It's actually the key to the whole thing: &lt;strong&gt;the two travel together but must be kept apart&lt;/strong&gt; — and further down you'll see that this separation is exactly where the context savings come from.&lt;/p&gt;

&lt;p&gt;Above both sits the container. A &lt;strong&gt;plugin&lt;/strong&gt; is a package holding Skills and connectors as one versioned unit: you install it with one command and update it with another.&lt;/p&gt;

&lt;p&gt;Skills and connectors are the parts. The plugin is the box you ship them in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The same plugin on Claude Desktop, Claude Code and Cowork
&lt;/h2&gt;

&lt;p&gt;I'll start with the most painful problem, portability, because the fix is almost embarrassingly simple.&lt;/p&gt;

&lt;p&gt;A remote MCP connector doesn't live on your computer. It lives on a server — in our case a Cloudflare Worker, free well past volumes three people couldn't hit by accident.&lt;/p&gt;

&lt;p&gt;And because it lives on the internet instead of in your user folder, &lt;strong&gt;every environment sees it the same way.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You connect it in Cowork and find it identical in Claude Code. You open the desktop app and it's there. Scheduled tasks find it. And since the protocol is open, that same server can be used by any other client that speaks MCP — ChatGPT, for instance.&lt;/p&gt;

&lt;p&gt;I didn't solve the problem by configuring the three environments better. I solved it by &lt;strong&gt;moving the thing to be configured out of all three.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First obstacle down. ✊&lt;/p&gt;

&lt;h2&gt;
  
  
  Secrets and OAuth: where the tokens actually live
&lt;/h2&gt;

&lt;p&gt;The second one falls almost as a consequence. But it's worth a close look, because it's the one a cautious client will actually check.&lt;/p&gt;

&lt;p&gt;If the server sits on Cloudflare, you upload the Matomo token &lt;strong&gt;once&lt;/strong&gt;, as a Worker secret. From then on it lives there: encrypted, off the laptops, out of the chats, out of the mailboxes. None of my partners has ever seen it. And none of them needs to.&lt;/p&gt;

&lt;p&gt;When I rotate it, I update it in one place. There are no other places to pull it from, because it was never anywhere else.&lt;/p&gt;

&lt;p&gt;So how do the partners get in, if they don't have the token?&lt;/p&gt;

&lt;p&gt;With OAuth. The server asks whoever connects to identify themselves and hands back an access of their own — traceable, individually revocable. It's the same mechanism you use when you sign into an app with your Google account.&lt;/p&gt;

&lt;p&gt;I'd sum up the difference like this: &lt;strong&gt;the secret isn't kept in three copies, it's written once and for all on the server.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Second obstacle down. High five 🖐️&lt;/p&gt;

&lt;h2&gt;
  
  
  Hey server, it's Fabrizio: the identity problem
&lt;/h2&gt;

&lt;p&gt;Now the part nobody talks about, and in my view the real reason to build your own MCP server.&lt;/p&gt;

&lt;p&gt;Every vendor has a connector these days. Google Drive has one. Gmail has one. Notion has one. A new one ships every week. So why write your own?&lt;/p&gt;

&lt;p&gt;Because the official connector solves the easy case: its service, your account, one at a time. Outside that, three cases are left uncovered — and they're the ones I ran into.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The connector doesn't exist.&lt;/strong&gt; Your internal tool, the script you wrote against some back-office API, the database at home: no vendor will ever write the connector for your own tool.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You need two accounts of the same service.&lt;/strong&gt; Right now each connector holds one: you connect your Gmail and the company's &lt;code&gt;contact@&lt;/code&gt; mailbox stays out in the cold.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upstream there's a single key for everyone.&lt;/strong&gt; Access works fine, but the system on the other side sees one user for the whole team. Access is solved. &lt;strong&gt;Who you are isn't.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Take Kimai, the system we track client project hours in. The server has an admin token: one key, very powerful, able to write anyone's hours. Convenient for the server. Useless for us.&lt;/p&gt;

&lt;p&gt;Because if I log three hours on a project, those three hours have to show up &lt;strong&gt;under my name&lt;/strong&gt;. Not under the partner who set up the token first. Not under a generic "Arkad" user.&lt;/p&gt;

&lt;p&gt;It's called traceability. Without it, the hours ledger is worthless: you don't know who did what, you don't invoice accurately, you can't see where the team's time is going.&lt;/p&gt;

&lt;p&gt;How is this usually solved? Badly. Three separate API keys, one per partner, each to store, each to rotate, each to reconfigure in three environments. Back to square one, times three.&lt;/p&gt;

&lt;p&gt;The clean path we chose: &lt;strong&gt;everyone authenticates with their own GitHub account, inside a GitHub organization only we have access to.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbnqwg3a2v7lv9lehmoim.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbnqwg3a2v7lv9lehmoim.webp" alt="The People page of a GitHub organization: four members, each with two-factor authentication enabled and membership via direct assignment." width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The GitHub organisation: whoever is in gets in, whoever leaves loses access to everything in one click.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Two things follow from that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The wall.&lt;/strong&gt; Only members of the organization can use the connector. Whoever isn't in doesn't get in — and the day someone leaves the team, you remove them from the organization and they've lost access to everything. One move, not a hunt for scattered keys.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The name.&lt;/strong&gt; The server knows who you are on every call. So when I log hours I don't have to tell it I'm Fabrizio: it already knows, and it puts my name in the right place by itself.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Not one of us three holds a Kimai API key. &lt;strong&gt;We don't need one.&lt;/strong&gt; We authenticate once with GitHub and the server does the rest, knowing exactly who asked for what.&lt;/p&gt;

&lt;p&gt;And since you're writing the server anyway, you pick up a second advantage. A vendor's official connector brings forty tools and broad permissions into your context: you load them all, always, even when you use two. Yours exposes six, read-only, with the rules written server-side. Less context spent — more on that below — and a much smaller surface to defend. For a cautious client that isn't a technical detail: it's a sales argument.&lt;/p&gt;

&lt;p&gt;Third obstacle down.&lt;/p&gt;

&lt;p&gt;Here, roughly, is what our MCP authentication setup looks like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9kzm2ia4rolgw5ld9y7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk9kzm2ia4rolgw5ld9y7.png" alt="Three people using Claude Code, Claude Desktop and ChatGPT: all three clients reach a single Cloudflare gateway behind a GitHub login, which holds the keys and serves the internal tools — Matomo, SEO, Kimai, Scanner, PDF." width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One server. Three people, whichever client they prefer, their own GitHub account at the door — and keys that never leave Cloudflare.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the plugin from a GitHub marketplace
&lt;/h2&gt;

&lt;p&gt;That leaves distribution and updates, which are the same problem seen at two different moments.&lt;/p&gt;

&lt;p&gt;The answer is a GitHub repository set up as a &lt;em&gt;marketplace&lt;/em&gt;: a registry listing the available plugins. Everything lives inside it: the catalog, one plugin per tool family, and — since we merged the two repos — the Worker code as well. Skill and tool change in the same commit.&lt;/p&gt;

&lt;p&gt;We're not alone in this. Thoughtworks put the Claude Code plugin marketplace on its Technology Radar for exactly this reason: sharing custom commands, agents, MCP servers and skills used to be manual copy-paste out of Confluence, which left team members running outdated instructions, and their teams now distribute those artifacts through the marketplace with a Git-based model, hosting internal marketplaces on GitHub. Same disease, same cure — they just wrote it down before we did.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;arkad-marketplace/
├── .claude-plugin/
│   └── marketplace.json      # the catalog: name, owner, list of plugins
├── plugins/
│   ├── arkad-documents/      # Skills-only plugin: no MCP, no secrets
│   │   └── skills/arkad-documents/
│   │       ├── SKILL.md
│   │       └── assets/       # templates and logos ride inside the Skill
│   └── arkad-tools/          # plugin with a connector: one MCP server, ten Skills
│       ├── .claude-plugin/
│       │   └── plugin.json   # name and version — the version is the release switch
│       ├── .mcp.json         # four lines: type http and a URL. No token.
│       └── skills/           # arkad-connect, arkad-seo, arkad-kimai…
├── arkad-tools.plugin        # the plugin zip: this is how Cowork installs it
└── gateway/                  # the Cloudflare Worker, in the same repo
    ├── src/index.js          # the OAuth wrapper around the MCP handler
    ├── src/github-auth.js    # GitHub login and organization allowlist
    ├── src/mcp.js            # JSON-RPC: initialize, tools/list, tools/call
    ├── src/tools/            # one file per family: matomo, seo, kimai…
    └── wrangler.toml         # the KV binding and the list of secrets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note &lt;code&gt;arkad-documents&lt;/code&gt;: no &lt;code&gt;.mcp.json&lt;/code&gt;. It's instructions and templates only, it touches no system — and it therefore costs nothing in context until you invoke it.&lt;/p&gt;

&lt;p&gt;A partner adds the marketplace once and installs the plugin. From then on the cycle is this: I edit a Skill, fix the code, push to GitHub. He runs the update and has the latest version. All the Skills, the connector, everything together. &lt;strong&gt;Without me sending him anything.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The version number isn't decorative: it's how Claude Code knows there's something new to fetch.&lt;/p&gt;

&lt;p&gt;And since it's all on Git, the history of changes stays. You can see who changed what.&lt;/p&gt;

&lt;p&gt;Last two obstacles down together.&lt;/p&gt;

&lt;p&gt;After a few months of real use, the compound effect is this: nobody asks &lt;em&gt;how did you configure yours?&lt;/em&gt; anymore. The question stopped making sense.&lt;/p&gt;

&lt;p&gt;We also dropped the other habit: sending each other files over WhatsApp, because that's where we talk. One of us downloaded it, the other didn't. Three weeks later the one who hadn't would message you that the download had expired and he needed it again — and by then you were already on version six.&lt;/p&gt;

&lt;p&gt;There's one plugin, one version, credentials that belong to each person, Skills written once, and an agent that uses the tools correctly without anyone explaining anything to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP isn't dead: the real context cost
&lt;/h2&gt;

&lt;p&gt;Here comes the objection. And it always arrives with a certain confidence: &lt;em&gt;MCP is dead, it eats context, we use Skills now.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There's something to it. A connector loads its tool descriptions into the context window at startup. Always, whether you use them or not. A Skill only loads when needed. On that point, whoever says it is right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But that's a long way from dead.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Context consumption is a consequence of how you write the descriptions. The whole trick is right there.&lt;/p&gt;

&lt;p&gt;Keep MCP tool descriptions to the bare minimum: what the function does, what parameters it takes, full stop. Everything else — when to use it, in what order, how to read the result, which errors are normal — &lt;strong&gt;goes into a Skill in the same plugin&lt;/strong&gt;, which loads only at the moment it's actually needed.&lt;/p&gt;

&lt;p&gt;Done that way, my plugins sit at around &lt;strong&gt;1%&lt;/strong&gt; of the context window. You can measure it yourself with a plain &lt;code&gt;/context&lt;/code&gt; in Claude Code.&lt;/p&gt;

&lt;p&gt;One percent for direct access to my systems from any environment isn't a price. It's a rounding error.&lt;/p&gt;

&lt;h2&gt;
  
  
  What holds for three partners, and what will change
&lt;/h2&gt;

&lt;p&gt;One last thing, because I don't want to sell this architecture as more than it is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub isn't the answer. It's our answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We picked it for a mundane reason: there are three of us, we all already had a GitHub account and an organization of our own where we keep our projects, so there was nothing to create and nothing to explain. But the Cloudflare server is configured exactly the same way with Google, or with any other identity provider the company already uses.&lt;/p&gt;

&lt;p&gt;The pattern isn't "use GitHub". The pattern is: &lt;strong&gt;lean on the directory you already have&lt;/strong&gt;, whatever it is. The day someone who doesn't write code joins, or the day we install this architecture at a non-technical client, GitHub is the wrong choice and Google Workspace is the right one. The provider changes, the design doesn't.&lt;/p&gt;

&lt;p&gt;And then there's an honest limitation to state.&lt;/p&gt;

&lt;p&gt;Today we all have &lt;strong&gt;identical permissions&lt;/strong&gt;: any of us can use any tool. So the server only needs to know one thing, who you are, and it knows it. That's plenty.&lt;/p&gt;

&lt;p&gt;The day we give access to an employee, it won't be. We'll need roles defined on the server, each role mapped to a set of tools, and a role assigned to whoever connects based on their position in the organization. Whoever holds the right role sees that tool, the others don't.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Things will get more complicated.&lt;/strong&gt; I'm not hiding it.&lt;/p&gt;

&lt;p&gt;But that's a problem we'll have when we have it. Meanwhile this has genuinely changed how we work, and in this field everything moves so fast that the only sensible promise is that one: when it needs to change, we'll change it.&lt;/p&gt;

&lt;h2&gt;
  
  
  In short
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Skills are easy to write and impossible to keep in sync by hand across three copies.&lt;/li&gt;
&lt;li&gt;Skills and MCP connectors aren't the same thing: the first instruct, the second act. Keeping them apart is what lets the context breathe.&lt;/li&gt;
&lt;li&gt;A remote connector is visible the same way from Claude Code, Cowork and scheduled tasks, because it lives on none of the three.&lt;/li&gt;
&lt;li&gt;Secrets stay encrypted on the server, in one place. Each person authenticates on their own behalf.&lt;/li&gt;
&lt;li&gt;GitHub organization auth buys two things at once: everyone outside the team stays out, and the server knows the name of whoever is calling. No more one API key per partner.&lt;/li&gt;
&lt;li&gt;A GitHub marketplace pushes every update to the whole team with one command, and keeps the record of who changed what.&lt;/li&gt;
&lt;li&gt;MCP isn't dead. In a well-kept plugin it costs about 1% of the context window, and it buys the one thing Skills alone can't give you: the ability to act.&lt;/li&gt;
&lt;li&gt;GitHub is our instance of the pattern, not the pattern: Google or any existing company directory works just as well. And as long as permissions are identical for everyone, identity is enough; with an employee you'll need roles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It takes one afternoon. It takes two free accounts.&lt;/p&gt;

&lt;p&gt;And then you don't go back.&lt;/p&gt;

&lt;p&gt;Enjoy the afternoon. See you around 👋&lt;/p&gt;




&lt;p&gt;Arkad Consulting helps teams and companies put AI into production without the hype: from internal agents to shared Claude Code plugins. &lt;a href="https://arkad-consulting.com/" rel="noopener noreferrer"&gt;Let's talk&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://arkad-consulting.com/en/blog/claude-code-plugin-marketplace-team/" rel="noopener noreferrer"&gt;arkad-consulting.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>mcp</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Get Serious About AI: Start Here</title>
      <dc:creator>Fabrizio</dc:creator>
      <pubDate>Mon, 08 Jun 2026 11:37:49 +0000</pubDate>
      <link>https://dev.to/fab-arkad/get-serious-about-ai-start-here-2m94</link>
      <guid>https://dev.to/fab-arkad/get-serious-about-ai-start-here-2m94</guid>
      <description>&lt;h2&gt;
  
  
  How an AI actually thinks
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tokens: the hidden unit of measure
&lt;/h3&gt;

&lt;p&gt;When you type to an AI, it doesn't read words. It reads tokens — little chunks of text. A token might be a whole word ("house"), part of a word ("intelli" + "gence"), or just a punctuation mark.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x95bfx50d5d27vjmp2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4x95bfx50d5d27vjmp2g.png" alt=" " width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;«I think I am»: each colour is a token.&lt;/em&gt;&lt;br&gt;
So why chop text up like this instead of just working with whole words?&lt;/p&gt;

&lt;p&gt;Because if the model only knew whole words, anything it hadn't seen before would trip it up — a typo, a name, a technical term, a foreign word. Anything outside its vocabulary would just stop it. But with fragments, it can build even words it has never seen from pieces it already knows. That's why it still understands you when you type in a hurry and your words come out wrong! 😉&lt;/p&gt;

&lt;p&gt;So why not go all the way down to single letters?&lt;/p&gt;

&lt;p&gt;Because the smaller the unit, the more tokens it takes to say the same thing, and the model's workload grows fast — double the tokens and you don't double the effort, you blow it up. The token is the sweet spot: big enough to stay efficient, small enough to never panic in front of a new word.&lt;/p&gt;

&lt;p&gt;In AI, everything is counted in tokens — what you write and what the model writes back — and those tokens are what you're billed on, incoming and outgoing alike. It's not a technical footnote. It's the unit you measure work and cost in.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost of models: why two similar answers can cost different amounts
&lt;/h2&gt;

&lt;p&gt;Every model has its own price, usually quoted as cost per million tokens. And here's the first surprise: ask the same question of two different models and one can cost twenty times more than the other.&lt;/p&gt;

&lt;p&gt;More powerful models are more expensive to run, so they cost more per token: a lightweight model runs you a few cents where a top-tier one charges a few euros. Which leads to a practical rule — you don't always need the most powerful model. To summarise an email or sort incoming requests, the lightweight one does the job beautifully at a fraction of the price. Save the expensive one for real reasoning: a tricky analysis, sensitive code, a piece of writing that has to be flawless. Matching the model to the task is already half of cost control.&lt;/p&gt;

&lt;p&gt;There's a second thing that weighs on the bill: input and output aren't priced the same. The tokens you send in — prompt, documents, conversation history — are the input. The ones the model writes back are the output, and they almost always cost more, often three or four times as much.&lt;/p&gt;

&lt;p&gt;It comes down to where the effort goes. Reading your prompt is the easy part — the model takes it in all at once. Writing the answer is the real work: it produces one token at a time, and at every step it has to pick the next one while keeping everything it's written so far in mind. The energy goes into the writing, not the reading. That's why you pay more for output and less for input.&lt;/p&gt;

&lt;h2&gt;
  
  
  Context: the model's working memory
&lt;/h2&gt;

&lt;p&gt;Context is everything the model has in front of it while it answers you: your question, the instructions, the documents you've handed over, and the back-and-forth so far.&lt;/p&gt;

&lt;p&gt;Two things worth knowing. First, context has a ceiling — the context window, also measured in tokens. When it's big, you can drop in whole contracts or reports; when it's small, you have to be picky about what goes in. Second, and less obvious: you pay for the whole context, every single message. In a long conversation, every new line makes the model reread all the rest from scratch. That's why never-ending chats get slow and pricey — they drag a heavier and heavier load behind them.&lt;/p&gt;

&lt;p&gt;Think of a desk. Context is the space on the table: you keep the documents you need right now in front of you. Pile it with junk and you work worse. Keeping it clear — giving the model only what actually matters — is a real skill.&lt;/p&gt;

&lt;p&gt;So how big is the window?&lt;/p&gt;

&lt;p&gt;Bigger every year. Next to a model's name you'll often see something like 1M — the window holds a million tokens, about as large as it gets today. That's hundreds of pages: in theory you could stuff whole documents or marathon conversations in there.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In the model selector, «1M» indicates the one-million-token context window.&lt;/em&gt;&lt;br&gt;
In theory. Because having the room doesn't mean you should fill it: the more you load the context, the worse the answers get. Buried under thousands of lines, the model loses the thread of what matters — past roughly 300,000 tokens it starts slipping in accuracy and "forgetting" important things. It's a limit of today, one that'll ease as models improve, but for now you have to plan around it. The goal isn't to fill the window. It's to never get near the bottom.&lt;/p&gt;

&lt;p&gt;In practice, two habits cover most of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compact often.&lt;/strong&gt; Work in stages: at each milestone, summarise where you've landed, start fresh from the summary, and drop the rest. A trimmed-down conversation runs far better than one hauling every line from the start. Some tools do it for you — ChatGPT and Claude manage the context behind the scenes, dropping the oldest messages as the chat gets long. Others, built for people who work in depth (Claude Code, for example), hand you the controls: you trigger the compaction yourself, with a command like /compact.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One topic per session.&lt;/strong&gt; Different jobs, different chats. Don't use the same thread to draft a client email, clean up a spreadsheet, and then brainstorm ideas for a post — each topic leaves residue that muddies the next. Opening a fresh chat costs nothing, and it's almost always the right move.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Simple models and complex models: the difference that matters
&lt;/h2&gt;

&lt;p&gt;We tend to think the most expensive model is the best one. It's more useful to picture them as a team with different roles.&lt;/p&gt;

&lt;p&gt;A lightweight model is fast and cheap, great for well-defined, repetitive work: pulling out data, classifying, answering routine questions, banging out first drafts. Think of a sharp intern — hand it a clear task and it's done in no time.&lt;/p&gt;

&lt;p&gt;A top-tier model is slower and pricier, but it holds up under real reasoning: nuance, ambiguity, problems with several moving parts. Think of a senior consultant — you pay more, but that's who you call when things get serious.&lt;/p&gt;

&lt;p&gt;Knowing when to switch between the two — lightweight for volume, powerful for the hard knots — is exactly what separates someone who uses AI well from someone who just wings it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Language or multimodal: what the model "sees"
&lt;/h2&gt;

&lt;p&gt;The early models understood and produced text only — these are the language models. You write, they write.&lt;/p&gt;

&lt;p&gt;Multimodal models handle several kinds of data at once: text, images, sometimes audio and video. Show one a photo of an invoice and it pulls the figures; hand it a screenshot of a chart and it tells you what's going on; give it a picture and it tells you what's in it.&lt;/p&gt;

&lt;p&gt;One distinction worth getting straight: multimodal on the way in versus on the way out. On the way in means the model can take in more than text — photos, PDFs, audio, video. On the way out means it can produce them — not just write, but generate an image or a voice. Today's top-tier models (GPT-5.5, Gemini 3, Claude Opus 4.7) take almost anything on the way in; on the way out the capabilities vary a lot, so it's worth checking case by case.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A model card: Input accepts text and images, Output text only — multimodal on the way in but not on the way out.&lt;/em&gt;&lt;br&gt;
A few acronyms show up here, worth decoding once and never looking up again:&lt;/p&gt;

&lt;p&gt;STT (Speech-To-Text): voice in, text out. Automatic transcription — you talk, it types. You'll also see it called ASR (Automatic Speech Recognition).&lt;br&gt;
TTS (Text-To-Speech): text in, voice out. The reverse route — you write, and the model reads it aloud.&lt;br&gt;
Text-to-Image (sometimes TTI): text to image. You describe what you want and the model draws it — it's what powers tools like Midjourney and DALL·E.&lt;br&gt;
Image-to-Image (img2img): image to image. You start from a picture and transform it — restyle it, touch it up, extend it past its edges.&lt;br&gt;
If you're deciding what to automate, it boils down to one question: is your starting material text only, or are there images and visual documents in the mix?&lt;/p&gt;

&lt;p&gt;Scans, photos, PDFs full of tables — you want a multimodal one. Text only — a language model has you covered.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt that makes the difference
&lt;/h2&gt;

&lt;p&gt;Most of the time, the gap between a mediocre result and a great one isn't the model. It's how you asked.&lt;/p&gt;

&lt;p&gt;The prompt is the instruction you give the AI, and the quality of the answer tracks the quality of the request. A vague prompt ("write me something about marketing") gets you a vague result. A sharp one — with role, context, goal, format, and an example or two — gets you something you can actually use.&lt;/p&gt;

&lt;p&gt;It's worth knowing, especially once you start using AI inside your own tools and not just in a chat box, that there are three types of prompt.&lt;/p&gt;

&lt;p&gt;System: the ground rules — who the model is and how it should behave. Its role, its tone, the things it should always respect. It frames the entire conversation, and it usually stays hidden: in a ready-made app or assistant, the system prompt was written by whoever built it, and you never even see it.&lt;br&gt;
User: what you ask, message by message.&lt;br&gt;
Assistant: the model's own replies, which are part of the prompt too — with every new message it rereads what it already said as well.&lt;br&gt;
In everyday chat these three types stay out of sight: you just type. But the moment you work through an API or configure your own assistant, understanding the difference is what lets you give it a steady identity (in the system), kept separate from each individual request (in the user).&lt;/p&gt;

&lt;p&gt;Three habits that change the results straight away:&lt;/p&gt;

&lt;p&gt;Be specific about context and goal. Not "write me an email," but "write a follow-up to an SME client who's gone quiet for two weeks — warm but direct tone, 120 words max."&lt;br&gt;
Show an example. One sample of what a good result looks like beats a thousand explanations.&lt;br&gt;
Iterate. The first prompt is a draft: you refine it, add a constraint, improve it pass by pass. Every small adjustment compounds.&lt;br&gt;
Learning to prompt well isn't a trick for tinkerers. It's the single highest-return skill in the whole thing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The tools you need
&lt;/h2&gt;

&lt;p&gt;Understanding the concepts is half the job; the other half is the setup you work in. These aren't "programmer stuff" — they're the workbench of anyone who wants to build something serious with AI: scripts, integrations, small projects that last over time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Git: the time machine for your files
&lt;/h3&gt;

&lt;p&gt;Git tracks every change you make to your files. Each time you save a checkpoint (a commit), it takes a snapshot: you can roll back to any version, see what changed and when, and work on different ideas in parallel without breaking the one that already works.&lt;/p&gt;

&lt;p&gt;Picture the version history on a shared document, but far more powerful and for any kind of file. The payoff isn't only technical — it's peace of mind, knowing nothing's ever really lost and every mistake can be undone.&lt;/p&gt;

&lt;p&gt;But do you actually need it?&lt;/p&gt;

&lt;p&gt;Fair question — Git can look intimidating at first — and the honest answer depends on how you work. If you're a freelancer working 90% of the time on your own machine, using Claude or another local agent for your files (projects, second brain, invoices), you probably don't need Git: a synced cloud drive (Google Drive, OneDrive, Dropbox) keeping an always-current backup is plenty. Simple, automatic, done.&lt;/p&gt;

&lt;p&gt;Git earns its keep the moment more than one set of hands is touching the same files. You're working with a team on shared projects — local or in the cloud — and these days "the team" can include agents too.&lt;/p&gt;

&lt;p&gt;Here's a real example from my own setup. Everything lands in my inbox: links, ideas, photos, quick notes. But it comes in through different doors — sometimes I jot it in the iPhone Notes app, sometimes I send a voice memo to an agent that transcribes it (STT) and commits the text straight to GitHub. So the same folder gets touched by my machine and by an agent writing from the cloud, sometimes within the same minute. Without Git to reconcile those overlaps and merge them without dropping anything, I'd be sunk.&lt;/p&gt;

&lt;p&gt;So, the rule of thumb:&lt;/p&gt;

&lt;p&gt;Working solo and just getting started with local agents?&lt;br&gt;
A synced drive as a backup is more than enough.&lt;br&gt;
Sharing a second brain with your partners, or have several sources — you plus your agents — writing to the same files?&lt;br&gt;
That's where Git stops being a developer's affectation and becomes the only thing holding it all together.&lt;br&gt;
One more thing in its favour: Git is free. To get started you lean on GitHub or GitLab, whose free tiers are more than enough. And if you've got data you'd rather not hand to an outside provider, Git is open source: spin up a self-hosted server (Gitea or GitLab CE) on your own VPS and keep everything in-house. Same tool, total control.&lt;/p&gt;

&lt;h3&gt;
  
  
  .md files (Markdown): documenting effortlessly
&lt;/h3&gt;

&lt;p&gt;Markdown (the .md files) is a way to write formatted text — headings, lists, bold, links — with a handful of simple marks, no Word and no menus. A # makes a heading, a dash makes a list item, two asterisks make something bold.&lt;/p&gt;

&lt;p&gt;It's lightweight, readable as it is, and works everywhere. It's the standard for documenting projects and keeping structured notes — and, not coincidentally, the format you'll often use to talk to AI. The four basic rules take ten minutes to learn.&lt;/p&gt;

&lt;p&gt;There's one more reason, and it's about AI specifically: Markdown goes down far easier than a PDF. A PDF was built for printing and is stuffed with layout data the model doesn't need and that clutters its context; Markdown is just clean text. For the same content it takes up less of the window and leaves the model with a clearer head.&lt;/p&gt;

&lt;p&gt;And the best part: let the AI generate and tidy your .md files — tell it to keep them tight — and it's the AI that adds the links between notes (the wikilinks), the indexes, the cross-references. It quietly builds you a small, navigable second brain, with no formatting on your end.&lt;/p&gt;

&lt;h3&gt;
  
  
  "But I've got a mountain of PDFs — now what?"
&lt;/h3&gt;

&lt;p&gt;It depends on the use:&lt;/p&gt;

&lt;p&gt;Day-to-day PDFs the AI has to reread constantly (manuals, spec sheets, reference docs): convert them to Markdown once and keep those as your working copies. They load into the context clean and light.&lt;br&gt;
Archive PDFs where you only care about the aggregate figure (statements, invoices, receipts): no sense feeding them in one at a time. At the end of the month, pull the numbers you need into a CSV or a spreadsheet and work from that. One clean table beats a hundred PDFs leafed through one by one.&lt;br&gt;
One last tip: to read and manage your .md files painlessly there's Obsidian, a free app made for exactly this. It shows them nicely formatted, follows the links between notes with a click, and turns a folder of .md files into a genuinely browsable archive.&lt;/p&gt;

&lt;h3&gt;
  
  
  APIs and OAuth: connecting your tools
&lt;/h3&gt;

&lt;p&gt;An API is how two pieces of software exchange information: one program sends a request in a set format, the other replies, automatically and the same way every time. The rules of the exchange — which requests are allowed and what shape the reply takes — are set by whoever provides the API. You don't do whatever you like; you use the operations on offer, in the way intended.&lt;/p&gt;

&lt;p&gt;Why do they matter so much?&lt;/p&gt;

&lt;p&gt;Because these days APIs are the main connector between all your tools, yours and everyone else's. Almost every serious service — Gmail, Asana, Trello, your business software, even your bank — exposes an API: it's the door your automations come through, and the way one tool talks to another. It's also how an AI works inside your tools instead of staying boxed in its own chat.&lt;/p&gt;

&lt;p&gt;But to knock on that door you have to identify yourself, and there are two ways worth telling apart:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API key:&lt;/strong&gt; a secret code you generate in the service's settings that says "it's me." You use it for your own automations, where you control both ends. It has to be kept safe — more on that later, in the .env section.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OAuth:&lt;/strong&gt; the "permission handshake." Instead of pasting a key, you click Connect, log in, and grant the app access — without ever handing over your password. It's exactly what happens when you connect Asana or Trello to Claude: a screen asks for permission, you give it, and from then on the two tools talk. You can revoke that access anytime, and the password never changes hands.
A distinction that costs real money: subscription or pay-as-you-go API?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Claude or ChatGPT through their apps, on a fixed monthly subscription, is the easy path for everyday work: you pay a set fee and get a ready-made interface.&lt;/p&gt;

&lt;p&gt;Through an API — via Anthropic's Console or OpenAI's Platform — it works differently: no flat fee, you pay per use, by the token (remember input and output?). It's the route to baking AI into your own tools or automations: more flexible and powerful, but keep an eye on the meter — with top-tier models the figures climb fast, and watching the bill is on you.&lt;/p&gt;

&lt;p&gt;To get your bearings:&lt;/p&gt;

&lt;p&gt;Use Claude every day and want to connect Gmail, Asana, Drive, Calendar to it?&lt;br&gt;
Subscription + OAuth. Pay the flat fee and link your tools with a click, no keys to handle.&lt;br&gt;
Building agents — cloud or local — that run on OpenAI or Anthropic models?&lt;br&gt;
Generate an API key and add it to the project: that gets you every model the provider offers, often a wider lineup than what's bundled into the monthly plan.&lt;br&gt;
And one handy tool to finish: Postman lets you try out an API before you've written a single line of a real program. You fill in the request in a visual interface, hit send, see the reply. It's the perfect place to learn how a service behaves before you commit to integrating it — without any fear of breaking something.&lt;/p&gt;

&lt;h3&gt;
  
  
  Python &amp;amp; Co: when you want to build something of your own
&lt;/h3&gt;

&lt;p&gt;An honest heads-up: we're edging into "advanced" territory here, so I'll keep it short.&lt;/p&gt;

&lt;p&gt;Want to go further and build yourself some little software of your own?&lt;/p&gt;

&lt;p&gt;Don't get stuck on "which language do I pick? how do I develop it?" It depends on what you're making, but a handful of popular, well-documented tools will already take you a long way.&lt;/p&gt;

&lt;p&gt;First, two terms you'll hear constantly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stack:&lt;/strong&gt; the set of tools you build software with — the language, the database, the interface. "Picking a stack" means deciding which building blocks you'll put your application together with.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frontend and backend:&lt;/strong&gt; the frontend is what the user sees and touches — screens, buttons, forms. The backend is the engine behind the curtain — the logic and the data, which the user never sees. Like a restaurant: the dining room is the frontend, the kitchen is the backend.
A solid, widely used starter stack: Python or Node.js (JavaScript) for the logic, PostgreSQL for the database, and a JavaScript framework like React or Next.js for the frontend. Hugely popular tools, packed with guides and examples, and well understood by the AI that'll help you write the code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A quick word on the languages you'll bump into most.&lt;/p&gt;

&lt;p&gt;Python is the go-to for data and AI: it reads almost like English, has a library for nearly everything, and sits right at the crossroads of automation and artificial intelligence. The day you want an AI to crunch data systematically, you'll almost certainly do it here.&lt;/p&gt;

&lt;p&gt;Node.js is JavaScript outside the browser: the same language web pages are built with, but running on your computer or a server. It's the natural pick for web apps and anything that lives online. The bonus: learn JavaScript once and you use it for both the frontend and the backend.&lt;/p&gt;

&lt;p&gt;Bash is the language of the terminal, the command line: moving files, chaining programs, automating routine tasks. And it's having a moment again for a specific reason: it's how an agent on your machine talks to the computer. When a local agent creates a file, opens a folder, or runs a command, it's using Bash underneath. Knowing the basics is worth it if only to understand what it's doing on your behalf.&lt;/p&gt;

&lt;h3&gt;
  
  
  Environment variables and .env files: keeping secrets safe
&lt;/h3&gt;

&lt;p&gt;When a program calls an AI through an API, it has to identify itself with a secret key. That key is like your card's PIN — whoever has it spends in your name.&lt;/p&gt;

&lt;p&gt;The golden rule: never put keys or passwords in your code. Keep them separate, in environment variables — values that live outside the program — usually in a .env file. The program reads them from there, and that file stays private: never shared, never published.&lt;/p&gt;

&lt;p&gt;It's a safe: the important values go inside, not painted on the wall. It's one of the first security habits to pick up, and one of the most ignored by beginners — a stolen key means real charges on your account.&lt;/p&gt;

&lt;p&gt;Here's how concrete this gets. With AI, lots of people have thrown themselves into programming without mastering the basics, and they end up publishing their own API keys on GitHub, sometimes in public repositories. The trouble is there are already people combing through those repositories on purpose, hunting for keys to exploit for free — at the unlucky victim's expense.&lt;/p&gt;

&lt;h3&gt;
  
  
  A bit of documentation: the gift you give yourself
&lt;/h3&gt;

&lt;p&gt;Last, the most underrated habit of all: jotting down a couple of lines about what something does and why. A notes file, a quick line on the reason for a choice.&lt;/p&gt;

&lt;p&gt;You don't need a manual. You just need enough that you-in-six-months — who'll have forgotten all of it — can pick it back up in five minutes instead of a whole afternoon. Documentation is a letter to your future self, and your future self will thank you every single time.&lt;/p&gt;

&lt;p&gt;Two practical ways to not leave it to chance:&lt;/p&gt;

&lt;p&gt;If you use Git, lean on issues: cards built into the repository where you track to-dos, bugs, and ideas you don't want to lose. They stay tied to the project and its history, so your to-do list lives right next to the work instead of scattered across ten places.&lt;br&gt;
If you don't use Git, ask your local agent to keep the documentation in order: index files that act as a map, session files that log what you did and when. Set it up once, and it takes care of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The complete picture
&lt;/h2&gt;

&lt;p&gt;On one side you've understood how an AI thinks: the tokens it uses to measure — and bill — everything, input and output alike; the cost that swings wildly between a lightweight model and a top-tier one; the context to keep clean like a desk, compact often and never fill to the brim; the difference between language and multimodal; and prompts — with the system, user and assistant roles — as the main lever for better results.&lt;/p&gt;

&lt;p&gt;On the other you've got the workbench: Git so nothing's ever lost (when you actually need it), Markdown to document and talk to AI better, APIs with a key or OAuth to connect your tools, the choice between subscription and pay-as-you-go, Python, Node and Bash to build yourself something of your own, the .env files for secrets, and a bit of documentation for tomorrow's you.&lt;/p&gt;

&lt;p&gt;None of this needs a PhD. You just need to see it laid out clearly once — and from there it becomes the common language you use to take AI in hand and put it to work on purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the Author
&lt;/h2&gt;

&lt;p&gt;I'm Fabrizio from Arkad Consulting.&lt;/p&gt;

&lt;p&gt;I help businesses automate workflows using AI agents,&lt;br&gt;
n8n, RAG systems and local AI infrastructure.&lt;/p&gt;

&lt;p&gt;Website:&lt;br&gt;
&lt;a href="https://arkad-consulting.com" rel="noopener noreferrer"&gt;https://arkad-consulting.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More articles:&lt;br&gt;
&lt;a href="https://arkad-consulting.com/en/blog/" rel="noopener noreferrer"&gt;https://arkad-consulting.com/en/blog/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Your WordPress Site Is Costing You More Than You Think</title>
      <dc:creator>Fabrizio</dc:creator>
      <pubDate>Mon, 04 May 2026 12:01:11 +0000</pubDate>
      <link>https://dev.to/fab-arkad/your-wordpress-site-is-costing-you-more-than-you-think-105d</link>
      <guid>https://dev.to/fab-arkad/your-wordpress-site-is-costing-you-more-than-you-think-105d</guid>
      <description>&lt;h2&gt;
  
  
  Why rebuilding from scratch is now faster, cheaper, and smarter than maintaining a legacy content management system
&lt;/h2&gt;

&lt;p&gt;There's a conversation we keep having with clients. It goes something like this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"We know our site is slow. We know the plugins are a mess. But we've invested so much in WordPress — can't we just... fix it?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The honest answer? In 2026, fixing WordPress is often more expensive than replacing it. And the reason isn't WordPress itself — it's that the entire paradigm has shifted.&lt;/p&gt;

&lt;h2&gt;
  
  
  The WordPress Problem Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;WordPress powers roughly 40% of the web. It's an incredible achievement. But here's what happens in practice with most business sites we audit:&lt;/p&gt;

&lt;p&gt;The site runs on 15–30 plugins. Each one adds weight, security surface, and maintenance overhead. Some conflict with each other. Some haven't been updated in two years. The theme was customized by a developer who's no longer available, and nobody wants to touch the code because "last time we updated, the site broke."&lt;/p&gt;

&lt;p&gt;Meanwhile, every page load triggers a database query, processes a PHP template, assembles the response, and sends it to the visitor. Every single time. Even though the page hasn't changed in three weeks.&lt;/p&gt;

&lt;p&gt;It works. But it's slow by design. And the real cost isn't the hosting bill — it's the time your team spends managing a system that fights them at every turn.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shift: From Dynamic to Static
&lt;/h2&gt;

&lt;p&gt;Here's what's changed. Five years ago, if you wanted a fast, modern website, you needed a development team and a complex workflow. Today, tools like Astro, Next.js, etc. let you pre-render your entire site into plain HTML files — no server, no database, no PHP. Just static pages served instantly from edge servers around the world.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"But wait — if it's static, how do I update my content?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the question everyone asks. And it's the right one.&lt;/p&gt;

&lt;p&gt;The answer is a headless content management system — a content management system that's completely separate from your website's design. You edit your text and images in a clean, modern interface. When you hit publish, the site automatically rebuilds and deploys. Within minutes, your changes are live.&lt;/p&gt;

&lt;p&gt;No plugins to update. No theme conflicts. No database to back up. No security patches to worry about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sanity: The Content Manager That Gets Out of Your Way
&lt;/h2&gt;

&lt;p&gt;We've been working with Sanity as our headless content platform of choice, and here's why it fits this model so well.&lt;/p&gt;

&lt;p&gt;Sanity is a structured content platform. Instead of the classic WordPress editor where you're mixing content with layout (drag this block here, change this column width there), Sanity focuses purely on your content: text, images, data fields. The presentation is handled entirely by the frontend.&lt;/p&gt;

&lt;p&gt;This sounds limiting, but it's actually liberating. Because here's a truth about how most clients actually use their content manager:&lt;/p&gt;

&lt;p&gt;They change text and images. That's it.&lt;/p&gt;

&lt;p&gt;In years of working with small and medium businesses, we've seen the same pattern. The client asks for full control over their site. They get WordPress with a page builder. And then 95% of their edits are: update a price, swap a photo, change a phone number, fix a typo.&lt;/p&gt;

&lt;p&gt;Sanity gives you exactly that — a clean, focused interface for the content you actually change. No risk of accidentally breaking the layout. No "the page looks different since I moved that widget."&lt;/p&gt;

&lt;p&gt;What about open-source alternatives? Tools like Strapi and Directus offer similar headless content manager capabilities and are fully self-hosted. We haven't battle-tested them on client projects yet, but they're serious options if you prefer to own the entire stack. The core principle is the same: decouple your content from your presentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Pieces Fit Together
&lt;/h2&gt;

&lt;p&gt;The workflow is straightforward:&lt;/p&gt;

&lt;p&gt;Your site is built with a static site generator (we use Astro). All pages are pre-rendered as HTML and deployed to a global content delivery network — in our case, Cloudflare Pages, which serves from 300+ locations worldwide.&lt;/p&gt;

&lt;p&gt;Your content lives in Sanity Studio, where your team can edit freely. When they publish a change, a webhook triggers an automatic rebuild. New version deployed. Done.&lt;/p&gt;

&lt;p&gt;If your business has external data — a product feed, an API, a booking system — a small scheduled script (a Cloudflare Worker, a cron job, anything) can sync that data daily and trigger the same rebuild process.&lt;/p&gt;

&lt;h2&gt;
  
  
  But the Real Revolution Is What Comes Next
&lt;/h2&gt;

&lt;p&gt;Here's where it gets interesting.&lt;/p&gt;

&lt;p&gt;The static-first architecture isn't just faster and cheaper. It's AI-ready.&lt;/p&gt;

&lt;p&gt;When your site is a collection of structured content + a code template, something powerful becomes possible: an AI agent can modify the site directly. Change the copy. Adjust the layout. Add a section. Deploy. All from a simple instruction.&lt;/p&gt;

&lt;p&gt;This isn't theoretical. We've built an internal tool called Dedalo — our autonomous development agent — and we're already using it on our own site. A prompt, a review, a deploy. That's the workflow.&lt;/p&gt;

&lt;p&gt;Now imagine that for clients. "Add a testimonials section to the homepage" — and it's done. "Translate the site to Spanish" — deployed by morning. "Update the pricing page to reflect our new packages" — live in minutes.&lt;/p&gt;

&lt;p&gt;This is the direction we're heading, and we'll be sharing much more about Dedalo and this vision in upcoming articles. But the foundation is the same: a clean architecture where content and code are separate, structured, and accessible to both humans and AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Your Business
&lt;/h2&gt;

&lt;p&gt;If you're running a WordPress site that's becoming painful to maintain, here's the key insight:&lt;/p&gt;

&lt;p&gt;The cost of rebuilding has dropped dramatically. The cost of maintaining legacy systems hasn't.&lt;/p&gt;

&lt;p&gt;A modern static site with a headless content manager can be built in two weeks. It'll load faster, rank better, cost less to host, require zero plugin maintenance, and position you for a future where AI handles the routine changes your team currently spends hours on.&lt;/p&gt;

&lt;p&gt;WordPress was the right answer for a long time. For many businesses, it's time for the next chapter.&lt;/p&gt;

&lt;h2&gt;
  
  
  About the Author
&lt;/h2&gt;

&lt;p&gt;I'm Fabrizio from Arkad Consulting.&lt;/p&gt;

&lt;p&gt;I help businesses automate workflows using AI agents,&lt;br&gt;
n8n, RAG systems and local AI infrastructure.&lt;/p&gt;

&lt;p&gt;Website:&lt;br&gt;
&lt;a href="https://arkad-consulting.com" rel="noopener noreferrer"&gt;https://arkad-consulting.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More articles:&lt;br&gt;
&lt;a href="https://arkad-consulting.com/en/blog/" rel="noopener noreferrer"&gt;https://arkad-consulting.com/en/blog/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>ai</category>
      <category>astro</category>
      <category>tailwindcss</category>
    </item>
  </channel>
</rss>
