Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.initrepo.com/llms.txt

Use this file to discover all available pages before exploring further.

Advanced Feature Overview

The InitRepo CLI goes beyond basic code analysis to provide enterprise-grade automation, team collaboration features, and comprehensive integration capabilities. This guide covers advanced usage patterns for power users, teams, and enterprise environments.

CI/CD Integration

Automated quality gates and reporting in build pipelines

Team Workflows

Standardized analysis and collaborative development practices

API Integration

Programmatic access and custom automation solutions

Enterprise Features

Large-scale analysis, compliance, and security features

CI/CD Integration

GitHub Actions Integration

Complete GitHub Actions workflow for automated quality checks:
# .github/workflows/code-quality.yml
name: InitRepo Code Quality Analysis
on: [push, pull_request]

jobs:
  quality-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'

      - name: Install InitRepo CLI
        run: npm install -g initrepo-cli

      - name: Structure Validation
        run: |
          initrepo-cli validate-structure --format=json > validation.json
          echo "Structure validation completed"

      - name: Complexity Analysis
        run: |
          initrepo-cli analyze-complexity --threshold=15 --format=json > complexity.json
          echo "Complexity analysis completed"

      - name: Import Analysis
        run: |
          initrepo-cli analyze-imports --format=json > imports.json
          echo "Import analysis completed"

      - name: Quality Gate
        run: |
          score=$(jq '.data.score' validation.json)
          high_complexity=$(jq '.data.summary.highPriority' complexity.json)
          unused_imports=$(jq '.data.summary.unusedImports' imports.json)
          
          echo "📊 Quality Metrics:"
          echo "Structure Score: $score/100"
          echo "High Complexity Issues: $high_complexity"
          echo "Unused Imports: $unused_imports"
          
          if [ "$score" -lt 80 ]; then
            echo "❌ Structure score too low: $score/100"
            exit 1
          fi
          
          if [ "$high_complexity" -gt 5 ]; then
            echo "❌ Too many high complexity issues: $high_complexity"
            exit 1
          fi
          
          echo "✅ Quality gate passed!"

      - name: Upload Reports
        uses: actions/upload-artifact@v3
        with:
          name: quality-reports
          path: |
            validation.json
            complexity.json
            imports.json

GitLab CI Integration

# .gitlab-ci.yml
stages:
  - quality

initrepo_analysis:
  stage: quality
  image: node:18
  before_script:
    - npm install -g initrepo-cli
  script:
    - echo "🔍 Running InitRepo analysis..."
    - initrepo-cli validate-structure --format=json > validation.json
    - initrepo-cli analyze-complexity --format=json > complexity.json
    - initrepo-cli analyze-imports --format=json > imports.json
    
    # Quality gates
    - |
      score=$(jq '.data.score' validation.json)
      if [ "$score" -lt 70 ]; then
        echo "Structure score too low: $score/100"
        exit 1
      fi
      echo "✅ Quality checks passed!"
  artifacts:
    paths:
      - validation.json
      - complexity.json
      - imports.json
    expire_in: 1 week
  only:
    - merge_requests

Jenkins Pipeline Integration

