Anti-pattern detection and mentoring for better engineering decisions
Vibe Check MCP has 14 tools with moderate naming clarity but significant gaps in schema documentation and parameter descriptions. Tool names follow action-verb conventions (analyze_*, check_*, review_*), but descriptions vary widely in quality. Most critically, input schemas are visible in the source but many parameters lack proper type definitions and detailed descriptions. The server mixes specialized LLM analyzers (analyze_text_llm, analyze_code_llm, etc.) with system diagnostics (async_system_health_check, analyze_llm_status) in a way that conflates concerns. Several tools are marked [DIAGNOSTIC] but lack clarity on when/why to use them vs. production analyzers. Output schemas are not documented anywhere in the provided source. Error handling patterns are absent, no recovery guidance, no categorization of errors, no validation examples.
Specialized LLM analysis for code review and quality assessment
Fetch and analyze GitHub issue with LLM-powered anti-pattern detection
Fetch and analyze GitHub pull request with LLM-powered anti-pattern detection
Specialized LLM analysis for GitHub issue content
[DIAGNOSTIC] Check the status of external Claude CLI integration. Returns status information about external Claude CLI availability and configuration
Specialized LLM analysis for pull request review
Analyze text content using external Claude CLI for anti-pattern detection
Multiple tools lack documented output schemas. The source provides input schemas but no documentation of what fields/structures are returned. LLMs cannot plan chaining or extract data from unknown response structures.
Parameters like 'analysis_id' and 'detailed' lack type hints and constraint descriptions. E.g., 'analysis_id' has no format spec (UUID? alphanumeric?), and 'detailed' boolean has no explanation of what detail levels are returned.
Tools with empty input schemas (get_async_system_status, async_system_metrics, async_system_degradation_status, analyze_llm_status) provide no guidance on required auth, pagination, or filtering. Empty {} schemas leave LLM reasoning underspecified.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
[DIAGNOSTIC] Check if the async system is experiencing degradation or performance issues
[DIAGNOSTIC] Perform comprehensive health check of the async analysis system
[DIAGNOSTIC] Get detailed performance metrics from the async analysis system
[DIAGNOSTIC] Check the status of a queued async analysis. This tool allows users to monitor the progress of massive PRs that are being processed in the background queue system.
[DIAGNOSTIC] Get the overall status of the async analysis system. This tool provides system-wide information about the background processing queue, active workers, and performance metrics.
Comprehensive PR review with modular architecture. This is the main entry point that analyzes pull requests for anti-patterns and code quality issues.
[DIAGNOSTIC] Test Claude CLI without environment isolation (inherits all env vars).
Ambiguous tool names and purposes. [DIAGNOSTIC] tools (check_async_analysis_status, get_async_system_status, async_system_health_check, async_system_metrics, async_system_degradation_status, analyze_llm_status) are marked as diagnostic but no description clarifies the intended user workflow. When should an agent choose health_check vs metrics vs degradation_status? This violates the 'one clear job per tool' principle.
No error handling or recovery guidance. None of the tool descriptions explain what errors can occur (e.g., 'GitHub API rate limit', 'Claude CLI timeout') or what the LLM should do next. This violates recovery-guide and error-classification patterns.
test_claude_cli_with_env tool is a security concern. Running CLI commands with inherited environment variables (particularly env vars containing tokens, API keys, or credentials) can leak secrets. The description acknowledges 'inherits all env vars' but provides no sanitization or security guidance.
Parameter descriptions are generic and lack actionable constraints. E.g., 'pr_number' (integer, integer, integer), no minimum, no maximum, no guidance on GitHub PR numbering. 'repository' accepted as 'owner/repo' but no validation pattern stated. 'model' accepts 'sonnet, opus, or haiku' but these names are hardcoded without explanation of which Claude models they map to.
Tools are coarsely named but mix analysis concerns. 'analyze_text_llm', 'analyze_code_llm', 'analyze_pr_llm' are all variations of the same underlying operation. Consider: are these separate tools needed, or should this be a single 'analyze_content' tool with a 'content_type' enum? The distinction is unclear from the descriptions.