Building plugins with AI

Use the build-plugin skill to build a SquaredUp custom plugin with Claude or another LLM. It explores the target API, plans the plugin with you, scaffolds the files, deploys early so everything is tested against real data, and finishes with out-of-the-box dashboards.

It runs in Claude Code. There are two ways to get it. Pick one, then follow the same guide from What the build-plugin skill does onwards.

Loom video thumbnail

Before you start

Before you can dive in and start creating your plugins, there are a few prerequisites to meet and a couple of pieces to set up.

Prerequisites

Prerequisite
How to get it
Node.js 22 or later
The SquaredUp CLI
npm i -g @squaredup/cli, then squaredup login
See The SquaredUp CLI for detailed setup instructions.
Claude Code
A SquaredUp organization
One where you can add and authenticate a data source. The skill deploys and tests against it. It will not build a plugin it cannot test.
API access to the target service
Docs (OpenAPI/Swagger is ideal) plus a working API key or OAuth app with read access to data.

Check authentication

Run the following to confirm the CLI is authenticated to SquaredUp:

squaredup status

This prints your tenant name and region. If it says you're not logged in, run:

squaredup login.

Choose your development route

Route A is recommended if there's any chance you'll share the plugin or contribute it back to the community. Route B is the quicker path if you're building something private, or want the skill available in a folder you already work in.

Route A: Clone the repo and use the skill locally

git clone https://github.com/squaredup/plugins.git
cd plugins
claude

Then in Claude Code:

/build-plugin

The skill is available under .claude/skills/ as soon as you open Claude Code in the repo root. Your plugin is created at plugins/<YourPlugin>/v1/.

Note

Keep it current. The skill improves regularly. Run git pull origin main before starting a new plugin build.

Route B: Install the skill with npx skills

From any folder:

npx skills add squaredup/plugins

This pulls the three SquaredUp skills (build-plugin, deploy-plugin and convert-dashboard) and installs them for your agent. You'll be prompted for which skills and which scope. Useful flags:

npx skills add squaredup/plugins --all     # install everything, no prompts
npx skills add squaredup/plugins -g        # install globally (available in every project)
npx skills list                            # see what's installed
npx skills update                          # pull the latest version of the skills

Then open Claude Code wherever you want the plugin to live and run:

/build-plugin

Tips to get a good result

  • Bring proper API documentation:
    An OpenAPI/Swagger spec produces a noticeably better plugin than a hand-written docs page. Have it ready before you start.
  • Use credentials with real data behind them:
    Every stream is tested against live responses. An empty or trial account gives the skill nothing to shape columns from, and the plugin will be weaker for it.
  • Take the Phase 2 approval gate seriously:
    Object types, import shape and sourceId format are cheap to change in the plan and expensive to change once files are written. Read the plan properly before approving.
  • Expect it to take a while:
    A full build with several object types and a dozen data streams involves real deploys and real imports.
  • Let the parallel work run:
    Phases 5 and 6 spawn sub-agents per stream deliberately — it keeps large API responses out of the main conversation.
  • Keep the skill up to date:
    git pull origin main (Route A) or npx skills update (Route B).

What the build-plugin skill does

The skill announces itself, checks your prerequisites, then works through nine phases with two hard checkpoints where a real deploy happens. It deploys early and tests as it builds: every data stream runs against your live, authenticated tenant before it's considered finished.

Your active involvement is only needed in three places. The rest runs on its own, though you can interrupt at any point:

  • Supplying the API docs
  • Approving the plan
  • Authenticating the plugin in your tenant at Checkpoint A

Phase
What happens
What you do
Prereq
Runs squaredup status to confirm CLI login and tenant
Log in if prompted
Explore the API
Reads the API docs and identifies the object model, list endpoints, data endpoints, pagination and auth pattern
Supply the docs — URLs, an OpenAPI/Swagger spec, or a Postman collection
Plan
Produces a written plan: object types, import steps, data streams, auth, dashboards, sourceId format
Review and approve. This is the important gate — see Getting a good result below
Scaffold
Creates the file structure, sources the official product logo, drafts docs/README.md
Nothing, unless it can't find a logo
The shell
Writes metadata.json, ui.json and configValidation.json — just enough to deploy and authenticate
Provide your author handle (GitHub handle or display name) when asked
Checkpoint A
Deploys the shell and gives you a direct link to the plugin's setup page
Add the data source in your tenant and authenticate it, then confirm. The skill then probes the connection until it gets a 2xx
Import definitions
Writes the index definitions and import streams, testing each in parallel
Nothing
Checkpoint B
Redeploys, triggers an import via the CLI, waits for it, and confirms objects landed in the graph
Nothing — imports can take a few minutes
Data streams
Builds and tests every data stream against live data, one sub-agent per stream, in parallel
Nothing
Dashboards
Authors out-of-the-box dashboards and scopes
Nothing
Custom types
Writes custom_types.json
Nothing
Finalize
Completes docs/README.md, validates, bumps the version, deploys, and re-runs the import if needed
Review the README

The result

Once the process completes, you have a plugin folder that's authenticated and deployed to your tenant, with objects indexed and dashboards ready to use.

my-plugin/
  v1/
    metadata.json              # name, logo, author, object types
    ui.json                    # the config form users fill in
    icon.svg
    custom_types.json
    configValidation.json      # validates config when a user adds the data source
    docs/
      README.md                # shown in-product when users add the plugin
    indexDefinitions/
      default.json             # how objects are imported into the graph
    dataStreams/
      myStream.json
      scripts/
        myScript.js
    defaultContent/
      manifest.json
      scopes.json
      overviewDashboard.dash.json

Contributing your plugin back

Community plugins live in github.com/squaredup/plugins. To contribute to the repo, do one of the following depending on your development route:

  • Route A: You're already in a clone. Create a branch, commit your plugin folder, and open a PR.
  • Route B: Clone the repo, copy your plugin folder into plugins/, then branch and open a PR.

Versioning

Every PR that changes plugin files needs a version bump in metadata.json:. See plugin versioning for more details.

Change
Bump
Bug fix, docs, icon, metadata tweak
PATCH (1.0.x)
New stream, new optional config field, new default content
MINOR (1.x.0)
Deleted or renamed stream, breaking config change
MAJOR (x.0.0)

Troubleshooting

Problem
Fix
squaredup: command not found
npm i -g @squaredup/cli (needs Node 22+)
squaredup status says you're not logged in
Run squaredup login. Inside Claude Code, prefix it with ! (for example, ! squaredup login), so the interactive browser login runs in your session
/build-plugin isn't offered
Route A: make sure you opened Claude Code in the repo root. Route B: run npx skills list to confirm the install, and check it was installed for the agent you are using
The skill stops at the prerequisite check
It won't build a plugin it can't test. You need CLI login and a tenant where you can add and authenticate a data source
Checkpoint A can't authenticate
The setup link is https://<host>/settings/plugins?addPluginId=<id>: us → app.squaredup.com, eu → eu.app.squaredup.com. Check the config values you entered against the API docs
The import finishes but no objects appear
Usually the list endpoint's pathToData or paging. The skill reports the failing import step and its error reason, so let it fix and re-trigger
You changed an index definition and data looks stale
Imported objects are frozen at import time. The datasource must be re-imported before a new property exists on existing objects. The skill handles this, but it's worth knowing if you edit definitions by hand

Was this article helpful?


Have more questions or facing an issue?