// Jenkinsfile
pipeline {
    agent any

    stages {
        stage('Setup') {
            steps {
                sh 'npm install -g initrepo-cli'
            }
        }

        stage('Code Quality Analysis') {
            steps {
                sh '''
                    echo "🔍 Running InitRepo analysis..."
                    initrepo-cli validate-structure --format=json > validation.json
                    initrepo-cli analyze-complexity --format=json > complexity.json
                    initrepo-cli analyze-imports --format=json > imports.json
                '''
                archiveArtifacts artifacts: '*.json', fingerprint: true
            }
        }

        stage('Quality Gate') {
            steps {
                script {
                    def validation = readJSON file: 'validation.json'
                    def complexity = readJSON file: 'complexity.json'
                    def imports = readJSON file: 'imports.json'

                    echo "📊 Quality Metrics:"
                    echo "Structure Score: ${validation.data.score}/100"
                    echo "High Complexity: ${complexity.data.summary.highPriority}"
                    echo "Unused Imports: ${imports.data.summary.unusedImports}"

                    if (validation.data.score < 75) {
                        error("Structure score too low: ${validation.data.score}/100")
                    }

                    if (complexity.data.summary.highPriority > 10) {
                        error("Too many high complexity issues: ${complexity.data.summary.highPriority}")
                    }

                    echo "✅ Quality gate passed!"
                }
            }
        }
    }

    post {
        always {
            publishHTML([
                allowMissing: false,
                alwaysLinkToLastBuild: true,
                keepAll: true,
                reportDir: '.',
                reportFiles: '*.json',
                reportName: 'InitRepo Analysis Report'
            ])
        }
    }
}

Automation & Scripting

Shell Script Integration

Create powerful automation scripts for consistent quality checks:
#!/bin/bash
# comprehensive-analysis.sh - Complete project analysis workflow

set -e  # Exit on any error

PROJECT_NAME="${1:-$(basename $(pwd))}"
OUTPUT_DIR="${2:-./initrepo-reports}"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")

echo "🚀 Starting comprehensive analysis for $PROJECT_NAME..."

# Create output directory
mkdir -p "$OUTPUT_DIR"

# Run all analyses
echo "📊 Running structure validation..."
initrepo-cli validate-structure --format=json > "$OUTPUT_DIR/validation_$TIMESTAMP.json"

echo "🔍 Running complexity analysis..."
initrepo-cli analyze-complexity --threshold=12 --format=json > "$OUTPUT_DIR/complexity_$TIMESTAMP.json"

echo "📋 Running import analysis..."
initrepo-cli analyze-imports --format=json > "$OUTPUT_DIR/imports_$TIMESTAMP.json"

echo "📦 Running dependency analysis..."
initrepo-cli deps --format=json > "$OUTPUT_DIR/dependencies_$TIMESTAMP.json"

echo "🎯 Running refactoring analysis..."
initrepo-cli suggest-refactor --format=json > "$OUTPUT_DIR/refactor_$TIMESTAMP.json"

# Generate comprehensive report
echo "📝 Generating comprehensive report..."
cat > "$OUTPUT_DIR/summary_$TIMESTAMP.md" << EOF
# Comprehensive Analysis Report - $PROJECT_NAME

**Generated:** $(date)
**Analysis ID:** $TIMESTAMP

## Summary

### Structure Validation
- **Score:** $(jq '.data.score' "$OUTPUT_DIR/validation_$TIMESTAMP.json")/100
- **Issues:** $(jq '.data.issues | length' "$OUTPUT_DIR/validation_$TIMESTAMP.json")

### Code Complexity
- **Total Functions:** $(jq '.data.summary.totalFunctions' "$OUTPUT_DIR/complexity_$TIMESTAMP.json")
- **High Priority:** $(jq '.data.summary.highPriority' "$OUTPUT_DIR/complexity_$TIMESTAMP.json")
- **Average Complexity:** $(jq '.data.summary.averageComplexity' "$OUTPUT_DIR/complexity_$TIMESTAMP.json")

### Import Health
- **Total Imports:** $(jq '.data.summary.totalImports' "$OUTPUT_DIR/imports_$TIMESTAMP.json")
- **Unused Imports:** $(jq '.data.summary.unusedImports' "$OUTPUT_DIR/imports_$TIMESTAMP.json")
- **Circular Dependencies:** $(jq '.data.summary.circularDependencies' "$OUTPUT_DIR/imports_$TIMESTAMP.json")

### Dependencies
- **Runtime:** $(jq '.data.runtime | length' "$OUTPUT_DIR/dependencies_$TIMESTAMP.json")
- **Development:** $(jq '.data.development | length' "$OUTPUT_DIR/dependencies_$TIMESTAMP.json")

