From 486592ffa54075e6bdbba79fa2435a2db4dc4a4f Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Fri, 24 Jul 2026 22:31:50 +0200 Subject: [PATCH] =?UTF-8?q?feat(skills):=20pql-board=20interactive=20panel?= =?UTF-8?q?=20=E2=80=94=20one-click=20ticket=20pick-up=20via=20sendPrompt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .claude/skills/pql-board/SKILL.md | 50 ++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/.claude/skills/pql-board/SKILL.md b/.claude/skills/pql-board/SKILL.md index ae73d33ba..bf5aff017 100644 --- a/.claude/skills/pql-board/SKILL.md +++ b/.claude/skills/pql-board/SKILL.md @@ -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 — ')` + - **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.