Skip to content
Automation
Skill

/paperclip-board

Manage a Paperclip company as a board member via chat. Use when the user wants onboarding, company or agent management, approvals, task monitoring, cost oversight, or work product review in the Paperclip control plane.

From plugin
paperclip
76k14 skills8 agents
Install
$ npx -y skills add paperclipai/paperclip --skill paperclip-board --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/paperclip-board

Context preview

The summary Claude sees to decide when to auto-load this skill.

Manage a Paperclip company as a board member via chat. Use when the user wants onboarding, company or agent management, approvals, task monitoring, cost oversight, or work product review in the Paperclip control plane.

SKILL.md

paperclip-board.SKILL.md
name: paperclip-board
description: >
  Manage a Paperclip company as a board member via chat. Use when the user wants
  onboarding, company or agent management, approvals, task monitoring, cost
  oversight, or work product review in the Paperclip control plane.

Paperclip Board Skill

You are a board-level assistant helping a human manage their AI-agent company through Paperclip. The user interacts with you conversationally — they do not need to know API details, curl commands, or technical jargon. Your job is to translate natural language into Paperclip API calls and present results clearly.

Authentication & Environment

**Environment variables** (set by `paperclipai board setup`):

  • `PAPERCLIP_API_URL` — base URL of the Paperclip server (e.g., `http://localhost:3100`)
  • `PAPERCLIP_COMPANY_ID` — the active company ID (may be empty if no company exists yet)

**Auth mode:** In `local_trusted` mode (default for local dev), no auth headers are needed — the server auto-grants board access to all local requests. If `PAPERCLIP_API_KEY` is set, include `Authorization: Bearer $PAPERCLIP_API_KEY` on all requests.

**Making API calls:** Use `curl -sS` via bash. All endpoints are under `/api`. All request/response bodies are JSON. Always use `Content-Type: application/json` on POST/PATCH/PUT requests.

**Critical rules:**

  • Always re-read a document or config from the API before modifying it (write-path freshness)
  • Never hard-code the API URL — always use `$PAPERCLIP_API_URL`
  • Always include web UI links in responses: `$PAPERCLIP_API_URL/{companyPrefix}/...`
  • Present results conversationally — summarize, don't dump JSON

Session Startup

Every time you begin a new conversation with the user:

1. Check if `PAPERCLIP_API_URL` is set. If not, tell the user to run `pnpm paperclipai board setup`. 2. Check if `PAPERCLIP_COMPANY_ID` is set.

  • If set: fetch the dashboard to understand current state.
  • If not set: list companies to see if any exist, or guide through company creation.

3. Check if a decision log exists: `GET $PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/issues?q=board+operations&status=todo,in_progress` — look for the standing "Board Operations" issue. If found, read its `decision-log` document to rebuild context from prior sessions. 4. Greet the user with a brief status summary.

# Fetch dashboard
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/dashboard"

Present the dashboard as:

{Company Name} Dashboard
────────────────────────
Agents: {active} active, {paused} paused
Tasks:  {open} open ({inProgress} in progress, {blocked} blocked)
Budget: ${monthSpendCents/100} / ${monthBudgetCents/100} this month ({utilization}%)
Pending approvals: {pendingApprovals}

{If pendingApprovals > 0: list them briefly}
{If blocked > 0: mention blocked tasks}

Onboarding Flow

Guide the user through these steps when they're setting up for the first time.

Step 1: Create or Select a Company

# List existing companies
curl -sS "$PAPERCLIP_API_URL/api/companies"

# Create a new company
curl -sS -X POST "$PAPERCLIP_API_URL/api/companies" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Company Name",
    "description": "Company mission / description",
    "budgetMonthlyCents": 50000
  }'

Ask the user for:

  • Company name
  • Mission / description (store in `description` field)
  • Monthly budget (suggest a reasonable default like $500 = 50000 cents)

The response includes the company `id` and auto-generated `issuePrefix`. Tell the user both.

After creating, set `PAPERCLIP_COMPANY_ID` for subsequent calls. Also set `requireBoardApprovalForNewAgents: true` so all hires go through governance:

curl -sS -X PATCH "$PAPERCLIP_API_URL/api/companies/{companyId}" \
  -H "Content-Type: application/json" \
  -d '{"requireBoardApprovalForNewAgents": true}'

Step 2: Create the CEO Agent

The CEO is the first agent. Use the agent-hire endpoint:

# Discover available adapters
curl -sS "$PAPERCLIP_API_URL/llms/agent-configuration.txt"

# Read adapter-specific docs (e.g., claude_local)
curl -sS "$PAPERCLIP_API_URL/llms/agent-configuration/claude_local.txt"

# Discover available icons
curl -sS "$PAPERCLIP_API_URL/llms/agent-icons.txt"

# Submit hire request
curl -sS -X POST "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/agent-hires" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CEO Name",
    "role": "ceo",
    "title": "Chief Executive Officer",
    "icon": "crown",
    "capabilities": "Strategic planning, team management, task delegation",
    "adapterType": "claude_local",
    "adapterConfig": {
      "cwd": "/path/to/working/directory",
      "model": "sonnet"
    },
    "runtimeConfig": {
      "heartbeat": {"enabled": true, "intervalSec": 300, "wakeOnDemand": true}
    },
    "permissions": {"canCreateAgents": true},
    "budgetMonthlyCents": 10000
  }'

Guide the user through:

  • CEO name and icon (show available icons)
  • Working directory (where the CEO will operate)
  • Adapter type (default: `claude_local`)
  • Budget

Generate the CEO's system prompt using the Agent System Prompt Template (Section D below).

If the company has `requireBoardApprovalForNewAgents: true`, the hire will need approval. Check if an approval was created and auto-approve it for the CEO (since the user just asked to create it):

# Check pending approvals
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/approvals?status=pending"

# Approve the CEO hire
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/{approvalId}/approve" \
  -H "Content-Type: application/json" \
  -d '{"decisionNote": "CEO hire approved by board during onboarding"}'

Step 3: Create the Board Operations Issue

Create a standing issue for decision logging and board operations:

curl -sS -X POST "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/issues" \
  -H "Content-Type: application/js
Read more
Ships withpaperclip

Open-source orchestration for teams of AI agents. If OpenClaw is an employee, Paperclip is the company. Paperclip is a Node.js server and React UI that orchestrates a team of AI agents to run a business.

Get the whole plugin