@atollhq/skill-codex 0.4.3 → 0.4.4

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 CHANGED
@@ -12,7 +12,7 @@ npx @atollhq/skill-codex --profile agent-a --key sk_atoll_... --org your-org-id
12
12
  ATOLL_API_KEY=sk_atoll_... ATOLL_ORG_ID=your-org-id npx @atollhq/skill-codex
13
13
  ```
14
14
 
15
- Optional defaults: `--profile`, `--project`, `--team`, and `--base-url` write `ATOLL_PROFILE`, `ATOLL_PROJECT`, `ATOLL_TEAM`, and `ATOLL_BASE_URL` for the agent. Use `--no-project`, `--no-team`, or `--no-base-url` to clear previously saved defaults. When `--profile` is set, the installer also creates or updates that profile in `~/.atoll/config.json`.
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. When `--profile` is set, credentials and defaults are stored only in that named Atoll CLI profile. The installer does not write global `ATOLL_*` exports to `~/.zshrc` or `~/.bashrc`. Use `atoll --profile agent-a ...` for profile-scoped commands, or omit `--profile` to use env-var mode.
16
16
 
17
17
  Get an API key from **Settings > Members > Add Agent** (or **Create API Key** for integrations) in the Atoll app.
18
18
 
@@ -21,10 +21,10 @@ This does five things:
21
21
  1. Installs the `atoll-api` skill to `~/.codex/skills/atoll-api/`
22
22
  2. Appends (or updates) an `# Atoll Integration` section in `~/.codex/AGENTS.md`
23
23
  3. Copies API reference files to `~/.codex/atoll-references/`
24
- 4. Appends Atoll env var exports to your shell profile (`~/.zshrc` or `~/.bashrc`)
25
- 5. Creates or updates the named Atoll CLI profile when `--profile` is provided
24
+ 4. Creates or updates the named Atoll CLI profile when `--profile` is provided
25
+ 5. Appends Atoll env var exports to your shell profile (`~/.zshrc` or `~/.bashrc`) only when no profile is provided
26
26
 
27
- Open a fresh shell (or `source` your profile) and Codex has the Atoll integration.
27
+ For profile mode, Codex has the Atoll skill immediately and terminal commands can use `atoll --profile agent-a ...`. For env-var mode, open a fresh shell or `source` your profile.
28
28
 
29
29
  ## Using the integration
30
30
 
@@ -45,6 +45,7 @@ For terminal-first work, see [`@atollhq/cli`](https://www.npmjs.com/package/@ato
45
45
  ```bash
46
46
  npm install -g @atollhq/cli
47
47
  atoll auth login --profile agent-a --key sk_atoll_... --org-id org-uuid --project project-id --team team-id
48
+ atoll auth login --profile agent-a --key sk_atoll_... --org-id org-uuid --project project-id --no-team --no-base-url
48
49
  atoll heartbeat
49
50
  atoll issue list --json
50
51
  atoll agent-context
package/bin/install.mjs CHANGED
@@ -30,7 +30,7 @@ Usage: npx @atollhq/skill-codex [--profile <name>] --key <api-key> --org <org-id
30
30
  or: ATOLL_API_KEY=<api-key> ATOLL_ORG_ID=<org-id> npx @atollhq/skill-codex
31
31
 
32
32
  Options:
33
- --profile Atoll CLI profile name to create/update. Defaults to ATOLL_PROFILE.
33
+ --profile Atoll CLI profile name to create/update. Profile mode does not write shell env vars.
34
34
  --key Atoll API key (sk_atoll_...). Defaults to ATOLL_API_KEY.
35
35
  --org Organization ID. Defaults to ATOLL_ORG_ID.
36
36
  --project Default project ID. Defaults to ATOLL_PROJECT.
@@ -44,12 +44,12 @@ Options:
44
44
  Installs the Atoll integration for Codex CLI:
45
45
  - Installs the atoll-api skill to ~/.codex/skills/atoll-api/
46
46
  - Writes AGENTS.md with API reference to ~/.codex/
47
- - Sets Atoll env vars
47
+ - Creates/updates an Atoll CLI profile when --profile is provided
48
+ - Otherwise writes Atoll env vars to your shell profile for env-var mode
48
49
  `)
