bobs-workshop 0.1.7 → 0.2.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.
@@ -0,0 +1,471 @@
1
+ {
2
+ "name": "bobs-mcp",
3
+ "version": "0.1.4",
4
+ "description": "Streamlined MCP orchestrator with workflow-driven API, consolidated git/worktree operations, and structured observability",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "binary": "./bin/bobs-mcp.js",
8
+ "node_version": "v20.18.3",
9
+ "platform": "darwin",
10
+
11
+ "metadata": {
12
+ "schema_version": "v2",
13
+ "served_at": "/.well-known/mcp/manifest.json",
14
+ "dynamic_capabilities": false,
15
+ "reliability_hooks": ["auto_spec_sync", "phase_lock"],
16
+ "observability_features": ["mode_banner", "structured_logging", "smart_query_routing"],
17
+ "permissions": { "file_write": true, "git_commit": true, "network_access": false },
18
+ "rate_limits": { "global_rps": 8, "burst": 16 },
19
+ "timeouts": { "default_ms": 6000 },
20
+ "cancellation": { "supported": true },
21
+ "llm_guidance": {
22
+ "execution_model": {
23
+ "identity": "YOU (Claude Code) ARE the orchestrator - there is no separate orchestrator service or agent system",
24
+ "mode_switching": "When bob.workshop classifies a problem, YOU switch modes (orchestrator → architect → engineer → debugger → reviewer) within the same conversation",
25
+ "direct_execution": "When you 'switch to architect mode', YOU read the ARCHITECT_PROMPT and execute those steps directly. There is NO delegation to another agent.",
26
+ "trigger": "When user says 'hey bob', YOU immediately call bob.workshop to classify, then switch to the appropriate mode and execute",
27
+ "tool_preference": "YOU use Bob's MCP tools (bob.code.search, bob.workflow.start) NOT Claude Code's native tools (Grep, Glob) when in Bob mode"
28
+ },
29
+ "manual_definition": {
30
+ "format": "JSON file stored in .bob/specs/SPEC-*.json",
31
+ "purpose": "Single source of truth for feature specifications, execution logs, and debug findings",
32
+ "critical_rule": "DO NOT create separate markdown files for documentation or progress tracking. ALL information must be stored within the MANUAL using bob.manual.update"
33
+ },
34
+ "mode_specific_tools": {
35
+ "architect": ["mcp__bobs-mcp__bob_workflow_start", "mcp__bobs-mcp__bob_manual_update", "mcp__bobs-mcp__bob_code_search"],
36
+ "engineer": ["mcp__bobs-mcp__bob_manual_update", "mcp__bobs-mcp__bob_code_search", "mcp__bobs-mcp__bob_workflow_deploy"],
37
+ "debugger": ["mcp__bobs-mcp__bob_manual_update", "mcp__bobs-mcp__bob_code_search", "mcp__bobs-mcp__bob_worktree_debug"],
38
+ "reviewer": ["mcp__bobs-mcp__bob_validate_changes", "mcp__bobs-mcp__bob_summarize_implementation"]
39
+ },
40
+ "verbosity": "summary",
41
+ "hints": [
42
+ "Use bob.workflow.start to bootstrap new features (creates manual + worktree + dashboard)",
43
+ "Use bob.workflow.deploy to complete features (commits + merges + cleanup)",
44
+ "Individual git/worktree tools are now internal - use workflow tools for end-to-end operations",
45
+ "Use bob.worktree.debug for advanced worktree troubleshooting",
46
+ "Always use bob.code.search with phase parameter (architect/engineer/debugger/reviewer) for role-specific analysis",
47
+ "bob.code.search mode=auto automatically selects semantic or lexical search based on query complexity",
48
+ "Scope searches with path parameter and limit results with maxHits for better performance",
49
+ "Architect phase: focus on architecture patterns and module structure",
50
+ "Engineer phase: exact symbol and function lookups for implementation",
51
+ "Debugger phase: security analysis and bug detection",
52
+ "Reviewer phase: quality and performance analysis"
53
+ ],
54
+ "manual_section_responsibilities": {
55
+ "architect": {
56
+ "creates": ["executive_summary", "product_specifications", "architecture_analysis", "implementation_plan", "testing"],
57
+ "placeholders": ["execution_logs", "debug_logs"],
58
+ "description": "Creates comprehensive manual with 4 main sections plus execution_logs and debug_logs placeholders for engineer and debugger to update"
59
+ },
60
+ "engineer": {
61
+ "updates": ["execution_logs"],
62
+ "description": "Updates execution_logs section with task completion entries for a respective manual"
63
+ },
64
+ "debugger": {
65
+ "creates_or_updates": ["debug_logs"],
66
+ "manual_type": "debug_manual or existing_manual",
67
+ "description": "Either creates own debug manual or updates debug_logs section of existing manual"
68
+ },
69
+ "reviewer": {
70
+ "creates": ["executive_summary", "existing_specification_context", "performance_analysis", "quality_analysis", "security_analysis", "implementation_plan", "implementation_strategy"],
71
+ "manual_type": "review_manual",
72
+ "description": "Creates own review manual with improvement recommendations"
73
+ }
74
+ }
75
+ }
76
+ },
77
+
78
+ "tools": {
79
+ "mcp__bobs-mcp__bob_workshop": {
80
+ "title": "Problem Classifier & Mode Selector",
81
+ "category": "orchestration",
82
+ "description": "Classifies user problem and returns which mode (architect/engineer/debugger/reviewer) YOU should switch to. YOU then execute in that mode directly - this is NOT delegation to another agent.",
83
+ "enhancements": ["phase_lock", "auto_spec_sync"],
84
+ "permissions": {},
85
+ "rate_limits": { "rps": 4, "burst": 8 },
86
+ "timeouts": { "ms": 4000 },
87
+ "examples": [
88
+ {
89
+ "description": "Architect planning for user profile",
90
+ "input": { "problem": "Add user profile management with avatar upload", "mode": "architect" }
91
+ },
92
+ {
93
+ "description": "Reviewer security pass",
94
+ "input": { "problem": "Review auth module for vulns", "mode": "reviewer", "spec_id": "SPEC-2025-09-28-auth" }
95
+ }
96
+ ]
97
+ },
98
+
99
+ "mcp__bobs-mcp__bob_manual_create": {
100
+ "title": "Manual Creator",
101
+ "category": "manual",
102
+ "description": "Creates a new SPEC manual",
103
+ "permissions": { "file_write": true },
104
+ "rate_limits": { "rps": 2, "burst": 4 },
105
+ "timeouts": { "ms": 4000 },
106
+ "input_schema": {
107
+ "title": "string",
108
+ "author": "string?",
109
+ "category": "enum(frontend,backend,fullstack,devtools,general)?",
110
+ "priority": "enum(low,medium,high,critical)?",
111
+ "tags": "string[]?"
112
+ },
113
+ "examples": [
114
+ {
115
+ "description": "Create manual for Settings feature",
116
+ "input": { "title": "User Settings Page", "category": "frontend", "priority": "medium", "tags": ["settings","ui"] }
117
+ }
118
+ ]
119
+ },
120
+
121
+ "mcp__bobs-mcp__bob_manual_update": {
122
+ "title": "Manual Updater",
123
+ "category": "manual",
124
+ "description": "Updates manual sections, execution logs, and debug logs. SINGLE SOURCE OF TRUTH for all activity logging to SPEC files.",
125
+ "enhancements": ["auto_commit_log", "phase_lock_validation"],
126
+ "permissions": { "file_write": true, "git_commit": true },
127
+ "rate_limits": { "rps": 4, "burst": 8 },
128
+ "timeouts": { "ms": 5000 },
129
+ "idempotency": { "key_param": "idempotency_key", "scope": "spec_id+action" },
130
+ "input_schema": { "$ref": "./schemas/manual_update.json" },
131
+ "usage_notes": [
132
+ "Only tool that writes enhanced_activities to SPEC files",
133
+ "Creates role-specific activities (architect, engineer, debugger, reviewer, orchestrator)",
134
+ "Generates intelligent summaries and categorizes file changes",
135
+ "Dashboard reads activities directly from SPEC files - no separate update needed"
136
+ ],
137
+ "examples": [
138
+ {
139
+ "description": "Log engineer execution progress",
140
+ "input": {
141
+ "spec_id": "SPEC-2025-09-28-user-profile",
142
+ "execution_log": {
143
+ "timestamp": "2025-09-28T10:00:00Z",
144
+ "engineer": "Claude Engineer",
145
+ "action": "implementation:completed",
146
+ "task_id": "AVATAR_UPLOAD",
147
+ "files_changed": ["src/components/ProfileForm.tsx"],
148
+ "commit_hash": "abc123",
149
+ "note": "Added avatar upload with image preview"
150
+ },
151
+ "idempotency_key": "abc123"
152
+ },
153
+ "output": { "summary": "🛠 bob.manual.update | ✅ execution log added" }
154
+ },
155
+ {
156
+ "description": "Log debugger findings",
157
+ "input": {
158
+ "spec_id": "SPEC-2025-09-28-user-profile",
159
+ "debug_log": {
160
+ "timestamp": "2025-09-28T11:00:00Z",
161
+ "issue": "Avatar upload fails for files > 5MB",
162
+ "root_cause": "Missing file size validation before upload",
163
+ "fix": "Added client-side validation with 5MB limit and user feedback",
164
+ "confidence": "high"
165
+ }
166
+ },
167
+ "output": { "summary": "🛠 bob.manual.update | ✅ debug log added" }
168
+ }
169
+ ]
170
+ },
171
+
172
+ "mcp__bobs-mcp__bob_code_search": {
173
+ "title": "Code Search",
174
+ "category": "search",
175
+ "description": "Phase-aware unified search combining semantic (semgrep) and lexical (ripgrep) search capabilities. Automatically selects best search mode based on query and phase context.",
176
+ "enhancements": ["mode_banner", "smart_query_routing", "summary_output", "phase_aware_analysis"],
177
+ "permissions": { "file_read": true },
178
+ "rate_limits": { "rps": 6, "burst": 12 },
179
+ "timeouts": { "ms": 6000 },
180
+ "input_schema": {
181
+ "query": "string (REQUIRED) - search query or pattern",
182
+ "mode": "enum(auto,semantic,lexical)? - auto selects best mode based on query",
183
+ "phase": "enum(architect,engineer,debugger,reviewer)? - role context for specialized analysis rules",
184
+ "path": "string? - directory to search within (defaults to current directory)",
185
+ "includeHidden": "boolean? - include hidden files/folders",
186
+ "followGitIgnore": "boolean? - respect .gitignore rules (default: true)",
187
+ "fileTypes": "string[]? - filter by file extensions (e.g., ['ts', 'js'])",
188
+ "maxHits": "number? - maximum number of results to return",
189
+ "contextLines": "number? - lines of context around matches",
190
+ "timeoutMs": "number? - search timeout in milliseconds"
191
+ },
192
+ "phase_behavior": {
193
+ "architect": "Focus on architecture analysis, framework patterns, module structure, and high-level design patterns",
194
+ "engineer": "General implementation search with focus on exact symbols, function names, and variable references",
195
+ "debugger": "Security-focused search for bugs, anti-patterns, vulnerabilities, and correctness issues",
196
+ "reviewer": "Quality analysis focused on performance issues, code smells, and best practice violations"
197
+ },
198
+ "usage_guidelines": [
199
+ "Use phase parameter to get specialized analysis relevant to your role",
200
+ "mode=auto (default) automatically selects semantic or lexical based on query complexity",
201
+ "Semantic mode: Best for finding patterns, similar code structures, or architectural analysis",
202
+ "Lexical mode: Best for exact matches, symbol lookups, or simple string searches",
203
+ "Combine with path parameter to scope searches to specific directories",
204
+ "Use maxHits to limit results for broad queries"
205
+ ],
206
+ "examples": [
207
+ {
208
+ "description": "Engineer search for exact function implementation",
209
+ "input": { "query": "createUserHandler", "mode": "auto", "phase": "engineer", "path": "src/backend/", "maxHits": 20 },
210
+ "output": {
211
+ "summary": "🔍 [Hybrid Search] Mode: lexical | Phase: engineer | Query: 'createUserHandler'",
212
+ "hits": [
213
+ "src/api/user.ts:45 → function createUserHandler(req,res)",
214
+ "src/routes/index.ts:22 → router.post('/users', createUserHandler)"
215
+ ]
216
+ }
217
+ },
218
+ {
219
+ "description": "Architect analysis of authentication patterns",
220
+ "input": { "query": "authentication flow", "mode": "semantic", "phase": "architect", "path": "src/" },
221
+ "output": {
222
+ "summary": "🔍 [Semantic Search] Phase: architect | Found 8 architecture patterns",
223
+ "patterns": [
224
+ "src/auth/middleware.ts - JWT authentication middleware pattern",
225
+ "src/auth/session.ts - Session management pattern"
226
+ ]
227
+ }
228
+ },
229
+ {
230
+ "description": "Debugger security vulnerability scan",
231
+ "input": { "query": "SQL injection", "mode": "semantic", "phase": "debugger", "path": "src/backend/" },
232
+ "output": {
233
+ "summary": "🔍 [Security Scan] Phase: debugger | Analyzing for SQL injection patterns",
234
+ "vulnerabilities": [
235
+ "src/db/queries.ts:42 - Potential SQL injection risk in dynamic query"
236
+ ]
237
+ }
238
+ },
239
+ {
240
+ "description": "Reviewer performance analysis",
241
+ "input": { "query": "database query", "phase": "reviewer", "path": "src/" },
242
+ "output": {
243
+ "summary": "🔍 [Quality Analysis] Phase: reviewer | Performance issues detected",
244
+ "issues": [
245
+ "src/api/users.ts:67 - N+1 query pattern detected",
246
+ "src/services/data.ts:123 - Missing database index"
247
+ ]
248
+ }
249
+ }
250
+ ]
251
+ },
252
+
253
+ "mcp__bobs-mcp__bob_workflow_start": {
254
+ "title": "Workflow Starter",
255
+ "category": "workflow",
256
+ "description": "Creates manual + worktree + launches dashboard",
257
+ "permissions": { "file_write": true, "git_commit": true },
258
+ "rate_limits": { "rps": 1, "burst": 2 },
259
+ "timeouts": { "ms": 8000 },
260
+ "input_schema": { "$ref": "./schemas/workflow_start.json" },
261
+ "examples": [
262
+ {
263
+ "description": "Initialize feature workflow",
264
+ "input": { "title": "Add User Settings Page", "category": "frontend", "priority": "medium", "branch_name": "feature/user-settings" }
265
+ }
266
+ ]
267
+ },
268
+
269
+ "mcp__bobs-mcp__bob_workflow_deploy": {
270
+ "title": "Workflow Deployer",
271
+ "category": "workflow",
272
+ "description": "Commit changes, merge to main, and cleanup worktree",
273
+ "enhancements": ["summary_output"],
274
+ "permissions": { "git_commit": true, "file_write": true },
275
+ "rate_limits": { "rps": 1, "burst": 2 },
276
+ "timeouts": { "ms": 10000 },
277
+ "idempotency": { "key_param": "idempotency_key", "scope": "spec_id+target_branch" },
278
+ "input_schema": { "$ref": "./schemas/workflow_deploy.json" },
279
+ "examples": [
280
+ {
281
+ "description": "Deploy profile feature",
282
+ "input": {
283
+ "spec_id": "SPEC-2025-09-28-user-profile",
284
+ "action_description": "Implemented profile + avatar",
285
+ "target_branch": "main",
286
+ "idempotency_key": "deploy-SPEC-2025-09-28-user-profile-main"
287
+ },
288
+ "output": { "summary": "🚀 deploy | merged to main, cleaned worktree" }
289
+ }
290
+ ]
291
+ },
292
+
293
+ "mcp__bobs-mcp__bob_validate_changes": {
294
+ "title": "Change Validator",
295
+ "category": "validation",
296
+ "description": "Validates diffs against SPEC expectations",
297
+ "permissions": { "file_read": true },
298
+ "rate_limits": { "rps": 2, "burst": 4 },
299
+ "timeouts": { "ms": 6000 },
300
+ "examples": [
301
+ { "description": "Compliance check", "input": { "spec_id": "SPEC-2025-09-28-user-profile" } }
302
+ ]
303
+ },
304
+
305
+ "mcp__bobs-mcp__bob_summarize_implementation": {
306
+ "title": "Implementation Summarizer",
307
+ "category": "validation",
308
+ "description": "Summarizes changes (chokidar)",
309
+ "permissions": { "file_read": true },
310
+ "rate_limits": { "rps": 2, "burst": 4 },
311
+ "timeouts": { "ms": 6000 },
312
+ "examples": [
313
+ { "description": "24h summary", "input": { "spec_id": "SPEC-2025-09-28-user-profile", "lookback_hours": 24 } }
314
+ ]
315
+ },
316
+
317
+ "mcp__bobs-mcp__bob_dashboard_launch": {
318
+ "title": "Dashboard Launcher",
319
+ "category": "dashboard",
320
+ "description": "Opens dashboard on port 4577 to view SPEC files and activity logs",
321
+ "permissions": {},
322
+ "rate_limits": { "rps": 0.5, "burst": 1 },
323
+ "timeouts": { "ms": 4000 },
324
+ "usage_notes": [
325
+ "Dashboard reads SPEC files directly from .bob/specs/",
326
+ "All activity logging is done via bob.manual.update with execution_log or debug_log",
327
+ "No separate update API - dashboard auto-refreshes from file system"
328
+ ]
329
+ },
330
+
331
+ "mcp__bobs-mcp__bob_worktree_debug": {
332
+ "title": "Worktree Debug Tool",
333
+ "category": "worktree",
334
+ "description": "Advanced worktree maintenance (repair, cleanup, validate, status)",
335
+ "permissions": { "file_read": true, "file_write": true, "git_commit": true },
336
+ "rate_limits": { "rps": 1, "burst": 2 },
337
+ "timeouts": { "ms": 6000 },
338
+ "input_schema": {
339
+ "action": "enum(repair,cleanup,validate,status)",
340
+ "spec_id": "string?",
341
+ "max_age_days": "number?"
342
+ },
343
+ "examples": [
344
+ {
345
+ "description": "Check all worktrees status",
346
+ "input": { "action": "status" }
347
+ },
348
+ {
349
+ "description": "Cleanup stale worktrees older than 7 days",
350
+ "input": { "action": "cleanup", "max_age_days": 7 }
351
+ }
352
+ ]
353
+ },
354
+
355
+ "mcp__bobs-mcp__bob_debug": {
356
+ "title": "System Debug Tool",
357
+ "category": "system",
358
+ "description": "Internal state inspection and troubleshooting",
359
+ "permissions": { "file_read": true },
360
+ "rate_limits": { "rps": 1, "burst": 2 },
361
+ "timeouts": { "ms": 3000 }
362
+ },
363
+
364
+ "mcp__bobs-mcp__bob_manual_get": {
365
+ "title": "Manual Getter",
366
+ "category": "manual",
367
+ "description": "Retrieves SPEC manual details and logs",
368
+ "permissions": { "file_read": true },
369
+ "rate_limits": { "rps": 4, "burst": 8 },
370
+ "timeouts": { "ms": 3000 }
371
+ },
372
+
373
+ "mcp__bobs-mcp__bob_manual_list": {
374
+ "title": "Manual Lister",
375
+ "category": "manual",
376
+ "description": "Lists all project SPECs with status",
377
+ "permissions": { "file_read": true },
378
+ "rate_limits": { "rps": 2, "burst": 4 },
379
+ "timeouts": { "ms": 3000 }
380
+ },
381
+
382
+ "mcp__bobs-mcp__bob_approval_request": {
383
+ "title": "Approval Request",
384
+ "category": "approval",
385
+ "description": "Create user approval request for spec review, implementation, bugfix, or completion",
386
+ "permissions": { "file_write": true },
387
+ "rate_limits": { "rps": 2, "burst": 4 },
388
+ "timeouts": { "ms": 3000 },
389
+ "input_schema": {
390
+ "spec_id": "string (REQUIRED) - the specification ID",
391
+ "approval_type": "enum(spec_approval,implementation_approval,bugfix_approval,review_approval,completion_confirmation) (REQUIRED)",
392
+ "message": "string (REQUIRED) - approval message to display to user",
393
+ "context": "object? - additional context for the approval"
394
+ },
395
+ "examples": [
396
+ {
397
+ "description": "Request spec approval from architect",
398
+ "input": {
399
+ "spec_id": "SPEC-2025-09-30-user-profile",
400
+ "approval_type": "spec_approval",
401
+ "message": "Comprehensive manual completed. Please review the planning details and approve to proceed with implementation."
402
+ }
403
+ },
404
+ {
405
+ "description": "Request implementation approval from engineer",
406
+ "input": {
407
+ "spec_id": "SPEC-2025-09-30-user-profile",
408
+ "approval_type": "implementation_approval",
409
+ "message": "Implementation completed successfully! Please test the new functionality and confirm if you're satisfied with the results."
410
+ }
411
+ }
412
+ ]
413
+ },
414
+
415
+ "mcp__bobs-mcp__bob_approval_status": {
416
+ "title": "Approval Status",
417
+ "category": "approval",
418
+ "description": "Check status of pending approval requests",
419
+ "permissions": { "file_read": true },
420
+ "rate_limits": { "rps": 4, "burst": 8 },
421
+ "timeouts": { "ms": 2000 },
422
+ "input_schema": {
423
+ "spec_id": "string (REQUIRED) - the specification ID",
424
+ "approval_type": "enum(spec_approval,implementation_approval,bugfix_approval,review_approval,completion_confirmation)?"
425
+ },
426
+ "examples": [
427
+ {
428
+ "description": "Check spec approval status",
429
+ "input": {
430
+ "spec_id": "SPEC-2025-09-30-user-profile",
431
+ "approval_type": "spec_approval"
432
+ }
433
+ }
434
+ ]
435
+ },
436
+
437
+ "mcp__bobs-mcp__bob_approval_respond": {
438
+ "title": "Approval Response",
439
+ "category": "approval",
440
+ "description": "Process user approval response (approve/reject)",
441
+ "permissions": { "file_write": true },
442
+ "rate_limits": { "rps": 2, "burst": 4 },
443
+ "timeouts": { "ms": 3000 },
444
+ "input_schema": {
445
+ "spec_id": "string (REQUIRED) - the specification ID",
446
+ "approval_type": "enum(spec_approval,implementation_approval,bugfix_approval,review_approval,completion_confirmation) (REQUIRED)",
447
+ "response": "enum(approved,rejected) (REQUIRED)",
448
+ "feedback": "string? - optional feedback from user"
449
+ },
450
+ "examples": [
451
+ {
452
+ "description": "User approves specification",
453
+ "input": {
454
+ "spec_id": "SPEC-2025-09-30-user-profile",
455
+ "approval_type": "spec_approval",
456
+ "response": "approved"
457
+ }
458
+ },
459
+ {
460
+ "description": "User rejects with feedback",
461
+ "input": {
462
+ "spec_id": "SPEC-2025-09-30-user-profile",
463
+ "approval_type": "spec_approval",
464
+ "response": "rejected",
465
+ "feedback": "Need to add more details about security considerations"
466
+ }
467
+ }
468
+ ]
469
+ }
470
+ }
471
+ }