feat(skills): pql-board — clide-style ticket board as a stable claude.ai Artifact

tooling/pql-board-html: self-contained interactive board snapshot from
pql-native JSON (ticket list --full + batched --with-blockers for non-terminal
tickets + plan status) — status-grouped rail with filter/type chips, ticket
dossier with status pills, dep/children chips, deep links, keyboard nav;
clide's visual identity (amber on warm near-black, mono data type). The
/pql-board skill regenerates and redeploys to the canonical artifact URL so
the user's open tab survives refreshes across sessions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-24 12:51:18 +02:00
co-authored by Claude Fable 5
parent f44f9a2067
commit bdd1b319bc
2 changed files with 406 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
---
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.
---
# pql Board Artifact
The board is a self-contained interactive HTML snapshot of the pql ticket store
(status-grouped rail, ticket dossier with dependencies/children, filter,
deep-links), deployed as a claude.ai Artifact. Artifacts are network-sandboxed,
so the page is a **snapshot** — this skill regenerates and redeploys it.
**Canonical URL (redeploy target — keep stable so the user's open tab survives):**
https://claude.ai/code/artifact/0064e59d-84a9-4a31-a830-f7d677df9d92
## Workflow
1. Generate the fragment (from the repo root; pql must resolve to this vault —
run from the MAIN checkout, not a worktree):
```bash
tooling/pql-board-html <scratchpad>/pql-board.html
```
The script pulls `pql ticket list --full`, batch-fetches blocker edges for
non-terminal tickets, and `pql plan status` for the header. Output is an
Artifact-ready fragment (no doctype/html/head/body).
2. Deploy with the **Artifact tool**, always passing the canonical URL so the
existing artifact updates in place (a fresh session without `url` would mint
a new address and orphan the user's tab):
- `file_path`: the generated file
- `url`: the canonical URL above
- `favicon`: `🗂️` (keep stable — the user finds the tab by it)
- `label`: short, e.g. `board-YYYY-MM-DD`
3. Reply with one line: ticket/edge counts from the generator's stdout + the
URL. The user reloads their tab.
## Notes
- If the Artifact call 409s (another session touched it), reconcile then retry
with `force` only if intentionally replacing.
- If the canonical artifact was deleted and a new URL gets minted, **update the
URL in this skill file** in the same turn and commit it.
- The generator is `tooling/pql-board-html` (python, pql-native JSON only).
Known scope limits vs clide: no decisions view, no kanban columns, no live
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.