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.
Files changed (315) hide show
  1. package/README.md +113 -0
  2. package/agents/_template/CLAUDE.md +18 -0
  3. package/agents/_template/agent.json +7 -0
  4. package/agents/platform/agentcreator/CLAUDE.md +300 -0
  5. package/agents/platform/appcreator/CLAUDE.md +158 -0
  6. package/agents/platform/gym/CLAUDE.md +486 -0
  7. package/agents/platform/gym/agent.json +40 -0
  8. package/agents/platform/gym/programs/agent-building/program.json +160 -0
  9. package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
  10. package/agents/platform/gym/programs/getting-started/program.json +124 -0
  11. package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
  12. package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
  13. package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
  14. package/agents/platform/gym/souls/alex.md +12 -0
  15. package/agents/platform/gym/souls/jordan.md +12 -0
  16. package/agents/platform/gym/souls/morgan.md +12 -0
  17. package/agents/platform/gym/souls/riley.md +12 -0
  18. package/agents/platform/gym/souls/sam.md +12 -0
  19. package/agents/platform/hub/CLAUDE.md +372 -0
  20. package/agents/platform/promptcreator/CLAUDE.md +130 -0
  21. package/agents/platform/skillcreator/CLAUDE.md +163 -0
  22. package/bin/cli.js +566 -0
  23. package/config.example.json +310 -0
  24. package/dist/agent-registry.d.ts +32 -0
  25. package/dist/agent-registry.d.ts.map +1 -0
  26. package/dist/agent-registry.js +144 -0
  27. package/dist/agent-registry.js.map +1 -0
  28. package/dist/channels/discord.d.ts +17 -0
  29. package/dist/channels/discord.d.ts.map +1 -0
  30. package/dist/channels/discord.js +114 -0
  31. package/dist/channels/discord.js.map +1 -0
  32. package/dist/channels/imessage.d.ts +23 -0
  33. package/dist/channels/imessage.d.ts.map +1 -0
  34. package/dist/channels/imessage.js +214 -0
  35. package/dist/channels/imessage.js.map +1 -0
  36. package/dist/channels/slack.d.ts +19 -0
  37. package/dist/channels/slack.d.ts.map +1 -0
  38. package/dist/channels/slack.js +167 -0
  39. package/dist/channels/slack.js.map +1 -0
  40. package/dist/channels/telegram.d.ts +19 -0
  41. package/dist/channels/telegram.d.ts.map +1 -0
  42. package/dist/channels/telegram.js +274 -0
  43. package/dist/channels/telegram.js.map +1 -0
  44. package/dist/channels/types.d.ts +44 -0
  45. package/dist/channels/types.d.ts.map +1 -0
  46. package/dist/channels/types.js +18 -0
  47. package/dist/channels/types.js.map +1 -0
  48. package/dist/channels/whatsapp.d.ts +23 -0
  49. package/dist/channels/whatsapp.d.ts.map +1 -0
  50. package/dist/channels/whatsapp.js +189 -0
  51. package/dist/channels/whatsapp.js.map +1 -0
  52. package/dist/config.d.ts +134 -0
  53. package/dist/config.d.ts.map +1 -0
  54. package/dist/config.js +127 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/cron.d.ts +8 -0
  57. package/dist/cron.d.ts.map +1 -0
  58. package/dist/cron.js +35 -0
  59. package/dist/cron.js.map +1 -0
  60. package/dist/decrypt-keys.d.ts +7 -0
  61. package/dist/decrypt-keys.d.ts.map +1 -0
  62. package/dist/decrypt-keys.js +53 -0
  63. package/dist/decrypt-keys.js.map +1 -0
  64. package/dist/encrypt-keys.d.ts +8 -0
  65. package/dist/encrypt-keys.d.ts.map +1 -0
  66. package/dist/encrypt-keys.js +62 -0
  67. package/dist/encrypt-keys.js.map +1 -0
  68. package/dist/executor.d.ts +31 -0
  69. package/dist/executor.d.ts.map +1 -0
  70. package/dist/executor.js +2009 -0
  71. package/dist/executor.js.map +1 -0
  72. package/dist/gemini-executor.d.ts +27 -0
  73. package/dist/gemini-executor.d.ts.map +1 -0
  74. package/dist/gemini-executor.js +160 -0
  75. package/dist/gemini-executor.js.map +1 -0
  76. package/dist/goals.d.ts +24 -0
  77. package/dist/goals.d.ts.map +1 -0
  78. package/dist/goals.js +189 -0
  79. package/dist/goals.js.map +1 -0
  80. package/dist/gym/activity-digest.d.ts +30 -0
  81. package/dist/gym/activity-digest.d.ts.map +1 -0
  82. package/dist/gym/activity-digest.js +506 -0
  83. package/dist/gym/activity-digest.js.map +1 -0
  84. package/dist/gym/dimension-scorer.d.ts +76 -0
  85. package/dist/gym/dimension-scorer.d.ts.map +1 -0
  86. package/dist/gym/dimension-scorer.js +236 -0
  87. package/dist/gym/dimension-scorer.js.map +1 -0
  88. package/dist/gym/gym-router.d.ts +7 -0
  89. package/dist/gym/gym-router.d.ts.map +1 -0
  90. package/dist/gym/gym-router.js +718 -0
  91. package/dist/gym/gym-router.js.map +1 -0
  92. package/dist/gym/index.d.ts +11 -0
  93. package/dist/gym/index.d.ts.map +1 -0
  94. package/dist/gym/index.js +11 -0
  95. package/dist/gym/index.js.map +1 -0
  96. package/dist/heartbeat.d.ts +21 -0
  97. package/dist/heartbeat.d.ts.map +1 -0
  98. package/dist/heartbeat.js +163 -0
  99. package/dist/heartbeat.js.map +1 -0
  100. package/dist/index.d.ts +2 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +254 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/keystore.d.ts +22 -0
  105. package/dist/keystore.d.ts.map +1 -0
  106. package/dist/keystore.js +178 -0
  107. package/dist/keystore.js.map +1 -0
  108. package/dist/logger.d.ts +9 -0
  109. package/dist/logger.d.ts.map +1 -0
  110. package/dist/logger.js +45 -0
  111. package/dist/logger.js.map +1 -0
  112. package/dist/memory/daily.d.ts +22 -0
  113. package/dist/memory/daily.d.ts.map +1 -0
  114. package/dist/memory/daily.js +82 -0
  115. package/dist/memory/daily.js.map +1 -0
  116. package/dist/memory/embeddings.d.ts +15 -0
  117. package/dist/memory/embeddings.d.ts.map +1 -0
  118. package/dist/memory/embeddings.js +154 -0
  119. package/dist/memory/embeddings.js.map +1 -0
  120. package/dist/memory/index.d.ts +32 -0
  121. package/dist/memory/index.d.ts.map +1 -0
  122. package/dist/memory/index.js +159 -0
  123. package/dist/memory/index.js.map +1 -0
  124. package/dist/memory/search.d.ts +21 -0
  125. package/dist/memory/search.d.ts.map +1 -0
  126. package/dist/memory/search.js +77 -0
  127. package/dist/memory/search.js.map +1 -0
  128. package/dist/memory/store.d.ts +23 -0
  129. package/dist/memory/store.d.ts.map +1 -0
  130. package/dist/memory/store.js +144 -0
  131. package/dist/memory/store.js.map +1 -0
  132. package/dist/ollama-executor.d.ts +17 -0
  133. package/dist/ollama-executor.d.ts.map +1 -0
  134. package/dist/ollama-executor.js +112 -0
  135. package/dist/ollama-executor.js.map +1 -0
  136. package/dist/openai-executor.d.ts +38 -0
  137. package/dist/openai-executor.d.ts.map +1 -0
  138. package/dist/openai-executor.js +197 -0
  139. package/dist/openai-executor.js.map +1 -0
  140. package/dist/router.d.ts +11 -0
  141. package/dist/router.d.ts.map +1 -0
  142. package/dist/router.js +185 -0
  143. package/dist/router.js.map +1 -0
  144. package/dist/test-message.d.ts +2 -0
  145. package/dist/test-message.d.ts.map +1 -0
  146. package/dist/test-message.js +60 -0
  147. package/dist/test-message.js.map +1 -0
  148. package/dist/utils/imsg-db-reader.d.ts +24 -0
  149. package/dist/utils/imsg-db-reader.d.ts.map +1 -0
  150. package/dist/utils/imsg-db-reader.js +92 -0
  151. package/dist/utils/imsg-db-reader.js.map +1 -0
  152. package/dist/utils/imsg-rpc.d.ts +25 -0
  153. package/dist/utils/imsg-rpc.d.ts.map +1 -0
  154. package/dist/utils/imsg-rpc.js +149 -0
  155. package/dist/utils/imsg-rpc.js.map +1 -0
  156. package/dist/utils/message-formatter.d.ts +3 -0
  157. package/dist/utils/message-formatter.d.ts.map +1 -0
  158. package/dist/utils/message-formatter.js +69 -0
  159. package/dist/utils/message-formatter.js.map +1 -0
  160. package/dist/web-ui.d.ts +12 -0
  161. package/dist/web-ui.d.ts.map +1 -0
  162. package/dist/web-ui.js +5784 -0
  163. package/dist/web-ui.js.map +1 -0
  164. package/dist/whatsapp-chats.d.ts +2 -0
  165. package/dist/whatsapp-chats.d.ts.map +1 -0
  166. package/dist/whatsapp-chats.js +76 -0
  167. package/dist/whatsapp-chats.js.map +1 -0
  168. package/dist/whatsapp-login.d.ts +2 -0
  169. package/dist/whatsapp-login.d.ts.map +1 -0
  170. package/dist/whatsapp-login.js +90 -0
  171. package/dist/whatsapp-login.js.map +1 -0
  172. package/dist/wiki-sync.d.ts +21 -0
  173. package/dist/wiki-sync.d.ts.map +1 -0
  174. package/dist/wiki-sync.js +147 -0
  175. package/dist/wiki-sync.js.map +1 -0
  176. package/docs/AddNewAgentGuide.md +100 -0
  177. package/docs/AddNewMcpGuide.md +72 -0
  178. package/docs/Architecture.md +795 -0
  179. package/docs/CLAUDE-AI-SETUP.md +166 -0
  180. package/docs/Setup.md +297 -0
  181. package/docs/ai-gym-architecture.md +1040 -0
  182. package/docs/ai-gym-build-plan.md +343 -0
  183. package/docs/ai-gym-onboarding.md +122 -0
  184. package/docs/appcreator_plan.md +348 -0
  185. package/docs/platform-mcp-audit.md +320 -0
  186. package/docs/server-deployment-plan.md +503 -0
  187. package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
  188. package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
  189. package/docs/user-guide.md +2016 -0
  190. package/mcp-catalog.json +628 -0
  191. package/package.json +63 -0
  192. package/public/MyAIforOne-logomark-512.svg +16 -0
  193. package/public/MyAIforOne-logomark-transparent.svg +15 -0
  194. package/public/activity.html +314 -0
  195. package/public/admin.html +1674 -0
  196. package/public/agent-dashboard.html +670 -0
  197. package/public/api-docs.html +1106 -0
  198. package/public/automations.html +722 -0
  199. package/public/canvas.css +223 -0
  200. package/public/canvas.js +588 -0
  201. package/public/changelog.html +231 -0
  202. package/public/gym.html +2766 -0
  203. package/public/home.html +1930 -0
  204. package/public/index.html +2809 -0
  205. package/public/lab.html +1643 -0
  206. package/public/library.html +1442 -0
  207. package/public/marketplace.html +1101 -0
  208. package/public/mcp-docs.html +441 -0
  209. package/public/mini.html +390 -0
  210. package/public/monitor.html +584 -0
  211. package/public/org.html +4304 -0
  212. package/public/projects.html +734 -0
  213. package/public/settings.html +645 -0
  214. package/public/tasks.html +932 -0
  215. package/public/trainers/alex.svg +12 -0
  216. package/public/trainers/jordan.svg +12 -0
  217. package/public/trainers/morgan.svg +12 -0
  218. package/public/trainers/riley.svg +12 -0
  219. package/public/trainers/sam.svg +12 -0
  220. package/public/user-guide.html +218 -0
  221. package/registry/agents.json +3 -0
  222. package/registry/apps.json +20 -0
  223. package/registry/installed-drafts.json +3 -0
  224. package/registry/mcps.json +1084 -0
  225. package/registry/prompts/personal/mcp-test-prompt.md +6 -0
  226. package/registry/prompts/personal/memory-recall.md +6 -0
  227. package/registry/prompts/platform/brainstorm.md +15 -0
  228. package/registry/prompts/platform/code-review.md +16 -0
  229. package/registry/prompts/platform/explain.md +16 -0
  230. package/registry/prompts.json +58 -0
  231. package/registry/skills/external/brainstorming.md +5 -0
  232. package/registry/skills/external/code-review.md +40 -0
  233. package/registry/skills/external/frontend-patterns.md +642 -0
  234. package/registry/skills/external/frontend-slides.md +184 -0
  235. package/registry/skills/external/systematic-debugging.md +5 -0
  236. package/registry/skills/external/tdd.md +328 -0
  237. package/registry/skills/external/verification-before-completion.md +5 -0
  238. package/registry/skills/external/writing-plans.md +5 -0
  239. package/registry/skills/platform/ai41_app_build.md +930 -0
  240. package/registry/skills/platform/ai41_app_deploy.md +168 -0
  241. package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
  242. package/registry/skills/platform/ai41_app_patterns.md +359 -0
  243. package/registry/skills/platform/ai41_app_register.md +85 -0
  244. package/registry/skills/platform/ai41_app_scaffold.md +421 -0
  245. package/registry/skills/platform/ai41_app_verify.md +107 -0
  246. package/registry/skills/platform/opProjectCreate.md +239 -0
  247. package/registry/skills/platform/op_devbrowser.md +136 -0
  248. package/registry/skills/platform/sop_brandguidelines.md +103 -0
  249. package/registry/skills/platform/sop_docx.md +117 -0
  250. package/registry/skills/platform/sop_frontenddesign.md +44 -0
  251. package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
  252. package/registry/skills/platform/sop_mcpbuilder.md +133 -0
  253. package/registry/skills/platform/sop_pdf.md +172 -0
  254. package/registry/skills/platform/sop_pptx.md +133 -0
  255. package/registry/skills/platform/sop_skillcreator.md +104 -0
  256. package/registry/skills/platform/sop_themefactory.md +128 -0
  257. package/registry/skills/platform/sop_webapptesting.md +75 -0
  258. package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
  259. package/registry/skills/platform/sop_xlsx.md +134 -0
  260. package/registry/skills.json +1055 -0
  261. package/scripts/discover-chats.sh +11 -0
  262. package/scripts/install-service-windows.ps1 +87 -0
  263. package/scripts/install-service.sh +52 -0
  264. package/scripts/seed-registry.ts +195 -0
  265. package/scripts/test-send.sh +5 -0
  266. package/scripts/tray-indicator.ps1 +35 -0
  267. package/scripts/uninstall-service-windows.ps1 +23 -0
  268. package/scripts/uninstall-service.sh +15 -0
  269. package/scripts/xbar-myagent.5s.sh +32 -0
  270. package/server/mcp-server/dist/index.d.ts +11 -0
  271. package/server/mcp-server/dist/index.js +1332 -0
  272. package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
  273. package/server/mcp-server/dist/lib/api-client.js +241 -0
  274. package/server/mcp-server/index.ts +1545 -0
  275. package/server/mcp-server/lib/api-client.ts +366 -0
  276. package/server/mcp-server/tsconfig.json +14 -0
  277. package/src/agent-registry.ts +180 -0
  278. package/src/channels/discord.ts +129 -0
  279. package/src/channels/imessage.ts +261 -0
  280. package/src/channels/slack.ts +208 -0
  281. package/src/channels/telegram.ts +307 -0
  282. package/src/channels/types.ts +62 -0
  283. package/src/channels/whatsapp.ts +227 -0
  284. package/src/config.ts +281 -0
  285. package/src/cron.ts +43 -0
  286. package/src/decrypt-keys.ts +60 -0
  287. package/src/encrypt-keys.ts +70 -0
  288. package/src/executor.ts +2190 -0
  289. package/src/gemini-executor.ts +212 -0
  290. package/src/goals.ts +240 -0
  291. package/src/gym/activity-digest.ts +546 -0
  292. package/src/gym/dimension-scorer.ts +297 -0
  293. package/src/gym/gym-router.ts +801 -0
  294. package/src/gym/index.ts +19 -0
  295. package/src/heartbeat.ts +220 -0
  296. package/src/index.ts +275 -0
  297. package/src/keystore.ts +190 -0
  298. package/src/logger.ts +51 -0
  299. package/src/memory/daily.ts +101 -0
  300. package/src/memory/embeddings.ts +185 -0
  301. package/src/memory/index.ts +218 -0
  302. package/src/memory/search.ts +124 -0
  303. package/src/memory/store.ts +189 -0
  304. package/src/ollama-executor.ts +126 -0
  305. package/src/openai-executor.ts +259 -0
  306. package/src/router.ts +230 -0
  307. package/src/test-message.ts +72 -0
  308. package/src/utils/imsg-db-reader.ts +109 -0
  309. package/src/utils/imsg-rpc.ts +178 -0
  310. package/src/utils/message-formatter.ts +90 -0
  311. package/src/web-ui.ts +5778 -0
  312. package/src/whatsapp-chats.ts +91 -0
  313. package/src/whatsapp-login.ts +110 -0
  314. package/src/wiki-sync.ts +199 -0
  315. 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.