@atollhq/skill-gemini 0.1.10 → 0.1.12
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 +6 -5
- package/bin/install.mjs +38 -9
- package/package.json +1 -1
- package/skill/SKILL.md +3 -1
- package/skill/references/api-endpoints.md +3 -1
package/README.md
CHANGED
|
@@ -7,11 +7,13 @@ Gives your Gemini agent the ability to manage tasks, goals, KPIs, initiatives, m
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
-
npx @atollhq/skill-gemini --key sk_atoll_... --org your-org-id
|
|
10
|
+
npx @atollhq/skill-gemini --key sk_atoll_... --org your-org-id --project project-id --team team-id
|
|
11
11
|
# or
|
|
12
12
|
ATOLL_API_KEY=sk_atoll_... ATOLL_ORG_ID=your-org-id npx @atollhq/skill-gemini
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
Optional defaults: `--project`, `--team`, and `--base-url` write `ATOLL_PROJECT`, `ATOLL_TEAM`, and `ATOLL_BASE_URL` for the agent.
|
|
16
|
+
|
|
15
17
|
Get an API key from **Settings > Members > Add Agent** (or **Create API Key** for integrations) in the Atoll app.
|
|
16
18
|
|
|
17
19
|
This does four things:
|
|
@@ -19,7 +21,7 @@ This does four things:
|
|
|
19
21
|
1. Installs the `atoll-api` skill to `~/.gemini/skills/atoll-api/`
|
|
20
22
|
2. Appends (or updates) an `# Atoll Integration` section in `~/.gemini/GEMINI.md`
|
|
21
23
|
3. Copies API reference files to `~/.gemini/atoll-references/`
|
|
22
|
-
4. Appends
|
|
24
|
+
4. Appends Atoll env var exports to your shell profile (`~/.zshrc` or `~/.bashrc`)
|
|
23
25
|
|
|
24
26
|
Open a fresh shell (or `source` your profile) and Gemini has the Atoll integration.
|
|
25
27
|
|
|
@@ -41,8 +43,7 @@ For terminal-first work, see [`@atollhq/cli`](https://www.npmjs.com/package/@ato
|
|
|
41
43
|
|
|
42
44
|
```bash
|
|
43
45
|
npm install -g @atollhq/cli
|
|
44
|
-
atoll auth login --key sk_atoll_...
|
|
45
|
-
atoll config set-org your-org-slug
|
|
46
|
+
atoll auth login --profile agent-a --key sk_atoll_... --org your-org-slug --project project-id --team team-id
|
|
46
47
|
atoll heartbeat
|
|
47
48
|
atoll issue list --json
|
|
48
49
|
atoll agent-context
|
|
@@ -52,7 +53,7 @@ For multiple agents or orgs, use CLI auth profiles:
|
|
|
52
53
|
|
|
53
54
|
```bash
|
|
54
55
|
atoll auth login --profile agent-a --key sk_atoll_... --org acme
|
|
55
|
-
atoll auth login --profile agent-b --key sk_atoll_... --org client
|
|
56
|
+
atoll auth login --profile agent-b --key sk_atoll_... --org client --project project-id --team team-id
|
|
56
57
|
atoll --profile agent-b issue list
|
|
57
58
|
```
|
|
58
59
|
|
package/bin/install.mjs
CHANGED
|
@@ -12,6 +12,9 @@ function parseArgs(argv) {
|
|
|
12
12
|
for (let i = 2; i < argv.length; i++) {
|
|
13
13
|
if (argv[i] === '--key' && argv[i + 1]) args.key = argv[++i]
|
|
14
14
|
else if (argv[i] === '--org' && argv[i + 1]) args.org = argv[++i]
|
|
15
|
+
else if (argv[i] === '--project' && argv[i + 1]) args.project = argv[++i]
|
|
16
|
+
else if (argv[i] === '--team' && argv[i + 1]) args.team = argv[++i]
|
|
17
|
+
else if (argv[i] === '--base-url' && argv[i + 1]) args.baseUrl = argv[++i]
|
|
15
18
|
else if (argv[i] === '--help' || argv[i] === '-h') args.help = true
|
|
16
19
|
}
|
|
17
20
|
return args
|
|
@@ -19,24 +22,30 @@ function parseArgs(argv) {
|
|
|
19
22
|
|
|
20
23
|
function printUsage() {
|
|
21
24
|
console.log(`
|
|
22
|
-
Usage: npx @atollhq/skill-gemini --key <api-key> --org <org-id>
|
|
25
|
+
Usage: npx @atollhq/skill-gemini --key <api-key> --org <org-id> [--project <id>] [--team <id-or-slug>] [--base-url <url>]
|
|
23
26
|
or: ATOLL_API_KEY=<api-key> ATOLL_ORG_ID=<org-id> npx @atollhq/skill-gemini
|
|
24
27
|
|
|
25
28
|
Options:
|
|
26
|
-
--key
|
|
27
|
-
--org
|
|
28
|
-
--
|
|
29
|
+
--key Atoll API key (sk_atoll_...). Defaults to ATOLL_API_KEY.
|
|
30
|
+
--org Organization ID. Defaults to ATOLL_ORG_ID.
|
|
31
|
+
--project Default project ID. Defaults to ATOLL_PROJECT.
|
|
32
|
+
--team Default team ID or slug. Defaults to ATOLL_TEAM.
|
|
33
|
+
--base-url Atoll base URL. Defaults to ATOLL_BASE_URL.
|
|
34
|
+
--help Show this help message
|
|
29
35
|
|
|
30
36
|
Installs the Atoll integration for Gemini CLI:
|
|
31
37
|
- Installs the atoll-api skill to ~/.gemini/skills/atoll-api/
|
|
32
38
|
- Writes GEMINI.md with API reference to ~/.gemini/
|
|
33
|
-
- Sets
|
|
39
|
+
- Sets Atoll env vars
|
|
34
40
|
`)
|
|
35
41
|
}
|
|
36
42
|
|
|
37
43
|
const args = parseArgs(process.argv)
|
|
38
44
|
args.key ??= process.env.ATOLL_API_KEY
|
|
39
45
|
args.org ??= process.env.ATOLL_ORG_ID
|
|
46
|
+
args.project ??= process.env.ATOLL_PROJECT
|
|
47
|
+
args.team ??= process.env.ATOLL_TEAM
|
|
48
|
+
args.baseUrl ??= process.env.ATOLL_BASE_URL
|
|
40
49
|
|
|
41
50
|
if (args.help) { printUsage(); process.exit(0) }
|
|
42
51
|
|
|
@@ -64,6 +73,11 @@ console.log(`Installed Atoll skill to ${skillDest}`)
|
|
|
64
73
|
// 2. Write GEMINI.md to ~/.gemini/
|
|
65
74
|
const skillMd = readFileSync(join(skillDir, 'SKILL.md'), 'utf-8')
|
|
66
75
|
const body = skillMd.replace(/^---[\s\S]*?---\n*/, '')
|
|
76
|
+
const optionalCredentialLines = [
|
|
77
|
+
args.project ? `- Default project ID: ${args.project}` : null,
|
|
78
|
+
args.team ? `- Default team: ${args.team}` : null,
|
|
79
|
+
args.baseUrl ? `- Base URL: ${args.baseUrl}` : null,
|
|
80
|
+
].filter(Boolean).join('\n')
|
|
67
81
|
|
|
68
82
|
const geminiMd = `# Atoll Integration
|
|
69
83
|
|
|
@@ -72,7 +86,7 @@ ${body}
|
|
|
72
86
|
## Credentials
|
|
73
87
|
|
|
74
88
|
- API Key: set as ATOLL_API_KEY environment variable
|
|
75
|
-
- Org ID: ${args.org}
|
|
89
|
+
- Org ID: ${args.org}${optionalCredentialLines ? `\n${optionalCredentialLines}` : ''}
|
|
76
90
|
`
|
|
77
91
|
|
|
78
92
|
const geminiPath = join(geminiDir, 'GEMINI.md')
|
|
@@ -117,12 +131,27 @@ if (existsSync(profilePath)) {
|
|
|
117
131
|
}
|
|
118
132
|
profile = upsertExport(profile, 'ATOLL_API_KEY', args.key)
|
|
119
133
|
profile = upsertExport(profile, 'ATOLL_ORG_ID', args.org)
|
|
134
|
+
if (args.project) profile = upsertExport(profile, 'ATOLL_PROJECT', args.project)
|
|
135
|
+
if (args.team) profile = upsertExport(profile, 'ATOLL_TEAM', args.team)
|
|
136
|
+
if (args.baseUrl) profile = upsertExport(profile, 'ATOLL_BASE_URL', args.baseUrl)
|
|
120
137
|
writeFileSync(profilePath, profile)
|
|
121
|
-
|
|
138
|
+
const configuredVars = ['ATOLL_API_KEY', 'ATOLL_ORG_ID']
|
|
139
|
+
if (args.project) configuredVars.push('ATOLL_PROJECT')
|
|
140
|
+
if (args.team) configuredVars.push('ATOLL_TEAM')
|
|
141
|
+
if (args.baseUrl) configuredVars.push('ATOLL_BASE_URL')
|
|
142
|
+
console.log(`Configured ${configuredVars.join(', ')} in ${profilePath}`)
|
|
122
143
|
} else {
|
|
123
|
-
const
|
|
144
|
+
const envLines = [
|
|
145
|
+
'# Atoll (added by @atollhq/skill-gemini)',
|
|
146
|
+
`export ATOLL_API_KEY="${args.key}"`,
|
|
147
|
+
`export ATOLL_ORG_ID="${args.org}"`,
|
|
148
|
+
args.project ? `export ATOLL_PROJECT="${args.project}"` : null,
|
|
149
|
+
args.team ? `export ATOLL_TEAM="${args.team}"` : null,
|
|
150
|
+
args.baseUrl ? `export ATOLL_BASE_URL="${args.baseUrl}"` : null,
|
|
151
|
+
].filter(Boolean)
|
|
152
|
+
const envBlock = `\n${envLines.join('\n')}\n`
|
|
124
153
|
writeFileSync(profilePath, envBlock)
|
|
125
|
-
console.log(`Created ${profilePath} with
|
|
154
|
+
console.log(`Created ${profilePath} with Atoll env vars`)
|
|
126
155
|
}
|
|
127
156
|
|
|
128
157
|
console.log(`\nDone! Restart your shell, then Gemini CLI will have access to the Atoll API.`)
|
package/package.json
CHANGED
package/skill/SKILL.md
CHANGED
|
@@ -64,7 +64,7 @@ For machines or agents that need multiple credentials, use auth profiles:
|
|
|
64
64
|
|
|
65
65
|
```bash
|
|
66
66
|
atoll auth login --profile agent-a --key sk_atoll_... --org acme
|
|
67
|
-
atoll auth login --profile agent-b --key sk_atoll_... --org client
|
|
67
|
+
atoll auth login --profile agent-b --key sk_atoll_... --org client --project project-id --team team-id
|
|
68
68
|
atoll auth profiles
|
|
69
69
|
atoll auth use agent-a
|
|
70
70
|
|
|
@@ -72,6 +72,8 @@ atoll auth use agent-a
|
|
|
72
72
|
atoll --profile agent-b issue list
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
+
Profiles can store default project, team, and base URL values. `atoll issue list` and `atoll issue create` apply the selected default team unless a command-level `--team` override is passed.
|
|
76
|
+
|
|
75
77
|
Common commands:
|
|
76
78
|
|
|
77
79
|
```bash
|
|
@@ -398,7 +398,9 @@ URL must be HTTPS. Returns webhook record plus `secret` for HMAC verification.
|
|
|
398
398
|
| POST | `/api/orgs/{id}/agents/{agentId}/keys` | Generate new key |
|
|
399
399
|
| DELETE | `/api/orgs/{id}/agents/{agentId}/keys/{keyId}` | Revoke key |
|
|
400
400
|
| POST | `/api/orgs/{id}/agents/{agentId}/rotate` | Rotate all keys |
|
|
401
|
-
| POST | `/api/orgs/{id}/agents/{agentId}/install-snippets` | Get install snippets (`{ key }`) |
|
|
401
|
+
| POST | `/api/orgs/{id}/agents/{agentId}/install-snippets` | Get install snippets (`{ key, profileName?, projectId?, teamId?, baseUrl? }`) |
|
|
402
|
+
|
|
403
|
+
Install snippets returns config for `claude-code`, `codex`, `gemini`, `openclaw` (agent prompt), `openclaw-manual`, `hermes` (agent prompt), and `hermes-manual`. The server resolves the org slug and validates optional project/team IDs before generating snippets.
|
|
402
404
|
|
|
403
405
|
## Integrations
|
|
404
406
|
|