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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user