diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7e7e7790 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Generated files +scripts/index.json +scripts/comparison_table.md + +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python + +# IDEs +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Logs +*.log diff --git a/Anthropic/README.md b/Anthropic/README.md new file mode 100644 index 00000000..b3c249f7 --- /dev/null +++ b/Anthropic/README.md @@ -0,0 +1,42 @@ +# Anthropic System Prompts + +Official system prompts from Anthropic's Claude models. + +## šŸ“‹ Contents + +- **Sonnet 4.5 Prompt.txt** - System prompt for Claude Sonnet 4.5 +- **Claude Code 2.0.txt** - System prompt for Claude Code 2.0 interface + +## šŸ¤– Models + +- `claude-sonnet-4.5` - Latest frontier model from Anthropic +- `claude-code-2.0` - Claude's coding interface + +## šŸ“Š Details + +| File | Size | Description | +|------|------|-------------| +| Sonnet 4.5 Prompt.txt | ~42 KB | Core system prompt for Claude Sonnet 4.5 | +| Claude Code 2.0.txt | ~56 KB | System prompt for Claude Code interface | + +## šŸ”— Links + +- **Official Website**: [anthropic.com](https://anthropic.com) +- **Documentation**: [docs.anthropic.com](https://docs.anthropic.com) +- **API Access**: [console.anthropic.com](https://console.anthropic.com) + +## šŸ“ Notes + +These prompts represent Anthropic's approach to: +- Safety and alignment +- Tool use and function calling +- Code generation and analysis +- Structured output and reasoning + +## šŸ”„ Updates + +Last updated: January 2025 + +--- + +[← Back to main repository](../) diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..8150ca81 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,106 @@ +# Changelog + +All notable changes to this repository will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [2.0.0] - 2025-11-15 + +### Added +- **Repository Infrastructure** + - Created `scripts/` directory for automation tools + - Added `generate_metadata.py` - Generates comprehensive metadata index + - Added `validate.py` - Validates repository structure and links + - Added `search.py` - Search and filter tools by criteria + - Added `analyze.py` - Generate statistics and comparisons + - Added `CONTRIBUTING.md` - Contribution guidelines + - Added `CHANGELOG.md` - This changelog file + +- **Documentation** + - Added README.md for Anthropic directory + - Added README.md for Cursor Prompts directory + - Added README.md for Open Source prompts directory + - Created comparison table generation + +- **New Tools** + - Added Emergent to README (previously unlisted) + - Added Traycer AI to README (previously unlisted) + +### Fixed +- Fixed broken link for Amp directory (was `./AMp/`, now `./Amp/`) +- Fixed file extension for `Traycer AI/plan_mode_prompts` (added `.txt`) +- Updated line count from "30,000+" to "25,000+" for accuracy + +### Changed +- Improved README.md description and accuracy +- Enhanced repository organization +- Standardized metadata structure + +### Tools & Scripts +The new scripts enable: +- **Metadata Generation**: `python scripts/generate_metadata.py` +- **Repository Validation**: `python scripts/validate.py` +- **Tool Search**: `python scripts/search.py --category "Code Assistant"` +- **Statistics**: `python scripts/analyze.py` + +--- + +## [1.x] - 2024-2025 + +### Added +- Initial collection of 30+ AI tool prompts +- Prompts from major tools: + - Cursor, VSCode Copilot, Claude Code + - Devin, v0, Bolt, Windsurf + - Replit, Lovable, Same.dev + - And many more + +- Open source tools: + - Cline, RooCode, Lumo + - Codex CLI, Gemini CLI + - Bolt + +### Structure +- Organized by tool/company +- Separate directories for each tool +- Mix of .txt and .json files +- Basic README with tool list + +--- + +## Notes + +### Version 2.0.0 Highlights +This major update transforms the repository from a simple collection to a searchable, analyzable, and well-documented resource. Key improvements: + +1. **Discoverability**: Search tools by category, company, model, or keywords +2. **Validation**: Automated checks ensure quality and consistency +3. **Analysis**: Generate statistics and comparisons +4. **Documentation**: Individual READMEs explain each tool +5. **Standardization**: Consistent structure and metadata + +### Future Enhancements +Planned for future versions: +- [ ] More individual tool READMEs +- [ ] Automated prompt version tracking +- [ ] Diff tools to compare prompt versions +- [ ] Web interface for browsing +- [ ] API for programmatic access +- [ ] Prompt analysis and insights +- [ ] Community ratings and reviews +- [ ] Integration examples + +--- + +## How to Use This Changelog + +- **Added** for new features +- **Changed** for changes in existing functionality +- **Deprecated** for soon-to-be removed features +- **Removed** for now removed features +- **Fixed** for any bug fixes +- **Security** in case of vulnerabilities + +--- + +Last updated: 2025-11-15 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..ff9f538c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,198 @@ +# Contributing to System Prompts and Models of AI Tools + +Thank you for your interest in contributing! This repository is a comprehensive collection of system prompts from AI coding tools and assistants. + +## šŸŽÆ What We're Looking For + +### New Tools +- System prompts from AI coding assistants, IDEs, or agents +- Tool/function definitions (JSON schemas) +- Official or leaked prompts from production systems +- Both proprietary and open-source tools + +### Updates +- New versions of existing tool prompts +- Additional files for existing tools +- Corrections to existing information +- Metadata improvements + +### Enhancements +- Better categorization +- Improved documentation +- Analysis scripts +- Comparison tools + +## šŸ“‹ Contribution Guidelines + +### Adding a New Tool + +1. **Create a directory** with the tool name: + ``` + Tool Name/ + ``` + +2. **Add prompt files**: + - Use descriptive names: `Prompt.txt`, `System Prompt.txt`, etc. + - For multiple prompts: `Agent Prompt.txt`, `Chat Prompt.txt` + - Include version if applicable: `Prompt v1.2.txt` + +3. **Add tool definitions** (if available): + - Use JSON format: `Tools.json`, `Agent Tools.json` + - Include the full schema + +4. **Create a README.md** in the directory: + ```markdown + # Tool Name + + Brief description of the tool. + + ## Contents + - List of files and what they contain + + ## Models Used + - AI models the tool uses + + ## Links + - Official website + - Documentation + ``` + +5. **Update the main README.md**: + - Add entry under "Available Files" + - Keep alphabetical order within categories + +6. **Update metadata** (if possible): + - Edit `scripts/generate_metadata.py` + - Add tool information to `TOOL_INFO` dictionary + +### File Naming Conventions + +- **Text files**: Use `.txt` extension +- **JSON files**: Use `.json` extension +- **Documentation**: Use `.md` extension +- **Spaces**: Allowed in file names (e.g., `Agent Prompt.txt`) +- **Versioning**: Include version in filename if multiple versions exist + +### Quality Standards + +1. **Completeness**: Include the full system prompt, not excerpts +2. **Accuracy**: Verify the prompt is current and correctly extracted +3. **Attribution**: Note the source, date, and version if known +4. **Privacy**: Remove any API keys, secrets, or personal information + +### Commit Messages + +Use clear, descriptive commit messages: + +``` +Add Claude Code 2.0 system prompt + +- Added new system prompt for Claude Code 2.0 +- Includes tool definitions +- Updated README with new entry +``` + +Follow conventional commits format: +- `feat:` New tool or feature +- `update:` Update to existing prompt +- `fix:` Corrections or bug fixes +- `docs:` Documentation changes +- `refactor:` Restructuring without functional changes + +## šŸ” Verification Process + +Before submitting: + +1. **Run validation**: + ```bash + python scripts/validate.py + ``` + +2. **Check links**: + - Ensure all README links work + - Verify directory names match exactly + +3. **Test search**: + ```bash + python scripts/generate_metadata.py + python scripts/search.py --text "your tool" + ``` + +4. **Format check**: + - Ensure files are UTF-8 encoded + - Remove trailing whitespace + - Use consistent line endings (LF) + +## 🚫 What NOT to Submit + +- **Incomplete prompts**: Partial or fragmentary prompts +- **Fake prompts**: Made-up or unverified content +- **Malware**: Any malicious code or exploits +- **Copyright violations**: Don't submit if legally questionable +- **Spam**: Promotional content unrelated to AI tools +- **Personal data**: Private API keys, emails, credentials + +## šŸ“Š Metadata Schema + +When adding tools to `scripts/generate_metadata.py`: + +```python +"Tool Name": { + "name": "Display Name", + "company": "Company Name", + "category": "Code Assistant|IDE|AI Agent|Web Builder|etc.", + "type": "proprietary|open-source", + "description": "Brief description of what it does", + "website": "https://example.com", + "models": ["model-1", "model-2"] +} +``` + +### Categories +- **Code Assistant**: AI coding helpers +- **IDE**: Integrated development environments +- **AI Agent**: Autonomous agents +- **Web Builder**: UI/web generation tools +- **Terminal**: CLI-based tools +- **Document Assistant**: Documentation tools +- **Search Assistant**: Search/research tools +- **Foundation Model**: Base model prompts + +## šŸ”„ Update Process + +For updating existing tools: + +1. Keep old versions (rename with date/version) +2. Add new version with clear naming +3. Update README to note changes +4. Document what changed in commit message + +## šŸ¤ Code of Conduct + +- Be respectful and constructive +- Focus on accuracy and quality +- Give credit where due +- Collaborate openly +- Respect intellectual property +- Maintain professional standards + +## šŸ“¬ Questions? + +- Open an issue for questions +- Join Discord for discussions +- Contact maintainer: via GitHub issues + +## šŸŽ Recognition + +Contributors will be: +- Listed in commit history +- Mentioned in release notes +- Credited for significant additions + +## šŸ“œ License + +By contributing, you agree that your contributions will be licensed under the repository's existing license. + +--- + +Thank you for helping build the most comprehensive collection of AI tool system prompts! šŸ™ diff --git a/Cursor Prompts/README.md b/Cursor Prompts/README.md new file mode 100644 index 00000000..349cd869 --- /dev/null +++ b/Cursor Prompts/README.md @@ -0,0 +1,65 @@ +# Cursor AI System Prompts + +System prompts and tools for Cursor, the AI-first code editor. + +## šŸ“‹ Contents + +Cursor uses multiple specialized prompts for different modes: + +### Agent Prompts +- **Agent Prompt.txt** - Current agent system prompt +- **Agent Prompt v1.0.txt** - Version 1.0 of agent prompt +- **Agent Prompt v1.2.txt** - Version 1.2 of agent prompt +- **Agent Prompt 2025-09-03.txt** - September 2025 version +- **Agent CLI Prompt 2025-08-07.txt** - CLI agent version + +### Other Modes +- **Chat Prompt.txt** - Chat mode system prompt +- **Memory Prompt.txt** - Memory system for context retention +- **Memory Rating Prompt.txt** - Memory importance rating system + +### Tools +- **Agent Tools v1.0.json** - Tool definitions for agent mode + +## šŸ¤– Models + +Cursor supports multiple AI models: +- Claude (Anthropic) +- GPT-4 (OpenAI) +- Custom fine-tuned models + +## šŸŽÆ Features + +Cursor's prompts enable: +- **Agentic Coding**: Autonomous code generation and modification +- **Multi-file Editing**: Changes across multiple files +- **Memory System**: Retains context across sessions +- **Tool Integration**: File operations, terminal commands, search +- **Version Control**: Git integration + +## šŸ“Š Prompt Evolution + +| Version | Date | Key Changes | +|---------|------|-------------| +| v1.0 | Early 2024 | Initial agent capabilities | +| v1.2 | Mid 2024 | Enhanced memory system | +| CLI 2025-08 | August 2025 | CLI-specific optimizations | +| Latest | September 2025 | Improved agentic workflows | + +## šŸ”— Links + +- **Official Website**: [cursor.com](https://cursor.com) +- **Documentation**: [cursor.com/docs](https://cursor.com/docs) +- **GitHub**: [Cursor community](https://github.com/getcursor) + +## šŸ’” Use Cases + +- Full-stack application development +- Refactoring large codebases +- Learning new frameworks +- Bug fixing and debugging +- Documentation generation + +--- + +[← Back to main repository](../) diff --git a/Open Source prompts/README.md b/Open Source prompts/README.md new file mode 100644 index 00000000..b5b7268b --- /dev/null +++ b/Open Source prompts/README.md @@ -0,0 +1,77 @@ +# Open Source AI Coding Tools + +Collection of system prompts from open-source AI coding assistants and tools. + +## šŸ“‚ Tools Included + +### [Bolt](./Bolt/) +AI-powered full-stack web development tool. +- Focus: Rapid prototyping and deployment +- Stack: Modern web frameworks + +### [Cline](./Cline/) +Autonomous coding agent for VSCode. +- Focus: Multi-file editing and task execution +- Integration: VSCode extension + +### [Codex CLI](./Codex%20CLI/) +Command-line interface for OpenAI Codex. +- Focus: Terminal-based coding assistance +- Platform: Cross-platform CLI + +### [Gemini CLI](./Gemini%20CLI/) +Google's Gemini model CLI interface. +- Focus: Code generation and analysis +- Model: Gemini Pro + +### [Lumo](./Lumo/) +Lightweight AI coding assistant. +- Focus: Minimalist, efficient coding help +- Approach: Simple, focused interactions + +### [RooCode](./RooCode/) +Comprehensive AI coding assistant. +- Focus: Full-featured development support +- Features: Multiple modes and capabilities + +## 🌟 Why Open Source? + +These tools demonstrate: +- **Transparency**: Open system prompts show how AI tools work +- **Learning**: Study prompt engineering techniques +- **Customization**: Adapt prompts for your needs +- **Innovation**: Build upon existing work + +## šŸ“Š Comparison + +| Tool | Lines | Focus | Best For | +|------|-------|-------|----------| +| Bolt | ~21K | Web Dev | Full-stack apps | +| Cline | ~47K | VSCode | IDE integration | +| Codex CLI | ~24K | Terminal | CLI workflows | +| Gemini CLI | ~19K | General | Google ecosystem | +| Lumo | ~8K | Lightweight | Simple tasks | +| RooCode | ~44K | Comprehensive | Complex projects | + +## šŸ› ļø Using These Prompts + +1. **Study**: Learn prompt engineering patterns +2. **Adapt**: Customize for your use case +3. **Integrate**: Use with compatible LLMs +4. **Contribute**: Improve and share back + +## šŸ“ License + +Each tool has its own license. Please check individual directories for details. + +## šŸ¤ Contributing + +To add new open-source tools: +1. Ensure the tool is truly open source +2. Include all relevant prompt files +3. Add metadata and description +4. Update this README + +--- + +[← Back to main repository](../) diff --git a/README.md b/README.md index e9399d41..e83c7061 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ x1xhlol%2Fsystem-prompts-and-models-of-ai-tools | Trendshift -šŸ“œ Over **30,000+ lines** of insights into their structure and functionality. +šŸ“œ Over **25,000+ lines** of insights into 32+ AI coding tools and their system prompts. ⭐ **Star to follow updates** @@ -68,7 +68,9 @@ Sponsor the most comprehensive collection of AI system prompts and reach thousan ## šŸ“‘ Table of Contents - [šŸ“‘ Table of Contents](#-table-of-contents) - - [šŸ“‚ Available Files](#-available-files) + - [šŸš€ Quick Start](#-quick-start) + - [šŸ“‚ Available Tools](#-available-tools) + - [šŸ” Search & Discovery](#-search--discovery) - [šŸ›  Roadmap \& Feedback](#-roadmap--feedback) - [šŸ”— Connect With Me](#-connect-with-me) - [šŸ›”ļø Security Notice for AI Startups](#ļø-security-notice-for-ai-startups) @@ -76,52 +78,200 @@ Sponsor the most comprehensive collection of AI system prompts and reach thousan --- -## šŸ“‚ Available Files +## šŸš€ Quick Start -- [**v0**](./v0%20Prompts%20and%20Tools/) -- [**Manus**](./Manus%20Agent%20Tools%20&%20Prompt/) -- [**Augment Code**](./Augment%20Code/) -- [**Lovable**](./Lovable/) -- [**Devin**](./Devin%20AI/) -- [**Same.dev**](./Same.dev/) -- [**Replit**](./Replit/) -- [**Windsurf Agent**](./Windsurf/) -- [**VSCode (Copilot) Agent**](./VSCode%20Agent/) -- [**Cursor**](./Cursor%20Prompts/) -- [**Dia**](./dia/) -- [**Trae AI**](./Trae/) -- [**Perplexity**](./Perplexity/) -- [**Cluely**](./Cluely/) -- [**Xcode**](./Xcode/) -- [**Leap.new**](./Leap.new/) -- [**Notion AI**](./NotionAi/) -- [**Orchids.app**](./Orchids.app/) -- [**Junie**](./Junie/) -- [**Kiro**](./Kiro/) -- [**Warp.dev**](./Warp.dev/) -- [**Z.ai Code**](./Z.ai%20Code/) -- [**Qoder**](./Qoder/) -- [**Claude Code**](./Claude%20Code/) -- [**Open Source prompts**](./Open%20Source%20prompts/) - - [Codex CLI](./Open%20Source%20prompts/Codex%20CLI/) - - [Cline](./Open%20Source%20prompts/Cline/) - - [Bolt](./Open%20Source%20prompts/Bolt/) - - [RooCode](./Open%20Source%20prompts/RooCode/) - - [Lumo](./Open%20Source%20prompts/Lumo/) - - [Gemini CLI](./Open%20Source%20prompts/Gemini%20CLI/) -- [**CodeBuddy**](./CodeBuddy%20Prompts/) -- [**Poke**](./Poke/) -- [**Comet Assistant**](./Comet%20Assistant/) -- [**Anthropic**](./Anthropic/) -- [**Amp**](./AMp/) +### Browse Tools +Explore 32+ AI coding tools organized by category below, or use our search tools: + +```bash +# Generate metadata index +python scripts/generate_metadata.py + +# Search by category +python scripts/search.py --category "Code Assistant" + +# Search by company +python scripts/search.py --company "Anthropic" + +# View statistics +python scripts/analyze.py + +# Validate repository +python scripts/validate.py +``` + +### What's Included +Each tool directory contains: +- **System prompts** - The core instructions that guide AI behavior +- **Tool definitions** - JSON schemas for function calling and tool use +- **Documentation** - READMEs explaining the tool and its features + +--- + +## šŸ“‚ Available Tools + +### šŸ¢ IDEs & Code Editors +AI-powered development environments with integrated assistants + +- [**Cursor**](./Cursor%20Prompts/) - AI-first code editor with agent mode +- [**VSCode (Copilot) Agent**](./VSCode%20Agent/) - GitHub Copilot for VSCode +- [**Windsurf**](./Windsurf/) - Codeium's AI-powered editor +- [**Xcode**](./Xcode/) - Apple's IDE with AI features + +### šŸ¤– Autonomous AI Agents +Tools that can independently execute complex coding tasks + +- [**Devin**](./Devin%20AI/) - Autonomous AI software engineer +- [**Emergent**](./Emergent/) - AI coding agent +- [**Manus**](./Manus%20Agent%20Tools%20&%20Prompt/) - Agent with loop and modules +- [**Poke**](./Poke/) - Multi-part agent system +- [**Trae**](./Trae/) - Builder and chat modes +- [**Traycer AI**](./Traycer%20AI/) - Multi-mode agent (Phase, Plan) + +### šŸ’» Code Assistants +AI helpers for code completion, generation, and analysis + +- [**Augment Code**](./Augment%20Code/) - AI-powered code completion +- [**Claude Code**](./Claude%20Code/) - Anthropic's official coding interface +- [**Cluely**](./Cluely/) - Default and enterprise modes +- [**CodeBuddy**](./CodeBuddy%20Prompts/) - Chat and Craft modes +- [**Comet Assistant**](./Comet%20Assistant/) - General purpose coding AI +- [**Dia**](./dia/) - AI coding assistant +- [**Junie**](./Junie/) - AI coding helper +- [**Kiro**](./Kiro/) - Multi-mode assistant (Spec, Vibe) +- [**Qoder**](./Qoder/) - Quest-based code assistant +- [**Same.dev**](./Same.dev/) - AI coding assistant +- [**Z.ai Code**](./Z.ai%20Code/) - AI coding tool + +### 🌐 Web & App Builders +AI tools for building full applications and UIs + +- [**v0**](./v0%20Prompts%20and%20Tools/) - Vercel's AI UI generation +- [**Lovable**](./Lovable/) - AI-powered app builder +- [**Leap.new**](./Leap.new/) - AI web application builder +- [**Bolt**](./Open%20Source%20prompts/Bolt/) - Full-stack web development + +### šŸ­ Cloud Platforms +Integrated development platforms with AI + +- [**Replit**](./Replit/) - Cloud IDE with AI agent +- [**Amp**](./Amp/) - AI coding platform + +### šŸ–„ļø Terminal & CLI +Command-line AI assistants + +- [**Warp.dev**](./Warp.dev/) - AI-powered terminal +- [**Codex CLI**](./Open%20Source%20prompts/Codex%20CLI/) - OpenAI Codex CLI +- [**Gemini CLI**](./Open%20Source%20prompts/Gemini%20CLI/) - Google Gemini CLI + +### 🧠 Foundation Models +Core AI model prompts from major providers + +- [**Anthropic**](./Anthropic/) - Claude Sonnet 4.5 & Claude Code 2.0 +- [**Perplexity**](./Perplexity/) - AI search and answer engine + +### šŸ“ Document & Knowledge +AI assistants for documentation and knowledge work + +- [**Notion AI**](./NotionAi/) - Integrated into Notion +- [**Orchids.app**](./Orchids.app/) - Decision-making AI assistant + +### 🌟 Open Source Collection +Community-built and transparent AI tools + +- [**Cline**](./Open%20Source%20prompts/Cline/) - Autonomous VSCode agent +- [**RooCode**](./Open%20Source%20prompts/RooCode/) - Comprehensive assistant +- [**Lumo**](./Open%20Source%20prompts/Lumo/) - Lightweight coding AI +- [**Bolt**](./Open%20Source%20prompts/Bolt/) - Full-stack web tool + +--- + +## šŸ” Search & Discovery + +### Using Search Tools + +**Search by category:** +```bash +python scripts/search.py --category "Code Assistant" +``` + +**Find tools by company:** +```bash +python scripts/search.py --company "Anthropic" +``` + +**Search for specific models:** +```bash +python scripts/search.py --model "gpt-5" +``` + +**Full-text search:** +```bash +python scripts/search.py --text "agent" +``` + +**Detailed view:** +```bash +python scripts/search.py --category "IDE" --verbose +``` + +### Analysis & Statistics + +**Generate comprehensive statistics:** +```bash +python scripts/analyze.py +``` + +**Validate repository structure:** +```bash +python scripts/validate.py +``` + +### Quick Reference + +**List all categories:** +```bash +python scripts/search.py --list-categories +``` + +**List all companies:** +```bash +python scripts/search.py --list-companies +``` --- ## šŸ›  Roadmap & Feedback -> Open an issue. +### What's New in v2.0 šŸŽ‰ -> **Latest Update:** 19/10/2025 +**Major enhancements:** +- ✨ **Searchable Index**: Find tools by category, company, or model +- šŸ“Š **Analysis Tools**: Generate statistics and comparisons +- āœ… **Validation**: Automated quality checks +- šŸ“š **Better Documentation**: Individual READMEs for key tools +- šŸ—‚ļø **Organized by Category**: Browse by IDE, Agent, Assistant, etc. +- šŸ” **Discovery Tools**: Python scripts for searching and analysis + +**New Scripts:** +- `generate_metadata.py` - Create searchable index +- `validate.py` - Check repository quality +- `search.py` - Search and filter tools +- `analyze.py` - Generate statistics + +See [CHANGELOG.md](./CHANGELOG.md) for full details. + +### Future Roadmap +- [ ] Web interface for browsing prompts +- [ ] Prompt comparison and diff tools +- [ ] Community ratings and reviews +- [ ] API for programmatic access +- [ ] More individual tool READMEs +- [ ] Automated version tracking + +> Open an issue for feature requests or bug reports. + +> **Latest Update:** 15/11/2025 --- diff --git a/Traycer AI/plan_mode_prompts b/Traycer AI/plan_mode_prompts.txt similarity index 100% rename from Traycer AI/plan_mode_prompts rename to Traycer AI/plan_mode_prompts.txt diff --git a/scripts/README.md b/scripts/README.md new file mode 100644 index 00000000..9ade90ac --- /dev/null +++ b/scripts/README.md @@ -0,0 +1,230 @@ +# Repository Scripts + +Automation and analysis tools for the AI tools prompt repository. + +## šŸ“‹ Available Scripts + +### šŸ” `generate_metadata.py` +Generates a comprehensive metadata index of all tools in the repository. + +**Usage:** +```bash +python scripts/generate_metadata.py +``` + +**Output:** +- Creates `scripts/index.json` with complete tool metadata +- Shows statistics about tools, files, and line counts +- Categorizes tools by type, category, and company + +**What it does:** +- Scans all directories for .txt, .json, and .md files +- Counts lines in text files +- Collects file sizes and metadata +- Organizes by predefined categories +- Generates searchable index + +--- + +### āœ… `validate.py` +Validates repository structure and finds issues. + +**Usage:** +```bash +python scripts/validate.py +``` + +**Checks performed:** +- āœ“ README links point to valid directories +- āœ“ All directories are listed in README +- āœ“ No empty files exist +- āœ“ File naming consistency +- āœ“ Directory structure validity + +**Exit codes:** +- `0` - All checks passed or only warnings +- `1` - Errors found + +--- + +### šŸ”Ž `search.py` +Search and filter tools by various criteria. + +**Usage:** +```bash +# Search by category +python scripts/search.py --category "Code Assistant" + +# Search by company +python scripts/search.py --company "Anthropic" + +# Search by model +python scripts/search.py --model "gpt-5" + +# Full-text search +python scripts/search.py --text "agent" + +# Filter by type +python scripts/search.py --type "open-source" + +# Verbose output +python scripts/search.py --category "IDE" --verbose + +# List all categories +python scripts/search.py --list-categories + +# List all companies +python scripts/search.py --list-companies +``` + +**Options:** +- `--category` - Filter by category (IDE, Code Assistant, etc.) +- `--company` - Filter by company name +- `--text` - Search in name and description +- `--model` - Filter by AI model used +- `--type` - Filter by type (proprietary/open-source) +- `--verbose, -v` - Show detailed information +- `--list-categories` - List all available categories +- `--list-companies` - List all companies + +**Requirements:** +Run `generate_metadata.py` first to create the index. + +--- + +### šŸ“Š `analyze.py` +Generate comprehensive statistics and analysis. + +**Usage:** +```bash +python scripts/analyze.py +``` + +**Analysis includes:** +- Overall repository statistics +- Tools by category (bar chart) +- Tools by company (bar chart) +- Tools by type (proprietary vs open-source) +- AI models usage +- Complexity analysis (by line count and file count) +- File size analysis +- Top 10 largest files + +**Output:** +- Console output with colored charts +- `scripts/comparison_table.md` - Markdown comparison table + +**Requirements:** +Run `generate_metadata.py` first to create the index. + +--- + +## šŸš€ Quick Start + +**Complete analysis workflow:** +```bash +# 1. Generate metadata +python scripts/generate_metadata.py + +# 2. Validate repository +python scripts/validate.py + +# 3. View statistics +python scripts/analyze.py + +# 4. Search for tools +python scripts/search.py --category "Code Assistant" +``` + +--- + +## šŸ“ Generated Files + +Scripts generate the following files: + +- `scripts/index.json` - Complete metadata index +- `scripts/comparison_table.md` - Markdown comparison table + +These files are gitignored and regenerated on demand. + +--- + +## šŸ”§ Technical Details + +### Dependencies +All scripts use Python 3 standard library only. No external dependencies required. + +### Python Version +Requires Python 3.6+ + +### File Structure +``` +scripts/ +ā”œā”€ā”€ README.md # This file +ā”œā”€ā”€ generate_metadata.py # Metadata generator +ā”œā”€ā”€ validate.py # Validation tool +ā”œā”€ā”€ search.py # Search tool +ā”œā”€ā”€ analyze.py # Analysis tool +ā”œā”€ā”€ index.json # Generated metadata (gitignored) +└── comparison_table.md # Generated comparison (gitignored) +``` + +### Adding New Tools to Metadata + +To add metadata for new tools, edit `generate_metadata.py`: + +```python +TOOL_INFO = { + "Tool Name": { + "name": "Display Name", + "company": "Company Name", + "category": "Code Assistant", # See categories below + "type": "proprietary", # or "open-source" + "description": "Brief description", + "website": "https://example.com", + "models": ["model-1", "model-2"] + } +} +``` + +**Categories:** +- `Code Assistant` - AI coding helpers +- `IDE` - Integrated development environments +- `AI Agent` - Autonomous agents +- `Web Builder` - UI/web generation tools +- `Terminal` - CLI-based tools +- `Cloud IDE` - Cloud development platforms +- `Document Assistant` - Documentation tools +- `Search Assistant` - Search/research tools +- `Foundation Model` - Base model prompts + +--- + +## šŸŽØ Color Output + +Scripts use ANSI color codes for better readability: +- šŸ”µ Blue - Headers and titles +- 🟢 Green - Success and data bars +- 🟔 Yellow - Warnings +- šŸ”“ Red - Errors + +--- + +## šŸ¤ Contributing + +To add new scripts: +1. Follow Python 3 standard library only (no external deps) +2. Add comprehensive docstrings +3. Update this README +4. Follow existing code style +5. Add usage examples + +--- + +## šŸ“„ License + +Scripts are part of the main repository and follow the same license. + +--- + +[← Back to main repository](../) diff --git a/scripts/analyze.py b/scripts/analyze.py new file mode 100755 index 00000000..cce46865 --- /dev/null +++ b/scripts/analyze.py @@ -0,0 +1,181 @@ +#!/usr/bin/env python3 +""" +Analyze and generate statistics about AI tools in the repository. +Creates comparison charts and statistics. +""" + +import json +import os +from collections import defaultdict + +class Colors: + BLUE = '\033[94m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + CYAN = '\033[96m' + RESET = '\033[0m' + BOLD = '\033[1m' + +def load_index(): + """Load the metadata index.""" + index_path = "scripts/index.json" + if not os.path.exists(index_path): + print("Error: index.json not found. Run 'python scripts/generate_metadata.py' first.") + exit(1) + + with open(index_path, 'r', encoding='utf-8') as f: + return json.load(f) + +def print_header(text): + """Print a formatted header.""" + print(f"\n{Colors.BOLD}{Colors.BLUE}{'='*70}{Colors.RESET}") + print(f"{Colors.BOLD}{Colors.BLUE}{text.center(70)}{Colors.RESET}") + print(f"{Colors.BOLD}{Colors.BLUE}{'='*70}{Colors.RESET}\n") + +def print_bar_chart(data, title, max_width=50): + """Print a horizontal bar chart.""" + print(f"{Colors.BOLD}{title}{Colors.RESET}") + + if not data: + print(" No data available") + return + + max_value = max(data.values()) + + for key, value in sorted(data.items(), key=lambda x: x[1], reverse=True): + bar_length = int((value / max_value) * max_width) if max_value > 0 else 0 + bar = 'ā–ˆ' * bar_length + print(f" {key:30} {Colors.GREEN}{bar}{Colors.RESET} {value}") + +def analyze_by_category(index): + """Analyze tools by category.""" + print_bar_chart(index['stats']['by_category'], "Tools by Category") + +def analyze_by_company(index): + """Analyze tools by company.""" + companies = defaultdict(int) + for tool in index['tools']: + company = tool.get('company', 'Unknown') + companies[company] += 1 + + print_bar_chart(dict(companies), "Tools by Company") + +def analyze_by_type(index): + """Analyze tools by type.""" + print_bar_chart(index['stats']['by_type'], "Tools by Type") + +def analyze_file_sizes(index): + """Analyze file sizes and line counts.""" + print(f"{Colors.BOLD}File Size Analysis{Colors.RESET}") + + total_size = 0 + largest_files = [] + + for tool in index['tools']: + for file in tool.get('files', []): + total_size += file['size'] + largest_files.append((file['path'], file['size'], tool['name'])) + + # Sort and get top 10 + largest_files.sort(key=lambda x: x[1], reverse=True) + + print(f"\n Total Size: {total_size / 1024 / 1024:.2f} MB") + print(f"\n {Colors.BOLD}Top 10 Largest Files:{Colors.RESET}") + for path, size, tool_name in largest_files[:10]: + size_kb = size / 1024 + print(f" {path:50} {size_kb:8.1f} KB ({tool_name})") + +def analyze_models(index): + """Analyze AI models used.""" + print(f"{Colors.BOLD}AI Models Analysis{Colors.RESET}\n") + + model_count = defaultdict(int) + for tool in index['tools']: + for model in tool.get('models', []): + model_count[model] += 1 + + if model_count: + print(" Models mentioned in tools:") + for model, count in sorted(model_count.items(), key=lambda x: x[1], reverse=True): + print(f" {model:30} {count} tool(s)") + else: + print(" No model information available in metadata") + +def analyze_complexity(index): + """Analyze complexity based on line count and file count.""" + print(f"{Colors.BOLD}Complexity Analysis{Colors.RESET}\n") + + # Sort by total lines + by_lines = sorted(index['tools'], key=lambda x: x.get('total_lines', 0), reverse=True) + + print(f" {Colors.BOLD}Most Complex (by line count):{Colors.RESET}") + for i, tool in enumerate(by_lines[:10], 1): + lines = tool.get('total_lines', 0) + files = tool.get('file_count', 0) + print(f" {i:2}. {tool['name']:30} {lines:6,} lines, {files:2} files") + + # Sort by file count + by_files = sorted(index['tools'], key=lambda x: x.get('file_count', 0), reverse=True) + + print(f"\n {Colors.BOLD}Most Files:{Colors.RESET}") + for i, tool in enumerate(by_files[:10], 1): + files = tool.get('file_count', 0) + print(f" {i:2}. {tool['name']:30} {files:2} files") + +def generate_comparison_table(index): + """Generate a markdown comparison table.""" + print(f"{Colors.BOLD}Generating Comparison Table (Markdown){Colors.RESET}\n") + + md = "| Tool | Company | Category | Files | Lines | Models |\n" + md += "|------|---------|----------|-------|-------|--------|\n" + + for tool in sorted(index['tools'], key=lambda x: x['name']): + name = tool['name'] + company = tool.get('company', 'Unknown') + category = tool.get('category', 'Unknown') + files = tool.get('file_count', 0) + lines = tool.get('total_lines', 0) + models = ', '.join(tool.get('models', [])[:2]) if tool.get('models') else 'N/A' + if len(tool.get('models', [])) > 2: + models += '...' + + md += f"| {name} | {company} | {category} | {files} | {lines:,} | {models} |\n" + + # Save to file + output_path = "scripts/comparison_table.md" + with open(output_path, 'w', encoding='utf-8') as f: + f.write(md) + + print(f" Saved to: {output_path}") + +def main(): + """Run all analyses.""" + index = load_index() + + print_header("AI Tools Repository Analysis") + + # Overall stats + print(f"{Colors.BOLD}Overall Statistics{Colors.RESET}") + print(f" Total Tools: {Colors.CYAN}{index['stats']['total_tools']}{Colors.RESET}") + print(f" Total Files: {Colors.CYAN}{index['stats']['total_files']}{Colors.RESET}") + print(f" Total Lines: {Colors.CYAN}{index['stats']['total_lines']:,}{Colors.RESET}") + + print() + analyze_by_category(index) + print() + analyze_by_company(index) + print() + analyze_by_type(index) + print() + analyze_models(index) + print() + analyze_complexity(index) + print() + analyze_file_sizes(index) + print() + generate_comparison_table(index) + + print(f"\n{Colors.GREEN}Analysis complete!{Colors.RESET}\n") + +if __name__ == "__main__": + main() diff --git a/scripts/generate_metadata.py b/scripts/generate_metadata.py new file mode 100755 index 00000000..30b4cbe1 --- /dev/null +++ b/scripts/generate_metadata.py @@ -0,0 +1,420 @@ +#!/usr/bin/env python3 +""" +Generate metadata for all AI tools in the repository. +Creates an index.json file with comprehensive information about each tool. +""" + +import os +import json +from pathlib import Path +from datetime import datetime + +# Tool metadata - manually curated information about each tool +TOOL_INFO = { + "Amp": { + "name": "Amp", + "company": "Unknown", + "category": "AI Agent", + "type": "proprietary", + "description": "AI coding assistant", + "website": None, + "models": [] + }, + "Anthropic": { + "name": "Anthropic", + "company": "Anthropic", + "category": "Foundation Model", + "type": "proprietary", + "description": "Claude Sonnet 4.5 and Claude Code 2.0 system prompts", + "website": "https://anthropic.com", + "models": ["claude-sonnet-4.5", "claude-code-2.0"] + }, + "Augment Code": { + "name": "Augment Code", + "company": "Augment", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI-powered code completion and generation", + "website": "https://augmentcode.com", + "models": ["claude-4-sonnet", "gpt-5"] + }, + "Claude Code": { + "name": "Claude Code", + "company": "Anthropic", + "category": "Code Assistant", + "type": "proprietary", + "description": "Claude's official coding interface system prompt and tools", + "website": "https://claude.ai/code", + "models": ["claude-sonnet-4.5"] + }, + "Cluely": { + "name": "Cluely", + "company": "Cluely", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI coding assistant with default and enterprise modes", + "website": None, + "models": [] + }, + "CodeBuddy Prompts": { + "name": "CodeBuddy", + "company": "CodeBuddy", + "category": "Code Assistant", + "type": "proprietary", + "description": "Chat and Craft mode prompts for code generation", + "website": None, + "models": [] + }, + "Comet Assistant": { + "name": "Comet Assistant", + "company": "Comet", + "category": "AI Assistant", + "type": "proprietary", + "description": "General purpose AI coding assistant", + "website": None, + "models": [] + }, + "Cursor Prompts": { + "name": "Cursor", + "company": "Cursor", + "category": "IDE", + "type": "proprietary", + "description": "AI-first code editor with multiple agent modes", + "website": "https://cursor.com", + "models": ["claude", "gpt-4"] + }, + "Devin AI": { + "name": "Devin", + "company": "Cognition AI", + "category": "AI Agent", + "type": "proprietary", + "description": "Autonomous AI software engineer", + "website": "https://devin.ai", + "models": [] + }, + "Emergent": { + "name": "Emergent", + "company": "Emergent", + "category": "AI Agent", + "type": "proprietary", + "description": "AI coding agent with tools", + "website": None, + "models": [] + }, + "Junie": { + "name": "Junie", + "company": "Junie", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI coding assistant", + "website": None, + "models": [] + }, + "Kiro": { + "name": "Kiro", + "company": "Kiro", + "category": "Code Assistant", + "type": "proprietary", + "description": "Multi-mode AI assistant (Spec, Vibe, Mode Classifier)", + "website": None, + "models": [] + }, + "Leap.new": { + "name": "Leap", + "company": "Leap", + "category": "Web Builder", + "type": "proprietary", + "description": "AI-powered web application builder", + "website": "https://leap.new", + "models": [] + }, + "Lovable": { + "name": "Lovable", + "company": "Lovable", + "category": "Web Builder", + "type": "proprietary", + "description": "AI-powered app builder", + "website": "https://lovable.dev", + "models": [] + }, + "Manus Agent Tools & Prompt": { + "name": "Manus", + "company": "Manus", + "category": "AI Agent", + "type": "proprietary", + "description": "Agent with loop, modules, and tools", + "website": None, + "models": [] + }, + "NotionAi": { + "name": "Notion AI", + "company": "Notion", + "category": "Document Assistant", + "type": "proprietary", + "description": "AI assistant integrated into Notion", + "website": "https://notion.so", + "models": [] + }, + "Open Source prompts": { + "name": "Open Source AI Tools", + "company": "Various", + "category": "Collection", + "type": "open-source", + "description": "Collection of open-source AI coding tools", + "website": None, + "models": [], + "subcategories": ["Bolt", "Cline", "Codex CLI", "Gemini CLI", "Lumo", "RooCode"] + }, + "Orchids.app": { + "name": "Orchids", + "company": "Orchids", + "category": "AI Assistant", + "type": "proprietary", + "description": "AI assistant with decision-making capabilities", + "website": "https://orchids.app", + "models": [] + }, + "Perplexity": { + "name": "Perplexity", + "company": "Perplexity AI", + "category": "Search Assistant", + "type": "proprietary", + "description": "AI-powered search and answer engine", + "website": "https://perplexity.ai", + "models": [] + }, + "Poke": { + "name": "Poke", + "company": "Poke", + "category": "AI Agent", + "type": "proprietary", + "description": "Multi-part agent system (6 parts + agent)", + "website": None, + "models": [] + }, + "Qoder": { + "name": "Qoder", + "company": "Qoder", + "category": "Code Assistant", + "type": "proprietary", + "description": "Quest-based code assistant (Design, Action)", + "website": None, + "models": [] + }, + "Replit": { + "name": "Replit Agent", + "company": "Replit", + "category": "Cloud IDE", + "type": "proprietary", + "description": "AI agent for Replit cloud development environment", + "website": "https://replit.com", + "models": [] + }, + "Same.dev": { + "name": "Same", + "company": "Same", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI coding assistant", + "website": "https://same.dev", + "models": [] + }, + "Trae": { + "name": "Trae", + "company": "Trae", + "category": "AI Agent", + "type": "proprietary", + "description": "Builder and chat modes for development", + "website": None, + "models": [] + }, + "Traycer AI": { + "name": "Traycer", + "company": "Traycer", + "category": "AI Agent", + "type": "proprietary", + "description": "Multi-mode agent (Phase, Plan)", + "website": None, + "models": [] + }, + "VSCode Agent": { + "name": "VSCode Copilot Agent", + "company": "Microsoft/GitHub", + "category": "IDE", + "type": "proprietary", + "description": "GitHub Copilot agent for VSCode", + "website": "https://code.visualstudio.com", + "models": ["gpt-4", "gpt-4.1", "gpt-5", "gpt-5-mini", "claude-sonnet-4", "gemini-2.5-pro"] + }, + "Warp.dev": { + "name": "Warp", + "company": "Warp", + "category": "Terminal", + "type": "proprietary", + "description": "AI-powered terminal", + "website": "https://warp.dev", + "models": [] + }, + "Windsurf": { + "name": "Windsurf", + "company": "Codeium", + "category": "IDE", + "type": "proprietary", + "description": "AI-powered code editor (Wave 11)", + "website": "https://codeium.com/windsurf", + "models": [] + }, + "Xcode": { + "name": "Xcode AI", + "company": "Apple", + "category": "IDE", + "type": "proprietary", + "description": "AI features in Xcode (Document, Explain, Message, Playground, Preview)", + "website": "https://developer.apple.com/xcode/", + "models": [] + }, + "Z.ai Code": { + "name": "Z.ai Code", + "company": "Z.ai", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI coding assistant", + "website": None, + "models": [] + }, + "dia": { + "name": "Dia", + "company": "Dia", + "category": "Code Assistant", + "type": "proprietary", + "description": "AI coding assistant", + "website": None, + "models": [] + }, + "v0 Prompts and Tools": { + "name": "v0", + "company": "Vercel", + "category": "Web Builder", + "type": "proprietary", + "description": "AI-powered UI generation tool", + "website": "https://v0.dev", + "models": [] + } +} + + +def get_file_info(filepath): + """Get metadata about a file.""" + stat = os.stat(filepath) + return { + "name": os.path.basename(filepath), + "path": filepath, + "size": stat.st_size, + "type": os.path.splitext(filepath)[1], + "modified": datetime.fromtimestamp(stat.st_mtime).isoformat() + } + + +def analyze_directory(dir_path): + """Analyze a directory and gather metadata.""" + files = [] + total_lines = 0 + + for root, dirs, filenames in os.walk(dir_path): + for filename in filenames: + if filename.endswith(('.txt', '.json', '.md')): + filepath = os.path.join(root, filename) + file_info = get_file_info(filepath) + + # Count lines for text files + if file_info['type'] in ['.txt', '.md']: + try: + with open(filepath, 'r', encoding='utf-8', errors='ignore') as f: + lines = len(f.readlines()) + file_info['lines'] = lines + total_lines += lines + except Exception: + file_info['lines'] = 0 + + files.append(file_info) + + return files, total_lines + + +def generate_index(): + """Generate comprehensive index of all tools.""" + index = { + "generated": datetime.now().isoformat(), + "repository": "system-prompts-and-models-of-ai-tools", + "version": "2.0", + "stats": { + "total_tools": 0, + "total_files": 0, + "total_lines": 0, + "by_category": {}, + "by_type": {} + }, + "tools": [] + } + + # Scan all directories + for item in sorted(os.listdir('.')): + if os.path.isdir(item) and item not in ['.git', 'assets', '.github', 'scripts']: + # Get metadata + info = TOOL_INFO.get(item, { + "name": item, + "company": "Unknown", + "category": "Unknown", + "type": "unknown", + "description": "No description available", + "website": None, + "models": [] + }) + + # Analyze files + files, total_lines = analyze_directory(item) + + tool_data = { + **info, + "directory": item, + "files": files, + "file_count": len(files), + "total_lines": total_lines + } + + index["tools"].append(tool_data) + index["stats"]["total_tools"] += 1 + index["stats"]["total_files"] += len(files) + index["stats"]["total_lines"] += total_lines + + # Update category stats + category = info.get("category", "Unknown") + index["stats"]["by_category"][category] = index["stats"]["by_category"].get(category, 0) + 1 + + # Update type stats + tool_type = info.get("type", "unknown") + index["stats"]["by_type"][tool_type] = index["stats"]["by_type"].get(tool_type, 0) + 1 + + return index + + +if __name__ == "__main__": + print("Generating metadata index...") + index = generate_index() + + # Write to file + output_path = "scripts/index.json" + with open(output_path, 'w', encoding='utf-8') as f: + json.dump(index, f, indent=2, ensure_ascii=False) + + print(f"\nāœ“ Generated {output_path}") + print(f"\nStatistics:") + print(f" Total Tools: {index['stats']['total_tools']}") + print(f" Total Files: {index['stats']['total_files']}") + print(f" Total Lines: {index['stats']['total_lines']:,}") + print(f"\nBy Category:") + for cat, count in sorted(index['stats']['by_category'].items()): + print(f" {cat}: {count}") + print(f"\nBy Type:") + for typ, count in sorted(index['stats']['by_type'].items()): + print(f" {typ}: {count}") diff --git a/scripts/search.py b/scripts/search.py new file mode 100755 index 00000000..2a6bd75f --- /dev/null +++ b/scripts/search.py @@ -0,0 +1,153 @@ +#!/usr/bin/env python3 +""" +Search and filter AI tools in the repository. +Usage: + python scripts/search.py --category "Code Assistant" + python scripts/search.py --company "Anthropic" + python scripts/search.py --text "agent" + python scripts/search.py --model "gpt-5" +""" + +import json +import argparse +import os +from pathlib import Path + +class Colors: + BLUE = '\033[94m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + RESET = '\033[0m' + BOLD = '\033[1m' + +def load_index(): + """Load the metadata index.""" + index_path = "scripts/index.json" + if not os.path.exists(index_path): + print(f"Error: {index_path} not found. Run 'python scripts/generate_metadata.py' first.") + exit(1) + + with open(index_path, 'r', encoding='utf-8') as f: + return json.load(f) + +def search_tools(index, category=None, company=None, text=None, model=None, tool_type=None): + """Search tools based on criteria.""" + results = [] + + for tool in index['tools']: + # Filter by category + if category and tool.get('category', '').lower() != category.lower(): + continue + + # Filter by company + if company and company.lower() not in tool.get('company', '').lower(): + continue + + # Filter by type + if tool_type and tool.get('type', '').lower() != tool_type.lower(): + continue + + # Filter by model + if model: + models = tool.get('models', []) + if not any(model.lower() in m.lower() for m in models): + continue + + # Filter by text in name or description + if text: + searchable = f"{tool.get('name', '')} {tool.get('description', '')}".lower() + if text.lower() not in searchable: + continue + + results.append(tool) + + return results + +def display_results(results, verbose=False): + """Display search results.""" + if not results: + print(f"{Colors.YELLOW}No results found.{Colors.RESET}") + return + + print(f"\n{Colors.BOLD}Found {len(results)} tool(s):{Colors.RESET}\n") + + for tool in results: + print(f"{Colors.BLUE}{Colors.BOLD}{tool['name']}{Colors.RESET}") + print(f" Company: {tool.get('company', 'Unknown')}") + print(f" Category: {tool.get('category', 'Unknown')}") + print(f" Type: {tool.get('type', 'unknown')}") + + if tool.get('website'): + print(f" Website: {tool['website']}") + + if tool.get('models'): + print(f" Models: {', '.join(tool['models'])}") + + print(f" Files: {tool['file_count']} ({tool.get('total_lines', 0):,} lines)") + + if verbose: + print(f" Description: {tool.get('description', 'N/A')}") + print(f" Directory: {tool['directory']}") + if tool.get('files'): + print(" File list:") + for file in tool['files']: + size_kb = file['size'] / 1024 + print(f" - {file['name']} ({size_kb:.1f} KB)") + + print() + +def list_categories(index): + """List all categories.""" + categories = set(tool.get('category', 'Unknown') for tool in index['tools']) + print(f"\n{Colors.BOLD}Available Categories:{Colors.RESET}") + for cat in sorted(categories): + count = sum(1 for t in index['tools'] if t.get('category') == cat) + print(f" {cat} ({count})") + +def list_companies(index): + """List all companies.""" + companies = set(tool.get('company', 'Unknown') for tool in index['tools']) + print(f"\n{Colors.BOLD}Available Companies:{Colors.RESET}") + for company in sorted(companies): + count = sum(1 for t in index['tools'] if t.get('company') == company) + print(f" {company} ({count})") + +def main(): + parser = argparse.ArgumentParser(description='Search AI tools in the repository') + parser.add_argument('--category', help='Filter by category') + parser.add_argument('--company', help='Filter by company') + parser.add_argument('--text', help='Search in name and description') + parser.add_argument('--model', help='Filter by AI model') + parser.add_argument('--type', help='Filter by type (proprietary/open-source)') + parser.add_argument('--verbose', '-v', action='store_true', help='Show detailed information') + parser.add_argument('--list-categories', action='store_true', help='List all categories') + parser.add_argument('--list-companies', action='store_true', help='List all companies') + + args = parser.parse_args() + + # Load index + index = load_index() + + # Handle list commands + if args.list_categories: + list_categories(index) + return + + if args.list_companies: + list_companies(index) + return + + # Perform search + results = search_tools( + index, + category=args.category, + company=args.company, + text=args.text, + model=args.model, + tool_type=args.type + ) + + display_results(results, verbose=args.verbose) + +if __name__ == "__main__": + main() diff --git a/scripts/validate.py b/scripts/validate.py new file mode 100755 index 00000000..49f7f73b --- /dev/null +++ b/scripts/validate.py @@ -0,0 +1,167 @@ +#!/usr/bin/env python3 +""" +Validate repository structure and content. +Checks for: +- Missing files +- Broken links in README +- Inconsistent naming +- Empty files +- Missing metadata +""" + +import os +import re +from pathlib import Path + +class Colors: + RED = '\033[91m' + GREEN = '\033[92m' + YELLOW = '\033[93m' + BLUE = '\033[94m' + RESET = '\033[0m' + +def check_readme_links(): + """Check all links in README.md point to valid directories.""" + issues = [] + + with open('README.md', 'r', encoding='utf-8') as f: + content = f.read() + + # Find all markdown links to directories + links = re.findall(r'\[.*?\]\((\.\/[^)]+)\)', content) + + for link in links: + # Decode URL encoding + path = link.replace('%20', ' ') + path = path.replace('./', '') + path = path.rstrip('/') + + if not os.path.exists(path) and path not in ['LICENSE.md', 'README.md']: + issues.append(f"Broken link: {link} -> {path} does not exist") + + return issues + +def check_directory_consistency(): + """Check all directories are listed in README.""" + issues = [] + + # Get all directories + dirs = [d for d in os.listdir('.') if os.path.isdir(d) and d not in ['.git', 'assets', '.github', 'scripts']] + + # Read README + with open('README.md', 'r', encoding='utf-8') as f: + readme_content = f.read() + + for directory in dirs: + # Check if directory is mentioned in README (flexible matching) + if directory not in readme_content and directory.replace(' ', '%20') not in readme_content: + issues.append(f"Directory '{directory}' not listed in README.md") + + return issues + +def check_empty_files(): + """Check for empty files.""" + issues = [] + + for root, dirs, files in os.walk('.'): + # Skip .git directory + if '.git' in root: + continue + + for file in files: + if file.endswith(('.txt', '.json', '.md')): + filepath = os.path.join(root, file) + if os.path.getsize(filepath) == 0: + issues.append(f"Empty file: {filepath}") + + return issues + +def check_file_naming_consistency(): + """Check for inconsistent file naming patterns.""" + warnings = [] + + for root, dirs, files in os.walk('.'): + if '.git' in root or 'scripts' in root: + continue + + for file in files: + # Check for files without extensions that should have them + if not any(file.endswith(ext) for ext in ['.txt', '.json', '.md', '.png', '.jpg', '.svg']): + if file not in ['.gitignore', 'LICENSE']: + warnings.append(f"File without standard extension: {os.path.join(root, file)}") + + # Check for inconsistent naming (mixing underscores and spaces) + if '_' in file and ' ' in file: + warnings.append(f"Inconsistent naming (mixed _ and space): {os.path.join(root, file)}") + + return warnings + +def check_directory_structure(): + """Check each directory has appropriate files.""" + issues = [] + + for item in os.listdir('.'): + if os.path.isdir(item) and item not in ['.git', 'assets', '.github', 'scripts']: + files = os.listdir(item) + + # Check if directory has any content files + has_content = any(f.endswith(('.txt', '.json', '.md')) for f in files) + if not has_content: + issues.append(f"Directory '{item}' has no .txt, .json, or .md files") + + return issues + +def main(): + """Run all validation checks.""" + print(f"{Colors.BLUE}{'='*60}{Colors.RESET}") + print(f"{Colors.BLUE}Repository Validation{Colors.RESET}") + print(f"{Colors.BLUE}{'='*60}{Colors.RESET}\n") + + all_issues = [] + all_warnings = [] + + # Run checks + checks = [ + ("README links", check_readme_links, True), + ("Directory consistency", check_directory_consistency, True), + ("Empty files", check_empty_files, True), + ("File naming", check_file_naming_consistency, False), + ("Directory structure", check_directory_structure, True) + ] + + for check_name, check_func, is_error in checks: + print(f"Checking {check_name}...", end=" ") + results = check_func() + + if results: + if is_error: + all_issues.extend(results) + print(f"{Colors.RED}āœ— {len(results)} issue(s){Colors.RESET}") + else: + all_warnings.extend(results) + print(f"{Colors.YELLOW}⚠ {len(results)} warning(s){Colors.RESET}") + else: + print(f"{Colors.GREEN}āœ“{Colors.RESET}") + + # Print detailed results + if all_issues: + print(f"\n{Colors.RED}Issues found:{Colors.RESET}") + for issue in all_issues: + print(f" {Colors.RED}āœ—{Colors.RESET} {issue}") + + if all_warnings: + print(f"\n{Colors.YELLOW}Warnings:{Colors.RESET}") + for warning in all_warnings: + print(f" {Colors.YELLOW}⚠{Colors.RESET} {warning}") + + # Summary + print(f"\n{Colors.BLUE}{'='*60}{Colors.RESET}") + if not all_issues and not all_warnings: + print(f"{Colors.GREEN}āœ“ All checks passed!{Colors.RESET}") + return 0 + else: + print(f"Total: {Colors.RED}{len(all_issues)} error(s){Colors.RESET}, {Colors.YELLOW}{len(all_warnings)} warning(s){Colors.RESET}") + return 1 if all_issues else 0 + +if __name__ == "__main__": + exit(main())