@girardmedia/bootspring 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +255 -0
  3. package/agents/README.md +93 -0
  4. package/agents/api-expert/context.md +416 -0
  5. package/agents/architecture-expert/context.md +454 -0
  6. package/agents/backend-expert/context.md +483 -0
  7. package/agents/code-review-expert/context.md +365 -0
  8. package/agents/database-expert/context.md +250 -0
  9. package/agents/devops-expert/context.md +446 -0
  10. package/agents/frontend-expert/context.md +364 -0
  11. package/agents/index.js +140 -0
  12. package/agents/performance-expert/context.md +377 -0
  13. package/agents/security-expert/context.md +343 -0
  14. package/agents/testing-expert/context.md +414 -0
  15. package/agents/ui-ux-expert/context.md +448 -0
  16. package/agents/vercel-expert/context.md +426 -0
  17. package/bin/bootspring.js +310 -0
  18. package/cli/agent.js +337 -0
  19. package/cli/context.js +194 -0
  20. package/cli/dashboard.js +150 -0
  21. package/cli/generate.js +294 -0
  22. package/cli/init.js +410 -0
  23. package/cli/loop.js +421 -0
  24. package/cli/mcp.js +241 -0
  25. package/cli/memory.js +303 -0
  26. package/cli/orchestrator.js +400 -0
  27. package/cli/plugin.js +451 -0
  28. package/cli/quality.js +332 -0
  29. package/cli/skill.js +369 -0
  30. package/cli/task.js +628 -0
  31. package/cli/telemetry.js +114 -0
  32. package/cli/todo.js +614 -0
  33. package/cli/update.js +312 -0
  34. package/core/config.js +245 -0
  35. package/core/context.js +329 -0
  36. package/core/entitlements.js +209 -0
  37. package/core/index.js +43 -0
  38. package/core/policies.js +68 -0
  39. package/core/telemetry.js +247 -0
  40. package/core/utils.js +380 -0
  41. package/dashboard/server.js +818 -0
  42. package/docs/integrations/claude-code.md +42 -0
  43. package/docs/integrations/codex.md +42 -0
  44. package/docs/mcp-api-platform.md +102 -0
  45. package/generators/generate.js +598 -0
  46. package/generators/index.js +18 -0
  47. package/hooks/context-detector.js +177 -0
  48. package/hooks/index.js +35 -0
  49. package/hooks/prompt-enhancer.js +289 -0
  50. package/intelligence/git-memory.js +551 -0
  51. package/intelligence/index.js +59 -0
  52. package/intelligence/orchestrator.js +964 -0
  53. package/intelligence/prd.js +447 -0
  54. package/intelligence/recommendation-weights.json +18 -0
  55. package/intelligence/recommendations.js +234 -0
  56. package/mcp/capabilities.js +71 -0
  57. package/mcp/contracts/mcp-contract.v1.json +497 -0
  58. package/mcp/registry.js +213 -0
  59. package/mcp/response-formatter.js +462 -0
  60. package/mcp/server.js +99 -0
  61. package/mcp/tools/agent-tool.js +137 -0
  62. package/mcp/tools/capabilities-tool.js +54 -0
  63. package/mcp/tools/context-tool.js +49 -0
  64. package/mcp/tools/dashboard-tool.js +58 -0
  65. package/mcp/tools/generate-tool.js +46 -0
  66. package/mcp/tools/loop-tool.js +134 -0
  67. package/mcp/tools/memory-tool.js +180 -0
  68. package/mcp/tools/orchestrator-tool.js +232 -0
  69. package/mcp/tools/plugin-tool.js +76 -0
  70. package/mcp/tools/quality-tool.js +47 -0
  71. package/mcp/tools/skill-tool.js +233 -0
  72. package/mcp/tools/telemetry-tool.js +95 -0
  73. package/mcp/tools/todo-tool.js +133 -0
  74. package/package.json +98 -0
  75. package/plugins/index.js +141 -0
  76. package/quality/index.js +380 -0
  77. package/quality/lint-budgets.json +19 -0
  78. package/skills/index.js +787 -0
  79. package/skills/patterns/README.md +163 -0
  80. package/skills/patterns/api/route-handler.md +217 -0
  81. package/skills/patterns/api/server-action.md +249 -0
  82. package/skills/patterns/auth/clerk.md +132 -0
  83. package/skills/patterns/database/prisma.md +180 -0
  84. package/skills/patterns/payments/stripe.md +272 -0
  85. package/skills/patterns/security/validation.md +268 -0
  86. package/skills/patterns/testing/vitest.md +307 -0
  87. package/templates/bootspring.config.js +83 -0
  88. package/templates/mcp.json +9 -0
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Bootspring MCP Capabilities
3
+ * Capability manifest for assistant clients (Claude Code, Codex, etc.).
4
+ */
5
+
6
+ const entitlements = require('../core/entitlements');
7
+ const policies = require('../core/policies');
8
+ const intelligence = require('../intelligence');
9
+
10
+ function buildCapabilities(options = {}) {
11
+ const access = entitlements.resolveWorkflowAccessContext(options);
12
+ const policy = policies.getPolicyProfile(access.policyProfile, options);
13
+ const workflows = intelligence.listWorkflows();
14
+ const filtered = entitlements.filterAccessibleWorkflows(workflows, options);
15
+ const premiumLocked = filtered.denied.length;
16
+
17
+ const packs = filtered.allowed
18
+ .filter(workflow => (workflow.tier || 'free') !== 'free')
19
+ .map(workflow => ({
20
+ key: workflow.key,
21
+ name: workflow.name,
22
+ pack: workflow.pack || null,
23
+ outcomes: workflow.outcomes || [],
24
+ completionSignals: workflow.completionSignals || []
25
+ }));
26
+
27
+ return {
28
+ platform: {
29
+ name: 'bootspring',
30
+ protocol: 'mcp',
31
+ version: '1.1.0'
32
+ },
33
+ access: {
34
+ mode: access.mode,
35
+ tier: access.tier,
36
+ entitled: access.entitled,
37
+ policyProfile: access.policyProfile
38
+ },
39
+ policy: {
40
+ id: policy.id,
41
+ allowExternalSkills: policy.allowExternalSkills,
42
+ blockedWorkflows: policy.blockedWorkflows
43
+ },
44
+ capabilities: {
45
+ skills: {
46
+ builtIn: true,
47
+ externalCatalog: access.mode !== 'server' || access.entitled || ['pro', 'team', 'enterprise'].includes(access.tier)
48
+ },
49
+ workflows: {
50
+ availableCount: filtered.allowed.length,
51
+ premiumLocked,
52
+ packs
53
+ },
54
+ telemetry: {
55
+ events: [
56
+ 'workflow_started',
57
+ 'workflow_step_advanced',
58
+ 'workflow_checkpoint_completed',
59
+ 'pack_signal_checkpoint',
60
+ 'workflow_completed',
61
+ 'premium_prompted',
62
+ 'premium_unlocked'
63
+ ]
64
+ }
65
+ }
66
+ };
67
+ }
68
+
69
+ module.exports = {
70
+ buildCapabilities
71
+ };
@@ -0,0 +1,497 @@
1
+ {
2
+ "contractVersion": "v1",
3
+ "packageName": "@girardmedia/bootspring",
4
+ "packageVersion": "1.1.0",
5
+ "tools": [
6
+ {
7
+ "name": "bootspring_context",
8
+ "description": "Show or validate the current project context. Use \"show\" to see project summary, \"validate\" to check project health.",
9
+ "inputSchema": {
10
+ "type": "object",
11
+ "properties": {
12
+ "action": {
13
+ "type": "string",
14
+ "enum": [
15
+ "show",
16
+ "validate",
17
+ "summary"
18
+ ],
19
+ "description": "Action to perform: show (default), validate, or summary"
20
+ }
21
+ },
22
+ "required": []
23
+ }
24
+ },
25
+ {
26
+ "name": "bootspring_agent",
27
+ "description": "Work with specialized AI agents. List available agents, show details, or invoke for specialized expertise.",
28
+ "inputSchema": {
29
+ "type": "object",
30
+ "properties": {
31
+ "action": {
32
+ "type": "string",
33
+ "enum": [
34
+ "list",
35
+ "show",
36
+ "invoke",
37
+ "search"
38
+ ],
39
+ "description": "Action: list agents, show details, invoke agent, or search"
40
+ },
41
+ "name": {
42
+ "type": "string",
43
+ "description": "Agent name (e.g., database-expert, security-expert)"
44
+ },
45
+ "topic": {
46
+ "type": "string",
47
+ "description": "Topic or question for the agent (when invoking)"
48
+ },
49
+ "query": {
50
+ "type": "string",
51
+ "description": "Search query (when searching)"
52
+ },
53
+ "includeExternal": {
54
+ "type": "boolean",
55
+ "description": "Include external skills catalog (skills/external) in list/search/show"
56
+ },
57
+ "limit": {
58
+ "type": "number",
59
+ "description": "Max number of results for list/search when includeExternal is true"
60
+ }
61
+ },
62
+ "required": [
63
+ "action"
64
+ ]
65
+ }
66
+ },
67
+ {
68
+ "name": "bootspring_todo",
69
+ "description": "Manage project todo items. Add, list, complete, or remove tasks.",
70
+ "inputSchema": {
71
+ "type": "object",
72
+ "properties": {
73
+ "action": {
74
+ "type": "string",
75
+ "enum": [
76
+ "list",
77
+ "add",
78
+ "done",
79
+ "remove",
80
+ "clear"
81
+ ],
82
+ "description": "Action: list, add, done (complete), remove, or clear"
83
+ },
84
+ "text": {
85
+ "type": "string",
86
+ "description": "Todo text (when adding)"
87
+ },
88
+ "index": {
89
+ "type": "number",
90
+ "description": "Todo index number (when completing or removing)"
91
+ }
92
+ },
93
+ "required": [
94
+ "action"
95
+ ]
96
+ }
97
+ },
98
+ {
99
+ "name": "bootspring_generate",
100
+ "description": "Regenerate the CLAUDE.md context file with current project state.",
101
+ "inputSchema": {
102
+ "type": "object",
103
+ "properties": {
104
+ "full": {
105
+ "type": "boolean",
106
+ "description": "Full regeneration including .mcp.json and todo.md"
107
+ }
108
+ },
109
+ "required": []
110
+ }
111
+ },
112
+ {
113
+ "name": "bootspring_skill",
114
+ "description": "Search and retrieve code patterns/skills. Find battle-tested implementations.",
115
+ "inputSchema": {
116
+ "type": "object",
117
+ "properties": {
118
+ "action": {
119
+ "type": "string",
120
+ "enum": [
121
+ "list",
122
+ "show",
123
+ "search",
124
+ "sync"
125
+ ],
126
+ "description": "Action: list all skills, show a skill, search, or sync remote external catalog"
127
+ },
128
+ "name": {
129
+ "type": "string",
130
+ "description": "Skill name (e.g., auth/clerk, database/prisma)"
131
+ },
132
+ "query": {
133
+ "type": "string",
134
+ "description": "Search query"
135
+ },
136
+ "includeExternal": {
137
+ "type": "boolean",
138
+ "description": "Include external skills from skills/external"
139
+ },
140
+ "limit": {
141
+ "type": "number",
142
+ "description": "Limit list/search result count (default: 50)"
143
+ },
144
+ "summary": {
145
+ "type": "boolean",
146
+ "description": "For action=show, return concise summary instead of full content"
147
+ },
148
+ "sections": {
149
+ "type": "string",
150
+ "description": "For action=show, comma-separated section keywords to include"
151
+ },
152
+ "maxChars": {
153
+ "type": "number",
154
+ "description": "For action=show, cap returned content length"
155
+ },
156
+ "mode": {
157
+ "type": "string",
158
+ "enum": [
159
+ "local",
160
+ "server"
161
+ ],
162
+ "description": "Optional entitlement mode override (default: local)"
163
+ },
164
+ "entitled": {
165
+ "type": "boolean",
166
+ "description": "Optional entitlement override for external skills"
167
+ },
168
+ "tier": {
169
+ "type": "string",
170
+ "description": "Optional tier override (free, pro, team, enterprise)"
171
+ },
172
+ "manifestUrl": {
173
+ "type": "string",
174
+ "description": "For action=sync, remote manifest URL"
175
+ },
176
+ "contentBaseUrl": {
177
+ "type": "string",
178
+ "description": "For action=sync, fallback base URL for SKILL.md files"
179
+ },
180
+ "token": {
181
+ "type": "string",
182
+ "description": "For action=sync, optional bearer token"
183
+ },
184
+ "cacheDir": {
185
+ "type": "string",
186
+ "description": "For action=sync, local cache directory override"
187
+ },
188
+ "manifestPublicKey": {
189
+ "type": "string",
190
+ "description": "For action=sync, PEM public key for manifest signature verification"
191
+ },
192
+ "requireManifestSignature": {
193
+ "type": "boolean",
194
+ "description": "For action=sync, require signature validation"
195
+ }
196
+ },
197
+ "required": [
198
+ "action"
199
+ ]
200
+ }
201
+ },
202
+ {
203
+ "name": "bootspring_quality",
204
+ "description": "Run quality gates to check code quality and security.",
205
+ "inputSchema": {
206
+ "type": "object",
207
+ "properties": {
208
+ "gate": {
209
+ "type": "string",
210
+ "enum": [
211
+ "pre-commit",
212
+ "pre-push",
213
+ "pre-deploy"
214
+ ],
215
+ "description": "Quality gate to run"
216
+ }
217
+ },
218
+ "required": [
219
+ "gate"
220
+ ]
221
+ }
222
+ },
223
+ {
224
+ "name": "bootspring_dashboard",
225
+ "description": "Get dashboard status or start URL.",
226
+ "inputSchema": {
227
+ "type": "object",
228
+ "properties": {
229
+ "action": {
230
+ "type": "string",
231
+ "enum": [
232
+ "status",
233
+ "url"
234
+ ],
235
+ "description": "Action: status or url"
236
+ }
237
+ },
238
+ "required": []
239
+ }
240
+ },
241
+ {
242
+ "name": "bootspring_plugin",
243
+ "description": "Manage plugins. List, enable, disable, or show plugin details.",
244
+ "inputSchema": {
245
+ "type": "object",
246
+ "properties": {
247
+ "action": {
248
+ "type": "string",
249
+ "enum": [
250
+ "list",
251
+ "show",
252
+ "enable",
253
+ "disable"
254
+ ],
255
+ "description": "Action: list, show, enable, or disable"
256
+ },
257
+ "name": {
258
+ "type": "string",
259
+ "description": "Plugin name (e.g., auth, payments, database)"
260
+ }
261
+ },
262
+ "required": [
263
+ "action"
264
+ ]
265
+ }
266
+ },
267
+ {
268
+ "name": "bootspring_capabilities",
269
+ "description": "Return capability manifest for assistant clients (tools, premium access, workflow packs, telemetry events).",
270
+ "inputSchema": {
271
+ "type": "object",
272
+ "properties": {
273
+ "mode": {
274
+ "type": "string",
275
+ "enum": [
276
+ "local",
277
+ "server"
278
+ ],
279
+ "description": "Optional access mode override"
280
+ },
281
+ "tier": {
282
+ "type": "string",
283
+ "description": "Optional tier override: free, pro, team, enterprise"
284
+ },
285
+ "entitled": {
286
+ "type": "boolean",
287
+ "description": "Optional entitlement override"
288
+ },
289
+ "client": {
290
+ "type": "string",
291
+ "description": "Optional client label (e.g., claude-code, codex)"
292
+ }
293
+ },
294
+ "required": []
295
+ }
296
+ },
297
+ {
298
+ "name": "bootspring_telemetry",
299
+ "description": "Inspect and upload Bootspring telemetry events.",
300
+ "inputSchema": {
301
+ "type": "object",
302
+ "properties": {
303
+ "action": {
304
+ "type": "string",
305
+ "enum": [
306
+ "status",
307
+ "list",
308
+ "upload",
309
+ "clear"
310
+ ],
311
+ "description": "Action: status, list, upload, or clear"
312
+ },
313
+ "event": {
314
+ "type": "string",
315
+ "description": "Optional event filter"
316
+ },
317
+ "limit": {
318
+ "type": "number",
319
+ "description": "Optional event limit for list/upload"
320
+ },
321
+ "endpoint": {
322
+ "type": "string",
323
+ "description": "Optional upload endpoint override"
324
+ },
325
+ "token": {
326
+ "type": "string",
327
+ "description": "Optional upload bearer token override"
328
+ },
329
+ "clearOnSuccess": {
330
+ "type": "boolean",
331
+ "description": "For action=upload, clear local events on success"
332
+ }
333
+ },
334
+ "required": [
335
+ "action"
336
+ ]
337
+ }
338
+ },
339
+ {
340
+ "name": "bootspring_orchestrator",
341
+ "description": "Intelligent agent coordination. Analyze context, suggest agents, manage workflows.",
342
+ "inputSchema": {
343
+ "type": "object",
344
+ "properties": {
345
+ "action": {
346
+ "type": "string",
347
+ "enum": [
348
+ "analyze",
349
+ "suggest",
350
+ "recommend",
351
+ "workflows",
352
+ "workflow",
353
+ "start",
354
+ "next",
355
+ "checkpoint",
356
+ "status"
357
+ ],
358
+ "description": "Action: analyze context, suggest agents, recommend workflows/skills, list workflows, show workflow, start/advance workflow, or status"
359
+ },
360
+ "context": {
361
+ "type": "string",
362
+ "description": "Context text to analyze (for analyze/suggest actions)"
363
+ },
364
+ "workflow": {
365
+ "type": "string",
366
+ "description": "Workflow name (for workflow action)"
367
+ },
368
+ "signal": {
369
+ "type": "string",
370
+ "description": "Completion signal ref for action=checkpoint (exact text, partial text, or 1-based index)"
371
+ },
372
+ "limit": {
373
+ "type": "number",
374
+ "description": "Max recommendations to return for action=recommend (default: 5)"
375
+ },
376
+ "mode": {
377
+ "type": "string",
378
+ "enum": [
379
+ "local",
380
+ "server"
381
+ ],
382
+ "description": "Optional entitlement mode override"
383
+ },
384
+ "entitled": {
385
+ "type": "boolean",
386
+ "description": "Optional entitlement override for premium workflows"
387
+ },
388
+ "tier": {
389
+ "type": "string",
390
+ "description": "Optional tier override: free, pro, team, enterprise"
391
+ }
392
+ },
393
+ "required": [
394
+ "action"
395
+ ]
396
+ }
397
+ },
398
+ {
399
+ "name": "bootspring_loop",
400
+ "description": "Autonomous task loop management. Create PRDs, check status, manage iterative task execution.",
401
+ "inputSchema": {
402
+ "type": "object",
403
+ "properties": {
404
+ "action": {
405
+ "type": "string",
406
+ "enum": [
407
+ "status",
408
+ "next",
409
+ "complete",
410
+ "create",
411
+ "progress"
412
+ ],
413
+ "description": "Action: status (PRD overview), next (get next story), complete (mark done), create (new PRD), progress (summary)"
414
+ },
415
+ "name": {
416
+ "type": "string",
417
+ "description": "PRD or story name (for create/complete actions)"
418
+ },
419
+ "storyId": {
420
+ "type": "string",
421
+ "description": "Story ID to mark complete"
422
+ },
423
+ "prdPath": {
424
+ "type": "string",
425
+ "description": "Path to prd.json (default: tasks/prd.json)"
426
+ }
427
+ },
428
+ "required": [
429
+ "action"
430
+ ]
431
+ }
432
+ },
433
+ {
434
+ "name": "bootspring_memory",
435
+ "description": "Access git-based project memory. Extract learnings, search history, get file-specific context.",
436
+ "inputSchema": {
437
+ "type": "object",
438
+ "properties": {
439
+ "action": {
440
+ "type": "string",
441
+ "enum": [
442
+ "summary",
443
+ "search",
444
+ "files",
445
+ "stats"
446
+ ],
447
+ "description": "Action: summary (categorized learnings), search (by keyword), files (for specific files), stats (repo overview)"
448
+ },
449
+ "query": {
450
+ "type": "string",
451
+ "description": "Search query (for search action)"
452
+ },
453
+ "files": {
454
+ "type": "array",
455
+ "items": {
456
+ "type": "string"
457
+ },
458
+ "description": "File paths to get learnings for (for files action)"
459
+ },
460
+ "limit": {
461
+ "type": "number",
462
+ "description": "Max learnings to return (default: 20)"
463
+ }
464
+ },
465
+ "required": [
466
+ "action"
467
+ ]
468
+ }
469
+ }
470
+ ],
471
+ "resources": [
472
+ {
473
+ "uri": "bootspring://context/project",
474
+ "name": "Project Context",
475
+ "description": "Current project context and configuration",
476
+ "mimeType": "application/json"
477
+ },
478
+ {
479
+ "uri": "bootspring://context/claude.md",
480
+ "name": "CLAUDE.md Content",
481
+ "description": "Generated AI context file",
482
+ "mimeType": "text/markdown"
483
+ },
484
+ {
485
+ "uri": "bootspring://context/todo.md",
486
+ "name": "Todo List",
487
+ "description": "Project todo list",
488
+ "mimeType": "text/markdown"
489
+ },
490
+ {
491
+ "uri": "bootspring://agents/list",
492
+ "name": "Agent List",
493
+ "description": "Available specialized agents",
494
+ "mimeType": "application/json"
495
+ }
496
+ ]
497
+ }