system-prompts-and-models-o.../scripts/METADATA_GENERATION.md
Sahiix@1 13254d7cbf feat: Add metadata system, REST API, examples, and CI/CD pipeline
- Added 32 JSON metadata files for all AI coding tools
- Generated 39 REST API endpoints for programmatic access
- Created working examples in Python, JavaScript, and PowerShell
- Set up GitHub Actions workflow for automated deployment
- Enhanced README with comprehensive feature documentation
- Added version comparison and automation tools
- Updated 20+ documentation files
- Ready for GitHub Pages deployment
2025-10-02 22:23:26 +04:00

6.8 KiB

🤖 Metadata Generation Script

Purpose: Automatically generate or update metadata JSON files for AI coding tools.

🚀 Quick Start

# Generate metadata for a single tool
python scripts/generate-metadata.py --tool cursor

# Generate metadata for all tools
python scripts/generate-metadata.py --all

# Update existing metadata
python scripts/generate-metadata.py --update cursor

# Validate all metadata
python scripts/generate-metadata.py --validate

📋 Features

  • Automatic Detection: Scans tool directories and extracts information
  • Smart Analysis: Analyzes prompts for patterns and features
  • Version Tracking: Detects multiple versions and tracks changes
  • Validation: Ensures all required fields are present
  • Bulk Operations: Process all tools at once

🔧 How It Works

1. Directory Scanning

Scans each tool directory for:

  • System prompt files (.txt)
  • Tool definition files (.json)
  • README files
  • Multiple versions

2. Content Analysis

Analyzes prompt content for:

  • Conciseness patterns
  • Security rules
  • Tool capabilities
  • Parallel execution support
  • Memory systems
  • TODO tracking

3. Feature Detection

Automatically detects:

  • Code generation capabilities
  • Agent mode support
  • Multi-file editing
  • Git integration
  • Platform support

4. Metadata Generation

Creates JSON with:

  • Basic information
  • Version history
  • Pricing (requires manual input)
  • Feature flags
  • Analysis and comparison

📖 Usage Guide

Generate Single Tool

python scripts/generate-metadata.py --tool "Cursor Prompts"

Output: metadata/cursor.json

Generate All Tools

python scripts/generate-metadata.py --all

Output: Creates/updates all metadata files

Update Existing

python scripts/generate-metadata.py --update cursor --field pricing

Validate

python scripts/generate-metadata.py --validate

Checks:

  • Required fields present
  • Valid JSON format
  • Correct data types
  • File references exist

🎯 Manual Fields

Some fields require manual input:

Required Manual:

  • pricing.tiers - Pricing information
  • links.website - Official website
  • links.docs - Documentation URL
  • marketPosition.userBase - Estimated users

Auto-Generated:

  • features.* - Detected from prompts
  • patterns.* - Analyzed from content
  • metrics.* - Calculated from files
  • documentation.* - Scanned from directory

📊 Output Format

Generated metadata follows the schema in metadata/README.md:

{
  "name": "Tool Name",
  "slug": "tool-name",
  "type": "IDE Plugin | CLI Tool | Web Platform | Autonomous Agent",
  "status": "active",
  "version": { ... },
  "pricing": { ... },
  "models": { ... },
  "features": { ... },
  "platforms": { ... },
  "documentation": { ... },
  "analysis": { ... }
}

🔍 Analysis Algorithms

Conciseness Detection

def detect_conciseness(prompt_text):
    indicators = [
        "be concise",
        "brief",
        "minimal",
        "short",
        "terse"
    ]
    score = sum(1 for i in indicators if i in prompt_text.lower())
    return "very-high" if score >= 3 else "high" if score >= 2 else "medium"

Feature Detection

def detect_features(prompt_text, tools_json):
    features = {
        "agentMode": "agent" in prompt_text.lower(),
        "parallelExecution": "parallel" in prompt_text.lower(),
        "todoTracking": "todo" in prompt_text.lower() or "task list" in prompt_text.lower(),
        "memorySystem": "memory" in prompt_text.lower() or "context" in prompt_text.lower()
    }
    return features

Tool Counting

def count_tools(tools_json):
    if not tools_json:
        return 0
    data = json.load(open(tools_json))
    return len(data.get("functions", []))

⚙️ Configuration

Config File: scripts/metadata-config.json

{
  "autoDetect": true,
  "analyzePrompts": true,
  "generateMetrics": true,
  "validateOutput": true,
  "overwriteExisting": false,
  "requiredFields": [
    "name",
    "slug",
    "type",
    "status",
    "description"
  ],
  "optionalFields": [
    "pricing",
    "links",
    "marketPosition"
  ]
}

🛠️ Advanced Options

Custom Template

python scripts/generate-metadata.py --tool cursor --template custom-template.json

Specific Fields Only

python scripts/generate-metadata.py --tool cursor --fields features,patterns,metrics

Dry Run

python scripts/generate-metadata.py --all --dry-run

Shows what would be generated without writing files.

Debug Mode

python scripts/generate-metadata.py --tool cursor --debug

Shows detailed analysis and detection steps.

📝 Examples

Example 1: New Tool

# Add new tool "NewIDE"
mkdir "NewIDE"
echo "System prompt..." > "NewIDE/prompt.txt"

# Generate metadata
python scripts/generate-metadata.py --tool "NewIDE"

# Review and edit
code metadata/newide.json

# Validate
python scripts/generate-metadata.py --validate metadata/newide.json

Example 2: Update Pricing

# Edit metadata file
code metadata/cursor.json

# Update pricing section manually

# Validate changes
python scripts/generate-metadata.py --validate metadata/cursor.json

Example 3: Bulk Update

# Update all metadata with latest patterns
python scripts/generate-metadata.py --all --refresh-patterns

# Regenerate metrics
python scripts/generate-metadata.py --all --refresh-metrics

Validation Rules

Required Fields:

  • name - Tool name
  • slug - URL-friendly identifier
  • type - Tool category
  • status - Active/beta/deprecated
  • description - Brief summary
  • ⚠️ pricing - Pricing information
  • ⚠️ models - Supported AI models
  • ⚠️ features - Feature flags
  • ⚠️ links.website - Official website

Optional Fields:

  • 💡 marketPosition - Market analysis
  • 💡 analysis - Strengths/weaknesses
  • 💡 tags - Search tags

🐛 Troubleshooting

Issue: "Tool directory not found"

Solution: Check directory name matches exactly

ls -la | grep -i "tool-name"

Issue: "Invalid JSON format"

Solution: Validate JSON syntax

python -m json.tool metadata/tool.json

Issue: "Missing required fields"

Solution: Check which fields are missing

python scripts/generate-metadata.py --validate --verbose

🤝 Contributing

When adding metadata:

  1. Use the generation script
  2. Manually fill pricing/links
  3. Validate output
  4. Test with API queries
  5. Submit PR

📚 See Also


Last Updated: 2025-01-02
Part of the AI Coding Tools repository