@atollhq/skill-codex 0.4.27 → 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
package/skill/SKILL.md
CHANGED
|
@@ -38,12 +38,20 @@ 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),
|
|
42
|
-
|
|
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
|
+
disabling, repair, and example-only CI dry runs, read [Automation Rule Fields](references/api-fields.md#automation-rule-fields).
|
|
43
44
|
Use `atoll automation` for rule management, previews, and run history; see
|
|
44
45
|
[CLI operations](references/cli-operations.md#automation-rules).
|
|
45
|
-
|
|
46
|
-
|
|
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).
|
|
49
|
+
Rule creates require an explicit `project_id`: use a project UUID for project
|
|
50
|
+
scope or `null` for organization scope. Partial updates preserve the saved
|
|
51
|
+
scope when `project_id` is omitted; include it only when intentionally changing
|
|
52
|
+
scope. An invalid rule executes no actions. Repair an invalid rule with
|
|
53
|
+
separate `disable`, `update` while it is disabled, `test`, and `enable`
|
|
54
|
+
operations. Enable only after the latest saved revision passes the dry run.
|
|
47
55
|
|
|
48
56
|
Do not load every reference by default. Start with this entrypoint and load a
|
|
49
57
|
topic reference only when the requested operation needs it.
|
|
@@ -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 |
|
|
@@ -730,7 +742,15 @@ receive projectless work. An inaccessible explicit `projectId` is concealed as
|
|
|
730
742
|
| POST | `/api/orgs/{id}/automation-rules/{ruleId}/test` | Dry-run test |
|
|
731
743
|
|
|
732
744
|
V1 definitions validate on create, merged partial updates, dry runs, and runtime.
|
|
733
|
-
|
|
745
|
+
On create, `project_id` must be explicit: use a project UUID for project scope
|
|
746
|
+
or `null` for organization scope. Partial updates preserve the saved scope
|
|
747
|
+
when `project_id` is omitted; include it only when intentionally changing
|
|
748
|
+
scope. A concurrent edit during validation returns `409`; reload before
|
|
749
|
+
retrying. An enabled rule must be
|
|
750
|
+
disabled with a separate exact `{ "enabled": false }` update before changing
|
|
751
|
+
scope or repairing an invalid definition. A disabled invalid rule can be
|
|
752
|
+
repaired while remaining disabled; run `test` on that saved revision before a
|
|
753
|
+
separate `enable` update.
|
|
734
754
|
GET/list preserve invalid rows with optional `validation: { valid, issues }`
|
|
735
755
|
(`issues` contain `path`, `code`, and `message`). Owner/admin callers can disable
|
|
736
756
|
an invalid rule with only `{ "enabled": false }`. Change-condition dry runs
|
|
@@ -764,6 +784,7 @@ failed without executing its actions.
|
|
|
764
784
|
|--------|----------|-------------|
|
|
765
785
|
| GET | `/api/webhooks?orgId=...` | List redacted webhooks (owner/admin) |
|
|
766
786
|
| POST | `/api/webhooks?orgId=...` | Create webhook (owner/admin) |
|
|
787
|
+
| PATCH | `/api/webhooks/{id}` | Update webhook metadata or private auth (owner/admin) |
|
|
767
788
|
| DELETE | `/api/webhooks/{id}` | Delete webhook (owner/admin) |
|
|
768
789
|
| GET | `/api/webhooks/{id}/deliveries` | List safe delivery metadata (owner/admin, last 50) |
|
|
769
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
|
|
@@ -553,12 +558,29 @@ Create and partial `PUT` requests reject unknown keys, unsupported versions,
|
|
|
553
558
|
malformed conditions/actions, and invalid references with `400` and
|
|
554
559
|
`issues: [{ path, code, message }]`. A partial update is merged with the stored
|
|
555
560
|
definition and the complete result is validated. If another edit changes the rule
|
|
556
|
-
during validation, `PUT` returns `409`; reload the rule before retrying.
|
|
561
|
+
during validation, `PUT` returns `409`; reload the rule before retrying. An enabled
|
|
562
|
+
rule must be disabled by a separate exact `{ "enabled": false }` request before
|
|
563
|
+
changing `project_id`; combining disable with a scope change is rejected. An
|
|
564
|
+
enabled invalid rule must also be disabled separately before repair. A disabled
|
|
565
|
+
invalid rule accepts a valid repair only while remaining disabled; repair and
|
|
566
|
+
enable must be separate. Project-scoped status values
|
|
557
567
|
must exist in that workflow; project, member, and label references must belong
|
|
558
568
|
to the organization. A request containing only `{ "enabled": false }` can
|
|
559
569
|
disable an invalid rule without changing its definition; owner/admin access
|
|
560
570
|
is still required. Enabling requires a valid definition.
|
|
561
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
|
+
|
|
562
584
|
GET/list rules can include `validation: { valid, issues: [{ path, code, message }] }`.
|
|
563
585
|
Invalid saved rows remain readable. Runtime validation rejects the whole invalid
|
|
564
586
|
rule before any action; valid actions are not salvaged from a malformed rule.
|
|
@@ -688,15 +710,23 @@ reject `position`.
|
|
|
688
710
|
|
|
689
711
|
## Webhook Fields
|
|
690
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
|
+
|
|
691
719
|
```json
|
|
692
720
|
{
|
|
693
721
|
"url": "https://example.com/webhook",
|
|
694
722
|
"events": ["issue.created", "issue.updated"],
|
|
695
|
-
"enabled": true
|
|
723
|
+
"enabled": true,
|
|
724
|
+
"purpose": "subscription",
|
|
725
|
+
"auth": { "type": "none" }
|
|
696
726
|
}
|
|
697
727
|
```
|
|
698
728
|
|
|
699
|
-
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`.
|
|
700
730
|
|
|
701
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.
|
|
702
732
|
|
|
@@ -201,16 +201,21 @@ Use `atoll automation list`, `get <rule-uuid>`, `create --file rule.json`,
|
|
|
201
201
|
`runs <rule-uuid> --limit 20`, `enable`, `disable`, and `delete --force`.
|
|
202
202
|
Use `delete <rule-uuid> --dry-run` to preview deletion. Use `--json`
|
|
203
203
|
for machine-readable results and `--file -` for standard input. Create defaults
|
|
204
|
-
to disabled when `enabled` is omitted
|
|
204
|
+
to disabled when `enabled` is omitted, but the JSON must include an explicit
|
|
205
|
+
`project_id` UUID or `null` for Organization-wide scope; update preserves omitted
|
|
206
|
+
fields.
|
|
205
207
|
List uses the selected organization and applies a project filter only with
|
|
206
208
|
explicit `--project`; it does not inherit the default project.
|
|
207
209
|
|
|
208
210
|
Rule files use the canonical Automation Rule Fields contract. CI rules require
|
|
209
|
-
`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
|
|
210
212
|
conclusion `failure` and `has_linked_issue: false` for unlinked CI failures.
|
|
211
213
|
The action chooses its target project/status and accepts approved
|
|
212
214
|
`{{repository}}`, `{{workflow}}`, `{{conclusion}}`, `{{run_url}}` substitutions.
|
|
213
215
|
CI `test` sends `{}` by default, uses marked fixed examples, rejects overrides,
|
|
214
216
|
and executes no actions. Inspect the preview before explicitly enabling.
|
|
215
217
|
Rule writes, tests, and run history require owner/admin access; CLI does not bypass it.
|
|
216
|
-
`runs` preserves created issue IDs and interrupted-action evidence.
|
|
218
|
+
`runs` preserves created issue IDs and interrupted-action evidence. For an invalid
|
|
219
|
+
rule, use separate `disable`, `update` while disabled, `test`, and `enable`
|
|
220
|
+
operations. Human `get` output includes invalid state and validation paths;
|
|
221
|
+
`--json` preserves the API response.
|