slashvibe-mcp 0.6.0 → 0.7.1

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 (50) hide show
  1. package/README.md +3 -68
  2. package/index.js +6 -8
  3. package/package.json +22 -23
  4. package/tools/help.js +61 -141
  5. package/version.json +13 -8
  6. package/analytics.js +0 -107
  7. package/bridges/bridge-monitor.js +0 -388
  8. package/bridges/discord-bot.js +0 -431
  9. package/bridges/farcaster.js +0 -299
  10. package/bridges/telegram.js +0 -261
  11. package/bridges/webhook-health.js +0 -420
  12. package/bridges/webhook-server.js +0 -437
  13. package/bridges/whatsapp.js +0 -441
  14. package/bridges/x-webhook.js +0 -423
  15. package/games/arcade.js +0 -406
  16. package/games/colorguess.js +0 -343
  17. package/games/crossword-words.js +0 -171
  18. package/games/crossword.js +0 -461
  19. package/games/drawing.js +0 -347
  20. package/games/gameroulette.js +0 -300
  21. package/games/gamerouter.js +0 -336
  22. package/games/gamestatus.js +0 -337
  23. package/games/guessnumber.js +0 -209
  24. package/games/hangman.js +0 -279
  25. package/games/multiplayer-tictactoe.js +0 -389
  26. package/games/pixelart.js +0 -399
  27. package/games/quickduel.js +0 -354
  28. package/games/riddle.js +0 -371
  29. package/games/rockpaperscissors.js +0 -291
  30. package/games/snake.js +0 -406
  31. package/games/storybuilder.js +0 -343
  32. package/games/tictactoe.js +0 -345
  33. package/games/twentyquestions.js +0 -286
  34. package/games/twotruths.js +0 -207
  35. package/games/werewolf.js +0 -508
  36. package/games/wordassociation.js +0 -247
  37. package/games/wordchain.js +0 -135
  38. package/hooks/check-guest-messages.js +0 -125
  39. package/hooks/check-guest-messages.sh +0 -226
  40. package/intelligence/interests.js +0 -369
  41. package/lib/tech-detection.js +0 -243
  42. package/protocol/telegram-commands.js +0 -199
  43. package/smart-inbox.js +0 -276
  44. package/store/reservations.js +0 -321
  45. package/store/skills.js +0 -378
  46. package/tools/analytics.js +0 -191
  47. package/tools/matrix-read.js +0 -124
  48. package/tools/matrix-rooms.js +0 -56
  49. package/tools/matrix-send.js +0 -71
  50. package/twitter.js +0 -209
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # vibe-mcp
2
2
 
3
- Social layer for AI-assisted coding. DMs, presence, collaboration, and Matrix multiplayer rooms between developers.
3
+ Social layer for AI-assisted coding. DMs, presence, and collaboration between developers.
4
4
 
5
5
  **Works in:** Claude Code, Cursor, any MCP-compatible IDE
6
6
 
@@ -49,78 +49,14 @@ Add to `~/.claude.json`:
49
49
  - **DMs** - Direct messages between developers
50
50
  - **Memory** - Remember context about connections
51
51
  - **Status** - Share what you're working on
