mcpField
P
plane-api

plane-api

github.com/montagaoProductivity353 installsUpdated 8w ago
Repository

About plane-api

plane-api is an internal skill for creating, listing, and updating Plane work items through a consistent JSON interface. It suits callers that need structured issue operations using configured Plane credentials.

Key features

  1. 01Create work items with metadata
  2. 02List items with filters and search
  3. 03Update item fields and labels
  4. 04Return structured JSON responses

Use cases

  1. 01Create a Plane item from a request
  2. 02Find items by state, label, or due date
  3. 03Revise an item's priority or description

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/montagao/skills --skill plane-api

After installing, type/plane-apiin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

biome.json
bun.lock
package.json
plane.js
tsconfig.json
tests/
plane.test.js

Details

From the project README

plane-api (internal)

A single, consistent interface to Plane.

Config

This skill reads Plane connection settings from secrets/environment (no prompting):

  • PLANE_BASE_URL (preferred) or PLANE_API_URL
  • PLANE_WORKSPACE_SLUG
  • PLANE_PROJECT_ID
  • PLANE_API_KEY

(Optional: support multiple profiles if configured, e.g. profile: "personal"|"business".)

Input contract

The caller provides a JSON object:

Create

{ "action": "create", "title": "...", "description": "... (optional)", "due": "YYYY-MM-DD (optional)", "priority": "urgent|high|medium|low|none (optional)", "labels": ["claw_inbox", "..."] (optional) }

List

{ "action": "list", "limit": 20, "filters": { "labels": ["claw_inbox"] (optional), "dueFrom": "YYYY-MM-DD" (optional), "dueTo": "YYYY-MM-DD" (optional), "state": "..." (optional), "search": "..." (optional) } }

Update

{ "action": "update", "id": "work_item_id", "patch": { "title": "... (optional)", "description": "... (optional)", "due": "YYYY-MM-DD (optional)", "priority": "urgent|high|medium|low|none (optional)", "state": "... (optional)", "labels": ["..."] (optional) } }

Behavior

  • Never asks the user questions (callers handle that).
  • Enforces idempotency if the platform provides an incoming message id (best effort).
  • Returns structured JSON only.
  • When returning a work item URL, use the canonical web route:
    • https://<plane-domain>/<workspaceSlug>/browse/<PROJECT_IDENTIFIER>-<SEQUENCE_ID>
  • Never synthesize legacy links like /projects/<project>/issues/<issue> because they can be wrong or redirect poorly.
  • If the human-facing issue key cannot be resolved safely, omit url instead of guessing.

Output (always JSON)

Success example: { "ok": true, "action": "create", "id": "...", "issue_key": "TMOM-461", "url": "https://todo.translate.mom/translatemom/browse/TMOM-461", "title": "..." }

Failure example: { "ok": false, "action": "create", "error": "...", "status": 401 }

Comments

Markdown supported