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,343 @@
|
|
|
1
|
+
# AI Gym — Build Plan
|
|
2
|
+
|
|
3
|
+
> Explicit task checklist from MVP through P2. Each item is a discrete, completable unit of work.
|
|
4
|
+
> Phases are concentric circles — each is a shippable product. Never start a phase until the previous is working end-to-end.
|
|
5
|
+
|
|
6
|
+
**Status key:** `[ ]` not started · `[~]` in progress · `[x]` done
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Phase 0 — MCP Foundation
|
|
11
|
+
> Prerequisite for everything. The gym agent is MCP-first — these tools must exist before the agent can do anything useful.
|
|
12
|
+
|
|
13
|
+
### New API Endpoints (`src/web-ui.ts` or new `src/gym/gym-router.ts`)
|
|
14
|
+
|
|
15
|
+
- [x] `GET /api/agents/:id/logs` — paginated conversation log for one agent (newest first, limit/offset params)
|
|
16
|
+
- [x] `GET /api/agents/:id/activity-summary` — aggregated summary: message count, active days, topics (array), tool use counts, last active timestamp
|
|
17
|
+
- [x] `GET /api/agents/logs/search?q=&agentIds=` — full-text search across agent logs
|
|
18
|
+
- [x] `GET /api/gym/plan` — return `agents/platform/gym/memory/plan.json`
|
|
19
|
+
- [x] `PUT /api/gym/plan` — write `agents/platform/gym/memory/plan.json`
|
|
20
|
+
- [x] `GET /api/gym/progress` — return `agents/platform/gym/memory/program-progress.json`
|
|
21
|
+
- [x] `PUT /api/gym/progress` — write `agents/platform/gym/memory/program-progress.json`
|
|
22
|
+
- [x] `GET /api/gym/cards` — return current gym cards array
|
|
23
|
+
- [x] `POST /api/gym/cards` — append a new gym card
|
|
24
|
+
- [x] `DELETE /api/gym/cards/:id` — dismiss a card
|
|
25
|
+
- [x] `POST /api/gym/dimensions/snapshot` — append weekly dimension scores to `dimension-history.json`
|
|
26
|
+
- [x] `GET /api/gym/programs` — list all programs (bundled + user-created)
|
|
27
|
+
- [x] `GET /api/gym/programs/:slug` — get full program with modules + steps
|
|
28
|
+
- [x] `POST /api/gym/programs` — create a new program
|
|
29
|
+
- [x] `PATCH /api/gym/programs/:id` — update program metadata
|
|
30
|
+
- [x] `DELETE /api/gym/programs/:id` — delete a program
|
|
31
|
+
- [x] `POST /api/gym/programs/import-markdown` — parse markdown into Program→Module→Step and save
|
|
32
|
+
|
|
33
|
+
### New MCP Tools (`server/mcp-server/index.ts`)
|
|
34
|
+
|
|
35
|
+
- [x] `get_agent_logs` — wraps `GET /api/agents/:id/logs`
|
|
36
|
+
- [x] `get_agent_activity_summary` — wraps `GET /api/agents/:id/activity-summary`
|
|
37
|
+
- [x] `search_agent_logs` — wraps `GET /api/agents/logs/search`
|
|
38
|
+
- [x] `get_plan` — wraps `GET /api/gym/plan`
|
|
39
|
+
- [x] `update_plan` — wraps `PUT /api/gym/plan`
|
|
40
|
+
- [x] `get_gym_progress` — wraps `GET /api/gym/progress`
|
|
41
|
+
- [x] `update_gym_progress` — wraps `PUT /api/gym/progress`
|
|
42
|
+
- [x] `list_gym_cards` — wraps `GET /api/gym/cards`
|
|
43
|
+
- [x] `create_gym_card` — wraps `POST /api/gym/cards`
|
|
44
|
+
- [x] `dismiss_gym_card` — wraps `DELETE /api/gym/cards/:id`
|
|
45
|
+
- [x] `snapshot_dimensions` — wraps `POST /api/gym/dimensions/snapshot`
|
|
46
|
+
- [x] `list_gym_programs` — wraps `GET /api/gym/programs`
|
|
47
|
+
- [x] `get_gym_program` — wraps `GET /api/gym/programs/:slug`
|
|
48
|
+
- [x] `import_program` — wraps `POST /api/gym/programs/import-markdown`
|
|
49
|
+
|
|
50
|
+
### Data Files (created on first `gymEnabled: true`)
|
|
51
|
+
|
|
52
|
+
- [x] `agents/platform/gym/memory/learner-profile.json` — initialized with empty schema on onboarding complete
|
|
53
|
+
- [x] `agents/platform/gym/memory/plan.json` — initialized after onboarding Step 3
|
|
54
|
+
- [x] `agents/platform/gym/memory/program-progress.json` — empty object `{}`
|
|
55
|
+
- [x] `agents/platform/gym/memory/gym-cards.json` — empty array `[]`
|
|
56
|
+
- [x] `agents/platform/gym/memory/dimension-history.json` — empty array `[]`
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## MVP — The Core Loop
|
|
61
|
+
> Shippable product. Delivers: meet your trainer → get profiled → follow a program → coach watches and adapts.
|
|
62
|
+
|
|
63
|
+
### 1. Gym Subfolder Setup
|
|
64
|
+
|
|
65
|
+
- [x] Create `src/gym/` directory
|
|
66
|
+
- [x] Create `src/gym/index.ts` — exports all gym registrations (agent, routes, MCP tools, cron)
|
|
67
|
+
- [x] Soul.md loading implemented in `src/executor.ts` (both regular and streaming paths) — reads `selectedTrainer` from learner-profile.json, prepends `souls/<name>.md`
|
|
68
|
+
- [x] Create `src/gym/gym-router.ts` — all `/api/gym/*` route handlers (imports Phase 0 endpoint logic)
|
|
69
|
+
- [x] MCP tool definitions live in `server/mcp-server/index.ts` (co-located with other platform MCP tools)
|
|
70
|
+
- [x] Create `src/gym/activity-digest.ts` — scheduled digest goal runner
|
|
71
|
+
- [x] Create `src/gym/dimension-scorer.ts` — dimension scoring logic
|
|
72
|
+
- [x] Markdown parser + import logic implemented inline in `gym-router.ts` (POST /api/gym/programs/import-markdown)
|
|
73
|
+
- [x] Onboarding state machine implemented in `public/gym.html` JavaScript (3-step flow with API calls)
|
|
74
|
+
- [x] Update `src/web-ui.ts` — import and mount `src/gym/index.ts` when `gymEnabled: true`; no inline gym logic
|
|
75
|
+
- [x] Update `server/mcp-server/index.ts` — all gym MCP tools registered
|
|
76
|
+
|
|
77
|
+
### 2. Feature Flag
|
|
78
|
+
|
|
79
|
+
- [x] Add `gymEnabled: false` to `config.json` and `config.example.json`
|
|
80
|
+
- [x] Add `aibriefingEnabled: false` to `config.json` and `config.example.json` (Feed: AI Briefing off by default)
|
|
81
|
+
- [x] Gate gym agent registration behind `gymEnabled`
|
|
82
|
+
- [x] Gate `/gym` nav item behind `gymEnabled`
|
|
83
|
+
- [x] Gate activity digest cron job behind `gymEnabled`
|
|
84
|
+
- [x] Gate all `/api/gym/*` routes behind `gymEnabled`
|
|
85
|
+
|
|
86
|
+
### 3. Gym Agent
|
|
87
|
+
|
|
88
|
+
- [x] Create `agents/platform/gym/agent.json` with all fields (`id: "gym"`, `class: "gym"`, `advancedMemory: true`, `wiki: true`, `persistentSession: true`, full `allowedTools`, `mcps: ["myaiforone"]`, `featureFlag: "gymEnabled"`)
|
|
89
|
+
- [x] Create `agents/platform/gym/CLAUDE.md` — core coaching logic:
|
|
90
|
+
- [x] Assessment methodology section (how to score dimensions from activity patterns)
|
|
91
|
+
- [x] Recommendation engine section (capability gap → program mapping)
|
|
92
|
+
- [x] Verification approach section (how to use MCP tools to check step completion)
|
|
93
|
+
- [x] Proactive insight patterns section
|
|
94
|
+
- [x] Plan management section (how to read/write plan.json via `get_plan` / `update_plan`)
|
|
95
|
+
- [x] MCP-first instruction: always reach for MCP tools before file tools
|
|
96
|
+
- [x] Create `agents/platform/gym/souls/alex.md` — Alex personality layer
|
|
97
|
+
- [x] Create `agents/platform/gym/souls/jordan.md` — Jordan personality layer
|
|
98
|
+
- [x] Create `agents/platform/gym/souls/morgan.md` — Morgan personality layer
|
|
99
|
+
- [x] Create `agents/platform/gym/souls/riley.md` — Riley personality layer
|
|
100
|
+
- [x] Create `agents/platform/gym/souls/sam.md` — Sam personality layer
|
|
101
|
+
- [x] Implement soul.md loading in `src/executor.ts`: read `selectedTrainer` from `learner-profile.json`, prepend `souls/<name>.md` before `CLAUDE.md` at spawn time
|
|
102
|
+
|
|
103
|
+
### 4. Onboarding Flow
|
|
104
|
+
|
|
105
|
+
- [x] Design onboarding state: `{ step: 0|1|2|3, complete: boolean }` stored in `learner-profile.json`
|
|
106
|
+
- [x] **Step 1 — Choose Trainer**: UI card picker (5 trainer cards with avatar + name + intro quote)
|
|
107
|
+
- [x] Trainer card component (avatar, name, intro text)
|
|
108
|
+
- [x] Selection writes `selectedTrainer` to `learner-profile.json` via `PUT /api/gym/learner-profile`
|
|
109
|
+
- [x] Avatar placeholder SVGs at `public/trainers/alex.svg` (etc.)
|
|
110
|
+
- [x] **Step 2 — Get to Know You**: coach sends the one-question prompt once trainer is selected
|
|
111
|
+
- [x] Onboarding shows trainer's fullQuote message in step 2
|
|
112
|
+
- [x] User response sent to gym agent via `POST /api/chat/gym/stream`
|
|
113
|
+
- [x] Coach processes response and populates `identity` fields in learner profile
|
|
114
|
+
- [x] **Step 3 — Get Your Plan**: coach generates plan via SSE stream, writes via `update_plan`
|
|
115
|
+
- [x] Plan displayed with two-bucket structure (on-the-job + platform-driven)
|
|
116
|
+
- [x] Onboarding marked complete; gym main view unlocked
|
|
117
|
+
- [x] Gate gym main view behind `onboardingComplete: true` — incomplete users always land in onboarding
|
|
118
|
+
|
|
119
|
+
### 5. Learner Profile
|
|
120
|
+
|
|
121
|
+
- [x] Add `GET /api/gym/learner-profile` endpoint
|
|
122
|
+
- [x] Add `PUT /api/gym/learner-profile` endpoint
|
|
123
|
+
- [x] Add `get_learner_profile` MCP tool
|
|
124
|
+
- [x] Add `update_learner_profile` MCP tool
|
|
125
|
+
- [x] Initialize `learner-profile.json` with full schema (identity, activity, features, patterns, programs, streak, dimensions, selectedTrainer) on first gym activation
|
|
126
|
+
|
|
127
|
+
### 6. Getting Started Program
|
|
128
|
+
|
|
129
|
+
- [x] Create `agents/platform/gym/programs/getting-started/program.json` with metadata (title, slug, difficulty: beginner, tier: free, isPublic: true)
|
|
130
|
+
- [x] Module 1: Meet Your AI
|
|
131
|
+
- [x] Step 1: What is an agent? (knowledge verification — coach asks 2 comprehension questions)
|
|
132
|
+
- [x] Step 2: Your first conversation (platform-check — verify ≥5 messages sent to any agent)
|
|
133
|
+
- [x] Module 2: Give It Context
|
|
134
|
+
- [x] Step 1: What makes a good prompt? (knowledge verification)
|
|
135
|
+
- [x] Step 2: Try a detailed prompt (self-report — user marks done after attempting)
|
|
136
|
+
- [x] Step 3: Upload a file to your agent (platform-check — verify file upload used)
|
|
137
|
+
- [x] Module 3: Make It Yours
|
|
138
|
+
- [x] Step 1: Create a specialized agent (platform-check — verify new agent exists in `list_agents`)
|
|
139
|
+
- [x] Step 2: Write a system prompt for it (platform-check — coach reads the agent's CLAUDE.md via `get_agent` and evaluates length/quality)
|
|
140
|
+
- [x] Program pre-seeded in `agents/platform/gym/programs/getting-started/`
|
|
141
|
+
|
|
142
|
+
### 7. Activity Digest
|
|
143
|
+
|
|
144
|
+
- [x] Implement `src/gym/activity-digest.ts`:
|
|
145
|
+
- [x] Scheduled cron: `0 6 * * *` (daily 6am), only runs if `gymEnabled: true`
|
|
146
|
+
- [x] Step 1: Scan agent directories — get full agent roster
|
|
147
|
+
- [x] Step 2: For each agent, call `GET /api/agents/:id/activity-summary` — get aggregated stats
|
|
148
|
+
- [x] Step 3: Read agent.json configs for craft/orchestration scoring
|
|
149
|
+
- [x] Step 4: Score dimensions based on observed patterns (use `dimension-scorer.ts`)
|
|
150
|
+
- [x] Step 5: Call `POST /api/gym/dimensions/snapshot` if ≥7 days since last snapshot
|
|
151
|
+
- [x] Step 6: Write digest to `agents/platform/gym/memory/daily/<date>.md`
|
|
152
|
+
- [x] Step 7: Call `PUT /api/gym/learner-profile` with updated `activity`, `features`, `patterns`, `dimensions`, `streak`
|
|
153
|
+
- [x] Step 8: Generate 2–3 gym cards; call `POST /api/gym/cards` for each
|
|
154
|
+
- [x] Implement `src/gym/dimension-scorer.ts`:
|
|
155
|
+
- [x] `scoreApplication(activitySummaries)` — frequency, breadth, session depth
|
|
156
|
+
- [x] `scoreCommunication(logSamples)` — tool diversity, topic breadth, depth signals
|
|
157
|
+
- [x] `scoreKnowledge(profile, programProgress)` — program completions, engagement breadth
|
|
158
|
+
- [x] `scoreOrchestration(agentList)` — goals, cron, MCPs, multi-agent patterns
|
|
159
|
+
- [x] `scoreCraft(agentList)` — agents created, system prompt quality, MCP configs, tool configs
|
|
160
|
+
|
|
161
|
+
### 8. /gym Page — UI
|
|
162
|
+
|
|
163
|
+
- [x] Add `/gym` route to frontend, gated by `gymEnabled`
|
|
164
|
+
- [x] Add **Gym** item to main nav (gated)
|
|
165
|
+
- [x] **Onboarding view** — full-screen 3-step flow (shown when `onboardingComplete: false`)
|
|
166
|
+
- [x] **Main gym layout** — left sidebar + main panel + bottom feed strip
|
|
167
|
+
- [x] **Left sidebar**:
|
|
168
|
+
- [x] Program list with progress indicators (✓ complete, N/M in progress, ○ not started)
|
|
169
|
+
- [x] Gym cards section (2–3 cards, each with title + short description + CTA button)
|
|
170
|
+
- [x] "New card" badge when digest has generated something new
|
|
171
|
+
- [x] **Main panel — Coach tab**:
|
|
172
|
+
- [x] Chat interface with the gym agent (SSE streaming via `POST /api/chat/gym/stream`)
|
|
173
|
+
- [x] Trainer name + avatar shown in chat header
|
|
174
|
+
- [x] **Main panel — Progress tab**:
|
|
175
|
+
- [x] Radar/spider chart — 5 dimensions, current scores (SVG-based)
|
|
176
|
+
- [x] Dimension breakdown list — progress bar + score + label + trend arrow per dimension
|
|
177
|
+
- [x] "Next focus" callout — lowest-score dimension with guidance text
|
|
178
|
+
- [x] Milestones list — chronological achievements
|
|
179
|
+
- [x] *(History line chart deferred to P1 — needs snapshot history to be meaningful)*
|
|
180
|
+
- [x] **Bottom feed strip** — placeholder bar for P1 (shows "Feed coming in P1")
|
|
181
|
+
- [x] **Streak counter** — shown in gym header (days active streak from learner profile)
|
|
182
|
+
|
|
183
|
+
### 9. Trainer Avatars
|
|
184
|
+
|
|
185
|
+
- [x] Create 5 placeholder avatar SVGs at `public/trainers/alex.svg`, `jordan.svg`, `morgan.svg`, `riley.svg`, `sam.svg`
|
|
186
|
+
- [x] Consistent visual style — gradient circles with initials
|
|
187
|
+
- [x] Color-coded per trainer (cyan, orange, purple, red, green)
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## P1 — Depth
|
|
192
|
+
> Everything a user needs to keep growing after Getting Started. Coach gets smarter. Program library fills out. Feed activates.
|
|
193
|
+
|
|
194
|
+
### 1. Remaining Bundled Programs
|
|
195
|
+
|
|
196
|
+
- [x] **Prompt Engineering** (intermediate)
|
|
197
|
+
- [x] Module 1: Context and specificity
|
|
198
|
+
- [x] Module 2: System prompts
|
|
199
|
+
- [x] Module 3: Iterating and debugging prompts
|
|
200
|
+
- [x] All steps with platform-check or knowledge verification
|
|
201
|
+
- [x] **Agent Building** (intermediate)
|
|
202
|
+
- [x] Module 1: Anatomy of an agent
|
|
203
|
+
- [x] Module 2: Create your first specialized agent
|
|
204
|
+
- [x] Module 3: Writing an effective system prompt
|
|
205
|
+
- [x] Module 4: Tools and workspace setup
|
|
206
|
+
- [x] **Automations Mastery** (intermediate)
|
|
207
|
+
- [x] Module 1: Goals and scheduled tasks (cron)
|
|
208
|
+
- [x] Module 2: Agent-to-agent delegation
|
|
209
|
+
- [x] Module 3: Building a workflow that runs while you sleep
|
|
210
|
+
- [x] **MCP Integrations** (advanced)
|
|
211
|
+
- [x] Module 1: What MCPs enable
|
|
212
|
+
- [x] Module 2: Connecting your first MCP
|
|
213
|
+
- [x] Module 3: Building an agent workflow with external APIs
|
|
214
|
+
- [x] **Multi-Model Strategy** (advanced)
|
|
215
|
+
- [x] Module 1: Model landscape (Claude, GPT, Gemini, Groq, local)
|
|
216
|
+
- [x] Module 2: When to use which model
|
|
217
|
+
- [x] Module 3: Switching and comparing models on the platform
|
|
218
|
+
|
|
219
|
+
### 2. AI Program Generator
|
|
220
|
+
|
|
221
|
+
- [x] Port `AIGenerator.jsx` conversation flow to local gym (or build equivalent in gym chat)
|
|
222
|
+
- [x] Coach enters "program generation mode" when user says "create a program" or similar
|
|
223
|
+
- [x] Structured conversation: scope → skill level → time budget → generate
|
|
224
|
+
- [x] Coach outputs markdown in H1/H2/H3 format: `# Program`, `## Module N: Title`, `### Step N: Title`
|
|
225
|
+
- [x] Preview step: coach shows parsed structure (program title, module list, step count)
|
|
226
|
+
- [x] User confirms → coach calls `import_program` MCP tool → program added to gym
|
|
227
|
+
- [x] Program appears in sidebar program list immediately
|
|
228
|
+
|
|
229
|
+
### 3. All Verification Types Wired
|
|
230
|
+
|
|
231
|
+
- [x] `knowledge` verification: coach asks 2–3 targeted comprehension questions after step content, evaluates answers, decides pass/fail, marks step complete via `update_gym_progress`
|
|
232
|
+
- [x] `platform-check` verification: coach calls appropriate MCP tool per step's `check` field, evaluates result, marks step complete
|
|
233
|
+
- [x] `new-agent-exists`: `list_agents` before/after
|
|
234
|
+
- [x] `agent-has-custom-prompt`: `get_agent` → read CLAUDE.md path → evaluate length + content
|
|
235
|
+
- [x] `automation-exists`: `list_agents` → check goals/cron arrays
|
|
236
|
+
- [x] `mcp-configured`: `list_agents` → check mcps array
|
|
237
|
+
- [x] `feature-used`: `get_agent_activity_summary` → check features.used array
|
|
238
|
+
|
|
239
|
+
### 4. Continuous Coaching
|
|
240
|
+
|
|
241
|
+
- [x] **Struggle detection** in `activity-digest.ts`:
|
|
242
|
+
- [x] Detect sessions ending with "never mind", "I'll do it manually", "forget it" patterns
|
|
243
|
+
- [x] Detect high correction rate (>4 back-and-forth before resolution)
|
|
244
|
+
- [x] Write detected struggles to `patterns.struggles` in learner profile
|
|
245
|
+
- [x] Generate gym card with specific suggestion when struggle detected
|
|
246
|
+
- [x] **Capability gap analysis** in `activity-digest.ts`:
|
|
247
|
+
- [x] Compare `features.used` vs full platform feature list
|
|
248
|
+
- [x] Identify highest-value unused capability based on current usage patterns
|
|
249
|
+
- [x] Generate gym card for top gap (max 1 per digest to avoid noise)
|
|
250
|
+
|
|
251
|
+
### 5. Progress History Chart
|
|
252
|
+
|
|
253
|
+
- [x] Confirm `dimension-history.json` accumulates weekly snapshots
|
|
254
|
+
- [x] Add line chart component to Progress tab (renders dimension scores over time, one line per dimension, color-coded)
|
|
255
|
+
- [x] Show empty state: "Your progress chart will fill in as weeks go by"
|
|
256
|
+
|
|
257
|
+
### 6. The Feed
|
|
258
|
+
|
|
259
|
+
- [x] **Platform Updates**: read changelog / version notes → surface "new capability" cards to users likely to care (filter by relevant `features.neverUsed`)
|
|
260
|
+
- [x] `GET /api/changelog` endpoint that returns recent platform updates
|
|
261
|
+
- [x] Match updates to learner profile: only show if the capability is in `features.neverUsed`
|
|
262
|
+
- [x] **Tips**: contextual nudges generated by activity digest — idle agents, usage plateaus, etc.
|
|
263
|
+
- [x] Tips generated in `activity-digest.ts` alongside gym cards but tagged `type: "tip"` for Feed
|
|
264
|
+
- [x] Rendered in the bottom Feed strip
|
|
265
|
+
- [x] **AI Briefing** (requires `aibriefingEnabled: true` in config + web search MCP configured):
|
|
266
|
+
- [x] Briefing data read from `agents/platform/gym/memory/briefing.json`
|
|
267
|
+
- [x] Rendered in Feed strip under "AI Briefing" tab
|
|
268
|
+
- [x] Clear "off by default" messaging in UI
|
|
269
|
+
- [x] Feed UI strip — bottom panel with 3 tabs: **Tips** · **Platform Updates** · **Briefing**
|
|
270
|
+
- [x] `GET /api/gym/feed` aggregator endpoint
|
|
271
|
+
|
|
272
|
+
### 7. Gym-Only Mode
|
|
273
|
+
|
|
274
|
+
- [x] Add `gymOnlyMode` to ServiceConfig interface in `config.ts`
|
|
275
|
+
- [x] When `gymOnlyMode: true`: set landing page to `/gym` instead of `/home`
|
|
276
|
+
- [x] When `gymOnlyMode: true`: nav shows only **Gym** · **Agents** · **Settings**
|
|
277
|
+
- [x] Other pages remain accessible via direct URL
|
|
278
|
+
- [x] `GET /api/gym/config` returns gymOnlyMode flag for frontend
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## P2 — Reach
|
|
283
|
+
> Programs leave the gym and travel. Other people can install programs. Gym becomes a network effect.
|
|
284
|
+
|
|
285
|
+
### 1. Marketplace — Programs
|
|
286
|
+
|
|
287
|
+
- [ ] Add `isMarketplaceListed: boolean` and `isPublic: boolean` to program schema
|
|
288
|
+
- [ ] `GET /api/marketplace/programs` — list all public marketplace programs (across all users, SaaS; from a directory on local)
|
|
289
|
+
- [ ] Marketplace browse page (`/marketplace/programs`):
|
|
290
|
+
- [ ] Grid of program cards: title, description, author, dimension tags, difficulty, step count
|
|
291
|
+
- [ ] Filter by: dimension, difficulty, topic, trainer compatibility, tier
|
|
292
|
+
- [ ] Search
|
|
293
|
+
- [ ] Program install flow:
|
|
294
|
+
- [ ] "Install" button on program card
|
|
295
|
+
- [ ] Copies program into user's gym via `POST /api/gym/programs` (deep copy, not a reference)
|
|
296
|
+
- [ ] Installed program appears in sidebar program list
|
|
297
|
+
- [ ] Author attribution: `createdBy: { name, orgName }` on program cards
|
|
298
|
+
- [ ] "Publish to marketplace" option in program settings (sets `isMarketplaceListed: true`)
|
|
299
|
+
|
|
300
|
+
### 2. Trainer Variations in Programs
|
|
301
|
+
|
|
302
|
+
- [ ] Support `trainerVariations: { [trainerId]: string }` field on steps
|
|
303
|
+
- [ ] When rendering a step, check if `trainerVariations[selectedTrainer]` exists — use it if so, fall back to base `content`
|
|
304
|
+
- [ ] Program editor / AI generator can optionally generate trainer-specific variants
|
|
305
|
+
- [ ] Marketplace programs that include trainer variations show a "Trainer-optimized" badge
|
|
306
|
+
|
|
307
|
+
### 3. Channel Notifications
|
|
308
|
+
|
|
309
|
+
- [ ] Opt-in setting per user: `gymNotifications: { enabled: false, channel: "slack"|"telegram"|"discord"|null }`
|
|
310
|
+
- [ ] When enabled, activity digest can send a brief summary to the configured channel after running
|
|
311
|
+
- [ ] "Here's your weekly gym update: Your Application score went up. You have a new challenge from Riley."
|
|
312
|
+
- [ ] Coach can send a nudge if user hasn't been active for 3+ days (once, not repeatedly)
|
|
313
|
+
- [ ] Notification channel set in gym settings UI
|
|
314
|
+
|
|
315
|
+
### 4. Gamification
|
|
316
|
+
|
|
317
|
+
- [ ] **Badges**: defined set of achievement badges
|
|
318
|
+
- [ ] "First Steps" — complete Getting Started program
|
|
319
|
+
- [ ] "Prompt Pro" — reach Communication score 4+
|
|
320
|
+
- [ ] "Builder" — create 3+ specialized agents
|
|
321
|
+
- [ ] "Automator" — set up first automation
|
|
322
|
+
- [ ] "Streak: 7 Days", "Streak: 30 Days"
|
|
323
|
+
- [ ] "Program Creator" — author + publish a program to marketplace
|
|
324
|
+
- [ ] Badge awarded by digest when condition first detected → stored in `learner-profile.json`
|
|
325
|
+
- [ ] Badges displayed on Progress tab below milestones
|
|
326
|
+
- [ ] Badge unlock shown as a gym card ("You earned: Builder 🏗️")
|
|
327
|
+
|
|
328
|
+
### 5. Program Export / Share
|
|
329
|
+
|
|
330
|
+
- [ ] `GET /api/gym/programs/:id/export` — returns program as formatted markdown (H1/H2/H3)
|
|
331
|
+
- [ ] "Export" button in program detail view
|
|
332
|
+
- [ ] "Share link" — generates a deep link to install the program (local: imports from exported markdown; SaaS: link to marketplace listing)
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Notes
|
|
337
|
+
|
|
338
|
+
- **Order within phases matters.** In MVP: Phase 0 MCP foundation first, then gym agent + souls, then onboarding, then the page. Don't build UI before the agent exists.
|
|
339
|
+
- **Programs are seeded on first `gymEnabled: true`.** Getting Started imports automatically. Subsequent bundled programs import in P1.
|
|
340
|
+
- **The Feed strip** can be a stub (empty) in MVP with a placeholder — real content in P1.
|
|
341
|
+
- **Avatar images** are blocked on having art. Use placeholders (initials on colored backgrounds) for MVP; replace with final illustrated avatars when ready.
|
|
342
|
+
- **`aibriefingEnabled`** is off by default and stays off until user explicitly opts in. Never run a web search without the flag.
|
|
343
|
+
- **SaaS porting note:** After MVP commit, flag for @ma41saas — the gym is a significant feature that will need adaptation (Prisma tables for programs/progress/cards, multi-user learner profiles, auth-gated gym routes).
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# AI Gym — Onboarding Design Document
|
|
2
|
+
|
|
3
|
+
> Brainstorming / planning doc. See `ai-gym-architecture.md` for the full system design.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The AI Gym is a separate, toggleable module on the MyAI for One platform. When enabled, it gets its own dedicated tab in the app. The gym agent is a **distinct agent class** — not a personal agent, not a platform agent — but built on the same underlying infrastructure with the same capabilities (sessions, memory, MCP tools, etc.).
|
|
10
|
+
|
|
11
|
+
Onboarding is the entry point. It's a three-step flow:
|
|
12
|
+
1. Choose your trainer
|
|
13
|
+
2. Tell us about you
|
|
14
|
+
3. Get your plan
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Step 1 — Choose Your Trainer
|
|
19
|
+
|
|
20
|
+
The user picks one of **5 trainers**. Presented as cards: avatar, name, and a short first-person intro. The goal is for it to feel like meeting a real person — not configuring a feature.
|
|
21
|
+
|
|
22
|
+
Tone and pacing are baked into each profile. No separate dropdowns.
|
|
23
|
+
|
|
24
|
+
| Trainer | Style | Pace |
|
|
25
|
+
|---------|-------|------|
|
|
26
|
+
| **Alex** | Collaborative, celebratory | Steady |
|
|
27
|
+
| **Jordan** | Direct, accountable | Steady |
|
|
28
|
+
| **Morgan** | Thoughtful, frameworks-first | Steady |
|
|
29
|
+
| **Riley** | Challenging, hard questions | Immersive |
|
|
30
|
+
| **Sam** | Patient, no pressure | Steady |
|
|
31
|
+
|
|
32
|
+
**The intro each trainer shows on their card:**
|
|
33
|
+
|
|
34
|
+
> **Alex** — "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 consistent progress every session and a lot of high-fives along the way."
|
|
35
|
+
|
|
36
|
+
> **Jordan** — "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."
|
|
37
|
+
|
|
38
|
+
> **Morgan** — "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. We'll take things one layer at a time, and you'll leave with real understanding, not just checked boxes."
|
|
39
|
+
|
|
40
|
+
> **Riley** — "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."
|
|
41
|
+
|
|
42
|
+
> **Sam** — "I'm Sam. I meet you exactly where you are — no pressure, no judgment. We go at your pace. One thing at a time, building from what you already know. Nothing overwhelming, ever."
|
|
43
|
+
|
|
44
|
+
Each card has an avatar image (`public/trainers/<name>.png`, illustrated style). Users can switch trainers at any time; history, plan, and progress persist.
|
|
45
|
+
|
|
46
|
+
### Implementation Note
|
|
47
|
+
Each trainer profile is a `soul.md` file — the system prompt personality layer for the gym agent. Switching trainers = swapping which `soul.md` is active. Users can switch profiles at any time; their history, plan, and progress persist unchanged.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Step 2 — Get to Know You
|
|
52
|
+
|
|
53
|
+
Once the trainer profile is selected and adopted by the gym agent, the agent opens a **single conversational message** — not a questionnaire. The agent sends one prompt that covers three topics and gives the user suggested angles to respond to. The user replies however they want, in whatever order, in one go.
|
|
54
|
+
|
|
55
|
+
### The Three Topics
|
|
56
|
+
|
|
57
|
+
**1. About You (professional)**
|
|
58
|
+
Gathered passively where possible — user shares LinkedIn, Twitter, or any links. Agent reads and builds a profile. User can review and edit. Goal: understand their professional context and background. Nothing too personal.
|
|
59
|
+
|
|
60
|
+
**2. Your AI Use**
|
|
61
|
+
Where are you today? Heavy user with real workflows? Curious beginner? Somewhere in between? Give an example. The user tells this in their own words — the agent doesn't quiz them with options.
|
|
62
|
+
|
|
63
|
+
**3. Your Goals**
|
|
64
|
+
What do you want out of AI? More productive at work? Build something? Just not feel left behind? Open-ended.
|
|
65
|
+
|
|
66
|
+
### The One-Question Format
|
|
67
|
+
> "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."
|
|
68
|
+
|
|
69
|
+
The agent processes the response, builds the user profile, and confirms back with a brief summary before moving to the plan.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Step 3 — The Plan
|
|
74
|
+
|
|
75
|
+
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 can update it, and the user can edit it too. It tracks what's been done, what's mastered, and surfaces wins over time.
|
|
76
|
+
|
|
77
|
+
The plan always has two buckets:
|
|
78
|
+
|
|
79
|
+
### Bucket 1 — On the Job Training (User-Driven)
|
|
80
|
+
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.
|
|
81
|
+
|
|
82
|
+
### Bucket 2 — Platform-Driven
|
|
83
|
+
Two sub-buckets:
|
|
84
|
+
|
|
85
|
+
**Textbook**
|
|
86
|
+
Curated modules: read this article, watch this video, learn this concept. Structured, sequenced content for foundational knowledge.
|
|
87
|
+
|
|
88
|
+
**Dynamic**
|
|
89
|
+
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.
|
|
90
|
+
|
|
91
|
+
### Plan Properties
|
|
92
|
+
- Created at end of onboarding, based on the user profile built in Step 2
|
|
93
|
+
- Updated continuously by the gym agent as usage patterns emerge
|
|
94
|
+
- User can add goals, mark things done, or reorder priorities
|
|
95
|
+
- Tracks: mastered skills, in-progress learning, suggested next steps, wins/milestones
|
|
96
|
+
- Will have dedicated APIs and MCP tools for read/write access
|
|
97
|
+
- The bucket structure (on-the-job vs. platform-driven / textbook vs. dynamic) is preserved as the organizing frame — always visible in the UI
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Gym Agent — Notes
|
|
102
|
+
|
|
103
|
+
- Distinct agent class, separate from personal agents and platform agents
|
|
104
|
+
- Has all standard platform capabilities (sessions, memory, MCP, goals, crons, etc.)
|
|
105
|
+
- Personality layer = `soul.md` (swappable per trainer profile)
|
|
106
|
+
- One gym agent per user (or per install in local mode)
|
|
107
|
+
- Owns the user's learner profile, plan, and training history
|
|
108
|
+
- Connects to platform activity data (with permission) to power the dynamic bucket
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Open Questions
|
|
113
|
+
|
|
114
|
+
- How many trainer profiles at launch? 5 feels right — enough variety, not overwhelming
|
|
115
|
+
- Does the gym agent have a fixed `agentId` (e.g. `gym`) or is it user-created on first launch?
|
|
116
|
+
- Where does the learner profile live — agent memory (`context.md`) or a dedicated `learner-profile.json`?
|
|
117
|
+
- Plan UI: separate `/gym/plan` sub-page or a panel within the `/gym` tab?
|
|
118
|
+
- Dynamic bucket: pull-based (agent checks activity periodically) or event-driven (hooks on agent activity)?
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
*Last updated: 2026-04-09 — brainstorming phase*
|