@tickernelz/paperclip-pro-adapter-codex-local 2026.925.0 → 2026.925.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/codex-home.d.ts +1 -0
- package/dist/server/codex-home.d.ts.map +1 -1
- package/dist/server/codex-home.js +8 -1
- package/dist/server/codex-home.js.map +1 -1
- package/dist/server/config-schema.d.ts.map +1 -1
- package/dist/server/config-schema.js +17 -0
- package/dist/server/config-schema.js.map +1 -1
- package/dist/server/execute.d.ts.map +1 -1
- package/dist/server/execute.js +21 -3
- package/dist/server/execute.js.map +1 -1
- package/dist/server/execute.paperclip-mcp.test.d.ts +2 -0
- package/dist/server/execute.paperclip-mcp.test.d.ts.map +1 -0
- package/dist/server/execute.paperclip-mcp.test.js +84 -0
- package/dist/server/execute.paperclip-mcp.test.js.map +1 -0
- package/package.json +3 -3
- package/skills/paperclip/SKILL.md +123 -134
- package/skills/paperclip/references/api-reference.md +339 -376
- package/skills/paperclip/references/artifacts.md +54 -57
- package/skills/paperclip/references/cases.md +57 -68
- package/skills/paperclip/references/company-skills.md +66 -146
- package/skills/paperclip/references/issue-workspaces.md +28 -43
- package/skills/paperclip/references/routines.md +52 -44
- package/skills/paperclip/references/workflows.md +32 -46
- package/skills/paperclip-board/SKILL.md +141 -334
- package/skills/paperclip-create-agent/SKILL.md +45 -62
- package/skills/paperclip-create-agent/references/api-reference.md +30 -31
|
@@ -8,40 +8,31 @@ description: >
|
|
|
8
8
|
|
|
9
9
|
# Paperclip Board Skill
|
|
10
10
|
|
|
11
|
-
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
|
|
11
|
+
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 tool names, payload shapes, or technical jargon. Your job is to translate natural language into Paperclip tool calls and present results clearly.
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## Tools
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
- `PAPERCLIP_API_URL` — base URL of the Paperclip server (e.g., `http://localhost:3100`)
|
|
17
|
-
- `PAPERCLIP_COMPANY_ID` — the active company ID (may be empty if no company exists yet)
|
|
15
|
+
Every Paperclip operation is an MCP tool call on the `paperclip*` tools. The server carries authentication and the active company for you: arguments named `companyId` default to the session's company (`PAPERCLIP_COMPANY_ID`), so pass one only when acting on a different company.
|
|
18
16
|
|
|
19
|
-
**
|
|
17
|
+
**Toolsets:** tools marked `extended` below load only when the operator sets `PAPERCLIP_MCP_TOOLSETS=core,extended`. Without that, run the same operation through `paperclipApiRequest`.
|
|
20
18
|
|
|
21
|
-
**
|
|
19
|
+
**Board-only work without a dedicated tool:** creating or listing companies, agent API keys, credentials and billing have no tool. Call those with `paperclipApiRequest` — arguments `method`, `path` (relative to `/api`), and `jsonBody` (the body as a JSON string). Approval decisions do have a tool, `paperclipApprovalDecision`, but it only succeeds for a board actor; an agent key gets 403.
|
|
22
20
|
|
|
23
21
|
**Critical rules:**
|
|
24
|
-
- Always re-read a document or config
|
|
25
|
-
-
|
|
26
|
-
- Always include web UI links in responses:
|
|
22
|
+
- Always re-read a document or agent config with its tool before modifying it (write-path freshness), and pass `baseRevisionId` on document writes
|
|
23
|
+
- Treat a tool error result as "the write did not happen" — never report success from an errored call; re-read to confirm anything ambiguous
|
|
24
|
+
- Always include web UI links in responses: `{baseUrl}/{companyPrefix}/...`
|
|
27
25
|
- Present results conversationally — summarize, don't dump JSON
|
|
28
26
|
|
|
29
27
|
## Session Startup
|
|
30
28
|
|
|
31
29
|
Every time you begin a new conversation with the user:
|
|
32
30
|
|
|
33
|
-
1.
|
|
34
|
-
2.
|
|
35
|
-
|
|
36
|
-
- If not set: list companies to see if any exist, or guide through company creation.
|
|
37
|
-
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.
|
|
31
|
+
1. Call `paperclipDashboard` to understand the current state. If the Paperclip MCP tools are not configured (no `PAPERCLIP_API_URL`), tell the user to run `npx @tickernelz/paperclip-pro board setup`; that CLI command is for the human, not an agent tool call.
|
|
32
|
+
2. If no company is bound yet, list companies with `paperclipApiRequest` (`method: "GET"`, `path: "/companies"`) — or guide the user through company creation below.
|
|
33
|
+
3. Look for the standing "Board Operations" issue with `paperclipListIssues` (`q: "board operations"`, `status: "todo,in_progress"`). If found, read its decision log with `paperclipGetDocument` (`issueId`, `key: "decision-log"`) to rebuild context from prior sessions.
|
|
38
34
|
4. Greet the user with a brief status summary.
|
|
39
35
|
|
|
40
|
-
```bash
|
|
41
|
-
# Fetch dashboard
|
|
42
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/dashboard"
|
|
43
|
-
```
|
|
44
|
-
|
|
45
36
|
Present the dashboard as:
|
|
46
37
|
```
|
|
47
38
|
{Company Name} Dashboard
|
|
@@ -61,18 +52,13 @@ Guide the user through these steps when they're setting up for the first time.
|
|
|
61
52
|
|
|
62
53
|
### Step 1: Create or Select a Company
|
|
63
54
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-d '{
|
|
72
|
-
"name": "Company Name",
|
|
73
|
-
"description": "Company mission / description",
|
|
74
|
-
"budgetMonthlyCents": 50000
|
|
75
|
-
}'
|
|
55
|
+
List companies with `paperclipApiRequest` (`method: "GET"`, `path: "/companies"`).
|
|
56
|
+
|
|
57
|
+
Create one with `paperclipApiRequest`:
|
|
58
|
+
```
|
|
59
|
+
method: "POST"
|
|
60
|
+
path: "/companies"
|
|
61
|
+
jsonBody: "{\"name\":\"Company Name\",\"description\":\"Company mission / description\",\"budgetMonthlyCents\":50000}"
|
|
76
62
|
```
|
|
77
63
|
|
|
78
64
|
Ask the user for:
|
|
@@ -80,50 +66,29 @@ Ask the user for:
|
|
|
80
66
|
- Mission / description (store in `description` field)
|
|
81
67
|
- Monthly budget (suggest a reasonable default like $500 = 50000 cents)
|
|
82
68
|
|
|
83
|
-
The response includes the company `id` and auto-generated `issuePrefix`. Tell the user both.
|
|
84
|
-
|
|
85
|
-
After creating, set `PAPERCLIP_COMPANY_ID` for subsequent calls. Also set `requireBoardApprovalForNewAgents: true` so all hires go through governance:
|
|
69
|
+
The response includes the company `id` and auto-generated `issuePrefix`. Tell the user both. Use that `id` as `companyId` until the session is rebound.
|
|
86
70
|
|
|
87
|
-
|
|
88
|
-
curl -sS -X PATCH "$PAPERCLIP_API_URL/api/companies/{companyId}" \
|
|
89
|
-
-H "Content-Type: application/json" \
|
|
90
|
-
-d '{"requireBoardApprovalForNewAgents": true}'
|
|
91
|
-
```
|
|
71
|
+
Then require board approval for hires with `paperclipUpdateResource` (`extended`), arguments `companyId` and `requireBoardApprovalForNewAgents: true`.
|
|
92
72
|
|
|
93
73
|
### Step 2: Create the CEO Agent
|
|
94
74
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
"role": "ceo",
|
|
113
|
-
"title": "Chief Executive Officer",
|
|
114
|
-
"icon": "crown",
|
|
115
|
-
"capabilities": "Strategic planning, team management, task delegation",
|
|
116
|
-
"adapterType": "claude_local",
|
|
117
|
-
"adapterConfig": {
|
|
118
|
-
"cwd": "/path/to/working/directory",
|
|
119
|
-
"model": "sonnet"
|
|
120
|
-
},
|
|
121
|
-
"runtimeConfig": {
|
|
122
|
-
"heartbeat": {"enabled": true, "intervalSec": 300, "wakeOnDemand": true}
|
|
123
|
-
},
|
|
124
|
-
"permissions": {"canCreateAgents": true},
|
|
125
|
-
"budgetMonthlyCents": 10000
|
|
126
|
-
}'
|
|
75
|
+
Discover the instance's adapter and icon documents with `paperclipApiRequest` — they are plain text, not JSON tools:
|
|
76
|
+
- all adapters: `method: "GET"`, `path: "/llms/agent-configuration.txt"`
|
|
77
|
+
- one adapter: `method: "GET"`, `path: "/llms/agent-configuration/claude_local.txt"`
|
|
78
|
+
- icons: `method: "GET"`, `path: "/llms/agent-icons.txt"`
|
|
79
|
+
|
|
80
|
+
Submit the hire with `paperclipCreateAgentHire` (`extended`):
|
|
81
|
+
```
|
|
82
|
+
name: "CEO Name"
|
|
83
|
+
role: "ceo"
|
|
84
|
+
title: "Chief Executive Officer"
|
|
85
|
+
icon: "crown"
|
|
86
|
+
capabilities: "Strategic planning, team management, task delegation"
|
|
87
|
+
adapterType: "claude_local"
|
|
88
|
+
adapterConfig: {"cwd": "/path/to/working/directory", "model": "sonnet"}
|
|
89
|
+
runtimeConfig: {"heartbeat": {"enabled": true, "intervalSec": 300, "wakeOnDemand": true}}
|
|
90
|
+
permissions: {"canCreateAgents": true}
|
|
91
|
+
budgetMonthlyCents: 10000
|
|
127
92
|
```
|
|
128
93
|
|
|
129
94
|
Guide the user through:
|
|
@@ -132,57 +97,34 @@ Guide the user through:
|
|
|
132
97
|
- Adapter type (default: `claude_local`)
|
|
133
98
|
- Budget
|
|
134
99
|
|
|
135
|
-
Generate the CEO's system prompt using the Agent System Prompt Template
|
|
136
|
-
|
|
137
|
-
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):
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
# Check pending approvals
|
|
141
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/approvals?status=pending"
|
|
100
|
+
Generate the CEO's system prompt using the Agent System Prompt Template below.
|
|
142
101
|
|
|
143
|
-
|
|
144
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/{approvalId}/approve" \
|
|
145
|
-
-H "Content-Type: application/json" \
|
|
146
|
-
-d '{"decisionNote": "CEO hire approved by board during onboarding"}'
|
|
147
|
-
```
|
|
102
|
+
If the company has `requireBoardApprovalForNewAgents: true`, the hire needs approval. List it with `paperclipListApprovals` (`status: "pending"`), then approve with `paperclipApprovalDecision` (`approvalId`, `action: "approve"`, `decisionNote: "CEO hire approved by board during onboarding"`) — the user just asked for this agent.
|
|
148
103
|
|
|
149
104
|
### Step 3: Create the Board Operations Issue
|
|
150
105
|
|
|
151
|
-
Create
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
"title": "Board Operations",
|
|
158
|
-
"description": "Standing issue for board decision log and operations tracking",
|
|
159
|
-
"status": "in_progress",
|
|
160
|
-
"priority": "medium"
|
|
161
|
-
}'
|
|
106
|
+
Create the standing issue with `paperclipCreateIssue`:
|
|
107
|
+
```
|
|
108
|
+
title: "Board Operations"
|
|
109
|
+
description: "Standing issue for board decision log and operations tracking"
|
|
110
|
+
status: "in_progress"
|
|
111
|
+
priority: "medium"
|
|
162
112
|
```
|
|
163
113
|
|
|
164
|
-
Then create the decision log
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
"format": "markdown",
|
|
172
|
-
"body": "# Decision Log — {Company Name}\n\n## {today date}\n- Created company {name} with mission: {description}\n- Hired CEO agent \"{ceo name}\"\n"
|
|
173
|
-
}'
|
|
114
|
+
Then create the decision log with `paperclipUpsertIssueDocument`:
|
|
115
|
+
```
|
|
116
|
+
issueId: "{boardIssueId}"
|
|
117
|
+
key: "decision-log"
|
|
118
|
+
title: "Decision Log"
|
|
119
|
+
format: "markdown"
|
|
120
|
+
body: "# Decision Log — {Company Name}\n\n## {today date}\n- Created company {name} with mission: {description}\n- Hired CEO agent \"{ceo name}\"\n"
|
|
174
121
|
```
|
|
175
122
|
|
|
176
123
|
Also write this to a local file at `./artifacts/decision-log.md` so the user can view it directly.
|
|
177
124
|
|
|
178
125
|
### Step 4: Launch the Company
|
|
179
126
|
|
|
180
|
-
Start the CEO's first heartbeat:
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/agents/{ceoId}/heartbeat/invoke" \
|
|
184
|
-
-H "Content-Type: application/json"
|
|
185
|
-
```
|
|
127
|
+
Start the CEO's first heartbeat with `paperclipInvokeAgentHeartbeat` (`extended`), argument `id: "{ceoId}"`.
|
|
186
128
|
|
|
187
129
|
## Hiring Plan Loop
|
|
188
130
|
|
|
@@ -190,37 +132,16 @@ When the user wants to build a hiring plan:
|
|
|
190
132
|
|
|
191
133
|
1. **Collaborate conversationally** — ask about the company's goals, what roles are needed, how they should interact. Use your judgment to suggest roles.
|
|
192
134
|
|
|
193
|
-
2. **Store as a document artifact** — create an issue
|
|
194
|
-
|
|
195
|
-
```bash
|
|
196
|
-
# Create the hiring plan issue
|
|
197
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/issues" \
|
|
198
|
-
-H "Content-Type: application/json" \
|
|
199
|
-
-d '{
|
|
200
|
-
"title": "Hiring Plan",
|
|
201
|
-
"description": "Develop and execute the team hiring plan",
|
|
202
|
-
"status": "in_progress",
|
|
203
|
-
"priority": "high"
|
|
204
|
-
}'
|
|
205
|
-
|
|
206
|
-
# Attach the plan document
|
|
207
|
-
curl -sS -X PUT "$PAPERCLIP_API_URL/api/issues/{issueId}/documents/hiring-plan" \
|
|
208
|
-
-H "Content-Type: application/json" \
|
|
209
|
-
-d '{
|
|
210
|
-
"title": "Hiring Plan",
|
|
211
|
-
"format": "markdown",
|
|
212
|
-
"body": "# Hiring Plan\n\n## Roles\n\n### 1. Role Name\n- Focus: ...\n- Reports to: ...\n- Budget: ...\n"
|
|
213
|
-
}'
|
|
214
|
-
```
|
|
135
|
+
2. **Store as a document artifact** — create an issue with `paperclipCreateIssue` (`title: "Hiring Plan"`, `description: "Develop and execute the team hiring plan"`, `status: "in_progress"`, `priority: "high"`), then attach the plan with `paperclipUpsertIssueDocument` (`issueId`, `key: "hiring-plan"`, `title: "Hiring Plan"`, `format: "markdown"`, `body`).
|
|
215
136
|
|
|
216
137
|
3. **Also write a local file** at `./artifacts/hiring-plan.md` so the user can open and edit it directly.
|
|
217
138
|
|
|
218
139
|
4. **Iterate** — when the user suggests changes:
|
|
219
|
-
- In chat: update both the
|
|
220
|
-
- If user says they edited the file: re-read `./artifacts/hiring-plan.md` and
|
|
221
|
-
- If user says they edited in web UI: re-
|
|
140
|
+
- In chat: update both the stored document and the local file
|
|
141
|
+
- If user says they edited the file: re-read `./artifacts/hiring-plan.md` and write it back with `paperclipUpsertIssueDocument`
|
|
142
|
+
- If user says they edited in web UI: re-read with `paperclipGetDocument` (`key: "hiring-plan"`) before touching it again
|
|
222
143
|
|
|
223
|
-
5. **When finalized** — create
|
|
144
|
+
5. **When finalized** — create hire requests for each role (see Agent Hiring below).
|
|
224
145
|
|
|
225
146
|
## Agent System Prompt Template
|
|
226
147
|
|
|
@@ -255,33 +176,18 @@ Present each agent's draft system prompt to the user for review before submittin
|
|
|
255
176
|
|
|
256
177
|
## Agent Hiring
|
|
257
178
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
"title": "Role Title",
|
|
271
|
-
"icon": "icon-name",
|
|
272
|
-
"reportsTo": "{ceo-or-manager-agent-id}",
|
|
273
|
-
"capabilities": "What this agent can do",
|
|
274
|
-
"adapterType": "claude_local",
|
|
275
|
-
"adapterConfig": {
|
|
276
|
-
"cwd": "/path/to/working/directory",
|
|
277
|
-
"model": "sonnet",
|
|
278
|
-
"systemPrompt": "... the full system prompt from the template ..."
|
|
279
|
-
},
|
|
280
|
-
"runtimeConfig": {
|
|
281
|
-
"heartbeat": {"enabled": true, "intervalSec": 300, "wakeOnDemand": true}
|
|
282
|
-
},
|
|
283
|
-
"budgetMonthlyCents": 5000
|
|
284
|
-
}'
|
|
179
|
+
Compare existing conventions first with `paperclipListAgentConfigurations` (`extended`), then submit with `paperclipCreateAgentHire` (`extended`):
|
|
180
|
+
```
|
|
181
|
+
name: "Agent Name"
|
|
182
|
+
role: "general"
|
|
183
|
+
title: "Role Title"
|
|
184
|
+
icon: "icon-name"
|
|
185
|
+
reportsTo: "{ceo-or-manager-agent-id}"
|
|
186
|
+
capabilities: "What this agent can do"
|
|
187
|
+
adapterType: "claude_local"
|
|
188
|
+
adapterConfig: {"cwd": "/path/to/working/directory", "model": "sonnet", "systemPrompt": "... the full system prompt from the template ..."}
|
|
189
|
+
runtimeConfig: {"heartbeat": {"enabled": true, "intervalSec": 300, "wakeOnDemand": true}}
|
|
190
|
+
budgetMonthlyCents: 5000
|
|
285
191
|
```
|
|
286
192
|
|
|
287
193
|
### Cross-Agent Escalation Path Updates
|
|
@@ -311,43 +217,15 @@ Additionally recommended:
|
|
|
311
217
|
Approve these updates? (approve all / review individually / edit)
|
|
312
218
|
```
|
|
313
219
|
|
|
314
|
-
4. Only after board approval, update each affected agent:
|
|
315
|
-
|
|
316
|
-
```bash
|
|
317
|
-
# Fetch current config first (write-path freshness)
|
|
318
|
-
curl -sS "$PAPERCLIP_API_URL/api/agents/{agentId}"
|
|
319
|
-
|
|
320
|
-
# Update the agent's config with new escalation paths
|
|
321
|
-
curl -sS -X PATCH "$PAPERCLIP_API_URL/api/agents/{agentId}" \
|
|
322
|
-
-H "Content-Type: application/json" \
|
|
323
|
-
-d '{
|
|
324
|
-
"adapterConfig": { ... updated config with new Collaboration section ... }
|
|
325
|
-
}'
|
|
326
|
-
```
|
|
220
|
+
4. Only after board approval, update each affected agent: read the current config with `paperclipGetAgent` (`agentId`), then write it back with `paperclipUpdateAgent` (`extended`), arguments `id` and `adapterConfig` holding the updated Collaboration section.
|
|
327
221
|
|
|
328
222
|
5. Log the changes and reasoning in the decision log.
|
|
329
223
|
|
|
330
224
|
## Approvals
|
|
331
225
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
# Approve
|
|
337
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/{id}/approve" \
|
|
338
|
-
-H "Content-Type: application/json" \
|
|
339
|
-
-d '{"decisionNote": "Approved by board"}'
|
|
340
|
-
|
|
341
|
-
# Reject
|
|
342
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/{id}/reject" \
|
|
343
|
-
-H "Content-Type: application/json" \
|
|
344
|
-
-d '{"decisionNote": "Reason for rejection"}'
|
|
345
|
-
|
|
346
|
-
# Request revision
|
|
347
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/approvals/{id}/request-revision" \
|
|
348
|
-
-H "Content-Type: application/json" \
|
|
349
|
-
-d '{"decisionNote": "Please adjust X, Y, Z"}'
|
|
350
|
-
```
|
|
226
|
+
- List: `paperclipListApprovals` (`status: "pending"`)
|
|
227
|
+
- Decide: `paperclipApprovalDecision` with `approvalId`, `action: "approve" | "reject" | "requestRevision"`, and `decisionNote`
|
|
228
|
+
- Discuss without deciding: `paperclipAddApprovalComment` (`approvalId`, `body`)
|
|
351
229
|
|
|
352
230
|
Present approvals as:
|
|
353
231
|
```
|
|
@@ -365,42 +243,12 @@ For batch approval: list all pending, let the user approve all or review individ
|
|
|
365
243
|
|
|
366
244
|
## Task Management
|
|
367
245
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
# Get task comments
|
|
376
|
-
curl -sS "$PAPERCLIP_API_URL/api/issues/{issueId}/comments"
|
|
377
|
-
|
|
378
|
-
# Create a task
|
|
379
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/issues" \
|
|
380
|
-
-H "Content-Type: application/json" \
|
|
381
|
-
-d '{
|
|
382
|
-
"title": "Task title",
|
|
383
|
-
"description": "What needs to be done",
|
|
384
|
-
"status": "todo",
|
|
385
|
-
"priority": "medium",
|
|
386
|
-
"assigneeAgentId": "{agent-id}",
|
|
387
|
-
"projectId": "{project-id}",
|
|
388
|
-
"parentId": "{parent-issue-id}"
|
|
389
|
-
}'
|
|
390
|
-
|
|
391
|
-
# Update a task
|
|
392
|
-
curl -sS -X PATCH "$PAPERCLIP_API_URL/api/issues/{issueId}" \
|
|
393
|
-
-H "Content-Type: application/json" \
|
|
394
|
-
-d '{"status": "done", "comment": "Completed"}'
|
|
395
|
-
|
|
396
|
-
# Add a comment
|
|
397
|
-
curl -sS -X POST "$PAPERCLIP_API_URL/api/issues/{issueId}/comments" \
|
|
398
|
-
-H "Content-Type: application/json" \
|
|
399
|
-
-d '{"body": "Comment text in markdown"}'
|
|
400
|
-
|
|
401
|
-
# Search issues
|
|
402
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/issues?q=search+term"
|
|
403
|
-
```
|
|
246
|
+
- List open tasks: `paperclipListIssues` (`status: "todo,in_progress,blocked"`)
|
|
247
|
+
- Search: `paperclipListIssues` (`q: "search term"`)
|
|
248
|
+
- Detail: `paperclipGetIssue` (`issueId`)
|
|
249
|
+
- Comments: `paperclipListComments` (`issueId`) / `paperclipAddComment` (`issueId`, `body`)
|
|
250
|
+
- Create: `paperclipCreateIssue` (`title`, `description`, `status: "todo"`, `priority: "medium"`, `assigneeAgentId`, `projectId`, `parentId`)
|
|
251
|
+
- Update: `paperclipUpdateIssue` (`issueId`, `status: "done"`, `comment: "Completed"`)
|
|
404
252
|
|
|
405
253
|
Present tasks as:
|
|
406
254
|
```
|
|
@@ -412,16 +260,9 @@ Present tasks as:
|
|
|
412
260
|
|
|
413
261
|
## Agent Monitoring
|
|
414
262
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
# Get agent detail
|
|
420
|
-
curl -sS "$PAPERCLIP_API_URL/api/agents/{id}"
|
|
421
|
-
|
|
422
|
-
# Get agent config revisions (change history)
|
|
423
|
-
curl -sS "$PAPERCLIP_API_URL/api/agents/{id}/config-revisions"
|
|
424
|
-
```
|
|
263
|
+
- Team list: `paperclipListAgents`
|
|
264
|
+
- Detail: `paperclipGetAgent` (`agentId`)
|
|
265
|
+
- Change history: `paperclipListAgentConfigRevisions` (`extended`, `id`)
|
|
425
266
|
|
|
426
267
|
Present agents as:
|
|
427
268
|
```
|
|
@@ -438,19 +279,11 @@ Team Overview
|
|
|
438
279
|
|
|
439
280
|
## Cost Monitoring
|
|
440
281
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
# Breakdown by agent
|
|
446
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/costs/by-agent"
|
|
282
|
+
- Summary: `paperclipGetCostSummary` (`extended`)
|
|
283
|
+
- By agent: `paperclipGetCostByAgent` (`extended`)
|
|
284
|
+
- By project: `paperclipGetCostByProject` (`extended`)
|
|
447
285
|
|
|
448
|
-
|
|
449
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/costs/by-project"
|
|
450
|
-
|
|
451
|
-
# Optional date range
|
|
452
|
-
curl -sS "$PAPERCLIP_API_URL/api/companies/$PAPERCLIP_COMPANY_ID/costs/summary?from=2026-03-01&to=2026-03-31"
|
|
453
|
-
```
|
|
286
|
+
For a date range, the cost tools take no window arguments — use `paperclipApiRequest` (`method: "GET"`, `path: "/companies/{companyId}/costs/summary?from=2026-03-01&to=2026-03-31"`).
|
|
454
287
|
|
|
455
288
|
Present costs as:
|
|
456
289
|
```
|
|
@@ -466,16 +299,9 @@ By Agent:
|
|
|
466
299
|
|
|
467
300
|
## Work Products
|
|
468
301
|
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
# View a document
|
|
474
|
-
curl -sS "$PAPERCLIP_API_URL/api/issues/{issueId}/documents/{key}"
|
|
475
|
-
|
|
476
|
-
# View document revisions
|
|
477
|
-
curl -sS "$PAPERCLIP_API_URL/api/issues/{issueId}/documents/{key}/revisions"
|
|
478
|
-
```
|
|
302
|
+
- List: `paperclipListIssueWorkProducts` (`id`)
|
|
303
|
+
- View a document: `paperclipGetDocument` (`issueId`, `key`)
|
|
304
|
+
- Revisions: `paperclipListDocumentRevisions` (`issueId`, `key`)
|
|
479
305
|
|
|
480
306
|
Present work products with status and links:
|
|
481
307
|
```
|
|
@@ -492,27 +318,13 @@ Work Products — PAP-12
|
|
|
492
318
|
|
|
493
319
|
Three ways the user can edit system prompts:
|
|
494
320
|
|
|
495
|
-
**In chat:**
|
|
496
|
-
```bash
|
|
497
|
-
# Always re-fetch before modifying
|
|
498
|
-
curl -sS "$PAPERCLIP_API_URL/api/agents/{id}"
|
|
499
|
-
|
|
500
|
-
# Then update
|
|
501
|
-
curl -sS -X PATCH "$PAPERCLIP_API_URL/api/agents/{id}" \
|
|
502
|
-
-H "Content-Type: application/json" \
|
|
503
|
-
-d '{"adapterConfig": { ... updated config ... }}'
|
|
504
|
-
```
|
|
321
|
+
**In chat:** user describes changes; re-read with `paperclipGetAgent` (`agentId`), then write with `paperclipUpdateAgent` (`extended`, `id`, `adapterConfig`).
|
|
505
322
|
|
|
506
323
|
**Direct file edit:** If the agent uses `instructionsFilePath`, the user can edit the file directly. When they tell you they're done, re-read the file and confirm changes.
|
|
507
324
|
|
|
508
|
-
**Web UI edit:** User edits at `{baseUrl}/{prefix}/agents/{agentUrlKey}`. When they say "sync up," re-
|
|
325
|
+
**Web UI edit:** User edits at `{baseUrl}/{prefix}/agents/{agentUrlKey}`. When they say "sync up," re-read with `paperclipGetAgent`.
|
|
509
326
|
|
|
510
|
-
**Viewing change history:**
|
|
511
|
-
```bash
|
|
512
|
-
curl -sS "$PAPERCLIP_API_URL/api/agents/{id}/config-revisions"
|
|
513
|
-
```
|
|
514
|
-
|
|
515
|
-
Present as a changelog:
|
|
327
|
+
**Viewing change history:** `paperclipListAgentConfigRevisions` (`extended`, `id`). Present as a changelog:
|
|
516
328
|
```
|
|
517
329
|
Config History — @designer
|
|
518
330
|
──────────────────────────
|
|
@@ -541,28 +353,23 @@ Maintain a decision log for session continuity. Log major decisions — not ever
|
|
|
541
353
|
- At the end of a session if notable decisions were made
|
|
542
354
|
|
|
543
355
|
**How to log:**
|
|
544
|
-
1.
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
-d '{
|
|
553
|
-
"title": "Decision Log",
|
|
554
|
-
"format": "markdown",
|
|
555
|
-
"body": "... existing content ... \n\n## {date}\n- New decision\n",
|
|
556
|
-
"baseRevisionId": "{current revision id}"
|
|
557
|
-
}'
|
|
356
|
+
1. Read the current log with `paperclipGetDocument` (`issueId: "{boardIssueId}"`, `key: "decision-log"`), then write the appended version with `paperclipUpsertIssueDocument`:
|
|
357
|
+
```
|
|
358
|
+
issueId: "{boardIssueId}"
|
|
359
|
+
key: "decision-log"
|
|
360
|
+
title: "Decision Log"
|
|
361
|
+
format: "markdown"
|
|
362
|
+
body: "... existing content ... \n\n## {date}\n- New decision\n"
|
|
363
|
+
baseRevisionId: "{current revision id}"
|
|
558
364
|
```
|
|
365
|
+
A revision conflict means someone else wrote first: re-read and merge, never overwrite blindly.
|
|
559
366
|
2. Also update the local file at `./artifacts/decision-log.md`.
|
|
560
367
|
|
|
561
368
|
## Presentation Rules
|
|
562
369
|
|
|
563
370
|
- Use markdown tables for lists (agents, tasks, costs)
|
|
564
371
|
- Use bold for status values: **in_progress**, **blocked**, **completed**
|
|
565
|
-
- Always include web UI links: `View: {
|
|
372
|
+
- Always include web UI links: `View: {baseUrl}/{prefix}/issues/{identifier}`
|
|
566
373
|
- For org charts: generate mermaid diagrams or ASCII art
|
|
567
374
|
- Smart summaries: surface what needs attention first, then the rest
|
|
568
375
|
- Task format: `PAP-123: Build landing page [in_progress] → @engineer`
|
|
@@ -579,41 +386,41 @@ All web UI links must include the company prefix:
|
|
|
579
386
|
- Projects: `/{prefix}/projects/{project-url-key}`
|
|
580
387
|
- Documents: `/{prefix}/issues/{identifier}#document-{key}`
|
|
581
388
|
|
|
582
|
-
## Key
|
|
583
|
-
|
|
584
|
-
| Action |
|
|
585
|
-
|
|
586
|
-
| List companies | GET
|
|
587
|
-
| Create company | POST
|
|
588
|
-
| Update company |
|
|
589
|
-
| Get company |
|
|
590
|
-
| Dashboard |
|
|
591
|
-
| List agents |
|
|
592
|
-
| Get agent |
|
|
593
|
-
| Update agent |
|
|
594
|
-
| Agent configs |
|
|
595
|
-
| Config revisions |
|
|
596
|
-
| Hire agent |
|
|
597
|
-
| Invoke heartbeat |
|
|
598
|
-
| List issues |
|
|
599
|
-
| Create issue |
|
|
600
|
-
| Get issue |
|
|
601
|
-
| Update issue |
|
|
602
|
-
| Issue comments |
|
|
603
|
-
| Add comment |
|
|
604
|
-
| Issue documents |
|
|
605
|
-
| Get document |
|
|
606
|
-
| Create/update
|
|
607
|
-
|
|
|
608
|
-
|
|
|
609
|
-
|
|
|
610
|
-
|
|
|
611
|
-
|
|
|
612
|
-
| Cost summary |
|
|
613
|
-
| Costs by agent |
|
|
614
|
-
| Costs by project |
|
|
615
|
-
| Adapter docs | GET
|
|
616
|
-
| Adapter detail | GET
|
|
617
|
-
| Agent icons | GET
|
|
618
|
-
| Set instructions |
|
|
619
|
-
|
|
|
389
|
+
## Key Tools Reference
|
|
390
|
+
|
|
391
|
+
| Action | Tool | Toolset |
|
|
392
|
+
|--------|------|---------|
|
|
393
|
+
| List companies | `paperclipApiRequest` `GET` `/companies` | core |
|
|
394
|
+
| Create company | `paperclipApiRequest` `POST` `/companies` | core |
|
|
395
|
+
| Update company | `paperclipUpdateResource` | extended |
|
|
396
|
+
| Get company | `paperclipGetResource` | extended |
|
|
397
|
+
| Dashboard | `paperclipDashboard` | core |
|
|
398
|
+
| List agents | `paperclipListAgents` | core |
|
|
399
|
+
| Get agent | `paperclipGetAgent` | core |
|
|
400
|
+
| Update agent | `paperclipUpdateAgent` | extended |
|
|
401
|
+
| Agent configs | `paperclipListAgentConfigurations` | extended |
|
|
402
|
+
| Config revisions | `paperclipListAgentConfigRevisions` | extended |
|
|
403
|
+
| Hire agent | `paperclipCreateAgentHire` | extended |
|
|
404
|
+
| Invoke heartbeat | `paperclipInvokeAgentHeartbeat` | extended |
|
|
405
|
+
| List / search issues | `paperclipListIssues` | core |
|
|
406
|
+
| Create issue | `paperclipCreateIssue` | core |
|
|
407
|
+
| Get issue | `paperclipGetIssue` | core |
|
|
408
|
+
| Update issue | `paperclipUpdateIssue` | core |
|
|
409
|
+
| Issue comments | `paperclipListComments` | core |
|
|
410
|
+
| Add comment | `paperclipAddComment` | core |
|
|
411
|
+
| Issue documents | `paperclipListDocuments` | core |
|
|
412
|
+
| Get document | `paperclipGetDocument` | core |
|
|
413
|
+
| Create/update document | `paperclipUpsertIssueDocument` | core |
|
|
414
|
+
| Document revisions | `paperclipListDocumentRevisions` | core |
|
|
415
|
+
| Work products | `paperclipListIssueWorkProducts` | core |
|
|
416
|
+
| List approvals | `paperclipListApprovals` | core |
|
|
417
|
+
| Approve / reject / request revision | `paperclipApprovalDecision` | core |
|
|
418
|
+
| Comment on approval | `paperclipAddApprovalComment` | core |
|
|
419
|
+
| Cost summary | `paperclipGetCostSummary` | extended |
|
|
420
|
+
| Costs by agent | `paperclipGetCostByAgent` | extended |
|
|
421
|
+
| Costs by project | `paperclipGetCostByProject` | extended |
|
|
422
|
+
| Adapter docs | `paperclipApiRequest` `GET` `/llms/agent-configuration.txt` | core |
|
|
423
|
+
| Adapter detail | `paperclipApiRequest` `GET` `/llms/agent-configuration/{adapterType}.txt` | core |
|
|
424
|
+
| Agent icons | `paperclipApiRequest` `GET` `/llms/agent-icons.txt` | core |
|
|
425
|
+
| Set instructions path | `paperclipUpdateAgentInstructionsPath` | extended |
|
|
426
|
+
| Agent keys / credentials | `paperclipApiRequest` on `/agents/{id}/keys` | core |
|