### Refactoring Suggestions
- **Total Suggestions:** $(jq '.data.suggestions | length' "$OUTPUT_DIR/refactor_$TIMESTAMP.json")

## Recommendations

$(jq -r '.data.recommendations[]' "$OUTPUT_DIR/refactor_$TIMESTAMP.json" 2>/dev/null || echo "No specific recommendations available")

EOF

echo "✅ Analysis complete! Reports available in: $OUTPUT_DIR"
echo "📋 Summary: $OUTPUT_DIR/summary_$TIMESTAMP.md"

Node.js API Integration

Create programmatic interfaces for custom tooling:
// initrepo-api.js - Programmatic InitRepo interface
const { exec } = require('child_process');
const util = require('util');
const execAsync = util.promisify(exec);

class InitRepoAPI {
    constructor(projectPath = process.cwd()) {
        this.projectPath = projectPath;
    }

    async analyzeProject(options = {}) {
        const commands = {
            structure: 'initrepo-cli validate-structure --format=json',
            complexity: `initrepo-cli analyze-complexity --threshold=${options.threshold || 10} --format=json`,
            imports: 'initrepo-cli analyze-imports --format=json',
            dependencies: 'initrepo-cli deps --format=json'
        };

        const results = {};
        
        for (const [key, command] of Object.entries(commands)) {
            try {
                console.log(`🔍 Running ${key} analysis...`);
                const { stdout } = await execAsync(command, { cwd: this.projectPath });
                results[key] = JSON.parse(stdout);
            } catch (error) {
                console.error(`❌ Error in ${key} analysis:`, error.message);
                results[key] = { error: error.message };
            }
        }

        return {
            timestamp: new Date().toISOString(),
            projectPath: this.projectPath,
            results
        };
    }

    async safeRefactor(oldName, newName, options = {}) {
        const dryRun = options.preview ? '--dry-run' : '';
        const backup = options.backup ? '--backup' : '';
        
        try {
            const { stdout } = await execAsync(
                `initrepo-cli safe-rename "${oldName}" "${newName}" ${dryRun} ${backup} --format=json`,
                { cwd: this.projectPath }
            );
            return JSON.parse(stdout);
        } catch (error) {
            throw new Error(`Refactoring failed: ${error.message}`);
        }
    }

    async generateReport(outputPath = './initrepo-report.json') {
        const analysis = await this.analyzeProject();
        
        // Add quality score calculation
        const structureScore = analysis.results.structure?.data?.score || 0;
        const complexityIssues = analysis.results.complexity?.data?.summary?.highPriority || 0;
        const unusedImports = analysis.results.imports?.data?.summary?.unusedImports || 0;
        
        const report = {
            ...analysis,
            qualityMetrics: {
                structureScore,
                complexityIssues,
                unusedImports,
                overallGrade: this.calculateGrade(structureScore, complexityIssues, unusedImports)
            }
        };

        const fs = require('fs').promises;
        await fs.writeFile(outputPath, JSON.stringify(report, null, 2));
        
        return report;
    }

    calculateGrade(structureScore, complexityIssues, unusedImports) {
        let score = structureScore;
        score -= (complexityIssues * 5); // -5 points per high complexity issue
        score -= (unusedImports * 1); // -1 point per unused import
        
        if (score >= 90) return 'A';
        if (score >= 80) return 'B';
        if (score >= 70) return 'C';
        if (score >= 60) return 'D';
        return 'F';
    }
}

// Usage example
async function main() {
    const api = new InitRepoAPI('/path/to/project');
    
    try {
        console.log('🚀 Starting comprehensive analysis...');
        const report = await api.generateReport('./project-analysis.json');
        
        console.log('📊 Analysis Results:');
        console.log(`Structure Score: ${report.qualityMetrics.structureScore}/100`);
        console.log(`Complexity Issues: ${report.qualityMetrics.complexityIssues}`);
        console.log(`Unused Imports: ${report.qualityMetrics.unusedImports}`);
        console.log(`Overall Grade: ${report.qualityMetrics.overallGrade}`);
        
    } catch (error) {
        console.error('❌ Analysis failed:', error.message);
        process.exit(1);
    }
}

