agent
ListSpace for agents: the project-memory skill, Claude Code plugin and CLI
Files of agent
listspace/
Show the full text95 lines
Listspace for coding agents
The pieces that let an agent use a Listspace board as its project memory. This folder is public as github.com/listspace/agent, and the CLI is on npm as listspace. Install and sign in with:
npx listspace login # paste a personal token from Listspace: Settings > API
npx listspace boards
| Path | What it is |
|---|---|
skills/listspace/ |
The skill: SKILL.md (the work loop) plus reference/ (tools, freedom levels, CLI), loaded only when needed. Follows the Agent Skills format, so npx skills add can install it. This is the source copy. |
cli/ |
listspace, a small Node CLI over the REST API (https://api.listspace.app/v1) for agents without the MCP server. TypeScript bundled into one ESM file, no runtime dependencies, Node 20 or later. |
claude-code-plugin/ |
A Claude Code plugin: the skill (a copied file set) and .mcp.json, which registers the remote MCP server https://mcp.listspace.app. |
.claude-plugin/marketplace.json |
A marketplace file listing the plugin, so this folder can be added as a local marketplace now and as a GitHub one later. |
AGENTS.md.snippet |
Lines a user pastes into a repo's AGENTS.md or CLAUDE.md to point agents at their board. |
scripts/ |
sync-skill.mjs copies the skill into the plugin; check-agent.mjs (in CI) checks the copy, the frontmatter, the versions and the MCP entry. |
The MCP server is also listed in the MCP Registry as app.listspace/listspace and on Smithery.
Editing the skill
Edit skills/listspace/ only, then run:
node agent/scripts/sync-skill.mjs
node agent/scripts/check-agent.mjs
The plugin gets a real copy, not a symlink, so the plugin folder still works when it is copied or downloaded on its own. CI fails when the two differ. Keep SKILL.md short: steps and rules there, detail in reference/.
One version runs through cli/package.json, cli/src/version.ts, plugin.json and the skill's metadata.version; the check fails when they differ.
Try it locally
The CLI
cd agent/cli
npm ci
npm run build
node dist/listspace.mjs login # paste a token from Listspace: Settings > API
node dist/listspace.mjs whoami
node dist/listspace.mjs session "<board title or id>"
node dist/listspace.mjs add "<board>" ideas "Try dark mode" --description "Seen in **settings**"
npm link in agent/cli puts listspace on the PATH. LISTSPACE_TOKEN overrides the saved token for one run, and LISTSPACE_API_URL points the CLI at another server. Every command takes --json. The token is saved in the OS config directory (%APPDATA%\listspace on Windows, ~/Library/Application Support/listspace on macOS, ~/.config/listspace elsewhere) as credentials.json, mode 600.
Tests: npm test (node:test with a fake fetch, no network). npm run typecheck runs the strict type check.
The skill on its own
Any agent that reads Agent Skills:
npx skills add ./agent -s listspace # the skills CLI reads skills/ in a local folder
or copy agent/skills/listspace to ~/.claude/skills/listspace for Claude Code. Connect the MCP server separately (claude mcp add --transport http listspace https://mcp.listspace.app), or use the CLI above.
The Claude Code plugin
For one session:
claude --plugin-dir ./agent/claude-code-plugin
Or as a local marketplace, which keeps it installed:
claude plugin marketplace add ./agent
claude plugin install listspace@listspace
Then run /mcp, pick the listspace server and sign in (OAuth through Listspace). The skill shows up as /listspace:listspace and Claude loads it on its own when the project has a board. claude plugin validate ./agent/claude-code-plugin checks the manifest.
If you already added the Listspace MCP server yourself, Claude Code may show both; remove one.
What is left out, and why
comment: the API has it (POST /v1/items/:id/comments, MCPadd_comment), but the CLI does not yet. Agents on the CLI log progress in a Project info item (the skill says so).attachis in the CLI since 0.2.0, because a file on disk is the one thing an agent cannot send reliably through MCP.- Device pairing for
login: comes with sign-up (PR 9).loginalready separates "how the token is obtained" from saving it; a TODO incli/src/cli.tsmarks where pairing goes.--tokenand a piped token stay for scripts. - A token in the plugin:
.mcp.jsonhas no headers on purpose. A token would ship to every user; sign-in through/mcpis per user. The check script refuses headers there. - The CLI inside the plugin (
bin/): left out, because claude.ai and Cowork do not install plugins with a top-levelbin/and the MCP server covers Claude Code.
Publishing
- Skill via
npx skills add: published. The public repositorylistspace/agentholds this folder at its root, sonpx skills add listspace/agentworks. - CLI on npm: published as the unscoped
listspace(0.1.0). To release a new version: bump the one version (see "Editing the skill"), check the package contents withnpm pack --dry-run, thennpm publishfromagent/cliwith an npm account with 2FA.prepublishOnlyruns the type check, tests and build. - Claude Code plugin: the public repo doubles as a marketplace (
.claude-plugin/marketplace.json), so users run/plugin marketplace add listspace/agentand/plugin install listspace@listspace. Listing in Anthropic's plugin directory is a separate submission; the owner decides on it, with privacy policy and terms URLs for that listing.
Sources: Claude Code plugin manifest reference (https://code.claude.com/docs/en/plugins-reference), plugin loading and --plugin-dir (https://code.claude.com/docs/en/plugins/loading), marketplace reference (https://code.claude.com/docs/en/plugins/marketplace-reference), skills (https://code.claude.com/docs/en/skills), Agent Skills specification (https://agentskills.io/specification), the skills CLI (https://github.com/vercel-labs/skills), and Postiz's agent repo as the model (https://github.com/gitroomhq/postiz-agent).
| 1 | # Listspace for coding agents |
| 2 | |
| 3 | The pieces that let an agent use a Listspace board as its project memory. This folder is public as github.com/listspace/agent, and the CLI is on npm as [`listspace`]. Install and sign in with: |
| 4 | |
| 5 | |
| 6 | npx listspace login # paste a personal token from Listspace: Settings > API |
| 7 | npx listspace boards |
| 8 | |
| 9 | |
| 10 | | Path | What it is | |
| 11 | |---|---| |
| 12 | | `skills/listspace/` | The skill: `SKILL.md` (the work loop) plus `reference/` (tools, freedom levels, CLI), loaded only when needed. Follows the Agent Skills format, so `npx skills add` can install it. This is the source copy. | |
| 13 | | `cli/` | `listspace`, a small Node CLI over the REST API (`https://api.listspace.app/v1`) for agents without the MCP server. TypeScript bundled into one ESM file, no runtime dependencies, Node 20 or later. | |
| 14 | | `claude-code-plugin/` | A Claude Code plugin: the skill (a copied file set) and `.mcp.json`, which registers the remote MCP server `https://mcp.listspace.app`. | |
| 15 | | `.claude-plugin/marketplace.json` | A marketplace file listing the plugin, so this folder can be added as a local marketplace now and as a GitHub one later. | |
| 16 | | `AGENTS.md.snippet` | Lines a user pastes into a repo's AGENTS.md or CLAUDE.md to point agents at their board. | |
| 17 | | `scripts/` | `sync-skill.mjs` copies the skill into the plugin; `check-agent.mjs` (in CI) checks the copy, the frontmatter, the versions and the MCP entry. | |
| 18 | |
| 19 | The MCP server is also listed in the [MCP Registry] as `app.listspace/listspace` and on [Smithery]. |
| 20 | |
| 21 | ## Editing the skill |
| 22 | |
| 23 | Edit `skills/listspace/` only, then run: |
| 24 | |
| 25 | |
| 26 | node agent/scripts/sync-skill.mjs |
| 27 | node agent/scripts/check-agent.mjs |
| 28 | |
| 29 | |
| 30 | The plugin gets a real copy, not a symlink, so the plugin folder still works when it is copied or downloaded on its own. CI fails when the two differ. Keep `SKILL.md` short: steps and rules there, detail in `reference/`. |
| 31 | |
| 32 | One version runs through `cli/package.json`, `cli/src/version.ts`, `plugin.json` and the skill's `metadata.version`; the check fails when they differ. |
| 33 | |
| 34 | ## Try it locally |
| 35 | |
| 36 | ### The CLI |
| 37 | |
| 38 | |
| 39 | cd agent/cli |
| 40 | npm ci |
| 41 | npm run build |
| 42 | node dist/listspace.mjs login # paste a token from Listspace: Settings > API |
| 43 | node dist/listspace.mjs whoami |
| 44 | node dist/listspace.mjs session "<board title or id>" |
| 45 | node dist/listspace.mjs add "<board>" ideas "Try dark mode" --description "Seen in **settings**" |
| 46 | |
| 47 | |
| 48 | `npm link` in `agent/cli` puts `listspace` on the PATH. `LISTSPACE_TOKEN` overrides the saved token for one run, and `LISTSPACE_API_URL` points the CLI at another server. Every command takes `--json`. The token is saved in the OS config directory (`%APPDATA%\listspace` on Windows, `~/Library/Application Support/listspace` on macOS, `~/.config/listspace` elsewhere) as `credentials.json`, mode 600. |
| 49 | |
| 50 | Tests: `npm test` (node:test with a fake fetch, no network). `npm run typecheck` runs the strict type check. |
| 51 | |
| 52 | ### The skill on its own |
| 53 | |
| 54 | Any agent that reads Agent Skills: |
| 55 | |
| 56 | |
| 57 | npx skills add ./agent -s listspace # the skills CLI reads skills/ in a local folder |
| 58 | |
| 59 | |
| 60 | or copy `agent/skills/listspace` to `~/.claude/skills/listspace` for Claude Code. Connect the MCP server separately (`claude mcp add --transport http listspace https://mcp.listspace.app`), or use the CLI above. |
| 61 | |
| 62 | ### The Claude Code plugin |
| 63 | |
| 64 | For one session: |
| 65 | |
| 66 | |
| 67 | claude --plugin-dir ./agent/claude-code-plugin |
| 68 | |
| 69 | |
| 70 | Or as a local marketplace, which keeps it installed: |
| 71 | |
| 72 | |
| 73 | claude plugin marketplace add ./agent |
| 74 | claude plugin install listspace@listspace |
| 75 | |
| 76 | |
| 77 | Then run `/mcp`, pick the `listspace` server and sign in (OAuth through Listspace). The skill shows up as `/listspace:listspace` and Claude loads it on its own when the project has a board. `claude plugin validate ./agent/claude-code-plugin` checks the manifest. |
| 78 | |
| 79 | If you already added the Listspace MCP server yourself, Claude Code may show both; remove one. |
| 80 | |
| 81 | ## What is left out, and why |
| 82 | |
| 83 | **`comment`**: the API has it (`POST /v1/items/:id/comments`, MCP `add_comment`), but the CLI does not yet. Agents on the CLI log progress in a Project info item (the skill says so). `attach` is in the CLI since 0.2.0, because a file on disk is the one thing an agent cannot send reliably through MCP. |
| 84 | **Device pairing for `login`**: comes with sign-up (PR 9). `login` already separates "how the token is obtained" from saving it; a TODO in `cli/src/cli.ts` marks where pairing goes. `--token` and a piped token stay for scripts. |
| 85 | **A token in the plugin**: `.mcp.json` has no headers on purpose. A token would ship to every user; sign-in through `/mcp` is per user. The check script refuses headers there. |
| 86 | **The CLI inside the plugin** (`bin/`): left out, because claude.ai and Cowork do not install plugins with a top-level `bin/` and the MCP server covers Claude Code. |
| 87 | |
| 88 | ## Publishing |
| 89 | |
| 90 | **Skill via `npx skills add`**: published. The public repository `listspace/agent` holds this folder at its root, so `npx skills add listspace/agent` works. |
| 91 | **CLI on npm**: published as the unscoped `listspace` (0.1.0). To release a new version: bump the one version (see "Editing the skill"), check the package contents with `npm pack --dry-run`, then `npm publish` from `agent/cli` with an npm account with 2FA. `prepublishOnly` runs the type check, tests and build. |
| 92 | **Claude Code plugin**: the public repo doubles as a marketplace (`.claude-plugin/marketplace.json`), so users run `/plugin marketplace add listspace/agent` and `/plugin install listspace@listspace`. Listing in Anthropic's plugin directory is a separate submission; the owner decides on it, with privacy policy and terms URLs for that listing. |
| 93 | |
| 94 | Sources: Claude Code plugin manifest reference (https://code.claude.com/docs/en/plugins-reference), plugin loading and `--plugin-dir` (https://code.claude.com/docs/en/plugins/loading), marketplace reference (https://code.claude.com/docs/en/plugins/marketplace-reference), skills (https://code.claude.com/docs/en/skills), Agent Skills specification (https://agentskills.io/specification), the skills CLI (https://github.com/vercel-labs/skills), and Postiz's agent repo as the model (https://github.com/gitroomhq/postiz-agent). |
| 95 |
Discussion
Alternatives
Browse more free AI agents or everything in Development.