myaiforone 1.0.0
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 +113 -0
- package/agents/_template/CLAUDE.md +18 -0
- package/agents/_template/agent.json +7 -0
- package/agents/platform/agentcreator/CLAUDE.md +300 -0
- package/agents/platform/appcreator/CLAUDE.md +158 -0
- package/agents/platform/gym/CLAUDE.md +486 -0
- package/agents/platform/gym/agent.json +40 -0
- package/agents/platform/gym/programs/agent-building/program.json +160 -0
- package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
- package/agents/platform/gym/programs/getting-started/program.json +124 -0
- package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
- package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
- package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
- package/agents/platform/gym/souls/alex.md +12 -0
- package/agents/platform/gym/souls/jordan.md +12 -0
- package/agents/platform/gym/souls/morgan.md +12 -0
- package/agents/platform/gym/souls/riley.md +12 -0
- package/agents/platform/gym/souls/sam.md +12 -0
- package/agents/platform/hub/CLAUDE.md +372 -0
- package/agents/platform/promptcreator/CLAUDE.md +130 -0
- package/agents/platform/skillcreator/CLAUDE.md +163 -0
- package/bin/cli.js +566 -0
- package/config.example.json +310 -0
- package/dist/agent-registry.d.ts +32 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +144 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/channels/discord.d.ts +17 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +114 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/imessage.d.ts +23 -0
- package/dist/channels/imessage.d.ts.map +1 -0
- package/dist/channels/imessage.js +214 -0
- package/dist/channels/imessage.js.map +1 -0
- package/dist/channels/slack.d.ts +19 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +167 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +19 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +274 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +44 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +18 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +23 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +189 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/config.d.ts +134 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/cron.d.ts +8 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +35 -0
- package/dist/cron.js.map +1 -0
- package/dist/decrypt-keys.d.ts +7 -0
- package/dist/decrypt-keys.d.ts.map +1 -0
- package/dist/decrypt-keys.js +53 -0
- package/dist/decrypt-keys.js.map +1 -0
- package/dist/encrypt-keys.d.ts +8 -0
- package/dist/encrypt-keys.d.ts.map +1 -0
- package/dist/encrypt-keys.js +62 -0
- package/dist/encrypt-keys.js.map +1 -0
- package/dist/executor.d.ts +31 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +2009 -0
- package/dist/executor.js.map +1 -0
- package/dist/gemini-executor.d.ts +27 -0
- package/dist/gemini-executor.d.ts.map +1 -0
- package/dist/gemini-executor.js +160 -0
- package/dist/gemini-executor.js.map +1 -0
- package/dist/goals.d.ts +24 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +189 -0
- package/dist/goals.js.map +1 -0
- package/dist/gym/activity-digest.d.ts +30 -0
- package/dist/gym/activity-digest.d.ts.map +1 -0
- package/dist/gym/activity-digest.js +506 -0
- package/dist/gym/activity-digest.js.map +1 -0
- package/dist/gym/dimension-scorer.d.ts +76 -0
- package/dist/gym/dimension-scorer.d.ts.map +1 -0
- package/dist/gym/dimension-scorer.js +236 -0
- package/dist/gym/dimension-scorer.js.map +1 -0
- package/dist/gym/gym-router.d.ts +7 -0
- package/dist/gym/gym-router.d.ts.map +1 -0
- package/dist/gym/gym-router.js +718 -0
- package/dist/gym/gym-router.js.map +1 -0
- package/dist/gym/index.d.ts +11 -0
- package/dist/gym/index.d.ts.map +1 -0
- package/dist/gym/index.js +11 -0
- package/dist/gym/index.js.map +1 -0
- package/dist/heartbeat.d.ts +21 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +163 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/keystore.d.ts +22 -0
- package/dist/keystore.d.ts.map +1 -0
- package/dist/keystore.js +178 -0
- package/dist/keystore.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/daily.d.ts +22 -0
- package/dist/memory/daily.d.ts.map +1 -0
- package/dist/memory/daily.js +82 -0
- package/dist/memory/daily.js.map +1 -0
- package/dist/memory/embeddings.d.ts +15 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +154 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +159 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/search.d.ts +21 -0
- package/dist/memory/search.d.ts.map +1 -0
- package/dist/memory/search.js +77 -0
- package/dist/memory/search.js.map +1 -0
- package/dist/memory/store.d.ts +23 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +144 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/ollama-executor.d.ts +17 -0
- package/dist/ollama-executor.d.ts.map +1 -0
- package/dist/ollama-executor.js +112 -0
- package/dist/ollama-executor.js.map +1 -0
- package/dist/openai-executor.d.ts +38 -0
- package/dist/openai-executor.d.ts.map +1 -0
- package/dist/openai-executor.js +197 -0
- package/dist/openai-executor.js.map +1 -0
- package/dist/router.d.ts +11 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +185 -0
- package/dist/router.js.map +1 -0
- package/dist/test-message.d.ts +2 -0
- package/dist/test-message.d.ts.map +1 -0
- package/dist/test-message.js +60 -0
- package/dist/test-message.js.map +1 -0
- package/dist/utils/imsg-db-reader.d.ts +24 -0
- package/dist/utils/imsg-db-reader.d.ts.map +1 -0
- package/dist/utils/imsg-db-reader.js +92 -0
- package/dist/utils/imsg-db-reader.js.map +1 -0
- package/dist/utils/imsg-rpc.d.ts +25 -0
- package/dist/utils/imsg-rpc.d.ts.map +1 -0
- package/dist/utils/imsg-rpc.js +149 -0
- package/dist/utils/imsg-rpc.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +3 -0
- package/dist/utils/message-formatter.d.ts.map +1 -0
- package/dist/utils/message-formatter.js +69 -0
- package/dist/utils/message-formatter.js.map +1 -0
- package/dist/web-ui.d.ts +12 -0
- package/dist/web-ui.d.ts.map +1 -0
- package/dist/web-ui.js +5784 -0
- package/dist/web-ui.js.map +1 -0
- package/dist/whatsapp-chats.d.ts +2 -0
- package/dist/whatsapp-chats.d.ts.map +1 -0
- package/dist/whatsapp-chats.js +76 -0
- package/dist/whatsapp-chats.js.map +1 -0
- package/dist/whatsapp-login.d.ts +2 -0
- package/dist/whatsapp-login.d.ts.map +1 -0
- package/dist/whatsapp-login.js +90 -0
- package/dist/whatsapp-login.js.map +1 -0
- package/dist/wiki-sync.d.ts +21 -0
- package/dist/wiki-sync.d.ts.map +1 -0
- package/dist/wiki-sync.js +147 -0
- package/dist/wiki-sync.js.map +1 -0
- package/docs/AddNewAgentGuide.md +100 -0
- package/docs/AddNewMcpGuide.md +72 -0
- package/docs/Architecture.md +795 -0
- package/docs/CLAUDE-AI-SETUP.md +166 -0
- package/docs/Setup.md +297 -0
- package/docs/ai-gym-architecture.md +1040 -0
- package/docs/ai-gym-build-plan.md +343 -0
- package/docs/ai-gym-onboarding.md +122 -0
- package/docs/appcreator_plan.md +348 -0
- package/docs/platform-mcp-audit.md +320 -0
- package/docs/server-deployment-plan.md +503 -0
- package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
- package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
- package/docs/user-guide.md +2016 -0
- package/mcp-catalog.json +628 -0
- package/package.json +63 -0
- package/public/MyAIforOne-logomark-512.svg +16 -0
- package/public/MyAIforOne-logomark-transparent.svg +15 -0
- package/public/activity.html +314 -0
- package/public/admin.html +1674 -0
- package/public/agent-dashboard.html +670 -0
- package/public/api-docs.html +1106 -0
- package/public/automations.html +722 -0
- package/public/canvas.css +223 -0
- package/public/canvas.js +588 -0
- package/public/changelog.html +231 -0
- package/public/gym.html +2766 -0
- package/public/home.html +1930 -0
- package/public/index.html +2809 -0
- package/public/lab.html +1643 -0
- package/public/library.html +1442 -0
- package/public/marketplace.html +1101 -0
- package/public/mcp-docs.html +441 -0
- package/public/mini.html +390 -0
- package/public/monitor.html +584 -0
- package/public/org.html +4304 -0
- package/public/projects.html +734 -0
- package/public/settings.html +645 -0
- package/public/tasks.html +932 -0
- package/public/trainers/alex.svg +12 -0
- package/public/trainers/jordan.svg +12 -0
- package/public/trainers/morgan.svg +12 -0
- package/public/trainers/riley.svg +12 -0
- package/public/trainers/sam.svg +12 -0
- package/public/user-guide.html +218 -0
- package/registry/agents.json +3 -0
- package/registry/apps.json +20 -0
- package/registry/installed-drafts.json +3 -0
- package/registry/mcps.json +1084 -0
- package/registry/prompts/personal/mcp-test-prompt.md +6 -0
- package/registry/prompts/personal/memory-recall.md +6 -0
- package/registry/prompts/platform/brainstorm.md +15 -0
- package/registry/prompts/platform/code-review.md +16 -0
- package/registry/prompts/platform/explain.md +16 -0
- package/registry/prompts.json +58 -0
- package/registry/skills/external/brainstorming.md +5 -0
- package/registry/skills/external/code-review.md +40 -0
- package/registry/skills/external/frontend-patterns.md +642 -0
- package/registry/skills/external/frontend-slides.md +184 -0
- package/registry/skills/external/systematic-debugging.md +5 -0
- package/registry/skills/external/tdd.md +328 -0
- package/registry/skills/external/verification-before-completion.md +5 -0
- package/registry/skills/external/writing-plans.md +5 -0
- package/registry/skills/platform/ai41_app_build.md +930 -0
- package/registry/skills/platform/ai41_app_deploy.md +168 -0
- package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
- package/registry/skills/platform/ai41_app_patterns.md +359 -0
- package/registry/skills/platform/ai41_app_register.md +85 -0
- package/registry/skills/platform/ai41_app_scaffold.md +421 -0
- package/registry/skills/platform/ai41_app_verify.md +107 -0
- package/registry/skills/platform/opProjectCreate.md +239 -0
- package/registry/skills/platform/op_devbrowser.md +136 -0
- package/registry/skills/platform/sop_brandguidelines.md +103 -0
- package/registry/skills/platform/sop_docx.md +117 -0
- package/registry/skills/platform/sop_frontenddesign.md +44 -0
- package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
- package/registry/skills/platform/sop_mcpbuilder.md +133 -0
- package/registry/skills/platform/sop_pdf.md +172 -0
- package/registry/skills/platform/sop_pptx.md +133 -0
- package/registry/skills/platform/sop_skillcreator.md +104 -0
- package/registry/skills/platform/sop_themefactory.md +128 -0
- package/registry/skills/platform/sop_webapptesting.md +75 -0
- package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
- package/registry/skills/platform/sop_xlsx.md +134 -0
- package/registry/skills.json +1055 -0
- package/scripts/discover-chats.sh +11 -0
- package/scripts/install-service-windows.ps1 +87 -0
- package/scripts/install-service.sh +52 -0
- package/scripts/seed-registry.ts +195 -0
- package/scripts/test-send.sh +5 -0
- package/scripts/tray-indicator.ps1 +35 -0
- package/scripts/uninstall-service-windows.ps1 +23 -0
- package/scripts/uninstall-service.sh +15 -0
- package/scripts/xbar-myagent.5s.sh +32 -0
- package/server/mcp-server/dist/index.d.ts +11 -0
- package/server/mcp-server/dist/index.js +1332 -0
- package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
- package/server/mcp-server/dist/lib/api-client.js +241 -0
- package/server/mcp-server/index.ts +1545 -0
- package/server/mcp-server/lib/api-client.ts +366 -0
- package/server/mcp-server/tsconfig.json +14 -0
- package/src/agent-registry.ts +180 -0
- package/src/channels/discord.ts +129 -0
- package/src/channels/imessage.ts +261 -0
- package/src/channels/slack.ts +208 -0
- package/src/channels/telegram.ts +307 -0
- package/src/channels/types.ts +62 -0
- package/src/channels/whatsapp.ts +227 -0
- package/src/config.ts +281 -0
- package/src/cron.ts +43 -0
- package/src/decrypt-keys.ts +60 -0
- package/src/encrypt-keys.ts +70 -0
- package/src/executor.ts +2190 -0
- package/src/gemini-executor.ts +212 -0
- package/src/goals.ts +240 -0
- package/src/gym/activity-digest.ts +546 -0
- package/src/gym/dimension-scorer.ts +297 -0
- package/src/gym/gym-router.ts +801 -0
- package/src/gym/index.ts +19 -0
- package/src/heartbeat.ts +220 -0
- package/src/index.ts +275 -0
- package/src/keystore.ts +190 -0
- package/src/logger.ts +51 -0
- package/src/memory/daily.ts +101 -0
- package/src/memory/embeddings.ts +185 -0
- package/src/memory/index.ts +218 -0
- package/src/memory/search.ts +124 -0
- package/src/memory/store.ts +189 -0
- package/src/ollama-executor.ts +126 -0
- package/src/openai-executor.ts +259 -0
- package/src/router.ts +230 -0
- package/src/test-message.ts +72 -0
- package/src/utils/imsg-db-reader.ts +109 -0
- package/src/utils/imsg-rpc.ts +178 -0
- package/src/utils/message-formatter.ts +90 -0
- package/src/web-ui.ts +5778 -0
- package/src/whatsapp-chats.ts +91 -0
- package/src/whatsapp-login.ts +110 -0
- package/src/wiki-sync.ts +199 -0
- package/tsconfig.json +19 -0
|
@@ -0,0 +1,1040 @@
|
|
|
1
|
+
# AI Gym — Architecture & Design Document
|
|
2
|
+
|
|
3
|
+
> Personal AI trainer that lives inside your agent platform. Learns from your actual usage, delivers personalized training, and keeps you current on AI — all from one place.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
1. [Concept](#1-concept)
|
|
10
|
+
2. [Strategic Position](#2-strategic-position)
|
|
11
|
+
3. [Onboarding Flow](#3-onboarding-flow)
|
|
12
|
+
4. [Gym Coach Agent](#4-gym-coach-agent)
|
|
13
|
+
5. [Directory Structure](#5-directory-structure)
|
|
14
|
+
6. [Learner Profile](#6-learner-profile)
|
|
15
|
+
7. [AI Strength Dimensions](#7-ai-strength-dimensions)
|
|
16
|
+
8. [RAG Pipeline — How the Coach Sees Everything](#8-rag-pipeline--how-the-coach-sees-everything)
|
|
17
|
+
9. [Programs (Structured Training)](#9-programs-structured-training)
|
|
18
|
+
10. [Continuous Coaching (Ongoing Personalized Mode)](#10-continuous-coaching-ongoing-personalized-mode)
|
|
19
|
+
11. [The Feed (News + Updates)](#11-the-feed-news--updates)
|
|
20
|
+
12. [UI — The /gym Page](#12-ui--the-gym-page)
|
|
21
|
+
13. [Feature Flag & Gym-Only Mode](#13-feature-flag--gym-only-mode)
|
|
22
|
+
14. [What Needs Building](#14-what-needs-building)
|
|
23
|
+
15. [Profile/Auth Decision (Resolved)](#15-profileauth-decision-resolved)
|
|
24
|
+
16. [Open Questions](#16-open-questions)
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 1. Concept
|
|
29
|
+
|
|
30
|
+
The AI Gym is a personal AI growth area built into the MyAI for One platform. It is **not** a course platform — it's a coach that lives inside your actual AI workspace.
|
|
31
|
+
|
|
32
|
+
### Core Insight
|
|
33
|
+
|
|
34
|
+
Learning AI and using AI are the same motion. The gym isn't a separate product — it's an on-ramp. Someone starts with a guided program, and by the end they've built the muscle memory of actually using agents. They graduate from "gym member" to "power user" without a context switch.
|
|
35
|
+
|
|
36
|
+
### What Makes It Different
|
|
37
|
+
|
|
38
|
+
Traditional AI training: "Here's a course. Go through it. Done."
|
|
39
|
+
|
|
40
|
+
The AI Gym: A coach agent that **observes your real platform activity** across all your agents, understands your skill level and work patterns, and generates personalized training — continuously, not just once.
|
|
41
|
+
|
|
42
|
+
Nobody else has a coach that lives inside your actual AI workspace and sees everything you do. That's the moat.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Strategic Position
|
|
47
|
+
|
|
48
|
+
### As a Distribution Channel
|
|
49
|
+
|
|
50
|
+
The gym is a way to distribute the MyAI for One platform itself. The training *is* the product usage.
|
|
51
|
+
|
|
52
|
+
- **Gym-only install**: Someone installs MyAI for One purely for AI training. The gym is the front door. As they progress, they naturally discover "wait, I can just *keep* using these agents for my real work."
|
|
53
|
+
- **Shareable programs**: A trainer creates a program, exports it, shares it. The recipient installs the platform to run it.
|
|
54
|
+
- **Lead flow**: Training on AI → Using AI tools → Power user. The gym is the top of the funnel.
|
|
55
|
+
|
|
56
|
+
### Standalone vs Integrated
|
|
57
|
+
|
|
58
|
+
- Some users use the **full platform** (agents, channels, automations) and the gym is an added growth area
|
|
59
|
+
- Some users use **only the gym** — they installed for training and may or may not expand into the full platform
|
|
60
|
+
- Both are valid. The gym should work as a standalone experience or as part of the full platform.
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 3. Onboarding Flow
|
|
65
|
+
|
|
66
|
+
The gym's entry point is a three-step onboarding flow. It runs once on first activation and gates access to the main gym experience until complete.
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Step 1 — Choose Your Trainer
|
|
70
|
+
Step 2 — Get to Know You
|
|
71
|
+
Step 3 — Get Your Plan
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
### Step 1 — Choose Your Trainer
|
|
77
|
+
|
|
78
|
+
The user selects one of **5 trainer profiles**. Each profile is a named persona with a fixed personality, communication style, and pace. The selection UI shows each trainer as a card: name, avatar, and a short first-person intro — enough to feel like a real person, not a feature matrix.
|
|
79
|
+
|
|
80
|
+
Pacing and tone are baked into each profile. There are no separate dropdowns or configuration steps. Pick the person you want coaching you.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
#### The 5 Trainers
|
|
85
|
+
|
|
86
|
+
**Alex** *(Collaborative · Steady)*
|
|
87
|
+
> "Hey, I'm Alex. I work right alongside you — we figure things out together. I'm not here to lecture you; I'm here to build with you. Expect a consistent pace, real progress every session, and a lot of high-fives along the way."
|
|
88
|
+
|
|
89
|
+
**Jordan** *(Direct · Steady)*
|
|
90
|
+
> "I'm Jordan. I'm direct, I don't sugarcoat, and I'll hold you accountable. We set a goal, we hit it. I'll tell you exactly what to work on and call you out when you're avoiding the hard stuff. Steady, focused work — that's how you actually get good at this."
|
|
91
|
+
|
|
92
|
+
**Morgan** *(Thoughtful · Steady)*
|
|
93
|
+
> "I'm Morgan. I care a lot about the 'why.' I won't just show you what to click — I'll make sure you understand what's actually happening and why it matters. We'll take things one layer at a time, and when we're done you'll have real understanding, not just checked boxes."
|
|
94
|
+
|
|
95
|
+
**Riley** *(Challenging · Immersive)*
|
|
96
|
+
> "I'm Riley. I'm going to push you — hard questions, uncomfortable exercises, things you'll want to skip. That's exactly where we're going. When you're with me, we go deep and fast. You'll surprise yourself with what you can do when someone actually expects it of you."
|
|
97
|
+
|
|
98
|
+
**Sam** *(Patient · Steady)*
|
|
99
|
+
> "I'm Sam. I meet you exactly where you are — no pressure, no judgment. Brand new? Fine. Tried before and it didn't stick? Also fine. We go at your pace. One thing at a time, building from what you already know. Nothing overwhelming, ever."
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
Each trainer has a corresponding avatar image (illustrated, not photorealistic). Avatar files live at `public/trainers/<name>.png`. The selection card shows the avatar, the trainer's name, and their intro.
|
|
104
|
+
|
|
105
|
+
Users can switch trainers at any time. Their plan, progress, and history are untouched — only the coaching voice changes.
|
|
106
|
+
|
|
107
|
+
**Implementation:** Each trainer profile is a `soul.md` file — the personality layer of the gym agent's system prompt. Switching trainers = swapping which `soul.md` is active. Base coaching logic (methodology, verification, RAG) lives in `CLAUDE.md` and never changes.
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
### Step 2 — Get to Know You
|
|
112
|
+
|
|
113
|
+
Once a trainer is selected, the agent sends a **single conversational message** — not a form or questionnaire. It covers three topics and invites the user to respond however they want, in one go.
|
|
114
|
+
|
|
115
|
+
**The Three Topics:**
|
|
116
|
+
1. **About You (professional)** — User shares LinkedIn, Twitter, or any links. Agent reads and builds a profile passively. User can review and edit. Goal: professional context and background. Nothing personal.
|
|
117
|
+
2. **Your AI Use** — Where are you today? Heavy user with real workflows? Curious beginner? User describes in their own words with an example.
|
|
118
|
+
3. **Your Goals** — What do you want out of AI? More productive at work? Build something? Just not feel left behind?
|
|
119
|
+
|
|
120
|
+
**The One-Question Prompt:**
|
|
121
|
+
> "Before we get started, tell me a bit about yourself — I'll use this to make everything we do together actually useful to you. You can share things like: your LinkedIn or any links (I'll read them), what you do for work, where you are with AI right now (total beginner, dabbler, daily user — give me an example), and what you're hoping to get out of this. One message, however you want to write it."
|
|
122
|
+
|
|
123
|
+
The agent processes the response, builds the learner profile, and confirms back with a brief summary before moving to the plan.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### Step 3 — The Plan
|
|
128
|
+
|
|
129
|
+
The plan is a **real, visible, living document** — not a background concept. It has its own section in the gym UI. Users can see it, the gym agent updates it continuously, and the user can edit it too.
|
|
130
|
+
|
|
131
|
+
The plan always has two buckets:
|
|
132
|
+
|
|
133
|
+
**Bucket 1 — On the Job Training (User-Driven)**
|
|
134
|
+
The user brings their real work to the platform. The gym agent observes, assists, suggests, and tracks skill development as a byproduct of actual usage. Learning by doing. Value is delivered immediately — they're not studying AI, they're using AI to get things done, and the gym is tracking the growth in the background.
|
|
135
|
+
|
|
136
|
+
**Bucket 2 — Platform-Driven**
|
|
137
|
+
|
|
138
|
+
Two sub-buckets:
|
|
139
|
+
- **Textbook** — Curated modules: read this article, watch this video, learn this concept. Structured, sequenced content for foundational knowledge.
|
|
140
|
+
- **Dynamic** — Personalized suggestions based on observed platform activity. If the user did something with Excel through the platform, and the gym agent knows a Claude + Excel technique they haven't seen, it surfaces it as a training moment. Reactive, contextual, continuously generated.
|
|
141
|
+
|
|
142
|
+
**Plan properties:**
|
|
143
|
+
- Created at end of onboarding, seeded from the user profile built in Step 2
|
|
144
|
+
- Updated continuously by the gym agent as usage patterns emerge
|
|
145
|
+
- User can add goals, mark things done, or reorder priorities
|
|
146
|
+
- Tracks: mastered skills, in-progress learning, suggested next steps, wins/milestones
|
|
147
|
+
- Will have dedicated APIs and MCP tools for read/write access
|
|
148
|
+
- The bucket structure (on-the-job vs. platform-driven / textbook vs. dynamic) is preserved as the organizing frame — always visible in the UI
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 4. Gym Coach Agent
|
|
153
|
+
|
|
154
|
+
The gym coach is a **gym-class agent** — a distinct class separate from personal agents and platform agents. Like platform agents (e.g., Hub), it ships with the platform and is not user-deletable. Unlike platform agents, it is gated behind a feature flag and has a user-facing personality layer (`soul.md`) that can be swapped without touching core coaching logic.
|
|
155
|
+
|
|
156
|
+
> **Class decision:** The onboarding doc introduced "gym" as a third agent class. The architecture doc previously said `class: "platform"`. Current working resolution: use `class: "gym"` in `agent.json` and treat gym-class agents as a sub-type of platform agents — same elevated access and ship-with-platform rules, but distinct in that they have a `soul.md` personality layer and are feature-flagged. This needs final confirmation before implementation.
|
|
157
|
+
|
|
158
|
+
### agent.json
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"id": "gym",
|
|
163
|
+
"name": "AI Gym Coach",
|
|
164
|
+
"alias": "gym",
|
|
165
|
+
"class": "gym",
|
|
166
|
+
"workspace": "~",
|
|
167
|
+
"advancedMemory": true,
|
|
168
|
+
"wiki": true,
|
|
169
|
+
"persistentSession": true,
|
|
170
|
+
"allowedTools": ["Read", "Glob", "Grep", "Write", "Bash"],
|
|
171
|
+
"mcps": ["myaiforone"],
|
|
172
|
+
"featureFlag": "gymEnabled"
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Why These Settings
|
|
177
|
+
|
|
178
|
+
| Setting | Reason |
|
|
179
|
+
|---------|--------|
|
|
180
|
+
| `class: "gym"` | Naming convention only (same executor behavior as platform agents). Marks agent as non-deletable by users and feature-flag gated. Formalize as a real class later if a second gym-type agent is needed. |
|
|
181
|
+
| `advancedMemory: true` | Daily journals + vector embeddings. This is how the coach builds long-term understanding of you over weeks and months. |
|
|
182
|
+
| `wiki: true` | Learns facts from conversations. When you tell the coach "I work in finance" or "I'm intermediate with Python", it saves to `learned.md`. |
|
|
183
|
+
| `persistentSession: true` | Coaching is a continuous relationship, not one-off Q&A. Session persists across visits. |
|
|
184
|
+
| `allowedTools: [Read, Glob, Grep, Write, Bash]` | Full standard tool set — same baseline as any capable agent on the platform. The coach's **first-choice** for all data access is MCP tools (see §8 Layer 3/4). Direct file tools are a fallback for edge cases not yet covered by MCP, and for writing to its own memory directory. |
|
|
185
|
+
| `mcps: ["myaiforone"]` | Full platform MCP access. Primary interface for all agent data: `list_agents`, `get_agent`, `get_agent_logs`, `get_agent_activity_summary`, gym plan/progress/cards, and program CRUD. |
|
|
186
|
+
|
|
187
|
+
### Code Structure — Gym Subfolder
|
|
188
|
+
|
|
189
|
+
All gym-specific code lives under `src/gym/` and is imported where needed by the rest of the platform. Nothing gym-related is scattered across the main `src/` files.
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
src/gym/
|
|
193
|
+
├── gym-agent.ts ← gym agent registration + soul.md loading logic
|
|
194
|
+
├── gym-router.ts ← /api/gym/* route handlers (plan, progress, cards, programs)
|
|
195
|
+
├── gym-mcp-tools.ts ← MCP tool definitions for gym-specific tools
|
|
196
|
+
├── activity-digest.ts ← scheduled digest goal: reads agent summaries, updates profile
|
|
197
|
+
├── dimension-scorer.ts ← dimension scoring logic from activity patterns
|
|
198
|
+
├── program-importer.ts ← markdown → Program/Module/Step parser + import
|
|
199
|
+
└── onboarding.ts ← onboarding flow state machine (3 steps)
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Platform files (`src/web-ui.ts`, `src/mcp-server/index.ts`, etc.) import from `src/gym/` only at registration points — they don't contain gym logic inline. The gym feature flag gates all registrations; when `gymEnabled: false`, nothing in `src/gym/` runs.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
### System Prompt Architecture
|
|
207
|
+
|
|
208
|
+
The gym agent's prompt is split into two layers:
|
|
209
|
+
|
|
210
|
+
**`CLAUDE.md` — Core coaching logic (never changes)**
|
|
211
|
+
- Assessment methodology — how to evaluate skill level from activity patterns
|
|
212
|
+
- Recommendation engine — rules for matching capability gaps to training modules
|
|
213
|
+
- Verification approach — how to check exercise completion via MCP tools
|
|
214
|
+
- Proactive insight generation — patterns to watch for in activity digests
|
|
215
|
+
- Plan management — how to read/write the living plan document
|
|
216
|
+
|
|
217
|
+
**`soul.md` — Personality layer (swappable per trainer profile)**
|
|
218
|
+
- Tone, voice, and communication style
|
|
219
|
+
- Pacing philosophy (steady vs. immersive)
|
|
220
|
+
- How the trainer opens sessions, delivers feedback, celebrates wins
|
|
221
|
+
- One `soul.md` per trainer profile; active file is symlinked or referenced at agent startup
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## 5. Directory Structure
|
|
226
|
+
|
|
227
|
+
```
|
|
228
|
+
agents/platform/gym/
|
|
229
|
+
├── agent.json ← Gym agent config (class: "gym")
|
|
230
|
+
├── CLAUDE.md ← Core coaching logic (never changes)
|
|
231
|
+
├── souls/ ← Trainer personality files
|
|
232
|
+
│ ├── alex.md ← Alex — collaborative, steady
|
|
233
|
+
│ ├── jordan.md ← Jordan — direct, accountable, steady
|
|
234
|
+
│ ├── morgan.md ← Morgan — thoughtful, frameworks-first, steady
|
|
235
|
+
│ ├── riley.md ← Riley — challenging, immersive
|
|
236
|
+
│ └── sam.md ← Sam — patient, no pressure, steady
|
|
237
|
+
├── memory/
|
|
238
|
+
│ ├── conversation_log.jsonl ← Coach conversation history
|
|
239
|
+
│ ├── context.md ← Persistent coaching context
|
|
240
|
+
│ ├── learned.md ← Wiki: facts learned from conversations
|
|
241
|
+
│ ├── learner-profile.json ← User's skill map, patterns, preferences
|
|
242
|
+
│ ├── plan.md ← Living plan document (two-bucket structure)
|
|
243
|
+
│ ├── program-progress.json ← Program/module completion state
|
|
244
|
+
│ ├── daily/ ← Advanced memory journals (auto-generated)
|
|
245
|
+
│ └── embeddings/ ← Vector index for RAG search
|
|
246
|
+
└── programs/ ← Bundled training programs
|
|
247
|
+
├── getting-started/
|
|
248
|
+
│ ├── program.json
|
|
249
|
+
│ └── modules/
|
|
250
|
+
│ ├── 01-meet-your-ai.md
|
|
251
|
+
│ ├── 02-first-conversation.md
|
|
252
|
+
│ ├── 03-give-it-context.md
|
|
253
|
+
│ └── ...
|
|
254
|
+
├── prompt-engineering/
|
|
255
|
+
│ ├── program.json
|
|
256
|
+
│ └── modules/
|
|
257
|
+
├── agent-building/
|
|
258
|
+
│ ├── program.json
|
|
259
|
+
│ └── modules/
|
|
260
|
+
├── automations-mastery/
|
|
261
|
+
│ ├── program.json
|
|
262
|
+
│ └── modules/
|
|
263
|
+
└── mcp-integrations/
|
|
264
|
+
├── program.json
|
|
265
|
+
└── modules/
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 6. Learner Profile
|
|
271
|
+
|
|
272
|
+
The learner profile is the core data structure that makes everything personalized. It's updated by both the scheduled activity digest and direct coaching conversations.
|
|
273
|
+
|
|
274
|
+
### Schema
|
|
275
|
+
|
|
276
|
+
```json
|
|
277
|
+
{
|
|
278
|
+
"version": 1,
|
|
279
|
+
"createdAt": "2026-04-08T00:00:00Z",
|
|
280
|
+
"updatedAt": "2026-04-08T18:00:00Z",
|
|
281
|
+
|
|
282
|
+
"identity": {
|
|
283
|
+
"skillLevel": "intermediate",
|
|
284
|
+
"role": "fintech product manager",
|
|
285
|
+
"interests": ["automation", "finance", "team productivity"],
|
|
286
|
+
"learningStyle": "hands-on",
|
|
287
|
+
"prefersConcise": true,
|
|
288
|
+
"notes": "Works in fintech. Prefers concise explanations. Visual learner."
|
|
289
|
+
},
|
|
290
|
+
|
|
291
|
+
"activity": {
|
|
292
|
+
"activeAgents": ["coder", "researcher", "writer"],
|
|
293
|
+
"dormantAgents": ["ops", "designer"],
|
|
294
|
+
"totalMessages": 1247,
|
|
295
|
+
"messagesThisWeek": 83,
|
|
296
|
+
"mostActiveDay": "tuesday",
|
|
297
|
+
"averageSessionLength": "12min",
|
|
298
|
+
"lastActivity": "2026-04-08T17:30:00Z"
|
|
299
|
+
},
|
|
300
|
+
|
|
301
|
+
"features": {
|
|
302
|
+
"used": ["chat", "sessions", "file-upload", "canvas", "multi-provider"],
|
|
303
|
+
"neverUsed": ["automations", "mcps", "delegation", "cron", "webhooks"],
|
|
304
|
+
"recentlyDiscovered": ["multi-provider"]
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
"patterns": {
|
|
308
|
+
"strengths": [
|
|
309
|
+
"Good at crafting detailed prompts",
|
|
310
|
+
"Uses file upload effectively with @coder"
|
|
311
|
+
],
|
|
312
|
+
"struggles": [
|
|
313
|
+
{
|
|
314
|
+
"pattern": "Long back-and-forth with @coder on debugging",
|
|
315
|
+
"suggestion": "Teach workspace setup + tool access for self-debugging",
|
|
316
|
+
"firstSeen": "2026-03-20",
|
|
317
|
+
"occurrences": 7
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"pattern": "Manually copies output from @researcher to @writer",
|
|
321
|
+
"suggestion": "Teach delegation / agent-to-agent handoff",
|
|
322
|
+
"firstSeen": "2026-04-01",
|
|
323
|
+
"occurrences": 4
|
|
324
|
+
}
|
|
325
|
+
]
|
|
326
|
+
},
|
|
327
|
+
|
|
328
|
+
"programs": {
|
|
329
|
+
"completed": ["getting-started"],
|
|
330
|
+
"current": {
|
|
331
|
+
"programId": "agent-building",
|
|
332
|
+
"currentStepId": "02-create-first-s2",
|
|
333
|
+
"startedAt": "2026-04-05T10:00:00Z"
|
|
334
|
+
},
|
|
335
|
+
"recommended": ["automations-mastery", "mcp-integrations"]
|
|
336
|
+
},
|
|
337
|
+
|
|
338
|
+
"streak": {
|
|
339
|
+
"current": 12,
|
|
340
|
+
"longest": 18,
|
|
341
|
+
"lastActiveDate": "2026-04-08"
|
|
342
|
+
},
|
|
343
|
+
|
|
344
|
+
"dimensions": {
|
|
345
|
+
"application": { "score": 3, "label": "Proficient", "trend": "up", "lastUpdated": "2026-04-08" },
|
|
346
|
+
"communication": { "score": 2, "label": "Developing", "trend": "stable", "lastUpdated": "2026-04-08" },
|
|
347
|
+
"knowledge": { "score": 3, "label": "Proficient", "trend": "up", "lastUpdated": "2026-04-08" },
|
|
348
|
+
"orchestration": { "score": 1, "label": "Beginner", "trend": "stable", "lastUpdated": "2026-04-08" },
|
|
349
|
+
"craft": { "score": 2, "label": "Developing", "trend": "up", "lastUpdated": "2026-04-08" }
|
|
350
|
+
},
|
|
351
|
+
|
|
352
|
+
"selectedTrainer": "alex"
|
|
353
|
+
}
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### How It Gets Updated
|
|
357
|
+
|
|
358
|
+
| Source | What it updates |
|
|
359
|
+
|--------|----------------|
|
|
360
|
+
| Activity digest (scheduled) | `activity`, `features`, `patterns` |
|
|
361
|
+
| Direct coaching conversation | `identity`, `programs.current`, wiki facts |
|
|
362
|
+
| Program completion | `programs.completed`, `streak` |
|
|
363
|
+
| Coach observation | `patterns.strengths`, `patterns.struggles` |
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
## 7. AI Strength Dimensions
|
|
368
|
+
|
|
369
|
+
The learner profile is scored across **5 dimensions**. These are the axes that define what "AI skill" actually means. Together they give the coach — and the user — a clear picture of where they are and what to develop next.
|
|
370
|
+
|
|
371
|
+
Each dimension is scored **1–5**:
|
|
372
|
+
|
|
373
|
+
| Level | Label |
|
|
374
|
+
|-------|-------|
|
|
375
|
+
| 1 | Beginner |
|
|
376
|
+
| 2 | Developing |
|
|
377
|
+
| 3 | Proficient |
|
|
378
|
+
| 4 | Advanced |
|
|
379
|
+
| 5 | Expert |
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
### The 5 Dimensions
|
|
384
|
+
|
|
385
|
+
#### 1. Application
|
|
386
|
+
> *How deeply is AI integrated into your actual work?*
|
|
387
|
+
|
|
388
|
+
Are you reaching for your AI agents when a task comes up — or still defaulting to doing things manually? This is about **habit and reflex**, not knowledge. A score of 1 means occasional experimentation; a score of 5 means AI is your default tool for a broad range of real tasks.
|
|
389
|
+
|
|
390
|
+
**How it's measured:** Agent usage frequency, breadth of agents used, whether agents have real workspaces and real tasks vs toy usage, session depth.
|
|
391
|
+
|
|
392
|
+
**Gym guidance at low scores:** On-the-job training challenges — "bring your next real task here." The coach nudges toward substitution: replacing a manual workflow with an agent one.
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
#### 2. Communication
|
|
397
|
+
> *How effectively do you talk to AI?*
|
|
398
|
+
|
|
399
|
+
Prompting is a skill. This dimension tracks whether the user gives context, structures requests clearly, knows when to course-correct, and gets strong results without excessive back-and-forth. A score of 1 means short, vague prompts and frequent frustration; a score of 5 means precise, context-rich requests that produce great output on the first or second try.
|
|
400
|
+
|
|
401
|
+
**How it's measured:** Prompt length and specificity patterns, number of follow-up corrections per session, self-reported frustration signals ("that's not what I meant"), quality of instructions given to agents.
|
|
402
|
+
|
|
403
|
+
**Gym guidance at low scores:** Prompt engineering program. Micro-lessons on context, specificity, and structured requests.
|
|
404
|
+
|
|
405
|
+
---
|
|
406
|
+
|
|
407
|
+
#### 3. Knowledge
|
|
408
|
+
> *How much do you understand about AI — how it works, what it can and can't do?*
|
|
409
|
+
|
|
410
|
+
Core AI literacy. Does the user understand what a model is, how context windows work, what hallucination means, what MCPs and tools enable, how RAG works, what the current landscape looks like? This is the **conceptual foundation** that everything else builds on.
|
|
411
|
+
|
|
412
|
+
**How it's measured:** Program completion (especially foundational programs), question types asked to the coach (surface vs. deep), demonstrated understanding in conversations, self-reported experience level.
|
|
413
|
+
|
|
414
|
+
**Gym guidance at low scores:** Textbook modules. Curated explainers. Feed content prioritizes AI fundamentals.
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
#### 4. Orchestration
|
|
419
|
+
> *Can you design and run multi-agent, automated workflows?*
|
|
420
|
+
|
|
421
|
+
Beyond chatting with a single agent — can the user chain agents together, set up automations, delegate work, run scheduled tasks, and build workflows that operate without their constant involvement? This is where AI stops being a tool and starts being a workforce.
|
|
422
|
+
|
|
423
|
+
**How it's measured:** Use of goals/cron, delegation between agents, multi-agent session patterns, automation setup, whether agents are doing work while the user is offline.
|
|
424
|
+
|
|
425
|
+
**Gym guidance at low scores:** Automations Mastery program. Coach introduces the concept of "agents working for you, not with you."
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
#### 5. Craft
|
|
430
|
+
> *Can you build, configure, and tune AI systems from scratch?*
|
|
431
|
+
|
|
432
|
+
The builder dimension. Can the user create a specialized agent with a good system prompt, assign the right tools, wire up MCPs, set the correct workspace? This is about **AI system design** — knowing what to give an agent, what to withhold, and why.
|
|
433
|
+
|
|
434
|
+
**How it's measured:** Agents created, quality of system prompts written (coach reads and evaluates CLAUDE.md files), MCP configurations set up, tool selection choices, workspace assignments.
|
|
435
|
+
|
|
436
|
+
**Gym guidance at low scores:** Agent Building program. Coach reviews existing agents and suggests improvements to system prompts and tool configs.
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
### Dimension Scores in the Learner Profile
|
|
441
|
+
|
|
442
|
+
Dimension scores are stored in the `dimensions` field of `learner-profile.json` (see §6 for the full schema). `selectedTrainer` is also stored there — read at agent spawn time to load the correct `souls/<name>.md`.
|
|
443
|
+
|
|
444
|
+
**Trend values:** `up`, `down`, `stable` — based on delta between last two digest cycles. Weekly snapshots saved separately in `dimension-history.json` to power the progress history chart.
|
|
445
|
+
|
|
446
|
+
### How the Coach Uses Dimensions
|
|
447
|
+
|
|
448
|
+
- **Program recommendations** — each program maps to one or two primary dimensions. Low score → recommended program.
|
|
449
|
+
- **Gym card generation** — coach generates cards targeting the user's lowest dimension with the most activity (where coaching effort has highest ROI).
|
|
450
|
+
- **Plan structure** — the living plan is organized around dimension growth, not just task completion.
|
|
451
|
+
- **Progress story** — when the user asks "how am I doing?", the coach can give a dimensional answer: "Your Application and Knowledge are solid. Orchestration is where we should focus next."
|
|
452
|
+
- **Radar chart** — the `/gym` UI will visualize these 5 dimensions as a radar/spider chart — one glance shows the shape of your AI skill.
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## 8. RAG Pipeline — How the Coach Sees Everything
|
|
457
|
+
|
|
458
|
+
The coach needs to understand your activity across all agents without loading every conversation into its context window. This is solved with a multi-layer RAG approach.
|
|
459
|
+
|
|
460
|
+
### Layer 1: Activity Ingestion (Scheduled)
|
|
461
|
+
|
|
462
|
+
A scheduled goal on the gym agent runs daily:
|
|
463
|
+
|
|
464
|
+
```
|
|
465
|
+
Goal: "activity-digest"
|
|
466
|
+
Schedule: "0 6 * * *" (daily at 6am)
|
|
467
|
+
Prompt: "Analyze platform activity since your last digest.
|
|
468
|
+
Read conversation logs across all agents.
|
|
469
|
+
Update the learner profile.
|
|
470
|
+
Generate any new recommendations or gym cards."
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
What the digest does:
|
|
474
|
+
|
|
475
|
+
1. Calls `list_agents` MCP tool to get the full agent roster
|
|
476
|
+
2. For each agent, calls `get_agent_activity_summary` MCP tool (aggregated: message count, topics, tool use, last active) — avoids streaming full logs for every agent
|
|
477
|
+
3. For agents with notable activity or struggles, calls `get_agent_logs` for deeper pattern analysis
|
|
478
|
+
4. Summarizes patterns: which agents active, what topics, what tool use, what struggles
|
|
479
|
+
5. Calls `snapshot_dimensions` MCP tool to save a weekly dimension score checkpoint (for the progress history chart)
|
|
480
|
+
6. Writes the digest into its own `daily/` journal (advanced memory auto-embeds this)
|
|
481
|
+
7. Calls `update_profile` MCP tool to update the learner profile with new observations
|
|
482
|
+
8. Calls `create_gym_card` MCP tool for each new recommendation surfaced
|
|
483
|
+
|
|
484
|
+
### Layer 2: Vector Search Over History
|
|
485
|
+
|
|
486
|
+
The coach's `advancedMemory: true` setting means all daily digests are automatically embedded into its vector store. When the coach needs historical context:
|
|
487
|
+
|
|
488
|
+
- **"What has the user been doing this week?"** → vector search over recent daily journals
|
|
489
|
+
- **"When did the user last try automations?"** → vector search over older digests
|
|
490
|
+
- **"What programs match the user's current gaps?"** → vector search over program module content
|
|
491
|
+
|
|
492
|
+
### Layer 3: Cross-Agent Activity via MCP
|
|
493
|
+
|
|
494
|
+
All agent data access goes through **MCP tools and APIs** — no direct file reads on agent directories. This is the first-class approach for all current and future access patterns.
|
|
495
|
+
|
|
496
|
+
**Rationale:** Direct file access is a local-only shortcut. MCP tools give us a stable abstraction layer that works identically on local install and SaaS, and can be exposed externally in the future without rearchitecting the coach.
|
|
497
|
+
|
|
498
|
+
| Need | MCP Tool |
|
|
499
|
+
|------|----------|
|
|
500
|
+
| List all agents | `list_agents` |
|
|
501
|
+
| Get agent config (tools, MCPs, workspace) | `get_agent` |
|
|
502
|
+
| Get conversation logs for an agent | `get_agent_logs` *(new — see §14)* |
|
|
503
|
+
| Search across all agent logs | `search_agent_logs` *(new — see §14)* |
|
|
504
|
+
| Get activity summary for an agent | `get_agent_activity_summary` *(new — see §14)* |
|
|
505
|
+
| Verify user created an agent | `list_agents` (check for new entry) |
|
|
506
|
+
| Verify automation was set up | `list_automations` |
|
|
507
|
+
| Check what channels are active | `list_channels` |
|
|
508
|
+
| Read/write learner profile | `get_profile`, `update_profile` |
|
|
509
|
+
| Read/write gym plan | `get_plan`, `update_plan` *(new — see §14)* |
|
|
510
|
+
|
|
511
|
+
> **Performance note:** The activity digest calls `get_agent_logs` per agent — potentially many calls on an active install. To keep the digest fast, `get_agent_activity_summary` should return a pre-aggregated summary (message count, topics, tool use, last active) so the coach doesn't need to stream raw logs for every agent every day. Raw logs via `get_agent_logs` are reserved for deep-dive analysis on specific agents.
|
|
512
|
+
|
|
513
|
+
### Layer 4: Gym State via MCP
|
|
514
|
+
|
|
515
|
+
The coach's own data (plan, progress, profile) is also read/written via MCP tools — not via Write tool on files directly.
|
|
516
|
+
|
|
517
|
+
| Need | MCP Tool |
|
|
518
|
+
|------|----------|
|
|
519
|
+
| Read learner profile | `get_profile` |
|
|
520
|
+
| Update learner profile | `update_profile` |
|
|
521
|
+
| Read gym plan | `get_plan` *(new)* |
|
|
522
|
+
| Update gym plan | `update_plan` *(new)* |
|
|
523
|
+
| Read/write program progress | `get_gym_progress`, `update_gym_progress` *(new)* |
|
|
524
|
+
| Generate gym cards | `create_gym_card` *(new)* |
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## 9. Programs (Structured Training)
|
|
529
|
+
|
|
530
|
+
Programs are the gym's formal curriculum. Each is a structured progression of modules, where each module contains a sequence of steps. This is a **three-level hierarchy**: Program → Module → Step.
|
|
531
|
+
|
|
532
|
+
> **Reference implementation:** The aigym-platform (`~/Desktop/APPs/aigym-platform`) has a working implementation of this schema with full CRUD APIs, an AI generator, a markdown importer, and progress tracking per step. The local gym should align with this schema so programs are portable between the two.
|
|
533
|
+
|
|
534
|
+
### Schema
|
|
535
|
+
|
|
536
|
+
```
|
|
537
|
+
Program
|
|
538
|
+
├── id, title, slug, description
|
|
539
|
+
├── tier: "free" | "pro"
|
|
540
|
+
├── difficulty: "beginner" | "intermediate" | "advanced"
|
|
541
|
+
├── estimatedTime
|
|
542
|
+
├── prerequisites: string[] (program slugs)
|
|
543
|
+
├── trainers: string[] (trainer IDs with persona variations, e.g. ["alex","riley"] — "personas" in aigym-platform)
|
|
544
|
+
├── isPublic: boolean
|
|
545
|
+
├── isMarketplaceListed: boolean ← see Marketplace section below
|
|
546
|
+
└── modules: Module[]
|
|
547
|
+
├── id, title, description
|
|
548
|
+
├── position (display order)
|
|
549
|
+
├── agentInstructions (optional — hints for the gym coach on this module)
|
|
550
|
+
└── steps: Step[]
|
|
551
|
+
├── id, title, content (markdown)
|
|
552
|
+
├── position
|
|
553
|
+
├── isCritical: boolean
|
|
554
|
+
├── trainerVariations: { [trainerId]: string } ← per-trainer content variants (e.g. "riley": "...immersive version...") — "personaVariations" in aigym-platform
|
|
555
|
+
└── verification: Verification
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Step Format
|
|
559
|
+
|
|
560
|
+
Each step's `content` field is markdown:
|
|
561
|
+
|
|
562
|
+
```markdown
|
|
563
|
+
## Create Your First Custom Agent
|
|
564
|
+
|
|
565
|
+
An agent is your AI teammate for a specific job. Instead of one general assistant
|
|
566
|
+
that does everything, you create focused agents: one for code review, one for
|
|
567
|
+
writing, one for research. Each gets its own context, tools, and personality.
|
|
568
|
+
|
|
569
|
+
### Exercise
|
|
570
|
+
|
|
571
|
+
Create a new agent for something you actually do at work. Ideas:
|
|
572
|
+
- A code reviewer for your main project
|
|
573
|
+
- A writing assistant with your style guidelines
|
|
574
|
+
- A research agent for your industry
|
|
575
|
+
|
|
576
|
+
Go to the Org page and click **+ New Agent**, or just tell me what you want
|
|
577
|
+
and I'll help you set it up right here.
|
|
578
|
+
|
|
579
|
+
### What I'll Check
|
|
580
|
+
I'll verify that a new agent appeared in your roster with a meaningful name
|
|
581
|
+
and at least a basic system prompt. Generic names like "test" don't count!
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
### Verification Types
|
|
585
|
+
|
|
586
|
+
Verification lives at the step level:
|
|
587
|
+
|
|
588
|
+
| Type | How it works |
|
|
589
|
+
|------|-------------|
|
|
590
|
+
| `knowledge` | Coach asks the user questions, evaluates understanding |
|
|
591
|
+
| `platform-check` | Coach calls MCP tools to verify platform state changed |
|
|
592
|
+
| `activity-check` | Coach calls `get_agent_activity_summary` to verify the user actually used a feature |
|
|
593
|
+
| `self-report` | User tells the coach they completed it (low-verification fallback) |
|
|
594
|
+
|
|
595
|
+
### AI Program Generation
|
|
596
|
+
|
|
597
|
+
Programs can be generated from a text description — no hand-authoring required.
|
|
598
|
+
|
|
599
|
+
The user describes what they want to learn in plain language (or voice). The gym coach runs a structured conversation to gather requirements, then generates the full program in markdown format. The markdown is parsed into Program → Module → Step objects and imported via API.
|
|
600
|
+
|
|
601
|
+
**Generation flow:**
|
|
602
|
+
1. User: "I want to learn how to use AI for research"
|
|
603
|
+
2. Coach gathers scope, skill level, and time budget via conversation
|
|
604
|
+
3. Coach generates structured markdown (H1 = Program, H2 = Module, H3 = Step)
|
|
605
|
+
4. Program is previewed, then imported via `POST /api/gym/programs/import-markdown`
|
|
606
|
+
5. Program appears in the user's plan
|
|
607
|
+
|
|
608
|
+
**Markdown format the generator outputs:**
|
|
609
|
+
|
|
610
|
+
```markdown
|
|
611
|
+
# Program Title
|
|
612
|
+
Brief description.
|
|
613
|
+
|
|
614
|
+
## Module 1: Module Title
|
|
615
|
+
Brief module description.
|
|
616
|
+
|
|
617
|
+
### Step 1: Step Title
|
|
618
|
+
Step content with detailed instructions, exercises, and verification criteria.
|
|
619
|
+
|
|
620
|
+
### Step 2: Step Title
|
|
621
|
+
...
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
This is the same pattern already implemented in aigym-platform's `AIGenerator.jsx` + `POST /api/programs/import-markdown`. The local gym implementation should follow the same contract.
|
|
625
|
+
|
|
626
|
+
### Marketplace
|
|
627
|
+
|
|
628
|
+
Programs are marketplace-eligible — alongside agents, prompts, and MCPs.
|
|
629
|
+
|
|
630
|
+
A program with `isMarketplaceListed: true` and `isPublic: true` appears in the marketplace:
|
|
631
|
+
- **Discovery:** Browse, search, filter by difficulty, dimension, topic, trainer compatibility
|
|
632
|
+
- **Install:** One-click import into the user's gym (copies the program, not a shared reference)
|
|
633
|
+
- **Author credit:** Creator's name and org shown on the program card
|
|
634
|
+
- **Tier:** `free` programs install with no gate; `pro` programs require a subscription (SaaS only for now)
|
|
635
|
+
|
|
636
|
+
This enables a creator ecosystem: a coach, educator, or power user authors a program, lists it in the marketplace, and other users install it. The program runs inside their local gym, coached by their trainer of choice.
|
|
637
|
+
|
|
638
|
+
> **Design note:** Program content is trainer-agnostic at the step level. Persona variations (`personaVariations` on steps) allow a program to ship with optional style variants per trainer — but the core content works with any trainer.
|
|
639
|
+
|
|
640
|
+
### Bundled Programs (Initial Set)
|
|
641
|
+
|
|
642
|
+
1. **Getting Started** — First agent, first conversation, basic platform orientation
|
|
643
|
+
2. **Prompt Engineering** — Writing effective prompts, system prompts, context management
|
|
644
|
+
3. **Agent Building** — Creating specialized agents, workspace setup, tool configuration
|
|
645
|
+
4. **Automations Mastery** — Goals, cron jobs, scheduled tasks, autonomous workflows
|
|
646
|
+
5. **MCP Integrations** — Connecting agents to external services, API tools
|
|
647
|
+
6. **Multi-Model Strategy** — When to use Claude vs OpenAI vs Groq vs local models
|
|
648
|
+
|
|
649
|
+
---
|
|
650
|
+
|
|
651
|
+
## 9. Continuous Coaching (Ongoing Personalized Mode)
|
|
652
|
+
|
|
653
|
+
This is the mode that keeps people coming back after they've "graduated" from programs. The coach generates contextual, timely insights based on real activity.
|
|
654
|
+
|
|
655
|
+
### How It Works
|
|
656
|
+
|
|
657
|
+
The coach doesn't wait for you to ask. It proactively generates recommendations:
|
|
658
|
+
|
|
659
|
+
**Missed capability detection:**
|
|
660
|
+
> "You're doing a lot of back-and-forth between @designer and @coder. Did you know you can set up delegation so @designer automatically hands off to @coder? Here's a 3-minute exercise."
|
|
661
|
+
|
|
662
|
+
**Depth opportunity:**
|
|
663
|
+
> "You've been using @researcher for basic Q&A for 2 weeks, but you've never used file uploads or given it MCP tools. Want to try giving it Google Drive access? That would let it pull source material directly."
|
|
664
|
+
|
|
665
|
+
**New capability alert:**
|
|
666
|
+
> "New: you can now run some agents on Groq for free. Your @qa-helper agent mostly does simple text tasks — want to try switching it to Groq and see if the quality holds?"
|
|
667
|
+
|
|
668
|
+
**Struggle detection:**
|
|
669
|
+
> "I noticed your last 3 conversations with @coder ended with you saying 'never mind, I'll do it manually.' Let's figure out what's going wrong — usually that means the agent needs better context or tools."
|
|
670
|
+
|
|
671
|
+
### Where Recommendations Surface
|
|
672
|
+
|
|
673
|
+
- **Gym cards** on the `/gym` page — 2-3 actionable recommendations, refreshed daily
|
|
674
|
+
- **Coach chat** — ask "what should I work on?" and get a personalized answer
|
|
675
|
+
- **Optional notifications** — if the user configures it, the coach can message via their preferred channel (Slack, Telegram, etc.)
|
|
676
|
+
|
|
677
|
+
### The Two Modes Side by Side
|
|
678
|
+
|
|
679
|
+
| | Structured Programs | Continuous Coaching |
|
|
680
|
+
|---|---|---|
|
|
681
|
+
| **Trigger** | User starts a program | Coach observes activity |
|
|
682
|
+
| **Content** | Pre-authored modules | Dynamically generated insights |
|
|
683
|
+
| **Pacing** | User-driven, sequential | Coach-driven, contextual |
|
|
684
|
+
| **Verification** | Explicit checks per module | Implicit via activity tracking |
|
|
685
|
+
| **When** | Onboarding, skill-building | Ongoing, indefinite |
|
|
686
|
+
| **Analogy** | Following a workout plan | Personal trainer watching your form |
|
|
687
|
+
|
|
688
|
+
---
|
|
689
|
+
|
|
690
|
+
## 10. The Feed (News + Updates)
|
|
691
|
+
|
|
692
|
+
The other half of the gym — staying current on AI.
|
|
693
|
+
|
|
694
|
+
### AI Briefing
|
|
695
|
+
|
|
696
|
+
A scheduled goal that curates AI news relevant to *you*:
|
|
697
|
+
|
|
698
|
+
- Based on your agents, your industry, your skill level
|
|
699
|
+
- Not generic "AI news" — filtered through your learner profile
|
|
700
|
+
- Example: If you work in finance and use automation heavily, you get news about AI in fintech and new automation capabilities, not generic ChatGPT headlines
|
|
701
|
+
|
|
702
|
+
### Platform Updates
|
|
703
|
+
|
|
704
|
+
Changelog entries surfaced as "new capability unlocked" cards:
|
|
705
|
+
|
|
706
|
+
- "You can now use Grok models. Want to try one?"
|
|
707
|
+
- "Session tabs are here — you can run multiple conversations per agent now."
|
|
708
|
+
- Tied to relevance: only surface updates for features the user is likely to care about
|
|
709
|
+
|
|
710
|
+
### Tips
|
|
711
|
+
|
|
712
|
+
Contextual nudges based on usage:
|
|
713
|
+
|
|
714
|
+
- "You haven't tried automations yet. Here's a 5-minute program."
|
|
715
|
+
- "Your @writer agent has been idle for 2 weeks. Want to archive it or give it a new role?"
|
|
716
|
+
- "You're in the top 10% of platform users by activity. Want to try building a multi-agent workflow?"
|
|
717
|
+
|
|
718
|
+
---
|
|
719
|
+
|
|
720
|
+
## 11. UI — The /gym Page
|
|
721
|
+
|
|
722
|
+
### Layout
|
|
723
|
+
|
|
724
|
+
```
|
|
725
|
+
┌──────────────────────────────────────────────────────┐
|
|
726
|
+
│ AI Gym [streak] │
|
|
727
|
+
├──────────────┬───────────────────────────────────────┤
|
|
728
|
+
│ │ │
|
|
729
|
+
│ Programs │ Coach Chat │
|
|
730
|
+
│ ───────── │ (main panel — chat with coach) │
|
|
731
|
+
│ ● Getting │ │
|
|
732
|
+
│ Started ✓ │ │
|
|
733
|
+
│ ● Agent │ │
|
|
734
|
+
│ Building │ │
|
|
735
|
+
│ (3/8) │ │
|
|
736
|
+
│ ○ Auto- │ │
|
|
737
|
+
│ mations │ │
|
|
738
|
+
│ ○ MCPs │ │
|
|
739
|
+
│ │ │
|
|
740
|
+
│ ───────── │ │
|
|
741
|
+
│ Gym Cards │ │
|
|
742
|
+
│ ───────── │ │
|
|
743
|
+
│ 💡 Tip: │ │
|
|
744
|
+
│ delegation │ │
|
|
745
|
+
│ 📊 Weekly │ │
|
|
746
|
+
│ progress │ │
|
|
747
|
+
│ 🆕 New: │ │
|
|
748
|
+
│ multi-model │ │
|
|
749
|
+
│ │ │
|
|
750
|
+
├──────────────┴───────────────────────────────────────┤
|
|
751
|
+
│ Feed: AI Briefing | Platform Updates | Tips │
|
|
752
|
+
└──────────────────────────────────────────────────────┘
|
|
753
|
+
```
|
|
754
|
+
|
|
755
|
+
### Panels
|
|
756
|
+
|
|
757
|
+
| Panel | Content |
|
|
758
|
+
|-------|---------|
|
|
759
|
+
| **Left sidebar** | Program list (with progress indicators), gym cards (recommendations) |
|
|
760
|
+
| **Main panel** | Tabbed: **Coach** (chat) · **Progress** (dimension tracker) |
|
|
761
|
+
| **Bottom feed** | Scrollable feed of AI news, platform updates, and contextual tips |
|
|
762
|
+
|
|
763
|
+
### Interactions
|
|
764
|
+
|
|
765
|
+
| Action | What happens |
|
|
766
|
+
|--------|-------------|
|
|
767
|
+
| Click a program | Coach loads that program's context, shows current module, guides you through it |
|
|
768
|
+
| Click a gym card | Coach opens a focused micro-lesson on that topic |
|
|
769
|
+
| Chat freely | Coach responds with full context of your learner profile and activity history |
|
|
770
|
+
| Complete a module | Coach verifies, updates progress, suggests next step |
|
|
771
|
+
| Click "Progress" tab | Opens the dimension progress view (see below) |
|
|
772
|
+
|
|
773
|
+
---
|
|
774
|
+
|
|
775
|
+
### Progress Tab — Dimension Tracker
|
|
776
|
+
|
|
777
|
+
The **Progress** tab sits alongside the coach chat in the main panel. It's the user's view of their AI skill evolution over time.
|
|
778
|
+
|
|
779
|
+
```
|
|
780
|
+
┌─────────────────────────────────────────────────────┐
|
|
781
|
+
│ My AI Strength │
|
|
782
|
+
│ │
|
|
783
|
+
│ ┌──────────────────────┐ ┌──────────────────────┐ │
|
|
784
|
+
│ │ Current Shape │ │ Over Time │ │
|
|
785
|
+
│ │ │ │ │ │
|
|
786
|
+
│ │ [Radar chart] │ │ [Line chart] │ │
|
|
787
|
+
│ │ 5 dimensions │ │ each dimension │ │
|
|
788
|
+
│ │ plotted as │ │ tracked weekly │ │
|
|
789
|
+
│ │ spider/pentagon │ │ last 90 days │ │
|
|
790
|
+
│ │ │ │ │ │
|
|
791
|
+
│ └──────────────────────┘ └──────────────────────┘ │
|
|
792
|
+
│ │
|
|
793
|
+
│ Dimension Breakdown │
|
|
794
|
+
│ ───────────────────────────────────────────────── │
|
|
795
|
+
│ Application ████████░░ 3/5 Proficient ↑ │
|
|
796
|
+
│ Communication ██████░░░░ 2/5 Developing → │
|
|
797
|
+
│ Knowledge ████████░░ 3/5 Proficient ↑ │
|
|
798
|
+
│ Orchestration ████░░░░░░ 1/5 Beginner → │
|
|
799
|
+
│ Craft ██████░░░░ 2/5 Developing ↑ │
|
|
800
|
+
│ │
|
|
801
|
+
│ Next focus: Orchestration │
|
|
802
|
+
│ [Start Automations Mastery →] │
|
|
803
|
+
│ │
|
|
804
|
+
│ Milestones │
|
|
805
|
+
│ ───────────────────────────────────────────────── │
|
|
806
|
+
│ ✓ Apr 2 First agent created (Craft ↑) │
|
|
807
|
+
│ ✓ Apr 5 10 sessions completed (Application) │
|
|
808
|
+
│ ✓ Apr 8 Getting Started program (Knowledge ↑) │
|
|
809
|
+
│ ○ Agent Building program in progress │
|
|
810
|
+
└─────────────────────────────────────────────────────┘
|
|
811
|
+
```
|
|
812
|
+
|
|
813
|
+
**Charts:**
|
|
814
|
+
- **Radar/spider chart** — current snapshot of all 5 dimensions. One glance shows the shape of the user's skill (e.g., strong on Application and Knowledge, weak on Orchestration).
|
|
815
|
+
- **Line chart** — each dimension plotted as a separate line over time (weekly data points from the activity digest). Shows velocity and trend, not just current state.
|
|
816
|
+
|
|
817
|
+
**Dimension breakdown** — progress bars with score, label, and trend arrow (↑ improving, → stable, ↓ declining).
|
|
818
|
+
|
|
819
|
+
**Next focus** — the coach surfaces the highest-ROI dimension to develop next (lowest score with the most adjacent activity). One-click jump into the relevant program.
|
|
820
|
+
|
|
821
|
+
**Milestones** — a chronological list of meaningful achievements: programs completed, dimension level-ups, streaks, first uses of key features. Gives the user a sense of their journey over time.
|
|
822
|
+
|
|
823
|
+
**Data source:** All data comes from `learner-profile.json`. Weekly snapshots are saved by the activity digest into a `dimension-history.json` file alongside the learner profile, used to power the line chart.
|
|
824
|
+
|
|
825
|
+
---
|
|
826
|
+
|
|
827
|
+
## 12. Feature Flag & Gym-Only Mode
|
|
828
|
+
|
|
829
|
+
### Feature Flag
|
|
830
|
+
|
|
831
|
+
```json
|
|
832
|
+
// config.json → service
|
|
833
|
+
{
|
|
834
|
+
"gymEnabled": false // default: off
|
|
835
|
+
}
|
|
836
|
+
```
|
|
837
|
+
|
|
838
|
+
When `gymEnabled: false`:
|
|
839
|
+
- No `/gym` nav item
|
|
840
|
+
- Gym coach agent not registered
|
|
841
|
+
- Zero impact on existing platform behavior
|
|
842
|
+
|
|
843
|
+
When `gymEnabled: true`:
|
|
844
|
+
- `/gym` appears in nav
|
|
845
|
+
- Gym coach agent is active
|
|
846
|
+
- Activity digest goal starts running
|
|
847
|
+
|
|
848
|
+
### Gym-Only Mode
|
|
849
|
+
|
|
850
|
+
For users who installed purely for training:
|
|
851
|
+
|
|
852
|
+
```json
|
|
853
|
+
// config.json → service
|
|
854
|
+
{
|
|
855
|
+
"gymEnabled": true,
|
|
856
|
+
"gymOnlyMode": true // hides non-essential nav items
|
|
857
|
+
}
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
When `gymOnlyMode: true`:
|
|
861
|
+
- Landing page is `/gym` instead of `/home`
|
|
862
|
+
- Nav shows: **Gym** | **Agents** (simplified) | **Settings**
|
|
863
|
+
- Other pages (Lab, Marketplace, Admin) hidden but still accessible via URL
|
|
864
|
+
- As the user progresses, the coach can suggest "expanding" to full mode
|
|
865
|
+
|
|
866
|
+
---
|
|
867
|
+
|
|
868
|
+
## 13. What Needs Building
|
|
869
|
+
|
|
870
|
+
### Phase 0: MCP Foundation (prerequisite for everything)
|
|
871
|
+
|
|
872
|
+
New MCP tools and API endpoints the gym depends on. Must be built before the gym agent can function.
|
|
873
|
+
|
|
874
|
+
| Item | API | MCP Tool | Effort |
|
|
875
|
+
|------|-----|----------|--------|
|
|
876
|
+
| Agent log access | `GET /api/agents/:id/logs` (paginated) | `get_agent_logs` | S |
|
|
877
|
+
| Agent activity summary | `GET /api/agents/:id/activity-summary` | `get_agent_activity_summary` | S |
|
|
878
|
+
| Cross-agent log search | `GET /api/agents/logs/search?q=` | `search_agent_logs` | M |
|
|
879
|
+
| Gym plan read/write | `GET/PUT /api/gym/plan` | `get_plan`, `update_plan` | S |
|
|
880
|
+
| Gym progress read/write | `GET/PUT /api/gym/progress` | `get_gym_progress`, `update_gym_progress` | S |
|
|
881
|
+
| Gym cards read/write | `GET/POST /api/gym/cards` | `list_gym_cards`, `create_gym_card` | S |
|
|
882
|
+
| Program import from markdown | `POST /api/gym/programs/import-markdown` | `import_program` | S |
|
|
883
|
+
| Program CRUD | `GET/POST/PATCH/DELETE /api/gym/programs` | `list_programs`, `get_program`, `create_program`, `update_program` | M |
|
|
884
|
+
| Dimension history write | `POST /api/gym/dimensions/snapshot` | `snapshot_dimensions` | S |
|
|
885
|
+
|
|
886
|
+
### Phase 1: Foundation
|
|
887
|
+
|
|
888
|
+
| Item | Description | Effort |
|
|
889
|
+
|------|-------------|--------|
|
|
890
|
+
| Gym agent | `agents/platform/gym/` — agent.json, CLAUDE.md | S |
|
|
891
|
+
| Feature flag | `service.gymEnabled` in config, gate nav + agent registration | S |
|
|
892
|
+
| `/gym` page | UI: coach chat + program sidebar + gym cards | M |
|
|
893
|
+
| Learner profile + dimensions | JSON schema, APIs, MCP tools for read/write | S |
|
|
894
|
+
|
|
895
|
+
### Phase 2: Programs
|
|
896
|
+
|
|
897
|
+
| Item | Description | Effort |
|
|
898
|
+
|------|-------------|--------|
|
|
899
|
+
| Program schema | Program → Module → Step hierarchy, aligned with aigym-platform | S |
|
|
900
|
+
| Getting Started program | 5-8 steps across 3-4 modules, hands-on, verified | M |
|
|
901
|
+
| Program progress tracking | Per-step completion, verification logic, MCP tools | S |
|
|
902
|
+
| Program browser UI | Sidebar with progress indicators | S |
|
|
903
|
+
| AI program generator | Conversation → markdown → import via API (port from aigym-platform) | M |
|
|
904
|
+
| Markdown import endpoint | `POST /api/gym/programs/import-markdown` | S |
|
|
905
|
+
|
|
906
|
+
### Phase 3: Continuous Coaching
|
|
907
|
+
|
|
908
|
+
| Item | Description | Effort |
|
|
909
|
+
|------|-------------|--------|
|
|
910
|
+
| Activity digest goal | Scheduled cross-agent activity summary via MCP | M |
|
|
911
|
+
| Gym cards | Recommendation generation + UI cards | M |
|
|
912
|
+
| Struggle detection | Pattern matching in activity summaries | M |
|
|
913
|
+
| Capability gap analysis | Compare features used vs available | S |
|
|
914
|
+
|
|
915
|
+
### Phase 4: Feed
|
|
916
|
+
|
|
917
|
+
| Item | Description | Effort |
|
|
918
|
+
|------|-------------|--------|
|
|
919
|
+
| AI Briefing | Scheduled news curation (needs web search MCP) | M |
|
|
920
|
+
| Platform updates | Changelog → personalized "new capability" cards | S |
|
|
921
|
+
| Feed UI | Bottom panel with scrollable feed | S |
|
|
922
|
+
|
|
923
|
+
### Phase 5: Marketplace
|
|
924
|
+
|
|
925
|
+
| Item | Description | Effort |
|
|
926
|
+
|------|-------------|--------|
|
|
927
|
+
| `isMarketplaceListed` flag | Add to program schema + API | S |
|
|
928
|
+
| Marketplace browse page | Discovery grid filtered by dimension, difficulty, topic | M |
|
|
929
|
+
| Program install flow | Copy program into user's gym via API | S |
|
|
930
|
+
| Author attribution | Creator name + org on program cards | S |
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## Build Phases — Concentric Circles
|
|
935
|
+
|
|
936
|
+
Each circle is a complete, working product. Later circles add depth and reach without requiring the previous circle to be rebuilt.
|
|
937
|
+
|
|
938
|
+
---
|
|
939
|
+
|
|
940
|
+
### MVP — The Core Loop
|
|
941
|
+
|
|
942
|
+
**Goal:** Prove that a coach that knows you can deliver real, personalized value.
|
|
943
|
+
|
|
944
|
+
Everything a user needs to experience the full promise of the gym: meet their trainer, get profiled, follow a program, see the coach observe their activity and adapt.
|
|
945
|
+
|
|
946
|
+
| | What's in it |
|
|
947
|
+
|---|---|
|
|
948
|
+
| **Onboarding** | All 3 steps: choose trainer, get-to-know-you, get your plan |
|
|
949
|
+
| **Gym agent** | Fully configured, feature-flagged, soul.md loading from `selectedTrainer` |
|
|
950
|
+
| **Learner profile** | Full schema + `dimensions`, seeded from onboarding, updated by digest |
|
|
951
|
+
| **/gym page** | Coach chat + program sidebar + gym cards |
|
|
952
|
+
| **Programs** | 1 bundled program: *Getting Started* (5–6 steps, self-report + platform-check verification) |
|
|
953
|
+
| **Activity digest** | Daily scheduled goal — reads agent summaries via MCP, updates profile + dimensions, generates gym cards |
|
|
954
|
+
| **Progress tab** | Current dimension scores (radar chart + progress bars + next-focus CTA). No history chart yet. |
|
|
955
|
+
| **MCP foundation** | All Phase 0 tools built: `get_agent_logs`, `get_agent_activity_summary`, `get_plan`, `update_plan`, `get_gym_progress`, `update_gym_progress`, `list_gym_cards`, `create_gym_card`, `snapshot_dimensions` |
|
|
956
|
+
| **Gym subfolder** | `src/gym/` with clean separation — no gym code in platform files |
|
|
957
|
+
|
|
958
|
+
**What it does NOT include:** multiple programs, AI generator, history charts, the Feed, notifications, gym-only mode, marketplace.
|
|
959
|
+
|
|
960
|
+
---
|
|
961
|
+
|
|
962
|
+
### P1 — Depth
|
|
963
|
+
|
|
964
|
+
**Goal:** Give users reasons to come back after they've finished Getting Started. The coach gets smarter and more proactive; the program library fills out.
|
|
965
|
+
|
|
966
|
+
| | What's in it |
|
|
967
|
+
|---|---|
|
|
968
|
+
| **Programs** | All 5 remaining bundled programs (Prompt Engineering, Agent Building, Automations Mastery, MCP Integrations, Multi-Model Strategy) |
|
|
969
|
+
| **AI program generator** | Conversation → markdown → import. Port from aigym-platform. |
|
|
970
|
+
| **All verification types** | `knowledge` + `platform-check` fully wired; `self-report` already in MVP |
|
|
971
|
+
| **Continuous coaching** | Struggle detection + capability gap analysis from activity digests |
|
|
972
|
+
| **Progress history chart** | Line chart of dimension scores over time (requires snapshots running since MVP) |
|
|
973
|
+
| **The Feed** | AI Briefing (web search MCP, off by default) + Platform Updates + Tips |
|
|
974
|
+
| **Gym-only mode** | First-run wizard + `gymOnlyMode` config flag |
|
|
975
|
+
|
|
976
|
+
---
|
|
977
|
+
|
|
978
|
+
### P2 — Reach
|
|
979
|
+
|
|
980
|
+
**Goal:** Programs leave the gym and travel. Other people can install and use programs created by power users. The gym becomes a network effect, not just a personal tool.
|
|
981
|
+
|
|
982
|
+
| | What's in it |
|
|
983
|
+
|---|---|
|
|
984
|
+
| **Marketplace** | Programs listed, browsed, installed by others |
|
|
985
|
+
| **Trainer variations in programs** | `trainerVariations` on steps — programs adapt their voice to your trainer |
|
|
986
|
+
| **Channel notifications** | Coach can message via Slack/Telegram when it has something important (opt-in) |
|
|
987
|
+
| **Gamification** | Badges for dimension milestones, streak display in the gym header |
|
|
988
|
+
| **Program export/share** | Export a program as shareable markdown or deep link |
|
|
989
|
+
|
|
990
|
+
---
|
|
991
|
+
|
|
992
|
+
## 14. Profile/Auth Decision (Resolved)
|
|
993
|
+
|
|
994
|
+
**Decision:** Lightweight profile, no auth. Full auth deferred to SaaS traction milestone.
|
|
995
|
+
|
|
996
|
+
The platform now has a simple profile system:
|
|
997
|
+
|
|
998
|
+
- **`profile.json`** on disk (in the base config directory)
|
|
999
|
+
- **API:** `GET /api/profile`, `PUT /api/profile`
|
|
1000
|
+
- **MCP tools:** `get_profile`, `update_profile`
|
|
1001
|
+
- **UI:** Profile section at the top of Admin → Settings
|
|
1002
|
+
- **Fields:** name, role, industry, aiExperience (beginner/intermediate/advanced), interests (array), avatar
|
|
1003
|
+
|
|
1004
|
+
### Design Rationale
|
|
1005
|
+
|
|
1006
|
+
- **No login, no passwords, no sessions** — the product works without a profile, but gets better with one (Microsoft Word model)
|
|
1007
|
+
- **Single user assumed** for local install — one profile per install
|
|
1008
|
+
- **The gym coach reads the profile** via `get_profile` MCP tool to personalize coaching
|
|
1009
|
+
- **Any agent can read it** — enables personalization platform-wide, not just in the gym
|
|
1010
|
+
- **Full auth is a SaaS problem** — the SaaS fork already has Prisma + JWT. When local install needs multi-user, it will adopt the same pattern.
|
|
1011
|
+
|
|
1012
|
+
### Future Considerations
|
|
1013
|
+
|
|
1014
|
+
If multi-device identification is needed later (e.g., "Ore's iPhone" vs "Ore's laptop"), the path is:
|
|
1015
|
+
1. Add a PIN gate (single shared PIN → cookie-based session)
|
|
1016
|
+
2. Add device pairing (pair a browser → device token in localStorage)
|
|
1017
|
+
3. Per-device profile names (not auth, just identification)
|
|
1018
|
+
|
|
1019
|
+
This is additive — doesn't require touching existing endpoints.
|
|
1020
|
+
|
|
1021
|
+
---
|
|
1022
|
+
|
|
1023
|
+
## 15. Open Questions
|
|
1024
|
+
|
|
1025
|
+
**All resolved:**
|
|
1026
|
+
|
|
1027
|
+
1. ~~**User/profile concept**~~ — Lightweight `profile.json`, no auth. See §15.
|
|
1028
|
+
2. ~~**Coach personality**~~ — 5 named trainers (Alex, Jordan, Morgan, Riley, Sam), each with a `souls/<name>.md` file. Swappable anytime. See §3.
|
|
1029
|
+
3. ~~**Gym agent class**~~ — Naming convention only. `class: "gym"` = non-deletable + feature-flag gated + soul.md loading. Same executor behavior as platform agents. Formalize later if needed.
|
|
1030
|
+
4. ~~**soul.md loading mechanism**~~ — Option (b): `selectedTrainer` stored in `learner-profile.json`. Executor reads it at spawn time, prepends `souls/<name>.md` before `CLAUDE.md`. No symlinks.
|
|
1031
|
+
5. ~~**Plan storage**~~ — Structured JSON (`plan.json`). Two-bucket structure is fixed and known; JSON lets the UI render buckets natively. Coach writes via `update_plan` MCP tool.
|
|
1032
|
+
6. ~~**Plan APIs/MCP**~~ — `GET/PUT /api/gym/plan` + `get_plan`, `update_plan` MCP tools. See §14 Phase 0.
|
|
1033
|
+
7. ~~**Dynamic bucket trigger**~~ — Pull (daily activity digest at 6am). Event-driven is a future optimization.
|
|
1034
|
+
8. ~~**Program authoring**~~ — Both: bundled programs (hand-authored, imported at first `gymEnabled`) + AI generator (conversation → markdown → import via API). See §9.
|
|
1035
|
+
9. ~~**Verification depth at launch**~~ — `knowledge` + `platform-check` + `self-report`. Skip `activity-check` for MVP.
|
|
1036
|
+
10. ~~**News source for AI Briefing**~~ — Web search MCP (Brave/Tavily). Toggle off by default (`aibriefingEnabled: false`). Coach runs a personalized search when enabled.
|
|
1037
|
+
11. ~~**Gym-only install path**~~ — Same install. First-run wizard asks intent; sets `gymOnlyMode: true` in config. No separate package.
|
|
1038
|
+
12. ~~**Trainer profiles at launch**~~ — 5 named trainers. Decided.
|
|
1039
|
+
13. ~~**Gym agent ID**~~ — Fixed `id: "gym"`. Ships with the platform.
|
|
1040
|
+
14. ~~**Gamification depth**~~ — Streaks only for MVP. No badges, levels, or leaderboards. Keep it clean; revisit for SaaS.
|