SuperClaude/docs/Development/cli-install-improvements.md
kazuki nakai 882a0d8356
refactor: PM Agent complete independence from external MCP servers (#439)
* refactor: PM Agent complete independence from external MCP servers

## Summary
Implement graceful degradation to ensure PM Agent operates fully without
any MCP server dependencies. MCP servers now serve as optional enhancements
rather than required components.

## Changes

### Responsibility Separation (NEW)
- **PM Agent**: Development workflow orchestration (PDCA cycle, task management)
- **mindbase**: Memory management (long-term, freshness, error learning)
- **Built-in memory**: Session-internal context (volatile)

### 3-Layer Memory Architecture with Fallbacks
1. **Built-in Memory** [OPTIONAL]: Session context via MCP memory server
2. **mindbase** [OPTIONAL]: Long-term semantic search via airis-mcp-gateway
3. **Local Files** [ALWAYS]: Core functionality in docs/memory/

### Graceful Degradation Implementation
- All MCP operations marked with [ALWAYS] or [OPTIONAL]
- Explicit IF/ELSE fallback logic for every MCP call
- Dual storage: Always write to local files + optionally to mindbase
- Smart lookup: Semantic search (if available) → Text search (always works)

### Key Fallback Strategies

**Session Start**:
- mindbase available: search_conversations() for semantic context
- mindbase unavailable: Grep docs/memory/*.jsonl for text-based lookup

**Error Detection**:
- mindbase available: Semantic search for similar past errors
- mindbase unavailable: Grep docs/mistakes/ + solutions_learned.jsonl

**Knowledge Capture**:
- Always: echo >> docs/memory/patterns_learned.jsonl (persistent)
- Optional: mindbase.store() for semantic search enhancement

## Benefits
-  Zero external dependencies (100% functionality without MCP)
-  Enhanced capabilities when MCPs available (semantic search, freshness)
-  No functionality loss, only reduced search intelligence
-  Transparent degradation (no error messages, automatic fallback)

## Related Research
- Serena MCP investigation: Exposes tools (not resources), memory = markdown files
- mindbase superiority: PostgreSQL + pgvector > Serena memory features
- Best practices alignment: /Users/kazuki/github/airis-mcp-gateway/docs/mcp-best-practices.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: add PR template and pre-commit config

- Add structured PR template with Git workflow checklist
- Add pre-commit hooks for secret detection and Conventional Commits
- Enforce code quality gates (YAML/JSON/Markdown lint, shellcheck)

NOTE: Execute pre-commit inside Docker container to avoid host pollution:
  docker compose exec workspace uv tool install pre-commit
  docker compose exec workspace pre-commit run --all-files

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* docs: update PM Agent context with token efficiency architecture

- Add Layer 0 Bootstrap (150 tokens, 95% reduction)
- Document Intent Classification System (5 complexity levels)
- Add Progressive Loading strategy (5-layer)
- Document mindbase integration incentive (38% savings)
- Update with 2025-10-17 redesign details

* refactor: PM Agent command with progressive loading

- Replace auto-loading with User Request First philosophy
- Add 5-layer progressive context loading
- Implement intent classification system
- Add workflow metrics collection (.jsonl)
- Document graceful degradation strategy

* fix: installer improvements

Update installer logic for better reliability

* docs: add comprehensive development documentation

- Add architecture overview
- Add PM Agent improvements analysis
- Add parallel execution architecture
- Add CLI install improvements
- Add code style guide
- Add project overview
- Add install process analysis

* docs: add research documentation

Add LLM agent token efficiency research and analysis

* docs: add suggested commands reference

* docs: add session logs and testing documentation

- Add session analysis logs
- Add testing documentation

* feat: migrate CLI to typer + rich for modern UX

## What Changed

### New CLI Architecture (typer + rich)
- Created `superclaude/cli/` module with modern typer-based CLI
- Replaced custom UI utilities with rich native features
- Added type-safe command structure with automatic validation

### Commands Implemented
- **install**: Interactive installation with rich UI (progress, panels)
- **doctor**: System diagnostics with rich table output
- **config**: API key management with format validation

### Technical Improvements
- Dependencies: Added typer>=0.9.0, rich>=13.0.0, click>=8.0.0
- Entry Point: Updated pyproject.toml to use `superclaude.cli.app:cli_main`
- Tests: Added comprehensive smoke tests (11 passed)

### User Experience Enhancements
- Rich formatted help messages with panels and tables
- Automatic input validation with retry loops
- Clear error messages with actionable suggestions
- Non-interactive mode support for CI/CD

## Testing

```bash
uv run superclaude --help     # ✓ Works
uv run superclaude doctor     # ✓ Rich table output
uv run superclaude config show # ✓ API key management
pytest tests/test_cli_smoke.py # ✓ 11 passed, 1 skipped
```

## Migration Path

-  P0: Foundation complete (typer + rich + smoke tests)
- 🔜 P1: Pydantic validation models (next sprint)
- 🔜 P2: Enhanced error messages (next sprint)
- 🔜 P3: API key retry loops (next sprint)

## Performance Impact

- **Code Reduction**: Prepared for -300 lines (custom UI → rich)
- **Type Safety**: Automatic validation from type hints
- **Maintainability**: Framework primitives vs custom code

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: consolidate documentation directories

Merged claudedocs/ into docs/research/ for consistent documentation structure.

Changes:
- Moved all claudedocs/*.md files to docs/research/
- Updated all path references in documentation (EN/KR)
- Updated RULES.md and research.md command templates
- Removed claudedocs/ directory
- Removed ClaudeDocs/ from .gitignore

Benefits:
- Single source of truth for all research reports
- PEP8-compliant lowercase directory naming
- Clearer documentation organization
- Prevents future claudedocs/ directory creation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* perf: reduce /sc:pm command output from 1652 to 15 lines

- Remove 1637 lines of documentation from command file
- Keep only minimal bootstrap message
- 99% token reduction on command execution
- Detailed specs remain in superclaude/agents/pm-agent.md

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* perf: split PM Agent into execution workflows and guide

- Reduce pm-agent.md from 735 to 429 lines (42% reduction)
- Move philosophy/examples to docs/agents/pm-agent-guide.md
- Execution workflows (PDCA, file ops) stay in pm-agent.md
- Guide (examples, quality standards) read once when needed

Token savings:
- Agent loading: ~6K → ~3.5K tokens (42% reduction)
- Total with pm.md: 71% overall reduction

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: consolidate PM Agent optimization and pending changes

PM Agent optimization (already committed separately):
- superclaude/commands/pm.md: 1652→14 lines
- superclaude/agents/pm-agent.md: 735→429 lines
- docs/agents/pm-agent-guide.md: new guide file

Other pending changes:
- setup: framework_docs, mcp, logger, remove ui.py
- superclaude: __main__, cli/app, cli/commands/install
- tests: test_ui updates
- scripts: workflow metrics analysis tools
- docs/memory: session state updates

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: simplify MCP installer to unified gateway with legacy mode

## Changes

### MCP Component (setup/components/mcp.py)
- Simplified to single airis-mcp-gateway by default
- Added legacy mode for individual official servers (sequential-thinking, context7, magic, playwright)
- Dynamic prerequisites based on mode:
  - Default: uv + claude CLI only
  - Legacy: node (18+) + npm + claude CLI
- Removed redundant server definitions

### CLI Integration
- Added --legacy flag to setup/cli/commands/install.py
- Added --legacy flag to superclaude/cli/commands/install.py
- Config passes legacy_mode to component installer

## Benefits
-  Simpler: 1 gateway vs 9+ individual servers
-  Lighter: No Node.js/npm required (default mode)
-  Unified: All tools in one gateway (sequential-thinking, context7, magic, playwright, serena, morphllm, tavily, chrome-devtools, git, puppeteer)
-  Flexible: --legacy flag for official servers if needed

## Usage
```bash
superclaude install              # Default: airis-mcp-gateway (推奨)
superclaude install --legacy     # Legacy: individual official servers
```

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: rename CoreComponent to FrameworkDocsComponent and add PM token tracking

## Changes

### Component Renaming (setup/components/)
- Renamed CoreComponent → FrameworkDocsComponent for clarity
- Updated all imports in __init__.py, agents.py, commands.py, mcp_docs.py, modes.py
- Better reflects the actual purpose (framework documentation files)

### PM Agent Enhancement (superclaude/commands/pm.md)
- Added token usage tracking instructions
- PM Agent now reports:
  1. Current token usage from system warnings
  2. Percentage used (e.g., "27% used" for 54K/200K)
  3. Status zone: 🟢 <75% | 🟡 75-85% | 🔴 >85%
- Helps prevent token exhaustion during long sessions

### UI Utilities (setup/utils/ui.py)
- Added new UI utility module for installer
- Provides consistent user interface components

## Benefits
-  Clearer component naming (FrameworkDocs vs Core)
-  PM Agent token awareness for efficiency
-  Better visual feedback with status zones

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(pm-agent): minimize output verbosity (471→284 lines, 40% reduction)

**Problem**: PM Agent generated excessive output with redundant explanations
- "System Status Report" with decorative formatting
- Repeated "Common Tasks" lists user already knows
- Verbose session start/end protocols
- Duplicate file operations documentation

**Solution**: Compress without losing functionality
- Session Start: Reduced to symbol-only status (🟢 branch | nM nD | token%)
- Session End: Compressed to essential actions only
- File Operations: Consolidated from 2 sections to 1 line reference
- Self-Improvement: 5 phases → 1 unified workflow
- Output Rules: Explicit constraints to prevent Claude over-explanation

**Quality Preservation**:
-  All core functions retained (PDCA, memory, patterns, mistakes)
-  PARALLEL Read/Write preserved (performance critical)
-  Workflow unchanged (session lifecycle intact)
-  Added output constraints (prevents verbose generation)

**Reduction Method**:
- Deleted: Explanatory text, examples, redundant sections
- Retained: Action definitions, file paths, core workflows
- Added: Explicit output constraints to enforce minimalism

**Token Impact**: 40% reduction in agent documentation size
**Before**: Verbose multi-section report with task lists
**After**: Single line status: 🟢 integration | 15M 17D | 36%

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: consolidate MCP integration to unified gateway

**Changes**:
- Remove individual MCP server docs (superclaude/mcp/*.md)
- Remove MCP server configs (superclaude/mcp/configs/*.json)
- Delete MCP docs component (setup/components/mcp_docs.py)
- Simplify installer (setup/core/installer.py)
- Update components for unified gateway approach

**Rationale**:
- Unified gateway (airis-mcp-gateway) provides all MCP servers
- Individual docs/configs no longer needed (managed centrally)
- Reduces maintenance burden and file count
- Simplifies installation process

**Files Removed**: 17 MCP files (docs + configs)
**Installer Changes**: Removed legacy MCP installation logic

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: update version and component metadata

- Bump version (pyproject.toml, setup/__init__.py)
- Update CLAUDE.md import service references
- Reflect component structure changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: kazuki <kazuki@kazukinoMacBook-Air.local>
Co-authored-by: Claude <noreply@anthropic.com>
2025-10-17 05:43:06 +05:30

17 KiB

SuperClaude Installation CLI Improvements

Date: 2025-10-17 Status: Proposed Enhancement Goal: Replace interactive prompts with efficient CLI flags for better developer experience

🎯 Objectives

  1. Speed: One-command installation without interactive prompts
  2. Scriptability: CI/CD and automation-friendly
  3. Clarity: Clear, self-documenting flags
  4. Flexibility: Support both simple and advanced use cases
  5. Backward Compatibility: Keep interactive mode as fallback

🚨 Current Problems

Problem 1: Slow Interactive Flow

# Current: Interactive (slow, manual)
$ uv run superclaude install

Stage 1: MCP Server Selection (Optional)
  Select MCP servers to configure:
  1. [ ] sequential-thinking
  2. [ ] context7
  ...
  > [user must manually select]

Stage 2: Framework Component Selection
  Select components (Core is recommended):
  1. [ ] core
  2. [ ] modes
  ...
  > [user must manually select again]

# Total time: ~60 seconds of clicking
# Automation: Impossible (requires human interaction)

Problem 2: Ambiguous Recommendations

Stage 2: "Select components (Core is recommended):"

User Confusion:
  - Does "Core" include everything needed?
  - What about mcp_docs? Is it needed?
  - Should I select "all" instead?
  - What's the difference between "recommended" and "Core"?

Problem 3: No Quick Profiles

# User wants: "Just install everything I need to get started"
# Current solution: Select ~8 checkboxes manually across 2 stages
# Better solution: `--recommended` flag

Proposed Solution

New CLI Flags

# Installation Profiles (Quick Start)
--minimal           # Minimal installation (core only)
--recommended       # Recommended for most users (complete working setup)
--all               # Install everything (all components + all MCP servers)

# Explicit Component Selection
--components NAMES  # Specific components (space-separated)
--mcp-servers NAMES # Specific MCP servers (space-separated)

# Interactive Override
--interactive       # Force interactive mode (default if no flags)
--yes, -y           # Auto-confirm (skip confirmation prompts)

# Examples
uv run superclaude install --recommended
uv run superclaude install --minimal
uv run superclaude install --all
uv run superclaude install --components core modes --mcp-servers airis-mcp-gateway

📋 Profile Definitions

Profile 1: Minimal

Profile: minimal
Purpose: Testing, development, minimal footprint
Components:
  - core
MCP Servers:
  - None
Use Cases:
  - Quick testing
  - CI/CD pipelines
  - Minimal installations
  - Development environments
Estimated Size: ~5 MB
Estimated Tokens: ~50K
Profile: recommended
Purpose: Complete working installation for most users
Components:
  - core
  - modes (7 behavioral modes)
  - commands (slash commands)
  - agents (15 specialized agents)
  - mcp_docs (documentation for MCP servers)
MCP Servers:
  - airis-mcp-gateway (dynamic tool loading, zero-token baseline)
Use Cases:
  - First-time installation
  - Production use
  - Recommended for 90% of users
Estimated Size: ~30 MB
Estimated Tokens: ~150K
Rationale:
  - Complete PM Agent functionality (sub-agent delegation)
  - Zero-token baseline with airis-mcp-gateway
  - All essential features included
  - No missing dependencies

Profile 3: Full

Profile: full
Purpose: Install everything available
Components:
  - core
  - modes
  - commands
  - agents
  - mcp
  - mcp_docs
MCP Servers:
  - airis-mcp-gateway
  - sequential-thinking
  - context7
  - magic
  - playwright
  - serena
  - morphllm-fast-apply
  - tavily
  - chrome-devtools
Use Cases:
  - Power users
  - Comprehensive installations
  - Testing all features
Estimated Size: ~50 MB
Estimated Tokens: ~250K

🔧 Implementation Changes

File: setup/cli/commands/install.py

Change 1: Add Profile Arguments

# Line ~64 (after --components argument)

parser.add_argument(
    "--minimal",
    action="store_true",
    help="Minimal installation (core only, no MCP servers)"
)

parser.add_argument(
    "--recommended",
    action="store_true",
    help="Recommended installation (core + modes + commands + agents + mcp_docs + airis-mcp-gateway)"
)

parser.add_argument(
    "--all",
    action="store_true",
    help="Install all components and all MCP servers"
)

parser.add_argument(
    "--mcp-servers",
    type=str,
    nargs="+",
    help="Specific MCP servers to install (space-separated list)"
)

parser.add_argument(
    "--interactive",
    action="store_true",
    help="Force interactive mode (default if no profile flags)"
)

Change 2: Profile Resolution Logic

# Add new function after line ~172

def resolve_profile(args: argparse.Namespace) -> tuple[List[str], List[str]]:
    """
    Resolve installation profile from CLI arguments

    Returns:
        (components, mcp_servers)
    """

    # Check for conflicting profiles
    profile_flags = [args.minimal, args.recommended, args.all]
    if sum(profile_flags) > 1:
        raise ValueError("Only one profile flag can be specified: --minimal, --recommended, or --all")

    # Minimal profile
    if args.minimal:
        return ["core"], []

    # Recommended profile (default for --recommended)
    if args.recommended:
        return (
            ["core", "modes", "commands", "agents", "mcp_docs"],
            ["airis-mcp-gateway"]
        )

    # Full profile
    if args.all:
        components = ["core", "modes", "commands", "agents", "mcp", "mcp_docs"]
        mcp_servers = [
            "airis-mcp-gateway",
            "sequential-thinking",
            "context7",
            "magic",
            "playwright",
            "serena",
            "morphllm-fast-apply",
            "tavily",
            "chrome-devtools"
        ]
        return components, mcp_servers

    # Explicit component selection
    if args.components:
        components = args.components if isinstance(args.components, list) else [args.components]
        mcp_servers = args.mcp_servers if args.mcp_servers else []

        # Auto-include mcp_docs if any MCP servers selected
        if mcp_servers and "mcp_docs" not in components:
            components.append("mcp_docs")
            logger.info("Auto-included mcp_docs for MCP server documentation")

        # Auto-include mcp component if MCP servers selected
        if mcp_servers and "mcp" not in components:
            components.append("mcp")
            logger.info("Auto-included mcp component for MCP server support")

        return components, mcp_servers

    # No profile specified: return None to trigger interactive mode
    return None, None

Change 3: Update get_components_to_install

# Modify function at line ~126

def get_components_to_install(
    args: argparse.Namespace, registry: ComponentRegistry, config_manager: ConfigService
) -> Optional[List[str]]:
    """Determine which components to install"""
    logger = get_logger()

    # Try to resolve from profile flags first
    components, mcp_servers = resolve_profile(args)

    if components is not None:
        # Profile resolved, store MCP servers in config
        if not hasattr(config_manager, "_installation_context"):
            config_manager._installation_context = {}
        config_manager._installation_context["selected_mcp_servers"] = mcp_servers

        logger.info(f"Profile selected: {len(components)} components, {len(mcp_servers)} MCP servers")
        return components

    # No profile flags: fall back to interactive mode
    if args.interactive or not (args.minimal or args.recommended or args.all or args.components):
        return interactive_component_selection(registry, config_manager)

    # Should not reach here
    return None

📖 Updated Documentation

README.md Installation Section

## Installation

### Quick Start (Recommended)
```bash
# One-command installation with everything you need
uv run superclaude install --recommended

This installs:

  • Core framework
  • 7 behavioral modes
  • SuperClaude slash commands
  • 15 specialized AI agents
  • airis-mcp-gateway (zero-token baseline)
  • Complete documentation

Installation Profiles

Minimal (testing/development):

uv run superclaude install --minimal

Recommended (most users):

uv run superclaude install --recommended

Full (power users):

uv run superclaude install --all

Custom Installation

Select specific components:

uv run superclaude install --components core modes commands

Select specific MCP servers:

uv run superclaude install --components core mcp_docs --mcp-servers airis-mcp-gateway context7

Interactive Mode

If you prefer the guided installation:

uv run superclaude install --interactive

Automation (CI/CD)

For automated installations:

uv run superclaude install --recommended --yes

The --yes flag skips confirmation prompts.


### CONTRIBUTING.md Developer Quickstart
```markdown
## Developer Setup

### Quick Setup
```bash
# Clone repository
git clone https://github.com/SuperClaude-Org/SuperClaude_Framework.git
cd SuperClaude_Framework

# Install development dependencies
uv sync

# Run tests
pytest tests/ -v

# Install SuperClaude (recommended profile)
uv run superclaude install --recommended

Testing Different Profiles

# Test minimal installation
uv run superclaude install --minimal --install-dir /tmp/test-minimal

# Test recommended installation
uv run superclaude install --recommended --install-dir /tmp/test-recommended

# Test full installation
uv run superclaude install --all --install-dir /tmp/test-full

Performance Benchmarking

# Run installation performance benchmarks
pytest tests/performance/test_installation_performance.py -v --benchmark

# Compare profiles
pytest tests/performance/test_installation_performance.py::test_compare_profiles -v

## 🎯 User Experience Improvements

### Before (Current)
```bash
$ uv run superclaude install
[Interactive Stage 1: MCP selection]
[User clicks through options]
[Interactive Stage 2: Component selection]
[User clicks through options again]
[Confirmation prompt]
[Installation starts]

Time: ~60 seconds of user interaction
Scriptable: No
Clear expectations: Ambiguous ("Core is recommended" unclear)

After (Proposed)

$ uv run superclaude install --recommended
[Installation starts immediately]
[Progress bar shown]
[Installation complete]

Time: 0 seconds of user interaction
Scriptable: Yes
Clear expectations: Yes (documented profile)

Comparison Table

Aspect Current (Interactive) Proposed (CLI Flags)
User Interaction Time ~60 seconds 0 seconds
Scriptable No Yes
CI/CD Friendly No Yes
Clear Expectations Ambiguous Well-documented
One-Command Install No Yes
Automation Impossible Easy
Profile Comparison Manual Benchmarked

🧪 Testing Plan

Unit Tests

# tests/test_install_cli_flags.py

def test_profile_minimal():
    """Test --minimal flag"""
    args = parse_args(["install", "--minimal"])
    components, mcp_servers = resolve_profile(args)

    assert components == ["core"]
    assert mcp_servers == []

def test_profile_recommended():
    """Test --recommended flag"""
    args = parse_args(["install", "--recommended"])
    components, mcp_servers = resolve_profile(args)

    assert "core" in components
    assert "modes" in components
    assert "commands" in components
    assert "agents" in components
    assert "mcp_docs" in components
    assert "airis-mcp-gateway" in mcp_servers

def test_profile_full():
    """Test --all flag"""
    args = parse_args(["install", "--all"])
    components, mcp_servers = resolve_profile(args)

    assert len(components) == 6  # All components
    assert len(mcp_servers) >= 5  # All MCP servers

def test_profile_conflict():
    """Test conflicting profile flags"""
    with pytest.raises(ValueError):
        args = parse_args(["install", "--minimal", "--recommended"])
        resolve_profile(args)

def test_explicit_components_auto_mcp_docs():
    """Test auto-inclusion of mcp_docs when MCP servers selected"""
    args = parse_args([
        "install",
        "--components", "core", "modes",
        "--mcp-servers", "airis-mcp-gateway"
    ])
    components, mcp_servers = resolve_profile(args)

    assert "core" in components
    assert "modes" in components
    assert "mcp_docs" in components  # Auto-included
    assert "mcp" in components  # Auto-included
    assert "airis-mcp-gateway" in mcp_servers

Integration Tests

# tests/integration/test_install_profiles.py

def test_install_minimal_profile(tmp_path):
    """Test full installation with --minimal"""
    install_dir = tmp_path / "minimal"

    result = subprocess.run(
        ["uv", "run", "superclaude", "install", "--minimal", "--install-dir", str(install_dir), "--yes"],
        capture_output=True,
        text=True
    )

    assert result.returncode == 0
    assert (install_dir / "CLAUDE.md").exists()
    assert (install_dir / "core").exists() or len(list(install_dir.glob("*.md"))) > 0

def test_install_recommended_profile(tmp_path):
    """Test full installation with --recommended"""
    install_dir = tmp_path / "recommended"

    result = subprocess.run(
        ["uv", "run", "superclaude", "install", "--recommended", "--install-dir", str(install_dir), "--yes"],
        capture_output=True,
        text=True
    )

    assert result.returncode == 0
    assert (install_dir / "CLAUDE.md").exists()

    # Verify key components installed
    assert any(p.match("*MODE_*.md") for p in install_dir.glob("**/*.md"))  # Modes
    assert any(p.match("MCP_*.md") for p in install_dir.glob("**/*.md"))  # MCP docs

Performance Tests

# Use existing benchmark suite
pytest tests/performance/test_installation_performance.py -v

# Expected results:
# - minimal: ~5 MB, ~50K tokens
# - recommended: ~30 MB, ~150K tokens (3x minimal)
# - full: ~50 MB, ~250K tokens (5x minimal)

📋 Migration Path

Phase 1: Add CLI Flags (Backward Compatible)

Changes:
  - Add --minimal, --recommended, --all flags
  - Add --mcp-servers flag
  - Keep interactive mode as default
  - No breaking changes

Testing:
  - Run all existing tests (should pass)
  - Add new tests for CLI flags
  - Performance benchmarks

Release: v4.2.0 (minor version bump)

Phase 2: Update Documentation

Changes:
  - Update README.md with new flags
  - Update CONTRIBUTING.md with quickstart
  - Add installation guide (docs/installation-guide.md)
  - Update examples

Release: v4.2.1 (patch)

Phase 3: Promote CLI Flags (Optional)

Changes:
  - Make --recommended default if no args
  - Keep interactive available via --interactive flag
  - Update CLI help text

Testing:
  - User feedback collection
  - A/B testing (if possible)

Release: v4.3.0 (minor version bump)

🎯 Success Metrics

Quantitative Metrics

Installation Time:
  Current (Interactive): ~60 seconds of user interaction
  Target (CLI Flags): ~0 seconds of user interaction
  Goal: 100% reduction in manual interaction time

Scriptability:
  Current: 0% (requires human interaction)
  Target: 100% (fully scriptable)

CI/CD Adoption:
  Current: Not possible
  Target: >50% of automated deployments use CLI flags

Qualitative Metrics

User Satisfaction:
  Survey question: "How satisfied are you with the installation process?"
  Target: >90% satisfied or very satisfied

Clarity:
  Survey question: "Did you understand what would be installed?"
  Target: >95% clear understanding

Recommendation:
  Survey question: "Would you recommend this installation method?"
  Target: >90% would recommend

🚀 Next Steps

  1. Document CLI improvements proposal (this file)
  2. Implement profile resolution logic
  3. Add CLI argument parsing
  4. Write unit tests for profile resolution
  5. Write integration tests for installations
  6. Run performance benchmarks (minimal, recommended, full)
  7. Update documentation (README, CONTRIBUTING, installation guide)
  8. Gather user feedback
  9. Prepare Pull Request with evidence

📊 Pull Request Checklist

Before submitting PR:

  • All new CLI flags implemented
  • Profile resolution logic added
  • Unit tests written and passing (>90% coverage)
  • Integration tests written and passing
  • Performance benchmarks run (results documented)
  • Documentation updated (README, CONTRIBUTING, installation guide)
  • Backward compatibility maintained (interactive mode still works)
  • No breaking changes
  • User feedback collected (if possible)
  • Examples tested manually
  • CI/CD pipeline tested

Conclusion: CLI flags will dramatically improve the installation experience, making it faster, scriptable, and more suitable for CI/CD workflows. The recommended profile provides a clear, well-documented default that works for 90% of users while maintaining flexibility for advanced use cases.

User Benefit: One-command installation (--recommended) with zero interaction time, clear expectations, and full scriptability for automation.