Skip to content

Add the prowl-workflow bundled agent skill - #754

Merged
onevcat merged 2 commits into
mainfrom
feat/prowl-workflow-skill
Sep 3, 2026
Merged

Add the prowl-workflow bundled agent skill#754
onevcat merged 2 commits into
mainfrom
feat/prowl-workflow-skill

Conversation

@onevcat

@onevcat onevcat commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Front-runs the authoring-skill half of 063 D1 (release plan, slice D1).

What this is

Workflows can be started from the CLI (R2a) and the GUI (C2/#752), but creating one still requires reading the DSL spec inside this repo — nothing teaches an arbitrary coding agent how to write, run, or take part in a workflow. This PR adds the bundled prowl-workflow agent skill: once linked (prowl skills install prowl-workflow), a user can tell their own agent "write me a workflow that…" or "use Prowl's X workflow for this" and the agent knows the contract.

Structured per agent-skills conventions (lean entry file, progressive disclosure):

  • skills/prowl-workflow/SKILL.md — trigger description, task routing, the run commands, and the participant protocol (the time-critical part: what to do when a [Prowl] … prowl workflow done line appears in your pane).
  • references/authoring.md — the full DSL: a validated worked example, roles/verbs/expect/template tables, the validator rules that aren't guessable (steps as a sibling of repeat:, seed-before-loop, never spell prowl workflow done, …), and working patterns (poor-man's if, fork/ordered join with the idle-gate caveat, broadcast outputs).
  • references/runbook.md — run lifecycle (admission, binding resolution, watchdog/attention), the run-directory layout (log.md, ordinal ledger, atomic latest views), token travel, and the error table.

Patterns and pitfalls are distilled from the recorded boundary experiments (docs-ai/063-agent-workflows/012-v1-boundary-observations.md).

Mechanics

  • No code changes: ProwlSkills scans Resources/skills/ at runtime and make embed-skills (already in build-app/archive/test) stages the directory, so the skill registers automatically in Settings › Agent Skills and prowl skills list|install.
  • Named prowl-workflow (singular) to match the command surface prowl workflow … and the prowl-cli convention; the D1 plan's prowl-workflows name should be treated as superseded when the slice record is written.
  • Product hook for the rest of D1: the bundled directory is addressable via prowl skills path prowl-workflow, so a future Settings "Create Workflow… / Ask agent" button can hand the skill to any agent the same way the help button's "Ask agent about Prowl" hands over the docs folder.
  • Remaining D1 scope is untouched: Settings › Workflows page, docs/components/workflows.md, and the CLI reachability status.

Verification

  • PROWL_SKILLS_DIR=$PWD/skills prowl skills list parses both bundled skills (frontmatter contract).
  • The worked example in references/authoring.md extracted and passed prowl workflow validate.
  • make build-app green with the skill embedded; docs/components/settings.md bundled-skill enumeration updated.

https://claude.ai/code/session_01M5cFnjhGxu2wxhB7yU48Yt

Review pass (2026-09-04)

Driven end to end against a main build with two fresh agents that saw only the skill and the CLI (no repo sources or docs):

  • Running an existing workflow (demo.launch-then-message): completed in 13 s; the launched helper loaded the skill from the typed [Prowl] … line and delivered on the first try.
  • Authoring from scratch (review.swift-count, two launched agents, verdict loop, notify, close): validated on the first attempt, run completed in 45 s, both close: steps closed their panes.
  • Validator probes for the documented pitfalls (steps nested inside repeat, loop reference without a seed, spelled completion command, on_timeout: skip with a consumer) produce exactly the diagnostics the skill describes.

The second commit closes the gaps that pass exposed — above all that a loop is only left through a satisfied until (so the "poor-man's if" is not an if, and a bounded loop needs a give-up verdict to reach notify/close) — plus the inputs section, agent tokens, timeout grammar, a status --json field guide, the full run-directory layout, and the missing error codes. docs/components/cli.md now names the skill, and the 063 plan/release plan record the prowl-workflow name.

https://claude.ai/code/session_01XTYsDAXaUVUAo3Q329MeZS

Teaches any linked agent to author, validate, run, and participate in
Agent Workflows. Lean SKILL.md carries task routing, the run commands,
and the participant protocol; the full DSL reference and the run
runbook sit under references/ for on-demand loading. Registered
automatically by the ProwlSkills bundle scan; settings docs updated.

Claude-Session: https://claude.ai/code/session_01M5cFnjhGxu2wxhB7yU48Yt
Two fresh agents that saw only the skill and the CLI drove it end to end
(one ran a demo workflow, one authored and ran a two-agent workflow, and a
launched participant loaded the skill from the typed line). Everything
worked, but the pass exposed places where the skill under-specified V1:

- repeat semantics: a loop is only left through a satisfied `until`;
  reaching `max` unsatisfied, or a loop without `until`, ends the run as
  `max_rounds_reached` and skips every later step. The "poor-man's if"
  pattern now carries that caveat, and a gave-up-verdict pattern shows
  how to bound a loop and still reach notify/close.
- authoring reference: inputs section (integer/string/enum, required
  inputs), agent tokens for `agents:`, optional `kind`, multi-line
  `prompt`, `timeout` grammar, `on_timeout` needing `timeout`,
  `loop.count` after a skipped loop, enum input and `repeat` title in the
  worked example (re-validated).
- runbook: "Watching a run" field guide for `status --json`, run states
  including `needs_attention` and `interrupted`, invocation-ordinal
  wording that matches log.md and run.json, `skills/` in the layout,
  panes staying open after completion, RUN_NOT_FOUND / DISPATCH_PENDING /
  TARGET_NOT_FOUND / AGENT_NOT_FOUND in the error table.
- SKILL.md: how to find the worktree name for `[source]`, what an omitted
  source means inside and outside a pane, how to poll a run.
- docs/components/cli.md names the new bundled skill; the 063 plan and
  release plan record the `prowl-workflow` name and the early D1 slice.

Claude-Session: https://claude.ai/code/session_01XTYsDAXaUVUAo3Q329MeZS
@onevcat
onevcat merged commit b676778 into main Sep 3, 2026
1 check passed
@onevcat
onevcat deleted the feat/prowl-workflow-skill branch September 3, 2026 16:21
shanegao pushed a commit to shanegao/Prowl that referenced this pull request Sep 6, 2026
The release plan's Status table still read "C2 starts next" after onevcat#752 and
onevcat#754 merged. Add the R2b PR ledger, the 000-plan status/PR lines, and the
063.013 slice record that scopes the rest of D1: Settings › Workflows, the
workflows manual page, and the CLI reachability status deferred from C0.

Claude-Session: https://claude.ai/code/session_012iYf2VkE26G6k8oqur1fyX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant