@atollhq/skill-gemini 0.3.0 → 0.4.0

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
@@ -57,6 +57,8 @@ atoll auth login --profile agent-b --key sk_atoll_... --org-id org-uuid --projec
57
57
  atoll --profile agent-b issue list
58
58
  ```
59
59
 
60
+ Always persist `--org-id` on named profiles, or pass `--org-id` per command. Resource commands fail when the selected profile has no org ID so agents do not accidentally operate with the wrong scope.
61
+
60
62
  The companion CLI also supports safer issue removal and upstream feedback with local retry drafts:
61
63
 
62
64
  ```bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atollhq/skill-gemini",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Install the Atoll project management integration for Gemini CLI",
5
5
  "bin": {
6
6
  "skill-gemini": "bin/install.mjs"
package/skill/SKILL.md CHANGED
@@ -33,6 +33,26 @@ export ATOLL_API_KEY="sk_atoll_..."
33
33
  export ATOLL_ORG_ID="..." # UUID of the org the key belongs to
34
34
  ```
35
35
 
36
+ For OpenClaw / ClawHub, prefer skill-scoped config in `~/.openclaw/openclaw.json` instead of global shell exports:
37
+
38
+ ```json5
39
+ {
40
+ skills: {
41
+ entries: {
42
+ "atoll-api": {
43
+ enabled: true,
44
+ apiKey: "sk_atoll_...",
45
+ env: {
46
+ ATOLL_ORG_ID: "..."
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ `apiKey` maps to `ATOLL_API_KEY`; optional defaults such as `ATOLL_PROJECT`, `ATOLL_TEAM`, and `ATOLL_BASE_URL` belong under `env`.
55
+
36
56
  **Sanity check** — exercises the org-scoped issues endpoint, not just `/api/auth/me`:
37
57
 
38
58
  ```bash
@@ -72,7 +92,9 @@ atoll auth use agent-a
72
92
  atoll --profile agent-b issue list
73
93
  ```
74
94
 
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.
95
+ Profiles can store default org ID, project, team, and base URL values. For named profiles, always persist `--org-id` or pass `--org-id` per command. Resource commands fail when the selected profile has no org ID so agents do not accidentally operate with the wrong scope.
96
+
97
+ `atoll issue list` and `atoll issue create` apply the selected default team unless a command-level `--team` override is passed.
76
98
 
77
99
  Common commands:
78
100
 
@@ -94,9 +116,13 @@ atoll issue view ATOLL-42 # alias kept for humans
94
116
 
95
117
  # Create a task
96
118
  atoll issue create --title "Fix login bug" --status todo --priority 1
119
+ atoll issue upsert --match-title --project <project-id> --title "Fix login bug" --status todo
120
+ atoll issue bulk-create --file ./issues.json --continue-on-error
97
121
 
98
122
  # Update a task
99
123
  atoll issue update ATOLL-42 --status in_progress
124
+ atoll issue upsert ATOLL-42 --status in_progress
125
+ atoll issue bulk-update --file ./updates.json --dry-run
100
126
 
101
127
  # Assign a task
102
128
  atoll issue assign ATOLL-42 --to <user-id>
@@ -105,6 +131,13 @@ atoll issue assign ATOLL-42 --to self
105
131
  # Comments
106
132
  atoll comment add ATOLL-42 --body "Working on this now"
107
133
 
134
+ # Dependencies
135
+ atoll dependency bulk-add --file ./dependencies.json --continue-on-error
136
+
137
+ # Graph plans
138
+ atoll plan validate --file ./plan.json
139
+ atoll plan apply --file ./plan.json --dry-run
140
+
108
141
  # Safe removal
109
142
  atoll issue archive ATOLL-42
110
143
  atoll issue unarchive ATOLL-42
@@ -117,6 +150,7 @@ atoll feedback "The status error should list custom board statuses"
117
150
  # Projects & milestones
118
151
  atoll project list
119
152
  atoll milestone list --project <project-id>
153
+ atoll milestone upsert --project <project-id> --name "v1.0" --date 2026-06-01
120
154
  ```
121
155
 
122
156
  Prefer the CLI for routine task operations, heartbeat checks, comments, and feedback. Use direct API calls when the CLI does not expose the needed endpoint yet.
@@ -127,6 +161,7 @@ CLI JSON conventions:
127
161
  - List commands return `{ resource, items, total, limit, offset, nextOffset, truncated, hint }`.
128
162
  - Diagnostics and errors go to stderr.
129
163
  - `atoll agent-context` returns a versioned command/flag manifest and available profile context.
164
+ - `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`.
130
165
 
131
166
  ## Quick Start — API (for advanced use)
132
167
 
@@ -226,6 +261,8 @@ Full endpoint tables and field schemas:
226
261
  | Comments | POST `.../comments` | GET `.../comments` | PATCH `.../comments/{id}` | DELETE `.../comments/{id}` |
227
262
  | Subtasks | POST `.../subtasks` | GET `.../subtasks` | PATCH `.../subtasks/{id}` | DELETE `.../subtasks/{id}` |
228
263
 
264
+ Initiative create accepts `title` or legacy `name`, plus camelCase aliases `goalId`, `ownerId`, and `targetDate`.
265
+
229
266
  All endpoints are under `/api/orgs/{orgId}/...`.
230
267
 
231
268
  † `DELETE /issues/{id}` requires `owner` or `admin` role — any caller without that role (including member-role agents) gets `403`. If you just need to remove a task, use `POST /api/orgs/{orgId}/issues/{issueId}/archive` (soft delete, no role gate); reverse with `DELETE` on the same path (unarchive). In the CLI, prefer `atoll issue archive <id>`. Permanent `atoll issue delete <id>` requires `--force` and supports `--dry-run`.
@@ -280,4 +317,4 @@ atoll feedback resend fb_123
280
317
  - All timestamps are ISO 8601 UTC
281
318
  - Board statuses are customizable per project -- query `/board-columns` for available values
282
319
  - API changes appear in real-time on the web board
283
- - List endpoints support `limit` (default 25, max 100) and `offset` pagination
320
+ - 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 }`
@@ -120,6 +120,7 @@ Plan limits are enforced when creating projects, human members, agents/integrati
120
120
  - `orderDir` -- `asc` or `desc` (default)
121
121
  - `limit` -- max results (default 25, max 100)
122
122
  - `offset` -- pagination offset
123
+ - `shape=envelope` or `response_shape=cli` -- opt into CLI-compatible list responses: `{ resource, items, total, limit, offset, nextOffset, truncated, hint }`
123
124
 
124
125
  **GET task detail** returns enriched data: `milestone`, `assignee`, `assignees`, `sub_tasks`, `issue_labels`, and `isBlocked`.
125
126
 
@@ -207,6 +208,8 @@ Roles: `owner`, `admin`, `member`, `guest`.
207
208
  | POST | `/api/orgs/{id}/initiatives/{initiativeId}/projects` | Add project to initiative |
208
209
  | DELETE | `/api/orgs/{id}/initiatives/{initiativeId}/projects` | Remove project from initiative |
209
210
 
211
+ Create accepts `title` or legacy `name`, plus camelCase aliases `goalId`, `ownerId`, and `targetDate`.
212
+
210
213
  ## Initiative Links
211
214
 
212
215
  | Method | Endpoint | Description |
@@ -328,8 +331,9 @@ Custom statuses per project. Each column defines a valid status value.
328
331
  | Method | Endpoint | Description |
329
332
  |--------|----------|-------------|
330
333
  | GET | `/api/orgs/{id}/issues/{issueId}/pr-links` | List linked pull requests |
334
+ | POST | `/api/orgs/{id}/issues/{issueId}/pr-links` | Attach a GitHub PR URL (`{ url }`) |
331
335
 
332
- PR links are created automatically via the GitHub webhook integration.
336
+ Attach PRs manually with a canonical GitHub pull request URL such as `https://github.com/owner/repo/pull/123`; malformed or non-PR URLs return `400`. PR links can also be created automatically via the GitHub webhook integration.
333
337
 
334
338
  ## Project Status Updates
335
339
 
@@ -129,7 +129,7 @@ Recording a snapshot auto-updates the KPI's `current_value`.
129
129
  For portfolio-style initiatives (grouping projects):
130
130
  ```json
131
131
  {
132
- "name": "Q2 Platform Rewrite",
132
+ "title": "Q2 Platform Rewrite",
133
133
  "description": "Migrate all services to new architecture",
134
134
  "owner_id": "member-uuid",
135
135
  "start_date": "2026-04-01",
@@ -137,6 +137,8 @@ For portfolio-style initiatives (grouping projects):
137
137
  }
138
138
  ```
139
139
 
140
+ Use `title` for create/update requests; create also accepts legacy `name`. Atoll keeps the legacy `name` field in sync for compatibility. Create accepts `goalId`, `ownerId`, and `targetDate` aliases for `goal_id`, `owner_id`, and `target_date`.
141
+
140
142
  Add/remove projects with `{ "project_id": "uuid" }`.
141
143
 
142
144
  ## Automation Rule Fields
@@ -254,7 +256,7 @@ URL must be HTTPS. Response includes `secret` for HMAC signature verification.
254
256
 
255
257
  All endpoints return JSON. Successful: `200` or `201`. Errors: `{ "error": "message" }` with `400`, `401`, `402`, `403`, `404`, `409`, or `500`.
256
258
 
257
- List responses include `total`, `limit`, `offset` for pagination.
259
+ REST list responses use resource-specific keys by default. Main list endpoints support `?shape=envelope` or `?response_shape=cli` to return `{ resource, items, total, limit, offset, nextOffset, truncated, hint }`.
258
260
 
259
261
  ## Notes
260
262