// Export for use in other modules
module.exports = InitRepoAPI;

// Run if called directly
if (require.main === module) {
    main();
}

Team Collaboration Features

Standardized Team Workflows

#!/bin/bash
# team-setup.sh - Set up standardized team configuration

TEAM_CONFIG_DIR="./team-initrepo-config"

echo "🏗️ Setting up team InitRepo configuration..."

# Create team configuration directory
mkdir -p "$TEAM_CONFIG_DIR"

# Team .initrepoignore template
cat > "$TEAM_CONFIG_DIR/.initrepoignore" << 'EOF'
# Team standard exclusions
node_modules/
.git/
dist/
build/
coverage/
.cache/
*.log
.env*
.DS_Store
Thumbs.db

# IDE files
.vscode/
.idea/
*.swp
*.swo

# Temporary files
*.tmp
*.temp
.tmp/
EOF

# Team coding standards configuration
cat > "$TEAM_CONFIG_DIR/coding-standards.json" << 'EOF'
{
  "complexityThreshold": 10,
  "maxFileSize": 500,
  "requireReadme": true,
  "requireTests": true,
  "namingConvention": "camelCase",
  "maxFunctionLength": 50,
  "maxClassLength": 300
}
EOF

# Team analysis script
cat > "$TEAM_CONFIG_DIR/team-analysis.sh" << 'EOF'
#!/bin/bash
# team-analysis.sh - Standardized team analysis

PROJECT_NAME="${1:-$(basename $(pwd))}"
echo "🔍 Running standardized team analysis for $PROJECT_NAME..."

# Copy team configuration
cp team-initrepo-config/.initrepoignore ./ 2>/dev/null || true

# Run standardized analysis
initrepo-cli validate-structure --format=json > "team-validation.json"
initrepo-cli analyze-complexity --threshold=10 --format=json > "team-complexity.json"
initrepo-cli analyze-imports --format=json > "team-imports.json"

# Generate team report
echo "📋 Generating team report..."
cat > "team-report.md" << 'REPORT'
# Team Analysis Report

## Quality Metrics
- Structure Score: $(jq '.data.score' team-validation.json)/100
- High Complexity Issues: $(jq '.data.summary.highPriority' team-complexity.json)
- Unused Imports: $(jq '.data.summary.unusedImports' team-imports.json)

## Team Standards Compliance
$(jq -r '.data.compliance | to_entries[] | "- \(.key): \(.value)"' team-validation.json 2>/dev/null || echo "- Standards check: In progress")

## Recommendations
$(jq -r '.data.recommendations[]?' team-complexity.json 2>/dev/null || echo "See detailed JSON files for specific recommendations")
REPORT

echo "✅ Team analysis complete!"
echo "📄 Report: team-report.md"
EOF

chmod +x "$TEAM_CONFIG_DIR/team-analysis.sh"

echo "✅ Team configuration setup complete!"
echo "📁 Configuration available in: $TEAM_CONFIG_DIR"
echo "🚀 Run: $TEAM_CONFIG_DIR/team-analysis.sh"

Pre-commit Hooks

Integrate InitRepo with Git hooks for automatic quality checks:
#!/bin/bash
# .git/hooks/pre-commit - InitRepo quality gate

echo "🔍 Running InitRepo quality checks..."

# Run lightweight analysis
initrepo-cli validate-structure --format=json > /tmp/pre-commit-structure.json
initrepo-cli analyze-imports --format=json > /tmp/pre-commit-imports.json

# Check structure score
score=$(jq '.data.score' /tmp/pre-commit-structure.json)
unused_imports=$(jq '.data.summary.unusedImports' /tmp/pre-commit-imports.json)