49
50
  }
50
51
 
51
52
  const args = parseArgs(process.argv)
52
- args.profile ??= process.env.ATOLL_PROFILE
53
53
  args.key ??= process.env.ATOLL_API_KEY
54
54
  args.org ??= process.env.ATOLL_ORG_ID
55
55
  if (args.clearProject) delete args.project
@@ -83,7 +83,7 @@ function readJson(path) {
83
83
  }
84
84
 
85
85
  function writeAtollProfile() {
86
- if (!args.profile) return
86
+ if (!args.profile) return null
87
87
 
88
88
  const atollDir = join(homedir(), '.atoll')
89
89
  const configPath = join(atollDir, 'config.json')
@@ -106,6 +106,7 @@ function writeAtollProfile() {
106
106
  mkdirSync(atollDir, { recursive: true })
107
107
  writeFileSync(configPath, JSON.stringify(config, null, 2) + '\n')
108
108
  console.log(`Configured Atoll CLI profile "${args.profile}" in ${configPath}`)
109
+ return configPath
109
110
  }
110
111
 
111
112
  // 1. Install the Codex skill to ~/.codex/skills/atoll-api/
@@ -122,7 +123,13 @@ console.log(`Installed Atoll skill to ${skillDest}`)
122
123
  const skillMd = readFileSync(join(skillDir, 'SKILL.md'), 'utf-8')
123
124
  // Strip YAML frontmatter for AGENTS.md
124
125
  const body = skillMd.replace(/^---[\s\S]*?---\n*/, '')
126
+ const profileModeInstructions = args.profile ? `## Profile-scoped CLI configuration
127
+
128
+ This Codex install is scoped to Atoll CLI profile \`${args.profile}\`. No global \`ATOLL_API_KEY\`, \`ATOLL_ORG_ID\`, \`ATOLL_PROJECT\`, \`ATOLL_TEAM\`, or \`ATOLL_BASE_URL\` shell exports were written. Use \`atoll --profile ${args.profile} ...\` for direct Atoll CLI commands. Direct API snippets below use \`ATOLL_API_KEY\` / \`ATOLL_ORG_ID\` only when you intentionally choose env-var mode.
129
+
130
+ ` : ''
125
131
  const optionalCredentialLines = [
132
+ args.profile ? `- Atoll CLI profile: ${args.profile}` : null,
126
133
  args.project ? `- Default project ID: ${args.project}` : null,
127
134
  args.team ? `- Default team: ${args.team}` : null,
128
135
  args.baseUrl ? `- Base URL: ${args.baseUrl}` : null,
@@ -130,11 +137,12 @@ const optionalCredentialLines = [
130
137
 
131
138
  const agentsMd = `# Atoll Integration
132
139
 
140
+ ${profileModeInstructions}
133
141
  ${body}
134
142
 
135
143
  ## Credentials
136
144
 
137
- - API Key: set as ATOLL_API_KEY environment variable
145
+ - API Key: ${args.profile ? `stored in Atoll CLI profile \`${args.profile}\`` : 'set as ATOLL_API_KEY environment variable'}
138
146
  - Org ID: ${args.org}${optionalCredentialLines ? `\n${optionalCredentialLines}` : ''}
139
147
  `
140
148
 
@@ -162,7 +170,16 @@ for (const file of ['api-endpoints.md', 'api-fields.md']) {
162
170
  }
163
171
  console.log(`Copied API references to ${refsDir}`)
164
172
 
165
- // 4. Set env vars in shell profile
173
+ // 4. In profile mode, keep credentials scoped to the Atoll CLI profile.
174
+ if (args.profile) {
175
+ writeAtollProfile()
176
+ console.log('No Atoll shell exports were written.')
177
+ console.log(`Run profile-scoped commands with: atoll --profile ${args.profile} ...`)
178
+ console.log(`\nDone! Codex has the Atoll skill installed, and the Atoll CLI profile "${args.profile}" is active.`)
179
+ process.exit(0)
180
+ }
181
+
182
+ // 4. Set env vars in shell profile for env-var mode.
166
183
  const shell = process.env.SHELL || '/bin/bash'
167
184
  const profilePath = shell.includes('zsh')
168
185
  ? join(homedir(), '.zshrc')
@@ -185,7 +202,7 @@ if (existsSync(profilePath)) {
185
202
  if (!profile.includes('# Atoll (added by @atollhq/skill-codex)')) {
186
203
  profile = `${profile.trimEnd()}\n\n# Atoll (added by @atollhq/skill-codex)\n`
187
204
  }
188
- if (args.profile) profile = upsertExport(profile, 'ATOLL_PROFILE', args.profile)
205
+ profile = removeExport(profile, 'ATOLL_PROFILE')
189
206
  profile = upsertExport(profile, 'ATOLL_API_KEY', args.key)
190
207
  profile = upsertExport(profile, 'ATOLL_ORG_ID', args.org)
191
208
  if (args.project) profile = upsertExport(profile, 'ATOLL_PROJECT', args.project)
@@ -195,10 +212,8 @@ if (existsSync(profilePath)) {
195
212
  if (args.baseUrl) profile = upsertExport(profile, 'ATOLL_BASE_URL', args.baseUrl)
196
213
  else profile = removeExport(profile, 'ATOLL_BASE_URL')
197
214
  writeFileSync(profilePath, profile)
198
- writeAtollProfile()
199
215
 
200
216
  const configuredVars = []
201
- if (args.profile) configuredVars.push('ATOLL_PROFILE')
202
217
  configuredVars.push('ATOLL_API_KEY', 'ATOLL_ORG_ID')
203
218
  if (args.project) configuredVars.push('ATOLL_PROJECT')
204
219
  if (args.team) configuredVars.push('ATOLL_TEAM')
@@ -207,7 +222,6 @@ if (existsSync(profilePath)) {
207
222
  } else {
208
223
  const envLines = [
209
224
  '# Atoll (added by @atollhq/skill-codex)',
210
- args.profile ? `export ATOLL_PROFILE="${args.profile}"` : null,
211
225
  `export ATOLL_API_KEY="${args.key}"`,
212
226
  `export ATOLL_ORG_ID="${args.org}"`,
213
227
  args.project ? `export ATOLL_PROJECT="${args.project}"` : null,
@@ -216,7 +230,6 @@ if (existsSync(profilePath)) {
216
230
  ].filter(Boolean)
217
231
  const envBlock = `\n${envLines.join('\n')}\n`
218
232
  writeFileSync(profilePath, envBlock)
219
- writeAtollProfile()
220
233
  console.log(`Created ${profilePath} with Atoll env vars`)
221
234
  }
222
235
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atollhq/skill-codex",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "Install the Atoll project management integration for Codex CLI",
5
5
  "bin": {
6
6
  "skill-codex": "bin/install.mjs"
package/skill/SKILL.md CHANGED
@@ -149,6 +149,7 @@ atoll feedback "The status error should list custom board statuses"
149
149
 
150
150
  # Projects & milestones
151
151
  atoll project list
152
+ atoll project delete <project-id> --confirm DELETE
152
153
  atoll milestone list --project <project-id>
153
154
  atoll milestone upsert --project <project-id> --name "v1.0" --date 2026-06-01
154
155
 
@@ -64,7 +64,7 @@ All endpoints require `Authorization: Bearer sk_atoll_...` header.
64
64
  | POST | `/api/orgs/{id}/projects` | Create project (`{ name, description?, visibility?, color?, icon?, github_repo? }`) |
65
65
  | GET | `/api/orgs/{id}/projects/{projectId}` | Get project with issues |
66
66
  | PATCH | `/api/orgs/{id}/projects/{projectId}` | Update project (`{ name?, description?, status?, visibility?, color?, icon? }`) |
67
- | DELETE | `/api/orgs/{id}/projects/{projectId}` | Delete project (owner/admin) |
67
+ | DELETE | `/api/orgs/{id}/projects/{projectId}` | Permanently delete project and all tasks in it (owner/admin; body must include `{ "confirmation": "DELETE" }`) |
68
68
 
69
69
  Guest users only see projects they are assigned to.
70
70