Legionis: Interaction Patterns v2

Document Version: 2.0 Date: 2026-02-17 Owner: Interaction Designer (Design Team) Status: Draft Product: Legionis (legionis.ai) Supersedes: UX Concepts v1.0 (interaction sections), UX Guidelines v1.0 (flow sections) Related: Onboarding User Journey v1.0, Brand Guide v2.0, Positioning Statement v2.1, Demo Design System


Design Context

This document redesigns Legionis interaction patterns to support the expansion from 13 agents to 81 agents across 9 teams, from 61 skills to 80+ skills, and the repositioning from "Product Org OS" to "AI workforce platform."

The core interaction model (/ for skills, @ for agents, Cmd+K for palette) remains sound. The patterns need to scale and the copy needs to align with the new positioning.

Key Constraints

  • 81 agents across 9 teams + 11 gateways -- flat lists are unusable at this scale
  • 80+ skills across functional domains -- V2V phase grouping only works for Product Org skills
  • Non-product users -- a marketing director, finance lead, or ops manager must feel at home
  • "AI workforce platform" -- not "product org tool." Copy must be domain-neutral
  • Existing code -- skill-palette.tsx, agent-selector.tsx, chat-input.tsx, and chat-container.tsx are already built and shipping

  • 1. Skill Palette v2 (Cmd+K)

    Problem

    The v1 skill palette groups skills by V2V phase (Strategic Foundation, Strategic Decisions, etc.). This works for Product Org skills but fails for extension team skills. A marketing copywriter searching for "landing page copy" should not need to understand V2V phases. The palette also lacks favorites, personalization, and a way to filter by team.

    New Grouping Strategy

    Replace V2V phase grouping with functional domain grouping. The V2V phase is still available as metadata but is no longer the primary organizer.

    CategorySkills IncludedExample Skills
    ProductAll Product Org skills (phases 1-6 + cross-phase)/prd, /decision-record, /strategic-bet, /roadmap-theme
    Marketing & GTMGTM, positioning, campaign, sales enablement/gtm-strategy, /campaign-brief, /positioning-statement, /sales-enablement
    Finance & BusinessBusiness case, pricing, financial modeling/business-case, /pricing-strategy, /pricing-model
    Strategy & ExecutiveVision, strategic bets, portfolio, QBR/vision-statement, /strategic-intent, /qbr-deck, /portfolio-tradeoff
    Operations & DeliveryLaunch, readiness, commitment, process/launch-plan, /launch-readiness, /commitment-check
    Learning & ContextContext recall, feedback, outcome review, retrospective/context-recall, /feedback-recall, /outcome-review, /retrospective
    ValidatorsPhase check, ownership map, scale check/phase-check, /ownership-map, /collaboration-check

    Note: Some skills appear in multiple categories when relevant (e.g., /positioning-statement appears in both Product and Marketing). The palette deduplicates in search results.

    Favorites and Pinned Skills

    Users can pin up to 8 skills. Pinned skills appear at the very top under a "Pinned" section, above "Recently Used." Pin/unpin via a star icon on hover of any skill row.

    Pinned skills persist in the users.preferences JSON column (or localStorage as fallback).

    "Suggested for You"

    Below "Pinned" and above the category groups, a "Suggested" section shows 3-4 skills based on:

  • The user's selected role (from onboarding)
  • The user's active team(s)
  • Frequency of use (show skills they have not tried yet from their domain)
  • This section is suppressed after 20+ sessions (the user is past the discovery phase).

    Search Behavior

    Keyboard Navigation

    KeyAction
    Cmd+KOpen palette (global)
    TypeFuzzy search
    Arrow Up/DownNavigate results
    EnterSelect and insert /skill-name into chat input
    TabAutocomplete current selection (same as Enter)
    EscClose palette
    Cmd+Shift+SToggle star/pin on highlighted skill

    Progressive Disclosure

    ASCII Wireframe

    +----------------------------------------------------------+
    
    / Search skills... x
    +----------------------------------------------------------+
    PINNED [Edit]
    /prd Create Product Requirements Doc
    /decision-record Document a key decision
    /gtm-strategy Plan your go-to-market approach
    SUGGESTED FOR YOU
    /campaign-brief Plan a marketing campaign [Mktg]
    /sales-enablement Create sales materials [Mktg]
    /competitive-landscape Map competitors [Prod]
    RECENTLY USED
    /prd Create Product Requirements Doc
    /business-case Build a business case
    PRODUCT [12/32]
    > /strategic-intent Define strategic direction
    > /market-analysis Analyze your market
    > /prd Create Product Requirements Doc
    [Show all 32 Product skills]
    MARKETING & GTM [4/12]
    > /gtm-strategy Plan go-to-market
    > /positioning-statement Define positioning
    > /campaign-brief Plan a campaign
    [Show all 12 Marketing & GTM skills]
    FINANCE & BUSINESS [3/8]
    > /business-case Build a business case
    > /pricing-strategy Define pricing approach
    > /pricing-model Design pricing model
    [Show all 8 Finance & Business skills]
    STRATEGY & EXECUTIVEOPERATIONSLEARNINGMORE
    +----------------------------------------------------------+
    / to invokeArrow keys to navigateEsc to close
    +----------------------------------------------------------+

    Migration Notes

    Existing code (skill-palette.tsx):

    API changes (/api/skills):

    2. Agent Selector v2 (@)

    Problem

    The v1 agent selector shows all agents in a flat list grouped by team. With 81 agents + 11 gateways, the flat list is 92 items long. Scrolling through Marketing's 16 agents to find the Legal team is painful. The current TEAM_ORDER array in agent-selector.tsx already has the right team structure, but the presentation is a single scrollable list with sticky team headers. This does not scale.

    New Architecture: Two-Level Navigation

    The redesigned selector uses a team tab bar + agent list model:

  • Top row: Horizontal team filter tabs (scrollable on mobile)
  • Active team section: Shows all agents in the selected team
  • "All" tab: Flat searchable list across all teams (default when opened via search)
  • Team Tab Bar

    Tabs are shown as compact pills at the top of the selector. Each pill shows the team emoji + short name. The user's primary team is pre-selected.

    TabEmojiLabelCount
    All--All92
    Product--Product15
    Design--Design8
    Architecture--Architecture8
    Marketing--Marketing17
    Finance--Finance10
    Legal--Legal9
    Operations--Operations9
    Executive--Executive3
    Corp Dev--Corp Dev6
    IT--IT7

    Counts include gateways. When the user only has one team subscribed, other team tabs show a lock icon and a tooltip: "Add this team to your plan."

    Gateway vs. Individual Agent Distinction

    Within each team view, the gateway appears first, visually distinct from individual agents:

    Recently Used Agents

    A "Recent" section appears above the team tabs when the selector opens (before the user filters). Shows the last 4 agents the user interacted with. Each shows emoji + name + team badge.

    Auto-Routing Preview ("Suggested")

    When the user has already typed text in the chat input BEFORE opening the agent selector, the selector shows a "Suggested" agent based on keyword matching against the domain routing table. For example, if the chat input contains "pricing", the selector highlights BizOps with a "Suggested for this message" badge.

    This bridges the gap between explicit agent selection and the auto-routing that happens if they just send the message without selecting an agent.

    Agent Cards

    Each agent card shows:

    +-----------------------------------------------+
    
    [Emoji] [Display Name] [Badge]
    [One-line description]
    +-----------------------------------------------+

    Search Across All Teams

    When the user types in the search field:

    Keyboard Navigation

    KeyAction
    @ (in chat)Open selector
    Cmd+Shift+AOpen selector (global)
    TypeSearch across all agents
    Arrow Up/DownNavigate agents in current view
    Arrow Left/RightSwitch team tab (when focus is on tab bar)
    EnterSelect agent, insert @agent-id into chat
    EscClose selector

    ASCII Wireframe

    +----------------------------------------------------------+
    
    @ Search agents and gateways... x
    +----------------------------------------------------------+
    RECENT
    [PM] [BizOps] [VP Product] [Dir Marketing]
    SUGGESTED FOR THIS MESSAGE
    BizOps -- "pricing" detected in your message [Prod]
    +----------------------------------------------------------+
    [All] [Product] [Design] [Arch] [Mktg] [Fin] [>]
    +----------------------------------------------------------+
    PRODUCT (selected)
    GATEWAYS
    Product Gateway [Prod]
    Routes to the right specialist for your request
    PLT (Leadership Team Session) [Prod]
    Multi-agent strategic discussion
    LEADERSHIP
    CPO [Prod]
    Chief Product Officer
    VP Product [Prod]
    Vision, portfolio, pricing strategy
    CORE TEAM
    PMPMMDir PMDirPMMUX Lead...
    SPECIALISTS
    BizOpsBizDevCIProd OpsVR
    +----------------------------------------------------------+
    @ to mentionArrow keysTab to switch teams
    +----------------------------------------------------------+

    Migration Notes

    Existing code (agent-selector.tsx):

    API changes (/api/agents):

    3. Meeting Mode v2 (Multi-Team)

    Problem

    v1 Meeting Mode is designed for Product Org agents only (3-4 agents from the same team). With 9 teams, a meeting might include agents from Marketing, Legal, and Finance reviewing a GTM plan together. The current design has no team attribution, no team color coding, and no pattern for assembling custom multi-team meetings.

    Cross-Team Meeting Pattern

    When agents from different teams participate in a meeting, each agent's response includes a team badge in their header. This makes it immediately clear which organizational perspective each voice represents.

    Team Color Coding

    Each team gets a subtle background tint applied to their agent section in Meeting Mode. This provides a quick visual scan of which teams are represented.

    TeamTint Color (light bg)Border ColorHex
    ProductBlue tintBlue#3b82f6 / rgba(59,130,246,0.06)
    DesignPink tintPink#ec4899 / rgba(236,72,153,0.06)
    ArchitectureSlate tintSlate#64748b / rgba(100,116,139,0.06)
    MarketingOrange tintOrange#f97316 / rgba(249,115,22,0.06)
    FinanceEmerald tintEmerald#10b981 / rgba(16,185,129,0.06)
    LegalViolet tintViolet#8b5cf6 / rgba(139,92,246,0.06)
    OperationsAmber tintAmber#f59e0b / rgba(245,158,11,0.06)
    ExecutiveIndigo tintIndigo#6366f1 / rgba(99,102,241,0.06)
    Corp DevTeal tintTeal#14b8a6 / rgba(20,184,166,0.06)
    IT GovernanceCyan tintCyan#06b6d4 / rgba(6,182,212,0.06)

    The tint is applied as a background on the agent's collapsible section. The border-left color uses the team color at full opacity (4px solid).

    "Assemble Team" Interaction

    Users can explicitly assemble a custom meeting via a new interaction pattern:

    Trigger phrase: "Assemble [agent1], [agent2], [agent3] to discuss [topic]"

    Or via UI: A new "Assemble meeting" button appears in the chat input area (next to the voice input button). Clicking it opens a multi-select agent picker:

    +----------------------------------------------------------+
    
    Assemble a team meeting x
    +----------------------------------------------------------+
    Topic: [Enter meeting topic]
    SELECTED (3)
    [x] Dir Marketing [Mktg]
    [x] Contracts Counsel [Legal]
    [x] Revenue Analyst [Finance]
    ADD PARTICIPANTS
    [Search agents...]
    SUGGESTED FOR THIS TOPIC
    [ ] Privacy Counsel [Legal] -- "contracts" detected
    [ ] BizOps [Prod] -- financial context
    +----------------------------------------------------------+
    Max 6 participants[Cancel] [Start Meeting]
    +----------------------------------------------------------+

    Handling 4+ Agents from 3+ Teams

    When a meeting has 4+ agents from 3+ different teams:

  • Header: Show team representation count: "Present: 2 Product, 1 Legal, 1 Finance"
  • Agent sections: Group by team within the meeting. Product agents appear together, then Legal, then Finance. Each group has a subtle team header.
  • Alignment/Tension: Attribute points to teams, not just individuals: "Product and Finance align on pricing. Legal raises compliance concerns."
  • Synthesis: The synthesizer attributes team perspectives explicitly.
  • Max participants: Soft cap at 6 agents per meeting. The UI allows more but shows a warning: "Meetings with 7+ agents take longer and may produce less focused synthesis."
  • Meeting Mode v2 Wireframe

    +----------------------------------------------------------+
    
    Team Meeting
    Topic: GTM compliance review for EU launch
    Present: 2 Marketing, 1 Legal, 1 Finance
    +----------------------------------------------------------+
    v Dir Marketing [Mktg]
    | +------------------------------------------------------+
    "From a go-to-market perspective, the EU launch
    timeline is aggressive but achievable. My concern
    is the messaging localization..."
    | +------------------------------------------------------+
    v Content Strategist [Mktg]
    | +------------------------------------------------------+
    "I have reviewed the content pipeline and we have
    a gap in DACH-specific case studies..."
    | +------------------------------------------------------+
    v Privacy Counsel [Legal]
    | +------------------------------------------------------+
    "The GDPR implications are significant. Before any
    email campaign launches, we need..."
    | +------------------------------------------------------+
    v Revenue Analyst [Finance]
    | +------------------------------------------------------+
    "The EU revenue model needs adjustment. VAT
    handling alone changes the unit economics..."
    | +------------------------------------------------------+
    +----------------------------------------------------------+
    ALIGNMENT
    - All teams agree the timeline needs 2-week buffer
    - Marketing and Legal align on consent-first approach
    TENSION
    - Marketing wants to launch with existing content;
    Legal requires DACH-specific disclosures first
    - Finance flags VAT complexity that Marketing has not
    accounted for in pricing
    SYNTHESIS
    Recommend: Delay EU launch by 2 weeks. Use the time
    for GDPR compliance review (Legal), DACH content
    creation (Marketing), and VAT model adjustment
    (Finance). This eliminates the top 3 risks identified.
    Time: ~8 hrs saved in 110s
    Dir Marketing: ~2hContent Strategist: ~1.5h
    Privacy Counsel: ~2hRevenue Analyst: ~2.5h
    +----------------------------------------------------------+

    Migration Notes

    Meeting Mode is not built yet as a component. This is a full specification for a new MeetingMode.tsx component.

    New components needed:

    Integration with existing code:

    4. Onboarding Flow v2

    Design Philosophy

    The onboarding flow must:

  • Never say "product org" unless the user chose a product role
  • Lead with the team concept ("assemble your workforce")
  • Make the API key step feel like connecting power, not configuration pain
  • Get to first value in under 3 minutes
  • The existing Onboarding User Journey v1.0 document (6 screens) is well-designed. This section refines the copy and interaction details to align with the "AI workforce platform" positioning.

    Step 1: Sign Up

    Route: /sign-up (existing Clerk flow)

    +----------------------------------------------------------+
    
    [Legionis Logo]
    Your AI workforce, on demand.
    Continue with Google
    Continue with Microsoft
    Continue with LinkedIn
    Sign up with email
    Already have an account? Log in
    +----------------------------------------------------------+

    Copy notes:

    Step 2: Tell Us About Yourself (Role Selection)

    Route: /onboarding

    +----------------------------------------------------------+
    
    Welcome to Legionis, [First Name].
    What kind of work do you do?
    We will assemble the right team for you.
    ProductDesignEngineering
    Management
    PM, PMM, VPUX, UI,Architect,
    ProductResearchDeveloper
    MarketingLeadershipOperations
    Content, SEO,CEO, COO,Finance,
    GrowthVP, DirectorLegal, IT
    Other / Just exploring
    [Continue ->]
    +----------------------------------------------------------+

    Copy notes:

    Skip: "Other / Just exploring" is the skip path. Always available.

    Step 3: Meet Your Workforce (Team Showcase)

    Route: /onboarding/teams

    +----------------------------------------------------------+
    
    Your AI Workforce
    81 specialists across 9 teams. Built to work together.
    ASSEMBLED FOR YOU
    Product Organization 13 agents, 61 skills
    PM, VP Product, BizOps, PMM, CI, UX Lead...
    "Write PRDs, build roadmaps, run strategy
    sessions with multiple expert perspectives"
    [->]
    MORE TEAMS
    DesignArchMarketingFinance
    7 agents7 agents16 agents9 agents
    LegalOpsExecutiveCorp Dev
    8 agents8 agents2 agents5 agents
    IT Gov+ All teams: Full Org ($25/mo)
    6 agents
    [Continue ->]
    +----------------------------------------------------------+

    Copy notes:

    Interaction: Browse-only. No selection happens here. This is the "wow" moment where users see the scale of what they are getting.

    Step 4: Choose Your Starting Team

    Route: /onboarding/select

    Unchanged from Onboarding User Journey v1.0. The wireframe, pricing display, multi-team selection logic, and "Full Org" upsell are well-specified there.

    Copy change only: Replace "Choose your starting team" with "Assemble your first team."

    Step 5: Connect Your AI

    Route: /onboarding/connect

    +----------------------------------------------------------+
    
    One last step: Power up your team
    Your AI workforce runs on Claude or GPT.
    Choose how you want to connect.
    Bring Your Own KeyLet Us Handle It
    Best if you alreadyNo API key needed.
    have an Anthropic orWe handle everything.
    OpenAI account.Usage-based billing.
    Full cost control Start immediately
    No markup Pay as you go
    Use your volume No setup needed
    discounts
    [Choose This ->][Choose This ->]
    Not sure? You can change anytime in Settings.
    [Skip for now -- I will set this up later]
    +----------------------------------------------------------+

    Copy notes:

    Step 6: First Interaction (Guided Dashboard)

    Route: /dashboard (first visit)

    +----------------------------------------------------------+
    
    You are all set. Your team is ready.
    Here are 3 things to try right now:
    "Help me write a product requirements document"
    Uses: Product Manager + /prd skill
    Time: ~2 minutes [Try this ->]
    "Review my pricing strategy"
    Uses: BizOps + /pricing-strategy skill
    Time: ~3 minutes [Try this ->]
    "Help me decide between two options"
    Uses: @product gateway (Meeting Mode)
    Time: ~5 minutes [Try this ->]
    Or type anything below.
    [Message your AI workforce... (/ for skills, @ for
    agents)]
    +----------------------------------------------------------+

    Copy notes:

    Migration Notes

    Existing: Clerk sign-up flow is built. Dashboard with EmptyState is built.

    New routes needed:

    Existing EmptyState (chat-container.tsx): Middleware: Redirect non-onboarded users to /onboarding (new logic in middleware.ts)


    5. Context Panel Interactions

    When Does It Appear?

    ViewportBehavior
    Desktop (1440px+)Always visible in the right sidebar (320px)
    Laptop (1024-1440px)Collapsed by default; toggle with Cmd+] or click icon
    Tablet (768-1024px)Hidden; accessible as slide-over overlay
    Mobile (<768px)Hidden; accessible from bottom sheet

    What It Shows

    The context panel has 5 collapsible sections, each with a count badge:

    +----------------------------------------------------------+
    
    CONTEXT [Cmd+] Hide]
    +----------------------------------------------------------+
    v RECENT DECISIONS (47)
    DR-2026-015 API Pricing Model 2 hrs ago
    DR-2026-014 Auth Provider Choice Yesterday
    DR-2026-013 Mobile-First Strategy 3 days
    [View all ->]
    > ACTIVE BETS (5)
    [collapsed -- click to expand]
    > RECENT FEEDBACK (12)
    [collapsed -- click to expand]
    > LEARNINGS (8)
    [collapsed -- click to expand]
    > SESSION ROI
    4.2 hrs saved this session
    12 operations
    [View full ROI dashboard ->]
    +----------------------------------------------------------+

    What Triggers Updates?

    EventPanel Update
    New decision saved (/decision-record completes)"Recent Decisions" section refreshes, new item pulses briefly
    New bet created (/strategic-bet completes)"Active Bets" section refreshes
    Feedback captured (/feedback-capture completes)"Recent Feedback" section refreshes, count badge increments
    Agent completes a task"Session ROI" updates in real-time
    Context recall executedPanel highlights the recalled items with a yellow flash

    Interactive Elements

    Relationship to Chat

    Selecting a context item can pre-fill the chat input:

    Collapsible Sections

    Migration Notes

    The context panel is not built yet. This is a new component specification.

    New components:

    Integration:

    6. Status Bar Interactions

    Layout

    The status bar sits at the bottom of the viewport, always visible, 32px height.

    +----------------------------------------------------------+
    
    14.2k tokens / $0.04ConnectedPro~2.5 hrs
    +----------------------------------------------------------+

    Elements

    ElementPositionDisplayBehavior
    Token count + costLeft14.2k tokens / $0.04Updates after each message. Resets per session. Click to open detailed usage.
    Connection statusCenter-leftColored dot + textGreen "Connected" / Yellow "Reconnecting..." / Red "Disconnected"
    Plan badgeCenter-rightPro / Team / Full OrgStatic badge. Click to open billing settings.
    Session ROIRight~2.5 hrs savedUpdates after each agent/skill completion. Click to expand session breakdown.

    Token Count Display Format

    Cost Display

    Connection Status States

    StateIndicatorAction
    ConnectedGreen dotNone needed
    ReconnectingYellow dot, pulsing"Reconnecting..." text. Auto-retry 3x.
    DisconnectedRed dot"Disconnected. [Retry]" -- click to manually reconnect
    StreamingBlue dot, animated"Streaming..." -- indicates active response

    Plan Badge

    Session ROI Running Total

    +----------------------------------+
    
    Session ROI Breakdown
    /prd authentication ~4 hrs
    @ci competitor review ~1.5 hrs
    /decision-record ~30 min
    Total: ~6 hrs in 8 min actual
    +----------------------------------+

    States Summary

    Status Bar StateWhat Changes
    IdleToken count static, connection green, ROI static
    StreamingToken count incrementing, connection blue "Streaming...", ROI static
    ErrorConnection red, error message in place of token count
    Rate limitedToken count shows "Limit reached", plan badge pulses

    Migration Notes

    Existing: The v1 UX concepts show a status bar in the layout but it is not built as a component.

    New component: StatusBar.tsx with sub-components:


    7. Updated Keyboard Shortcuts

    Full Shortcut Table

    ShortcutActionContextNew/Existing
    Cmd+KOpen skill paletteGlobalExisting
    Cmd+Shift+AOpen agent selectorGlobalExisting
    Cmd+]Toggle context panel (right sidebar)GlobalNEW
    Cmd+[Toggle file explorer (left sidebar)GlobalExisting
    Cmd+EnterSubmit messageChat input focusedExisting
    Shift+EnterNew line in chat inputChat input focusedExisting
    Cmd+/Focus chat inputGlobalExisting
    EscClose modal/panel/paletteAny overlay openExisting
    Arrow Up/DownNavigate list itemsPalette/selector openExisting
    Arrow Left/RightSwitch team tabAgent selector openNEW
    TabAutocomplete selectionPalette/selector openExisting
    Cmd+Shift+MAssemble team meetingGlobalNEW
    Cmd+Shift+SPin/unpin skillSkill palette openNEW
    Cmd+1 through Cmd+5Switch nav sections (Chat, Files, Context, Dashboard, Settings)GlobalExisting
    Cmd+Shift+POpen skill browser (full catalog)GlobalExisting
    Cmd+.Stop generationDuring streamingNEW

    Keyboard Shortcut Help

    Cmd+/ (or ? when chat input is not focused) opens a keyboard shortcut overlay. The overlay groups shortcuts by category: Navigation, Chat, Skill Palette, Agent Selector, Context.

    Platform Adaptation

    On Windows/Linux, Cmd is replaced with Ctrl. The app detects the platform and displays the correct modifier.


    8. Responsive Behavior Updates

    Breakpoint Strategy

    BreakpointNameLayout
    1440px+Desktop (large)Three-panel: sidebar (240px) + chat (flex) + context (320px)
    1024-1440pxDesktop (standard)Two-panel: sidebar collapsed (56px) + chat (flex). Context panel collapsible.
    768-1024pxTabletChat only. Sidebar and context as slide-over overlays.
    <768pxMobileChat only. Bottom navigation. Minimal chrome.

    Desktop (1440px+)

    +--------+--------------------------------+-----------+
    
    SIDE-MAIN CHAT AREACONTEXT
    BARPANEL
    240pxflex-1320px
    Files[Conversation thread]Decisions
    AgentsBets
    [Chat input with /@ triggers]Feedback
    ROI
    +--------+--------------------------------+-----------+
    Status bar: tokensconnectionplanROI total
    +------------------------------------------------------+

    Desktop Standard (1024-1440px)

    +----+------------------------------------------+
    
    RAILMAIN CHAT AREA
    56px
    flex-1
    [Conversation thread]
    [Chat input]
    +----+------------------------------------------+
    Status bar
    +-----------------------------------------------+

    Tablet (768-1024px)

    +----------------------------------------------+
    
    [Menu] Legionis [Search] [Context] [Profile]
    +----------------------------------------------+
    MAIN CHAT AREA
    full width
    [Conversation thread]
    [Chat input]
    +----------------------------------------------+
    Status bar (simplified)
    +----------------------------------------------+

    Mobile (<768px)

    +----------------------------------------------+
    
    [<] Legionis [Context] [Profile]
    +----------------------------------------------+
    CHAT AREA
    full width
    full height
    [Conversation thread]
    +----------------------------------------------+
    [Chat input -- sticky]
    +----------------------------------------------+
    [Chat] [Files] [Context] [Settings]
    +----------------------------------------------+

    Responsive Behavior for Key Components

    ComponentDesktopTabletMobile
    Skill paletteFloating overlay (480px wide)Centered overlay (90% width)Full-screen modal
    Agent selectorFloating overlay (520px wide)Bottom sheet (80% height)Full-screen modal
    Context panelFixed right sidebar (320px)Slide-over from rightFull-screen tab
    Meeting ModeFull-width within chat, all agents expandedFull-width, all expandedAccordion (one at a time)
    Assemble dialogCentered modal (600px)Centered modal (90% width)Full-screen modal
    OnboardingCentered card (640px max)Centered card (90% width)Full-width


    9. Migration Notes Summary

    Component-by-Component Impact Assessment

    ComponentFileStatusChanges Required
    Skill Palettesrc/components/chat/skill-palette.tsxExistsNew category grouping, pinned skills, suggested section, larger max-height
    Agent Selectorsrc/components/chat/agent-selector.tsxExistsMajor rearchitecture: tab bar, sub-groups, gateway distinction, recent agents
    Chat Inputsrc/components/chat/chat-input.tsxExistsMinor: update placeholder copy, add "Assemble meeting" button
    Chat Containersrc/components/chat/chat-container.tsxExistsMinor: personalized EmptyState based on user role/team
    Meeting Mode--Not builtFull new component: MeetingMode.tsx + sub-components
    Context Panel--Not builtFull new component: ContextPanel.tsx + sub-components
    Status Bar--Not builtFull new component: StatusBar.tsx + sub-components
    Onboarding Flow/sign-up onlyPartially built4 new routes + middleware update + schema changes
    Assemble Dialog--Not builtFull new component: AssembleTeamDialog.tsx

    Priority Order for Implementation

  • Agent Selector v2 (P0) -- The current flat list becomes unusable at 81 agents. This blocks all multi-team work.
  • Skill Palette v2 (P0) -- New grouping is needed before adding extension team skills. Current V2V phase grouping confuses non-product users.
  • Onboarding Flow v2 (P0) -- First impression for every new user. Must reflect "AI workforce" positioning.
  • Meeting Mode (P1) -- Needed for cross-team meetings. Not blocking single-agent interactions.
  • Context Panel (P1) -- Important for power users. Desktop-only initially.
  • Status Bar (P2) -- Nice to have. Can launch without it.
  • Assemble Dialog (P2) -- Power user feature. Can use text-based assembly first ("Assemble @agent1, @agent2...").
  • API Changes Required

    EndpointChange
    /api/skillsAdd domains: string[] field; add v2vPhase as secondary metadata
    /api/agentsAdd subgroup, teamColor, isGateway fields
    /api/context/summaryNew endpoint: Returns counts + recent items for context panel
    /api/onboarding/roleNew endpoint: POST to save role selection
    /api/onboarding/teamNew endpoint: POST to save team + create Stripe trial
    /api/onboarding/validate-keyNew endpoint: POST to validate API key
    /api/user/preferencesNew endpoint: GET/PUT for pinned skills, collapsed sections, etc.

    Schema Changes

    Add to users table:

    Shared Constants (New File)

    Create src/lib/constants/teams.ts:

    export const TEAM_COLORS = {
      product: { border: '#3b82f6', tint: 'rgba(59,130,246,0.06)' },
      design: { border: '#ec4899', tint: 'rgba(236,72,153,0.06)' },
      architecture: { border: '#64748b', tint: 'rgba(100,116,139,0.06)' },
      marketing: { border: '#f97316', tint: 'rgba(249,115,22,0.06)' },
      finance: { border: '#10b981', tint: 'rgba(16,185,129,0.06)' },
      legal: { border: '#8b5cf6', tint: 'rgba(139,92,246,0.06)' },
      operations: { border: '#f59e0b', tint: 'rgba(245,158,11,0.06)' },
      executive: { border: '#6366f1', tint: 'rgba(99,102,241,0.06)' },
      corpdev: { border: '#14b8a6', tint: 'rgba(20,184,166,0.06)' },
      it: { border: '#06b6d4', tint: 'rgba(6,182,212,0.06)' },
    } as const;
    


    Appendix: Copy Alignment Checklist

    Before implementing any user-facing text, verify against the positioning statement:

    Old Copy (avoid)New Copy (use)
    "Product Org OS""Legionis" or "your AI workforce"
    "14 agents""81 specialists" or "9 teams"
    "Product organization" (as the only value prop)"AI workforce" / "expert teams"
    "Deploy your AI product org""Assemble your AI workforce"
    "CLI power. Browser freedom.""Expert teams. On demand."
    "61 skills""80+ skills"
    "Built for product leaders""Built for knowledge workers"
    "Product Manager, VP Product..." (as the full roster)Reference the team concept, not just Product agents


    Document Owner: Interaction Designer (Design Team) Review: UX Lead + Dir PM before implementation Next Step: Component-level design specs for P0 items (Agent Selector v2, Skill Palette v2, Onboarding Flow v2)