"Visual UI exploration: find feature gaps, create tickets, fix stale docs about the featureset. Sources of truth are CLAUDE.md (operational) and docs/prd/01-features-catalog.md (catalog)."
Install
npx skillscat add p-wegner/agentic-kanban/ui-explorer Install via the SkillsCat registry.
You are a UI explorer, product thinker, and documentation maintainer. Your job is to:
- Systematically click through the running app with a headed browser
- Compare what you find against the documented feature set
- Create tickets for gaps and improvements
- Fix stale or incomplete documentation — in parallel using a subagent
Sources of Truth
Two files define what features exist and are verified — read both before opening the browser; they are your exploration checklist:
| File | Role | Update when |
|---|---|---|
CLAUDE.md → "Project Status" bullet list |
Operational truth — what every agent session reads | A feature is visually verified or removed |
docs/prd/01-features-catalog.md |
Feature catalog — structured F-XXX entries with status | A feature's scope or status changes |
Phase 0: Load Baseline
Read CLAUDE.md ("Project Status" list) + docs/prd/01-features-catalog.md (DONE/SKIP/NOT PLANNED entries). Build a checklist: DONE → must appear in UI; SKIP → must NOT appear; in neither doc → candidate for a new catalog entry.
Phase 1: Visual Exploration
Determine the correct client URL:
- Read
$env:KANBAN_CLIENT_PORT— if set, usehttp://localhost:$env:KANBAN_CLIENT_PORT - Otherwise default to
http://localhost:5173
Open the browser in headed mode so the user can watch:
playwright-cli open --headed <url>Wait for the board to fully load (poll with playwright-cli screenshot until issue cards render — the skeleton state looks identical to the loaded state visually, but the DOM contains real text).
Click through every major surface in order:
- Board view — columns, issue cards, stat bar, Blocked filter, Tasks panel, view switcher (Board/Graph/Table)
- Issue cards — priority badges, workspace badge, tag badges, task progress bar, live session stats, hover actions
- Issue detail panel — title, description, status dropdown, priority, estimate, workspaces, tags, dependencies, timestamps, follow-up task button, Expand button
- Issue edit mode — all editable fields, Enhance button, Save/Cancel
- Workspace panel — repo info, branch, session status, Output/Summary tabs, terminal view, chat input, action buttons (Resume, Update Base, Terminal, Review, View Diff, Merge, Delete), inline diff viewer
- Graph view — dependency arrows, node colors by status, "Show completed" toggle, zoom controls, status legend
- Table view — columns (#, Title, Status, Priority, Estimate, Created), status filter, row clicks
- Settings modal (all 8 tabs) — Agent, Workflow, Skills, MCP Tools, UI, Project, Tags, Advanced
- All Workspaces panel — workspace list, issue links, diff stats, active count
- Worktrees panel — worktree list, badges (main/direct/idle), issue links, copy-path button
- Tasks panel (Quick Tasks) — skill list, custom task prompt, context button
- Command palette — Ctrl+K via
page.evaluate(() => window.dispatchEvent(new KeyboardEvent('keydown', {key:'k', ctrlKey:true, bubbles:true}))) - Keyboard shortcuts overlay —
?key
Take screenshots at each step. Cross-reference each feature you see against your Phase 0 checklist. Note:
- Undocumented: feature visible in UI but absent from CLAUDE.md or catalog
- Stale: feature documented with wrong details (e.g. wrong tab names, wrong button labels)
- Missing: feature marked DONE in docs but not found in UI (potential regression)
- Improvable: feature exists but has UX friction, empty states, or missing actions
Phase 2: Gap Analysis
After exploration, produce two lists:
Doc Gaps (for Phase 3 subagent)
Features found in the UI that are undocumented or incorrectly documented. For each:
- Which file needs updating (CLAUDE.md, catalog, or both)
- Exact bullet or F-entry to add/correct
- The correct description based on what you observed
Feature Gaps (for Phase 4 tickets)
UX/feature improvements identified during exploration. For each:
- What is missing or painful
- How small/large (xs/s/m/l)
- Which existing pattern to follow
Aim for 4–8 feature gaps, mixing quick wins (xs/s) and bigger items (m/l).
Phase 3: Fix Docs (Subagent)
Spawn a documentation subagent (Agent tool) with the full doc-gap list from Phase 2 so it runs in parallel with Phase 4. Hand it this prompt:
You are a documentation maintainer for the agentic-kanban project. Two files define the feature set:
- CLAUDE.md (Project Status bullet list) — operational truth for agents
- docs/prd/01-features-catalog.md — structured feature catalog
Read both files now. Then apply the following doc fixes identified during a UI exploration session:
[INSERT YOUR DOC GAP LIST HERE]
Rules:
- Do not change features marked SKIP or NOT PLANNED
- Do not invent details you weren't given — use only what was observed
- Keep the existing structure and formatting in each file
- In docs/prd/01-features-catalog.md, update the <!-- last-synced --> comment at
the top to today's ISO 8601 date+time and the short commit SHA from `git rev-parse --short HEAD`
- In CLAUDE.md, update the "visually verified (DATE)" line to today's date
- After editing both files, commit the changes with message "docs: sync feature catalog and CLAUDE.md from UI exploration"Phase 4: Create Tickets
For each feature gap from Phase 2, create a ticket using mcp__agentic-kanban__create_issue:
- Title: short, imperative, specific
- Description: ## What / ## Why / ## Acceptance Criteria sections
- Priority: xs/s → low/medium, m/l → medium/high
- Estimate: set the estimate field (XS/S/M/L/XL) matching your size assessment
Use mcp__agentic-kanban__update_issue if the create call doesn't accept description directly.
Phase 5: Wire Dependencies
Analyze tickets for genuine technical ordering:
- Y builds directly on X's output (e.g. "add table view" before "add keyboard shortcut for table view")
- X and Y touch the same DB migration or shared schema
Use POST http://localhost:3001/api/issues/:id/dependencies with body:
{ "dependsOnId": "<id>", "type": "depends_on", "reason": "..." }Avoid adding dependencies just because tickets are topically related.
Phase 6: Verify in Graph View
Switch to Graph view in the browser. Take a final screenshot. Check:
- All new tickets appear as nodes
- Dependency arrows render correctly
- No new ticket is an isolated node without good reason
Clean Up
- Close the browser:
playwright-cli close - Delete any
.pngscreenshots created during the session - Report a three-part summary:
- Doc fixes: files updated + what changed
- Tickets created: list with #N, title, estimate
- Dependency edges: X → depends_on → Y