You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: skills/flashduty/SKILL.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -37,7 +37,7 @@ Append `--output-format toon` to read commands: it drops the per-row repeated ke
37
37
38
38
The hot path: **read the domain card** (index below) for the exact verb + flags. Command groups are hyphenated (`status-page`, `alert-event`), not concatenated (`statuspage`) — guessing the wrong form costs a failed call. For a command outside the cards, derive it from its API path: **group = first path segment, verb = the rest joined by `-`** (`POST /status-page/change/create` → `fduty status-page change-create`), then confirm with `fduty <group> <verb> --help`. Pass nested-object / array fields as JSON via `--data '{...}'`; typed scalar flags override matching `--data` keys.
39
39
40
-
**Positional arguments.** A card heading like `### change-create <page-id>` means that id is **positional** — pass it as the first bare argument (`change-create 5759… --type incident`), not as `--page-id`. A heading with no `<…>` takes all inputs as flags. Cards mark each positional with a `(positional, required)` row; trust the heading over your instinct to use a flag.
40
+
**Positional arguments.** A card heading like `### change-create <page-id>` means that id can always be passed **positionally**, as the first bare argument (`change-create 5759… --type incident`). On generated/raw-passthrough commands the matching `--<field>` flag (e.g. `--page-id`) is an equally valid alternative — if both are given, the flag wins. A few curated commands (`incident detail`, `automation get`) are positional-only, with no matching flag at all. A heading with no `<…>` takes all inputs as flags. `--help` settles any doubt.
Copy file name to clipboardExpand all lines: skills/flashduty/reference/automation.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,7 @@ Prereq: `SKILL.md` read. Automations create AI SRE sessions on a schedule or thr
18
18
| list run history |`runs <rule-id>`|
19
19
| list preset templates |`templates`|
20
20
| test/fire an HTTP POST trigger |`fire <trigger-id>`|
21
+
| run a rule immediately, outside its schedule |`safari automation-rule-run <rule-id>` (the friendly group has no run verb; `fire` is not a substitute — it needs a configured HTTP POST trigger + token) |
Copy file name to clipboardExpand all lines: skills/flashduty/reference/monit-agent.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -43,6 +43,7 @@ Run up to 8 monit-agent tools concurrently on a target
43
43
44
44
-**`catalog` → `invoke` is the order.**`catalog` returns each tool's `name` (+ `input_schema` for its params); `invoke` runs them. Tool names are target-specific — take them verbatim from the catalog, do not invent.
45
45
-**`invoke` carries the tool list in `--data`**: `{"tools":[{"tool":"<name>","params":{…}}, … up to 8]}`. `params` defaults to `{}`. `--target-locator` (required) and `--target-kind` override matching `--data` keys.
46
+
-**Read results at `results[i].summary` and `results[i].data`** — both sit directly on the result; webapi unwraps the agent envelope, so there is no `data.data`. Empty fields are omitted rather than sent as `null`: no `error` key on success, no `data`/`summary` on failure, and `truncated` only when the result really was truncated. Branch on key presence, not on `null`.
@@ -61,10 +61,13 @@ Raw datasource passthrough (returns values/rows as the datasource itself would)
61
61
-**A 5xx or HTML-body error is TRANSIENT** — retry the same call ≤3×. Do NOT fall back to SSH, `monit-agent`, or incident search on a transient datasource error.
62
62
-`rows` has **no time flags** — putting `--time-start` on `rows` is wrong; embed the range in `--expr`.
63
63
- Empty results = the query genuinely matched nothing in that window — report it, don't widen blindly.
64
+
-**`diagnose` rejects windows wider than 6 hours outright.**`--time-start`/`--time-end` span is capped at 6h server-side; the default window is the last 15 minutes (`--time-start 15m`, `--time-end now`). Widen within the cap, don't retry past it.
65
+
-**`--ds-type` on `diagnose` only accepts `prometheus`, `victorialogs`, `loki`, `mysql`.**`monit datasource-list` can return other types (e.g. `oracle`, `postgres`, `clickhouse`, `elasticsearch`, `sls`) — those are not supported here.
66
+
-**Tunables and their caps**: `--max-logs` (default 10000, cap 50000), `--max-patterns` (default 20, cap 50), `--timeout-seconds` (default 25, cap 30).
64
67
65
68
## Worked example — log-pattern evidence in the last hour
Copy file name to clipboardExpand all lines: skills/flashduty/reference/monit.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,6 +19,7 @@ Prereq: `SKILL.md` read. **SKILL.md + this card = full competence on monitors
19
19
| count rules per top-level folder (subtree totals) |`rule-counter-status`|
20
20
| full rule config |`rule-info`|
21
21
| create / update a rule |`rule-create` / `rule-update`|
22
+
| preview a query before saving it into a rule |`preview-sync`|
22
23
| delete one or many rules |`rule-delete` / `rule-delete-batch`|
23
24
| move rules to another folder |`rule-move`|
24
25
| toggle enabled/channels in bulk |`rule-update-fields`|
@@ -387,7 +388,7 @@ Invoke target tools
387
388
-**`tools-catalog` / `tools-invoke``--target-locator` is required and not guessable.** If the user has not provided a host or IP, ask — do not invent one. Tool names in `invoke` must come from the `tools-catalog` response — never hallucinate them.
388
389
-**`rule-delete-batch` and `datasource-delete` are irreversible.** Confirm IDs with `rule-list-basic` / `datasource-info` first.
389
390
-**`rule-audit-detail --id` takes the audit record ID**, not the rule ID. Get audit record IDs from `rule-audits --id <rule-id>` first; passing the rule ID returns HTTP 400.
390
-
-**`rule-list-basic`needs a REAL `--folder-id` and returns only that folder's *direct* rules.**`--folder-id 0` / omitting it 400s "Folder not found" — the generated `--folder-id` help below ("0 to list all accessible rules") is a known SDK/OpenAPI bug; ignore it. Enumerate by walking the tree (`rule-counter-status` → `rule-status` → `rule-list-basic`); past the server cap the counters 400 "too many rules" and full enumeration isn't possible from the CLI — report that limit, never substitute fired alerts (see the enumerate hot flow).
391
+
-**`rule-list-basic`and `rule-status` both need a REAL `--folder-id`; neither accepts `0`.**`--folder-id 0` / omitting it 400s "Folder not found" on either verb — the generated `--folder-id` help text below ("0 to list all accessible rules" on `rule-list-basic`, "0 for all" on `rule-status`) is a known SDK/OpenAPI bug on both; ignore it. `rule-list-basic` returns only that folder's *direct* rules; `rule-status` returns trigger counts for that folder and its descendants. Enumerate by walking the tree (`rule-counter-status` → `rule-status` → `rule-list-basic`); past the server cap the counters 400 "too many rules" and full enumeration isn't possible from the CLI — report that limit, never substitute fired alerts (see the enumerate hot flow).
391
392
392
393
## Worked example — inspect a firing rule then batch-disable it
0 commit comments