echo "📊 Pre-commit Results:"
echo "Structure Score: $score/100"
echo "Unused Imports: $unused_imports"

if [ "$score" -lt 70 ]; then
    echo "❌ Structure score too low: $score/100"
    echo "Please improve project structure before committing."
    exit 1
fi

if [ "$unused_imports" -gt 10 ]; then
    echo "⚠️ Many unused imports: $unused_imports"
    echo "Consider cleaning up imports: initrepo-cli manage-imports --remove-unused"
    # Don't block commit for unused imports, just warn
fi

echo "✅ Pre-commit quality checks passed!"

Enterprise Features

Large-Scale Analysis

For enterprise environments with multiple repositories:
#!/bin/bash
# enterprise-analysis.sh - Multi-repository analysis

REPOS_DIR="${1:-./repositories}"
OUTPUT_DIR="${2:-./enterprise-analysis}"
PARALLEL_JOBS="${3:-4}"

echo "🏢 Starting enterprise-wide analysis..."
echo "Repositories: $REPOS_DIR"
echo "Output: $OUTPUT_DIR" 
echo "Parallel jobs: $PARALLEL_JOBS"

mkdir -p "$OUTPUT_DIR"

# Function to analyze a single repository
analyze_repo() {
    local repo_path="$1"
    local repo_name=$(basename "$repo_path")
    
    echo "🔍 Analyzing $repo_name..."
    
    cd "$repo_path"
    
    # Run comprehensive analysis
    initrepo-cli validate-structure --format=json > "$OUTPUT_DIR/${repo_name}-structure.json"
    initrepo-cli analyze-complexity --format=json > "$OUTPUT_DIR/${repo_name}-complexity.json"
    initrepo-cli analyze-imports --format=json > "$OUTPUT_DIR/${repo_name}-imports.json"
    initrepo-cli deps --format=json > "$OUTPUT_DIR/${repo_name}-deps.json"
    
    echo "✅ Completed analysis for $repo_name"
}

# Export function for parallel execution
export -f analyze_repo
export OUTPUT_DIR

# Find all repositories and run analysis in parallel
find "$REPOS_DIR" -type d -name ".git" | while read git_dir; do
    echo "${git_dir%/.git}"
done | xargs -I {} -P "$PARALLEL_JOBS" bash -c 'analyze_repo "{}"'

# Generate enterprise summary report
echo "📊 Generating enterprise summary..."

python3 << 'EOF'
import json
import os
import glob
from datetime import datetime

output_dir = os.environ['OUTPUT_DIR']
repos = set()

# Collect all repository names
for file in glob.glob(f"{output_dir}/*-structure.json"):
    repo = os.path.basename(file).replace('-structure.json', '')
    repos.add(repo)

summary = {
    'timestamp': datetime.now().isoformat(),
    'total_repositories': len(repos),
    'repositories': {}
}

for repo in repos:
    try:
        with open(f"{output_dir}/{repo}-structure.json") as f:
            structure = json.load(f)
        with open(f"{output_dir}/{repo}-complexity.json") as f:
            complexity = json.load(f)
        with open(f"{output_dir}/{repo}-imports.json") as f:
            imports = json.load(f)
            
        summary['repositories'][repo] = {
            'structure_score': structure.get('data', {}).get('score', 0),
            'complexity_issues': complexity.get('data', {}).get('summary', {}).get('highPriority', 0),
            'unused_imports': imports.get('data', {}).get('summary', {}).get('unusedImports', 0)
        }
    except Exception as e:
        print(f"Error processing {repo}: {e}")

with open(f"{output_dir}/enterprise-summary.json", 'w') as f:
    json.dump(summary, f, indent=2)

print("📋 Enterprise summary saved to enterprise-summary.json")
EOF

