Help us improve
Share bugs, ideas, or general feedback.
From lux-dev
Display a beads issue board in the Lux window with filterable table and detail panel. Use when the user asks to "show beads", "show the board", "show issues", "beads board", "beads UI", "display backlog", "show my work", or wants to visually browse project issues. Also triggered by "issue board", "task board", "kanban", "backlog view", or "bd ready in lux".
npx claudepluginhub punt-labs/claude-plugins --plugin luxHow this skill is triggered — by the user, by Claude, or both
Slash command
/lux-dev:beadsThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Display beads issues in a filterable list/detail table in the Lux window.
Creates p5.js generative art with seeded randomness, noise fields, and interactive parameter exploration. Use for algorithmic art, flow fields, or particle systems.
Share bugs, ideas, or general feedback.
Display beads issues in a filterable list/detail table in the Lux window.
Run bd list --status=open,in_progress --json via the Bash tool to get live issue data from DoltDB. If the user asks for all issues, run bd list --all --json instead. If the command fails or returns empty output, tell the user: "No beads data available. Check that bd is configured for this project." and stop.
Parse the JSON array output. Each object has fields: id, title, description, status, priority, issue_type, owner, created_at, updated_at. Use these defaults for missing fields:
title: "", status: "open", priority: 4, issue_type: "task"description, owner, created_at, updated_at: ""From the parsed issues, filter and sort:
status is "open" or "in_progress" (default). If the user asks for all issues, skip this filter.in_progress issues float to top, then by priority ascending (P1 first), then by updated_at descending (most recent first) within equal groups.Build three parallel arrays (same length, same order):
rows — main table rows, one per issue:
[id, title, status, "P{priority}", issue_type]
detail.rows — detail panel fields for each issue:
[id, status, "P{priority}", issue_type, owner_or_empty, created_at[:10], updated_at[:10]]
Truncate created_at and updated_at to the first 10 characters (date only, e.g. "2026-03-09").
detail.body — description text for each issue:
description or "No description."
Collect unique status and issue_type values for combo filter items.
Call the show_table MCP tool with:
scene_id: "beads-<project>" where <project> is the current directory name (e.g. "beads-lux", "beads-quarry"). This gives each project its own tab.
title: "Beads: <project>" (e.g. "Beads: lux")
frame_id: "beads-<project>" — isolates the board in its own frame so it doesn't replace other content.
frame_title: "Beads: <project>" — display title for the frame tab.
columns: ["ID", "Title", "Status", "P", "Type"]
rows: the main table rows from Step 2
filters:
[
{"type": "search", "column": [0, 1], "hint": "Filter by ID or title..."},
{"type": "combo", "column": 2, "items": ["All", "<status-1>", "<status-2>"], "label": "Status"},
{"type": "combo", "column": 4, "items": ["All", "<type-1>", "<type-2>"], "label": "Type"}
]
where the "items" arrays are "All" followed by the sorted unique status or issue_type values from the issues.
detail:
{
"fields": ["ID", "Status", "Priority", "Type", "Owner", "Created", "Updated"],
"rows": detail_rows,
"body": detail_bodies
}
After show_table returns a value starting with ack:, the board is live. If it returns timeout, tell the user the display server did not respond. Otherwise, tell the user:
If the user asks to refresh, or after running any bd command (close, update, etc.), re-run bd list --json via the Bash tool and call show_table again.