feat(skills): pql-board interactive panel — one-click ticket pick-up via sendPrompt

Second surface for the skill: an in-chat widget panel (WIP + unblocked
ready work, capped ~10 rows, native pql projections) with Pick up ↗ /
Detail ↗ per row and Refresh board / Next batch footer actions. Defines
the pick-up prompt contract ('pick up the following ticket: T-NNN — title'
→ single-ticket batch activation per the /whats-next step-3 flow). Records
the verified platform boundary: widget read-back is unsupported — panels
talk to Claude via sendPrompt only; the artifact stays reference-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 22:31:50 +02:00
co-authored by Claude Fable 5
parent 307a77ce84
commit 486592ffa5
+43 -7
View File
@@ -1,10 +1,12 @@
---
name: pql-board
description: >
Refresh (or first-create) the pql ticket-board Artifact — the clide-style
two-column board snapshot hosted at a stable claude.ai URL. Use when the user
says "refresh the board", "update the pql board", "/pql-board", or asks to see
the ticket board in the desktop app.
Two board surfaces for pql in the Claude desktop app: (1) refresh (or
first-create) the ticket-board Artifact — the clide-style two-column snapshot
at a stable claude.ai URL; (2) render an interactive in-chat board panel with
one-click ticket pick-up (sendPrompt). Use when the user says "refresh the
board", "update the pql board", "/pql-board", "board panel", "pick-up panel",
or asks to see/act on the ticket board in the desktop app.
---
# pql Board Artifact
@@ -54,6 +56,40 @@ so the page is a **snapshot** — this skill regenerates and redeploys it.
editing. Dep edges cover non-terminal tickets only — if pql grows
`ticket list --with-blockers`, simplify the script (candidate upstream FR
per the pql-gaps-go-upstream rule).
- Companion interaction surface: the visualize widget (`show_widget`) supports
`sendPrompt()` — for in-chat quick actions (refresh button, WIP strip); see
the session pattern, not this skill.
## Interactive panel (in-chat, one-click pick-up)
The artifact is reference-only (sandboxed: clipboard-out is its ceiling).
Real one-click interactivity lives in the in-chat widget — render it when the
user asks for "the panel", "pick-up panel", or wants to act on tickets rather
than read them.
1. Pull live data (small, native projections — never embed the whole store):
```bash
pql ticket list --status in_progress --fields id,type,priority,title
pql ticket list --under T-750 --unblocked --leaf --fields id,type,priority,title
```
Panel contents: WIP + the unblocked ready work of the active phase (cap at
~10 rows; if more, take highest priority first and say so under the panel).
2. Render with `mcp__visualize__show_widget` (load its `read_me` first,
`interactive` module). Panel shape — compact bordered rows, CDS tokens:
- Each row: mono ticket id (link to the artifact deep-link `#T-NNN`),
title, status/priority pill, and two buttons:
- **Pick up ↗** → `sendPrompt('pick up the following ticket: T-NNN — <title>')`
- **Detail ↗** → `sendPrompt('show me T-NNN in detail')`
- Footer buttons: **Refresh board ↗** → `sendPrompt('/pql-board')`,
**Next batch ↗** → `sendPrompt('/whats-next')`.
- Widget rules: no emoji, sentence case, `` suffix on sendPrompt buttons.
3. **On receiving a "pick up the following ticket:" prompt** (from the panel
or typed): treat it as single-ticket batch activation — the /whats-next
Step-3 flow scoped to one ticket: show the ticket with `--with-context`,
set it `in_progress`, create the topic branch/worktree if it is code work,
and start the work (or spawn the implementing agent per standing practice).
Ticket mutations must land in a commit per the changelog persistence rule.
Widget read-back does NOT work (verified 2026-07-24: `read_widget_context`
returns empty for these widgets before and after interaction) — the panel
talks to Claude via `sendPrompt` only; never design around querying it.