@atollhq/skill-claude 0.4.28 → 0.4.29

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atollhq/skill-claude",
3
- "version": "0.4.28",
3
+ "version": "0.4.29",
4
4
  "description": "Install the Atoll project management skill for Claude Code",
5
5
  "bin": {
6
6
  "skill-claude": "bin/install.mjs"
package/skill/SKILL.md CHANGED
@@ -38,11 +38,14 @@ Read only the references required for the current task:
38
38
  - Request and response fields, enums, and validation:
39
39
  [api-fields.md](references/api-fields.md)
40
40
 
41
- For automation rule V1 actions (including create issue), explicit project or
42
- organization scope, CI create-only rules, event conditions, validation, safe
41
+ For automation rule V1 actions (including create issue and send webhook), explicit project or
42
+ organization scope, CI create-or-webhook rules, event conditions, validation, safe
43
43
  disabling, repair, and example-only CI dry runs, read [Automation Rule Fields](references/api-fields.md#automation-rule-fields).
44
44
  Use `atoll automation` for rule management, previews, and run history; see
45
45
  [CLI operations](references/cli-operations.md#automation-rules).
46
+ REST rule lists accept `?project_id=<UUID>` for exact project rules or
47
+ `?project_id=none` for organization-wide rules only. Omission lists all rules
48
+ in the organization. See [list filter access and validation](references/api-endpoints.md#automation-rules).
46
49
  Rule creates require an explicit `project_id`: use a project UUID for project
47
50
  scope or `null` for organization scope. Partial updates preserve the saved
48
51
  scope when `project_id` is omitted; include it only when intentionally changing
@@ -719,6 +719,18 @@ receive projectless work. An inaccessible explicit `projectId` is concealed as
719
719
 
720
720
  ## Automation Rules
721
721
 
722
+ **List filter:** `GET /api/orgs/{id}/automation-rules` accepts optional
723
+ `project_id`. A project UUID returns only rules assigned to that exact project;
724
+ it does not include organization-wide rules. Use `project_id=none` for only
725
+ organization-wide rules (`project_id IS NULL`). Omit the parameter to preserve
726
+ the existing list of all rules in the organization. Empty or invalid values
727
+ return `400`. A project UUID requires both organization membership and caller
728
+ read access to that project; cross-organization, inaccessible, or missing
729
+ projects return `404`. Organization-wide and unfiltered requests retain existing
730
+ organization-member access. Results remain newest first and include disabled
731
+ or invalid rules with their validation diagnostics. This REST filter does not
732
+ add CLI flags or public MCP tool parameters.
733
+
722
734
  | Method | Endpoint | Description |
723
735
  |--------|----------|-------------|
724
736
  | GET | `/api/orgs/{id}/automation-rules` | List rules |
@@ -772,6 +784,7 @@ failed without executing its actions.
772
784
  |--------|----------|-------------|
773
785
  | GET | `/api/webhooks?orgId=...` | List redacted webhooks (owner/admin) |
774
786
  | POST | `/api/webhooks?orgId=...` | Create webhook (owner/admin) |
787
+ | PATCH | `/api/webhooks/{id}` | Update webhook metadata or private auth (owner/admin) |
775
788
  | DELETE | `/api/webhooks/{id}` | Delete webhook (owner/admin) |
776
789
  | GET | `/api/webhooks/{id}/deliveries` | List safe delivery metadata (owner/admin, last 50) |
777
790
  | POST | `/api/webhooks/{id}/redeliver/{deliveryId}` | Redeliver a past payload (owner/admin) |
@@ -499,6 +499,11 @@ clear it), `add_assignee` (add a member UUID without removing others), `unassign
499
499
  (omit `value`), `set_priority` (integer `0` through `3`), `add_label` and
500
500
  `remove_label` (label UUID), `post_comment` (non-empty text, at most 10,000
501
501
  characters), and legacy `close_issue` (omit `value`, targets the valid `done` key).
502
+ `send_webhook` accepts only `{ "type": "send_webhook", "webhook_id": "webhook-uuid" }`.
503
+ The destination must be enabled, same-org, and purpose `automation` or `both`.
504
+ Queued transport retries do not re-run the automation action. Activity exposes
505
+ `webhook_delivery_id` plus safe latest-attempt `webhook_delivery` state.
506
+ Manual redelivery uses a new header and payload delivery ID.
502
507
  Already satisfied assignments, priorities, statuses, and label relationships
503
508
  succeed without duplicate mutation events. Invalid references still fail.
504
509
  Unsupported action types or malformed values return `400` and are not saved.
@@ -517,7 +522,7 @@ oversized rendered content fail before creation. Current issue triggers do not
517
522
  provide those external fields; use fixed text for issue triggers. The
518
523
  `ci.run.completed` trigger supplies them from a signed GitHub completion event.
519
524
  CI rules require organization scope (`project_id: null`) and support only
520
- `create_issue`. CI rules accept only event conditions. Issue triggers reject event conditions.
525
+ `create_issue` and `send_webhook`. CI rules accept only event conditions. Issue triggers reject event conditions.
521
526
  Event conditions use `kind: "event"`, `eq` or `neq`, and fields
522
527
  `conclusion`, `repository`, `workflow`, `branch` (strings), `has_pr`, or
523
528
  `has_linked_issue` (booleans). Use conclusion `failure` and
@@ -564,6 +569,18 @@ to the organization. A request containing only `{ "enabled": false }` can
564
569
  disable an invalid rule without changing its definition; owner/admin access
565
570
  is still required. Enabling requires a valid definition.
566
571
 
572
+ **List filter:** `GET /api/orgs/{id}/automation-rules` accepts optional
573
+ `project_id`. A project UUID returns only rules assigned to that exact project;
574
+ it does not include organization-wide rules. Use `project_id=none` for only
575
+ organization-wide rules (`project_id IS NULL`). Omit the parameter to preserve
576
+ the existing list of all rules in the organization. Empty or invalid values
577
+ return `400`. A project UUID requires both organization membership and caller
578
+ read access to that project; cross-organization, inaccessible, or missing
579
+ projects return `404`. Organization-wide and unfiltered requests retain existing
580
+ organization-member access. Results remain newest first and include disabled
581
+ or invalid rules with their validation diagnostics. This REST filter does not
582
+ add CLI flags or public MCP tool parameters.
583
+
567
584
  GET/list rules can include `validation: { valid, issues: [{ path, code, message }] }`.
568
585
  Invalid saved rows remain readable. Runtime validation rejects the whole invalid
569
586
  rule before any action; valid actions are not salvaged from a malformed rule.
@@ -693,15 +710,23 @@ reject `position`.
693
710
 
694
711
  ## Webhook Fields
695
712
 
713
+ Bearer secrets must contain only printable ASCII characters. Switching from none to Bearer requires a token and returns HTTP 400 if it is missing.
714
+
715
+ `PATCH /api/webhooks/{id}` preserves omitted fields. A blank or omitted Bearer
716
+ secret preserves the token; `auth.type: none` clears it. URL/auth changes create
717
+ a new private destination version; pending deliveries retain their pinned version.
718
+
696
719
  ```json
697
720
  {
698
721
  "url": "https://example.com/webhook",
699
722
  "events": ["issue.created", "issue.updated"],
700
- "enabled": true
723
+ "enabled": true,
724
+ "purpose": "subscription",
725
+ "auth": { "type": "none" }
701
726
  }
702
727
  ```
703
728
 
704
- URL must be an HTTPS DNS hostname. IP literals, `localhost`, and `.local` hosts are rejected at creation; delivery refuses non-public DNS results and does not follow redirects. The create response includes a `secret` for HMAC signature verification. Store it immediately; it is shown only once.
729
+ URL must be an HTTPS DNS hostname. IP literals, `localhost`, and `.local` hosts are rejected at creation; delivery refuses non-public DNS results and does not follow redirects. The create response includes a `secret` for HMAC signature verification. Store it immediately; it is shown only once. Use purpose `automation` or `both` with `auth: { "type": "bearer", "secret": "..." }` for automation destinations; responses expose only `auth.type` and `auth.configured`.
705
730
 
706
731
  List responses include `destination_display` and a deprecated `url` compatibility field containing only the origin plus `/…`. Payload schema version `2` is allowlisted. Delivery requests include `X-Atoll-Signature`, `X-Atoll-Signature-Version`, versioned `X-Atoll-Signatures`, and `X-Atoll-Delivery-Id`. Delivery history includes `delivery_id`, `status`, `status_code`, `error_code`, `delivered_at`, and `next_retry_at`, never payloads, receiver response bodies, or raw errors.
707
732
 
@@ -208,7 +208,7 @@ List uses the selected organization and applies a project filter only with
208
208
  explicit `--project`; it does not inherit the default project.
209
209
 
210
210
  Rule files use the canonical Automation Rule Fields contract. CI rules require
211
- `project_id: null`, only `create_issue` actions, and event conditions. Use
211
+ `project_id: null`, only `create_issue` or `send_webhook` actions, and event conditions. Use
212
212
  conclusion `failure` and `has_linked_issue: false` for unlinked CI failures.
213
213
  The action chooses its target project/status and accepts approved
214
214
  `{{repository}}`, `{{workflow}}`, `{{conclusion}}`, `{{run_url}}` substitutions.