Dashwall
All articles
5 min read

An agent skill for your KPI wall

Dashwall has spoken MCP since day one: connect the server and your agent gets ten tools for building, feeding and reading a KPI wall. Then we watched agents use them. The tools were never the problem — an agent handed a create_board tool figures out how to call it. What it does not figure out is everything around the call: which token to keep, which field makes a dead feed visible, and when to stop and read its own work back. So Dashwall now also ships a skill — and it is open source.

Tools say what an agent can do. A skill says what is worth doing.

A skill is not a program. It is a folder of instructions an agent reads when the task calls for it: one document on how to build a wall well, plus reference files it loads only when it reaches for them. Nothing runs, nothing is installed in any real sense, and only the one-line description sits in your agent's context permanently — the rest costs nothing until a metrics wall actually comes up.

That format turns out to be the right home for the knowledge that never fits in a tool schema. A schema can say that expectedInterval is an optional integer. It cannot say that this is the single most valuable field for an unattended agent — because without it a broken feed looks exactly like a quiet one, and the wall keeps showing Friday's number all weekend in very large type. The skill says so, in words, at the moment the agent is deciding which fields to set.

The mistakes it exists to prevent

Most of the skill is the paved road: create the board, add tiles in display order, give numbers a target and a comparison so they carry judgement, push a first reading so nothing renders as waiting. The part we actually wrote it for is the short list of mistakes we kept seeing agents make:

  • Losing the webhook token. A tile's webhookToken comes back once, when the tile is created, and it is the whole authentication for feeding it. The skill says: store it the moment you get it, and where to read it back if you did not.
  • The rename that wipes a tile. PUT on a tile is a full replace, so a request meant to change a label can silently clear its target, milestone and staleness interval. Obvious in the API reference, invisible in a tool schema — exactly the kind of thing a skill is for.
  • Treating two silences as the same. A tile with no reading yet is waiting — push a value. A tile marked stale was fed once and then its feed died — pushing another value by hand hides the problem instead of fixing it. The skill makes an agent tell those apart before it acts.
  • Reporting success without looking. The skill's last instruction is the one we care most about: do not say the wall is done until you have read back what the display is actually showing. That habit is why the read tools exist.

And beyond correctness, a little taste: fewer, bigger tiles; mark response times and backlogs as lower-is-better so the wall never celebrates the wrong direction; save the confetti for things worth interrupting a room for.

It works even where MCP does not

With the MCP server connected, the skill leans on the tools. Without it, the skill drives the plain REST API with an API key from the dashboard — which makes it useful to an assistant that speaks no MCP at all, and to the odd CI job that is nobody's assistant in particular.

The REST fallback
# The skill's fallback: no MCP client anywhere in sight
export DASHWALL_API_KEY=dw_your_key_here

curl -X POST https://api.dashwall.io/api/metric/$WEBHOOK_TOKEN \
  -H 'Content-Type: application/json' \
  -d '{"value": 1240}'

The skill is also deliberately careful with that key. It is written to ask you for one rather than go hunting through env files and shell profiles for a credential that might work, and to never write it into a file it creates or a command it echoes back. If an agent only has to feed a wall that already exists, it needs no key at all — the tile token is the entire authentication.

A skill that knows it goes stale

Instructions age the way dashboards do: quietly, while still looking authoritative. So the skill carries a last-updated date and an instruction to treat its own contents the way the wall treats an ageing reading — keep using them, but say how old they are once the date is more than ninety days gone, and refresh from the repository. We could not resist making the skill honest the same way we made the tiles honest.

Install it

The skill lives in a public repository, dashwall-io/dashwall-agent, under an MIT license. One command puts it in front of most agents; Claude Code can also take it as a plugin:

Install the skill
# Any agent that reads skills — Claude Code, Cursor, Codex, Windsurf
npx skills add dashwall-io/dashwall-agent

# Or, in Claude Code, as a plugin
/plugin marketplace add dashwall-io/dashwall-agent

Everything the skill assumes — the tools, both ways to connect, what a credential may do — is on the agents page. If your agent has never touched Dashwall before, create a free account, install the skill, and ask for a wall.

Put your numbers on the wall

Create a free account, put your first KPI on a screen, and upgrade when the wall fills up. No credit card required.