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.
- package/.aios-core/.session/current-session.json +14 -14
- package/.aios-core/cli/commands/migrate/validate.js +1 -1
- package/.aios-core/core/docs/session-update-pattern.md +17 -10
- package/.aios-core/core/elicitation/elicitation-engine.js +11 -6
- package/.aios-core/core/elicitation/session-manager.js +2 -1
- package/.aios-core/core/registry/registry-schema.json +166 -166
- package/.aios-core/core/registry/service-registry.json +6585 -6585
- package/.aios-core/core-config.yaml +66 -1
- package/.aios-core/data/agent-config-requirements.yaml +5 -5
- package/.aios-core/development/agents/devops.md +12 -0
- package/.aios-core/development/scripts/squad/README.md +112 -0
- package/.aios-core/development/scripts/squad/index.js +41 -0
- package/.aios-core/development/scripts/squad/squad-loader.js +359 -0
- package/.aios-core/development/scripts/squad/squad-validator.js +685 -0
- package/.aios-core/development/tasks/add-mcp.md +11 -5
- package/.aios-core/development/tasks/github-devops-github-pr-automation.md +240 -3
- package/.aios-core/development/tasks/search-mcp.md +309 -0
- package/.aios-core/development/tasks/setup-mcp-docker.md +11 -8
- package/.aios-core/development/tasks/squad-creator-validate.md +151 -0
- package/.aios-core/docs/standards/AGENT-PERSONALIZATION-STANDARD-V1.md +3 -3
- package/.aios-core/index.d.ts +7 -7
- package/.aios-core/index.js +1 -1
- package/.aios-core/infrastructure/scripts/batch-creator.js +1 -1
- package/.aios-core/infrastructure/scripts/component-generator.js +1 -1
- package/.aios-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aios-core/infrastructure/templates/core-config/core-config-greenfield.tmpl.yaml +41 -0
- package/.aios-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aios-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aios-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aios-core/infrastructure/templates/gitignore/gitignore-aios-base.tmpl +63 -63
- package/.aios-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aios-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aios-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aios-core/infrastructure/tests/utilities-audit-results.json +500 -500
- package/.aios-core/infrastructure/tools/README.md +1 -1
- package/.aios-core/install-manifest.yaml +4 -1
- package/.aios-core/manifests/schema/manifest-schema.json +190 -190
- package/.aios-core/manifests/workers.csv +203 -203
- package/.aios-core/package.json +102 -102
- package/.aios-core/product/templates/activation-instructions-template.md +7 -7
- package/.aios-core/product/templates/adr.hbs +125 -125
- package/.aios-core/product/templates/component-react-tmpl.tsx +98 -98
- package/.aios-core/product/templates/dbdr.hbs +241 -241
- package/.aios-core/product/templates/engine/schemas/adr.schema.json +102 -102
- package/.aios-core/product/templates/engine/schemas/dbdr.schema.json +205 -205
- package/.aios-core/product/templates/engine/schemas/epic.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/pmdr.schema.json +175 -175
- package/.aios-core/product/templates/engine/schemas/prd-v2.schema.json +300 -300
- package/.aios-core/product/templates/engine/schemas/prd.schema.json +152 -152
- package/.aios-core/product/templates/engine/schemas/story.schema.json +222 -222
- package/.aios-core/product/templates/engine/schemas/task.schema.json +154 -154
- package/.aios-core/product/templates/epic.hbs +212 -212
- package/.aios-core/product/templates/eslintrc-security.json +32 -32
- package/.aios-core/product/templates/github-actions-cd.yml +212 -212
- package/.aios-core/product/templates/github-actions-ci.yml +172 -172
- package/.aios-core/product/templates/pmdr.hbs +186 -186
- package/.aios-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aios-core/product/templates/prd.hbs +201 -201
- package/.aios-core/product/templates/shock-report-tmpl.html +502 -502
- package/.aios-core/product/templates/story.hbs +263 -263
- package/.aios-core/product/templates/task.hbs +170 -170
- package/.aios-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aios-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aios-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aios-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aios-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aios-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aios-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aios-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aios-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aios-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aios-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aios-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aios-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aios-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aios-core/product/templates/tmpl-view.sql +177 -177
- package/.aios-core/product/templates/token-exports-css-tmpl.css +240 -240
- package/.aios-core/quality/schemas/quality-metrics.schema.json +233 -233
- package/.aios-core/schemas/squad-schema.json +185 -0
- package/.aios-core/scripts/README.md +90 -322
- package/.aios-core/scripts/migrate-framework-docs.sh +300 -300
- package/.claude/rules/mcp-usage.md +116 -100
- package/LICENSE +48 -48
- package/README.md +3 -4
- package/bin/aios.js +2 -1
- package/package.json +1 -3
- package/packages/installer/package.json +39 -39
- package/templates/squad/LICENSE +21 -21
- package/templates/squad/README.md +37 -37
- package/templates/squad/agents/example-agent.yaml +36 -36
- package/templates/squad/package.json +19 -19
- package/templates/squad/squad.yaml +25 -25
- package/templates/squad/tasks/example-task.yaml +46 -46
- package/templates/squad/templates/example-template.md +24 -24
- package/templates/squad/tests/example-agent.test.js +53 -53
- package/templates/squad/workflows/example-workflow.yaml +54 -54
- package/tools/diagnose-npx-issue.ps1 +96 -96
- package/tools/quick-diagnose.cmd +85 -85
- package/tools/quick-diagnose.ps1 +117 -117
- package/.aios-core/core/data/agent-config-requirements.yaml +0 -368
- package/.aios-core/core/data/aios-kb.md +0 -924
- package/.aios-core/core/data/workflow-patterns.yaml +0 -267
- package/.aios-core/product/templates/1mcp-config.yaml +0 -225
- package/.aios-core/scripts/context-detector.js +0 -226
- package/.aios-core/scripts/elicitation-engine.js +0 -385
- package/.aios-core/scripts/elicitation-session-manager.js +0 -300
- 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
|
|
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.
|
|
4
|
+
**Version:** 2.1.0
|
|
5
5
|
**Created:** 2025-12-08
|
|
6
|
-
**Updated:** 2025-12-
|
|
7
|
-
**Agent:** @devops (Gage)
|
|
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
|
|
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:
|
|
560
|
-
version: 2.
|
|
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
|
-
|
|
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
|