/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.
$ npx -y skills add paperclipai/paperclip --skill paperclip-board --agent claude-codeHow 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.mdname: 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
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
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.
Repo: paperclipai/paperclip
Other skills on paperclip.
- /design-guide
Paperclip UI design system guide for building consistent, reusable frontend components. Use when creating new UI components, modifying existing ones, adding pages or features to the frontend, styling UI elements, or when you need to understand the design language and
Open skill - /paperclip-task-bridge
Create, comment on, update, and list Paperclip tasks from Hermes using scoped Paperclip API credentials.
Open skill - /index-refresh
Use when an LLM Wiki operation issue requests an index refresh. Rebuild `wiki/index.md` from the actual wiki tree, reconcile missing/deleted entries, and log counts without editing page bodies.
Open skill - /paperclip-distill
Use when an operation issue is a Paperclip cursor-window, distill, or backfill. Turn source-bundled Paperclip activity into wiki-insightful project standups, durable project pages, decisions, and history without asset dereferencing.
Open skill - /wiki-ingest
Use when an operation issue asks to ingest a captured `raw/` source into the LLM Wiki, or the user says "ingest <slug>". Create durable source, entity, concept, synthesis, index, and log pages; use paperclip-distill for Paperclip bundles.
Open skill - /wiki-lint
Use when an LLM Wiki operation issue is a lint or health check. Audit for contradictions, orphans, weak provenance, broken links, missing concept pages, and index/log drift; return triage findings without auto-fixing.
Open skill

