Design: UX mockups for the /agents dashboard page (Penpot) #55
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks#55
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
User story
As a maintainer, I want visual mockups for the
/agentspage — list view, create/edit modal, delete-confirm, skill viewer + appendix editor, and empty/error states — produced in Penpot before the implementation ticket (A6) starts, so that the CRUD UI lands with a deliberate UX rather than being designed ad-hoc at implement-time.Context
A6(#53) scopes the functional requirements of the agents CRUD surface (endpoints, form fields, live state, cleanup-on-delete). This story covers the design layer upstream of it: layouts, component choices, interaction states, and copy. The operator (@charles) drives the Penpot session with the interactive Claude (claude-desktop) acting as UX designer via the Penpot MCP.The existing dashboard lives in
src/dashboard.htmland has a minimal look. The mockups should extend that vocabulary — don't introduce a new design system, use what the dashboard already uses for colours, type scale, and spacing. If gaps exist (e.g. no modal or tag-input component today), propose the minimum-viable component extension and document it in the Penpot file.Acceptance criteria
Penpot file
koinosteam's primary file (or a new file namedclaude-hooks — dashboard, one-off decision at the start of the session) titled/agents.Screens / states
match_labels(chip list), queue depth, status (idle/busy/stopped pill). Sort + filter controls where they belong. Include a populated example (5–7 rows) plus an empty state ("No agents yet — create your first one").match_labelstag-input, prompt appendix textarea (with char count), notes textarea. Show primary / secondary action affordance.match_labelspreview so the operator sees what routing they're breaking, and a "Also wipe volume" checkbox with a clear destructive-action visual. Confirm button disabled until the operator types the instance name.implement,review,address-review,rebase,merge,fix-ci,breakdown). Each skill is collapsible, read-only markdown render. Next to / below it: the per-agentprompt_appendixtextarea with live character count. Visual distinction between the immutable base and the editable appendix.Interaction specs
match_labelstag-input: adding a label (suggestion from existing repo labels when available; free-form allowed), removing a label, empty state.Design system hygiene
src/dashboard.htmlrendered in browser, lift the palette). Do not introduce a new accent colour without a note in the Penpot file explaining why.Handoff
Out of scope
/agentsis in scope here. Other pages may reuse the components introduced by this story; that's fine.References
src/dashboard.html.design.jacquin.app(teamkoinos).Dependencies
Handoff — UX mockups for
/agentsPenpot file: claude-hooks — dashboard in team
peon-manager.File: https://design.jacquin.app/#/workspace?team-id=689d7fa4-f94b-81d4-8007-e39c2a70e029&project-id=689d7fa4-f94b-81d4-8007-e39c2a7171bf&file-id=689d7fa4-f94b-81d4-8007-e39c5c82f66c
Pages
Design tokensComponentsList — populatedList — emptyNo agents yetstate + primary CTACreate modalEdit + skill viewerDelete confirmError stateDesign tokens — lift straight into CSS
Palette is Tokyo Night Storm (dark) / Tokyo Night Day (light). One accent, two semantic-status colors, one warning for overrides:
Pill / badge recipe (as rendered in the file)
Interaction notes (from
06and07)/agents/:name(Edit view on page 06). Hover: row bg#2F3549at 40% alpha.STOPPEDstate rather than vanishing.src/dashboard.htmlline 92).match_labelstag-input: paste or comma-separated → split into chips; ✕ removes the chip immediately (no confirm); suggestions from the repo's existing label set when typing, free-form allowed.Decisions that deviated from the issue spec
#0d1117/#58a6ff/#3fb950). Per operator direction we switched to Tokyo Night. The AC said "don't introduce a new accent colour without a note" — this is that note. Rationale: @charles' preference, and it gives us a light-theme sibling palette for free./agentsdark-only; a separate follow-up adds a theme toggle.create_component. Rationale: implementer lifts CSS from the specs anyway, and the MCP's component-conversion makes the file harder to navigate. If the next design session wants them promoted, a five-minute pass in the Penpot UI will do it.--warning) to signal "editable, per-instance" against the muted/read-only skills above.auth-tokenpre-seeded cookie path in the MCP — our Penpot instance haslogin-with-passworddisabled (OIDC-only) and access tokens off, so the Penpot MCP needed a patched auth path (cookie injection + Authelia Basic proxy-auth). Not design-relevant, but worth flagging if a future session tries to reuse the MCP.What's not covered here (stays out of scope per AC)
/tasksor/storage.Ready for A6 (#53) to pick up.
Closing as retroactively-obsolete. A6 (#53 / #116) shipped the agents CRUD ad-hoc during milestone 16 without this Penpot mockup upstream — the design decisions were made at implementation time and documented in the resulting code. Reintroducing the mockup now would be post-hoc documentation of what already ships.
If you want a Penpot record of the current dashboard surface (both for team handoff and to unblock future design iteration), that's a fresh
area:designticket scoped to "mockup the dashboard as it currently ships" — cleaner than trying to retcon this one.Closes with milestone 16.