Files
wehub-resource-sync 2cab53bc94
Test Vector Database Adaptors / Test MCP Vector DB Tools (push) Has been cancelled
Tests / Code Quality (Ruff & Mypy) (push) Has been cancelled
Tests / Fast Unit Tests (parallel) (macos-latest, 3.11) (push) Has been cancelled
Tests / Fast Unit Tests (parallel) (macos-latest, 3.12) (push) Has been cancelled
Tests / Tests (push) Has been cancelled
Docker Publish / Build and Push Docker Images (map[description:Skill Seekers CLI - Convert documentation to AI skills dockerfile:Dockerfile name:skill-seekers]) (push) Has been cancelled
Docker Publish / Build and Push Docker Images (map[description:Skill Seekers MCP Server - 25 tools for AI assistants dockerfile:Dockerfile.mcp name:skill-seekers-mcp]) (push) Has been cancelled
Docker Publish / Test Docker Images (push) Has been cancelled
Tests / Fast Unit Tests (parallel) (ubuntu-latest, 3.10) (push) Has been cancelled
Tests / Fast Unit Tests (parallel) (ubuntu-latest, 3.11) (push) Has been cancelled
Tests / Fast Unit Tests (parallel) (ubuntu-latest, 3.12) (push) Has been cancelled
Tests / Serial / Integration / E2E Tests (push) Has been cancelled
Tests / MCP Server Tests (push) Has been cancelled
Test Vector Database Adaptors / Test chroma Adaptor (push) Has been cancelled
Test Vector Database Adaptors / Test faiss Adaptor (push) Has been cancelled
Test Vector Database Adaptors / Test qdrant Adaptor (push) Has been cancelled
Test Vector Database Adaptors / Test weaviate Adaptor (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:46:28 +08:00

144 lines
4.0 KiB
Python

#!/usr/bin/env python3
"""
Automate Cursor rules generation for React.
This script demonstrates the complete workflow:
1. Scrape React documentation
2. Package for Cursor
3. Extract and copy rules to project
"""
import subprocess
import sys
from pathlib import Path
def run_command(cmd: list, description: str) -> bool:
"""Run a shell command and return success status."""
print(f"\n{'='*60}")
print(f"STEP: {description}")
print(f"{'='*60}")
print(f"Command: {' '.join(cmd)}\n")
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode != 0:
print(f"❌ Error: {result.stderr}")
return False
print(f"✅ Success!")
if result.stdout:
# Print first 500 chars to avoid clutter
output = result.stdout[:500]
if len(result.stdout) > 500:
output += "... (truncated)"
print(output)
return True
def main():
"""Run the automation workflow."""
print("=" * 60)
print("Cursor Rules Generator - React Example")
print("=" * 60)
print("\nThis script will:")
print(" 1. Scrape React documentation (100 pages)")
print(" 2. Package for Cursor IDE")
print(" 3. Extract and copy to example-project/")
print("\n⏱️ Estimated time: 2-3 minutes\n")
# Step 1: Scrape React docs
print("Starting workflow...")
if not run_command(
[
"skill-seekers",
"scrape",
"--config",
"../../configs/react.json",
"--max-pages",
"100",
],
"Scraping React documentation",
):
print("\n❌ Failed to scrape React documentation")
print(" Make sure skill-seekers is installed: pip install skill-seekers")
sys.exit(1)
# Step 2: Package for Cursor
if not run_command(
["skill-seekers", "package", "../../output/react", "--target", "claude"],
"Packaging for Cursor",
):
print("\n❌ Failed to package for Cursor")
sys.exit(1)
# Step 3: Extract ZIP
if not run_command(
[
"unzip",
"-o",
"../../output/react-claude.zip",
"-d",
"../../output/react-cursor",
],
"Extracting packaged skill",
):
print("\n❌ Failed to extract package")
print(" Make sure unzip is installed")
sys.exit(1)
# Step 4: Copy to example project
source = Path("../../output/react-cursor/SKILL.md")
target = Path("example-project/.cursorrules")
if not source.exists():
print(f"\n❌ Error: {source} not found")
sys.exit(1)
target.parent.mkdir(parents=True, exist_ok=True)
target.write_text(source.read_text())
print(f"\n{'='*60}")
print(f"STEP: Copying rules to project")
print(f"{'='*60}")
print(f"✅ Copied {source}{target}")
# Success summary
print("\n" + "=" * 60)
print("✅ Cursor rules generated successfully!")
print("=" * 60)
print(f"\n📁 Rules file: {target.absolute()}")
print(f"📏 Size: {len(target.read_text())} characters")
# Preview first 300 characters
content = target.read_text()
preview = content[:300]
if len(content) > 300:
preview += "..."
print(f"\n📖 Preview:\n{preview}")
print("\n🚀 Next steps:")
print(" 1. Open example-project/ in Cursor:")
print(" cursor example-project/")
print("\n 2. Try these prompts:")
print(" - 'Create a useState hook for managing user data'")
print(" - 'Add useEffect to fetch data on mount'")
print(" - 'Implement a custom hook for form validation'")
print("\n 3. Compare AI suggestions with and without .cursorrules")
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
print("\n\n⚠️ Interrupted by user")
sys.exit(0)
except Exception as e:
print(f"\n❌ Unexpected error: {e}")
import traceback
traceback.print_exc()
sys.exit(1)