From 2e48387e78912b7328452af417c83233bf867c63 Mon Sep 17 00:00:00 2001 From: Antony Pegg Date: Wed, 21 Oct 2026 16:37:06 -0400 Subject: [PATCH 1/3] fix: treat a named request as consent to force A request that names a destructive action and its target is consent to pass --force. The consent stops at that action: any further destructive step it turns out to need, such as deleting branches, still needs the user's say-so. The old rule held back --force for unattended runs only, so an agent asked to resize a database stopped at the CLI's prompt and never learned that branches blocked it. --- plugins/pgedge/skills/pgedge-byoc/SKILL.md | 8 +++++--- plugins/pgedge/skills/pgedge-controlplane/SKILL.md | 4 +++- plugins/pgedge/skills/pgedge-managed/SKILL.md | 6 ++++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/plugins/pgedge/skills/pgedge-byoc/SKILL.md b/plugins/pgedge/skills/pgedge-byoc/SKILL.md index 7d129bd..9ed3855 100644 --- a/plugins/pgedge/skills/pgedge-byoc/SKILL.md +++ b/plugins/pgedge/skills/pgedge-byoc/SKILL.md @@ -108,9 +108,11 @@ Each rule is stated in full on the page named beside it. - **Run writes one at a time.** A database accepts one change at a time, so deploy services one by one, each with `--wait`. See the index's "Resource status". -- **Pass `--force` only when the user asked for an unattended run.** - Eleven verbs prompt, four of them not spelled `delete`. See the - index's "Destructive operations". +- **A request that names the action and its target is consent: pass + `--force`.** That consent covers the named action only, so ask + before any other destructive step it turns out to need. Eleven verbs + prompt, four of them not spelled `delete`. See the index's + "Destructive operations". - **An empty list proves nothing about entitlement.** Some verbs are plan-gated and some answer an empty array on any plan. See the index's "Plan entitlement". diff --git a/plugins/pgedge/skills/pgedge-controlplane/SKILL.md b/plugins/pgedge/skills/pgedge-controlplane/SKILL.md index 873da85..201ea11 100644 --- a/plugins/pgedge/skills/pgedge-controlplane/SKILL.md +++ b/plugins/pgedge/skills/pgedge-controlplane/SKILL.md @@ -106,7 +106,9 @@ Each rule is stated in full on the page named beside it. - **`--force` only skips the confirmation prompt.** A server-side waiver is its own flag, `--force-unmodifiable`, or `--force-lost` on `host remove`. See `database`, `database instance`, `database node` - and `host`. + and `host`. A request that names the action and its target is + consent for `--force`, and for that action only: ask before a + waiver flag or any other destructive step it turns out to need. - **Start every database from `database init`.** When it can reach a systemd Control Plane, it fills in the distinct ports each node needs. The CLI refuses a spec that still carries a `CHANGE-ME` diff --git a/plugins/pgedge/skills/pgedge-managed/SKILL.md b/plugins/pgedge/skills/pgedge-managed/SKILL.md index 418832a..e2828e4 100644 --- a/plugins/pgedge/skills/pgedge-managed/SKILL.md +++ b/plugins/pgedge/skills/pgedge-managed/SKILL.md @@ -116,8 +116,10 @@ Each rule is stated in full on the page named beside it. list` before you choose a value. - **`--force` only skips the confirmation prompt.** It never deletes branches: `--delete-branches` does that, and branch data cannot be - recovered. Pass `--force` only when the user asked for an unattended - run. + recovered. A request that names the action and its target is + consent, so pass `--force`. That consent covers the named action + only: ask before any other destructive step it turns out to need, + such as deleting branches. - **Keep credentials out of the transcript.** Pass `--no-password` to `database connection-string` whenever the output is shown to a person. Otherwise write the output to a file or a variable, never to From e93bf30f63c0de7b771559f2d38f5eb679d4e1cc Mon Sep 17 00:00:00 2001 From: Antony Pegg Date: Wed, 21 Oct 2026 19:01:18 -0400 Subject: [PATCH 2/3] fix: load the managed skill for a bare database name The managed skill's description triggered only on product words, so a request such as "back up " or "delete " never loaded it. Agents then searched the filesystem for the name instead of asking the API. The description now covers a request that names a database only by its name. --- plugins/pgedge/skills/pgedge-managed/SKILL.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/pgedge/skills/pgedge-managed/SKILL.md b/plugins/pgedge/skills/pgedge-managed/SKILL.md index e2828e4..262b801 100644 --- a/plugins/pgedge/skills/pgedge-managed/SKILL.md +++ b/plugins/pgedge/skills/pgedge-managed/SKILL.md @@ -2,7 +2,9 @@ name: pgedge-managed description: "Use this skill when the user wants to manage pgEdge Managed databases, single-master Postgres that pgEdge hosts and - operates, through the pgedge CLI. Triggers on: pgEdge Managed, pgedge + operates, through the pgedge CLI, including a request that names a + database only by its name (delete, resize, back up, branch or + connect to ). Triggers on: pgEdge Managed, pgedge starfleet managed, managed database, creating or resizing a hosted pgEdge database, connecting to one, a refused connection, IP allowlist, allowing an address, deletion protection, managed regions From f1017487bb3dac453229f48fd27cd6844aebe0af Mon Sep 17 00:00:00 2001 From: Antony Pegg Date: Thu, 22 Oct 2026 09:07:55 -0400 Subject: [PATCH 3/3] revert: drop the bare-name managed skill trigger A benchmark rerun showed no gain: on prompts that name only the database, the skill loaded in 5 of 15 runs with the change against 7 of 15 without it. Naming the product is what loads it, so the extra 115 bytes come back out. --- plugins/pgedge/skills/pgedge-managed/SKILL.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/pgedge/skills/pgedge-managed/SKILL.md b/plugins/pgedge/skills/pgedge-managed/SKILL.md index 262b801..e2828e4 100644 --- a/plugins/pgedge/skills/pgedge-managed/SKILL.md +++ b/plugins/pgedge/skills/pgedge-managed/SKILL.md @@ -2,9 +2,7 @@ name: pgedge-managed description: "Use this skill when the user wants to manage pgEdge Managed databases, single-master Postgres that pgEdge hosts and - operates, through the pgedge CLI, including a request that names a - database only by its name (delete, resize, back up, branch or - connect to ). Triggers on: pgEdge Managed, pgedge + operates, through the pgedge CLI. Triggers on: pgEdge Managed, pgedge starfleet managed, managed database, creating or resizing a hosted pgEdge database, connecting to one, a refused connection, IP allowlist, allowing an address, deletion protection, managed regions