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