echo "🎉 Enterprise analysis complete!"
echo "📊 Summary: $OUTPUT_DIR/enterprise-summary.json"

Compliance and Security

#!/bin/bash
# compliance-check.sh - Security and compliance validation

echo "🔒 Running compliance and security checks..."

# Security-focused analysis
initrepo-cli analyze-imports --check-security --format=json > security-analysis.json

# Compliance validation (future feature)
# initrepo-cli validate-compliance --standard=sox --format=json > compliance.json

# Custom security patterns check
security_patterns=(
    "password.*=.*[\"'].*[\"']"
    "api_key.*=.*[\"'].*[\"']"
    "secret.*=.*[\"'].*[\"']"
    "token.*=.*[\"'].*[\"']"
)

echo "🔍 Checking for security patterns..."
for pattern in "${security_patterns[@]}"; do
    if grep -r -E "$pattern" . --exclude-dir=node_modules --exclude-dir=.git; then
        echo "⚠️ Potential security issue found: $pattern"
    fi
done

echo "✅ Security and compliance check complete"

Team Collaboration Features

Standardized Team Workflows

Create consistent analysis workflows across your development team:
#!/bin/bash
# team-setup.sh - Set up standardized team configuration

TEAM_CONFIG_DIR="./team-initrepo-config"

echo "🏗️ Setting up team InitRepo configuration..."

# Create team configuration directory
mkdir -p "$TEAM_CONFIG_DIR"

# Team .initrepoignore template
cat > "$TEAM_CONFIG_DIR/.initrepoignore" << 'EOF'
# Team standard exclusions
node_modules/
.git/
dist/
build/
*.log
.env*
coverage/
.DS_Store
Thumbs.db

# IDE files
.vscode/
.idea/
*.swp
*.swo

# Temporary files
*.tmp
*.temp
.tmp/
EOF

# Team coding standards configuration
cat > "$TEAM_CONFIG_DIR/coding-standards.json" << 'EOF'
{
  "complexityThreshold": 10,
  "maxFileSize": 500,
  "requireReadme": true,
  "requireTests": true,
  "namingConvention": "camelCase",
  "maxFunctionLength": 50,
  "maxClassLength": 300
}
EOF

# Team analysis script
cat > "$TEAM_CONFIG_DIR/team-analysis.sh" << 'EOF'
#!/bin/bash
# team-analysis.sh - Standardized team analysis

PROJECT_NAME="${1:-$(basename $(pwd))}"
echo "🔍 Running standardized team analysis for $PROJECT_NAME..."

# Copy team configuration
cp team-initrepo-config/.initrepoignore ./ 2>/dev/null || true

# Run standardized analysis
initrepo-cli validate-structure --format=json > "team-validation.json"
initrepo-cli analyze-complexity --threshold=10 --format=json > "team-complexity.json"
initrepo-cli analyze-imports --format=json > "team-imports.json"

# Generate team report
echo "📋 Generating team report..."
cat > "team-report.md" << 'REPORT'
# Team Analysis Report

## Quality Metrics
- Structure Score: $(jq '.data.score' team-validation.json)/100
- High Complexity Issues: $(jq '.data.summary.highPriority' team-complexity.json)
- Unused Imports: $(jq '.data.summary.unusedImports' team-imports.json)

## Team Standards Compliance
$(jq -r '.data.compliance | to_entries[] | "- \(.key): \(.value)"' team-validation.json 2>/dev/null || echo "- Standards check: In progress")

## Recommendations
$(jq -r '.data.recommendations[]?' team-complexity.json 2>/dev/null || echo "See detailed JSON files for specific recommendations")
REPORT

echo "✅ Team analysis complete!"
echo "📄 Report: team-report.md"
EOF

chmod +x "$TEAM_CONFIG_DIR/team-analysis.sh"

echo "✅ Team configuration setup complete!"
echo "📁 Configuration available in: $TEAM_CONFIG_DIR"
echo "🚀 Run: $TEAM_CONFIG_DIR/team-analysis.sh"