52
- - **Matrix** - Real-time multi-agent collaboration rooms
53
- - **Games** - Play tic-tac-toe while coding
54
-
55
- ---
56
-
57
- ## Matrix Multiplayer Rooms
58
-
59
- /vibe implements the [AIRC protocol](https://airc.chat) for multi-agent, multi-model collaboration over Matrix.
60
-
61
- ### Architecture
62
-
63
- The canonical pattern is a **local HTTP bot per session**. Claude (or any model) communicates with Matrix rooms by curling a lightweight local bot server:
64
-
65
- ```
66
- Claude/Codex session
67
- |
68
- curl http://localhost:7544/send
69
- |
70
- Local HTTP Bot (matrix-bot-sdk)
71
- |
72
- Matrix Homeserver (matrix.slashvibe.dev)
73
- |
74
- Other participants (humans, Claudes, Codex instances)
75
- ```
76
-
77
- ### Bot HTTP Endpoints
78
-
79
- | Endpoint | Method | Description |
80
- |----------|--------|-------------|
81
- | `/health` | GET | Bot health check |
82
- | `/messages` | GET | Read recent messages (query: `roomId`, `limit`) |
83
- | `/send` | POST | Send message to room (body: `roomId`, `text`) |
84
- | `/rooms` | GET | List joined rooms |
85
-
86
- ### MCP Tools (Matrix)
87
-
88
- These tools are the primary collaboration interface:
89
-
90
- | Tool | Description |
91
- |------|-------------|
92
- | `vibe_matrix_rooms` | List rooms the bot has joined |
93
- | `vibe_matrix_read` | Read recent messages from a room |
94
- | `vibe_matrix_send` | Send a message to a room as the bot |
95
-
96
- ### PostToolUse Hook
97
-
98
- The `check-guest-messages.sh` hook runs on every tool use and polls the local Matrix bot for new messages, injecting them into Claude's context automatically. You do not need to manually call `vibe_matrix_read` to see incoming messages.
99
-
100
- ### Planned: matrix-image
101
-
102
- Inline image generation in Matrix rooms via Gemini Nano Banana Pro (`gemini-3-pro-image-preview`). Flow:
103
-
104
- 1. Generate JPEG via Gemini API
105
- 2. Upload to Matrix media repo (`mxc://` URI)
106
- 3. Send `m.image` event with thumbnail to room
107
-
108
- This enables visual collaboration (diagrams, mockups, debug screenshots) directly in the Matrix room.
109
-
110
- ### Homeserver
111
-
112
- - **Server:** `matrix.slashvibe.dev` (Continuwuity 0.5.5 on fly.io)
113
- - **Primary room:** `#vibe-dev:slashvibe.dev`
114
- - **Federation:** `.well-known/matrix/server` and `/client` served from Vercel
115
- - **Encryption:** Unencrypted rooms only (E2E breaks bot pattern)
52
+ - **Play** - Shared games and creative sessions over the DM transport (tic-tac-toe, chess, collaborative poems, exquisite corpse) plus the Weave
116
53
 
117
54
  ---
118
55
 
119
56
  ## Pair/Guest/Call Transport
120
57
 
121
58
  Pairing, live sessions, guest turns, and WebRTC signaling use the supported
122
- REST/KV transport. Matrix rooms are an optional collaboration surface, not a
123
- replacement or migration target for these APIs.
59
+ REST/KV transport.
124
60
 
125
61
  | Surface | Contract |
126
62
  |---------|----------|
@@ -152,7 +88,6 @@ The MCP server connects to `www.slashvibe.dev` for:
152
88
  - User presence and discovery
153
89
  - Message routing (DMs)
154
90
  - Identity verification (GitHub OAuth)
155
- - Matrix federation metadata
156
91
 
157
92
  ## Related
158
93
 
package/index.js CHANGED
@@ -341,18 +341,16 @@ const coreTools = {
341
341
  vibe_ship: require('./tools/ship'),
342
342
  vibe_feed: require('./tools/feed'),
343
343
 
344
- // Play — the original January magic: shared experiences over the DM transport.
345
- // vibe_play is the open primitive; game/poem/corpse are hardcoded on-ramps.
344
+ // Play — shared experiences over the DM transport. vibe_play is the open
345
+ // primitive (freeform state courier); game/poem/corpse carry real rule
346
+ // enforcement (chess/tictactoe legality, poem sealing, corpse hidden-state)
347
+ // and read their own legacy payloads — behaviors the primitive does NOT
348
+ // reproduce, so they stay as distinct tools.
346
349
  vibe_play: require('./tools/play'),
347
350
  vibe_game: require('./tools/game'),
348
351
  vibe_poem: require('./tools/poem'),
349
352
  vibe_corpse: require('./tools/corpse'),
350
353
 
351
- // Matrix rooms — multiplayer
352
- vibe_matrix_rooms: require('./tools/matrix-rooms'),
353
- vibe_matrix_read: require('./tools/matrix-read'),
354
- vibe_matrix_send: require('./tools/matrix-send'),
355
-
356
354
  // Utility
357
355
  vibe_help: require('./tools/help'),
358
356
  vibe_bye: require('./tools/bye'),
@@ -507,7 +505,7 @@ class VibeMCPServer {
507
505
  // This triggers Claude to refresh without reconnection
508
506
  const stateChangingTools = [
509
507
  'vibe_dm', 'vibe_reply', 'vibe_status',
510
- 'vibe_ship', 'vibe_matrix_send'
508
+ 'vibe_ship', 'vibe_play', 'vibe_game'
511
509
  ];
512
510
  if (stateChangingTools.includes(params.name)) {
513
511
  // Debounced notification (prevents spam)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "slashvibe-mcp",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "mcpName": "io.github.vibecodinginc/vibe",
5
5
  "description": "Social layer for Claude Code - identity, presence, messaging, and consented live collaboration",
6
6
  "main": "index.js",
@@ -12,8 +12,11 @@
12
12
  "start": "node index.js",
13
13
  "test": "node --test tools/*.test.js",
14
14
  "test:context": "node --test tools/_work-context.test.js",
15
+ "pack:check": "node scripts/check-pack-closure.js",
16
+ "prepack": "node scripts/check-pack-closure.js",
15
17
  "lint": "eslint . --ext .js",
16
- "lint:fix": "eslint . --ext .js --fix"
18
+ "lint:fix": "eslint . --ext .js --fix",
19
+ "test:pack": "node --test test/pack-artifact.test.mjs"
17
20
  },
18
21
  "keywords": [
19
22
  "mcp",
@@ -23,7 +26,6 @@
23
26
  "developer-tools",
24
27
  "ai",
25
28
  "anthropic",
26
- "matrix",
27
29
  "multi-agent",
28
30
  "collaboration"
29
31
  ],
@@ -42,24 +44,31 @@
42
44
  "node": ">=18.0.0"
43
45
  },
44
46
  "files": [
45
- "cli.js",
46
- "index.js",
47
- "setup.js",
48
- "auth-store.js",
47
+ "README.md",
49
48
  "api-auth.js",
49
+ "auth-store.js",
50
50
  "auto-update.js",
51
+ "cli.js",
51
52
  "config.js",
52
53
  "crypto.js",
53
54
  "discord.js",
55
+ "games/chess.js",
56
+ "index.js",
57
+ "intelligence/infer.js",
58
+ "intelligence/patterns.js",
59
+ "intelligence/proactive.js",
60
+ "intelligence/serendipity.js",
54
61
  "memory.js",
55
- "notify.js",
56
62
  "notification-emitter.js",
57
- "analytics.js",
58
- "smart-inbox.js",
63
+ "notify.js",
59
64
  "presence.js",
60
65
  "prompts.js",
61
- "twitter.js",
62
- "version.json",
66
+ "protocol/index.js",
67
+ "setup.js",
68
+ "store/api.js",
69
+ "store/index.js",
70
+ "store/local.js",
71
+ "store/profiles.js",
63
72
  "tools/_actions.js",
64
73
  "tools/_discovery.js",
65
74
  "tools/_shared.js",
@@ -79,9 +88,6 @@
79
88
  "tools/inbox.js",
80
89
  "tools/init.js",
81
90
  "tools/intro.js",
82
- "tools/matrix-read.js",
83
- "tools/matrix-rooms.js",
84
- "tools/matrix-send.js",
85
91
  "tools/patterns.js",
86
92
  "tools/play.js",
87
93
  "tools/poem.js",
@@ -95,14 +101,7 @@
95
101
  "tools/update.js",
96
102
  "tools/weave.js",
97
103
  "tools/who.js",
98
- "hooks/",
99
- "store/",
100
- "protocol/",
101
- "intelligence/",
102
- "games/",
103
- "bridges/",
104
- "lib/",
105
- "README.md"
104
+ "version.json"
106
105
  ],
107
106
  "dependencies": {
108
107
  "crossword-layout-generator": "^0.1.1",
package/tools/help.js CHANGED
@@ -1,7 +1,10 @@
1
1
  /**
2
2
  * vibe help — Quick reference for /vibe commands
3
3
  *
4
- * Shows available commands, getting started guide, and support info
4
+ * Shows the ACTUAL registered tool surface, a getting-started guide, and support
5
+ * info. Every command listed here must correspond to a registered vibe_* tool —
6
+ * the packed-artifact test (test/pack-artifact.test.mjs) asserts this so help
7
+ * cannot drift back into advertising tools that do not ship.
5
8
  */
6
9
 
7
10
  const config = require('../config');
@@ -14,99 +17,49 @@ const definition = {
14
17
  properties: {
15
18
  topic: {
16
19
  type: 'string',
17
- description: 'Optional: specific topic (commands, getting-started, agents, troubleshooting, discovery)'
20
+ description: 'Optional: specific topic (commands, getting-started, play, troubleshooting)'
18
21
  }
19
22
  }
20
23
  }
21
24
  };
22
25
 
26
+ // Commands map 1:1 to registered tools. Keep in sync with index.js registration
27
+ // (the pack-artifact test enforces this).
23
28
  const COMMANDS = `## /vibe Commands
24
29
 
25
30
  ### Presence
26
- - \`vibe\` or \`vibe start\` — Join the room, see who's online
27
- - \`vibe who\` — See who's online right now
28
- - \`vibe status <mood>\` — Set your status (shipping, thinking, afk, debugging, pairing, deep)
29
- - \`vibe context\` — Share what you're working on
30
- - \`vibe bye\` — Leave the room, end session
31
-
32
- ### Discovery & Connection 🤝
33
- - \`vibe discover\` — Find people to connect with
34
- - \`vibe workshop-buddy find\` — Find your ideal workshop partner
35
- - \`vibe workshop-buddy offer "skills"\` — Offer skills for collaboration
36
- - \`vibe skills-exchange browse\` — Browse community skill marketplace
37
- - \`vibe skills-exchange post --type offer --skill "your expertise"\` — Post a skill offer
38
- - \`vibe skills-exchange match\` — Find perfect skill exchanges for you
31
+ - \`vibe start\` (or just \`vibe\`) — Join the room, see who's online
32
+ - \`vibe who\` — See who's online and what they're building
33
+ - \`vibe status <mood>\` — Set mood (shipping, thinking, afk, debugging, pairing, deep) or pace (slower, quiet, normal)
34
+ - \`vibe bye\` — End your session with a summary
39
35
 
40
36
  ### Messaging
41
37
  - \`vibe dm @handle "message"\` — Send a direct message
42
- - \`vibe inbox\` — Check your messages
43
- - \`vibe open @handle\` — Open conversation thread
44
- - \`vibe ping @handle\` — Quick nudge
45
- - \`vibe react @handle <emoji>\` — Send a reaction (fire, heart, eyes, clap, rocket)
46
-
47
- ### Profile & Memory
48
- - \`vibe update tags "your-skills"\` — Update your skills/interests
49
- - \`vibe update building "your project"\` — Update what you're building
50
- - \`vibe remember @handle "observation"\` — Save a note about someone
51
- - \`vibe recall @handle\` — See your notes about someone
52
- - \`vibe forget @handle\` — Delete notes about someone
53
-
54
- ### Community
55
- - \`vibe board\` — View the shared board
56
- - \`vibe board --category shipped "message"\` — Post to board
57
- - \`vibe ship "what you built"\` — Announce what you shipped
58
- - \`vibe invite\` — Generate invite link for a friend
59
- - \`vibe report @handle --reason spam\` — Report bad behavior
60
-
61
- ### Games
62
- - \`vibe game @handle\` — Start a game with someone (tic-tac-toe)
63
-
64
- ### Social Bridges
65
- - \`vibe x mentions\` — Check your X/Twitter mentions
66
- - \`vibe x reply "tweet"\` — Post to X
67
- - \`vibe social inbox\` — Unified inbox across platforms
68
-
69
- ### Diagnostics
70
- - \`vibe test\` — Run health check
71
- - \`vibe doctor\` — Diagnose issues
72
- - \`vibe settings\` — View/change preferences`;
73
-
74
- const DISCOVERY_INFO = `## Discovery & Connection Features
75
-
76
- /vibe has powerful tools to help you find collaborators and connect with the right people:
77
-
78
- ### Workshop Buddy 🤝
79
- Perfect for finding coding/building partners with complementary skills:
80
-
81
- - \`workshop-buddy find\` — AI matches based on skills + projects
82
- - \`workshop-buddy offer "frontend, react"\` — Offer your skills
83
- - \`workshop-buddy seeking "backend, python"\` — Find specific expertise
84
- - \`workshop-buddy matches\` — Browse community skill combinations
85
-
86
- **Example match:** Frontend dev + Backend dev working on similar projects
87
-
88
- ### Skills Exchange 🎯
89
- Community marketplace for teaching and learning:
90
-
91
- - \`skills-exchange browse\` — See all skill offers/requests by category
92
- - \`skills-exchange post --type offer --skill "React development"\` — Offer teaching
93
- - \`skills-exchange post --type request --skill "UI design feedback"\` — Request help
94
- - \`skills-exchange match\` — Find people you can help or learn from
95
-
96
- ### General Discovery 🔍
97
- - \`discover\` — Broad people discovery with interests
98
- - \`discover search "AI"\` — Search for specific interests
99
- - \`update tags "your-skills"\` — Keep your skills current for better matching
100
-
101
- ### Pro Tips
102
- - Update your profile regularly: tags, interests, what you're building
103
- - Be specific with skills (e.g., "React TypeScript" vs just "frontend")
104
- - Both teaching and learning create great connections
105
- - Use DMs to reach out: \`dm @handle "I saw your skills post..."\``;
38
+ - \`vibe reply "message"\` — Reply to your most recent unread (or a specific person)
39
+ - \`vibe inbox\` — See unread messages and recent threads
40
+ - \`vibe intro @handle\` — Introduce yourself to someone new
41
+ - \`vibe email\` — Get pinged about DMs you miss while away
42
+
43
+ ### Ship & Feed
44
+ - \`vibe ship "what you built"\` — Announce a ship to the community board
45
+ - \`vibe feed\` — See the creative feed: ideas, ships, requests
46
+
47
+ ### Play
48
+ - \`vibe play @handle\` — Freeform shared play: invent any game/story/drawing over DM
49
+ - \`vibe game @handle\` — Turn-based game with rules (tictactoe, chess)
50
+ - \`vibe poem @handle\` — Co-write a collaborative poem
51
+ - \`vibe corpse @handle\` — Exquisite-corpse story (hidden-state)
52
+ - \`vibe weave\` — The Weave: attach this session's strand
53
+ - \`vibe fable @handle\` — The Weave, deepest form: co-author a living shared artifact
54
+
55
+ ### Setup
56
+ - \`vibe init\` — Sign in with GitHub (your username becomes your @handle)
57
+ - \`vibe token <token>\` — Set your auth token after browser auth
58
+ - \`vibe help [topic]\` — This help (topics: commands, getting-started, play, troubleshooting)`;
106
59
 
107
60
  const GETTING_STARTED = `## Getting Started with /vibe
108
61
 
109
- You're already in — your @handle came from your GitHub login, nothing to set up.
62
+ You're already in — your @handle comes from your GitHub login, nothing to set up.
110
63
  The whole point of /vibe: message a real person without leaving your terminal.
111
64
 
112
65
  ### 1. See who's around
@@ -125,74 +78,48 @@ It lands in their terminal. When they reply, it lands in yours (\`vibe inbox\`).
125
78
  \`\`\`
126
79
  vibe ship "what you just built"
127
80
  \`\`\`
128
- Puts you on the board so others can find and message you.
129
-
130
- ### Later, when you want more
131
- - \`vibe update building "your project"\` — say what you're working on
132
- - \`vibe discover\` / \`vibe workshop-buddy find\` — deeper matching by skills
133
- - \`vibe\` at the start of a session — who's online + unread messages
81
+ Puts you on the feed so others can find and message you.
134
82
 
135
83
  That's it. Say hi to someone — that's the whole thing.`;
136
84
 
137
- const AGENTS_INFO = `## AI Agents on /vibe
138
-
139
- Several AI agents live on /vibe alongside humans:
140
-
141
- ### Active Agents
142
- - **@echo** — Welcome bot, answers questions, collects feedback
143
- - **@games-agent** — Builds games for the platform
144
- - **@streaks-agent** — Tracks engagement, celebrates milestones
145
- - **@discovery-agent** — Helps people find collaborators (that's me!)
146
- - **@curator-agent** — Curates interesting content
147
- - **@ops-agent** — Monitors infrastructure health
148
- - **@bridges-agent** — Connects external platforms
85
+ const PLAY_INFO = `## Play on /vibe
149
86
 
150
- ### How They Work
151
- - Agents are clearly marked with "is_agent: true"
152
- - Each shows "Operated by @seth"
153
- - They follow rate limits (max 5 DMs/hour)
154
- - You can block them: \`vibe block @agent-name\`
87
+ Shared, real-time experiences over the DM transport — you and another viber's
88
+ Claude carry state back and forth:
155
89
 
156
- ### Agent-to-Agent
157
- Agents can message each other and coordinate.
158
- Their conversations are visible on the board (category: agent-chat).`;
90
+ - \`vibe play @handle\` — The open primitive. No built-in rules; you two invent
91
+ anything (a debate, a made-up game, a shared sketch). State lives in the thread.
92
+ - \`vibe game @handle\` — Rule-enforced turn-based games: tictactoe, chess
93
+ (legal-move checking, board rendering).
94
+ - \`vibe poem @handle\` — A collaborative poem with turn/line structure and sealing.
95
+ - \`vibe corpse @handle\` — Exquisite corpse: each writer sees only the last line
96
+ (hidden-state), revealed when complete.
97
+ - \`vibe weave\` / \`vibe fable @handle\` — The Weave: attach a strand, or co-author
98
+ a living shared artifact that Fable merges across both terminals.`;
159
99
 
160
100
  const TROUBLESHOOTING = `## Troubleshooting
161
101
 
162
102
  ### "Not initialized"
163
103
  Run \`vibe init\` — it opens your browser to sign in with GitHub, and your
164
104
  GitHub username becomes your @handle automatically (no handle to pick).
165
-
166
- ### No discovery matches found
167
- 1. Update your profile: \`vibe update tags "your-skills"\`
168
- 2. Set what you're building: \`vibe update building "your project"\`
169
- 3. Try offering skills: \`workshop-buddy offer "your expertise"\`
170
- 4. Browse manually: \`skills-exchange browse\`
105
+ If the browser flow gives you a token, set it with \`vibe token <token>\`.
171
106
 
172
107
  ### Messages not sending
173
- 1. Run \`vibe test\` to check API connection
174
- 2. Run \`vibe doctor\` for diagnostics
175
- 3. Check if recipient has blocked you
108
+ 1. Confirm you're signed in: \`vibe who\` should return results.
109
+ 2. Re-run \`vibe init\` if your session expired.
110
+ 3. Check whether the recipient has consented / not blocked you.
176
111
 
177
112
  ### Not seeing who's online
178
- Presence updates every 5 minutes. Run \`vibe who\` for fresh data.
179
-
180
- ### Need help?
181
- - DM \`@echo\` with your question
182
- - DM \`@vibe\` for support
183
- - DM \`@discovery-agent\` for connection help
184
- - Post on the board with category "question"
113
+ Presence updates periodically. Run \`vibe who\` for fresh data.
185
114
 
186
- ### Report Issues
187
- - GitHub: https://github.com/VibeCodingInc/vibe-mcp/issues
188
- - Or: \`vibe echo "your feedback"\``;
115
+ ### Report issues
116
+ - GitHub: https://github.com/VibeCodingInc/vibe-mcp/issues`;
189
117
 
190
118
  async function handler(args) {
191
119
  const { topic } = args;
192
120
  const handle = config.getHandle();
193
121
  const isInitialized = !!handle;
194
122
 
195
- // Topic-specific help
196
123
  if (topic) {
197
124
  const t = topic.toLowerCase();
198
125
  if (t === 'commands' || t === 'cmd') {
@@ -201,11 +128,8 @@ async function handler(args) {
201
128
  if (t === 'start' || t === 'getting-started' || t === 'quickstart') {
202
129
  return { display: GETTING_STARTED };
203
130
  }
204
- if (t === 'agents' || t === 'bots') {
205
- return { display: AGENTS_INFO };
206
- }
207
- if (t === 'discovery' || t === 'connect' || t === 'find') {
208
- return { display: DISCOVERY_INFO };
131
+ if (t === 'play' || t === 'games') {
132
+ return { display: PLAY_INFO };
209
133
  }
210
134
  if (t === 'troubleshooting' || t === 'debug' || t === 'issues') {
211
135
  return { display: TROUBLESHOOTING };
@@ -216,13 +140,11 @@ async function handler(args) {
216
140
  Available topics:
217
141
  - \`commands\` — List of all commands
218
142
  - \`getting-started\` — Quick start guide
219
- - \`discovery\` — Finding people & collaboration
220
- - \`agents\` — About AI agents on /vibe
143
+ - \`play\` — Shared games and creative sessions
221
144
  - \`troubleshooting\` — Fix common issues`
222
145
  };
223
146
  }
224
147
 
225
- // Default: overview
226
148
  const display = `## /vibe Help
227
149
 
228
150
  ${isInitialized ? `You're **@${handle}**` : '⚠️ Not signed in yet — run `vibe init` (GitHub signs you in, your username becomes your handle)'}
@@ -234,22 +156,20 @@ ${isInitialized ? `You're **@${handle}**` : '⚠️ Not signed in yet — run `v
234
156
  | Message someone | \`vibe dm @handle "msg"\` |
235
157
  | Check inbox | \`vibe inbox\` |
236
158
  | Ship something | \`vibe ship "what you built"\` |
237
- | Join room | \`vibe\` |
238
- | Find collaborators | \`vibe workshop-buddy find\` |
159
+ | Join room | \`vibe start\` |
160
+ | Play together | \`vibe play @handle\` |
239
161
 
240
162
  ### Topics
241
163
  - \`vibe help commands\` — All commands
242
164
  - \`vibe help getting-started\` — Quick start
243
- - \`vibe help discovery\` — Finding people & collaboration
244
- - \`vibe help agents\` — About AI agents
165
+ - \`vibe help play\` — Shared games and creative sessions
245
166
  - \`vibe help troubleshooting\` — Fix issues
246
167
 
247
168
  ### Links
248
169
  - Docs: https://slashvibe.dev/llms.txt
249
- - Issues: https://github.com/VibeCodingInc/vibe-mcp/issues
250
- - Feedback: \`vibe echo "message"\``;
170
+ - Issues: https://github.com/VibeCodingInc/vibe-mcp/issues`;
251
171
 
252
172
  return { display };
253
173
  }
254
174
 
255
- module.exports = { definition, handler };
175
+ module.exports = { definition, handler };
package/version.json CHANGED
@@ -1,13 +1,18 @@
1
1
  {
2
- "version": "0.6.0",
3
- "updated": "2026-07-25",
4
- "changelog": "Lean release: the npm tarball now ships only the tool files the server actually loads. 90+ unreachable experiment files (wallet, l2, mint, games graveyard, deprecated) no longer ride along in every npx download. Zero behavior change: same 23-tool surface, same registration, same auth flow.",
2
+ "version": "0.7.1",
3
+ "updated": "2026-07-26",
4
+ "changelog": "Repairs 0.7.0 (which was never published). Restores vibe_game/vibe_poem/vibe_corpse — 0.7.0 deleted them claiming vibe_play was a superset, but vibe_play is a generic state courier and does NOT reproduce chess/tictactoe legality, poem sealing, or exquisite-corpse hidden-state; the deletion orphaned existing sessions. Also completes the Matrix retirement (the polling hook and matrix metadata no longer ship) and replaces the tools/-only allowlist with a TRUE file-level require-closure: 99 files -> ~58, dropping bridges/, dead games/, hooks/, and unreachable helpers. Surface: 20 tools (Matrix trio removed; play layer intact).",
5
5
  "features": [
6
- "Tarball pruned to the require-closure of index.js/cli.js/setup.js (static analysis, no dynamic requires in codebase)",
7
- "Package size and npx cold-start reduced",
8
- "No tool added or removed from the live surface"
6
+ "Restored game/poem/corpse (0.7.0 capability regression reverted)",
7
+ "True require-closure tarball: 99 -> ~58 files, no broad dead-dir includes",
8
+ "Matrix fully retired: hook + metadata no longer ship",
9
+ "Surface 23 -> 20 (Matrix trio removed only)"
9
10
  ],
10
- "deprecated": [],
11
- "breaking": false,
11
+ "deprecated": [
12
+ "vibe_matrix_read",
13
+ "vibe_matrix_rooms",
14
+ "vibe_matrix_send"
15
+ ],
16
+ "breaking": true,
12
17
  "updateUrl": "https://www.slashvibe.dev/api/version"
13
18
  }
package/analytics.js DELETED
@@ -1,107 +0,0 @@
1
- /**
2
- * Analytics — Retention event tracking from MCP server
3
- *
4
- * Logs events to the /api/analytics/event endpoint for measuring
5
- * user engagement and retention funnel performance.
6
- *
7
- * Usage:
8
- * const analytics = require('./analytics');
9
- * analytics.track('empty_inbox_action', { action: 'discover', source: 'inbox' });
10
- */
11
-
12
- const config = require('./config');
13
-
14
- const API_URL = process.env.VIBE_API_URL || 'https://www.slashvibe.dev';
15
-
16
- /**
17
- * Track an analytics event (fire and forget)
18
- * @param {string} eventType - Event type (from valid types in api/lib/events.js)
19
- * @param {object} data - Additional event data
20
- */
21
- async function track(eventType, data = {}) {
22
- const handle = config.getHandle();
23
- if (!handle) return; // Skip if not initialized
24
-
25
- try {
26
- // Fire and forget - don't await or block
27
- fetch(`${API_URL}/api/analytics/events`, {
28
- method: 'POST',
29
- headers: { 'Content-Type': 'application/json' },
30
- body: JSON.stringify({
31
- type: eventType,
32
- handle,
33
- data: {
34
- ...data,
35
- client: 'mcp-server',
36
- timestamp: Date.now()
37
- }
38
- })
39
- }).catch(() => {}); // Silently ignore errors
40
- } catch (e) {
41
- // Analytics should never block or fail user flows
42
- }
43
- }
44
-
45
- /**
46
- * Track empty inbox interaction
47
- * @param {string} action - Which action was taken (or 'none' if user closed)
48
- * @param {object} context - Context about the state (hadOnboardingTask, hadRecentShips, etc.)
49
- */
50
- function trackEmptyInbox(action, context = {}) {
51
- // Track that user reached empty inbox state
52
- track('empty_inbox_reached', {
53
- hadRecentThreads: context.recentThreads?.length > 0,
54
- hadOnboardingTask: !!context.onboardingTask,
55
- hadRecentShips: context.recentShips?.length > 0
56
- });
57
-
58
- // If an action was taken, track it
59
- if (action && action !== 'none') {
60
- track('empty_inbox_action', {
61
- action,
62
- ...context
63
- });
64
- }
65
- }
66
-
67
- /**
68
- * Track lurk mode state change
69
- * @param {boolean} enabled - Whether lurk mode was enabled or disabled
70
- */
71
- function trackLurkMode(enabled) {
72
- track(enabled ? 'lurk_mode_enabled' : 'lurk_mode_disabled', {});
73
- }
74
-
75
- /**
76
- * Track onboarding task completion
77
- * @param {string} taskId - The task that was completed
78
- */
79
- function trackOnboardingTask(taskId) {
80
- track('onboarding_task_completed', { taskId });
81
- }
82
-
83
- /**
84
- * Track discovery initiation
85
- * @param {string} source - Where discovery was initiated from (inbox, start, etc.)
86
- */
87
- function trackDiscovery(source) {
88
- track('discovery_initiated', { source });
89
- }
90
-
91
- /**
92
- * Track session lifecycle
93
- * @param {string} event - 'started' or 'ended'
94
- * @param {object} sessionData - Session metrics (duration, actions, etc.)
95
- */
96
- function trackSession(event, sessionData = {}) {
97
- track(event === 'started' ? 'session_started' : 'session_ended', sessionData);
98
- }
99
-
100
- module.exports = {
101
- track,
102
- trackEmptyInbox,
103
- trackLurkMode,
104
- trackOnboardingTask,
105
- trackDiscovery,
106
- trackSession
107
- };