@robbiesrobotics/alice-agents 1.5.7 → 1.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -2
- package/bin/alice-cloud.cjs +71 -55
- package/package.json +1 -1
- package/templates/skills/acculynx/SKILL.md +183 -0
- package/templates/skills/acculynx/references/analysis_template.py +116 -0
- package/templates/skills/acculynx/references/dashboard_page.tsx +641 -0
- package/templates/skills/claude-code/SKILL.md +2 -2
- package/templates/skills/coding-agent/SKILL.md +68 -0
- package/templates/skills/crawl4ai/SKILL.md +119 -0
- package/templates/skills/crawl4ai/scripts/crwl +3 -0
- package/templates/workspaces/accuscope/AGENTS.md +38 -0
- package/templates/workspaces/accuscope/FEEDBACK.md +27 -0
- package/templates/workspaces/accuscope/HEARTBEAT.md +26 -0
- package/templates/workspaces/accuscope/IDENTITY.md +48 -0
- package/templates/workspaces/accuscope/LEARNINGS.md +46 -0
- package/templates/workspaces/accuscope/MEMORY.md +47 -0
- package/templates/workspaces/accuscope/PLAYBOOK.md +65 -0
- package/templates/workspaces/accuscope/SOUL.md +40 -0
- package/templates/workspaces/accuscope/TOOLS.md +63 -0
- package/templates/workspaces/accuscope/USER.md +39 -0
- package/templates/workspaces/aiden/AGENTS.md +52 -0
- package/templates/workspaces/aiden/FEEDBACK.md +12 -0
- package/templates/workspaces/aiden/HEARTBEAT.md +9 -0
- package/templates/workspaces/aiden/IDENTITY.md +6 -0
- package/templates/workspaces/aiden/LEARNINGS.md +6 -0
- package/templates/workspaces/aiden/MEMORY.md +22 -0
- package/templates/workspaces/aiden/PLAYBOOK.md +16 -0
- package/templates/workspaces/aiden/SOUL.md +1 -1
- package/templates/workspaces/aiden/USER.md +17 -0
- package/templates/workspaces/alex/AGENTS.md +52 -0
- package/templates/workspaces/alex/FEEDBACK.md +11 -0
- package/templates/workspaces/alex/HEARTBEAT.md +9 -0
- package/templates/workspaces/alex/IDENTITY.md +6 -0
- package/templates/workspaces/alex/LEARNINGS.md +5 -0
- package/templates/workspaces/alex/MEMORY.md +22 -0
- package/templates/workspaces/alex/PLAYBOOK.md +16 -0
- package/templates/workspaces/alex/SOUL.md +1 -1
- package/templates/workspaces/alex/USER.md +13 -0
- package/templates/workspaces/aria/AGENTS.md +18 -0
- package/templates/workspaces/aria/FEEDBACK.md +12 -0
- package/templates/workspaces/aria/HEARTBEAT.md +32 -0
- package/templates/workspaces/aria/IDENTITY.md +12 -0
- package/templates/workspaces/aria/LEARNINGS.md +31 -0
- package/templates/workspaces/aria/MEMORY.md +29 -0
- package/templates/workspaces/aria/PLAYBOOK.md +71 -0
- package/templates/workspaces/aria/SOUL.md +57 -0
- package/templates/workspaces/aria/TOOLS.md +47 -0
- package/templates/workspaces/aria/USER.md +18 -0
- package/templates/workspaces/audrey/AGENTS.md +59 -0
- package/templates/workspaces/audrey/FEEDBACK.md +11 -0
- package/templates/workspaces/audrey/HEARTBEAT.md +9 -0
- package/templates/workspaces/audrey/IDENTITY.md +6 -0
- package/templates/workspaces/audrey/LEARNINGS.md +5 -0
- package/templates/workspaces/audrey/MEMORY.md +22 -0
- package/templates/workspaces/audrey/PLAYBOOK.md +16 -0
- package/templates/workspaces/audrey/SOUL.md +1 -1
- package/templates/workspaces/audrey/TOOLS.md +15 -0
- package/templates/workspaces/audrey/USER.md +13 -0
- package/templates/workspaces/avery/AGENTS.md +52 -0
- package/templates/workspaces/avery/FEEDBACK.md +12 -0
- package/templates/workspaces/avery/HEARTBEAT.md +5 -0
- package/templates/workspaces/avery/IDENTITY.md +6 -0
- package/templates/workspaces/avery/LEARNINGS.md +6 -0
- package/templates/workspaces/avery/MEMORY.md +22 -0
- package/templates/workspaces/avery/PLAYBOOK.md +16 -0
- package/templates/workspaces/avery/SOUL.md +1 -1
- package/templates/workspaces/avery/USER.md +17 -0
- package/templates/workspaces/avery/skills/claude-code/SKILL.md +38 -0
- package/templates/workspaces/avery/skills/claude-code/claude_code +55 -0
- package/templates/workspaces/caleb/AGENTS.md +52 -0
- package/templates/workspaces/caleb/FEEDBACK.md +11 -0
- package/templates/workspaces/caleb/HEARTBEAT.md +9 -0
- package/templates/workspaces/caleb/IDENTITY.md +6 -0
- package/templates/workspaces/caleb/LEARNINGS.md +5 -0
- package/templates/workspaces/caleb/MEMORY.md +22 -0
- package/templates/workspaces/caleb/PLAYBOOK.md +16 -0
- package/templates/workspaces/caleb/SOUL.md +1 -1
- package/templates/workspaces/caleb/TOOLS.md +30 -0
- package/templates/workspaces/caleb/USER.md +13 -0
- package/templates/workspaces/clara/AGENTS.md +59 -0
- package/templates/workspaces/clara/FEEDBACK.md +12 -0
- package/templates/workspaces/clara/HEARTBEAT.md +5 -0
- package/templates/workspaces/clara/IDENTITY.md +6 -0
- package/templates/workspaces/clara/LEARNINGS.md +6 -0
- package/templates/workspaces/clara/MEMORY.md +22 -0
- package/templates/workspaces/clara/PLAYBOOK.md +16 -0
- package/templates/workspaces/clara/SOUL.md +1 -1
- package/templates/workspaces/clara/TOOLS.md +15 -0
- package/templates/workspaces/clara/USER.md +17 -0
- package/templates/workspaces/daphne/AGENTS.md +59 -0
- package/templates/workspaces/daphne/FEEDBACK.md +18 -0
- package/templates/workspaces/daphne/HEARTBEAT.md +5 -0
- package/templates/workspaces/daphne/IDENTITY.md +6 -0
- package/templates/workspaces/daphne/LEARNINGS.md +6 -0
- package/templates/workspaces/daphne/MEMORY.md +22 -0
- package/templates/workspaces/daphne/PLAYBOOK.md +48 -0
- package/templates/workspaces/daphne/SOUL.md +1 -1
- package/templates/workspaces/daphne/TOOLS.md +15 -0
- package/templates/workspaces/daphne/USER.md +17 -0
- package/templates/workspaces/darius/AGENTS.md +52 -0
- package/templates/workspaces/darius/FEEDBACK.md +12 -0
- package/templates/workspaces/darius/HEARTBEAT.md +5 -0
- package/templates/workspaces/darius/IDENTITY.md +6 -0
- package/templates/workspaces/darius/LEARNINGS.md +6 -0
- package/templates/workspaces/darius/MEMORY.md +22 -0
- package/templates/workspaces/darius/PLAYBOOK.md +16 -0
- package/templates/workspaces/darius/SOUL.md +1 -1
- package/templates/workspaces/darius/USER.md +17 -0
- package/templates/workspaces/darius/skills/claude-code/SKILL.md +38 -0
- package/templates/workspaces/darius/skills/claude-code/claude_code +55 -0
- package/templates/workspaces/devon/AGENTS.md +52 -0
- package/templates/workspaces/devon/FEEDBACK.md +11 -0
- package/templates/workspaces/devon/HEARTBEAT.md +5 -0
- package/templates/workspaces/devon/IDENTITY.md +6 -0
- package/templates/workspaces/devon/LEARNINGS.md +11 -0
- package/templates/workspaces/devon/MEMORY.md +22 -0
- package/templates/workspaces/devon/PLAYBOOK.md +16 -0
- package/templates/workspaces/devon/SOUL.md +1 -1
- package/templates/workspaces/devon/USER.md +13 -0
- package/templates/workspaces/devon/check_github.py +12 -0
- package/templates/workspaces/devon/check_mc_env.py +30 -0
- package/templates/workspaces/devon/check_sb.py +34 -0
- package/templates/workspaces/devon/check_vercel.py +12 -0
- package/templates/workspaces/devon/get_mc_files.py +17 -0
- package/templates/workspaces/devon/write_heartbeat.py +67 -0
- package/templates/workspaces/dylan/.env.example +33 -0
- package/templates/workspaces/dylan/00007_verify_licenses_table.sql +100 -0
- package/templates/workspaces/dylan/AGENTS.md +52 -0
- package/templates/workspaces/dylan/FEEDBACK.md +28 -0
- package/templates/workspaces/dylan/HEARTBEAT.md +5 -0
- package/templates/workspaces/dylan/IDENTITY.md +6 -0
- package/templates/workspaces/dylan/LEARNINGS.md +70 -0
- package/templates/workspaces/dylan/MEMORY.md +22 -0
- package/templates/workspaces/dylan/PLAYBOOK.md +16 -0
- package/templates/workspaces/dylan/SOUL.md +1 -1
- package/templates/workspaces/dylan/STRIPE_PIPELINE.md +185 -0
- package/templates/workspaces/dylan/USER.md +17 -0
- package/templates/workspaces/dylan/n8n-stripe-welcome-workflow.json +123 -0
- package/templates/workspaces/dylan/skills/claude-code/SKILL.md +38 -0
- package/templates/workspaces/dylan/skills/claude-code/claude_code +55 -0
- package/templates/workspaces/dylan/stripe-webhook-handler.py +433 -0
- package/templates/workspaces/dylan/test_mock_webhook.py +103 -0
- package/templates/workspaces/elena/AGENTS.md +59 -0
- package/templates/workspaces/elena/FEEDBACK.md +11 -0
- package/templates/workspaces/elena/HEARTBEAT.md +9 -0
- package/templates/workspaces/elena/IDENTITY.md +6 -0
- package/templates/workspaces/elena/LEARNINGS.md +5 -0
- package/templates/workspaces/elena/MEMORY.md +22 -0
- package/templates/workspaces/elena/PLAYBOOK.md +16 -0
- package/templates/workspaces/elena/SOUL.md +1 -1
- package/templates/workspaces/elena/TOOLS.md +15 -0
- package/templates/workspaces/elena/USER.md +13 -0
- package/templates/workspaces/eva/AGENTS.md +59 -0
- package/templates/workspaces/eva/FEEDBACK.md +11 -0
- package/templates/workspaces/eva/HEARTBEAT.md +9 -0
- package/templates/workspaces/eva/IDENTITY.md +6 -0
- package/templates/workspaces/eva/LEARNINGS.md +5 -0
- package/templates/workspaces/eva/MEMORY.md +22 -0
- package/templates/workspaces/eva/PLAYBOOK.md +16 -0
- package/templates/workspaces/eva/SOUL.md +1 -1
- package/templates/workspaces/eva/TOOLS.md +15 -0
- package/templates/workspaces/eva/USER.md +13 -0
- package/templates/workspaces/felix/AGENTS.md +52 -0
- package/templates/workspaces/felix/FEEDBACK.md +11 -0
- package/templates/workspaces/felix/HEARTBEAT.md +5 -0
- package/templates/workspaces/felix/IDENTITY.md +6 -0
- package/templates/workspaces/felix/LEARNINGS.md +17 -0
- package/templates/workspaces/felix/MEMORY.md +22 -0
- package/templates/workspaces/felix/PLAYBOOK.md +16 -0
- package/templates/workspaces/felix/SOUL.md +1 -1
- package/templates/workspaces/felix/USER.md +13 -0
- package/templates/workspaces/felix/fidelia-psychology.html +1594 -0
- package/templates/workspaces/felix/task.txt +164 -0
- package/templates/workspaces/hannah/AGENTS.md +59 -0
- package/templates/workspaces/hannah/FEEDBACK.md +12 -0
- package/templates/workspaces/hannah/HEARTBEAT.md +5 -0
- package/templates/workspaces/hannah/IDENTITY.md +6 -0
- package/templates/workspaces/hannah/LEARNINGS.md +6 -0
- package/templates/workspaces/hannah/MEMORY.md +22 -0
- package/templates/workspaces/hannah/PLAYBOOK.md +16 -0
- package/templates/workspaces/hannah/SOUL.md +1 -1
- package/templates/workspaces/hannah/TOOLS.md +15 -0
- package/templates/workspaces/hannah/USER.md +17 -0
- package/templates/workspaces/isaac/AGENTS.md +52 -0
- package/templates/workspaces/isaac/FEEDBACK.md +12 -0
- package/templates/workspaces/isaac/HEARTBEAT.md +9 -0
- package/templates/workspaces/isaac/IDENTITY.md +6 -0
- package/templates/workspaces/isaac/LEARNINGS.md +6 -0
- package/templates/workspaces/isaac/MEMORY.md +22 -0
- package/templates/workspaces/isaac/PLAYBOOK.md +16 -0
- package/templates/workspaces/isaac/SOUL.md +1 -1
- package/templates/workspaces/isaac/USER.md +17 -0
- package/templates/workspaces/isaac/skills/claude-code/SKILL.md +38 -0
- package/templates/workspaces/isaac/skills/claude-code/claude_code +55 -0
- package/templates/workspaces/logan/AGENTS.md +59 -0
- package/templates/workspaces/logan/FEEDBACK.md +11 -0
- package/templates/workspaces/logan/HEARTBEAT.md +9 -0
- package/templates/workspaces/logan/IDENTITY.md +6 -0
- package/templates/workspaces/logan/LEARNINGS.md +5 -0
- package/templates/workspaces/logan/MEMORY.md +22 -0
- package/templates/workspaces/logan/PLAYBOOK.md +16 -0
- package/templates/workspaces/logan/SOUL.md +1 -1
- package/templates/workspaces/logan/TOOLS.md +15 -0
- package/templates/workspaces/logan/USER.md +13 -0
- package/templates/workspaces/maxxipro/AGENTS.md +29 -0
- package/templates/workspaces/maxxipro/FEEDBACK.md +19 -0
- package/templates/workspaces/maxxipro/HEARTBEAT.md +22 -0
- package/templates/workspaces/maxxipro/IDENTITY.md +35 -0
- package/templates/workspaces/maxxipro/KNOWLEDGE.md +335 -0
- package/templates/workspaces/maxxipro/LEARNINGS.md +47 -0
- package/templates/workspaces/maxxipro/MEMORY.md +60 -0
- package/templates/workspaces/maxxipro/OUTREACH_TEMPLATES.md +143 -0
- package/templates/workspaces/maxxipro/PLAYBOOK.md +81 -0
- package/templates/workspaces/maxxipro/SOUL.md +146 -0
- package/templates/workspaces/maxxipro/TOOLS.md +81 -0
- package/templates/workspaces/maxxipro/USER.md +40 -0
- package/templates/workspaces/morgan/AGENTS.md +59 -0
- package/templates/workspaces/morgan/FEEDBACK.md +19 -0
- package/templates/workspaces/morgan/HEARTBEAT.md +5 -0
- package/templates/workspaces/morgan/IDENTITY.md +6 -0
- package/templates/workspaces/morgan/LEARNINGS.md +18 -0
- package/templates/workspaces/morgan/MEMORY.md +22 -0
- package/templates/workspaces/morgan/PLAYBOOK.md +16 -0
- package/templates/workspaces/morgan/SOUL.md +1 -1
- package/templates/workspaces/morgan/TOOLS.md +15 -0
- package/templates/workspaces/morgan/USER.md +13 -0
- package/templates/workspaces/nadia/AGENTS.md +59 -0
- package/templates/workspaces/nadia/FEEDBACK.md +12 -0
- package/templates/workspaces/nadia/HEARTBEAT.md +5 -0
- package/templates/workspaces/nadia/IDENTITY.md +6 -0
- package/templates/workspaces/nadia/LEARNINGS.md +6 -0
- package/templates/workspaces/nadia/MEMORY.md +22 -0
- package/templates/workspaces/nadia/PLAYBOOK.md +16 -0
- package/templates/workspaces/nadia/SOUL.md +1 -1
- package/templates/workspaces/nadia/TOOLS.md +15 -0
- package/templates/workspaces/nadia/USER.md +13 -0
- package/templates/workspaces/nate/AGENTS.md +24 -0
- package/templates/workspaces/nate/FEEDBACK.md +12 -0
- package/templates/workspaces/nate/HEARTBEAT.md +33 -0
- package/templates/workspaces/nate/IDENTITY.md +15 -0
- package/templates/workspaces/nate/LEARNINGS.md +33 -0
- package/templates/workspaces/nate/MEMORY.md +39 -0
- package/templates/workspaces/nate/PLAYBOOK.md +160 -0
- package/templates/workspaces/nate/SOUL.md +50 -0
- package/templates/workspaces/nate/TOOLS.md +111 -0
- package/templates/workspaces/nate/USER.md +32 -0
- package/templates/workspaces/olivia/.last-openclaw-version +1 -0
- package/templates/workspaces/olivia/.npmrc.tmp +0 -0
- package/templates/workspaces/olivia/AGENTS.md +77 -0
- package/templates/workspaces/olivia/ALPHA_CODING_BENCHMARK.txt +148 -0
- package/templates/workspaces/olivia/ALPHA_MODEL_GUIDE.md +393 -0
- package/templates/workspaces/olivia/FEEDBACK.md +13 -0
- package/templates/workspaces/olivia/HEADTOHEAD_BENCHMARK.txt +1289 -0
- package/templates/workspaces/olivia/HEARTBEAT.md +267 -0
- package/templates/workspaces/olivia/IDENTITY.md +6 -0
- package/templates/workspaces/olivia/LEARNINGS.md +708 -0
- package/templates/workspaces/olivia/MEMORY.md +202 -0
- package/templates/workspaces/olivia/MISSION_CONTROL_DESIGN_SPEC_v1.md +1143 -0
- package/templates/workspaces/olivia/MVP-COMPLETION-SUMMARY.md +175 -0
- package/templates/workspaces/olivia/NETWORK_IMPLEMENTATION_PLAN.md +1556 -0
- package/templates/workspaces/olivia/NEW_NODES_BENCHMARK.txt +947 -0
- package/templates/workspaces/olivia/PLAYBOOK.md +42 -0
- package/templates/workspaces/olivia/SELF-HEALING-COMPLETE.md +150 -0
- package/templates/workspaces/olivia/SOUL.md +8 -8
- package/templates/workspaces/olivia/TOOLS.md +15 -0
- package/templates/workspaces/olivia/USER.md +17 -0
- package/templates/workspaces/olivia/alicefleet-supabase-credentials.md +50 -0
- package/templates/workspaces/olivia/dzombo-copy-rewrite.md +115 -0
- package/templates/workspaces/olivia/dzombo-implementation-plan.md +1248 -0
- package/templates/workspaces/olivia/fidelia-psychology.html +1594 -0
- package/templates/workspaces/olivia/lead_debug.png +0 -0
- package/templates/workspaces/olivia/minimatch-10.2.4.tgz +0 -0
- package/templates/workspaces/olivia/operation-bllm-research.md +157 -0
- package/templates/workspaces/olivia/qa-audit-mission-control-v2.md +538 -0
- package/templates/workspaces/olivia/roofmaxx_logo.svg +1 -0
- package/templates/workspaces/olivia/roofmaxx_social.jpg +0 -0
- package/templates/workspaces/olivia/skills/1password/SKILL.md +53 -0
- package/templates/workspaces/olivia/skills/1password/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/README.md +57 -0
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/SKILL.md +534 -0
- package/templates/workspaces/olivia/skills/afrexai-recruiting-engine/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/agent-security/SKILL.md +69 -0
- package/templates/workspaces/olivia/skills/agent-security/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/agentic-security-audit/SKILL.md +855 -0
- package/templates/workspaces/olivia/skills/agentic-security-audit/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/ai-automation-consulting/SKILL.md +67 -0
- package/templates/workspaces/olivia/skills/ai-automation-consulting/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/ai-automation-consulting/skill.json +12 -0
- package/templates/workspaces/olivia/skills/ai-presentation-maker/SKILL.md +1104 -0
- package/templates/workspaces/olivia/skills/ai-presentation-maker/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/ai-productivity-audit/SKILL.md +181 -0
- package/templates/workspaces/olivia/skills/ai-productivity-audit/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/ai-researcher/README.md +31 -0
- package/templates/workspaces/olivia/skills/ai-researcher/SKILL.md +59 -0
- package/templates/workspaces/olivia/skills/ai-researcher/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/ai-seo-writer/README.md +19 -0
- package/templates/workspaces/olivia/skills/ai-seo-writer/SKILL.md +100 -0
- package/templates/workspaces/olivia/skills/ai-seo-writer/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/analytics-tracking-2/SKILL.md +309 -0
- package/templates/workspaces/olivia/skills/analytics-tracking-2/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/api-doc-writer/SKILL.md +232 -0
- package/templates/workspaces/olivia/skills/api-doc-writer/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/api-generator/SKILL.md +49 -0
- package/templates/workspaces/olivia/skills/api-generator/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/api-generator/tips.md +10 -0
- package/templates/workspaces/olivia/skills/apple-notes/SKILL.md +50 -0
- package/templates/workspaces/olivia/skills/apple-notes/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/apple-reminders/SKILL.md +67 -0
- package/templates/workspaces/olivia/skills/apple-reminders/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/automation-workflows/SKILL.md +267 -0
- package/templates/workspaces/olivia/skills/automation-workflows/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/autoresearch/SKILL.md +46 -0
- package/templates/workspaces/olivia/skills/autoresearch/aria_write.py +148 -0
- package/templates/workspaces/olivia/skills/autoresearch/autoresearch.py +75 -0
- package/templates/workspaces/olivia/skills/azure-devops/SKILL.md +115 -0
- package/templates/workspaces/olivia/skills/azure-devops/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/blogwatcher/SKILL.md +46 -0
- package/templates/workspaces/olivia/skills/blogwatcher/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/blucli/SKILL.md +27 -0
- package/templates/workspaces/olivia/skills/blucli/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/check-analytics/SKILL.md +92 -0
- package/templates/workspaces/olivia/skills/check-analytics/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/cloud-architect/SKILL.md +89 -0
- package/templates/workspaces/olivia/skills/cloud-architect/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/cloud-infra-automation/SKILL.md +50 -0
- package/templates/workspaces/olivia/skills/cloud-infra-automation/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/cloud-storage/SKILL.md +61 -0
- package/templates/workspaces/olivia/skills/cloud-storage/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/cloud-storage/auth.md +97 -0
- package/templates/workspaces/olivia/skills/cloud-storage/costs.md +88 -0
- package/templates/workspaces/olivia/skills/cloud-storage/providers.md +55 -0
- package/templates/workspaces/olivia/skills/copywriting-pro/SKILL.md +107 -0
- package/templates/workspaces/olivia/skills/copywriting-pro/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/data-analyst-pro/SKILL.md +21 -0
- package/templates/workspaces/olivia/skills/data-analyst-pro/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/database-designer/README.md +388 -0
- package/templates/workspaces/olivia/skills/database-designer/SKILL.md +66 -0
- package/templates/workspaces/olivia/skills/database-designer/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/database-designer/index_optimizer.py +926 -0
- package/templates/workspaces/olivia/skills/database-designer/migration_generator.py +1199 -0
- package/templates/workspaces/olivia/skills/database-designer/schema_analyzer.py +982 -0
- package/templates/workspaces/olivia/skills/deploy-agent/SKILL.md +255 -0
- package/templates/workspaces/olivia/skills/deploy-agent/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/devops-automation-pack/SKILL.md +72 -0
- package/templates/workspaces/olivia/skills/devops-automation-pack/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/devops-automation-pack/deploy.sh +0 -0
- package/templates/workspaces/olivia/skills/financial-analysis-agent/SKILL.md +489 -0
- package/templates/workspaces/olivia/skills/financial-analysis-agent/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/README.md +72 -0
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/SKILL.md +226 -0
- package/templates/workspaces/olivia/skills/gdpr-compliance-tracker/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/gifgrep/SKILL.md +47 -0
- package/templates/workspaces/olivia/skills/gifgrep/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/github/SKILL.md +47 -0
- package/templates/workspaces/olivia/skills/github/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/gog/SKILL.md +36 -0
- package/templates/workspaces/olivia/skills/gog/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/growth-strategy-hub/SKILL.md +135 -0
- package/templates/workspaces/olivia/skills/growth-strategy-hub/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/growth-strategy-hub/metadata.json +4 -0
- package/templates/workspaces/olivia/skills/hetzner-cloud/SKILL.md +130 -0
- package/templates/workspaces/olivia/skills/hetzner-cloud/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/himalaya/SKILL.md +217 -0
- package/templates/workspaces/olivia/skills/himalaya/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/hotel-recommendation/SKILL.md +117 -0
- package/templates/workspaces/olivia/skills/hotel-recommendation/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/hr-policy-generator/SKILL.md +54 -0
- package/templates/workspaces/olivia/skills/hr-policy-generator/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/human-writing/SKILL.md +41 -0
- package/templates/workspaces/olivia/skills/human-writing/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/imsg/SKILL.md +25 -0
- package/templates/workspaces/olivia/skills/imsg/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/in-depth-research/SKILL.md +124 -0
- package/templates/workspaces/olivia/skills/in-depth-research/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/in-depth-research/methodology.md +75 -0
- package/templates/workspaces/olivia/skills/in-depth-research/output-formats.md +168 -0
- package/templates/workspaces/olivia/skills/in-depth-research/sources.md +80 -0
- package/templates/workspaces/olivia/skills/javascript-skills/README.md +71 -0
- package/templates/workspaces/olivia/skills/javascript-skills/SKILL.md +746 -0
- package/templates/workspaces/olivia/skills/javascript-skills/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/SKILL.md +147 -0
- package/templates/workspaces/olivia/skills/leadership-strategy-playbook/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/market-research-agent/README.md +29 -0
- package/templates/workspaces/olivia/skills/market-research-agent/SKILL.md +52 -0
- package/templates/workspaces/olivia/skills/market-research-agent/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/marketing-analytics/SKILL.md +74 -0
- package/templates/workspaces/olivia/skills/marketing-analytics/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/marketing-master-io/SKILL.md +125 -0
- package/templates/workspaces/olivia/skills/marketing-master-io/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/SKILL.md +398 -0
- package/templates/workspaces/olivia/skills/marketing-strategy-pmm/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/meta-ads-analytics/SKILL.md +53 -0
- package/templates/workspaces/olivia/skills/meta-ads-analytics/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/obsidian/SKILL.md +55 -0
- package/templates/workspaces/olivia/skills/obsidian/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/openclaw-accounting/SKILL.md +125 -0
- package/templates/workspaces/olivia/skills/openclaw-accounting/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANGELOG.md +35 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/CHANNELLOG.md +73 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/README.md +161 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/SKILL.md +130 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/config.json +36 -0
- package/templates/workspaces/olivia/skills/openclaw-security-toolkit/metadata.json +19 -0
- package/templates/workspaces/olivia/skills/openhue/SKILL.md +30 -0
- package/templates/workspaces/olivia/skills/openhue/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/orgx-operations-agent/SKILL.md +41 -0
- package/templates/workspaces/olivia/skills/orgx-operations-agent/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/outreach/SKILL.md +84 -0
- package/templates/workspaces/olivia/skills/outreach/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/outreach/by-type.md +166 -0
- package/templates/workspaces/olivia/skills/outreach/templates.md +154 -0
- package/templates/workspaces/olivia/skills/outreach/tracking.md +145 -0
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/SKILL.md +38 -0
- package/templates/workspaces/olivia/skills/persona-hr-coordinator/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/personal-productivity/SKILL.md +161 -0
- package/templates/workspaces/olivia/skills/personal-productivity/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/personal-productivity/index.js +363 -0
- package/templates/workspaces/olivia/skills/personal-productivity/package.json +15 -0
- package/templates/workspaces/olivia/skills/personal-travel/README.md +34 -0
- package/templates/workspaces/olivia/skills/personal-travel/SKILL.md +46 -0
- package/templates/workspaces/olivia/skills/personal-travel/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/SKILL.md +185 -0
- package/templates/workspaces/olivia/skills/presentation-html-generator-skill/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/product-manager/SKILL.md +77 -0
- package/templates/workspaces/olivia/skills/product-manager/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/quant-strategy/SKILL.md +28 -0
- package/templates/workspaces/olivia/skills/quant-strategy/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/README.md +29 -0
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/SKILL.md +45 -0
- package/templates/workspaces/olivia/skills/sales-pipeline-tracker/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/security-auditor/SKILL.md +399 -0
- package/templates/workspaces/olivia/skills/security-auditor/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/security-hardening/SKILL.md +296 -0
- package/templates/workspaces/olivia/skills/security-hardening/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/security-scanner/SKILL.md +67 -0
- package/templates/workspaces/olivia/skills/security-scanner/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/seo-optimization/SKILL.md +31 -0
- package/templates/workspaces/olivia/skills/seo-optimization/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/service-booking/SKILL.md +193 -0
- package/templates/workspaces/olivia/skills/service-booking/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/sme-hr-automation/SKILL.md +131 -0
- package/templates/workspaces/olivia/skills/sme-hr-automation/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/social-media-scheduler/README.md +29 -0
- package/templates/workspaces/olivia/skills/social-media-scheduler/SKILL.md +49 -0
- package/templates/workspaces/olivia/skills/social-media-scheduler/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/sonoscli/SKILL.md +26 -0
- package/templates/workspaces/olivia/skills/sonoscli/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/strategy-advisor/SKILL.md +33 -0
- package/templates/workspaces/olivia/skills/strategy-advisor/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/summarize/SKILL.md +49 -0
- package/templates/workspaces/olivia/skills/summarize/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/things-mac/SKILL.md +61 -0
- package/templates/workspaces/olivia/skills/things-mac/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/SKILL.md +121 -0
- package/templates/workspaces/olivia/skills/travel-itinerary-planner/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/travel-manager/SKILL.md +36 -0
- package/templates/workspaces/olivia/skills/travel-manager/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/travel-planning/SKILL.md +238 -0
- package/templates/workspaces/olivia/skills/travel-planning/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/travel-planning/booking-guide.md +91 -0
- package/templates/workspaces/olivia/skills/travel-planning/memory-template.md +111 -0
- package/templates/workspaces/olivia/skills/travel-planning/multi-city.md +131 -0
- package/templates/workspaces/olivia/skills/travel-planning/packing-templates.md +155 -0
- package/templates/workspaces/olivia/skills/travel-planning/setup.md +66 -0
- package/templates/workspaces/olivia/skills/update-it-all/SKILL.md +143 -0
- package/templates/workspaces/olivia/skills/update-it-all/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/voice/SKILL.md +62 -0
- package/templates/workspaces/olivia/skills/weather/SKILL.md +49 -0
- package/templates/workspaces/olivia/skills/weather/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/web-researcher/SKILL.md +21 -0
- package/templates/workspaces/olivia/skills/web-researcher/_meta.json +6 -0
- package/templates/workspaces/olivia/skills/website-seo/SKILL.md +284 -0
- package/templates/workspaces/olivia/skills/website-seo/_meta.json +6 -0
- package/templates/workspaces/olivia/stripe-welcome-n8n.json +103 -0
- package/templates/workspaces/olivia/test2.wav.wav +0 -0
- package/templates/workspaces/olivia/test_speech.json +1 -0
- package/templates/workspaces/olivia/test_speech.srt +0 -0
- package/templates/workspaces/olivia/test_speech.tsv +1 -0
- package/templates/workspaces/olivia/test_speech.txt +0 -0
- package/templates/workspaces/olivia/test_speech.vtt +2 -0
- package/templates/workspaces/owen/AGENTS.md +59 -0
- package/templates/workspaces/owen/FEEDBACK.md +12 -0
- package/templates/workspaces/owen/HEARTBEAT.md +5 -0
- package/templates/workspaces/owen/IDENTITY.md +6 -0
- package/templates/workspaces/owen/LEARNINGS.md +46 -0
- package/templates/workspaces/owen/MEMORY.md +22 -0
- package/templates/workspaces/owen/PLAYBOOK.md +16 -0
- package/templates/workspaces/owen/SOUL.md +1 -1
- package/templates/workspaces/owen/TOOLS.md +15 -0
- package/templates/workspaces/owen/USER.md +17 -0
- package/templates/workspaces/parker/AGENTS.md +59 -0
- package/templates/workspaces/parker/FEEDBACK.md +11 -0
- package/templates/workspaces/parker/HEARTBEAT.md +5 -0
- package/templates/workspaces/parker/IDENTITY.md +6 -0
- package/templates/workspaces/parker/LEARNINGS.md +17 -0
- package/templates/workspaces/parker/MEMORY.md +22 -0
- package/templates/workspaces/parker/PLAYBOOK.md +16 -0
- package/templates/workspaces/parker/SOUL.md +1 -1
- package/templates/workspaces/parker/TOOLS.md +15 -0
- package/templates/workspaces/parker/USER.md +13 -0
- package/templates/workspaces/quinn/AGENTS.md +52 -0
- package/templates/workspaces/quinn/FEEDBACK.md +11 -0
- package/templates/workspaces/quinn/HEARTBEAT.md +5 -0
- package/templates/workspaces/quinn/IDENTITY.md +6 -0
- package/templates/workspaces/quinn/LEARNINGS.md +35 -0
- package/templates/workspaces/quinn/MEMORY.md +22 -0
- package/templates/workspaces/quinn/PLAYBOOK.md +16 -0
- package/templates/workspaces/quinn/SOUL.md +1 -1
- package/templates/workspaces/quinn/USER.md +17 -0
- package/templates/workspaces/quinn/alice-login-page.png +0 -0
- package/templates/workspaces/rowan/AGENTS.md +59 -0
- package/templates/workspaces/rowan/FEEDBACK.md +12 -0
- package/templates/workspaces/rowan/HEARTBEAT.md +5 -0
- package/templates/workspaces/rowan/IDENTITY.md +6 -0
- package/templates/workspaces/rowan/LEARNINGS.md +12 -0
- package/templates/workspaces/rowan/MEMORY.md +22 -0
- package/templates/workspaces/rowan/PLAYBOOK.md +16 -0
- package/templates/workspaces/rowan/SOUL.md +1 -1
- package/templates/workspaces/rowan/USER.md +17 -0
- package/templates/workspaces/selena/AGENTS.md +59 -0
- package/templates/workspaces/selena/FEEDBACK.md +12 -0
- package/templates/workspaces/selena/HEARTBEAT.md +5 -0
- package/templates/workspaces/selena/IDENTITY.md +6 -0
- package/templates/workspaces/selena/LEARNINGS.md +24 -0
- package/templates/workspaces/selena/MEMORY.md +22 -0
- package/templates/workspaces/selena/PLAYBOOK.md +16 -0
- package/templates/workspaces/selena/SOUL.md +1 -1
- package/templates/workspaces/selena/USER.md +17 -0
- package/templates/workspaces/selena/kids-ai-security-compliance-plan.md +791 -0
- package/templates/workspaces/selena/kidspark-coppa-compliance-audit.md +866 -0
- package/templates/workspaces/sloane/AGENTS.md +59 -0
- package/templates/workspaces/sloane/FEEDBACK.md +12 -0
- package/templates/workspaces/sloane/HEARTBEAT.md +9 -0
- package/templates/workspaces/sloane/IDENTITY.md +6 -0
- package/templates/workspaces/sloane/LEARNINGS.md +6 -0
- package/templates/workspaces/sloane/MEMORY.md +22 -0
- package/templates/workspaces/sloane/PLAYBOOK.md +16 -0
- package/templates/workspaces/sloane/SOUL.md +1 -1
- package/templates/workspaces/sloane/TOOLS.md +15 -0
- package/templates/workspaces/sloane/USER.md +13 -0
- package/templates/workspaces/smoketestagent/AGENTS.md +52 -0
- package/templates/workspaces/smoketestagent/FEEDBACK.md +3 -0
- package/templates/workspaces/smoketestagent/HEARTBEAT.md +14 -0
- package/templates/workspaces/smoketestagent/IDENTITY.md +6 -0
- package/templates/workspaces/smoketestagent/LEARNINGS.md +3 -0
- package/templates/workspaces/smoketestagent/MEMORY.md +24 -0
- package/templates/workspaces/smoketestagent/PLAYBOOK.md +7 -0
- package/templates/workspaces/smoketestagent/SOUL.md +32 -0
- package/templates/workspaces/smoketestagent/TOOLS.md +13 -0
- package/templates/workspaces/smoketestagent/USER.md +5 -0
- package/templates/workspaces/sophie/AGENTS.md +59 -0
- package/templates/workspaces/sophie/FEEDBACK.md +12 -0
- package/templates/workspaces/sophie/HEARTBEAT.md +9 -0
- package/templates/workspaces/sophie/IDENTITY.md +6 -0
- package/templates/workspaces/sophie/LEARNINGS.md +6 -0
- package/templates/workspaces/sophie/MEMORY.md +22 -0
- package/templates/workspaces/sophie/PLAYBOOK.md +16 -0
- package/templates/workspaces/sophie/SOUL.md +1 -1
- package/templates/workspaces/sophie/TOOLS.md +15 -0
- package/templates/workspaces/sophie/USER.md +17 -0
- package/templates/workspaces/tommy/AGENTS.md +59 -0
- package/templates/workspaces/tommy/FEEDBACK.md +12 -0
- package/templates/workspaces/tommy/HEARTBEAT.md +9 -0
- package/templates/workspaces/tommy/IDENTITY.md +6 -0
- package/templates/workspaces/tommy/LEARNINGS.md +6 -0
- package/templates/workspaces/tommy/MEMORY.md +22 -0
- package/templates/workspaces/tommy/PLAYBOOK.md +16 -0
- package/templates/workspaces/tommy/SOUL.md +1 -1
- package/templates/workspaces/tommy/TOOLS.md +15 -0
- package/templates/workspaces/tommy/USER.md +17 -0
- package/templates/workspaces/uma/AGENTS.md +59 -0
- package/templates/workspaces/uma/FEEDBACK.md +11 -0
- package/templates/workspaces/uma/HEARTBEAT.md +5 -0
- package/templates/workspaces/uma/IDENTITY.md +6 -0
- package/templates/workspaces/uma/LEARNINGS.md +11 -0
- package/templates/workspaces/uma/MEMORY.md +22 -0
- package/templates/workspaces/uma/PLAYBOOK.md +16 -0
- package/templates/workspaces/uma/SOUL.md +1 -1
- package/templates/workspaces/uma/TOOLS.md +15 -0
- package/templates/workspaces/uma/USER.md +13 -0
|
@@ -0,0 +1,1143 @@
|
|
|
1
|
+
# Mission Control Pro — Complete Design Spec v1.0
|
|
2
|
+
**Author:** Nadia (A.L.I.C.E. Design & UX Specialist)
|
|
3
|
+
**Status:** LOCKED — Felix implements from this. No design decisions during implementation.
|
|
4
|
+
**Date:** 2026-03-18
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## TABLE OF CONTENTS
|
|
9
|
+
|
|
10
|
+
1. [Emotional Target & Brand Philosophy](#1-emotional-target--brand-philosophy)
|
|
11
|
+
2. [Design Token System](#2-design-token-system)
|
|
12
|
+
3. [Brand Expression Guidelines](#3-brand-expression-guidelines)
|
|
13
|
+
4. [Global Component Standards](#4-global-component-standards)
|
|
14
|
+
5. [Mobile-First Breakpoints](#5-mobile-first-breakpoints)
|
|
15
|
+
6. [Loading State Standard](#6-loading-state-standard)
|
|
16
|
+
7. [Error State Standard](#7-error-state-standard)
|
|
17
|
+
8. [Motion & Animation Principles](#8-motion--animation-principles)
|
|
18
|
+
9. [First Login Experience](#9-first-login-experience)
|
|
19
|
+
10. [Page Specs](#10-page-specs)
|
|
20
|
+
- [Login](#101-login)
|
|
21
|
+
- [Home (Dashboard)](#102-home-dashboard)
|
|
22
|
+
- [My Team](#103-my-team)
|
|
23
|
+
- [Sessions](#104-sessions)
|
|
24
|
+
- [Approvals](#105-approvals)
|
|
25
|
+
- [Workflows](#106-workflows)
|
|
26
|
+
- [Settings](#107-settings)
|
|
27
|
+
11. [Copy & Language Standards](#11-copy--language-standards)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 1. EMOTIONAL TARGET & BRAND PHILOSOPHY
|
|
32
|
+
|
|
33
|
+
### The Emotional Target
|
|
34
|
+
|
|
35
|
+
A user in Mission Control should feel:
|
|
36
|
+
- **In control** — I can see everything, I can act on anything
|
|
37
|
+
- **Informed** — I know what's happening right now, without digging
|
|
38
|
+
- **Capable** — My team is running; I'm the one making it go
|
|
39
|
+
- **Present** — This place feels alive, not archival
|
|
40
|
+
|
|
41
|
+
A user should NOT feel:
|
|
42
|
+
- Overwhelmed by data density
|
|
43
|
+
- Confused about what to do next
|
|
44
|
+
- Like they're managing tickets in a queue
|
|
45
|
+
- Like they're looking at logs from a dead process
|
|
46
|
+
|
|
47
|
+
### The Core Brand Story
|
|
48
|
+
|
|
49
|
+
A.L.I.C.E. is a team of AI specialists, not a tool. Mission Control is where you manage that team. The design must reinforce this mental model at every touchpoint:
|
|
50
|
+
|
|
51
|
+
- **Language:** "Your team" not "your agents." "In a session" not "running." "Waiting on you" not "pending."
|
|
52
|
+
- **Presence:** Active agents should pulse. Running sessions should show live tickers. The UI communicates that your team is already working — you're checking in on them.
|
|
53
|
+
- **Structure:** The layout should feel like a command center, not an admin panel. Information hierarchy matters: status first, then detail.
|
|
54
|
+
|
|
55
|
+
### Palette Semantics (NON-NEGOTIABLE)
|
|
56
|
+
|
|
57
|
+
| Color | Meaning | Do | Don't |
|
|
58
|
+
|-------|---------|-----|-------|
|
|
59
|
+
| Emerald-500 (`#00bb7f`) | Alive, working, healthy, success | Active status dots, success confirmations, primary CTAs | Decorative accents, borders for style |
|
|
60
|
+
| Zinc-950/900 | Infrastructure, structure, the container | Backgrounds, surfaces | Text |
|
|
61
|
+
| Zinc-400/500 | Secondary information, metadata | Supporting copy, timestamps | Primary actions |
|
|
62
|
+
| Red-500 | Error, failure, danger | Error states only | Warning states |
|
|
63
|
+
| Amber-400 | Warning, attention needed | Warnings, degraded states | Errors |
|
|
64
|
+
| Blue-400 | Pending, in-progress, informational | Loading, pending approvals | Success |
|
|
65
|
+
|
|
66
|
+
**The rule:** If you're using emerald, it must mean something is alive or succeeded. If nothing is alive or succeeded, don't use emerald.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## 2. DESIGN TOKEN SYSTEM
|
|
71
|
+
|
|
72
|
+
### Canonical Token Values
|
|
73
|
+
|
|
74
|
+
```css
|
|
75
|
+
/* Backgrounds */
|
|
76
|
+
--bg-base: #09090b; /* zinc-950 — page background */
|
|
77
|
+
--surface-0: #09090b; /* zinc-950 — same as base */
|
|
78
|
+
--surface-1: #18181b; /* zinc-900 — cards, panels */
|
|
79
|
+
--surface-2: #27272a; /* zinc-800 — inputs, code blocks, nested surfaces */
|
|
80
|
+
--surface-3: #3f3f46; /* zinc-700 — hover states on surface-2 */
|
|
81
|
+
|
|
82
|
+
/* Text */
|
|
83
|
+
--text-primary: #fafafa; /* zinc-50 — headings, important body */
|
|
84
|
+
--text-secondary: #a1a1aa; /* zinc-400 — supporting text, labels */
|
|
85
|
+
--text-tertiary: #71717a; /* zinc-500 — placeholders, disabled, metadata */
|
|
86
|
+
|
|
87
|
+
/* Borders */
|
|
88
|
+
--border-subtle: rgba(39,39,42,0.5); /* zinc-800/50 */
|
|
89
|
+
--border-default: #3f3f46; /* zinc-700 */
|
|
90
|
+
--border-strong: #52525b; /* zinc-600 */
|
|
91
|
+
|
|
92
|
+
/* Accent */
|
|
93
|
+
--accent: #00bb7f; /* emerald-500 — primary actions, active state */
|
|
94
|
+
--accent-hover: #00a36e; /* emerald-600 — hover on accent elements */
|
|
95
|
+
--accent-subtle: rgba(0,187,127,0.1); /* emerald for backgrounds/glows */
|
|
96
|
+
--accent-text: #00bb7f; /* emerald text on dark surfaces */
|
|
97
|
+
|
|
98
|
+
/* Status */
|
|
99
|
+
--status-active: #00bb7f; /* emerald-500 */
|
|
100
|
+
--status-error: #ef4444; /* red-500 */
|
|
101
|
+
--status-warn: #fbbf24; /* amber-400 */
|
|
102
|
+
--status-pending: #60a5fa; /* blue-400 */
|
|
103
|
+
--status-idle: #52525b; /* zinc-600 */
|
|
104
|
+
|
|
105
|
+
/* Agent identity colors (intentional purple spectrum) */
|
|
106
|
+
--agent-0: #8b5cf6; /* violet-500 */
|
|
107
|
+
--agent-1: #a855f7; /* purple-500 */
|
|
108
|
+
--agent-2: #c084fc; /* purple-400 */
|
|
109
|
+
--agent-3: #d946ef; /* fuchsia-500 */
|
|
110
|
+
--agent-4: #e879f9; /* fuchsia-400 */
|
|
111
|
+
--agent-5: #7c3aed; /* violet-600 */
|
|
112
|
+
--agent-6: #9333ea; /* purple-600 */
|
|
113
|
+
--agent-7: #a21caf; /* fuchsia-700 */
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### Token Usage Rules
|
|
117
|
+
|
|
118
|
+
1. Never use raw hex values in components — always use tokens
|
|
119
|
+
2. `--accent` is reserved for interactive/status meaning only
|
|
120
|
+
3. Surface nesting: bg-base → surface-1 → surface-2 (max 3 levels deep)
|
|
121
|
+
4. Agent colors are assigned by index at render time, stable per session
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 3. BRAND EXPRESSION GUIDELINES
|
|
126
|
+
|
|
127
|
+
### The "A" Logo Mark
|
|
128
|
+
|
|
129
|
+
**Logo anatomy:**
|
|
130
|
+
- Square emerald box (`--accent`, 4px border-radius)
|
|
131
|
+
- White "A" letterform, bold, centered
|
|
132
|
+
- The box IS the brand mark — it appears everywhere the brand needs to be present
|
|
133
|
+
|
|
134
|
+
**Usage rules:**
|
|
135
|
+
|
|
136
|
+
| Context | Variant | Size | Spec |
|
|
137
|
+
|---------|---------|------|------|
|
|
138
|
+
| Sidebar (expanded) | Icon + wordmark "A.L.I.C.E." | Icon: 28×28px, text: 16px semibold | 8px gap between icon and text |
|
|
139
|
+
| Sidebar (collapsed) | Icon only | 28×28px | Centered in sidebar |
|
|
140
|
+
| Login page | Icon + wordmark stacked | Icon: 48×48px, text: 24px semibold | 12px gap, centered |
|
|
141
|
+
| Browser tab (favicon) | Icon only | 16×16px | |
|
|
142
|
+
| Email/notification | Icon only (if supported) | 32×32px | |
|
|
143
|
+
|
|
144
|
+
**Spacing rule:** The logo always has at least its own width in clear space on each side.
|
|
145
|
+
|
|
146
|
+
**Never:**
|
|
147
|
+
- Stretch or recolor the emerald box
|
|
148
|
+
- Use the wordmark without the icon mark
|
|
149
|
+
- Place on a surface lighter than `--surface-1`
|
|
150
|
+
- Use a different font for "A.L.I.C.E." — it is always the app's heading font, semibold
|
|
151
|
+
|
|
152
|
+
### Wordmark Typography
|
|
153
|
+
|
|
154
|
+
"A.L.I.C.E." uses the app's heading font (Inter or system font stack), weight 600, tracking normal. Never all-lowercase. The periods are part of the name.
|
|
155
|
+
|
|
156
|
+
"Mission Control" appears as a subtitle below on login only — size 14px, `--text-secondary`, weight 400.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 4. GLOBAL COMPONENT STANDARDS
|
|
161
|
+
|
|
162
|
+
### The Decision: Hybrid with Clear Boundaries
|
|
163
|
+
|
|
164
|
+
**AH (A.L.I.C.E. House) components win for:**
|
|
165
|
+
- StatusDot / StatusBadge — all agent/session status indicators
|
|
166
|
+
- AgentAvatar — all agent identity displays
|
|
167
|
+
- SessionCard — all session list items
|
|
168
|
+
- ApprovalCard — all approval items
|
|
169
|
+
- SidebarNav — the global sidebar
|
|
170
|
+
- PageHeader — top of every page
|
|
171
|
+
- StatCard — dashboard metric cards
|
|
172
|
+
|
|
173
|
+
**Shadcn wins for:**
|
|
174
|
+
- Dialog / Sheet / Modal — all overlay/drawer patterns
|
|
175
|
+
- DropdownMenu — all dropdown menus
|
|
176
|
+
- Tooltip — all tooltips
|
|
177
|
+
- Switch / Checkbox / RadioGroup — all form controls
|
|
178
|
+
- Select / Combobox — all select inputs
|
|
179
|
+
- Input / Textarea — all text inputs
|
|
180
|
+
- Tabs — tab navigation within pages
|
|
181
|
+
- Badge — generic status labels (but NOT agent/session status — use AH StatusBadge)
|
|
182
|
+
- Table — data tables (but NOT sessions table — use AH SessionCard)
|
|
183
|
+
- Skeleton — loading states
|
|
184
|
+
- Toast / Sonner — notifications
|
|
185
|
+
|
|
186
|
+
**The rule:** If an AH component exists for the concept, use it. Shadcn fills the gaps for generic form/overlay patterns. Never mix them on a single page without this justification.
|
|
187
|
+
|
|
188
|
+
### No Mixing Rule
|
|
189
|
+
|
|
190
|
+
A page may use both AH and shadcn components only when:
|
|
191
|
+
1. They serve different levels (AH for domain concepts, shadcn for generic UI primitives)
|
|
192
|
+
2. The AH component is not available for that specific pattern
|
|
193
|
+
|
|
194
|
+
Settings was the offender — it now uses shadcn throughout (forms, inputs, tabs) with AH components only for agent-specific displays.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 5. MOBILE-FIRST BREAKPOINTS
|
|
199
|
+
|
|
200
|
+
### Breakpoint Scale
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
sm: 640px — phone landscape / large phone
|
|
204
|
+
md: 768px — tablet portrait
|
|
205
|
+
lg: 1024px — tablet landscape / small desktop
|
|
206
|
+
xl: 1280px — desktop
|
|
207
|
+
2xl: 1536px — wide desktop
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Sidebar Behavior by Breakpoint
|
|
211
|
+
|
|
212
|
+
| Breakpoint | Sidebar | Content |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| < 640px (mobile) | Hidden, accessible via hamburger → Sheet overlay | Full width |
|
|
215
|
+
| 640px–1023px (sm/md) | Collapsed icon rail (48px wide) | Remaining width |
|
|
216
|
+
| 1024px–1279px (lg) | Expanded (220px) | Remaining width |
|
|
217
|
+
| 1280px+ (xl) | Expanded (240px) | Remaining width |
|
|
218
|
+
|
|
219
|
+
### Layout Grid by Breakpoint
|
|
220
|
+
|
|
221
|
+
| Breakpoint | Columns | Gutter | Page padding |
|
|
222
|
+
|---|---|---|---|
|
|
223
|
+
| < 640px | 1 | 16px | 16px |
|
|
224
|
+
| sm (640px+) | 1–2 | 16px | 24px |
|
|
225
|
+
| md (768px+) | 2 | 24px | 32px |
|
|
226
|
+
| lg (1024px+) | 2–3 | 24px | 32px |
|
|
227
|
+
| xl (1280px+) | 3–4 | 32px | 40px |
|
|
228
|
+
|
|
229
|
+
### What Changes at Each Breakpoint
|
|
230
|
+
|
|
231
|
+
**< 640px (mobile):**
|
|
232
|
+
- Sidebar hidden → hamburger menu in top bar
|
|
233
|
+
- All tables become card stacks (no horizontal scroll)
|
|
234
|
+
- Stat cards stack 1-per-row
|
|
235
|
+
- Approvals: full-width stacked cards, approve/reject as full-width buttons
|
|
236
|
+
- Sessions: full-width cards with truncated content
|
|
237
|
+
- No inline split-panels; everything is single-column
|
|
238
|
+
|
|
239
|
+
**640px–767px (sm):**
|
|
240
|
+
- Sidebar icon rail visible
|
|
241
|
+
- Stat cards: 2-per-row
|
|
242
|
+
- Sessions: 2-column card grid
|
|
243
|
+
- Approvals: still stacked but with horizontal action buttons
|
|
244
|
+
|
|
245
|
+
**768px–1023px (md):**
|
|
246
|
+
- Stat cards: 2–3-per-row
|
|
247
|
+
- Sessions: list view or 2-column grid
|
|
248
|
+
- Approvals: full layout minus detail panel
|
|
249
|
+
|
|
250
|
+
**1024px+ (lg+):**
|
|
251
|
+
- Full desktop layout
|
|
252
|
+
- Approvals: master-detail panel layout
|
|
253
|
+
- Sessions: full table or card list with metadata columns visible
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 6. LOADING STATE STANDARD
|
|
258
|
+
|
|
259
|
+
### When to Use Skeleton vs Spinner
|
|
260
|
+
|
|
261
|
+
| Pattern | Use When |
|
|
262
|
+
|---------|---------|
|
|
263
|
+
| **Skeleton** | Loading page-level content for the first time (data hasn't arrived yet, expected < 3s) |
|
|
264
|
+
| **Skeleton** | Refreshing a list where we know the shape of content |
|
|
265
|
+
| **Inline spinner** (16px) | A single action is in-flight (submitting a form, triggering an agent) |
|
|
266
|
+
| **Button spinner** | A button has been clicked and is waiting for confirmation |
|
|
267
|
+
| **Full-page spinner** | NEVER — always prefer skeleton |
|
|
268
|
+
| **Overlay spinner** | Blocking modal action only (e.g., deleting an agent — can't navigate away) |
|
|
269
|
+
|
|
270
|
+
### Skeleton Spec
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
Background: --surface-2 (#27272a)
|
|
274
|
+
Shimmer: animate-pulse (opacity 0.4 → 1.0, duration 1.5s, ease-in-out)
|
|
275
|
+
Border-radius: matches the component it's replacing
|
|
276
|
+
Min-height: matches the approximate height of real content
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
**Skeleton variants to implement:**
|
|
280
|
+
|
|
281
|
+
- `SkeletonStatCard` — 120px tall, full width of stat card
|
|
282
|
+
- `SkeletonSessionCard` — 72px tall, full width of session card row
|
|
283
|
+
- `SkeletonAgentCard` — matches AgentCard dimensions
|
|
284
|
+
- `SkeletonApprovalCard` — matches ApprovalCard height
|
|
285
|
+
- `SkeletonTableRow` — 3 lines: title, subtitle, badge
|
|
286
|
+
- `SkeletonText` — generic line skeleton (widths: full, 75%, 50%)
|
|
287
|
+
|
|
288
|
+
### Skeleton Counts
|
|
289
|
+
|
|
290
|
+
| Page | Skeleton count on first load |
|
|
291
|
+
|------|-----|
|
|
292
|
+
| Home | 4× SkeletonStatCard, 3× SkeletonSessionCard |
|
|
293
|
+
| My Team | 6× SkeletonAgentCard |
|
|
294
|
+
| Sessions | 5× SkeletonSessionCard |
|
|
295
|
+
| Approvals | 3× SkeletonApprovalCard |
|
|
296
|
+
| Workflows | 4× SkeletonTableRow |
|
|
297
|
+
| Settings | Section-level skeleton (don't skeleton individual fields) |
|
|
298
|
+
|
|
299
|
+
### Transition from Skeleton → Content
|
|
300
|
+
|
|
301
|
+
- Fade in: `opacity 0 → 1`, duration `200ms`, no layout shift
|
|
302
|
+
- Stagger: 50ms delay between list items (max 5 items staggered, then simultaneous)
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## 7. ERROR STATE STANDARD
|
|
307
|
+
|
|
308
|
+
### Error Hierarchy
|
|
309
|
+
|
|
310
|
+
**Level 1 — Inline field error:** Form validation failures
|
|
311
|
+
- Red text below field, 12px, `--status-error`
|
|
312
|
+
- Icon: `AlertCircle` (12px, inline before text)
|
|
313
|
+
- Never use toast for field errors
|
|
314
|
+
|
|
315
|
+
**Level 2 — Section error:** A card/section failed to load
|
|
316
|
+
- Replace skeleton with an error card:
|
|
317
|
+
- Surface-1 background, red-500/20 border
|
|
318
|
+
- `AlertTriangle` icon (20px, `--status-error`)
|
|
319
|
+
- Message: "Couldn't load [section name]"
|
|
320
|
+
- CTA: "Try again" button (ghost, small)
|
|
321
|
+
|
|
322
|
+
**Level 3 — Page-level error:** Full page failed (e.g., 500, auth failure)
|
|
323
|
+
- Centered in content area
|
|
324
|
+
- `AlertTriangle` icon (48px, `--status-error`)
|
|
325
|
+
- Heading: "Something went wrong"
|
|
326
|
+
- Body: Specific error message if available, otherwise: "We couldn't load this page. This is likely temporary."
|
|
327
|
+
- CTA: Primary button "Reload page" + ghost button "Go home"
|
|
328
|
+
|
|
329
|
+
**Level 4 — Toast notification:** Action failed (e.g., user triggered something that failed)
|
|
330
|
+
- Sonner toast, variant: `error`
|
|
331
|
+
- Duration: 5 seconds
|
|
332
|
+
- Message: "[Action] failed — [brief reason if available]"
|
|
333
|
+
- Example: "Couldn't approve task — please try again"
|
|
334
|
+
|
|
335
|
+
### API Error Mapping
|
|
336
|
+
|
|
337
|
+
| HTTP Status | UX Treatment |
|
|
338
|
+
|-------------|-------------|
|
|
339
|
+
| 401 | Redirect to login, no error shown |
|
|
340
|
+
| 403 | Level 3 error: "You don't have access to this" |
|
|
341
|
+
| 404 | Level 3 error: "[Resource] not found" |
|
|
342
|
+
| 429 | Level 2 or 4 with "Too many requests — slow down" |
|
|
343
|
+
| 500–503 | Level 3 with retry CTA |
|
|
344
|
+
| Network offline | Persistent banner at top of page: "No connection — working offline" |
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 8. MOTION & ANIMATION PRINCIPLES
|
|
349
|
+
|
|
350
|
+
### The Rule
|
|
351
|
+
|
|
352
|
+
**Animate to communicate, never to decorate.**
|
|
353
|
+
|
|
354
|
+
Every animation must answer the question: "what does this motion tell the user?" If there's no answer, remove it.
|
|
355
|
+
|
|
356
|
+
### Animation Inventory
|
|
357
|
+
|
|
358
|
+
| Element | Animation | Spec | Reason |
|
|
359
|
+
|---------|-----------|------|--------|
|
|
360
|
+
| Active status dot | Pulse ring (scale 1→1.5, opacity 1→0) | 2s loop, ease-in-out | "This agent is alive right now" |
|
|
361
|
+
| Session duration ticker | Numeric increment | Real-time, no easing | Counter communicates live work |
|
|
362
|
+
| Sidebar expand/collapse | Width transition | 150ms, ease-out | Spatial navigation |
|
|
363
|
+
| Detail panel slide-in (Approvals) | Slide from right | 200ms, ease-out | Panel appears from its trigger |
|
|
364
|
+
| Sheet/dialog open | Slide up (mobile) / fade+scale (desktop) | 200ms, ease-out | Standard shadcn behavior |
|
|
365
|
+
| Page transitions | Fade | 150ms, ease | Not jarring |
|
|
366
|
+
| Skeleton → content | Fade in | 200ms | Smooth reveal |
|
|
367
|
+
| Toast appearance | Slide up from bottom | shadcn/sonner default | Don't override |
|
|
368
|
+
| Button loading state | Spinner replaces text/icon | Immediate, no transition | Action feedback |
|
|
369
|
+
| Hover on cards | Background shift to surface-2 | 100ms | Affordance |
|
|
370
|
+
| Hover on nav items | Background shift | 100ms | Affordance |
|
|
371
|
+
|
|
372
|
+
### What Does NOT Animate
|
|
373
|
+
|
|
374
|
+
- Text content (no typewriter effects)
|
|
375
|
+
- Color changes on status (instant — delayed color change is confusing)
|
|
376
|
+
- Table sort/filter (instant)
|
|
377
|
+
- Form inputs (instant focus ring)
|
|
378
|
+
- Any "decorative" parallax or scroll effects
|
|
379
|
+
- Stat card numbers (no counting animation — can feel like deception)
|
|
380
|
+
|
|
381
|
+
### Reduced Motion
|
|
382
|
+
|
|
383
|
+
All animations must respect `prefers-reduced-motion`. When reduced motion is enabled:
|
|
384
|
+
- Remove pulsing status rings (show static dot)
|
|
385
|
+
- Remove slide/fade transitions (instant show/hide)
|
|
386
|
+
- Keep spinner (it's functional)
|
|
387
|
+
- Keep duration ticker (it's informational)
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
## 9. FIRST LOGIN EXPERIENCE
|
|
392
|
+
|
|
393
|
+
### The Problem
|
|
394
|
+
|
|
395
|
+
A brand new Pro user has: 0 agents configured, 0 sessions, 0 approvals, 0 workflows. If we show empty states everywhere, it feels like a broken app. We need the first login to feel like a command center that's ready to activate — not a ghost town.
|
|
396
|
+
|
|
397
|
+
### First Login Detection
|
|
398
|
+
|
|
399
|
+
Detect "new user" state when: `agents.count === 0 && sessions.total === 0`
|
|
400
|
+
|
|
401
|
+
This triggers the **Activation Mode** UX (described per-page below).
|
|
402
|
+
|
|
403
|
+
### Global First Login Treatment
|
|
404
|
+
|
|
405
|
+
**Welcome Banner** (appears once, dismissible, Home page only):
|
|
406
|
+
|
|
407
|
+
```
|
|
408
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
409
|
+
│ ⚡ Welcome to Mission Control │
|
|
410
|
+
│ Your A.L.I.C.E. team is ready to be assembled. Start by │
|
|
411
|
+
│ adding your first specialist — they'll handle tasks, │
|
|
412
|
+
│ answer questions, and work while you sleep. │
|
|
413
|
+
│ │
|
|
414
|
+
│ [Add your first agent →] [Dismiss] │
|
|
415
|
+
└─────────────────────────────────────────────────────────────┘
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
- Background: `--surface-1` with a subtle emerald-500/10 left border (4px)
|
|
419
|
+
- Dismiss stores to localStorage, never shows again
|
|
420
|
+
- CTA routes to My Team → Add Agent
|
|
421
|
+
|
|
422
|
+
### First Login Per Page
|
|
423
|
+
|
|
424
|
+
Each page spec below includes "First Login State" — what a zero-data user sees.
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
## 10. PAGE SPECS
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
### 10.1 LOGIN
|
|
433
|
+
|
|
434
|
+
#### Layout Spec
|
|
435
|
+
|
|
436
|
+
```
|
|
437
|
+
All breakpoints: Single centered column
|
|
438
|
+
Max-width: 400px
|
|
439
|
+
Horizontal padding: 24px
|
|
440
|
+
Vertical: Centered in viewport (flexbox, min-height 100vh)
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
**Structure:**
|
|
444
|
+
```
|
|
445
|
+
[A logo mark + "A.L.I.C.E." wordmark] ← centered, 48px icon
|
|
446
|
+
[Mission Control] ← 14px, text-secondary, 8px below wordmark
|
|
447
|
+
[32px gap]
|
|
448
|
+
[Email input]
|
|
449
|
+
[Password input]
|
|
450
|
+
[16px gap]
|
|
451
|
+
[Sign In — full width, primary button]
|
|
452
|
+
[24px gap]
|
|
453
|
+
[Forgot password — text link, centered, 14px]
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
#### Component Inventory (SHADCN throughout)
|
|
457
|
+
|
|
458
|
+
- `Input` — email, password fields
|
|
459
|
+
- `Button` — sign in (primary, full width)
|
|
460
|
+
- Custom: Logo mark (AH component or inline SVG)
|
|
461
|
+
- No card/surface wrapper — form floats directly on bg-base
|
|
462
|
+
|
|
463
|
+
#### Empty / Zero State
|
|
464
|
+
|
|
465
|
+
N/A — login has no empty state.
|
|
466
|
+
|
|
467
|
+
#### Interaction Spec
|
|
468
|
+
|
|
469
|
+
| Interaction | Behavior |
|
|
470
|
+
|---|---|
|
|
471
|
+
| Form submit | Button shows inline spinner (left of text), text stays visible, disabled state |
|
|
472
|
+
| Failed login | Level 1 inline error below password field: "Incorrect email or password" |
|
|
473
|
+
| Network error | Level 4 toast: "Sign in failed — check your connection" |
|
|
474
|
+
| Success | Fade transition to Home (150ms) |
|
|
475
|
+
| Enter key | Submits form if both fields populated |
|
|
476
|
+
| Password field | Show/hide toggle (eye icon, right side of input) |
|
|
477
|
+
|
|
478
|
+
#### Done Criteria
|
|
479
|
+
|
|
480
|
+
- [ ] Logo matches sidebar exactly (same icon component)
|
|
481
|
+
- [ ] Form is centered vertically on all screen sizes
|
|
482
|
+
- [ ] Error states appear inline (not toast) for credential failures
|
|
483
|
+
- [ ] Loading state on button during submission
|
|
484
|
+
- [ ] Accessible: tab order Email → Password → Submit
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
### 10.2 HOME (DASHBOARD)
|
|
489
|
+
|
|
490
|
+
#### Layout Spec
|
|
491
|
+
|
|
492
|
+
**Desktop (lg+):**
|
|
493
|
+
```
|
|
494
|
+
PageHeader: "Mission Control" [greeting: "Good morning, Rob"]
|
|
495
|
+
[Welcome Banner if first login]
|
|
496
|
+
[Stat Cards row: 4 cards, equal width, gap-4]
|
|
497
|
+
[16px gap]
|
|
498
|
+
[2-column layout, 2/3 + 1/3]
|
|
499
|
+
Left: Active Sessions (list)
|
|
500
|
+
Right: Team Overview (mini-list of agents by status)
|
|
501
|
+
[16px gap]
|
|
502
|
+
[Recent Activity (full width, last 10 events)]
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
**Tablet (md):**
|
|
506
|
+
```
|
|
507
|
+
Stat cards: 2×2 grid
|
|
508
|
+
Main layout: Single column (Sessions, then Team, then Activity)
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
**Mobile (< 640px):**
|
|
512
|
+
```
|
|
513
|
+
Stat cards: 2×2 grid (compact)
|
|
514
|
+
All sections: stacked single column
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
#### Stat Card Spec
|
|
518
|
+
|
|
519
|
+
4 cards:
|
|
520
|
+
1. **Active Now** — count of currently running sessions (emerald if >0, zinc if 0)
|
|
521
|
+
2. **Pending Approvals** — count awaiting action (amber if >0, zinc if 0)
|
|
522
|
+
3. **Team Size** — count of configured agents
|
|
523
|
+
4. **Sessions Today** — total sessions started today
|
|
524
|
+
|
|
525
|
+
StatCard anatomy:
|
|
526
|
+
```
|
|
527
|
+
[Icon (24px)] [Label (12px, text-tertiary, uppercase, tracking-wide)]
|
|
528
|
+
[Value (32px, semibold, text-primary)]
|
|
529
|
+
[Trend/subtitle (12px, text-secondary)] ← optional
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
Surface-1 card, 16px padding, subtle border-default.
|
|
533
|
+
|
|
534
|
+
#### Empty State Spec
|
|
535
|
+
|
|
536
|
+
**First Login State (Activation Mode):**
|
|
537
|
+
|
|
538
|
+
Replace stat cards with a single "Activation Panel":
|
|
539
|
+
```
|
|
540
|
+
┌──────────────────────────────────────────────────────┐
|
|
541
|
+
│ Command Center — Standby │
|
|
542
|
+
│ │
|
|
543
|
+
│ Your team hasn't been assembled yet. │
|
|
544
|
+
│ Add your first A.L.I.C.E. specialist to start. │
|
|
545
|
+
│ │
|
|
546
|
+
│ Step 1 ○ Add a specialist [Go to My Team →] │
|
|
547
|
+
│ Step 2 ○ Start your first session │
|
|
548
|
+
│ Step 3 ○ Configure a workflow │
|
|
549
|
+
└──────────────────────────────────────────────────────┘
|
|
550
|
+
```
|
|
551
|
+
Background: surface-1, left border accent-subtle (2px emerald).
|
|
552
|
+
|
|
553
|
+
**Active Sessions — empty (has agents, no running sessions):**
|
|
554
|
+
```
|
|
555
|
+
Icon: `Zap` (24px, text-tertiary)
|
|
556
|
+
Text: "No active sessions"
|
|
557
|
+
Sub: "Your team is standing by."
|
|
558
|
+
CTA: none (this is fine — not every state needs a CTA)
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
**Team Overview — empty:**
|
|
562
|
+
```
|
|
563
|
+
Text: "No team members"
|
|
564
|
+
CTA: [Add first specialist →] → routes to My Team
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
**Recent Activity — empty:**
|
|
568
|
+
```
|
|
569
|
+
Icon: `Clock` (24px, text-tertiary)
|
|
570
|
+
Text: "No recent activity"
|
|
571
|
+
Sub: "Actions and events will appear here."
|
|
572
|
+
```
|
|
573
|
+
|
|
574
|
+
#### Component Inventory
|
|
575
|
+
|
|
576
|
+
- AH: `StatCard`, `SessionCard` (mini variant), `AgentAvatar`, `StatusDot`
|
|
577
|
+
- Shadcn: `Skeleton`, `Badge` (for activity labels)
|
|
578
|
+
- Custom: `WelcomeBanner`, `ActivationPanel` (first login only)
|
|
579
|
+
|
|
580
|
+
#### Interaction Spec
|
|
581
|
+
|
|
582
|
+
| Interaction | Behavior |
|
|
583
|
+
|---|---|
|
|
584
|
+
| Stat card — Active Now click | Routes to Sessions, filtered to active |
|
|
585
|
+
| Stat card — Pending Approvals click | Routes to Approvals |
|
|
586
|
+
| Session card click | Opens session detail (sheet or navigate) |
|
|
587
|
+
| Agent in Team Overview click | Routes to My Team, scrolls to agent |
|
|
588
|
+
| Refresh | Pull-to-refresh on mobile; automatic 30s polling on desktop |
|
|
589
|
+
|
|
590
|
+
#### Done Criteria
|
|
591
|
+
|
|
592
|
+
- [ ] Stat cards show live data, emerald when nonzero for Active/Approvals
|
|
593
|
+
- [ ] Active sessions show live duration tickers
|
|
594
|
+
- [ ] Responsive: 4-col stat cards on desktop, 2×2 on mobile
|
|
595
|
+
- [ ] First login: Activation Panel replaces stat cards
|
|
596
|
+
- [ ] Welcome Banner appears once for new users, dismissible
|
|
597
|
+
- [ ] Empty states use exact copy/icon spec above
|
|
598
|
+
|
|
599
|
+
---
|
|
600
|
+
|
|
601
|
+
### 10.3 MY TEAM
|
|
602
|
+
|
|
603
|
+
#### Layout Spec
|
|
604
|
+
|
|
605
|
+
**Desktop (lg+):**
|
|
606
|
+
```
|
|
607
|
+
PageHeader: "My Team" [subtitle: "N specialists"] [CTA: "Add Specialist" button]
|
|
608
|
+
[Agent cards: CSS grid, 3 columns, gap-4]
|
|
609
|
+
```
|
|
610
|
+
|
|
611
|
+
**Tablet (md):**
|
|
612
|
+
```
|
|
613
|
+
Agent cards: 2 columns
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
**Mobile (< 640px):**
|
|
617
|
+
```
|
|
618
|
+
Agent cards: 1 column (full width stacked)
|
|
619
|
+
CTA button: Full width below page header
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
#### Agent Card Spec
|
|
623
|
+
|
|
624
|
+
```
|
|
625
|
+
┌────────────────────────────────────────┐
|
|
626
|
+
│ [Avatar: initials + agent color ring] │
|
|
627
|
+
│ [Name — 16px semibold] │
|
|
628
|
+
│ [Role/specialty — 14px text-secondary] │
|
|
629
|
+
│ [StatusDot + status label] │
|
|
630
|
+
│ ───────────────────────────────────── │
|
|
631
|
+
│ [Sessions today: N] [Last active: Xm] │
|
|
632
|
+
│ [Configure →] │
|
|
633
|
+
└────────────────────────────────────────┘
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
- Card: surface-1, 20px padding, border-default, 8px border-radius
|
|
637
|
+
- Avatar: 48×48px circle, initials (2-letter), colored background from `--agent-N` tokens
|
|
638
|
+
- Status dot: 8px, pulsing ring if active
|
|
639
|
+
- Hover: card lifts (border-strong, shadow-lg transition 100ms)
|
|
640
|
+
|
|
641
|
+
#### Empty State Spec
|
|
642
|
+
|
|
643
|
+
**First Login State:**
|
|
644
|
+
```
|
|
645
|
+
[Centered in content area]
|
|
646
|
+
Icon: `Users` (48px, text-tertiary)
|
|
647
|
+
Heading: "Assemble your team"
|
|
648
|
+
Body: "Add your first A.L.I.C.E. specialist. Each one handles a domain — coding, research, writing, analysis. Your team works while you work (and while you sleep)."
|
|
649
|
+
CTA: [Add your first specialist] — primary button
|
|
650
|
+
```
|
|
651
|
+
|
|
652
|
+
This is NOT a generic "no data" message. It tells the user what the product does and makes adding an agent feel like a meaningful action.
|
|
653
|
+
|
|
654
|
+
**Search/filter returns no results:**
|
|
655
|
+
```
|
|
656
|
+
Icon: `SearchX` (32px, text-tertiary)
|
|
657
|
+
Text: "No specialists match '[query]'"
|
|
658
|
+
CTA: [Clear filter] — ghost button
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
#### Component Inventory
|
|
662
|
+
|
|
663
|
+
- AH: `AgentCard`, `AgentAvatar`, `StatusDot`, `StatusBadge`, `PageHeader`
|
|
664
|
+
- Shadcn: `Dialog` (add/edit agent), `Input` (search), `Select` (filter by status), `Skeleton`, `Button`
|
|
665
|
+
|
|
666
|
+
#### Interaction Spec
|
|
667
|
+
|
|
668
|
+
| Interaction | Behavior |
|
|
669
|
+
|---|---|
|
|
670
|
+
| Agent card click | Opens agent detail Sheet (right panel) |
|
|
671
|
+
| "Configure" button | Same as card click — opens agent Sheet |
|
|
672
|
+
| Agent status dot click | No action — it's informational only |
|
|
673
|
+
| "Add Specialist" | Opens Dialog — multi-step: Name → Role → Config |
|
|
674
|
+
| Add agent — step transitions | Slide left/right within dialog, no full dialog remount |
|
|
675
|
+
| Delete agent | Confirmation dialog: "Remove [Name] from your team?" — destructive button |
|
|
676
|
+
| Agent active | Pulsing emerald ring on avatar, status dot pulses |
|
|
677
|
+
|
|
678
|
+
**Agent Add/Edit Dialog:**
|
|
679
|
+
- Step 1: Name + emoji/avatar choice
|
|
680
|
+
- Step 2: Role/specialty select (from preset list + custom)
|
|
681
|
+
- Step 3: Model + config (API key, temperature, etc.)
|
|
682
|
+
- Footer: [Back] [Next / Save]
|
|
683
|
+
|
|
684
|
+
#### Done Criteria
|
|
685
|
+
|
|
686
|
+
- [ ] Agent cards show correct status with pulsing dots for active agents
|
|
687
|
+
- [ ] Agent color assignments are consistent (same agent always same color)
|
|
688
|
+
- [ ] Empty state uses exact copy above — no generic "no agents found"
|
|
689
|
+
- [ ] Add/edit dialog works as multi-step flow, not separate pages
|
|
690
|
+
- [ ] Mobile: cards are full-width, scannable without horizontal scroll
|
|
691
|
+
|
|
692
|
+
---
|
|
693
|
+
|
|
694
|
+
### 10.4 SESSIONS
|
|
695
|
+
|
|
696
|
+
#### Layout Spec
|
|
697
|
+
|
|
698
|
+
**Desktop (lg+):**
|
|
699
|
+
```
|
|
700
|
+
PageHeader: "Sessions" [Filter bar] [New Session button]
|
|
701
|
+
[Filter row: Status tabs (All / Active / Completed / Failed) + Search input + Date range]
|
|
702
|
+
[Sessions list: full-width cards, stacked]
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
**Tablet (md):**
|
|
706
|
+
```
|
|
707
|
+
Same as desktop, filter row wraps to 2 rows
|
|
708
|
+
```
|
|
709
|
+
|
|
710
|
+
**Mobile (< 640px):**
|
|
711
|
+
```
|
|
712
|
+
PageHeader: "Sessions" [New Session button — icon only on mobile]
|
|
713
|
+
Filter: Status tabs scroll horizontally (no wrap)
|
|
714
|
+
Search: Below tabs, full width
|
|
715
|
+
Sessions: Stacked cards, full width
|
|
716
|
+
NO table view — always cards on mobile
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
**The sessions table on desktop is abolished.** Sessions are always cards. The table view caused mobile overflow issues and was harder to scan than cards.
|
|
720
|
+
|
|
721
|
+
#### Session Card Spec (standard)
|
|
722
|
+
|
|
723
|
+
```
|
|
724
|
+
┌────────────────────────────────────────────────────────┐
|
|
725
|
+
│ [StatusDot] [Session name/title — 14px semibold] [▶] │
|
|
726
|
+
│ [Agent name + avatar (16px)] [Duration: 00:04:23] │
|
|
727
|
+
│ [Last message preview — 13px text-secondary, 1 line] │
|
|
728
|
+
│ [Tags/labels] [Started: 2h ago] │
|
|
729
|
+
└────────────────────────────────────────────────────────┘
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
**Active session variant:**
|
|
733
|
+
- Left border: 3px emerald (`--accent`)
|
|
734
|
+
- Duration ticker: live, counts up in real-time
|
|
735
|
+
- StatusDot: pulsing emerald
|
|
736
|
+
|
|
737
|
+
**Failed session variant:**
|
|
738
|
+
- Left border: 3px red-500
|
|
739
|
+
- StatusDot: static red
|
|
740
|
+
- Duration replaced with: "Failed · 4 min ago"
|
|
741
|
+
|
|
742
|
+
**Pending session variant:**
|
|
743
|
+
- Left border: 3px blue-400
|
|
744
|
+
- StatusDot: static blue
|
|
745
|
+
- Shows "Waiting for approval" instead of duration
|
|
746
|
+
|
|
747
|
+
#### Empty State Spec
|
|
748
|
+
|
|
749
|
+
**First Login (no sessions ever):**
|
|
750
|
+
```
|
|
751
|
+
Icon: `MessageSquare` (48px, text-tertiary) — the chat/conversation metaphor
|
|
752
|
+
Heading: "No sessions yet"
|
|
753
|
+
Body: "Sessions are conversations between you and your team. Start one to see your specialists in action."
|
|
754
|
+
CTA: [Start a session] → Opens New Session dialog
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
**Filtered to Active — no active sessions:**
|
|
758
|
+
```
|
|
759
|
+
Icon: `Coffee` (32px, text-tertiary) ← intentional: your team is at rest
|
|
760
|
+
Text: "Your team is standing by"
|
|
761
|
+
Sub: "No active sessions right now."
|
|
762
|
+
CTA: [Start a session] — ghost button
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
**Filtered to Failed — no failures:**
|
|
766
|
+
```
|
|
767
|
+
Icon: `CheckCircle` (32px, --status-active)
|
|
768
|
+
Text: "No failures"
|
|
769
|
+
Sub: "All good."
|
|
770
|
+
[No CTA]
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
**Search returns nothing:**
|
|
774
|
+
```
|
|
775
|
+
Icon: `SearchX` (32px, text-tertiary)
|
|
776
|
+
Text: "No sessions match '[query]'"
|
|
777
|
+
CTA: [Clear search]
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
#### Component Inventory
|
|
781
|
+
|
|
782
|
+
- AH: `SessionCard`, `StatusDot`, `StatusBadge`, `AgentAvatar`, `PageHeader`
|
|
783
|
+
- Shadcn: `Tabs` (status filter), `Input` (search), `Dialog` (new session), `Sheet` (session detail), `Skeleton`, `Button`, `Badge` (labels)
|
|
784
|
+
|
|
785
|
+
#### Interaction Spec
|
|
786
|
+
|
|
787
|
+
| Interaction | Behavior |
|
|
788
|
+
|---|---|
|
|
789
|
+
| Session card click | Opens session detail Sheet (slides in from right) |
|
|
790
|
+
| Session detail Sheet | Shows full message history + metadata + actions |
|
|
791
|
+
| Active session — live ticker | Updates every second, no flicker |
|
|
792
|
+
| "New Session" button | Opens dialog: Select agent → Enter prompt → Start |
|
|
793
|
+
| Status tab switch | Instant filter, no loading state if data cached |
|
|
794
|
+
| Search | Debounce 300ms, searches name + agent + content preview |
|
|
795
|
+
| Session — Stop button | Confirmation: "Stop this session?" — not destructive dialog, inline |
|
|
796
|
+
| Session — Retry (failed) | Immediate action, shows button spinner, refreshes card |
|
|
797
|
+
| Pull to refresh (mobile) | Refreshes list |
|
|
798
|
+
|
|
799
|
+
#### Done Criteria
|
|
800
|
+
|
|
801
|
+
- [ ] NO horizontal scroll on mobile — ever
|
|
802
|
+
- [ ] Active sessions show live duration tickers
|
|
803
|
+
- [ ] Status tabs filter instantly
|
|
804
|
+
- [ ] Session cards have correct left-border color by status
|
|
805
|
+
- [ ] Empty states use exact copy above
|
|
806
|
+
- [ ] Session detail Sheet works on all breakpoints
|
|
807
|
+
- [ ] First login empty state communicates what sessions ARE
|
|
808
|
+
|
|
809
|
+
---
|
|
810
|
+
|
|
811
|
+
### 10.5 APPROVALS
|
|
812
|
+
|
|
813
|
+
#### Layout Spec
|
|
814
|
+
|
|
815
|
+
**Desktop (lg+):**
|
|
816
|
+
```
|
|
817
|
+
PageHeader: "Approvals" [Badge: N pending]
|
|
818
|
+
[Master-detail layout: 360px left panel + flexible right panel]
|
|
819
|
+
Left: Scrollable list of approval cards
|
|
820
|
+
Right: Selected approval detail (empty state if nothing selected)
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
**Tablet (md):**
|
|
824
|
+
```
|
|
825
|
+
Full-width list only — no detail panel
|
|
826
|
+
Tapping an approval opens a Sheet (bottom sheet or right sheet)
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
**Mobile (< 640px): [CRITICAL — this was broken, now fixed]**
|
|
830
|
+
```
|
|
831
|
+
Full-width stacked cards
|
|
832
|
+
NO side-by-side layout
|
|
833
|
+
Tap to open detail Sheet (slides up from bottom)
|
|
834
|
+
Approve / Reject buttons: full-width, stacked at bottom of Sheet
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
#### Approval Card Spec
|
|
838
|
+
|
|
839
|
+
```
|
|
840
|
+
┌────────────────────────────────────────────────────────┐
|
|
841
|
+
│ [AgentAvatar 32px] [Agent name — 13px semibold] │
|
|
842
|
+
│ [Request title — 14px, text-primary, 2-line clamp] │
|
|
843
|
+
│ [Type badge: tool_call / file_write / etc.] │
|
|
844
|
+
│ [Waiting: 4m 32s ago] [→ Approve] [✕ Reject] │
|
|
845
|
+
└────────────────────────────────────────────────────────┘
|
|
846
|
+
```
|
|
847
|
+
|
|
848
|
+
**Selected state (desktop):** Highlighted with border-strong, background surface-2.
|
|
849
|
+
|
|
850
|
+
#### Approval Detail Panel Spec (desktop right panel)
|
|
851
|
+
|
|
852
|
+
```
|
|
853
|
+
[Agent + request type header]
|
|
854
|
+
[Full request context — code block or prose, scrollable]
|
|
855
|
+
[Impact summary: what happens if approved / rejected]
|
|
856
|
+
[Approve button — full width, primary (emerald)]
|
|
857
|
+
[Reject button — full width, destructive (outline)]
|
|
858
|
+
[Add note — optional textarea, shows on demand]
|
|
859
|
+
```
|
|
860
|
+
|
|
861
|
+
**Nothing selected state (desktop right panel):**
|
|
862
|
+
```
|
|
863
|
+
[Centered vertically]
|
|
864
|
+
Icon: `MousePointerClick` (32px, text-tertiary)
|
|
865
|
+
Text: "Select an approval to review"
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
#### Empty State Spec
|
|
869
|
+
|
|
870
|
+
**No pending approvals:**
|
|
871
|
+
```
|
|
872
|
+
Icon: `CheckCircle2` (48px, --status-active) ← emerald — this is a good thing
|
|
873
|
+
Heading: "All caught up"
|
|
874
|
+
Body: "No approvals waiting. Your team is running without blockers."
|
|
875
|
+
[No CTA]
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
Note: This is the one empty state where we use emerald — because zero pending approvals IS a success state.
|
|
879
|
+
|
|
880
|
+
**First Login (will look like the above since no agents = no approvals):**
|
|
881
|
+
Same "All caught up" state — no special case needed here.
|
|
882
|
+
|
|
883
|
+
#### Component Inventory
|
|
884
|
+
|
|
885
|
+
- AH: `ApprovalCard`, `AgentAvatar`, `StatusBadge`, `PageHeader`
|
|
886
|
+
- Shadcn: `Sheet` (mobile/tablet detail), `Textarea` (note input), `Button`, `Skeleton`, `Badge` (type labels), `ScrollArea` (for detail content)
|
|
887
|
+
|
|
888
|
+
#### Interaction Spec
|
|
889
|
+
|
|
890
|
+
| Interaction | Behavior |
|
|
891
|
+
|---|---|
|
|
892
|
+
| Card click (desktop) | Loads detail in right panel (150ms fade) |
|
|
893
|
+
| Card click (mobile/tablet) | Opens bottom Sheet |
|
|
894
|
+
| Approve (card inline) | Immediate optimistic update, card fades out (200ms), success toast |
|
|
895
|
+
| Reject (card inline) | Immediate optimistic update, card fades out (200ms) |
|
|
896
|
+
| Approve (detail panel) | Same optimistic update |
|
|
897
|
+
| Add note | Textarea expands inline, "Submit with note" replaces "Approve" |
|
|
898
|
+
| Empty right panel | Shows "Select an approval" message — see spec above |
|
|
899
|
+
| Waiting timer | Live counter per card — updates every second |
|
|
900
|
+
|
|
901
|
+
**Optimistic updates:** When a user approves/rejects, the card immediately leaves the list. If the action fails, the card comes back with an error toast: "Couldn't [approve/reject] — please try again"
|
|
902
|
+
|
|
903
|
+
#### Done Criteria
|
|
904
|
+
|
|
905
|
+
- [ ] Mobile: full-width stacked cards, NO overflow, Sheet for detail
|
|
906
|
+
- [ ] Desktop: master-detail layout, right panel shows selection
|
|
907
|
+
- [ ] Waiting timers are live
|
|
908
|
+
- [ ] Optimistic updates on approve/reject
|
|
909
|
+
- [ ] Empty state uses emerald (it IS a success state)
|
|
910
|
+
- [ ] "All caught up" copy — not "No approvals found"
|
|
911
|
+
|
|
912
|
+
---
|
|
913
|
+
|
|
914
|
+
### 10.6 WORKFLOWS
|
|
915
|
+
|
|
916
|
+
#### Layout Spec
|
|
917
|
+
|
|
918
|
+
**Desktop (lg+):**
|
|
919
|
+
```
|
|
920
|
+
PageHeader: "Workflows" [CTA: "New Workflow" button]
|
|
921
|
+
[Status filter tabs: All / Active / Draft / Archived]
|
|
922
|
+
[Workflow table/list: full width]
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
**Mobile (< 640px):**
|
|
926
|
+
```
|
|
927
|
+
PageHeader: "Workflows" [New Workflow — icon button]
|
|
928
|
+
Filter: Horizontal scrolling tabs
|
|
929
|
+
Workflows: Stacked cards (not table rows)
|
|
930
|
+
```
|
|
931
|
+
|
|
932
|
+
#### Workflow Card/Row Spec
|
|
933
|
+
|
|
934
|
+
**Desktop (table-like rows):**
|
|
935
|
+
```
|
|
936
|
+
[StatusDot] [Workflow name — 14px semibold] [Description — text-secondary, truncated]
|
|
937
|
+
[Agent(s) — avatar stack] [Trigger: cron/event label] [Last run: Xh ago] [Run count]
|
|
938
|
+
[Actions: Run now / Edit / Archive — overflow menu]
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
**Mobile (cards):**
|
|
942
|
+
```
|
|
943
|
+
[Workflow name + StatusDot]
|
|
944
|
+
[Description — 2 lines]
|
|
945
|
+
[Next run: Xh from now OR Last run: Xh ago]
|
|
946
|
+
[Actions: kebab menu]
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
#### Empty State Spec
|
|
950
|
+
|
|
951
|
+
**First Login / No Workflows:**
|
|
952
|
+
```
|
|
953
|
+
Icon: `GitBranch` (48px, text-tertiary)
|
|
954
|
+
Heading: "No workflows yet"
|
|
955
|
+
Body: "Workflows are automated sequences your team runs on a schedule or trigger. Set one up to let your team work independently."
|
|
956
|
+
CTA: [Create your first workflow] — primary button
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
**Filter: Active — no active workflows:**
|
|
960
|
+
```
|
|
961
|
+
Icon: `Zap` (32px, text-tertiary)
|
|
962
|
+
Text: "No active workflows"
|
|
963
|
+
Sub: "Activate a workflow or create a new one."
|
|
964
|
+
CTA: [New Workflow] — ghost button
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
**Filter: Archived:**
|
|
968
|
+
```
|
|
969
|
+
Icon: `Archive` (32px, text-tertiary)
|
|
970
|
+
Text: "Nothing archived"
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
#### Component Inventory
|
|
974
|
+
|
|
975
|
+
- AH: `StatusDot`, `AgentAvatar`, `PageHeader`, `StatusBadge`
|
|
976
|
+
- Shadcn: `Table` (desktop rows), `Tabs` (filter), `DropdownMenu` (row actions), `Dialog` (workflow builder), `Sheet` (workflow detail/edit), `Skeleton`, `Button`
|
|
977
|
+
|
|
978
|
+
#### Interaction Spec
|
|
979
|
+
|
|
980
|
+
| Interaction | Behavior |
|
|
981
|
+
|---|---|
|
|
982
|
+
| Row click | Opens workflow detail Sheet |
|
|
983
|
+
| "Run now" | Triggers run, button shows spinner, success toast when started |
|
|
984
|
+
| "Edit" | Opens workflow edit Dialog/Sheet |
|
|
985
|
+
| "Archive" | Confirmation inline: "Archive this workflow?" with undo toast |
|
|
986
|
+
| Status toggle | Switch on row — optimistic, instant |
|
|
987
|
+
| New workflow | Opens multi-step Dialog (trigger → agent → actions → review) |
|
|
988
|
+
| Sort columns | Instant client-side sort if data loaded |
|
|
989
|
+
|
|
990
|
+
#### Done Criteria
|
|
991
|
+
|
|
992
|
+
- [ ] Mobile: workflows render as cards (no table overflow)
|
|
993
|
+
- [ ] Run now action gives immediate feedback
|
|
994
|
+
- [ ] Empty states use exact copy — specifically the "let your team work independently" framing
|
|
995
|
+
- [ ] Workflow builder dialog is multi-step
|
|
996
|
+
|
|
997
|
+
---
|
|
998
|
+
|
|
999
|
+
### 10.7 SETTINGS
|
|
1000
|
+
|
|
1001
|
+
#### Layout Spec
|
|
1002
|
+
|
|
1003
|
+
**All breakpoints:**
|
|
1004
|
+
```
|
|
1005
|
+
PageHeader: "Settings"
|
|
1006
|
+
[Vertical tab navigation on left (desktop) / Horizontal tabs (mobile)]
|
|
1007
|
+
[Content panel on right (desktop) / Full width below tabs (mobile)]
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
**Desktop:** Left nav 200px, content fills remainder
|
|
1011
|
+
**Mobile:** Tabs scroll horizontally at top, content below full-width
|
|
1012
|
+
|
|
1013
|
+
**Settings Tabs:**
|
|
1014
|
+
1. General
|
|
1015
|
+
2. Account
|
|
1016
|
+
3. Team (agent defaults)
|
|
1017
|
+
4. Integrations
|
|
1018
|
+
5. Knowledge (previously standalone page — now settings sub-section)
|
|
1019
|
+
6. Notifications
|
|
1020
|
+
7. Billing
|
|
1021
|
+
|
|
1022
|
+
#### Component Inventory (SHADCN THROUGHOUT — no AH mixing)
|
|
1023
|
+
|
|
1024
|
+
- All `Input`, `Textarea`, `Select`, `Switch`, `Checkbox`, `RadioGroup` — Shadcn
|
|
1025
|
+
- All `Tabs` — Shadcn
|
|
1026
|
+
- `Button` — Shadcn
|
|
1027
|
+
- Section headers — custom styled (not AH PageHeader)
|
|
1028
|
+
- Knowledge base items — custom (not Knowledge page component)
|
|
1029
|
+
- Agent display in Team tab — AH `AgentAvatar` only (not full AgentCard)
|
|
1030
|
+
|
|
1031
|
+
**The previous Settings problem was mixing AH page-level components in a sub-section context.** Settings uses shadcn primitives throughout. The only AH component allowed is `AgentAvatar` as a display element.
|
|
1032
|
+
|
|
1033
|
+
#### Empty State Spec
|
|
1034
|
+
|
|
1035
|
+
**Integrations — no connected integrations:**
|
|
1036
|
+
```
|
|
1037
|
+
Icon: `Plug` (32px, text-tertiary)
|
|
1038
|
+
Text: "No integrations connected"
|
|
1039
|
+
Sub: "Connect your tools to extend what your team can do."
|
|
1040
|
+
[Integration cards shown regardless — connection is the CTA]
|
|
1041
|
+
```
|
|
1042
|
+
|
|
1043
|
+
**Knowledge — no documents:**
|
|
1044
|
+
```
|
|
1045
|
+
Icon: `BookOpen` (32px, text-tertiary)
|
|
1046
|
+
Text: "No knowledge sources"
|
|
1047
|
+
Sub: "Add documents or URLs to give your team context."
|
|
1048
|
+
CTA: [Add knowledge source] — primary button
|
|
1049
|
+
```
|
|
1050
|
+
|
|
1051
|
+
**Notifications — no notification rules:**
|
|
1052
|
+
```
|
|
1053
|
+
Text: "Using default notification settings."
|
|
1054
|
+
[Settings form shown — not a blocking empty state]
|
|
1055
|
+
```
|
|
1056
|
+
|
|
1057
|
+
#### Interaction Spec
|
|
1058
|
+
|
|
1059
|
+
| Interaction | Behavior |
|
|
1060
|
+
|---|---|
|
|
1061
|
+
| Setting change | Auto-save with debounce 800ms, subtle "Saved" indicator (text fades in/out near the field) |
|
|
1062
|
+
| Explicit save forms | "Save changes" button, shows spinner on click |
|
|
1063
|
+
| Destructive actions | Confirmation dialog (e.g., delete account, clear knowledge base) |
|
|
1064
|
+
| Tab switch | Instant (no loading) |
|
|
1065
|
+
| Knowledge upload | Drop zone + file picker, progress bar during upload |
|
|
1066
|
+
| Integration connect | Opens OAuth flow or token input Sheet |
|
|
1067
|
+
|
|
1068
|
+
**Auto-save indicator:**
|
|
1069
|
+
- Appears as "Saved ✓" in text-secondary/text-tertiary near the relevant section
|
|
1070
|
+
- Fades in at 200ms, waits 2s, fades out at 200ms
|
|
1071
|
+
- Does NOT use toast for individual setting saves
|
|
1072
|
+
|
|
1073
|
+
#### Done Criteria
|
|
1074
|
+
|
|
1075
|
+
- [ ] All form components are shadcn — no AH components except AgentAvatar
|
|
1076
|
+
- [ ] No mixed component systems on any settings tab
|
|
1077
|
+
- [ ] Auto-save works for toggle/select fields
|
|
1078
|
+
- [ ] Knowledge tab works equivalently to the previous standalone page
|
|
1079
|
+
- [ ] Mobile: horizontal scroll tabs, full-width content
|
|
1080
|
+
- [ ] Tabs are keyboard navigable
|
|
1081
|
+
|
|
1082
|
+
---
|
|
1083
|
+
|
|
1084
|
+
## 11. COPY & LANGUAGE STANDARDS
|
|
1085
|
+
|
|
1086
|
+
### The Mental Model in Copy
|
|
1087
|
+
|
|
1088
|
+
| Context | Use | Never use |
|
|
1089
|
+
|---------|-----|-----------|
|
|
1090
|
+
| Agent collection | "Your team" | "Your agents", "Your bots" |
|
|
1091
|
+
| Individual agent | "[Name], your [Role] specialist" | "Agent ID: xyz" |
|
|
1092
|
+
| Active session | "[Name] is in a session" | "Process running" |
|
|
1093
|
+
| Pending approval | "[Name] is waiting for you" | "Approval #4892 pending" |
|
|
1094
|
+
| Session history | "N sessions this week" | "N tasks completed" |
|
|
1095
|
+
| Idle agent | "[Name] is standing by" | "Agent idle" |
|
|
1096
|
+
|
|
1097
|
+
### Empty State Copy Principles
|
|
1098
|
+
|
|
1099
|
+
1. **Describe potential, not absence.** "No sessions yet" → "Sessions are conversations with your team. Start one."
|
|
1100
|
+
2. **First-person team language.** "Your team is standing by" not "No data found"
|
|
1101
|
+
3. **Emerald empty states are success states.** "All caught up" when approvals are empty.
|
|
1102
|
+
4. **Only use CTA in empty state if there's a clear next action.** Not every empty state needs a button.
|
|
1103
|
+
|
|
1104
|
+
### Timestamps
|
|
1105
|
+
|
|
1106
|
+
- < 1 minute: "Just now"
|
|
1107
|
+
- 1–59 minutes: "Xm ago"
|
|
1108
|
+
- 1–23 hours: "Xh ago"
|
|
1109
|
+
- Yesterday: "Yesterday at HH:MM"
|
|
1110
|
+
- Older: "Mar 14" or "Mar 14, 2025" if different year
|
|
1111
|
+
|
|
1112
|
+
### Status Labels
|
|
1113
|
+
|
|
1114
|
+
| Status | Display label |
|
|
1115
|
+
|--------|--------------|
|
|
1116
|
+
| active | "Active" |
|
|
1117
|
+
| running | "In session" |
|
|
1118
|
+
| idle | "Standing by" |
|
|
1119
|
+
| pending | "Waiting" |
|
|
1120
|
+
| failed | "Failed" |
|
|
1121
|
+
| offline | "Offline" |
|
|
1122
|
+
| disabled | "Disabled" |
|
|
1123
|
+
|
|
1124
|
+
---
|
|
1125
|
+
|
|
1126
|
+
## APPENDIX: DONE CRITERIA SUMMARY
|
|
1127
|
+
|
|
1128
|
+
A page is "done" when:
|
|
1129
|
+
|
|
1130
|
+
1. ✅ All breakpoints render without overflow or layout break
|
|
1131
|
+
2. ✅ All empty states show exact spec copy and icon (not placeholder text)
|
|
1132
|
+
3. ✅ Component system matches spec (no mixing violations)
|
|
1133
|
+
4. ✅ Loading states use correct skeleton variant
|
|
1134
|
+
5. ✅ Error states follow the 4-level hierarchy
|
|
1135
|
+
6. ✅ Active/live elements animate per the motion spec
|
|
1136
|
+
7. ✅ Reduced motion respected
|
|
1137
|
+
8. ✅ Token usage matches the canonical token system (no raw hex)
|
|
1138
|
+
9. ✅ First login experience shows Activation Mode content where specified
|
|
1139
|
+
10. ✅ Tab/keyboard navigation works on all interactive elements
|
|
1140
|
+
|
|
1141
|
+
---
|
|
1142
|
+
|
|
1143
|
+
*Spec locked. Implementation questions → Nadia. No design decisions in PRs.*
|