John KuehJohn Kueh
All articles

Article· Updated May 2026

Build the plugin, not the platform cover

I built 21 skills, an npm analytics package, and an MCP server for insolvency practitioners. None of them have a dashboard. That's the point.

The instinct when you have a useful piece of software is to wrap it in an app. Add a login page, a settings screen, a billing portal, navigation, onboarding. By the time you ship, 80% of the code is scaffolding and 20% is the thing that does the actual work.

When the user is an agent, you can skip the 80%.

The economics

bq-analytics costs about $0.40 per month at five million events. PostHog Cloud would run about $153 per month for the same volume. The delta isn't the analytics engine — it's the dashboard, the settings page, the billing portal, and the hosting that serves all of it. I didn't build any of those. I built an npm package that writes events to BigQuery, and Claude queries them when I ask.

This pattern keeps showing up. Every time I reach for a SaaS, I ask: what if the consumer is an agent calling a function, not a human clicking buttons? If the answer is "then most of the product is unnecessary," the plugin shape wins.

Three shapes

Skill — a markdown file that tells Claude how to perform a task, plus whatever scripts it needs. My keyword-data skill is a 302-line SKILL.md and a thin Python CLI that calls the DataForSEO API. A keyword research SaaS would need hosting, billing, dashboards, user accounts, and a pricing page. The skill does the same job. I have 21 of them. No server costs for any of them.

Package — an npm install that runs in your app's process. bq-analytics replaces a hosted analytics SaaS with a dependency in your package.json. Auth is delegated to your existing cloud provider. No login page, no user accounts.

MCP server — a network endpoint agents can call remotely. LedgerSignal extracts bank-statement transactions from PDFs and ships markdown playbooks for flagging suspicious patterns. The only shape that needs hosting, but even then the "app" is minimal scaffolding around the extraction tool.

What you skip

Auth systems, billing portals, settings pages, navigation, hosting, uptime monitoring, onboarding flows, help centers, UI bug triage. Every one of those is a week to build and an ongoing maintenance burden. Auth alone — OAuth, sessions, password reset, email verification — is a project unto itself. When the user is an agent authenticating via an API key, the entire category disappears.

What you keep: the thing that does the actual work.

When this doesn't work

The plugin shape fails when the user is a human who needs a GUI. My cooking app needs recipe cards you scroll through while grocery shopping. My travel app needs maps and shared itineraries. No amount of agent mediation replaces those surfaces.

But the infrastructure around those consumer apps is all plugin-shaped. Analytics runs through bq-analytics. Deployment is handled by skills. Content research for glp3.wiki runs on a daily skill that mines forums, scrapes medical journals, and patches articles — no CMS, no editorial dashboard.

If a human needs to look at it, build an app. If an agent needs to call it, build a plugin.

Frequently asked

Is this just APIs?

No. An API is a building block. A plugin is a building block plus the judgment about how to use it. The SKILL.md tells Claude when to reach for the tool, what to do first, and what the failure modes are. DataForSEO has an API — the skill wraps it with a cost-preview step, a dry-run flag, and a decision tree for which endpoint to hit. The API is the capability; the skill is the competence.

How do you charge for a plugin?

Pricing tracks the value, not the scaffolding. Skills are free and open source. The npm package is free to install — you pay for BigQuery usage. An MCP server could charge per API call. Usage-based pricing on the actual work is simpler to reason about than seats and feature gates.