@trieungoctam/vibekit 1.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/LICENSE +21 -0
- package/README.md +85 -0
- package/agents/debugger.md +158 -0
- package/agents/docs-manager.md +220 -0
- package/agents/planner.md +129 -0
- package/agents/researcher.md +58 -0
- package/agents/reviewer.md +152 -0
- package/agents/tester.md +126 -0
- package/bin/vibekit.js +18 -0
- package/hooks/lib/ck-config-utils.cjs +831 -0
- package/hooks/lib/colors.cjs +95 -0
- package/hooks/lib/config-counter.cjs +103 -0
- package/hooks/lib/context-builder.cjs +616 -0
- package/hooks/lib/git-info-cache.cjs +143 -0
- package/hooks/lib/hook-logger.cjs +92 -0
- package/hooks/lib/privacy-checker.cjs +297 -0
- package/hooks/lib/project-detector.cjs +474 -0
- package/hooks/lib/scout-checker.cjs +263 -0
- package/hooks/lib/transcript-parser.cjs +181 -0
- package/hooks/post-edit-simplify-reminder.cjs +156 -0
- package/hooks/privacy-block.cjs +166 -0
- package/hooks/scout-block.cjs +147 -0
- package/hooks/session-init.cjs +360 -0
- package/package.json +41 -0
- package/rules/development-rules.md +52 -0
- package/rules/documentation-management.md +121 -0
- package/rules/orchestration-protocol.md +43 -0
- package/rules/primary-workflow.md +57 -0
- package/rules/team-coordination-rules.md +90 -0
- package/skills/ai/agent-browser/SKILL.md +294 -0
- package/skills/ai/agent-browser/references/.gitkeep +0 -0
- package/skills/ai/agent-browser/references/agent-browser-vs-chrome-devtools.md +112 -0
- package/skills/ai/agent-browser/references/browserbase-cloud-setup.md +161 -0
- package/skills/ai/ai-artist/SKILL.md +122 -0
- package/skills/ai/ai-artist/data/awesome-prompts.csv +3592 -0
- package/skills/ai/ai-artist/data/lighting.csv +19 -0
- package/skills/ai/ai-artist/data/nano-banana-templates.csv +17 -0
- package/skills/ai/ai-artist/data/platforms.csv +11 -0
- package/skills/ai/ai-artist/data/styles.csv +26 -0
- package/skills/ai/ai-artist/data/techniques.csv +19 -0
- package/skills/ai/ai-artist/data/use-cases.csv +16 -0
- package/skills/ai/ai-artist/references/advanced-techniques.md +184 -0
- package/skills/ai/ai-artist/references/awesome-nano-banana-pro-prompts.md +8575 -0
- package/skills/ai/ai-artist/references/domain-code.md +66 -0
- package/skills/ai/ai-artist/references/domain-data.md +72 -0
- package/skills/ai/ai-artist/references/domain-marketing.md +66 -0
- package/skills/ai/ai-artist/references/domain-patterns.md +33 -0
- package/skills/ai/ai-artist/references/domain-writing.md +68 -0
- package/skills/ai/ai-artist/references/image-prompting.md +141 -0
- package/skills/ai/ai-artist/references/llm-prompting.md +165 -0
- package/skills/ai/ai-artist/references/nano-banana.md +136 -0
- package/skills/ai/ai-artist/references/reasoning-techniques.md +201 -0
- package/skills/ai/ai-artist/references/validation-workflow.md +117 -0
- package/skills/ai/ai-artist/scripts/core.py +197 -0
- package/skills/ai/ai-artist/scripts/extract_prompts.py +102 -0
- package/skills/ai/ai-artist/scripts/generate.py +370 -0
- package/skills/ai/ai-artist/scripts/search.py +147 -0
- package/skills/ai/ai-multimodal/.env.example +204 -0
- package/skills/ai/ai-multimodal/SKILL.md +110 -0
- package/skills/ai/ai-multimodal/references/audio-processing.md +387 -0
- package/skills/ai/ai-multimodal/references/image-generation.md +939 -0
- package/skills/ai/ai-multimodal/references/music-generation.md +311 -0
- package/skills/ai/ai-multimodal/references/video-analysis.md +515 -0
- package/skills/ai/ai-multimodal/references/video-generation.md +457 -0
- package/skills/ai/ai-multimodal/references/vision-understanding.md +492 -0
- package/skills/ai/ai-multimodal/scripts/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/check_setup.py +315 -0
- package/skills/ai/ai-multimodal/scripts/document_converter.py +395 -0
- package/skills/ai/ai-multimodal/scripts/gemini_batch_process.py +1185 -0
- package/skills/ai/ai-multimodal/scripts/media_optimizer.py +506 -0
- package/skills/ai/ai-multimodal/scripts/requirements.txt +26 -0
- package/skills/ai/ai-multimodal/scripts/tests/.coverage +0 -0
- package/skills/ai/ai-multimodal/scripts/tests/requirements.txt +20 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_document_converter.py +74 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_gemini_batch_process.py +362 -0
- package/skills/ai/ai-multimodal/scripts/tests/test_media_optimizer.py +373 -0
- package/skills/ai/mcp-management/README.md +219 -0
- package/skills/ai/mcp-management/SKILL.md +210 -0
- package/skills/ai/mcp-management/assets/tools.json +3146 -0
- package/skills/ai/mcp-management/references/configuration.md +114 -0
- package/skills/ai/mcp-management/references/gemini-cli-integration.md +221 -0
- package/skills/ai/mcp-management/references/mcp-protocol.md +116 -0
- package/skills/ai/mcp-management/scripts/.env.example +10 -0
- package/skills/ai/mcp-management/scripts/cli.ts +195 -0
- package/skills/ai/mcp-management/scripts/dist/analyze-tools.js +70 -0
- package/skills/ai/mcp-management/scripts/dist/cli.js +160 -0
- package/skills/ai/mcp-management/scripts/dist/mcp-client.js +183 -0
- package/skills/ai/mcp-management/scripts/mcp-client.ts +230 -0
- package/skills/ai/mcp-management/scripts/package.json +20 -0
- package/skills/ai/mcp-management/scripts/tsconfig.json +15 -0
- package/skills/core/brainstorm/SKILL.md +164 -0
- package/skills/core/brainstorm/scripts/frame-template.html +214 -0
- package/skills/core/brainstorm/scripts/helper.js +88 -0
- package/skills/core/brainstorm/scripts/server.cjs +338 -0
- package/skills/core/brainstorm/scripts/start-server.sh +153 -0
- package/skills/core/brainstorm/scripts/stop-server.sh +55 -0
- package/skills/core/brainstorm/spec-document-reviewer-prompt.md +49 -0
- package/skills/core/brainstorm/visual-companion.md +286 -0
- package/skills/core/code-review/SKILL.md +147 -0
- package/skills/core/code-review/references/code-review-reception.md +113 -0
- package/skills/core/code-review/references/codebase-scan-workflow.md +29 -0
- package/skills/core/code-review/references/edge-case-scouting.md +119 -0
- package/skills/core/code-review/references/parallel-review-workflow.md +69 -0
- package/skills/core/code-review/references/requesting-code-review.md +116 -0
- package/skills/core/code-review/references/task-management-reviews.md +140 -0
- package/skills/core/code-review/references/verification-before-completion.md +139 -0
- package/skills/core/cook/README.md +86 -0
- package/skills/core/cook/SKILL.md +113 -0
- package/skills/core/cook/references/intent-detection.md +101 -0
- package/skills/core/cook/references/review-cycle.md +75 -0
- package/skills/core/cook/references/subagent-patterns.md +75 -0
- package/skills/core/cook/references/workflow-steps.md +172 -0
- package/skills/core/debug/SKILL.md +121 -0
- package/skills/core/debug/references/defense-in-depth.md +124 -0
- package/skills/core/debug/references/frontend-verification.md +103 -0
- package/skills/core/debug/references/investigation-methodology.md +101 -0
- package/skills/core/debug/references/log-and-ci-analysis.md +97 -0
- package/skills/core/debug/references/performance-diagnostics.md +113 -0
- package/skills/core/debug/references/reporting-standards.md +122 -0
- package/skills/core/debug/references/root-cause-tracing.md +122 -0
- package/skills/core/debug/references/systematic-debugging.md +102 -0
- package/skills/core/debug/references/task-management-debugging.md +155 -0
- package/skills/core/debug/references/verification.md +123 -0
- package/skills/core/debug/scripts/find-polluter.sh +63 -0
- package/skills/core/debug/scripts/find-polluter.test.md +102 -0
- package/skills/core/execute/SKILL.md +70 -0
- package/skills/core/fix/SKILL.md +111 -0
- package/skills/core/fix/references/complexity-assessment.md +72 -0
- package/skills/core/fix/references/mode-selection.md +46 -0
- package/skills/core/fix/references/parallel-exploration.md +100 -0
- package/skills/core/fix/references/review-cycle.md +77 -0
- package/skills/core/fix/references/skill-activation-matrix.md +78 -0
- package/skills/core/fix/references/task-orchestration.md +103 -0
- package/skills/core/fix/references/workflow-ci.md +28 -0
- package/skills/core/fix/references/workflow-deep.md +122 -0
- package/skills/core/fix/references/workflow-logs.md +72 -0
- package/skills/core/fix/references/workflow-quick.md +59 -0
- package/skills/core/fix/references/workflow-standard.md +111 -0
- package/skills/core/fix/references/workflow-test.md +75 -0
- package/skills/core/fix/references/workflow-types.md +33 -0
- package/skills/core/fix/references/workflow-ui.md +75 -0
- package/skills/core/plan/SKILL.md +145 -0
- package/skills/core/plan/plan-document-reviewer-prompt.md +49 -0
- package/skills/core/subagent-dev/SKILL.md +277 -0
- package/skills/core/subagent-dev/code-quality-reviewer-prompt.md +26 -0
- package/skills/core/subagent-dev/implementer-prompt.md +113 -0
- package/skills/core/subagent-dev/spec-reviewer-prompt.md +61 -0
- package/skills/core/tdd/SKILL.md +371 -0
- package/skills/core/tdd/testing-anti-patterns.md +299 -0
- package/skills/core/test/SKILL.md +109 -0
- package/skills/core/test/references/report-format.md +58 -0
- package/skills/core/test/references/test-execution-workflow.md +103 -0
- package/skills/core/test/references/ui-testing-workflow.md +65 -0
- package/skills/core/verify/SKILL.md +139 -0
- package/skills/dev/backend-dev/SKILL.md +96 -0
- package/skills/dev/backend-dev/references/backend-api-design.md +495 -0
- package/skills/dev/backend-dev/references/backend-architecture.md +454 -0
- package/skills/dev/backend-dev/references/backend-authentication.md +338 -0
- package/skills/dev/backend-dev/references/backend-code-quality.md +659 -0
- package/skills/dev/backend-dev/references/backend-debugging.md +904 -0
- package/skills/dev/backend-dev/references/backend-devops.md +494 -0
- package/skills/dev/backend-dev/references/backend-mindset.md +387 -0
- package/skills/dev/backend-dev/references/backend-performance.md +397 -0
- package/skills/dev/backend-dev/references/backend-security.md +290 -0
- package/skills/dev/backend-dev/references/backend-technologies.md +256 -0
- package/skills/dev/backend-dev/references/backend-testing.md +429 -0
- package/skills/dev/context-engineering/SKILL.md +108 -0
- package/skills/dev/context-engineering/references/context-compression.md +84 -0
- package/skills/dev/context-engineering/references/context-degradation.md +93 -0
- package/skills/dev/context-engineering/references/context-fundamentals.md +75 -0
- package/skills/dev/context-engineering/references/context-optimization.md +82 -0
- package/skills/dev/context-engineering/references/evaluation.md +89 -0
- package/skills/dev/context-engineering/references/memory-systems.md +88 -0
- package/skills/dev/context-engineering/references/multi-agent-patterns.md +90 -0
- package/skills/dev/context-engineering/references/project-development.md +97 -0
- package/skills/dev/context-engineering/references/runtime-awareness.md +202 -0
- package/skills/dev/context-engineering/references/tool-design.md +86 -0
- package/skills/dev/context-engineering/scripts/compression_evaluator.py +349 -0
- package/skills/dev/context-engineering/scripts/context_analyzer.py +317 -0
- package/skills/dev/context-engineering/scripts/tests/test_edge_cases.py +246 -0
- package/skills/dev/databases/SKILL.md +84 -0
- package/skills/dev/databases/analytics.md +198 -0
- package/skills/dev/databases/db-design.md +188 -0
- package/skills/dev/databases/incremental-etl.md +213 -0
- package/skills/dev/databases/references/mongodb-aggregation.md +447 -0
- package/skills/dev/databases/references/mongodb-atlas.md +465 -0
- package/skills/dev/databases/references/mongodb-crud.md +408 -0
- package/skills/dev/databases/references/mongodb-indexing.md +442 -0
- package/skills/dev/databases/references/postgresql-administration.md +594 -0
- package/skills/dev/databases/references/postgresql-performance.md +527 -0
- package/skills/dev/databases/references/postgresql-psql-cli.md +467 -0
- package/skills/dev/databases/references/postgresql-queries.md +475 -0
- package/skills/dev/databases/scripts/.coverage +0 -0
- package/skills/dev/databases/scripts/db_backup.py +502 -0
- package/skills/dev/databases/scripts/db_migrate.py +426 -0
- package/skills/dev/databases/scripts/db_performance_check.py +457 -0
- package/skills/dev/databases/scripts/requirements.txt +20 -0
- package/skills/dev/databases/scripts/tests/coverage-db.json +1 -0
- package/skills/dev/databases/scripts/tests/requirements.txt +4 -0
- package/skills/dev/databases/scripts/tests/test_db_backup.py +340 -0
- package/skills/dev/databases/scripts/tests/test_db_migrate.py +277 -0
- package/skills/dev/databases/scripts/tests/test_db_performance_check.py +370 -0
- package/skills/dev/databases/stacks/bigquery.md +231 -0
- package/skills/dev/databases/stacks/d1_cloudflare.md +137 -0
- package/skills/dev/databases/stacks/mysql.md +216 -0
- package/skills/dev/databases/stacks/postgres.md +235 -0
- package/skills/dev/databases/stacks/sqlite.md +244 -0
- package/skills/dev/databases/transactional.md +176 -0
- package/skills/dev/devops/.env.example +76 -0
- package/skills/dev/devops/SKILL.md +97 -0
- package/skills/dev/devops/references/browser-rendering.md +305 -0
- package/skills/dev/devops/references/cloudflare-d1-kv.md +123 -0
- package/skills/dev/devops/references/cloudflare-platform.md +271 -0
- package/skills/dev/devops/references/cloudflare-r2-storage.md +280 -0
- package/skills/dev/devops/references/cloudflare-workers-advanced.md +312 -0
- package/skills/dev/devops/references/cloudflare-workers-apis.md +309 -0
- package/skills/dev/devops/references/cloudflare-workers-basics.md +418 -0
- package/skills/dev/devops/references/docker-basics.md +297 -0
- package/skills/dev/devops/references/docker-compose.md +292 -0
- package/skills/dev/devops/references/gcloud-platform.md +297 -0
- package/skills/dev/devops/references/gcloud-services.md +304 -0
- package/skills/dev/devops/references/kubernetes-basics.md +99 -0
- package/skills/dev/devops/references/kubernetes-helm-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-helm.md +81 -0
- package/skills/dev/devops/references/kubernetes-kubectl.md +74 -0
- package/skills/dev/devops/references/kubernetes-security-advanced.md +98 -0
- package/skills/dev/devops/references/kubernetes-security.md +95 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting-advanced.md +74 -0
- package/skills/dev/devops/references/kubernetes-troubleshooting.md +49 -0
- package/skills/dev/devops/references/kubernetes-workflows-advanced.md +75 -0
- package/skills/dev/devops/references/kubernetes-workflows.md +78 -0
- package/skills/dev/devops/scripts/cloudflare_deploy.py +269 -0
- package/skills/dev/devops/scripts/docker_optimize.py +332 -0
- package/skills/dev/devops/scripts/requirements.txt +20 -0
- package/skills/dev/devops/scripts/tests/requirements.txt +3 -0
- package/skills/dev/devops/scripts/tests/test_cloudflare_deploy.py +285 -0
- package/skills/dev/devops/scripts/tests/test_docker_optimize.py +436 -0
- package/skills/dev/frontend-design/SKILL.md +78 -0
- package/skills/dev/frontend-design/references/ai-multimodal-overview.md +165 -0
- package/skills/dev/frontend-design/references/analysis-best-practices.md +80 -0
- package/skills/dev/frontend-design/references/analysis-prompts.md +141 -0
- package/skills/dev/frontend-design/references/analysis-techniques.md +118 -0
- package/skills/dev/frontend-design/references/animejs.md +396 -0
- package/skills/dev/frontend-design/references/asset-generation.md +337 -0
- package/skills/dev/frontend-design/references/design-extraction-overview.md +71 -0
- package/skills/dev/frontend-design/references/extraction-best-practices.md +141 -0
- package/skills/dev/frontend-design/references/extraction-output-templates.md +162 -0
- package/skills/dev/frontend-design/references/extraction-prompts.md +127 -0
- package/skills/dev/frontend-design/references/technical-accessibility.md +119 -0
- package/skills/dev/frontend-design/references/technical-best-practices.md +97 -0
- package/skills/dev/frontend-design/references/technical-optimization.md +44 -0
- package/skills/dev/frontend-design/references/technical-overview.md +90 -0
- package/skills/dev/frontend-design/references/technical-workflows.md +150 -0
- package/skills/dev/frontend-design/references/visual-analysis-overview.md +95 -0
- package/skills/dev/frontend-design/references/workflow-3d.md +102 -0
- package/skills/dev/frontend-design/references/workflow-describe.md +87 -0
- package/skills/dev/frontend-design/references/workflow-immersive.md +87 -0
- package/skills/dev/frontend-design/references/workflow-quick.md +57 -0
- package/skills/dev/frontend-design/references/workflow-screenshot.md +63 -0
- package/skills/dev/frontend-design/references/workflow-video.md +74 -0
- package/skills/dev/frontend-dev/SKILL.md +400 -0
- package/skills/dev/frontend-dev/resources/common-patterns.md +331 -0
- package/skills/dev/frontend-dev/resources/complete-examples.md +872 -0
- package/skills/dev/frontend-dev/resources/component-patterns.md +502 -0
- package/skills/dev/frontend-dev/resources/data-fetching.md +767 -0
- package/skills/dev/frontend-dev/resources/file-organization.md +502 -0
- package/skills/dev/frontend-dev/resources/loading-and-error-states.md +501 -0
- package/skills/dev/frontend-dev/resources/performance.md +406 -0
- package/skills/dev/frontend-dev/resources/routing-guide.md +364 -0
- package/skills/dev/frontend-dev/resources/styling-guide.md +428 -0
- package/skills/dev/frontend-dev/resources/typescript-standards.md +418 -0
- package/skills/dev/git/SKILL.md +114 -0
- package/skills/dev/git/references/branch-management.md +88 -0
- package/skills/dev/git/references/commit-standards.md +46 -0
- package/skills/dev/git/references/gh-cli-guide.md +109 -0
- package/skills/dev/git/references/safety-protocols.md +69 -0
- package/skills/dev/git/references/workflow-commit.md +58 -0
- package/skills/dev/git/references/workflow-merge.md +48 -0
- package/skills/dev/git/references/workflow-pr.md +58 -0
- package/skills/dev/git/references/workflow-push.md +52 -0
- package/skills/dev/git-worktree/SKILL.md +218 -0
- package/skills/utils/ask/SKILL.md +58 -0
- package/skills/utils/bootstrap/SKILL.md +101 -0
- package/skills/utils/bootstrap/references/shared-phases.md +59 -0
- package/skills/utils/bootstrap/references/workflow-auto.md +52 -0
- package/skills/utils/bootstrap/references/workflow-fast.md +50 -0
- package/skills/utils/bootstrap/references/workflow-full.md +60 -0
- package/skills/utils/bootstrap/references/workflow-parallel.md +59 -0
- package/skills/utils/ck-help/SKILL.md +102 -0
- package/skills/utils/ck-help/scripts/ck-help.py +1321 -0
- package/skills/utils/ck-help/scripts/commands_data.yaml +3 -0
- package/skills/utils/ck-help/scripts/skills_data.yaml +593 -0
- package/skills/utils/copywriting/SKILL.md +94 -0
- package/skills/utils/copywriting/references/copy-formulas.md +150 -0
- package/skills/utils/copywriting/references/cta-patterns.md +168 -0
- package/skills/utils/copywriting/references/email-copy.md +193 -0
- package/skills/utils/copywriting/references/headline-templates.md +140 -0
- package/skills/utils/copywriting/references/landing-page-copy.md +175 -0
- package/skills/utils/copywriting/references/power-words.md +189 -0
- package/skills/utils/copywriting/references/social-media-copy.md +222 -0
- package/skills/utils/copywriting/references/workflow-cro.md +83 -0
- package/skills/utils/copywriting/references/workflow-enhance.md +32 -0
- package/skills/utils/copywriting/references/workflow-fast.md +29 -0
- package/skills/utils/copywriting/references/workflow-good.md +39 -0
- package/skills/utils/copywriting/references/writing-styles.md +247 -0
- package/skills/utils/copywriting/scripts/extract-writing-styles.py +308 -0
- package/skills/utils/copywriting/templates/copy-brief.md +49 -0
- package/skills/utils/docs/SKILL.md +55 -0
- package/skills/utils/docs/references/init-workflow.md +32 -0
- package/skills/utils/docs/references/summarize-workflow.md +18 -0
- package/skills/utils/docs/references/update-workflow.md +59 -0
- package/skills/utils/journal/SKILL.md +11 -0
- package/skills/utils/kanban/SKILL.md +99 -0
- package/skills/utils/preview/SKILL.md +75 -0
- package/skills/utils/preview/references/generation-modes.md +95 -0
- package/skills/utils/preview/references/view-mode.md +42 -0
- package/skills/utils/repomix/SKILL.md +248 -0
- package/skills/utils/repomix/references/configuration.md +211 -0
- package/skills/utils/repomix/references/usage-patterns.md +232 -0
- package/skills/utils/repomix/scripts/.coverage +0 -0
- package/skills/utils/repomix/scripts/README.md +179 -0
- package/skills/utils/repomix/scripts/repomix_batch.py +455 -0
- package/skills/utils/repomix/scripts/repos.example.json +15 -0
- package/skills/utils/repomix/scripts/requirements.txt +15 -0
- package/skills/utils/repomix/scripts/tests/test_repomix_batch.py +531 -0
- package/skills/utils/research/SKILL.md +171 -0
- package/skills/utils/scout/SKILL.md +89 -0
- package/skills/utils/scout/references/external-scouting.md +140 -0
- package/skills/utils/scout/references/internal-scouting.md +119 -0
- package/skills/utils/scout/references/task-management-scouting.md +125 -0
- package/skills/utils/sequential-thinking/.env.example +8 -0
- package/skills/utils/sequential-thinking/README.md +183 -0
- package/skills/utils/sequential-thinking/SKILL.md +95 -0
- package/skills/utils/sequential-thinking/package.json +31 -0
- package/skills/utils/sequential-thinking/references/advanced-strategies.md +79 -0
- package/skills/utils/sequential-thinking/references/advanced-techniques.md +76 -0
- package/skills/utils/sequential-thinking/references/core-patterns.md +95 -0
- package/skills/utils/sequential-thinking/references/examples-api.md +88 -0
- package/skills/utils/sequential-thinking/references/examples-architecture.md +94 -0
- package/skills/utils/sequential-thinking/references/examples-debug.md +90 -0
- package/skills/utils/sequential-thinking/scripts/format-thought.js +159 -0
- package/skills/utils/sequential-thinking/scripts/process-thought.js +236 -0
- package/skills/utils/sequential-thinking/tests/format-thought.test.js +133 -0
- package/skills/utils/sequential-thinking/tests/process-thought.test.js +215 -0
- package/skills/utils/write-skill/SKILL.md +655 -0
- package/skills/utils/write-skill/anthropic-best-practices.md +1150 -0
- package/skills/utils/write-skill/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/utils/write-skill/graphviz-conventions.dot +172 -0
- package/skills/utils/write-skill/persuasion-principles.md +187 -0
- package/skills/utils/write-skill/render-graphs.js +168 -0
- package/skills/utils/write-skill/testing-skills-with-subagents.md +384 -0
- package/src/commands/init.js +238 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# MCP Configuration Guide
|
|
2
|
+
|
|
3
|
+
## Configuration File Structure
|
|
4
|
+
|
|
5
|
+
MCP servers are configured in `.claude/.mcp.json`:
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"mcpServers": {
|
|
10
|
+
"server-name": {
|
|
11
|
+
"command": "executable",
|
|
12
|
+
"args": ["arg1", "arg2"],
|
|
13
|
+
"env": {
|
|
14
|
+
"API_KEY": "value"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Common Server Configurations
|
|
22
|
+
|
|
23
|
+
### Memory Server
|
|
24
|
+
|
|
25
|
+
Store and retrieve key-value data:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"memory": {
|
|
30
|
+
"command": "npx",
|
|
31
|
+
"args": ["-y", "@modelcontextprotocol/server-memory"]
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Filesystem Server
|
|
37
|
+
|
|
38
|
+
File operations with restricted access:
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
{
|
|
42
|
+
"filesystem": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": [
|
|
45
|
+
"-y",
|
|
46
|
+
"@modelcontextprotocol/server-filesystem",
|
|
47
|
+
"/allowed/path"
|
|
48
|
+
]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Brave Search Server
|
|
54
|
+
|
|
55
|
+
Web search capabilities:
|
|
56
|
+
|
|
57
|
+
```json
|
|
58
|
+
{
|
|
59
|
+
"brave-search": {
|
|
60
|
+
"command": "npx",
|
|
61
|
+
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
|
|
62
|
+
"env": {
|
|
63
|
+
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Puppeteer Server
|
|
70
|
+
|
|
71
|
+
Browser automation:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"puppeteer": {
|
|
76
|
+
"command": "npx",
|
|
77
|
+
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Environment Variables
|
|
83
|
+
|
|
84
|
+
Reference env vars with `${VAR_NAME}` syntax:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"api-server": {
|
|
89
|
+
"command": "node",
|
|
90
|
+
"args": ["server.js"],
|
|
91
|
+
"env": {
|
|
92
|
+
"API_KEY": "${MY_API_KEY}",
|
|
93
|
+
"BASE_URL": "${API_BASE_URL}"
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Configuration Loading Order
|
|
100
|
+
|
|
101
|
+
Scripts check for config in this order:
|
|
102
|
+
|
|
103
|
+
1. `process.env` (runtime environment)
|
|
104
|
+
2. `.claude/skills/mcp-management/.env`
|
|
105
|
+
3. `.claude/skills/.env`
|
|
106
|
+
4. `.claude/.env`
|
|
107
|
+
|
|
108
|
+
## Validation
|
|
109
|
+
|
|
110
|
+
Config must:
|
|
111
|
+
- Be valid JSON
|
|
112
|
+
- Include `mcpServers` object
|
|
113
|
+
- Each server must have `command` and `args`
|
|
114
|
+
- `env` is optional but must be object if present
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
# Gemini CLI Integration Guide
|
|
2
|
+
|
|
3
|
+
## Model Configuration
|
|
4
|
+
|
|
5
|
+
Read model from `.claude/.ck.json`: `gemini.model` (default: `gemini-3-flash-preview`)
|
|
6
|
+
|
|
7
|
+
## ā ļø CRITICAL: Use Stdin Piping, NOT -p Flag
|
|
8
|
+
|
|
9
|
+
The `-p` flag is **deprecated** and skips MCP server initialization, causing tools to be unavailable:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# ā WRONG - Deprecated -p flag skips MCP connections!
|
|
13
|
+
gemini -y -m <gemini.model> -p "Take a screenshot"
|
|
14
|
+
# Also wrong: Using --model instead of -m
|
|
15
|
+
gemini -y -p "Take a screenshot" --model gemini-3-flash-preview
|
|
16
|
+
|
|
17
|
+
# ā
CORRECT - This initializes MCP servers
|
|
18
|
+
echo "Take a screenshot" | gemini -y -m <gemini.model>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**Why**: The `-p` flag runs in "quick mode" and bypasses MCP server connection initialization. Always use stdin piping (echo + pipe) to ensure MCP tools are available.
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
Gemini CLI provides automatic MCP tool discovery and execution via natural language prompts. This is the recommended primary method for executing MCP tools.
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install -g gemini-cli
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Verify installation:
|
|
34
|
+
```bash
|
|
35
|
+
gemini --version
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Configuration
|
|
39
|
+
|
|
40
|
+
### Symlink Setup
|
|
41
|
+
|
|
42
|
+
Gemini CLI reads MCP servers from `.gemini/settings.json`. Create a symlink to `.claude/.mcp.json`:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Create .gemini directory
|
|
46
|
+
mkdir -p .gemini
|
|
47
|
+
|
|
48
|
+
# Create symlink (Unix/Linux/macOS)
|
|
49
|
+
ln -sf .claude/.mcp.json .gemini/settings.json
|
|
50
|
+
|
|
51
|
+
# Create symlink (Windows - requires admin or developer mode)
|
|
52
|
+
mklink .gemini\settings.json .claude\.mcp.json
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Security
|
|
56
|
+
|
|
57
|
+
Add to `.gitignore`:
|
|
58
|
+
```
|
|
59
|
+
.gemini/settings.json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This prevents committing sensitive API keys and server configurations.
|
|
63
|
+
|
|
64
|
+
## Usage
|
|
65
|
+
|
|
66
|
+
### Basic Syntax
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
# IMPORTANT: Use stdin piping, NOT -p flag (deprecated, skips MCP init)
|
|
70
|
+
echo "<prompt>" | gemini [flags]
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Essential Flags
|
|
74
|
+
|
|
75
|
+
- `-y`: Skip confirmation prompts (auto-approve tool execution)
|
|
76
|
+
- `-m <model>`: Model selection
|
|
77
|
+
- `gemini-3-flash-preview` (fast, recommended for MCP)
|
|
78
|
+
- `gemini-3-pro-preview` (balanced)
|
|
79
|
+
- `gemini-pro` (high quality)
|
|
80
|
+
|
|
81
|
+
### Examples
|
|
82
|
+
|
|
83
|
+
**Screenshot Capture**:
|
|
84
|
+
```bash
|
|
85
|
+
echo "Take a screenshot of https://www.google.com.vn" | gemini -y -m <gemini.model>
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Memory Operations**:
|
|
89
|
+
```bash
|
|
90
|
+
echo "Remember that Alice is a React developer working on e-commerce projects" | gemini -y -m <gemini.model>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
**Web Research**:
|
|
94
|
+
```bash
|
|
95
|
+
echo "Search for latest Next.js 15 features and summarize the top 3" | gemini -y -m <gemini.model>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Multi-Tool Orchestration**:
|
|
99
|
+
```bash
|
|
100
|
+
echo "Search for Claude AI documentation, take a screenshot of the homepage, and save both to memory" | gemini -y -m <gemini.model>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Browser Automation**:
|
|
104
|
+
```bash
|
|
105
|
+
echo "Navigate to https://example.com, click the signup button, and take a screenshot" | gemini -y -m <gemini.model>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## How It Works
|
|
109
|
+
|
|
110
|
+
1. **Configuration Loading**: Reads `.gemini/settings.json` (symlinked to `.claude/.mcp.json`)
|
|
111
|
+
2. **Server Connection**: Connects to all configured MCP servers
|
|
112
|
+
3. **Tool Discovery**: Lists all available tools from servers
|
|
113
|
+
4. **Prompt Analysis**: Gemini model analyzes the prompt
|
|
114
|
+
5. **Tool Selection**: Automatically selects relevant tools
|
|
115
|
+
6. **Execution**: Calls tools with appropriate parameters
|
|
116
|
+
7. **Result Synthesis**: Combines tool outputs into coherent response
|
|
117
|
+
|
|
118
|
+
## Advanced Configuration
|
|
119
|
+
|
|
120
|
+
### Trusted Servers (Skip Confirmations)
|
|
121
|
+
|
|
122
|
+
Edit `.claude/.mcp.json`:
|
|
123
|
+
|
|
124
|
+
```json
|
|
125
|
+
{
|
|
126
|
+
"mcpServers": {
|
|
127
|
+
"memory": {
|
|
128
|
+
"command": "npx",
|
|
129
|
+
"args": ["-y", "@modelcontextprotocol/server-memory"],
|
|
130
|
+
"trust": true
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
With `trust: true`, the `-y` flag is unnecessary.
|
|
137
|
+
|
|
138
|
+
### Tool Filtering
|
|
139
|
+
|
|
140
|
+
Limit tool exposure:
|
|
141
|
+
|
|
142
|
+
```json
|
|
143
|
+
{
|
|
144
|
+
"mcpServers": {
|
|
145
|
+
"chrome-devtools": {
|
|
146
|
+
"command": "npx",
|
|
147
|
+
"args": ["-y", "chrome-devtools-mcp@latest"],
|
|
148
|
+
"includeTools": ["navigate_page", "screenshot"],
|
|
149
|
+
"excludeTools": ["evaluate_js"]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Environment Variables
|
|
156
|
+
|
|
157
|
+
Use `$VAR_NAME` syntax for sensitive data:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"mcpServers": {
|
|
162
|
+
"brave-search": {
|
|
163
|
+
"command": "npx",
|
|
164
|
+
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
|
|
165
|
+
"env": {
|
|
166
|
+
"BRAVE_API_KEY": "$BRAVE_API_KEY"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
## Troubleshooting
|
|
174
|
+
|
|
175
|
+
### Check MCP Status
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
gemini
|
|
179
|
+
> /mcp
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Shows:
|
|
183
|
+
- Connected servers
|
|
184
|
+
- Available tools
|
|
185
|
+
- Configuration errors
|
|
186
|
+
|
|
187
|
+
### Verify Symlink
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Unix/Linux/macOS
|
|
191
|
+
ls -la .gemini/settings.json
|
|
192
|
+
|
|
193
|
+
# Windows
|
|
194
|
+
dir .gemini\settings.json
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Should show symlink pointing to `.claude/.mcp.json`.
|
|
198
|
+
|
|
199
|
+
### Debug Mode
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
echo "Take a screenshot" | gemini --debug
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Shows detailed MCP communication logs.
|
|
206
|
+
|
|
207
|
+
## Comparison with Alternatives
|
|
208
|
+
|
|
209
|
+
| Method | Speed | Flexibility | Setup | Best For |
|
|
210
|
+
|--------|-------|-------------|-------|----------|
|
|
211
|
+
| Gemini CLI | āāā | āāā | āā | All tasks |
|
|
212
|
+
| Direct Scripts | āā | āāā | āāā | Specific tools |
|
|
213
|
+
| mcp-manager | ā | āā | āāā | Fallback |
|
|
214
|
+
|
|
215
|
+
**Recommendation**: Use Gemini CLI as primary method, fallback to scripts/subagent when unavailable.
|
|
216
|
+
|
|
217
|
+
## Resources
|
|
218
|
+
|
|
219
|
+
- [Gemini CLI Documentation](https://geminicli.com/docs)
|
|
220
|
+
- [MCP Server Configuration](https://geminicli.com/docs/tools/mcp-server)
|
|
221
|
+
- [Tool Reference](https://geminicli.com/docs/tools/mcp-server/#tool-interaction)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Model Context Protocol (MCP) Reference
|
|
2
|
+
|
|
3
|
+
## Protocol Overview
|
|
4
|
+
|
|
5
|
+
MCP is JSON-RPC 2.0 based protocol for AI-tool integration.
|
|
6
|
+
|
|
7
|
+
**Version**: 2025-03-26
|
|
8
|
+
**Foundation**: JSON-RPC 2.0
|
|
9
|
+
**Architecture**: Client-Host-Server
|
|
10
|
+
|
|
11
|
+
## Connection Lifecycle
|
|
12
|
+
|
|
13
|
+
1. **Initialize**: Client sends `initialize` request with capabilities
|
|
14
|
+
2. **Response**: Server responds with its capabilities
|
|
15
|
+
3. **Handshake**: Client sends `notifications/initialized`
|
|
16
|
+
4. **Active**: Bidirectional messaging
|
|
17
|
+
5. **Shutdown**: Close connections, cleanup
|
|
18
|
+
|
|
19
|
+
## Core Capabilities
|
|
20
|
+
|
|
21
|
+
### Tools (Executable Functions)
|
|
22
|
+
|
|
23
|
+
Tools are functions that servers expose for execution.
|
|
24
|
+
|
|
25
|
+
**List Tools**:
|
|
26
|
+
```json
|
|
27
|
+
{"method": "tools/list"}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**Call Tool**:
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"method": "tools/call",
|
|
34
|
+
"params": {
|
|
35
|
+
"name": "tool_name",
|
|
36
|
+
"arguments": {}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Prompts (Interaction Templates)
|
|
42
|
+
|
|
43
|
+
Prompts are reusable templates for LLM interactions.
|
|
44
|
+
|
|
45
|
+
**List Prompts**:
|
|
46
|
+
```json
|
|
47
|
+
{"method": "prompts/list"}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Get Prompt**:
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"method": "prompts/get",
|
|
54
|
+
"params": {
|
|
55
|
+
"name": "prompt_name",
|
|
56
|
+
"arguments": {}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Resources (Data Sources)
|
|
62
|
+
|
|
63
|
+
Resources expose read-only data to clients.
|
|
64
|
+
|
|
65
|
+
**List Resources**:
|
|
66
|
+
```json
|
|
67
|
+
{"method": "resources/list"}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Read Resource**:
|
|
71
|
+
```json
|
|
72
|
+
{
|
|
73
|
+
"method": "resources/read",
|
|
74
|
+
"params": {"uri": "resource://path"}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Transport Types
|
|
79
|
+
|
|
80
|
+
### stdio (Local)
|
|
81
|
+
|
|
82
|
+
Server runs as subprocess. Messages via stdin/stdout.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
const transport = new StdioClientTransport({
|
|
86
|
+
command: 'node',
|
|
87
|
+
args: ['server.js']
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### HTTP+SSE (Remote)
|
|
92
|
+
|
|
93
|
+
POST for requests, GET for server events.
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
const transport = new StreamableHTTPClientTransport({
|
|
97
|
+
url: 'http://localhost:3000/mcp'
|
|
98
|
+
});
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Error Codes
|
|
102
|
+
|
|
103
|
+
- **-32700**: Parse error
|
|
104
|
+
- **-32600**: Invalid request
|
|
105
|
+
- **-32601**: Method not found
|
|
106
|
+
- **-32602**: Invalid params
|
|
107
|
+
- **-32603**: Internal error
|
|
108
|
+
- **-32002**: Resource not found (MCP-specific)
|
|
109
|
+
|
|
110
|
+
## Best Practices
|
|
111
|
+
|
|
112
|
+
1. **Progressive Disclosure**: Load tool definitions on-demand
|
|
113
|
+
2. **Context Efficiency**: Filter data before returning
|
|
114
|
+
3. **Security**: Validate inputs, sanitize outputs
|
|
115
|
+
4. **Resource Management**: Cleanup connections properly
|
|
116
|
+
5. **Error Handling**: Handle all error cases gracefully
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# MCP Management Scripts Environment Variables
|
|
2
|
+
|
|
3
|
+
# Path to MCP configuration file (optional, defaults to .claude/.mcp.json)
|
|
4
|
+
MCP_CONFIG_PATH=.claude/.mcp.json
|
|
5
|
+
|
|
6
|
+
# Logging level (optional, defaults to info)
|
|
7
|
+
LOG_LEVEL=info
|
|
8
|
+
|
|
9
|
+
# Enable debug mode (optional, defaults to false)
|
|
10
|
+
DEBUG=false
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP Management CLI - Command-line interface for MCP operations
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { MCPClientManager } from './mcp-client.js';
|
|
7
|
+
import { writeFileSync, mkdirSync } from 'fs';
|
|
8
|
+
import { dirname, join } from 'path';
|
|
9
|
+
import { fileURLToPath } from 'url';
|
|
10
|
+
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = dirname(__filename);
|
|
13
|
+
|
|
14
|
+
const GLOBAL_TIMEOUT_MS = parseInt(process.env.MCP_TIMEOUT || '120000', 10);
|
|
15
|
+
let globalManager: MCPClientManager | null = null;
|
|
16
|
+
|
|
17
|
+
function setupShutdownHandlers() {
|
|
18
|
+
const shutdown = async (signal: string) => {
|
|
19
|
+
console.log(`\nReceived ${signal}, cleaning up...`);
|
|
20
|
+
if (globalManager) {
|
|
21
|
+
await globalManager.cleanup();
|
|
22
|
+
}
|
|
23
|
+
process.exit(0);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
27
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
28
|
+
process.on('SIGHUP', () => shutdown('SIGHUP'));
|
|
29
|
+
|
|
30
|
+
process.on('unhandledRejection', (reason) => {
|
|
31
|
+
console.error('Unhandled rejection:', reason);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async function main() {
|
|
37
|
+
const args = process.argv.slice(2);
|
|
38
|
+
const command = args[0];
|
|
39
|
+
|
|
40
|
+
// Setup shutdown handlers
|
|
41
|
+
setupShutdownHandlers();
|
|
42
|
+
|
|
43
|
+
// Check for help flags BEFORE connecting to servers
|
|
44
|
+
if (!command || command === '--help' || command === 'help') {
|
|
45
|
+
printUsage();
|
|
46
|
+
process.exit(0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Global timeout
|
|
50
|
+
const timeoutHandle = setTimeout(() => {
|
|
51
|
+
console.error('Global timeout exceeded, forcing exit');
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}, GLOBAL_TIMEOUT_MS);
|
|
54
|
+
timeoutHandle.unref();
|
|
55
|
+
|
|
56
|
+
const manager = new MCPClientManager();
|
|
57
|
+
globalManager = manager;
|
|
58
|
+
|
|
59
|
+
try {
|
|
60
|
+
// Load config
|
|
61
|
+
await manager.loadConfig();
|
|
62
|
+
console.log('ā Config loaded');
|
|
63
|
+
|
|
64
|
+
// Connect to all servers
|
|
65
|
+
await manager.connectAll();
|
|
66
|
+
console.log('ā Connected to all MCP servers\n');
|
|
67
|
+
|
|
68
|
+
switch (command) {
|
|
69
|
+
case 'list-tools':
|
|
70
|
+
await listTools(manager);
|
|
71
|
+
break;
|
|
72
|
+
|
|
73
|
+
case 'list-prompts':
|
|
74
|
+
await listPrompts(manager);
|
|
75
|
+
break;
|
|
76
|
+
|
|
77
|
+
case 'list-resources':
|
|
78
|
+
await listResources(manager);
|
|
79
|
+
break;
|
|
80
|
+
|
|
81
|
+
case 'call-tool':
|
|
82
|
+
await callTool(manager, args[1], args[2], args[3]);
|
|
83
|
+
break;
|
|
84
|
+
|
|
85
|
+
default:
|
|
86
|
+
printUsage();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
await manager.cleanup();
|
|
90
|
+
process.exit(0);
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error('Error:', error);
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
async function listTools(manager: MCPClientManager) {
|
|
98
|
+
const tools = await manager.getAllTools();
|
|
99
|
+
console.log(`Found ${tools.length} tools:\n`);
|
|
100
|
+
|
|
101
|
+
for (const tool of tools) {
|
|
102
|
+
console.log(`š¦ ${tool.serverName} / ${tool.name}`);
|
|
103
|
+
console.log(` ${tool.description}`);
|
|
104
|
+
if (tool.inputSchema?.properties) {
|
|
105
|
+
console.log(` Parameters: ${Object.keys(tool.inputSchema.properties).join(', ')}`);
|
|
106
|
+
}
|
|
107
|
+
console.log('');
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// Save tools to JSON file
|
|
111
|
+
const assetsDir = join(__dirname, '..', 'assets');
|
|
112
|
+
const toolsPath = join(assetsDir, 'tools.json');
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
mkdirSync(assetsDir, { recursive: true });
|
|
116
|
+
writeFileSync(toolsPath, JSON.stringify(tools, null, 2));
|
|
117
|
+
console.log(`\nā Tools saved to ${toolsPath}`);
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error(`\nā Failed to save tools: ${error}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
async function listPrompts(manager: MCPClientManager) {
|
|
124
|
+
const prompts = await manager.getAllPrompts();
|
|
125
|
+
console.log(`Found ${prompts.length} prompts:\n`);
|
|
126
|
+
|
|
127
|
+
for (const prompt of prompts) {
|
|
128
|
+
console.log(`š¬ ${prompt.serverName} / ${prompt.name}`);
|
|
129
|
+
console.log(` ${prompt.description}`);
|
|
130
|
+
if (prompt.arguments && prompt.arguments.length > 0) {
|
|
131
|
+
console.log(` Arguments: ${prompt.arguments.map((a: any) => a.name).join(', ')}`);
|
|
132
|
+
}
|
|
133
|
+
console.log('');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
async function listResources(manager: MCPClientManager) {
|
|
138
|
+
const resources = await manager.getAllResources();
|
|
139
|
+
console.log(`Found ${resources.length} resources:\n`);
|
|
140
|
+
|
|
141
|
+
for (const resource of resources) {
|
|
142
|
+
console.log(`š ${resource.serverName} / ${resource.name}`);
|
|
143
|
+
console.log(` URI: ${resource.uri}`);
|
|
144
|
+
if (resource.description) {
|
|
145
|
+
console.log(` ${resource.description}`);
|
|
146
|
+
}
|
|
147
|
+
if (resource.mimeType) {
|
|
148
|
+
console.log(` Type: ${resource.mimeType}`);
|
|
149
|
+
}
|
|
150
|
+
console.log('');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
async function callTool(
|
|
155
|
+
manager: MCPClientManager,
|
|
156
|
+
serverName: string,
|
|
157
|
+
toolName: string,
|
|
158
|
+
argsJson: string
|
|
159
|
+
) {
|
|
160
|
+
if (!serverName || !toolName || !argsJson) {
|
|
161
|
+
console.error('Usage: cli.ts call-tool <server> <tool> <json-args>');
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const args = JSON.parse(argsJson);
|
|
166
|
+
console.log(`Calling ${serverName}/${toolName}...`);
|
|
167
|
+
|
|
168
|
+
const result = await manager.callTool(serverName, toolName, args);
|
|
169
|
+
console.log('\nResult:');
|
|
170
|
+
console.log(JSON.stringify(result, null, 2));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
function printUsage() {
|
|
174
|
+
console.log(`
|
|
175
|
+
MCP Management CLI
|
|
176
|
+
|
|
177
|
+
Usage:
|
|
178
|
+
cli.ts <command> [options]
|
|
179
|
+
|
|
180
|
+
Commands:
|
|
181
|
+
list-tools List all tools and save to assets/tools.json
|
|
182
|
+
list-prompts List all prompts from all MCP servers
|
|
183
|
+
list-resources List all resources from all MCP servers
|
|
184
|
+
call-tool <server> <tool> <json> Call a specific tool
|
|
185
|
+
|
|
186
|
+
Examples:
|
|
187
|
+
cli.ts list-tools
|
|
188
|
+
cli.ts call-tool memory create_entities '{"entities":[{"name":"Alice","entityType":"person"}]}'
|
|
189
|
+
cli.ts call-tool human-mcp playwright_screenshot_fullpage '{"url":"https://example.com"}'
|
|
190
|
+
|
|
191
|
+
Note: Tool analysis is done by the LLM reading assets/tools.json directly.
|
|
192
|
+
`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
main();
|