Pre-commit Hooks

Integrate InitRepo with Git hooks for automatic quality checks:
#!/bin/bash
# .git/hooks/pre-commit - InitRepo quality gate

echo "🔍 Running InitRepo quality checks..."

# Run lightweight analysis
initrepo-cli validate-structure --format=json > /tmp/pre-commit-structure.json
initrepo-cli analyze-imports --format=json > /tmp/pre-commit-imports.json

# Check structure score
structure_score=$(jq '.data.score' /tmp/pre-commit-structure.json)
unused_imports=$(jq '.data.summary.unusedImports' /tmp/pre-commit-imports.json)

echo "📊 Pre-commit Results:"
echo "Structure Score: $structure_score/100"
echo "Unused Imports: $unused_imports"

if [ "$structure_score" -lt 70 ]; then
    echo "❌ Structure score too low: $structure_score/100"
    echo "Please improve project structure before committing."
    exit 1
fi

if [ "$unused_imports" -gt 10 ]; then
    echo "⚠️ Many unused imports: $unused_imports"
    echo "Consider cleaning up imports: initrepo-cli manage-imports --remove-unused"
    # Don't block commit for unused imports, just warn
fi

echo "✅ Pre-commit quality checks passed!"

Collaborative Templates

Create standardized project templates for your team:
// team-templates/react-component.js
module.exports = (variables) => `
/**
 * ${variables.componentName} Component
 *
 * @description ${variables.description || 'A reusable React component'}
 * @author Team Name
 * @version 1.0.0
 * @since ${new Date().toISOString().split('T')[0]}
 */

import React, { useState, useEffect } from 'react';
import PropTypes from 'prop-types';
import './${variables.componentName}.css';

// Team coding standards
const ${variables.componentName} = ({
  id,
  className,
  children,
  onChange,
  disabled = false,
  ...props
}) => {
  const [isLoading, setIsLoading] = useState(false);
  const [error, setError] = useState(null);

  useEffect(() => {
    // Component initialization
    return () => {
      // Cleanup
    };
  }, []);

  const handleAction = async () => {
    try {
      setIsLoading(true);
      setError(null);

      // Component logic here

      if (onChange) {
        onChange();
      }
    } catch (err) {
      setError(err.message);
    } finally {
      setIsLoading(false);
    }
  };

  return (
    <div
      id={id}
      className={\`\${className || ''} ${variables.componentName.toLowerCase()}-container\`}
      {...props}
    >
      {error && (
        <div className="error-message" role="alert">
          {error}
        </div>
      )}

      <div className="component-content">
        {children}
      </div>

      <button
        type="button"
        onClick={handleAction}
        disabled={disabled || isLoading}
        className="action-button"
      >
        {isLoading ? 'Loading...' : 'Action'}
      </button>
    </div>
  );
};

${variables.componentName}.propTypes = {
  id: PropTypes.string,
  className: PropTypes.string,
  children: PropTypes.node,
  onChange: PropTypes.func,
  disabled: PropTypes.bool
};

${variables.componentName}.defaultProps = {
  disabled: false
};

export default ${variables.componentName};
`;

Enterprise Features

Large-Scale Analysis

For enterprise environments with multiple repositories:
#!/bin/bash
# enterprise-analysis.sh - Multi-repository analysis

REPOS_DIR="${1:-./repositories}"
OUTPUT_DIR="${2:-./enterprise-analysis}"
PARALLEL_JOBS="${3:-4}"

echo "🏢 Starting enterprise-wide analysis..."
echo "Repositories: $REPOS_DIR"
echo "Output: $OUTPUT_DIR"
echo "Parallel jobs: $PARALLEL_JOBS"

mkdir -p "$OUTPUT_DIR"

