aios-core 2.2.2 β†’ 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/.aios-core/.session/current-session.json +14 -14
  2. package/.aios-core/cli/commands/migrate/validate.js +1 -1
  3. package/.aios-core/core/docs/session-update-pattern.md +17 -10
  4. package/.aios-core/core/elicitation/elicitation-engine.js +11 -6
  5. package/.aios-core/core/elicitation/session-manager.js +2 -1
  6. package/.aios-core/core/registry/registry-schema.json +166 -166
  7. package/.aios-core/core/registry/service-registry.json +6585 -6585
  8. package/.aios-core/core-config.yaml +66 -1
  9. package/.aios-core/data/agent-config-requirements.yaml +5 -5
  10. package/.aios-core/development/agents/devops.md +12 -0
  11. package/.aios-core/development/scripts/squad/README.md +112 -0
  12. package/.aios-core/development/scripts/squad/index.js +41 -0
  13. package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
  14. package/.aios-core/development/scripts/squad/squad-validator.js +685 -0
  15. package/.aios-core/development/tasks/add-mcp.md +11 -5
  16. package/.aios-core/development/tasks/github-devops-github-pr-automation.md +240 -3
  17. package/.aios-core/development/tasks/search-mcp.md +309 -0
  18. package/.aios-core/development/tasks/setup-mcp-docker.md +11 -8
  19. package/.aios-core/development/tasks/squad-creator-validate.md +151 -0
  20. package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +3 -3
  21. package/.aios-core/index.d.ts +7 -7
  22. package/.aios-core/index.js +1 -1
  23. package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
  24. package/.aios-core/infrastructure/scripts/component-generator.js +1 -1
  25. package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
  26. package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +41 -0
  27. package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
  28. package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
  29. package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
  30. package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
  31. package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
  32. package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
  33. package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
  34. package/.aios-core/infrastructure/tests/utilities-audit-results.json +500 -500
  35. package/.aios-core/infrastructure/tools/README.md +1 -1
  36. package/.aios-core/install-manifest.yaml +4 -1
  37. package/.aios-core/manifests/schema/manifest-schema.json +190 -190
  38. package/.aios-core/manifests/workers.csv +203 -203
  39. package/.aios-core/package.json +102 -102
  40. package/.aios-core/product/templates/activation-instructions-template.md +7 -7
  41. package/.aios-core/product/templates/adr.hbs +125 -125
  42. package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
  43. package/.aios-core/product/templates/dbdr.hbs +241 -241
  44. package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
  45. package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
  46. package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
  47. package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
  48. package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
  49. package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
  50. package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
  51. package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
  52. package/.aios-core/product/templates/epic.hbs +212 -212
  53. package/.aios-core/product/templates/eslintrc-security.json +32 -32
  54. package/.aios-core/product/templates/github-actions-cd.yml +212 -212
  55. package/.aios-core/product/templates/github-actions-ci.yml +172 -172
  56. package/.aios-core/product/templates/pmdr.hbs +186 -186
  57. package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
  58. package/.aios-core/product/templates/prd.hbs +201 -201
  59. package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
  60. package/.aios-core/product/templates/story.hbs +263 -263
  61. package/.aios-core/product/templates/task.hbs +170 -170
  62. package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
  63. package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
  64. package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
  65. package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
  66. package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
  67. package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
  68. package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
  69. package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
  70. package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
  71. package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
  72. package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
  73. package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
  74. package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
  75. package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
  76. package/.aios-core/product/templates/tmpl-view.sql +177 -177
  77. package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
  78. package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
  79. package/.aios-core/schemas/squad-schema.json +185 -0
  80. package/.aios-core/scripts/README.md +90 -322
  81. package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
  82. package/.claude/rules/mcp-usage.md +116 -100
  83. package/LICENSE +48 -48
  84. package/README.md +3 -4
  85. package/bin/aios.js +2 -1
  86. package/package.json +1 -3
  87. package/packages/installer/package.json +39 -39
  88. package/templates/squad/LICENSE +21 -21
  89. package/templates/squad/README.md +37 -37
  90. package/templates/squad/agents/example-agent.yaml +36 -36
  91. package/templates/squad/package.json +19 -19
  92. package/templates/squad/squad.yaml +25 -25
  93. package/templates/squad/tasks/example-task.yaml +46 -46
  94. package/templates/squad/templates/example-template.md +24 -24
  95. package/templates/squad/tests/example-agent.test.js +53 -53
  96. package/templates/squad/workflows/example-workflow.yaml +54 -54
  97. package/tools/diagnose-npx-issue.ps1 +96 -96
  98. package/tools/quick-diagnose.cmd +85 -85
  99. package/tools/quick-diagnose.ps1 +117 -117
  100. package/.aios-core/core/data/agent-config-requirements.yaml +0 -368
  101. package/.aios-core/core/data/aios-kb.md +0 -924
  102. package/.aios-core/core/data/workflow-patterns.yaml +0 -267
  103. package/.aios-core/product/templates/1mcp-config.yaml +0 -225
  104. package/.aios-core/scripts/context-detector.js +0 -226
  105. package/.aios-core/scripts/elicitation-engine.js +0 -385
  106. package/.aios-core/scripts/elicitation-session-manager.js +0 -300
  107. package/.claude/CLAUDE.md +0 -221
