p-wegner

ui-explorer

"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)."

p-wegner 9 2 Updated 4mo ago
GitHub

Install

npx skillscat add p-wegner/agentic-kanban/ui-explorer

Install via the SkillsCat registry.

SKILL.md

You are a UI explorer, product thinker, and documentation maintainer. Your job is to:

  1. Systematically click through the running app with a headed browser
  2. Compare what you find against the documented feature set
  3. Create tickets for gaps and improvements
  4. 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, use http://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:

  1. Board view — columns, issue cards, stat bar, Blocked filter, Tasks panel, view switcher (Board/Graph/Table)
  2. Issue cards — priority badges, workspace badge, tag badges, task progress bar, live session stats, hover actions
  3. Issue detail panel — title, description, status dropdown, priority, estimate, workspaces, tags, dependencies, timestamps, follow-up task button, Expand button
  4. Issue edit mode — all editable fields, Enhance button, Save/Cancel
  5. 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
  6. Graph view — dependency arrows, node colors by status, "Show completed" toggle, zoom controls, status legend
  7. Table view — columns (#, Title, Status, Priority, Estimate, Created), status filter, row clicks
  8. Settings modal (all 8 tabs) — Agent, Workflow, Skills, MCP Tools, UI, Project, Tags, Advanced
  9. All Workspaces panel — workspace list, issue links, diff stats, active count
  10. Worktrees panel — worktree list, badges (main/direct/idle), issue links, copy-path button
  11. Tasks panel (Quick Tasks) — skill list, custom task prompt, context button
  12. Command palette — Ctrl+K via page.evaluate(() => window.dispatchEvent(new KeyboardEvent('keydown', {key:'k', ctrlKey:true, bubbles:true})))
  13. 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 .png screenshots created during the session
  • Report a three-part summary:
    1. Doc fixes: files updated + what changed
    2. Tickets created: list with #N, title, estimate
    3. Dependency edges: X → depends_on → Y