# Function to analyze a single repository
analyze_repo() {
    local repo_path="$1"
    local repo_name=$(basename "$repo_path")

    echo "🔍 Analyzing $repo_name..."

    cd "$repo_path"

    # Run comprehensive analysis
    initrepo-cli validate-structure --format=json > "$OUTPUT_DIR/${repo_name}-structure.json"
    initrepo-cli analyze-complexity --format=json > "$OUTPUT_DIR/${repo_name}-complexity.json"
    initrepo-cli analyze-imports --format=json > "$OUTPUT_DIR/${repo_name}-imports.json"
    initrepo-cli deps --format=json > "$OUTPUT_DIR/${repo_name}-deps.json"

    echo "✅ Completed analysis for $repo_name"
}

# Export function for parallel execution
export -f analyze_repo
export OUTPUT_DIR

# Find all repositories and run analysis in parallel
find "$REPOS_DIR" -type d -name ".git" | while read git_dir; do
    echo "${git_dir%/.git}"
done | xargs -I {} -P "$PARALLEL_JOBS" bash -c 'analyze_repo "{}"'

# Generate enterprise summary report
echo "📊 Generating enterprise summary..."

python3 << 'EOF'
import json
import os
import glob
from datetime import datetime

output_dir = os.environ['OUTPUT_DIR']
repos = set()

# Collect all repository names
for file in glob.glob(f"{output_dir}/*-structure.json"):
    repo = os.path.basename(file).replace('-structure.json', '')
    repos.add(repo)

summary = {
    'timestamp': datetime.now().isoformat(),
    'total_repositories': len(repos),
    'repositories': {}
}

for repo in repos:
    try:
        with open(f"{output_dir}/{repo}-structure.json") as f:
            structure = json.load(f)
        with open(f"{output_dir}/{repo}-complexity.json") as f:
            complexity = json.load(f)
        with open(f"{output_dir}/{repo}-imports.json") as f:
            imports = json.load(f)

        summary['repositories'][repo] = {
            'structure_score': structure.get('data', {}).get('score', 0),
            'complexity_issues': complexity.get('data', {}).get('summary', {}).get('highPriority', 0),
            'unused_imports': imports.get('data', {}).get('summary', {}).get('unusedImports', 0)
        }
    except Exception as e:
        print(f"Error processing {repo}: {e}")

with open(f"{output_dir}/enterprise-summary.json", 'w') as f:
    json.dump(summary, f, indent=2)

print("📋 Enterprise summary saved to enterprise-summary.json")
EOF

echo "🎉 Enterprise analysis complete!"
echo "📊 Summary: $OUTPUT_DIR/enterprise-summary.json"

Audit Logging

Enable comprehensive audit logging for enterprise compliance:
# Enable audit logging
export INITREPO_AUDIT_ENABLED=true
export INITREPO_AUDIT_FILE=/var/log/initrepo/audit.log

# View audit logs
tail -f /var/log/initrepo/audit.log

# Analyze audit data
jq '.timestamp + " " + .command + " " + .user' /var/log/initrepo/audit.log

Performance Optimization

Large Project Optimization

# Optimize for large projects
export NODE_OPTIONS="--max-old-space-size=4096"

# Use chunked processing
initrepo-cli analyze-complexity --chunk-size=100

# Process specific patterns only
initrepo-cli analyze --include "src/**/*.js" --exclude "**/*.test.js"

# Use streaming for large outputs
initrepo-cli generate-structure --stream-output

Caching Configuration

# Enable analysis caching
export INITREPO_CACHE_ENABLED=true
export INITREPO_CACHE_DIR=~/.initrepo/cache
export INITREPO_CACHE_TTL=3600  # 1 hour

# Clear cache when needed
rm -rf ~/.initrepo/cache

Next Steps

MCP Server Integration

Connect your CLI workflows with AI assistants through the MCP server

Integration Guides

Set up integrations with popular AI IDEs and development tools

Complete Platform Overview

See how CLI advanced features fit into the complete InitRepo ecosystem