@atollhq/skill-claude 0.4.8 → 0.4.10
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/README.md +9 -7
- package/bin/install.mjs +15 -8
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
- package/skill/references/api-endpoints.md +2 -1
- package/skill/references/api-fields.md +5 -0
package/README.md
CHANGED
|
@@ -7,23 +7,25 @@ Gives your Claude Code agent the ability to manage tasks, goals, KPIs, initiativ
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx @atollhq/skill-claude --profile agent-a --key sk_atoll_... --org your-org-id --project project-id --team team-id
|
|
10
|
+
npx @atollhq/skill-claude@latest --profile agent-a --key sk_atoll_... --org your-org-id --project project-id --team team-id
|
|
11
11
|
# or
|
|
12
|
-
ATOLL_API_KEY=sk_atoll_... ATOLL_ORG_ID=your-org-id npx @atollhq/skill-claude
|
|
12
|
+
ATOLL_API_KEY=sk_atoll_... ATOLL_ORG_ID=your-org-id npx @atollhq/skill-claude@latest
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
Optional defaults: `--project`, `--team`, and `--base-url` are stored with the selected mode. Use `--no-project`, `--no-team`, or `--no-base-url` to clear previously saved defaults. Pass `--profile` to store credentials and defaults only in that named Atoll CLI profile
|
|
15
|
+
Optional defaults: `--project`, `--team`, and `--base-url` are stored with the selected mode. Use `--no-project`, `--no-team`, or `--no-base-url` to clear previously saved defaults. Pass `--profile` to store credentials and defaults only in that named Atoll CLI profile. The installer does not write a global `ATOLL_PROFILE` or `ATOLL_*` credential settings in profile mode, so direct CLI commands should use `atoll --profile agent-a ...`. Omit `--profile` to use env-var mode, which writes `ATOLL_ENV_MODE=1` with the credential settings.
|
|
16
16
|
|
|
17
17
|
Get an agent API key from **Agents** in the Atoll app. Integration keys are still managed from **Settings > Members**.
|
|
18
18
|
|
|
19
19
|
This does three things:
|
|
20
20
|
|
|
21
21
|
1. Copies the skill into `~/.claude/skills/atoll-api/`
|
|
22
|
-
2.
|
|
22
|
+
2. Removes stale Atoll credential/profile env from `~/.claude/settings.json` when profile mode is used
|
|
23
23
|
3. Creates or updates the named Atoll CLI profile when `--profile` is provided
|
|
24
24
|
|
|
25
25
|
Restart Claude Code and the `atoll-api` skill is available.
|
|
26
26
|
|
|
27
|
+
Use `@latest` in the `npx` command so npm does not reuse a stale cached installer. In profile mode, the installer prints its package version and a verification command; run `atoll --profile agent-a agent-context --json` if you need to confirm the profile was created.
|
|
28
|
+
|
|
27
29
|
## Using the skill
|
|
28
30
|
|
|
29
31
|
Once installed, ask Claude anything task-related:
|
|
@@ -45,9 +47,9 @@ For terminal-first work, see [`@atollhq/cli`](https://www.npmjs.com/package/@ato
|
|
|
45
47
|
```bash
|
|
46
48
|
npm install -g @atollhq/cli
|
|
47
49
|
atoll auth login --profile agent-a --key sk_atoll_... --org-id org-uuid --project project-id --team team-id
|
|
48
|
-
atoll heartbeat
|
|
49
|
-
atoll issue list --json
|
|
50
|
-
atoll agent-context
|
|
50
|
+
atoll --profile agent-a heartbeat
|
|
51
|
+
atoll --profile agent-a issue list --json
|
|
52
|
+
atoll --profile agent-a agent-context
|
|
51
53
|
```
|
|
52
54
|
|
|
53
55
|
For multiple agents or orgs, use CLI auth profiles:
|
package/bin/install.mjs
CHANGED
|
@@ -6,6 +6,7 @@ import { homedir } from 'node:os'
|
|
|
6
6
|
import { fileURLToPath } from 'node:url'
|
|
7
7
|
|
|
8
8
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
9
|
+
const packageJson = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'))
|
|
9
10
|
|
|
10
11
|
function parseArgs(argv) {
|
|
11
12
|
const args = {}
|
|
@@ -37,8 +38,8 @@ function parseArgs(argv) {
|
|
|
37
38
|
|
|
38
39
|
function printUsage() {
|
|
39
40
|
console.log(`
|
|
40
|
-
Usage: npx @atollhq/skill-claude [--profile <name>] --key <api-key> --org <org-id> [--project <id>] [--team <id-or-slug>] [--base-url <url>]
|
|
41
|
-
or: ATOLL_API_KEY=<api-key> ATOLL_ORG_ID=<org-id> npx @atollhq/skill-claude
|
|
41
|
+
Usage: npx @atollhq/skill-claude@latest [--profile <name>] --key <api-key> --org <org-id> [--project <id>] [--team <id-or-slug>] [--base-url <url>]
|
|
42
|
+
or: ATOLL_API_KEY=<api-key> ATOLL_ORG_ID=<org-id> npx @atollhq/skill-claude@latest
|
|
42
43
|
|
|
43
44
|
Options:
|
|
44
45
|
--profile Atoll CLI profile name to create/update.
|
|
@@ -72,6 +73,8 @@ if (args.help) {
|
|
|
72
73
|
process.exit(0)
|
|
73
74
|
}
|
|
74
75
|
|
|
76
|
+
console.log(`Running @atollhq/skill-claude installer v${packageJson.version}`)
|
|
77
|
+
|
|
75
78
|
if (!args.key || !args.org) {
|
|
76
79
|
console.error('Error: provide --key and --org, or set ATOLL_API_KEY and ATOLL_ORG_ID\n')
|
|
77
80
|
printUsage()
|
|
@@ -112,7 +115,6 @@ function writeAtollProfile() {
|
|
|
112
115
|
else delete profile.defaultTeam
|
|
113
116
|
if (args.baseUrl) profile.baseUrl = args.baseUrl
|
|
114
117
|
else delete profile.baseUrl
|
|
115
|
-
config.activeProfile = args.profile
|
|
116
118
|
|
|
117
119
|
mkdirSync(atollDir, { recursive: true })
|
|
118
120
|
writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n')
|
|
@@ -128,14 +130,14 @@ cpSync(skillSrc, skillDest, { recursive: true })
|
|
|
128
130
|
console.log(`Installed skill to ${skillDest}`)
|
|
129
131
|
|
|
130
132
|
// 2. Configure ~/.claude/settings.json. Profile mode stores credentials only
|
|
131
|
-
// in the Atoll CLI profile and
|
|
132
|
-
//
|
|
133
|
+
// in the Atoll CLI profile and removes stale credential/profile env from
|
|
134
|
+
// earlier installs so a new profile install does not become globally active.
|
|
133
135
|
const settingsPath = join(homedir(), '.claude', 'settings.json')
|
|
134
136
|
let settings = readJson(settingsPath)
|
|
135
137
|
|
|
136
138
|
if (!settings.env) settings.env = {}
|
|
137
139
|
if (args.profile) {
|
|
138
|
-
settings.env.ATOLL_PROFILE
|
|
140
|
+
delete settings.env.ATOLL_PROFILE
|
|
139
141
|
delete settings.env.ATOLL_API_KEY
|
|
140
142
|
delete settings.env.ATOLL_ORG_ID
|
|
141
143
|
delete settings.env.ATOLL_PROJECT
|
|
@@ -160,14 +162,19 @@ writeAtollProfile()
|
|
|
160
162
|
|
|
161
163
|
const configuredVars = []
|
|
162
164
|
if (args.profile) {
|
|
163
|
-
|
|
165
|
+
console.log(`Removed stale Atoll env from ${settingsPath}`)
|
|
164
166
|
} else {
|
|
165
167
|
configuredVars.push('ATOLL_API_KEY', 'ATOLL_ORG_ID', 'ATOLL_ENV_MODE')
|
|
166
168
|
if (args.project) configuredVars.push('ATOLL_PROJECT')
|
|
167
169
|
if (args.team) configuredVars.push('ATOLL_TEAM')
|
|
168
170
|
if (args.baseUrl) configuredVars.push('ATOLL_BASE_URL')
|
|
171
|
+
console.log(`Configured ${configuredVars.join(', ')} in ${settingsPath}`)
|
|
172
|
+
}
|
|
173
|
+
if (args.profile) {
|
|
174
|
+
console.log('No global Claude ATOLL_PROFILE was written.')
|
|
175
|
+
console.log(`Run profile-scoped commands with: atoll --profile ${args.profile} ...`)
|
|
176
|
+
console.log(`Verify the profile with: atoll --profile ${args.profile} agent-context --json`)
|
|
169
177
|
}
|
|
170
|
-
console.log(`Configured ${configuredVars.join(', ')} in ${settingsPath}`)
|
|
171
178
|
|
|
172
179
|
console.log(`\nDone! Start Claude Code and the atoll-api skill will be available.`)
|
|
173
180
|
console.log(`Try: "List my Atoll tasks" or "Check my heartbeat"`)
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -186,7 +186,7 @@ CLI JSON conventions:
|
|
|
186
186
|
|
|
187
187
|
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.
|
|
188
188
|
|
|
189
|
-
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
|
|
189
|
+
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 create or review the draft in Settings > Integrations > KPI syncs, edit supported request/extraction fields and secrets through structured UI, dry-run, publish, disable, or run-now with snapshot writing.
|
|
190
190
|
|
|
191
191
|
```bash
|
|
192
192
|
atoll kpi sync validate <kpi-id> \
|
|
@@ -203,6 +203,7 @@ Roles: `owner`, `admin`, `member`, `guest`.
|
|
|
203
203
|
| POST | `/api/orgs/{id}/kpis/{kpiId}/snapshots` | Record a snapshot |
|
|
204
204
|
| GET | `/api/orgs/{id}/kpi-http-sync-policy` | List exact-host KPI HTTP sync allowlist policy |
|
|
205
205
|
| POST | `/api/orgs/{id}/kpi-http-sync-policy` | Add an allowed exact host (human admin only) |
|
|
206
|
+
| GET | `/api/orgs/{id}/kpi-http-syncs` | List org-wide KPI HTTP sync review rows for Settings; admins get config/secret metadata, members get redacted status rows |
|
|
206
207
|
| GET | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | List KPI HTTP syncs |
|
|
207
208
|
| POST | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | Create a draft KPI HTTP sync |
|
|
208
209
|
| PUT | `/api/orgs/{id}/kpis/{kpiId}/http-syncs` | Validate a proposed KPI HTTP sync config without storing or running it |
|
|
@@ -429,7 +430,7 @@ URL must be an HTTPS DNS hostname. IP literals, `localhost`, and `.local` hosts
|
|
|
429
430
|
|--------|----------|-------------|
|
|
430
431
|
| GET | `/api/orgs/{id}/agents` | List agents (owner/admin) |
|
|
431
432
|
| GET | `/api/orgs/{id}/agents/manageable` | List agents the current human can manage |
|
|
432
|
-
| POST | `/api/orgs/{id}/agents` | Create org, project-scoped, or personal agent |
|
|
433
|
+
| POST | `/api/orgs/{id}/agents` | Create org agent (`{ name, role?, setupScoped? }`), project-scoped agent (`{ name, projectIds }` or legacy `{ name, projectId, projectIds? }`), or personal agent (`{ name, personal: true }`) |
|
|
433
434
|
| DELETE | `/api/orgs/{id}/agents/{agentId}` | Revoke manageable agent |
|
|
434
435
|
| PATCH | `/api/orgs/{id}/agents/{agentId}/projects` | Replace project access for a manageable non-personal agent |
|
|
435
436
|
| POST | `/api/orgs/{id}/projects/{projectId}/agents` | Grant selected manageable agents access to a project |
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
- [Heartbeat Response](#heartbeat-response)
|
|
16
16
|
- [Analytics Response](#analytics-response)
|
|
17
17
|
- [Plan Limit Errors](#plan-limit-errors)
|
|
18
|
+
- [Agent Fields](#agent-fields)
|
|
18
19
|
- [Enums](#enums)
|
|
19
20
|
|
|
20
21
|
---
|
|
@@ -73,6 +74,10 @@ Creation endpoints may return `402` when an org reaches its billing plan limit:
|
|
|
73
74
|
|
|
74
75
|
`resource` is one of `humans`, `agents`, `activeProjects`, or `activeIssues`.
|
|
75
76
|
|
|
77
|
+
## Agent Fields
|
|
78
|
+
|
|
79
|
+
Create org-wide agents with `{ "name": "...", "role": "member", "setupScoped": false }`; org-wide creation is owner/admin-only. Create project-scoped agents with non-empty `projectIds`, for example `{ "name": "...", "projectIds": ["project-uuid"] }`; `projectId` remains accepted as a legacy/default-project alias and is merged with `projectIds`. Project-scoped agents are created as guests, and human members may only scope them to projects they can access. Create personal agents with `{ "name": "...", "personal": true }`; personal agents inherit their human owner's project access and reject explicit `projectId`/`projectIds`.
|
|
80
|
+
|
|
76
81
|
## Goal Fields
|
|
77
82
|
|
|
78
83
|
```json
|