@@ -262,22 +262,209 @@ function extractStoryInfo(storyPath) {
262
262
  }
263
263
  ```
264
264
 
265
- ### Step 4: Generate PR Title
265
+ ### Step 4: Generate PR Title (Configurable Format)
266
+
267
+ > **Configuration-Driven:** PR title format is controlled by `core-config.yaml` β†’ `github.pr.title_format`
268
+ > This allows each project to choose the format that matches their workflow.
266
269
 
267
270
  ```javascript
271
+ const yaml = require('js-yaml');
272
+ const fs = require('fs');
273
+ const path = require('path');
274
+
275
+ /**
276
+ * Load PR configuration from core-config.yaml
277
+ * @returns {Object} PR configuration with defaults
278
+ */
279
+ function loadPRConfig() {
280
+ const configPath = path.join(process.cwd(), '.aios-core', 'core-config.yaml');
281
+
282
+ // Default configuration (for projects without core-config)
283
+ const defaults = {
284
+ title_format: 'story-first', // Safe default for most projects
285
+ include_story_id: true,
286
+ conventional_commits: {
287
+ enabled: false,
288
+ branch_type_map: {
289
+ 'feature/': 'feat',
290
+ 'feat/': 'feat',
291
+ 'fix/': 'fix',
292
+ 'bugfix/': 'fix',
293
+ 'hotfix/': 'fix',
294
+ 'docs/': 'docs',
295
+ 'chore/': 'chore',
296
+ 'refactor/': 'refactor',
297
+ 'test/': 'test',
298
+ 'perf/': 'perf',
299
+ 'ci/': 'ci',
300
+ 'style/': 'style',
301
+ 'build/': 'build'
302
+ },
303
+ default_type: 'feat'
304
+ }
305
+ };
306
+
307
+ try {
308
+ if (fs.existsSync(configPath)) {
309
+ const config = yaml.load(fs.readFileSync(configPath, 'utf8'));
310
+ return { ...defaults, ...config?.github?.pr };
311
+ }
312
+ } catch (error) {
313
+ console.warn('Could not load core-config.yaml, using defaults');
314
+ }
315
+
316
+ return defaults;
317
+ }
318
+
319
+ /**
320
+ * Generate PR title based on project configuration.
321
+ *
322
+ * Supported formats (configured in core-config.yaml β†’ github.pr.title_format):
323
+ *
324
+ * 1. "conventional" - Conventional Commits format (for semantic-release)
325
+ * Example: "feat(auth): implement OAuth login [Story 6.17]"
326
+ *
327
+ * 2. "story-first" - Story ID first (legacy/simple projects)
328
+ * Example: "[Story 6.17] Implement OAuth Login"
329
+ *
330
+ * 3. "branch-based" - Branch name converted to title
331
+ * Example: "Feature User Auth"
332
+ *
333
+ * @param {string} branchName - Current git branch name
334
+ * @param {Object} storyInfo - Story information (id, title)
335
+ * @returns {string} Formatted PR title
336
+ */
268
337
  function generatePRTitle(branchName, storyInfo) {
338
+ const config = loadPRConfig();
339
+ const format = config.title_format || 'story-first';
340
+
341
+ switch (format) {
342
+ case 'conventional':
343
+ return generateConventionalTitle(branchName, storyInfo, config);
344
+ case 'story-first':
345
+ return generateStoryFirstTitle(branchName, storyInfo, config);
346
+ case 'branch-based':
347
+ return generateBranchBasedTitle(branchName, storyInfo, config);
348
+ default:
349
+ return generateStoryFirstTitle(branchName, storyInfo, config);
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Format: {type}({scope}): {description} [Story {id}]
355
+ * Used for: Projects with semantic-release automation
356
+ */
357
+ function generateConventionalTitle(branchName, storyInfo, config) {
358
+ const typeMap = config.conventional_commits?.branch_type_map || {};
359
+ const defaultType = config.conventional_commits?.default_type || 'feat';
360
+
361
+ // Detect commit type from branch prefix
362
+ let type = defaultType;
363
+ for (const [prefix, commitType] of Object.entries(typeMap)) {
364
+ if (branchName.startsWith(prefix)) {
365
+ type = commitType;
366
+ break;
367
+ }
368
+ }
369
+
370
+ // Extract scope from branch name (e.g., feat/auth/login -> scope=auth)
371
+ const scopeMatch = branchName.match(/^[a-z-]+\/([a-z-]+)\//);
372
+ const scope = scopeMatch ? scopeMatch[1] : null;
373
+ const scopeStr = scope ? `(${scope})` : '';
374
+
375
+ // Generate description
376
+ if (storyInfo && storyInfo.id && storyInfo.title) {
377
+ let cleanTitle = storyInfo.title
378
+ .replace(/^Story\s*\d+\.\d+[:\s-]*/i, '')
379
+ .trim();
380
+ cleanTitle = cleanTitle.charAt(0).toLowerCase() + cleanTitle.slice(1);
381
+
382
+ const storyRef = config.include_story_id ? ` [Story ${storyInfo.id}]` : '';
383
+ return `${type}${scopeStr}: ${cleanTitle}${storyRef}`;
384
+ }
385
+
386
+ // Fallback: convert branch name to description
387
+ const description = branchName
388
+ .replace(/^(feature|feat|fix|bugfix|hotfix|docs|chore|refactor|test|perf|ci|style|build)\//, '')
389
+ .replace(/^[a-z-]+\//, '')
390
+ .replace(/-/g, ' ')
391
+ .toLowerCase()
392
+ .trim();
393
+
394
+ return `${type}${scopeStr}: ${description}`;
395
+ }
396
+
397
+ /**
398
+ * Format: [Story {id}] {Title}
399
+ * Used for: Simple projects, legacy workflows, non-NPM projects
400
+ */
401
+ function generateStoryFirstTitle(branchName, storyInfo, config) {
269
402
  if (storyInfo && storyInfo.id && storyInfo.title) {
270
403
  return `[Story ${storyInfo.id}] ${storyInfo.title}`;
271
404
  }
272
405
 
273
406
  // Fallback: convert branch name to title
274
407
  return branchName
275
- .replace(/^feature\//, '')
408
+ .replace(/^(feature|feat|fix|bugfix|hotfix|docs|chore|refactor|test|perf|ci|style|build)\//, '')
276
409
  .replace(/-/g, ' ')
277
410
  .replace(/\b\w/g, c => c.toUpperCase());
278
411
  }
412
+
413
+ /**
414
+ * Format: {Branch Name As Title}
415
+ * Used for: Minimal projects, quick iterations
416
+ */
417
+ function generateBranchBasedTitle(branchName, storyInfo, config) {
418
+ const title = branchName
419
+ .replace(/^(feature|feat|fix|bugfix|hotfix|docs|chore|refactor|test|perf|ci|style|build)\//, '')
420
+ .replace(/-/g, ' ')
421
+ .replace(/\b\w/g, c => c.toUpperCase());
422
+
423
+ if (config.include_story_id && storyInfo?.id) {
424
+ return `${title} [Story ${storyInfo.id}]`;
425
+ }
426
+
427
+ return title;
428
+ }
429
+ ```
430
+
431
+ ## Configuration Reference
432
+
433
+ Add to your project's `core-config.yaml`:
434
+
435
+ ```yaml
436
+ github:
437
+ pr:
438
+ # Options: conventional | story-first | branch-based
439
+ title_format: conventional # For semantic-release projects
440
+ # title_format: story-first # For simple projects (default)
441
+
442
+ include_story_id: true
443
+
444
+ conventional_commits:
445
+ enabled: true
446
+ branch_type_map:
447
+ feature/: feat
448
+ fix/: fix
449
+ docs/: docs
450
+ # Add custom mappings as needed
451
+ default_type: feat
452
+
453
+ semantic_release:
454
+ enabled: true # Set false if not using semantic-release
279
455
  ```
280
456
 
457
+ ## Title Format Examples
458
+
459
+ | Format | Branch | Story | Generated Title |
460
+ |--------|--------|-------|-----------------|
461
+ | `conventional` | `feature/user-auth` | 6.17: User Auth | `feat: user auth [Story 6.17]` |
462
+ | `conventional` | `fix/cli/parsing` | 6.18: CLI Fix | `fix(cli): cLI fix [Story 6.18]` |
463
+ | `story-first` | `feature/user-auth` | 6.17: User Auth | `[Story 6.17] User Auth` |
464
+ | `story-first` | `fix/cli-bug` | - | `Cli Bug` |
465
+ | `branch-based` | `feature/user-auth` | 6.17 | `User Auth [Story 6.17]` |
466
+ | `branch-based` | `docs/readme` | - | `Readme` |
467
+
281
468
  ### Step 5: Generate PR Description
282
469
 
283
470
  ```javascript
@@ -415,10 +602,60 @@ Called by `@github-devops` via `*create-pr` command.
415
602
  ## Validation
416
603
 
417
604
  - PR created in correct repository (detected URL)
418
- - PR title includes story ID if available
605
+ - PR title follows Conventional Commits format (required for semantic-release)
606
+ - PR title includes story ID if available (e.g., `[Story 6.17]`)
419
607
  - PR description includes repository context
420
608
  - Base branch is correct (usually main/master)
421
609
 
610
+ ## Semantic-Release Integration (Optional)
611
+
612
+ > **Note:** This section only applies when `core-config.yaml` has:
613
+ > - `github.pr.title_format: conventional`
614
+ > - `github.semantic_release.enabled: true`
615
+ >
616
+ > Projects without semantic-release should use `title_format: story-first` (default).
617
+
618
+ **When enabled:** PRs merged via "Squash and merge" use the PR title as commit message, triggering semantic-release:
619
+
620
+ | Branch Pattern | Generated Title | Release |
621
+ |---------------|-----------------|---------|
622
+ | `feature/user-auth` | `feat: user auth` | βœ… Minor |
623
+ | `feat/auth/sso-login` | `feat(auth): sso login` | βœ… Minor |
624
+ | `fix/cli-parsing` | `fix: cli parsing` | βœ… Patch |
625
+ | `docs/readme-update` | `docs: readme update` | ❌ None |
626
+ | `chore/deps-update` | `chore: deps update` | ❌ None |
627
+
628
+ For breaking changes, manually edit the PR title to include `!`:
629
+ - `feat!: redesign authentication API [Story 7.1]`
630
+
631
+ ## Configuration for Different Project Types
632
+
633
+ ### NPM Package with Semantic-Release (aios-core)
634
+ ```yaml
635
+ github:
636
+ pr:
637
+ title_format: conventional
638
+ semantic_release:
639
+ enabled: true
640
+ ```
641
+
642
+ ### Simple Web App (no releases)
643
+ ```yaml
644
+ github:
645
+ pr:
646
+ title_format: story-first # [Story 6.17] Title
647
+ semantic_release:
648
+ enabled: false
649
+ ```
650
+
651
+ ### Quick Prototypes
652
+ ```yaml
653
+ github:
654
+ pr:
655
+ title_format: branch-based # Just branch name as title
656
+ include_story_id: false
657
+ ```
658
+
422
659
  ## Notes
423
660
 
424
661
  - Works with ANY repository
@@ -0,0 +1,309 @@
1
+ # Search MCP Catalog Task
2
+
3
+ > Search and discover available MCP servers in the Docker MCP Toolkit catalog.
4
+
5
+ ---
6
+
7
+ ## Task Definition
8
+
9
+ ```yaml
10
+ task: searchMcp()
11
+ responsavel: DevOps Agent
12
+ responsavel_type: Agente
13
+ atomic_layer: Infrastructure
14
+ elicit: true
15
+
16
+ **Entrada:**
17
+ - campo: search_query
18
+ tipo: string
19
+ origem: User Input
20
+ obrigatorio: true
21
+ validacao: Search query for MCP catalog (e.g., "notion", "database", "slack")
22
+
23
+ **Saida:**
24
+ - campo: mcp_results
25
+ tipo: array
26
+ destino: Console output
27
+ persistido: false
28
+
29
+ - campo: mcp_details
30
+ tipo: object
31
+ destino: Console output (if user selects an MCP)
32
+ persistido: false
33
+ ```
34
+
35
+ ---
36
+
37
+ ## Pre-Conditions
38
+
39
+ ```yaml
40
+ pre-conditions:
41
+ - [ ] Docker MCP Toolkit running
42
+ tipo: pre-condition
43
+ blocker: true
44
+ validacao: docker mcp --version succeeds
45
+ error_message: "Docker MCP Toolkit required. Enable in Docker Desktop settings."
46
+
47
+ - [ ] Docker daemon running
48
+ tipo: pre-condition
49
+ blocker: true
50
+ validacao: docker info succeeds
51
+ error_message: "Start Docker Desktop before running this task"
52
+ ```
53
+
54
+ ---
55
+
56
+ ## Interactive Elicitation
57
+
58
+ ### Step 1: Search Query
59
+
60
+ ```
61
+ ELICIT: MCP Search Query
62
+
63
+ What type of MCP server are you looking for?
64
+
65
+ Examples:
66
+ β€’ "notion" - Workspace and document management
67
+ β€’ "database" - Database integrations (postgres, mysql, sqlite)
68
+ β€’ "slack" - Team messaging
69
+ β€’ "browser" - Browser automation (puppeteer, playwright)
70
+ β€’ "storage" - Cloud storage (s3, gcs)
71
+ β€’ "*" - List all available MCPs
72
+
73
+ β†’ Enter search query: _______________
74
+ ```
75
+
76
+ ### Step 2: Display Results
77
+
78
+ ```
79
+ ELICIT: Search Results
80
+
81
+ Found {n} MCPs matching "{query}":
82
+
83
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
84
+ β”‚ # β”‚ MCP Name β”‚ Description β”‚
85
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
86
+ β”‚ 1 β”‚ mcp/notion β”‚ Notion workspace integration β”‚
87
+ β”‚ 2 β”‚ mcp/postgres β”‚ PostgreSQL database access β”‚
88
+ β”‚ 3 β”‚ mcp/sqlite β”‚ SQLite local database β”‚
89
+ β”‚ 4 β”‚ mcp/mysql β”‚ MySQL database access β”‚
90
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
91
+
92
+ Options:
93
+ β€’ Enter a number to see details
94
+ β€’ Type "add {number}" to add the MCP
95
+ β€’ Type "search {query}" to search again
96
+ β€’ Type "exit" to finish
97
+
98
+ β†’ Select option: ___
99
+ ```
100
+
101
+ ### Step 3: Show MCP Details (Optional)
102
+
103
+ ```
104
+ ELICIT: MCP Details
105
+
106
+ πŸ“¦ mcp/{name}
107
+
108
+ Description: {full_description}
109
+
110
+ πŸ”§ Tools Provided:
111
+ β€’ tool1 - Description of tool1
112
+ β€’ tool2 - Description of tool2
113
+ β€’ tool3 - Description of tool3
114
+
115
+ πŸ”‘ Required Credentials:
116
+ β€’ {CREDENTIAL_NAME} - {description}
117
+ β€’ (none) - if no credentials needed
118
+
119
+ πŸ“‹ Example Usage:
120
+ docker mcp server add {name}
121
+ docker mcp tools call {name}.{tool} --param value
122
+
123
+ Options:
124
+ β€’ Type "add" to add this MCP
125
+ β€’ Type "back" to return to results
126
+ β€’ Type "exit" to finish
127
+
128
+ β†’ Select option: ___
129
+ ```
130
+
131
+ ---
132
+
133
+ ## Implementation Steps
134
+
135
+ ### 1. Search the Catalog
136
+
137
+ ```bash
138
+ # Basic search
139
+ docker mcp catalog search {query}
140
+
141
+ # Example: Search for "notion"
142
+ docker mcp catalog search notion
143
+
144
+ # List all MCPs
145
+ docker mcp catalog search "*"
146
+
147
+ # Example output:
148
+ # NAME DESCRIPTION
149
+ # mcp/notion Notion workspace integration
150
+ # mcp/postgres PostgreSQL database access
151
+ ```
152
+
153
+ ### 2. Get MCP Details
154
+
155
+ ```bash
156
+ # Get detailed info about an MCP
157
+ docker mcp catalog info {mcp-name}
158
+
159
+ # Example: Get notion details
160
+ docker mcp catalog info notion
161
+
162
+ # Example output:
163
+ # Name: mcp/notion
164
+ # Description: Notion workspace integration
165
+ # Tools:
166
+ # - getPage: Retrieve a Notion page
167
+ # - createPage: Create a new page
168
+ # - search: Search Notion workspace
169
+ # Environment:
170
+ # - NOTION_API_KEY (required)
171
+ ```
172
+
173
+ ### 3. Filter by Category (if supported)
174
+
175
+ ```bash
176
+ # Search by category
177
+ docker mcp catalog search --category database
178
+ docker mcp catalog search --category productivity
179
+ docker mcp catalog search --category automation
180
+ ```
181
+
182
+ ---
183
+
184
+ ## Post-Conditions
185
+
186
+ ```yaml
187
+ post-conditions:
188
+ - [ ] Search results displayed
189
+ tipo: post-condition
190
+ blocker: false
191
+ validacao: User can see matching MCPs or "no results" message
192
+ error_message: "Search failed - check Docker MCP connection"
193
+ ```
194
+
195
+ ---
196
+
197
+ ## Error Handling
198
+
199
+ ### Error: No Results Found
200
+
201
+ ```
202
+ Resolution:
203
+ 1. Try a broader search query
204
+ 2. Use wildcards: docker mcp catalog search "*database*"
205
+ 3. Check available categories: docker mcp catalog categories
206
+ 4. Browse full catalog: docker mcp catalog search "*"
207
+ ```
208
+
209
+ ### Error: Docker MCP Not Available
210
+
211
+ ```
212
+ Resolution:
213
+ 1. Verify Docker Desktop 4.50+ is installed
214
+ 2. Enable MCP Toolkit: Docker Desktop > Settings > Extensions > MCP Toolkit
215
+ 3. Restart Docker Desktop
216
+ 4. Verify: docker mcp --version
217
+ ```
218
+
219
+ ### Error: Catalog Timeout
220
+
221
+ ```
222
+ Resolution:
223
+ 1. Check internet connection
224
+ 2. Docker MCP catalog requires network access
225
+ 3. Retry: docker mcp catalog search {query}
226
+ 4. Check Docker proxy settings if behind firewall
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Success Output
232
+
233
+ ```
234
+ βœ… MCP Catalog Search Complete
235
+
236
+ πŸ” Query: "{query}"
237
+ πŸ“¦ Results: {n} MCPs found
238
+
239
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
240
+ β”‚ MCP Name β”‚ Description β”‚ Credentials β”‚
241
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
242
+ β”‚ mcp/notion β”‚ Notion workspace β”‚ NOTION_API_KEY β”‚
243
+ β”‚ mcp/postgres β”‚ PostgreSQL access β”‚ DATABASE_URL β”‚
244
+ β”‚ mcp/sqlite β”‚ SQLite local DB β”‚ None β”‚
245
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
246
+
247
+ Next steps:
248
+ 1. View details: *search-mcp β†’ select number
249
+ 2. Add an MCP: *add-mcp {name}
250
+ 3. List enabled MCPs: *list-mcps
251
+ ```
252
+
253
+ ---
254
+
255
+ ## Common Search Examples
256
+
257
+ | Search Query | Finds | Use Case |
258
+ |--------------|-------|----------|
259
+ | `notion` | Notion workspace MCP | Document management |
260
+ | `database` | postgres, mysql, sqlite, redis | Database access |
261
+ | `slack` | Slack messaging MCP | Team communication |
262
+ | `browser` | puppeteer, playwright | Browser automation |
263
+ | `storage` | s3, gcs, azure-blob | Cloud storage |
264
+ | `github` | GitHub API MCP | Repository management |
265
+ | `*` | All available MCPs | Browse full catalog |
266
+
267
+ ---
268
+
269
+ ## Related Commands
270
+
271
+ | Command | Description |
272
+ |---------|-------------|
273
+ | `*add-mcp` | Add an MCP server to Docker MCP Toolkit |
274
+ | `*list-mcps` | List currently enabled MCPs |
275
+ | `*remove-mcp` | Remove an MCP from Docker MCP Toolkit |
276
+ | `*setup-mcp-docker` | Initial Docker MCP Toolkit setup |
277
+
278
+ ---
279
+
280
+ ## Performance
281
+
282
+ ```yaml
283
+ duration_expected: 1-2 minutes
284
+ cost_estimated: $0 (local Docker operation)
285
+ token_usage: ~200-500 tokens
286
+ ```
287
+
288
+ ---
289
+
290
+ ## Metadata
291
+
292
+ ```yaml
293
+ task: search-mcp
294
+ version: 1.0.0
295
+ story: Story 6.14 - MCP Governance Consolidation
296
+ dependencies:
297
+ - Docker MCP Toolkit
298
+ - Docker Desktop 4.50+
299
+ tags:
300
+ - infrastructure
301
+ - mcp
302
+ - docker
303
+ - discovery
304
+ - catalog
305
+ created_at: 2025-12-17
306
+ updated_at: 2025-12-17
307
+ agents:
308
+ - devops
309
+ ```
@@ -1,10 +1,10 @@
1
1
  # Setup Docker MCP Toolkit
2
2
 
3
3
  **Task ID:** setup-mcp-docker
4
- **Version:** 2.0.0
4
+ **Version:** 2.1.0
5
5
  **Created:** 2025-12-08
6
- **Updated:** 2025-12-08
7
- **Agent:** @devops (Gage) / @dev (Dex)
6
+ **Updated:** 2025-12-17
7
+ **Agent:** @devops (Gage)
8
8
 
9
9
  ---
10
10
 
@@ -63,7 +63,7 @@ Configure Docker MCP Toolkit as the primary MCP infrastructure for AIOS, using *
63
63
 
64
64
  ```yaml
65
65
  task: setupMcpDocker()
66
- responsΓ‘vel: DevOps Agent / Dev Agent
66
+ responsΓ‘vel: DevOps Agent
67
67
  responsavel_type: Agente
68
68
  atomic_layer: Infrastructure
69
69
 
@@ -556,8 +556,8 @@ token_usage: ~500-1,000 tokens (this task only)
556
556
  ## Metadata
557
557
 
558
558
  ```yaml
559
- story: Docker MCP Migration (Story 5.11)
560
- version: 2.0.0
559
+ story: Story 6.14 - MCP Governance Consolidation
560
+ version: 2.1.0
561
561
  dependencies:
562
562
  - Docker Desktop 4.50+
563
563
  - Docker MCP Toolkit
@@ -568,11 +568,14 @@ tags:
568
568
  - docker
569
569
  - setup
570
570
  - http-transport
571
- updated_at: 2025-12-08
571
+ created_at: 2025-12-08
572
+ updated_at: 2025-12-17
572
573
  agents:
573
574
  - devops
574
- - dev
575
575
  changelog:
576
+ 2.1.0:
577
+ - Changed: DevOps Agent now exclusive responsible (Story 6.14)
578
+ - Removed: Dev Agent from agents list
576
579
  2.0.0:
577
580
  - BREAKING: Changed from stdio to HTTP transport
578
581
  - Added: gateway-service.yml for persistent gateway