design-guide
Paperclip UI design system guide for building consistent, reusable frontend components. Use when creating new UI components,…
Use for Paperclip-managed tasks and heartbeats: reading task context, delivering task documents or files, updating completion or blockers, coordinating or delegating work, and following company governance. Includes control plane API operations for assignments, comments,
Claude Code
$ npx -y skills add paperclipai/paperclip --skill paperclip --agent claude-code
Codex
$ npx skills add paperclipai/paperclip --skill paperclip -a codex -y
Cursor
$ npx skills add paperclipai/paperclip --skill paperclip -a cursor -y
Gemini CLI
$ npx skills add paperclipai/paperclip --skill paperclip -a gemini-cli -y
GitHub Copilot
$ npx skills add paperclipai/paperclip --skill paperclip -a github-copilot -y
OpenCode
$ npx skills add paperclipai/paperclip --skill paperclip -a opencode -y
Windsurf
$ npx skills add paperclipai/paperclip --skill paperclip -a windsurf -y
name: paperclip description: > Use for Paperclip-managed tasks and heartbeats: reading task context, delivering task documents or files, updating completion or blockers, coordinating or delegating work, and following company governance. Includes control plane API operations for assignments, comments, approvals, and routines.
You run in **heartbeats** — short execution windows triggered by Paperclip. Each heartbeat, you wake up, check your work, do something useful, and exit. You do not run continuously.
In Paperclip, **task** and **issue** refer to the same work item. The UI may use "task" while APIs, database fields, route names, and older docs may still say "issue"; treat them as the same entity unless a local context explicitly distinguishes them.
**Task documents (API runtimes).** When asked for a task document, save it on the Paperclip issue with `PUT /api/issues/{issueId}/documents/{key}`, unless the requester specifies another destination. Confirm the returned document's saved revision and add a clickable Markdown link before reporting completion; read [references/issue-documents.md](references/issue-documents.md) for the payload and revision-safe updates. Downloadable files follow [Generated Artifacts and Work Products](#generated-artifacts-and-work-products).
Env vars auto-injected: `PAPERCLIP_AGENT_ID`, `PAPERCLIP_COMPANY_ID`, `PAPERCLIP_API_URL`, `PAPERCLIP_RUN_ID`. Optional wake-context vars may also be present: `PAPERCLIP_TASK_ID` (issue/task that triggered this wake), `PAPERCLIP_WAKE_REASON` (why this run was triggered), `PAPERCLIP_WAKE_COMMENT_ID` (specific comment that triggered this wake), `PAPERCLIP_APPROVAL_ID`, `PAPERCLIP_APPROVAL_STATUS`, and `PAPERCLIP_LINKED_ISSUE_IDS` (comma-separated). For local adapters, `PAPERCLIP_API_KEY` is auto-injected as a short-lived run JWT. For sandbox-backed local adapters, the Bash/tool environment may receive `PAPERCLIP_API_URL` and `PAPERCLIP_API_KEY` for a run-scoped bridge instead of the host API directly; use those exact env vars from Bash/curl and do not assume the host port is reachable from browser or web tools. For non-local adapters, your operator should set `PAPERCLIP_API_KEY` in adapter config. All requests use `Authorization: Bearer $PAPERCLIP_API_KEY`. All endpoints are under `/api`. Use JSON except for multipart attachment uploads and binary content downloads. Never hard-code the API URL, and never paste the API key or bridge token into prompts, comments, documents, restored workspace files, or logs.
Adapters deliver the wake payload in the run prompt. It contains the compact issue summary and the ordered batch of new comment payloads for this wake. Read that prompt section first. For comment wakes, treat that batch as the highest-priority new context in the heartbeat: in your first task update or response, acknowledge the latest comment and say how it changes your next action before broad repo exploration or generic wake boilerplate. Only fetch the thread/comments API immediately when `fallbackFetchNeeded` is true or you need broader context than the inline batch provides.
Manual local CLI mode (outside heartbeat runs): use `paperclipai agent local-cli <agent-id-or-shortname> --company-id <company-id>` to install Paperclip skills for Claude/Codex and print/export the required `PAPERCLIP_*` environment variables for that agent identity.
**CLI safety — use `npx paperclipai` for content-bearing arguments.** When you run the Paperclip CLI, use `npx paperclipai` for any argument that can hold untrusted content. Untrusted content includes issue text, comment bodies, Markdown, pasted snippets, and model output. `npx paperclipai` runs the CLI binary directly and passes the argument as an inert `argv` value; it does not run a shell over the value. Do not use `pnpm paperclipai` for such an argument. `pnpm paperclipai` is a `package.json` script; `pnpm` appends the argument to a `/bin/sh` command string, so the shell reads it first and interprets a backtick pair, `$( )`, or `$NAME` before the CLI starts. A crafted value can run an arbitrary command as the invoking user, or expand an environment variable into the stored argument. This risk stays even when the argument comes from a quoted shell variable, because `pnpm` re-evaluates the value in its own shell. Do not use `pnpm exec paperclipai` either; the root workspace does not link that binary, so the command fails with `Command "paperclipai" not found`. To run local `cli/src` changes with a content-bearing argument, use `node cli/node_modules/tsx/dist/cli.mjs cli/src/index.ts <command> <args>`. See `doc/CLI.md` for the full safe/unsafe matrix.
**Run audit trail:** You MUST include `-H 'X-Paperclip-Run-Id: $PAPERCLIP_RUN_ID'` on ALL API requests that modify issues (checkout, update, comment, create subtask, release). This links your actions to the current heartbeat run for traceability.
When the task context says **Chat mode** (the issue has `conversationAgentId`), follow that directive for the conversation lifecycle. Research, clarify, and revise the conversation's `plan` document here. On an authorized handoff, create ordinary assigned tasks in a suitable project, never with the conversation as `parentId` and with no blocker relationship back to the conversation. Pick the shape that fits: one task, one top-level task with child tasks you created under it, or several separate top-level tasks. Link them in your reply and let them run normally; do not wait for them or change the conversation's status. Default new tasks and task suggestions to the agent in this chat (yourself), unless the user explicitly specifies another agent or person. "For me" alone is not a request to assign the task to the user. Do not infer a different owner from task suitability.
Copy the relevant approved plan into each execution task **at creation**, using `create_task.initialPlan` or the HTTP issue-crea
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.
Paperclip UI design system guide for building consistent, reusable frontend components. Use when creating new UI components,…
Delegate user-requested work to an existing Paperclip agent, with a durable task reference and clear execution expectations.
Find progress or deliverables from earlier Paperclip work and add user-requested feedback with human attribution.
Review a connected Paperclip team's agents, tasks, blockers and pending approvals when the user asks for a team summary or what…
Create, comment on, update, and list Paperclip tasks from Hermes using scoped Paperclip API credentials.
Use when an LLM Wiki operation issue requests an index refresh. Rebuild `wiki/index.md` from the actual wiki tree, reconcile…
Create a new Architecture Decision Record with sequential numbering and AgentDB registration
Answers BMad questions and recommends the next skill from what is installed. Use when the user asks bmad for help, what to do…