@atollhq/skill-claude 0.4.4 → 0.4.6
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/package.json +1 -1
- package/skill/SKILL.md +29 -3
- package/skill/references/api-endpoints.md +20 -4
- package/skill/references/api-fields.md +108 -1
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -156,6 +156,7 @@ atoll milestone upsert --project <project-id> --name "v1.0" --date 2026-06-01
|
|
|
156
156
|
# Goals, KPIs, and initiatives
|
|
157
157
|
atoll goal create --title "Reach 100 paying customers by Q2" --target-date 2026-06-30
|
|
158
158
|
atoll kpi create --name paying_customers --goal "Reach 100 paying customers by Q2" --unit count --target 100 --current 34
|
|
159
|
+
atoll kpi create --name mvp_tasks_done --goal "Launch MVP" --internal-task-completion
|
|
159
160
|
atoll initiative create --title "Content pipeline" --goal "Reach 100 paying customers by Q2" --status active
|
|
160
161
|
atoll initiative kpi link "Content pipeline" paying_customers --impact "+30 customers/mo"
|
|
161
162
|
atoll kpi snapshot add paying_customers --value 42 --initiative "Content pipeline" --note "End-of-week Stripe check"
|
|
@@ -171,10 +172,34 @@ CLI JSON conventions:
|
|
|
171
172
|
|
|
172
173
|
- Use `--json` for machine-readable output.
|
|
173
174
|
- List commands return `{ resource, items, total, limit, offset, nextOffset, truncated, hint }`.
|
|
175
|
+
- Project-scoped `atoll issue list --json` includes `project_context`; `atoll issue get/view --json` includes `status_column` plus `project_context` when available.
|
|
174
176
|
- Diagnostics and errors go to stderr.
|
|
175
|
-
-
|
|
177
|
+
- Interactive CLI update notices also go to stderr and are suppressed for JSON/non-TTY/CI/completion flows.
|
|
178
|
+
- `atoll agent-context` returns a versioned command/flag manifest, available profile context, and structured `cli.update_available` metadata.
|
|
179
|
+
- `atoll heartbeat --json` includes the same structured `cli` update metadata for agents.
|
|
176
180
|
- `atoll plan validate/apply` consumes `schemaVersion: "atoll.plan.v1"` files with `milestones`, `issues`, `dependencies`, `initiativeLinks`, and `milestoneLinks`; local `key` values can be referenced by `milestoneKey`, `issueKey`, `dependsOn`, `blockedBy`, or `blocks`.
|
|
177
181
|
|
|
182
|
+
## KPI HTTP Sync Drafts
|
|
183
|
+
|
|
184
|
+
When a human asks you to help automate a KPI from a third-party API, use this Atoll skill. If the current agent environment does not have the `atoll-api` skill installed, tell the user to install it before continuing or use the Atoll CLI/MCP tools directly if they are available.
|
|
185
|
+
|
|
186
|
+
Agents may create draft syncs and validate proposed configs only after a human admin has allowlisted the exact destination host in Atoll. Human admins must review the draft in Atoll, enter secrets, dry-run, publish, disable, or run-now with snapshot writing.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
atoll kpi sync validate <kpi-id> \
|
|
190
|
+
--name "PostHog visitors" \
|
|
191
|
+
--schedule daily \
|
|
192
|
+
--url https://us.posthog.com/api/projects/123/query/ \
|
|
193
|
+
--pointer /results/0/value \
|
|
194
|
+
--auth-secret-ref posthog_api_key
|
|
195
|
+
|
|
196
|
+
atoll kpi sync draft <kpi-id> --file sync-draft.json
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Draft configs must be `GET` only, `https` only, JSON only, no redirects, no request bodies, no inline query strings, no secret values, and an already-allowlisted exact destination host. Use secret reference names only for `Authorization: Bearer <secretRef>` or `X-API-Key: <secretRef>`.
|
|
200
|
+
|
|
201
|
+
Never include API keys, bearer tokens, cookies, raw third-party response bodies, or secret values in prompts, draft files, comments, or issue descriptions. If a human pasted a secret into chat, stop and ask them to rotate it and enter the replacement directly in Atoll.
|
|
202
|
+
|
|
178
203
|
## Remote MCP Server
|
|
179
204
|
|
|
180
205
|
Use `@atollhq/mcp-server` when an agent or ChatGPT-style client needs Atoll access but cannot run a local CLI command or read local auth profiles.
|
|
@@ -287,6 +312,7 @@ The primary pattern for autonomous agents. Prefer `atoll heartbeat --json` when
|
|
|
287
312
|
- **KPI pace**: `pace_needed` vs `pace_actual`, trend (`accelerating`/`decelerating`/`flat`), staleness
|
|
288
313
|
- **Initiative progress**: total/completed/stalled/blocked issue counts, expected KPI impacts
|
|
289
314
|
- **Assigned work** for this agent
|
|
315
|
+
- **Project context**: relevant board columns, including optional descriptions that explain stage criteria for agents
|
|
290
316
|
- **Signals** sorted by severity — the agent's prioritized to-do list
|
|
291
317
|
|
|
292
318
|
Signal types: `kpi_off_pace`, `kpi_stale`, `issue_stale`, `issue_blocked`, `milestone_overdue`, `initiative_stalled`, `webhook_failing`. Severity: `info`, `warning`, `critical`.
|
|
@@ -322,7 +348,7 @@ atoll issue update ATOLL-42 --status done # complete
|
|
|
322
348
|
### Set up the strategy chain
|
|
323
349
|
|
|
324
350
|
1. `POST /api/orgs/{id}/goals` -- create goal with `target_date`
|
|
325
|
-
2. `POST /api/orgs/{id}/kpis` -- attach KPI with `goal_id`, `target_value`, `target_direction`
|
|
351
|
+
2. `POST /api/orgs/{id}/kpis` -- attach KPI with `goal_id`, `target_value`, `target_direction`; for launch-style goals you can use `source_type: "formula"` with `source_config.formula: "goal_linked_issue_completion"` to calculate done directly linked and milestone-linked tasks over total linked tasks
|
|
326
352
|
3. `POST /api/orgs/{id}/kpis/{kpiId}/snapshots` -- record measurement (auto-updates `current_value`)
|
|
327
353
|
4. `POST /api/orgs/{id}/initiatives` -- create initiative linked to goal
|
|
328
354
|
5. `POST /api/orgs/{id}/initiatives/{id}/kpi-impacts` -- declare expected KPI impact
|
|
@@ -446,6 +472,6 @@ atoll feedback resend fb_123
|
|
|
446
472
|
- Request bodies accept camelCase; responses use snake_case
|
|
447
473
|
- Descriptions and comments support Markdown
|
|
448
474
|
- All timestamps are ISO 8601 UTC
|
|
449
|
-
- Board statuses are customizable per project -- query `/board-columns` for available values
|
|
475
|
+
- Board statuses are customizable per project -- query `/board-columns` for available values and optional column descriptions
|
|
450
476
|
- API changes appear in real-time on the web board
|
|
451
477
|
- List endpoints support `limit` (default 25, max 100), `offset` pagination, and optional `shape=envelope` / `response_shape=cli` for `{ resource, items, total, limit, offset, nextOffset, truncated, hint }`
|
|
@@ -201,6 +201,21 @@ Roles: `owner`, `admin`, `member`, `guest`.
|
|
|
201
201
|
| DELETE | `/api/orgs/{id}/kpis/{kpiId}` | Delete KPI (admin/owner only) |
|
|
202
202
|
| GET | `/api/orgs/{id}/kpis/{kpiId}/snapshots` | List snapshots (optional `?limit=50`) |
|
|
203
203
|
| POST | `/api/orgs/{id}/kpis/{kpiId}/snapshots` | Record a snapshot |
|
|
204
|
+
| GET | `/api/orgs/{id}/kpi-http-sync-policy` | List exact-host KPI HTTP sync allowlist policy |
|
|
205
|
+
| POST | `/api/orgs/{id}/kpi-http-sync-policy` | Add an allowed exact host (human admin only) |
|
|
206
|
+
| GET | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | List KPI HTTP syncs |
|
|
207
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | Create a draft KPI HTTP sync |
|
|
208
|
+
| PUT | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | Validate a proposed KPI HTTP sync config without storing or running it |
|
|
209
|
+
| GET | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}` | Get a KPI HTTP sync |
|
|
210
|
+
| PATCH | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}` | Update a KPI HTTP sync draft (human admin only) |
|
|
211
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/validate` | Validate a stored sync (human admin only) |
|
|
212
|
+
| GET | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/secrets` | List sanitized secret metadata (human admin only) |
|
|
213
|
+
| PUT | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/secrets` | Add or replace a sync secret value (human admin only) |
|
|
214
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/dry-run` | Execute a sanitized dry run without writing a snapshot (human admin only) |
|
|
215
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/publish` | Publish a validated, dry-run sync (human admin only) |
|
|
216
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/disable` | Disable a sync (human admin only) |
|
|
217
|
+
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/run-now` | Preview by default; write a snapshot only with explicit admin confirmation |
|
|
218
|
+
| GET | `/api/orgs/{id}/kpis/{kpiId}/http-syncs/{syncId}/runs` | List sanitized sync run history (human admin only) |
|
|
204
219
|
|
|
205
220
|
## Initiatives
|
|
206
221
|
|
|
@@ -288,13 +303,14 @@ Filters: `by_me` = your actions; `mine` = activity on issues assigned to you.
|
|
|
288
303
|
|
|
289
304
|
## Board Columns
|
|
290
305
|
|
|
291
|
-
Custom statuses per project. Each column defines a valid status value.
|
|
306
|
+
Custom statuses per project. Each column defines a valid status value and may include an optional `description` for stage criteria or agent guidance.
|
|
292
307
|
|
|
293
308
|
| Method | Endpoint | Description |
|
|
294
309
|
|--------|----------|-------------|
|
|
295
310
|
| GET | `/api/orgs/{id}/projects/{projectId}/board-columns` | List columns (ordered by position) |
|
|
296
|
-
|
|
|
297
|
-
|
|
|
311
|
+
| GET | `/api/orgs/{id}/projects/{projectId}/board-context` | Get board milestone and initiative focus context |
|
|
312
|
+
| POST | `/api/orgs/{id}/projects/{projectId}/board-columns` | Create column (`{ key, label, description?, color?, position? }`) |
|
|
313
|
+
| PATCH | `/api/orgs/{id}/projects/{projectId}/board-columns/{columnId}` | Update column (`{ label?, description?, color?, position? }`) |
|
|
298
314
|
| DELETE | `/api/orgs/{id}/projects/{projectId}/board-columns/{columnId}` | Delete column (requires `reassignTo` in body) |
|
|
299
315
|
| PUT | `/api/orgs/{id}/projects/{projectId}/board-columns/reorder` | Bulk reorder (`{ columns: [{id, position}] }`) |
|
|
300
316
|
|
|
@@ -304,7 +320,7 @@ Custom statuses per project. Each column defines a valid status value.
|
|
|
304
320
|
|--------|----------|-------------|
|
|
305
321
|
| GET | `/api/orgs/{id}/projects/{projectId}/board-views` | List views |
|
|
306
322
|
| POST | `/api/orgs/{id}/projects/{projectId}/board-views` | Create view (`{ name, columnIds: [...] }`) |
|
|
307
|
-
| PATCH | `/api/orgs/{id}/projects/{projectId}/board-views/{viewId}` | Update view |
|
|
323
|
+
| PATCH | `/api/orgs/{id}/projects/{projectId}/board-views/{viewId}` | Update view (`{ name?, columnIds? }`; at least one required, `columnIds` must be an array) |
|
|
308
324
|
| DELETE | `/api/orgs/{id}/projects/{projectId}/board-views/{viewId}` | Delete view (cannot delete default) |
|
|
309
325
|
|
|
310
326
|
## Custom Views
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
- [Initiative Fields](#initiative-fields)
|
|
10
10
|
- [Automation Rule Fields](#automation-rule-fields)
|
|
11
11
|
- [Custom View Fields](#custom-view-fields)
|
|
12
|
+
- [Board Context Response](#board-context-response)
|
|
12
13
|
- [Webhook Fields](#webhook-fields)
|
|
13
14
|
- [Setup Proposal Fields](#setup-proposal-fields)
|
|
14
15
|
- [Heartbeat Response](#heartbeat-response)
|
|
@@ -100,6 +101,22 @@ Creation endpoints may return `402` when an org reaches its billing plan limit:
|
|
|
100
101
|
}
|
|
101
102
|
```
|
|
102
103
|
|
|
104
|
+
Calculated task-completion KPIs use `source_type: "formula"` and are calculated from linked work instead of snapshots:
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"name": "mvp_tasks_done",
|
|
109
|
+
"goal_id": "goal-uuid",
|
|
110
|
+
"source_type": "formula",
|
|
111
|
+
"source_config": {
|
|
112
|
+
"formula": "goal_linked_issue_completion",
|
|
113
|
+
"done_statuses": ["done"]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
For `goal_linked_issue_completion`, `current_value` is the count of non-archived directly linked issues and milestone-linked issues in `done` status and `target_value` is the total non-archived directly linked issue and milestone-linked issue count under initiatives for the goal.
|
|
119
|
+
|
|
103
120
|
## KPI Snapshots
|
|
104
121
|
|
|
105
122
|
```json
|
|
@@ -114,6 +131,40 @@ Creation endpoints may return `402` when an org reaches its billing plan limit:
|
|
|
114
131
|
|
|
115
132
|
Recording a snapshot auto-updates the KPI's `current_value`.
|
|
116
133
|
|
|
134
|
+
Calculated KPIs do not accept manual snapshots.
|
|
135
|
+
|
|
136
|
+
`api_poll` snapshots are written by published KPI HTTP Syncs and include provenance: `source_sync_id`, `source_sync_run_id`, `source_config_hash`, `source_recorded_for`, `observed_at`, and optional `provider_recorded_at`.
|
|
137
|
+
|
|
138
|
+
## KPI HTTP Syncs
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"name": "PostHog visitors",
|
|
143
|
+
"schedule": "daily",
|
|
144
|
+
"request_config": {
|
|
145
|
+
"method": "GET",
|
|
146
|
+
"url": "https://us.posthog.com/api/projects/123/query/",
|
|
147
|
+
"headers": {
|
|
148
|
+
"Authorization": {
|
|
149
|
+
"secretRef": "posthog_api_key",
|
|
150
|
+
"format": "Bearer {value}"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"extraction_config": {
|
|
155
|
+
"contentType": "json",
|
|
156
|
+
"pointer": "/results/0/value",
|
|
157
|
+
"numeric": {
|
|
158
|
+
"mode": "number",
|
|
159
|
+
"percentageScale": null
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
"freshness_config": {}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
V1 syncs are `GET` only, `https` only, JSON only, exact-host allowlisted, no redirects, no request bodies, no inline query strings, and no secret values. Machine actors can create drafts and validate configs only after the host is allowlisted. Human admins manage allowlists, secrets, dry-runs, publishing, disabling, and snapshot-writing run-now actions in Atoll.
|
|
167
|
+
|
|
117
168
|
## Initiative Fields
|
|
118
169
|
|
|
119
170
|
```json
|
|
@@ -172,6 +223,49 @@ Add/remove projects with `{ "project_id": "uuid" }`.
|
|
|
172
223
|
|
|
173
224
|
`display_mode`: `board`, `list`. `filters` and `sort` are freeform JSON.
|
|
174
225
|
|
|
226
|
+
## Board Context Response
|
|
227
|
+
|
|
228
|
+
`GET /api/orgs/{id}/projects/{projectId}/board-context` returns the strategy data used by the board context rail:
|
|
229
|
+
|
|
230
|
+
```json
|
|
231
|
+
{
|
|
232
|
+
"strategyContext": {
|
|
233
|
+
"milestones": [{
|
|
234
|
+
"id": "milestone-uuid",
|
|
235
|
+
"name": "Public beta",
|
|
236
|
+
"status": "active",
|
|
237
|
+
"issueCount": 4,
|
|
238
|
+
"completedCount": 2,
|
|
239
|
+
"progress": 50,
|
|
240
|
+
"linkedInitiatives": [{
|
|
241
|
+
"id": "initiative-uuid",
|
|
242
|
+
"title": "Activation launch",
|
|
243
|
+
"status": "active",
|
|
244
|
+
"progress": 40,
|
|
245
|
+
"kpiImpactCount": 1,
|
|
246
|
+
"linkedMilestoneIds": ["milestone-uuid"]
|
|
247
|
+
}]
|
|
248
|
+
}],
|
|
249
|
+
"initiatives": [{
|
|
250
|
+
"id": "initiative-uuid",
|
|
251
|
+
"title": "Activation launch",
|
|
252
|
+
"status": "active",
|
|
253
|
+
"issueCount": 5,
|
|
254
|
+
"completedCount": 2,
|
|
255
|
+
"progress": 40,
|
|
256
|
+
"kpiImpactCount": 1,
|
|
257
|
+
"linkedMilestoneIds": ["milestone-uuid"]
|
|
258
|
+
}],
|
|
259
|
+
"issueInitiativeLinks": [{
|
|
260
|
+
"issueId": "issue-uuid",
|
|
261
|
+
"initiativeIds": ["initiative-uuid"]
|
|
262
|
+
}]
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
`issueInitiativeLinks` includes direct `initiative_issues` links and links inherited from an issue's milestone.
|
|
268
|
+
|
|
175
269
|
## Webhook Fields
|
|
176
270
|
|
|
177
271
|
```json
|
|
@@ -236,6 +330,15 @@ Proposal JSON currently supports at most one item in each collection: `projects`
|
|
|
236
330
|
}],
|
|
237
331
|
"standalone_kpis": [...],
|
|
238
332
|
"assigned_issues": [...],
|
|
333
|
+
"project_context": [{
|
|
334
|
+
"project_id": "...",
|
|
335
|
+
"project_name": "Product",
|
|
336
|
+
"board_columns": [{
|
|
337
|
+
"key": "approval_gate",
|
|
338
|
+
"label": "Approval Gate",
|
|
339
|
+
"description": "Use when implementation is complete but needs approval."
|
|
340
|
+
}]
|
|
341
|
+
}],
|
|
239
342
|
"signals": [
|
|
240
343
|
{ "type": "kpi_off_pace", "severity": "warning", "message": "..." }
|
|
241
344
|
]
|
|
@@ -288,6 +391,7 @@ Each finding carries whichever entity ids apply: `goal_id`, `kpi_id`, `initiativ
|
|
|
288
391
|
| Domain | Field | Values |
|
|
289
392
|
|--------|-------|--------|
|
|
290
393
|
| Task | `status` | `backlog`, `todo`, `in_progress`, `done`, `cancelled` (custom per project via board-columns) |
|
|
394
|
+
| Board column | `description` | Optional stage criteria or agent guidance |
|
|
291
395
|
| Task | `priority` | `0` (urgent), `1` (high), `2` (medium), `3` (low) |
|
|
292
396
|
| Task | `recurrenceType` | `daily`, `weekly`, `monthly`, `yearly` |
|
|
293
397
|
| Goal | `status` | `active`, `achieved`, `missed`, `paused`, `cancelled` |
|
|
@@ -295,6 +399,9 @@ Each finding carries whichever entity ids apply: `goal_id`, `kpi_id`, `initiativ
|
|
|
295
399
|
| KPI | `target_direction` | `increase`, `decrease`, `maintain` |
|
|
296
400
|
| KPI | `source_type` | `manual`, `webhook`, `api_poll`, `formula` |
|
|
297
401
|
| KPI snapshot | `source` | `manual`, `webhook`, `api_poll`, `formula`, `agent` |
|
|
402
|
+
| KPI HTTP sync | `status` | `draft`, `published`, `disabled` |
|
|
403
|
+
| KPI HTTP sync secret | `placement` | `authorization_bearer`, `x_api_key` |
|
|
404
|
+
| KPI HTTP sync run | `status` | `queued`, `running`, `success`, `error` |
|
|
298
405
|
| Initiative | `status` | `proposed`, `active`, `completed`, `paused`, `cancelled` |
|
|
299
406
|
| Status update | `status` | `on_track`, `at_risk`, `off_track` |
|
|
300
407
|
| Member | `role` | `owner`, `admin`, `member`, `guest` |
|
|
@@ -314,7 +421,7 @@ REST list responses use resource-specific keys by default. Main list endpoints s
|
|
|
314
421
|
|
|
315
422
|
- All timestamps are ISO 8601 in UTC
|
|
316
423
|
- Description and comment fields support Markdown
|
|
317
|
-
- Board columns (statuses) are customizable per project -- query `/board-columns` for available statuses
|
|
424
|
+
- Board columns (statuses) are customizable per project -- query `/board-columns` for available statuses and optional descriptions
|
|
318
425
|
- Default statuses for new projects: `backlog`, `todo`, `in_progress`, `done`
|
|
319
426
|
- `cancelled` is always valid but not shown on the board
|
|
320
427
|
- Agent actions appear in the activity feed with the agent's name
|