commit 2cab53bc947c52aa0e7efb5c498a4d4f43d70b72 Author: wehub-resource-sync Date: Mon Jul 13 12:46:28 2026 +0800 chore: import upstream snapshot with attribution diff --git a/.claude/mcp_config.example.json b/.claude/mcp_config.example.json new file mode 100644 index 0000000..74ba333 --- /dev/null +++ b/.claude/mcp_config.example.json @@ -0,0 +1,14 @@ +{ + "mcpServers": { + "skill-seeker": { + "type": "stdio", + "command": "/path/to/your/Skill_Seekers/.venv/bin/python3", + "args": [ + "-m", + "skill_seekers.mcp.server_fastmcp" + ], + "cwd": "/path/to/your/Skill_Seekers", + "env": {} + } + } +} diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json new file mode 100644 index 0000000..5fc1dcb --- /dev/null +++ b/.codex-plugin/plugin.json @@ -0,0 +1,21 @@ +{ + "name": "skill-seekers", + "version": "3.5.0", + "description": "Convert docs and repos into AI skills via MCP", + "author": { + "name": "yusufkaraaslan", + "url": "https://github.com/yusufkaraaslan/Skill_Seekers" + }, + "homepage": "https://skillseekersweb.com/", + "repository": "https://github.com/yusufkaraaslan/Skill_Seekers", + "keywords": ["mcp", "codex", "skills", "documentation"], + "mcpServers": "./.mcp.json", + "skills": "./skills/", + "interface": { + "displayName": "Skill Seekers", + "shortDescription": "Convert docs and repos into AI skills via MCP", + "longDescription": "Convert documentation websites, GitHub repositories, and PDFs into AI skills with automatic conflict detection.", + "category": "Development", + "websiteURL": "https://skillseekersweb.com/" + } +} diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ecb4a18 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,83 @@ +# Python artifacts +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual environments +venv/ +env/ +ENV/ +.venv + +# Testing +.pytest_cache/ +.coverage +.coverage.* +htmlcov/ +.tox/ +.hypothesis/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ +.DS_Store + +# Git +.git/ +.gitignore +.gitattributes + +# Documentation +docs/ +*.md +!README.md + +# CI/CD +.github/ +.gitlab-ci.yml +.travis.yml + +# Output directories +output/ +data/ +*.zip +*.tar.gz + +# Logs +*.log +logs/ + +# Environment files +.env +.env.* +!.env.example + +# Test files +tests/ +test_*.py +*_test.py + +# Docker +Dockerfile* +docker-compose*.yml +.dockerignore diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..709eabd --- /dev/null +++ b/.env.example @@ -0,0 +1,46 @@ +# Skill Seekers Docker Environment Configuration +# Copy this file to .env and fill in your API keys + +# Claude AI / Anthropic API +# Required for AI enhancement features +# Get your key from: https://console.anthropic.com/ +ANTHROPIC_API_KEY=sk-ant-your-key-here + +# Google Gemini API (Optional) +# Required for Gemini platform support +# Get your key from: https://makersuite.google.com/app/apikey +GOOGLE_API_KEY= + +# OpenAI API (Optional) +# Required for OpenAI/ChatGPT platform support +# Get your key from: https://platform.openai.com/api-keys +OPENAI_API_KEY= + +# GitHub Token (Optional, but recommended) +# Increases rate limits from 60/hour to 5000/hour +# Create token at: https://github.com/settings/tokens +# Required scopes: public_repo (for public repos) +GITHUB_TOKEN= + +# MCP Server Configuration +MCP_TRANSPORT=http +MCP_PORT=8765 + +# Docker Resource Limits (Optional) +# Uncomment to set custom limits +# DOCKER_CPU_LIMIT=2.0 +# DOCKER_MEMORY_LIMIT=4g + +# Pinecone API (Optional) +# Required for Pinecone vector database upload +# Get your key from: https://app.pinecone.io/ +PINECONE_API_KEY= + +# Vector Database Ports (Optional - change if needed) +# WEAVIATE_PORT=8080 +# QDRANT_PORT=6333 +# CHROMA_PORT=8000 + +# Logging (Optional) +# SKILL_SEEKERS_LOG_LEVEL=INFO +# SKILL_SEEKERS_LOG_FILE=/data/logs/skill-seekers.log diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..8cf34f1 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# GitHub Sponsors configuration +# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository + +buy_me_a_coffee: yusufkaraaslan diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..3dbbb62 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,52 @@ +--- +name: Bug Report +about: Report a bug or issue with Skill Seekers +title: '[BUG] ' +labels: 'type: bug' +assignees: '' +--- + +## ๐Ÿ› Bug Description + +A clear and concise description of what the bug is. + +## ๐Ÿ”„ Steps to Reproduce + +1. Go to '...' +2. Run command '...' +3. See error + +## โœ… Expected Behavior + +What you expected to happen. + +## โŒ Actual Behavior + +What actually happened. + +## ๐Ÿ“‹ Environment + +- **OS:** [e.g., macOS 14.0, Ubuntu 22.04, Windows 11] +- **Python Version:** [e.g., 3.10, 3.11] +- **Skill Seekers Version:** [e.g., v1.0.0] +- **Installation Method:** [pip, git clone, etc.] + +## ๐Ÿ“Š Error Output + +``` +Paste the full error message or traceback here +``` + +## ๐Ÿ“ธ Screenshots + +If applicable, add screenshots to help explain the problem. + +## ๐Ÿ” Additional Context + +- Config file used (if applicable) +- Documentation URL being scraped +- Any custom modifications made + +## ๐ŸŽฏ Possible Solution + +If you have an idea of how to fix this, please share! diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 0000000..0b7a53d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,41 @@ +--- +name: Documentation Improvement +about: Suggest improvements to documentation +title: '[DOCS] ' +labels: 'type: documentation' +assignees: '' +--- + +## ๐Ÿ“š Documentation Issue + +What documentation needs to be improved, added, or fixed? + +## ๐Ÿ“ Location + +- **File:** [e.g., README.md, docs/CLAUDE.md] +- **Section:** [e.g., Installation, Configuration] +- **URL:** [if applicable] + +## โŒ Current State + +Describe what's currently unclear, missing, or incorrect. + +## โœ… Proposed Improvement + +How should the documentation be changed? + +## ๐ŸŽฏ Target Audience + +Who would benefit from this documentation improvement? +- [ ] New users +- [ ] Advanced users +- [ ] Contributors +- [ ] API users + +## ๐Ÿ“ Additional Context + +Any additional context or examples that would help. + +## ๐Ÿ”— Related Issues + +Link to any related issues or PRs. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..872b806 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,39 @@ +--- +name: Feature Request +about: Suggest a new feature for Skill Seekers +title: '[FEATURE] ' +labels: 'type: feature' +assignees: '' +--- + +## ๐Ÿš€ Feature Description + +A clear and concise description of the feature you'd like to see. + +## ๐Ÿ’ก Use Case + +Describe the problem this feature would solve. What is the user trying to accomplish? + +## ๐Ÿ“‹ Proposed Solution + +Describe how you envision this feature working. + +## ๐Ÿ”„ Alternatives Considered + +Have you considered any alternative solutions or workarounds? + +## ๐Ÿ“Š Expected Impact + +- **Priority:** Low / Medium / High / Critical +- **Effort:** XS / S / M / L / XL +- **Users Affected:** Describe who would benefit + +## ๐Ÿ“ Additional Context + +Add any other context, screenshots, or examples about the feature request. + +## โœ… Acceptance Criteria + +- [ ] Criteria 1 +- [ ] Criteria 2 +- [ ] Criteria 3 diff --git a/.github/ISSUE_TEMPLATE/mcp_tool.md b/.github/ISSUE_TEMPLATE/mcp_tool.md new file mode 100644 index 0000000..d4f1464 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/mcp_tool.md @@ -0,0 +1,42 @@ +--- +name: MCP Tool Request +about: Suggest a new tool for the MCP server +title: '[MCP] Add tool: ' +labels: mcp, enhancement +assignees: '' +--- + +## Tool Name + + +## Tool Description + + +## Input Parameters +```json +{ + "param1": { + "type": "string", + "description": "...", + "required": true + } +} +``` + +## Expected Output + + +## Use Case Example + +``` +User: "Auto-detect selectors for https://docs.example.com" +Tool: Analyzes page structure and suggests optimal selectors +``` + +## CLI Integration + +- [ ] Wraps existing CLI tool: `cli/tool_name.py` +- [ ] New functionality + +## Implementation Notes + diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..94da16c --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,49 @@ +# Pull Request + +## ๐Ÿ“‹ Description + +Brief description of changes made. + +## ๐Ÿ”— Related Issues + +Closes #(issue number) +Relates to #(issue number) + +## ๐ŸŽฏ Type of Change + +- [ ] ๐Ÿ› Bug fix (non-breaking change which fixes an issue) +- [ ] โœจ New feature (non-breaking change which adds functionality) +- [ ] ๐Ÿ’ฅ Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] ๐Ÿ“š Documentation update +- [ ] โ™ป๏ธ Code refactoring +- [ ] โšก Performance improvement +- [ ] ๐Ÿงช Test update + +## โœ… Checklist + +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] Documentation updated (README, examples, AGENTS.md if CLI changed) +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +- [ ] Any dependent changes have been merged and published + +## ๐Ÿงช Testing + +Describe the tests you ran to verify your changes. + +**Test Configuration:** +- Python version: +- OS: +- Dependencies installed: + +## ๐Ÿ“ธ Screenshots (if applicable) + +Add screenshots to demonstrate visual changes. + +## ๐Ÿ“ Additional Notes + +Any additional information reviewers should know. diff --git a/.github/create_issues.sh b/.github/create_issues.sh new file mode 100755 index 0000000..72fc2ef --- /dev/null +++ b/.github/create_issues.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# Script to create GitHub issues via web browser +# Since gh CLI is not available, we'll open browser to create issues + +REPO="yusufkaraaslan/Skill_Seekers" +BASE_URL="https://github.com/${REPO}/issues/new" + +echo "๐Ÿš€ Creating GitHub Issues for Skill Seeker MCP Development" +echo "==========================================================" +echo "" +echo "Opening browser to create issues..." +echo "Please copy the content from .github/ISSUES_TO_CREATE.md" +echo "" + +# Issue 1: Fix test failures +echo "๐Ÿ“ Issue 1: Fix 3 test failures" +echo "URL: ${BASE_URL}?labels=bug,tests,good+first+issue&title=Fix+3+test+failures+(warnings+vs+errors+handling)" +echo "" + +# Issue 2: MCP setup guide +echo "๐Ÿ“ Issue 2: Create MCP setup guide" +echo "URL: ${BASE_URL}?labels=documentation,mcp,enhancement&title=Create+comprehensive+MCP+setup+guide+for+Claude+Code" +echo "" + +# Issue 3: Test MCP server +echo "๐Ÿ“ Issue 3: Test MCP server" +echo "URL: ${BASE_URL}?labels=testing,mcp,priority-high&title=Test+MCP+server+with+actual+Claude+Code+instance" +echo "" + +# Issue 4: Update documentation +echo "๐Ÿ“ Issue 4: Update documentation" +echo "URL: ${BASE_URL}?labels=documentation,breaking-change&title=Update+all+documentation+for+new+monorepo+structure" +echo "" + +echo "==========================================================" +echo "๐Ÿ“‹ Instructions:" +echo "1. Click each URL above (or copy to browser)" +echo "2. Copy the issue body from .github/ISSUES_TO_CREATE.md" +echo "3. Paste into the issue description" +echo "4. Click 'Submit new issue'" +echo "" +echo "Or use this quick link to view all templates:" +echo "cat .github/ISSUES_TO_CREATE.md" diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml new file mode 100644 index 0000000..5633d96 --- /dev/null +++ b/.github/workflows/docker-publish.yml @@ -0,0 +1,139 @@ +# Docker Image Publishing - Automated builds and pushes to Docker Hub +# Security Note: Uses secrets for Docker Hub credentials. Matrix values are hardcoded. +# Triggers: push/pull_request/workflow_dispatch only. No untrusted input. + +name: Docker Publish + +on: + push: + branches: [ main ] + tags: + - 'v*' + pull_request: + branches: [ main ] + paths: + - 'Dockerfile*' + - 'docker-compose.yml' + - 'src/**' + - 'pyproject.toml' + workflow_dispatch: + +env: + DOCKER_REGISTRY: docker.io + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + +jobs: + build-and-push: + name: Build and Push Docker Images + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + image: + - name: skill-seekers + dockerfile: Dockerfile + description: "Skill Seekers CLI - Convert documentation to AI skills" + - name: skill-seekers-mcp + dockerfile: Dockerfile.mcp + description: "Skill Seekers MCP Server - 25 tools for AI assistants" + + env: + IMAGE_NAME: ${{ matrix.image.name }} + IMAGE_DOCKERFILE: ${{ matrix.image.dockerfile }} + IMAGE_DESCRIPTION: ${{ matrix.image.description }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to Docker Hub + if: github.event_name != 'pull_request' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v4 + with: + images: ${{ env.DOCKER_REGISTRY }}/${{ env.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=raw,value=latest,enable={{is_default_branch}} + + - name: Build and push Docker image + uses: docker/build-push-action@v4 + with: + context: . + file: ${{ env.IMAGE_DOCKERFILE }} + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64,linux/arm64 + + - name: Create image summary + run: | + echo "## ๐Ÿณ Docker Image: $IMAGE_NAME" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Description:** $IMAGE_DESCRIPTION" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Tags:**" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + echo "${{ steps.meta.outputs.tags }}" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + + test-images: + name: Test Docker Images + needs: build-and-push + runs-on: ubuntu-latest + if: github.event_name == 'pull_request' + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Build CLI image + run: | + docker build -t skill-seekers:test -f Dockerfile . + + - name: Test CLI image + run: | + echo "๐Ÿงช Testing CLI image..." + docker run --rm skill-seekers:test skill-seekers --version + docker run --rm skill-seekers:test skill-seekers --help + + - name: Build MCP image + run: | + docker build -t skill-seekers-mcp:test -f Dockerfile.mcp . + + - name: Test MCP image + run: | + echo "๐Ÿงช Testing MCP server image..." + # Start MCP server in background + docker run -d --name mcp-test -p 8765:8765 skill-seekers-mcp:test + + # Wait for server to start + sleep 10 + + # Check health + curl -f http://localhost:8765/health || exit 1 + + # Stop container + docker stop mcp-test + docker rm mcp-test + + - name: Test Docker Compose + run: | + echo "๐Ÿงช Testing Docker Compose..." + docker compose config + echo "โœ… Docker Compose configuration valid" diff --git a/.github/workflows/quality-metrics.yml b/.github/workflows/quality-metrics.yml new file mode 100644 index 0000000..1953628 --- /dev/null +++ b/.github/workflows/quality-metrics.yml @@ -0,0 +1,171 @@ +# Security Note: This workflow uses workflow_dispatch inputs and pull_request events. +# All untrusted inputs are accessed via environment variables (env:) as recommended. +# No direct usage of github.event.issue/comment/review content in run: commands. + +name: Quality Metrics Dashboard + +on: + workflow_dispatch: + inputs: + skill_dir: + description: 'Path to skill directory to analyze (e.g., output/react)' + required: true + type: string + fail_threshold: + description: 'Minimum quality score to pass (default: 70)' + required: false + default: '70' + type: string + pull_request: + paths: + - 'output/**' + - 'configs/**' + +jobs: + analyze: + name: Quality Metrics Analysis + runs-on: ubuntu-latest + + env: + SKILL_DIR_INPUT: ${{ github.event.inputs.skill_dir }} + FAIL_THRESHOLD_INPUT: ${{ github.event.inputs.fail_threshold }} + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e . + + - name: Find skill directories + id: find_skills + run: | + if [ -n "$SKILL_DIR_INPUT" ]; then + # Manual trigger with specific directory + echo "dirs=$SKILL_DIR_INPUT" >> $GITHUB_OUTPUT + else + # PR trigger - find all skill directories + DIRS=$(find output -maxdepth 1 -type d -name "*" ! -name "output" | tr '\n' ' ' || echo "") + if [ -z "$DIRS" ]; then + echo "No skill directories found" + echo "dirs=" >> $GITHUB_OUTPUT + else + echo "dirs=$DIRS" >> $GITHUB_OUTPUT + fi + fi + + - name: Analyze quality metrics + id: quality + run: | + DIRS="${{ steps.find_skills.outputs.dirs }}" + THRESHOLD="${FAIL_THRESHOLD_INPUT:-70}" + + if [ -z "$DIRS" ]; then + echo "No directories to analyze" + exit 0 + fi + + ALL_PASSED=true + SUMMARY_FILE="quality_summary.md" + + echo "# ๐Ÿ“Š Quality Metrics Dashboard" > $SUMMARY_FILE + echo "" >> $SUMMARY_FILE + echo "**Threshold:** $THRESHOLD/100" >> $SUMMARY_FILE + echo "" >> $SUMMARY_FILE + + for skill_dir in $DIRS; do + if [ ! -d "$skill_dir" ]; then + continue + fi + + SKILL_NAME=$(basename "$skill_dir") + echo "๐Ÿ” Analyzing $SKILL_NAME..." + + # Run quality analysis + python3 -c " + import sys + from pathlib import Path + + from skill_seekers.cli.quality_metrics import QualityAnalyzer + + skill_dir = Path('$skill_dir') + threshold = float('$THRESHOLD') + skill_name = '$SKILL_NAME' + + analyzer = QualityAnalyzer(skill_dir) + report = analyzer.generate_report() + + formatted = analyzer.format_report(report) + print(formatted) + + with open(f'quality_{skill_name}.txt', 'w') as f: + f.write(formatted) + + score = report.overall_score.total_score + grade = report.overall_score.grade + status = 'PASS' if score >= threshold else 'FAIL' + + summary_line = f'{status} **{skill_name}**: {grade} ({score:.1f}/100)' + print(f'\n{summary_line}') + + with open('quality_summary.md', 'a') as f: + f.write(f'{summary_line}\n') + + if score < threshold: + print(f'::error file={skill_dir}/SKILL.md::Quality score {score:.1f} is below threshold {threshold}') + sys.exit(1) + elif score < 80: + print(f'::warning file={skill_dir}/SKILL.md::Quality score {score:.1f} could be improved') + else: + print(f'::notice file={skill_dir}/SKILL.md::Quality score {score:.1f} - Excellent!') + " + + if [ $? -ne 0 ]; then + ALL_PASSED=false + fi + + echo "" >> $SUMMARY_FILE + done + + if [ "$ALL_PASSED" = false ]; then + echo "โŒ Some skills failed quality thresholds" + exit 1 + else + echo "โœ… All skills passed quality thresholds" + fi + + - name: Upload quality reports + uses: actions/upload-artifact@v4 + with: + name: quality-metrics-reports + path: quality_*.txt + retention-days: 30 + continue-on-error: true + + - name: Post summary to PR + if: github.event_name == 'pull_request' + uses: actions/github-script@v7 + with: + script: | + const fs = require('fs'); + const summary = fs.readFileSync('quality_summary.md', 'utf8'); + + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: summary + }); + continue-on-error: true + + - name: Create dashboard summary + run: | + if [ -f "quality_summary.md" ]; then + cat quality_summary.md >> $GITHUB_STEP_SUMMARY + fi diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..8053afc --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,125 @@ +name: Release + +on: + push: + tags: + - 'v*' + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.10' + cache: 'pip' + + - name: Install uv + run: | + curl -LsSf https://astral.sh/uv/install.sh | sh + echo "$HOME/.cargo/bin" >> $GITHUB_PATH + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + if [ -f skill_seeker_mcp/requirements.txt ]; then pip install -r skill_seeker_mcp/requirements.txt; fi + # Install package in editable mode for tests (required for src/ layout) + pip install -e . + + - name: Run tests + timeout-minutes: 30 + run: | + pip install pytest-timeout + python -m pytest tests/ -v \ + -m "not slow and not integration and not e2e and not network and not serial and not mcp_only" \ + --timeout=120 + + - name: Extract version from tag + id: get_version + run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT + + - name: Verify Python version + run: | + python --version + python -c "import sys; assert sys.version_info >= (3, 10), f'Python {sys.version} is not >= 3.10'" + + - name: Verify version consistency + run: | + TAG_VERSION="${{ steps.get_version.outputs.VERSION }}" + PKG_VERSION=$(python -c "import skill_seekers; print(skill_seekers.__version__)") + TOML_VERSION=$(grep -m1 '^version' pyproject.toml | sed 's/version *= *"\(.*\)"/\1/') + echo "Tag version: $TAG_VERSION" + echo "Package version: $PKG_VERSION" + echo "TOML version: $TOML_VERSION" + if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then + echo "::error::Version mismatch! Tag=$TAG_VERSION but package reports=$PKG_VERSION" + exit 1 + fi + if [ "$TAG_VERSION" != "$TOML_VERSION" ]; then + echo "::error::Version mismatch! Tag=$TAG_VERSION but pyproject.toml has=$TOML_VERSION" + exit 1 + fi + echo "โœ… All versions match: $TAG_VERSION" + + - name: Create Release Notes + id: release_notes + run: | + if [ -f CHANGELOG.md ]; then + # Extract changelog for this version (escape dots for exact match) + VERSION="${{ steps.get_version.outputs.VERSION }}" + ESCAPED_VERSION=$(echo "$VERSION" | sed 's/\./\\./g') + sed -n "/## \[${ESCAPED_VERSION}\]/,/## \[/p" CHANGELOG.md | sed '$d' > release_notes.md + fi + # Fallback if extraction produced empty file or CHANGELOG.md missing + if [ ! -s release_notes.md ]; then + echo "Release v${{ steps.get_version.outputs.VERSION }}" > release_notes.md + fi + + - name: Check if release exists + id: check_release + run: | + if gh release view ${{ github.ref_name }} > /dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + fi + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Create GitHub Release + if: steps.check_release.outputs.exists == 'false' + uses: softprops/action-gh-release@v1 + with: + name: v${{ steps.get_version.outputs.VERSION }} + tag_name: ${{ github.ref_name }} + body_path: release_notes.md + draft: false + prerelease: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Skip Release Creation + if: steps.check_release.outputs.exists == 'true' + run: | + echo "โ„น๏ธ Release ${{ github.ref_name }} already exists, skipping creation" + echo "View at: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}" + + - name: Build package + run: | + uv build + + - name: Publish to PyPI + env: + UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }} + run: | + uv publish --token $UV_PUBLISH_TOKEN diff --git a/.github/workflows/scheduled-updates.yml b/.github/workflows/scheduled-updates.yml new file mode 100644 index 0000000..078fe61 --- /dev/null +++ b/.github/workflows/scheduled-updates.yml @@ -0,0 +1,197 @@ +# Automated Skill Updates - Runs weekly to refresh documentation +# Security Note: Schedule triggers with hardcoded constants. Workflow_dispatch input +# accessed via FRAMEWORKS_INPUT env variable (safe pattern). + +name: Scheduled Skill Updates + +on: + schedule: + # Run every Sunday at 3 AM UTC + - cron: '0 3 * * 0' + workflow_dispatch: + inputs: + frameworks: + description: 'Frameworks to update (comma-separated or "all")' + required: false + default: 'all' + type: string + +jobs: + update-skills: + name: Update ${{ matrix.framework }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # Popular frameworks to keep updated + framework: + - react + - django + - fastapi + - godot + - vue + - flask + + env: + FRAMEWORK: ${{ matrix.framework }} + FRAMEWORKS_INPUT: ${{ github.event.inputs.frameworks }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e . + + - name: Check if framework should be updated + id: should_update + run: | + FRAMEWORKS_INPUT="${FRAMEWORKS_INPUT:-all}" + + if [ "$FRAMEWORKS_INPUT" = "all" ] || [ -z "$FRAMEWORKS_INPUT" ]; then + echo "update=true" >> $GITHUB_OUTPUT + elif echo "$FRAMEWORKS_INPUT" | grep -q "$FRAMEWORK"; then + echo "update=true" >> $GITHUB_OUTPUT + else + echo "update=false" >> $GITHUB_OUTPUT + echo "โญ๏ธ Skipping $FRAMEWORK (not in update list)" + fi + + - name: Check for existing skill + if: steps.should_update.outputs.update == 'true' + id: check_existing + run: | + SKILL_DIR="output/$FRAMEWORK" + if [ -d "$SKILL_DIR" ]; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "๐Ÿ“ฆ Found existing skill at $SKILL_DIR" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "๐Ÿ†• No existing skill found" + fi + + - name: Incremental update (if exists) + if: steps.should_update.outputs.update == 'true' && steps.check_existing.outputs.exists == 'true' + run: | + echo "โšก Performing incremental update for $FRAMEWORK..." + + SKILL_DIR="output/$FRAMEWORK" + + # Detect changes using incremental updater + python3 -c " + import sys, os + from pathlib import Path + + from skill_seekers.cli.incremental_updater import IncrementalUpdater + + framework = os.environ['FRAMEWORK'] + skill_dir = Path(f'output/{framework}') + + updater = IncrementalUpdater(skill_dir) + changes = updater.detect_changes() + + if changes.has_changes: + print(f'Changes detected:') + print(f' Added: {len(changes.added)}') + print(f' Modified: {len(changes.modified)}') + print(f' Deleted: {len(changes.deleted)}') + updater.current_versions = updater._scan_documents() + updater.save_current_versions() + else: + print('No changes detected, skill is up to date') + " + + - name: Full scrape (if new or manual) + if: steps.should_update.outputs.update == 'true' && steps.check_existing.outputs.exists == 'false' + run: | + echo "๐Ÿ“ฅ Performing full scrape for $FRAMEWORK..." + + CONFIG_FILE="configs/${FRAMEWORK}.json" + + if [ ! -f "$CONFIG_FILE" ]; then + echo "โš ๏ธ Config not found: $CONFIG_FILE" + exit 0 + fi + + # Use streaming ingestion for large docs + skill-seekers create "$CONFIG_FILE" --max-pages 200 + + - name: Generate quality report + if: steps.should_update.outputs.update == 'true' + run: | + SKILL_DIR="output/$FRAMEWORK" + + if [ ! -d "$SKILL_DIR" ]; then + echo "โš ๏ธ Skill directory not found" + exit 0 + fi + + echo "๐Ÿ“Š Generating quality metrics..." + + python3 -c " + import sys, os + from pathlib import Path + + from skill_seekers.cli.quality_metrics import QualityAnalyzer + + framework = os.environ['FRAMEWORK'] + skill_dir = Path(f'output/{framework}') + + analyzer = QualityAnalyzer(skill_dir) + report = analyzer.generate_report() + + print(f'Quality Score: {report.overall_score.grade} ({report.overall_score.total_score:.1f}/100)') + print(f' Completeness: {report.overall_score.completeness:.1f}%') + print(f' Accuracy: {report.overall_score.accuracy:.1f}%') + print(f' Coverage: {report.overall_score.coverage:.1f}%') + print(f' Health: {report.overall_score.health:.1f}%') + " + + - name: Package for Claude + if: steps.should_update.outputs.update == 'true' + run: | + SKILL_DIR="output/$FRAMEWORK" + + if [ -d "$SKILL_DIR" ]; then + echo "๐Ÿ“ฆ Packaging $FRAMEWORK for Claude AI..." + skill-seekers package "$SKILL_DIR" --target claude + fi + + - name: Upload updated skill + if: steps.should_update.outputs.update == 'true' + uses: actions/upload-artifact@v4 + with: + name: ${{ env.FRAMEWORK }}-skill-updated + path: output/${{ env.FRAMEWORK }}.zip + retention-days: 90 + + summary: + name: Update Summary + needs: update-skills + runs-on: ubuntu-latest + if: always() + + steps: + - name: Create summary + run: | + echo "## ๐Ÿ”„ Scheduled Skills Update" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Date:** $(date -u '+%Y-%m-%d %H:%M UTC')" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Updated Frameworks" >> $GITHUB_STEP_SUMMARY + echo "- React" >> $GITHUB_STEP_SUMMARY + echo "- Django" >> $GITHUB_STEP_SUMMARY + echo "- FastAPI" >> $GITHUB_STEP_SUMMARY + echo "- Godot" >> $GITHUB_STEP_SUMMARY + echo "- Vue" >> $GITHUB_STEP_SUMMARY + echo "- Flask" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "Updated skills available in workflow artifacts." >> $GITHUB_STEP_SUMMARY diff --git a/.github/workflows/test-vector-dbs.yml b/.github/workflows/test-vector-dbs.yml new file mode 100644 index 0000000..0615919 --- /dev/null +++ b/.github/workflows/test-vector-dbs.yml @@ -0,0 +1,112 @@ +# Security Note: This workflow uses only push/pull_request/workflow_dispatch triggers. +# Matrix values are hardcoded constants. No untrusted input is used in run: commands. + +name: Test Vector Database Adaptors + +on: + push: + branches: [ main, development ] + paths: + - 'src/skill_seekers/cli/adaptors/**' + - 'src/skill_seekers/mcp/tools/vector_db_tools.py' + - 'tests/test_*adaptor*.py' + - 'tests/test_mcp_vector_dbs.py' + - 'tests/test_docker_smoke.py' + - 'tests/test_upload_integration.py' + pull_request: + branches: [ main, development ] + paths: + - 'src/skill_seekers/cli/adaptors/**' + - 'src/skill_seekers/mcp/tools/vector_db_tools.py' + - 'tests/test_*adaptor*.py' + - 'tests/test_mcp_vector_dbs.py' + - 'tests/test_docker_smoke.py' + - 'tests/test_upload_integration.py' + workflow_dispatch: + +jobs: + test-adaptors: + name: Test ${{ matrix.adaptor }} Adaptor + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + adaptor: [weaviate, chroma, faiss, qdrant] + python-version: ['3.10', '3.12'] + + env: + ADAPTOR_NAME: ${{ matrix.adaptor }} + PYTHON_VERSION: ${{ matrix.python-version }} + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest + pip install -e . + + - name: Run adaptor tests + run: | + echo "๐Ÿงช Testing $ADAPTOR_NAME adaptor..." + python -m pytest "tests/test_adaptors/test_${ADAPTOR_NAME}_adaptor.py" -v --tb=short + + - name: Test adaptor integration + run: | + echo "๐Ÿ”— Testing $ADAPTOR_NAME integration..." + + # Create test skill + mkdir -p test_skill/references + echo "# Test Skill" > test_skill/SKILL.md + echo "Test content" >> test_skill/SKILL.md + echo "# Reference" > test_skill/references/ref.md + + # Test adaptor packaging + python3 -c " + import os + from pathlib import Path + from skill_seekers.cli.adaptors import get_adaptor + adaptor_name = os.environ['ADAPTOR_NAME'] + adaptor = get_adaptor(adaptor_name) + package_path = adaptor.package(Path('test_skill'), Path('.')) + print(f'Package created: {package_path}') + assert package_path.exists(), 'Package file not created' + print(f'Package size: {package_path.stat().st_size} bytes') + " + + - name: Upload test package + uses: actions/upload-artifact@v4 + with: + name: test-package-${{ env.ADAPTOR_NAME }}-py${{ env.PYTHON_VERSION }} + path: test_skill-${{ env.ADAPTOR_NAME }}.json + retention-days: 7 + + test-mcp-tools: + name: Test MCP Vector DB Tools + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest + pip install -e . + + - name: Run MCP vector DB tests + run: | + echo "๐Ÿงช Testing MCP vector database tools..." + python -m pytest tests/test_mcp_vector_dbs.py -v --tb=short + diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..a0cb344 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,155 @@ +name: Tests + +on: + push: + branches: [ main, development ] + pull_request: + branches: [ main, development ] + +jobs: + lint: + name: Code Quality (Ruff & Mypy) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install "ruff==0.15.8" mypy + pip install -e . + - name: Run ruff linter + run: ruff check src/ tests/ --output-format=github + - name: Run ruff formatter check + run: ruff format --check src/ tests/ + - name: Run mypy type checker + run: mypy src/skill_seekers --show-error-codes --pretty + continue-on-error: true + + test-fast: + name: Fast Unit Tests (parallel) + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest] + python-version: ['3.10', '3.11', '3.12'] + exclude: + - os: macos-latest + python-version: '3.10' + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Cache pip packages + uses: actions/cache@v4 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest-xdist pytest-timeout + pip install -e . + - name: Run fast tests (xdist parallel) + run: | + python -m pytest tests/ -n auto --dist=loadfile \ + -m "not slow and not integration and not e2e and not network and not serial and not mcp_only" \ + -q --timeout=120 --cov=src/skill_seekers --cov-report=xml --cov-report=term + timeout-minutes: 15 + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + file: ./coverage.xml + flags: unittests + name: codecov-umbrella + fail_ci_if_error: false + + test-serial: + name: Serial / Integration / E2E Tests + runs-on: ubuntu-latest + needs: [test-fast] + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest-timeout + pip install -e . + - name: Run serial/integration/E2E tests + run: | + python -m pytest tests/ \ + --ignore=tests/test_bootstrap_skill_e2e.py \ + --ignore=tests/test_bootstrap_skill.py \ + -m "(integration or e2e or slow or network or serial) and not mcp_only" \ + -v --timeout=300 + timeout-minutes: 25 + + test-mcp: + name: MCP Server Tests + runs-on: ubuntu-latest + needs: [test-fast] + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest-timeout + pip install -e ".[mcp]" + pip install -e . + - name: Run MCP tests + run: | + python -m pytest tests/ \ + -m "mcp_only and not network" \ + -v --timeout=180 + timeout-minutes: 10 + + tests-complete: + name: Tests + needs: [lint, test-fast, test-serial, test-mcp] + runs-on: ubuntu-latest + if: always() + steps: + - name: Check all results + run: | + if [ "${{ needs.lint.result }}" != "success" ]; then + echo "โŒ Code quality checks failed!" + exit 1 + fi + if [ "${{ needs.test-fast.result }}" != "success" ]; then + echo "โŒ Fast tests failed!" + exit 1 + fi + if [ "${{ needs.test-serial.result }}" == "failure" ]; then + echo "โŒ Serial/integration tests failed!" + exit 1 + fi + if [ "${{ needs.test-mcp.result }}" == "failure" ]; then + echo "โŒ MCP tests failed!" + exit 1 + fi + echo "โœ… All checks passed!" diff --git a/.github/workflows/vector-db-export.yml b/.github/workflows/vector-db-export.yml new file mode 100644 index 0000000..1958bd3 --- /dev/null +++ b/.github/workflows/vector-db-export.yml @@ -0,0 +1,188 @@ +name: Vector Database Export + +on: + workflow_dispatch: + inputs: + skill_name: + description: 'Skill name to export (e.g., react, django, godot)' + required: true + type: string + targets: + description: 'Vector databases to export (comma-separated: weaviate,chroma,faiss,qdrant or "all")' + required: true + default: 'all' + type: string + config_path: + description: 'Path to config file (optional, auto-detected from skill_name if not provided)' + required: false + type: string + schedule: + # Run weekly on Sunday at 2 AM UTC for popular frameworks + - cron: '0 2 * * 0' + +jobs: + export: + name: Export to Vector Databases + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + # For scheduled runs, export popular frameworks + skill: ${{ github.event_name == 'schedule' && fromJson('["react", "django", "godot", "fastapi"]') || fromJson(format('["{0}"]', github.event.inputs.skill_name)) }} + + env: + SKILL_NAME: ${{ matrix.skill }} + TARGETS_INPUT: ${{ github.event.inputs.targets }} + CONFIG_PATH_INPUT: ${{ github.event.inputs.config_path }} + + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e . + + - name: Determine config path + id: config + run: | + if [ -n "$CONFIG_PATH_INPUT" ]; then + echo "path=$CONFIG_PATH_INPUT" >> $GITHUB_OUTPUT + else + echo "path=configs/$SKILL_NAME.json" >> $GITHUB_OUTPUT + fi + + - name: Check if config exists + id: check_config + run: | + CONFIG_FILE="${{ steps.config.outputs.path }}" + if [ -f "$CONFIG_FILE" ]; then + echo "exists=true" >> $GITHUB_OUTPUT + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "โš ๏ธ Config not found: $CONFIG_FILE" + fi + + - name: Scrape documentation + if: steps.check_config.outputs.exists == 'true' + run: | + echo "๐Ÿ“ฅ Scraping documentation for $SKILL_NAME..." + skill-seekers create "${{ steps.config.outputs.path }}" --max-pages 100 + continue-on-error: true + + - name: Determine export targets + id: targets + run: | + TARGETS="${TARGETS_INPUT:-all}" + if [ "$TARGETS" = "all" ]; then + echo "list=weaviate chroma faiss qdrant" >> $GITHUB_OUTPUT + else + echo "list=$(echo "$TARGETS" | tr ',' ' ')" >> $GITHUB_OUTPUT + fi + + - name: Export to vector databases + if: steps.check_config.outputs.exists == 'true' + env: + EXPORT_TARGETS: ${{ steps.targets.outputs.list }} + run: | + SKILL_DIR="output/$SKILL_NAME" + + if [ ! -d "$SKILL_DIR" ]; then + echo "โŒ Skill directory not found: $SKILL_DIR" + exit 1 + fi + + echo "๐Ÿ“ฆ Exporting $SKILL_NAME to vector databases..." + + for target in $EXPORT_TARGETS; do + echo "" + echo "๐Ÿ”น Exporting to $target..." + + # Use adaptor directly via CLI + python3 -c " + from pathlib import Path + from skill_seekers.cli.adaptors import get_adaptor + adaptor = get_adaptor('$target') + package_path = adaptor.package(Path('$SKILL_DIR'), Path('output')) + print(f'Exported to {package_path}') + " + + if [ $? -eq 0 ]; then + echo "โœ… $target export complete" + else + echo "โŒ $target export failed" + fi + done + + - name: Generate quality report + if: steps.check_config.outputs.exists == 'true' + run: | + SKILL_DIR="output/$SKILL_NAME" + + if [ -d "$SKILL_DIR" ]; then + echo "๐Ÿ“Š Generating quality metrics..." + + python3 -c " + from pathlib import Path + from skill_seekers.cli.quality_metrics import QualityAnalyzer + analyzer = QualityAnalyzer(Path('$SKILL_DIR')) + report = analyzer.generate_report() + formatted = analyzer.format_report(report) + print(formatted) + with open('quality_report_${SKILL_NAME}.txt', 'w') as f: + f.write(formatted) + " + fi + continue-on-error: true + + - name: Upload vector database exports + if: steps.check_config.outputs.exists == 'true' + uses: actions/upload-artifact@v4 + with: + name: ${{ env.SKILL_NAME }}-vector-exports + path: | + output/${{ env.SKILL_NAME }}-*.json + retention-days: 30 + + - name: Upload quality report + if: steps.check_config.outputs.exists == 'true' + uses: actions/upload-artifact@v4 + with: + name: ${{ env.SKILL_NAME }}-quality-report + path: quality_report_${{ env.SKILL_NAME }}.txt + retention-days: 30 + continue-on-error: true + + - name: Create export summary + if: steps.check_config.outputs.exists == 'true' + env: + EXPORT_TARGETS: ${{ steps.targets.outputs.list }} + run: | + echo "## ๐Ÿ“ฆ Vector Database Export Summary: $SKILL_NAME" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + for target in $EXPORT_TARGETS; do + FILE="output/${SKILL_NAME}-${target}.json" + if [ -f "$FILE" ]; then + SIZE=$(du -h "$FILE" | cut -f1) + echo "โœ… **$target**: $SIZE" >> $GITHUB_STEP_SUMMARY + else + echo "โŒ **$target**: Export failed" >> $GITHUB_STEP_SUMMARY + fi + done + + echo "" >> $GITHUB_STEP_SUMMARY + + if [ -f "quality_report_${SKILL_NAME}.txt" ]; then + echo "### ๐Ÿ“Š Quality Metrics" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + head -30 "quality_report_${SKILL_NAME}.txt" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + fi diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..927051f --- /dev/null +++ b/.gitignore @@ -0,0 +1,79 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg + +# Environment variables (secrets) +.env +.env.local +.env.*.local + +# Virtual Environment +.venv/ +venv/ +ENV/ +env/ + +# Output directory +output/ +*.zip + +# Skill Seekers cache (intermediate files) +.skillseeker-cache/ + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Backups +*.backup + +# Testing artifacts +.pytest_cache/ +.coverage +htmlcov/ +.tox/ +*.cover +.hypothesis/ +.mypy_cache/ +.ruff_cache/ + +# Build artifacts +.build/ +skill-seekers-configs/ +.claude/skills +.mcp.json +!/.mcp.json +!distribution/claude-plugin/.mcp.json +settings.json +USER_GUIDE.md + +# Local tooling artifacts (per-developer state, not project state) +# chromadb's default persistence directory +chroma_db/ +# Superpowers SDK output +docs/superpowers/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..e78ebb2 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "api/configs_repo"] + path = api/configs_repo + url = https://github.com/yusufkaraaslan/skill-seekers-configs.git diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 0000000..7281144 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "skill-seekers": { + "command": "python", + "args": ["-m", "skill_seekers.mcp.server_fastmcp"] + } + } +} diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..09ee150 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,302 @@ +# AGENTS.md - Skill Seekers + +Comprehensive reference for AI coding agents. Skill Seekers is a Python CLI tool (v3.6.0) that converts documentation sites, GitHub repos, PDFs, videos, notebooks, wikis, and more into AI-ready skills for 21+ LLM platforms and RAG pipelines. + +## Project Overview + +**Skill Seekers** is a universal preprocessing layer that transforms raw documentation and code into structured knowledge assets. It supports 17+ source types and exports to 21+ AI platforms including Claude, Gemini, OpenAI, LangChain, LlamaIndex, and various vector databases. + +### Key Capabilities +- **Source Types (17):** Documentation websites, GitHub repos, PDFs, Word docs, EPUBs, videos, local codebases, Jupyter notebooks, HTML, OpenAPI specs, AsciiDoc, PowerPoint, Confluence, Notion, RSS feeds, man pages, chat exports +- **Export Targets (21):** Claude, Gemini, OpenAI, MiniMax, OpenCode, Kimi, DeepSeek, Qwen, OpenRouter, Together AI, Fireworks AI, Markdown, LangChain, LlamaIndex, Haystack, Weaviate, ChromaDB, FAISS, Qdrant, Pinecone +- **MCP Server:** FastMCP-based Model Context Protocol server for AI assistant integration + +## Setup + +```bash +# REQUIRED before running tests (src/ layout โ€” tests hard-exit if package not installed) +pip install -e . + +# With dev tools (pytest, ruff, mypy, coverage) +pip install -e ".[dev]" + +# With specific LLM platform support +pip install -e ".[gemini]" # Google Gemini +pip install -e ".[openai]" # OpenAI ChatGPT +pip install -e ".[all-llms]" # All LLM platforms + +# With all optional dependencies (except video-full) +pip install -e ".[all]" + +# Full video processing (heavy dependencies) +pip install -e ".[video-full]" +``` + +Note: `tests/conftest.py` checks that `skill_seekers` is importable and calls `sys.exit(1)` if not. Always install in editable mode first. + +### Environment Variables + +Create a `.env` file or export these variables: +```bash +ANTHROPIC_API_KEY # For Claude AI enhancement +GOOGLE_API_KEY # For Gemini support +OPENAI_API_KEY # For OpenAI support +GITHUB_TOKEN # For GitHub repo scraping (higher rate limits) +``` + +## Build / Test / Lint + +```bash +# Full suite (never skip โ€” all must pass) +pytest tests/ -v + +# Fast iteration (skip slow, integration, E2E, network, MCP) +pytest tests/ -m "not slow and not integration and not e2e and not network and not serial and not mcp_only" -q + +# Fast parallel (install pytest-xdist first) +pytest tests/ -n auto --dist=loadfile -m "not slow and not integration and not e2e and not network and not serial and not mcp_only" -q + +# 3-phase runner script (recommended for local dev) +bash scripts/run_tests_fast.sh + +# Single test +pytest tests/test_scraper_features.py::test_detect_language -v + +# Skip slow/integration +pytest tests/ -v -m "not slow and not integration" + +# With coverage +pytest tests/ --cov=src/skill_seekers --cov-report=term + +# Lint + format check (matches CI) +ruff check src/ tests/ +ruff format --check src/ tests/ + +# Type check (non-blocking โ€” mypy is continue-on-error in CI) +mypy src/skill_seekers --show-error-codes --pretty +``` + +**Pytest config:** `asyncio_mode = "auto"`, so `@pytest.mark.asyncio` is implicit. Test markers: `slow`, `integration`, `e2e`, `venv`, `bootstrap`, `benchmark`, `asyncio`, `serial`, `network`, `mcp_only`. + +**CI note:** CI pins `ruff==0.15.8` (not the `>=0.14.13` dev dep). If formatting behaves differently locally, check the CI version. + +**CI test phases:** Tests are split into 3 parallel jobs: +- `test-fast` โ€” 3386 unit tests with xdist across OS/Python matrix +- `test-serial` โ€” 69 serial/integration/E2E/network tests +- `test-mcp` โ€” 193 MCP tests (requires `[mcp]` extras) + +## Code Style + +### Formatting Rules (ruff โ€” from pyproject.toml) +- **Line length:** 100 characters +- **Target Python:** 3.10+ +- **Enabled lint rules:** E, W, F, I, B, C4, UP, ARG, SIM +- **Ignored rules:** E501 (line length handled by formatter), F541 (f-string style), ARG002 (unused method args for interface compliance), B007 (intentional unused loop vars), I001 (formatter handles imports), SIM114 (readability preference) + +### Imports +- Sort with isort (via ruff); `skill_seekers` is first-party +- Standard library โ†’ third-party โ†’ first-party, separated by blank lines +- Use `from __future__ import annotations` only if needed for forward refs +- Guard optional imports with try/except ImportError (see `adaptors/__init__.py` pattern): + ```python + try: + from .claude import ClaudeAdaptor + from .minimax import MiniMaxAdaptor + except ImportError: + ClaudeAdaptor = None + MiniMaxAdaptor = None + ``` + +### Naming Conventions +- **Files:** `snake_case.py` (e.g., `source_detector.py`, `config_validator.py`) +- **Classes:** `PascalCase` (e.g., `SkillAdaptor`, `ClaudeAdaptor`, `SourceDetector`) +- **Functions/methods:** `snake_case` (e.g., `get_adaptor()`, `detect_language()`) +- **Constants:** `UPPER_CASE` (e.g., `ADAPTORS`, `DEFAULT_CHUNK_TOKENS`, `VALID_SOURCE_TYPES`) +- **Private:** prefix with `_` (e.g., `_read_existing_content()`, `_validate_unified()`) + +### Type Hints +- Gradual typing โ€” add hints where practical, not enforced everywhere +- Use modern syntax: `str | None` not `Optional[str]`, `list[str]` not `List[str]` +- MyPy config: `disallow_untyped_defs = false`, `check_untyped_defs = true`, `ignore_missing_imports = true` +- Tests are excluded from strict type checking (`disallow_untyped_defs = false`, `check_untyped_defs = false` for `tests.*`) + +### Docstrings +- Module-level docstring on every file (triple-quoted, describes purpose) +- Google-style docstrings for public functions/classes +- Include `Args:`, `Returns:`, `Raises:` sections where useful + +### Error Handling +- Use specific exceptions, never bare `except:` +- Provide helpful error messages with context +- Use `raise ValueError(...)` for invalid arguments, `raise RuntimeError(...)` for state errors +- Guard optional dependency imports with try/except and give clear install instructions on failure +- Chain exceptions with `raise ... from e` when wrapping + +### Suppressing Lint Warnings +- Use inline `# noqa: XXXX` comments (e.g., `# noqa: F401` for re-exports, `# noqa: ARG001` for required but unused params) + +## Project Layout + +``` +src/skill_seekers/ # Main package (src/ layout) + cli/ # CLI commands and entry points (100+ files) + adaptors/ # Platform adaptors (Strategy pattern, inherit SkillAdaptor) + arguments/ # CLI argument definitions (one per source type) + parsers/ # Subcommand parsers (one per source type) + storage/ # Cloud storage (inherit BaseStorageAdaptor) + main.py # Unified CLI entry point (COMMAND_MODULES dict) + source_detector.py # Auto-detects source type from user input + create_command.py # Unified `create` command routing + config_validator.py # VALID_SOURCE_TYPES set + per-type validation + unified_scraper.py # Multi-source orchestrator (scraped_data + dispatch) + unified_skill_builder.py # Pairwise synthesis + generic merge + mcp/ # MCP server (FastMCP + legacy) + tools/ # MCP tool implementations by category (10 files) + server_fastmcp.py # FastMCP server implementation + server_legacy.py # Legacy MCP server + sync/ # Sync monitoring (Pydantic models) + benchmark/ # Benchmarking framework + embedding/ # FastAPI embedding server + workflows/ # 67 YAML workflow presets + _version.py # Reads version from pyproject.toml +tests/ # 160 test files (pytest) + test_adaptors/ # 22 adaptor-specific test files + conftest.py # Test configuration with package check +configs/ # Preset JSON scraping configs +docs/ # Documentation (guides, integrations, architecture) +``` + +## Key Patterns + +**Adaptor (Strategy) pattern** โ€” all platform logic in `cli/adaptors/`. Inherit `SkillAdaptor`, implement `format_skill_md()`, `package()`, `upload()`. Register in `adaptors/__init__.py` ADAPTORS dict. + +**Scraper pattern** โ€” each source type has: `cli/_scraper.py` (with `ToSkillConverter` class + `main()`), `arguments/.py`, `parsers/_parser.py`. Register in `parsers/__init__.py` PARSERS list, `main.py` COMMAND_MODULES dict, `config_validator.py` VALID_SOURCE_TYPES set. + +**Unified pipeline** โ€” `unified_scraper.py` dispatches to per-type `_scrape_()` methods. `unified_skill_builder.py` uses pairwise synthesis for docs+github+pdf combos and `_generic_merge()` for all other combinations. + +**MCP tools** โ€” grouped in `mcp/tools/` by category. `scrape_generic_tool` handles all new source types. + +**CLI subcommands** โ€” git-style in `cli/main.py`. Each delegates to a module's `main()` function. + +**Supported source types (17):** documentation (web), github, pdf, local, word, video, epub, jupyter, html, openapi, asciidoc, pptx, confluence, notion, rss, manpage, chat. Each detected automatically by `source_detector.py`. + +**Supported platforms (21):** claude, gemini, openai, minimax, opencode, kimi, deepseek, qwen, openrouter, together, fireworks, markdown, langchain, llama-index, haystack, weaviate, chroma, faiss, qdrant, pinecone. + +## CLI Commands + +```bash +# Core commands +skill-seekers create # Create skill from any source (auto-detects type) +skill-seekers scan # AI-detect a project's tech stack and emit per-framework configs +skill-seekers enhance # AI-powered enhancement +skill-seekers package # Package skill for target platform +skill-seekers upload # Upload skill to target platform +skill-seekers install # One-command workflow (scrape + enhance + package + upload) + +# Utilities +skill-seekers estimate # Estimate page count before scraping +skill-seekers doctor # Health check for dependencies +skill-seekers config # Configure API keys and settings +skill-seekers workflows # List and apply workflow presets +skill-seekers resume # Resume interrupted scraping + +# Advanced +skill-seekers stream # Streaming ingestion +skill-seekers update # Incremental update +skill-seekers multilang # Multi-language support +``` + +## Testing Instructions + +### Test Structure +- Unit tests: `tests/test_*.py` โ€” test individual modules +- Adaptor tests: `tests/test_adaptors/test_*_adaptor.py` โ€” test platform adaptors +- E2E tests: `tests/test_*_e2e.py` โ€” end-to-end integration tests + +### Running Tests +```bash +# Fast test run (skip slow/integration tests) +pytest tests/ -v -m "not slow and not integration" + +# Full test suite +pytest tests/ -v + +# With coverage report +pytest tests/ --cov=src/skill_seekers --cov-report=term-missing + +# Specific test categories +pytest tests/ -v -m "slow" # Only slow tests +pytest tests/ -v -m "integration" # Only integration tests +pytest tests/ -v -m "e2e" # Only E2E tests +``` + +### Test Fixtures +Test fixtures are located in `tests/fixtures/` and include sample configs, HTML files, and mock data. + +## Git Workflow + +- **`main`** โ€” production, protected +- **`development`** โ€” default PR target, active dev +- Feature branches created from `development` + +## Pre-commit Checklist + +```bash +ruff check src/ tests/ +ruff format --check src/ tests/ +pytest tests/ -v -x # stop on first failure +``` + +Never commit API keys. Use env vars: `ANTHROPIC_API_KEY`, `GOOGLE_API_KEY`, `OPENAI_API_KEY`, `GITHUB_TOKEN`. + +## CI/CD + +GitHub Actions (7 workflows in `.github/workflows/`): +- **tests.yml** โ€” ruff + mypy lint job, then pytest matrix (Ubuntu + macOS, Python 3.10-3.12) with Codecov upload +- **release.yml** โ€” tag-triggered: tests โ†’ version verification โ†’ PyPI publish via `uv build` +- **test-vector-dbs.yml** โ€” tests vector DB adaptors (weaviate, chroma, faiss, qdrant) +- **docker-publish.yml** โ€” multi-platform Docker builds (amd64, arm64) for CLI + MCP images +- **quality-metrics.yml** โ€” quality analysis with configurable threshold +- **scheduled-updates.yml** โ€” weekly skill updates for popular frameworks +- **vector-db-export.yml** โ€” weekly vector DB exports + +## Deployment + +### Docker +Multi-stage Dockerfile with Python 3.12 slim base: +```bash +# Build image +docker build -t skill-seekers . + +# Run CLI +docker run -v $(pwd)/output:/output skill-seekers create https://docs.example.com + +# Run MCP server +docker run -p 8765:8765 skill-seekers skill-seekers-mcp +``` + +### MCP Server +The MCP server provides Model Context Protocol integration: +```bash +# Start FastMCP server +skill-seekers-mcp + +# Or use the Python module +python -m skill_seekers.mcp.server_fastmcp +``` + +## Security Considerations + +- **API Keys:** Never commit API keys to version control. Use environment variables or `.env` files (already in `.gitignore`) +- **Docker:** Runs as non-root user (`skillseeker`, UID 1000) +- **Dependencies:** Regular security updates via `pip audit` or `safety check` +- **Sandboxing:** Video processing uses optional dependencies that can be heavy; install `[video-full]` only when needed + +## Additional Resources + +- **Website:** https://skillseekersweb.com/ +- **Documentation:** https://skillseekersweb.com/ +- **PyPI:** https://pypi.org/project/skill-seekers/ +- **Repository:** https://github.com/yusufkaraaslan/Skill_Seekers +- **Config Browser:** https://skillseekersweb.com/ +- **Project Board:** https://github.com/users/yusufkaraaslan/projects/2 diff --git a/BULLETPROOF_QUICKSTART.md b/BULLETPROOF_QUICKSTART.md new file mode 100644 index 0000000..45045b4 --- /dev/null +++ b/BULLETPROOF_QUICKSTART.md @@ -0,0 +1,617 @@ +# Bulletproof Quick Start Guide + +**Target Audience:** Complete beginners | Never used Python/git before? Start here! + +**Time:** 15-30 minutes total (including all installations) + +**Result:** Working Skill Seeker installation + your first Claude skill created + +--- + +## ๐Ÿ“‹ What You'll Need + +Before starting, you need: +- A computer (macOS, Linux, or Windows with WSL) +- Internet connection +- 30 minutes of time + +That's it! We'll install everything else together. + +--- + +## Step 1: Install Python (5 minutes) + +### Check if You Already Have Python + +Open Terminal (macOS/Linux) or Command Prompt (Windows) and type: + +```bash +python3 --version +``` + +**โœ… If you see:** `Python 3.10.x` or `Python 3.11.x` or higher โ†’ **Skip to Step 2!** + +**โŒ If you see:** `command not found` or version less than 3.10 โ†’ **Continue below** + +### Install Python + +#### macOS: +```bash +# Install Homebrew (if not installed) +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" + +# Install Python +brew install python3 +``` + +**Verify:** +```bash +python3 --version +# Should show: Python 3.11.x or similar +``` + +#### Linux (Ubuntu/Debian): +```bash +sudo apt update +sudo apt install python3 python3-pip +``` + +**Verify:** +```bash +python3 --version +pip3 --version +``` + +#### Windows: +1. Download Python from: https://www.python.org/downloads/ +2. Run installer +3. **IMPORTANT:** Check "Add Python to PATH" during installation +4. Open Command Prompt and verify: +```bash +python --version +``` + +**โœ… Success looks like:** +``` +Python 3.11.5 +``` + +--- + +## Step 2: Install Git (3 minutes) + +### Check if You Have Git + +```bash +git --version +``` + +**โœ… If you see:** `git version 2.x.x` โ†’ **Skip to Step 3!** + +**โŒ If not installed:** + +#### macOS: +```bash +brew install git +``` + +#### Linux: +```bash +sudo apt install git +``` + +#### Windows: +Download from: https://git-scm.com/download/win + +**Verify:** +```bash +git --version +# Should show: git version 2.x.x +``` + +--- + +## Step 3: Get Skill Seeker (2 minutes) + +### Choose Where to Put It + +Pick a location for the project. Good choices: +- macOS/Linux: `~/Projects/` or `~/Documents/` + - Note: `~` means your home directory (`$HOME` or `/Users/yourname` on macOS, `/home/yourname` on Linux) +- Windows: `C:\Users\YourName\Projects\` + +### Clone the Repository + +```bash +# Create Projects directory (if it doesn't exist) +mkdir -p ~/Projects +cd ~/Projects + +# Clone Skill Seeker +git clone https://github.com/yusufkaraaslan/Skill_Seekers.git + +# Enter the directory +cd Skill_Seekers +``` + +**โœ… Success looks like:** +``` +Cloning into 'Skill_Seekers'... +remote: Enumerating objects: 245, done. +remote: Counting objects: 100% (245/245), done. +``` + +**Verify you're in the right place:** +```bash +pwd +# Should show something like: +# macOS: /Users/yourname/Projects/Skill_Seekers +# Linux: /home/yourname/Projects/Skill_Seekers +# (Replace 'yourname' with YOUR actual username) + +ls +# Should show: README.md, cli/, mcp/, configs/, etc. +``` + +**โŒ If `git clone` fails:** +```bash +# Check internet connection +ping google.com + +# Or download ZIP manually: +# https://github.com/yusufkaraaslan/Skill_Seekers/archive/refs/heads/main.zip +# Then unzip and cd into it +``` + +--- + +## Step 4: Setup Virtual Environment & Install Skill Seekers (3 minutes) + +A virtual environment keeps Skill Seeker's dependencies isolated and prevents conflicts. + +```bash +# Make sure you're in the Skill_Seekers directory +cd ~/Projects/Skill_Seekers # ~ means your home directory ($HOME) + # Adjust if you chose a different location + +# Create virtual environment +python3 -m venv venv + +# Activate it +source venv/bin/activate # macOS/Linux +# Windows users: venv\Scripts\activate +``` + +**โœ… Success looks like:** +``` +(venv) username@computer Skill_Seekers % +``` +Notice `(venv)` appears in your prompt - this means the virtual environment is active! + +```bash +# Now install Skill Seekers package (this installs all dependencies automatically) +pip install -e . +``` + +**โœ… Success looks like:** +``` +Successfully installed skill-seekers-2.7.4 requests-2.32.5 beautifulsoup4-4.14.2 anthropic-0.76.0 ... +Obtaining file:///path/to/Skill_Seekers +Installing collected packages: skill-seekers +Successfully installed skill-seekers +``` + +**What just happened?** +- `pip install -e .` installs the package in "editable" mode +- The `.` means "current directory" (where pyproject.toml is) +- This automatically installs ALL required dependencies +- This registers the `skill-seekers` command so you can use it from anywhere +- The `-e` flag means changes to the code take effect immediately (useful for development) + +**Important Notes:** +- **Every time** you open a new terminal to use Skill Seeker, run `source venv/bin/activate` first (Windows: `venv\Scripts\activate`) +- You'll know it's active when you see `(venv)` in your terminal prompt +- To deactivate later: just type `deactivate` + +**โŒ If python3 not found:** +```bash +# Try without the 3 +python -m venv venv +``` + +**โŒ If permission denied:** +```bash +# Virtual environment approach doesn't need sudo - you might have the wrong path +# Make sure you're in the Skill_Seekers directory: +pwd +# Should show something like: +# macOS: /Users/yourname/Projects/Skill_Seekers +# Linux: /home/yourname/Projects/Skill_Seekers +# (Replace 'yourname' with YOUR actual username) +``` + +**โŒ If "pip: command not found":** +```bash +# Try with python -m pip instead +python3 -m pip install -e . +``` + +--- + +## Step 5: Test Your Installation (1 minute) + +Let's make sure everything works: + +```bash +# Test the CLI is installed correctly +skill-seekers create --help +``` + +**โœ… Success looks like:** +``` +usage: skill-seekers create [-h] ... +``` + +**โŒ If you see "command not found":** +```bash +# Ensure the package is installed +pip install -e . + +# Verify installation +skill-seekers --version +``` + +--- + +## Step 6: Create Your First Skill! (5-10 minutes) + +Let's create a simple skill using a preset configuration. + +### Option A: Small Test (Recommended First Time) + +```bash +# Create a config for a small site first +cat > configs/test.json << 'EOF' +{ + "name": "test-skill", + "description": "Test skill creation", + "base_url": "https://tailwindcss.com/docs/installation", + "selectors": { + "main_content": "#content-wrapper", + "title": "h1, h2, h3", + "code_blocks": "pre code" + }, + "max_pages": 5, + "rate_limit": 0.5 +} +EOF + +# Run the scraper +skill-seekers create --config configs/test.json +``` + +**Note for Windows users:** The `cat > file << 'EOF'` syntax doesn't work in PowerShell. Instead, create the file manually: + +```powershell +# In PowerShell, create configs/test.json with this content: +@" +{ + "name": "test-skill", + "description": "Test skill creation", + "base_url": "https://tailwindcss.com/docs/installation", + "selectors": { + "main_content": "#content-wrapper", + "title": "h1, h2, h3", + "code_blocks": "pre code" + }, + "max_pages": 5, + "rate_limit": 0.5 +} +"@ | Out-File -FilePath configs/test.json -Encoding utf8 + +# Then run the scraper +skill-seekers create --config configs/test.json +``` + +**What happens:** +1. Scrapes 5 pages from Tailwind CSS docs +2. Creates `output/test-skill/` directory +3. Generates SKILL.md and reference files + +**โฑ๏ธ Time:** ~30 seconds + +**โœ… Success looks like:** +``` +Scraping: https://tailwindcss.com/docs/installation +Page 1/5: Installation +Page 2/5: Editor Setup +... +โœ… Skill created at: output/test-skill/ +``` + +### Option B: Full Example (React Docs) + +```bash +# Use the React preset +skill-seekers create --config configs/react.json --max-pages 50 +``` + +**โฑ๏ธ Time:** ~5 minutes + +**What you get:** +- `output/react/SKILL.md` - Main skill file +- `output/react/references/` - Organized documentation + +### Verify It Worked + +```bash +# Check the output +ls output/test-skill/ +# Should show: SKILL.md, references/, scripts/, assets/ + +# Look at the generated skill +head output/test-skill/SKILL.md +``` + +--- + +## Step 7: Package for Claude (30 seconds) + +```bash +# Package the skill +skill-seekers package output/test-skill/ +``` + +**โœ… Success looks like:** +``` +โœ… Skill packaged successfully! +๐Ÿ“ฆ Created: output/test-skill.zip +๐Ÿ“ Size: 45.2 KB + +Ready to upload to Claude AI! +``` + +**Now you have:** `output/test-skill.zip` ready to upload to Claude! + +--- + +## Step 8: Upload to Claude (2 minutes) + +1. Go to https://claude.ai +2. Click your profile โ†’ Settings +3. Click "Knowledge" or "Skills" +4. Click "Upload Skill" +5. Select `output/test-skill.zip` +6. Done! Claude can now use this skill + +--- + +## ๐ŸŽ‰ Success! What's Next? + +You now have a working Skill Seeker installation! Here's what you can do: + +### Try Other Presets + +```bash +# See all available presets +ls configs/ + +# Try Vue.js +skill-seekers create --config configs/vue.json --max-pages 50 + +# Try Django +skill-seekers create --config configs/django.json --max-pages 50 +``` + +### Try Other Source Types (17 Supported!) + +```bash +# Auto-detect source type with the `create` command +skill-seekers create https://docs.example.com # Documentation +skill-seekers create facebook/react # GitHub repo +skill-seekers create manual.pdf # PDF +skill-seekers create report.docx # Word document +skill-seekers create book.epub # EPUB book +skill-seekers create analysis.ipynb # Jupyter Notebook +skill-seekers create spec.yaml # OpenAPI/Swagger spec +skill-seekers create slides.pptx # PowerPoint + +# More source types +skill-seekers create --video-url https://youtube.com/watch?v=abc # Video +skill-seekers create --space-key DOCS # Confluence wiki +skill-seekers create --database-id DB_ID # Notion +skill-seekers create feed.rss # RSS feed +skill-seekers create grep.1 # Man page +skill-seekers create --chat-export-path ./slack-export # Slack/Discord +``` + +### Create Custom Skills + +```bash +# Interactive mode - answer questions +skill-seekers create --interactive + +# Or create config for any website +skill-seekers scrape \ + --name myframework \ + --url https://docs.myframework.com/ \ + --description "My favorite framework" +``` + +### Where to Save Custom Configs + +You have three options for placing your custom config files: + +**Option 1: User Config Directory (Recommended)** + +```bash +# Create config in your home directory +mkdir -p ~/.config/skill-seekers/configs +cat > ~/.config/skill-seekers/configs/myproject.json << 'EOF' +{ + "name": "myproject", + "base_url": "https://docs.myproject.com/", + "max_pages": 50 +} +EOF + +# Use it +skill-seekers create --config myproject.json +``` + +**Option 2: Current Directory (Project-Specific)** + +```bash +# Create config in your project +mkdir -p configs +nano configs/myproject.json + +# Use it +skill-seekers create --config configs/myproject.json +``` + +**Option 3: Absolute Path** + +```bash +# Use any file path +skill-seekers create --config /full/path/to/config.json +``` + +The tool searches in this order: exact path โ†’ `./configs/` โ†’ `~/.config/skill-seekers/configs/` โ†’ API presets + +### Use with Claude Code (Advanced) + +If you have Claude Code installed: + +```bash +# One-time setup +./setup_mcp.sh + +# Then use natural language in Claude Code: +# "Generate a skill for Svelte docs" +# "Package the skill at output/svelte/" +``` + +**See:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) for full MCP setup + +--- + +## ๐Ÿ”ง Troubleshooting + +### "Command not found" errors + +**Problem:** `python3: command not found` + +**Solution:** Python not installed or not in PATH +- macOS/Linux: Reinstall Python with brew/apt +- Windows: Reinstall Python, check "Add to PATH" +- Try `python` instead of `python3` + +### "Permission denied" errors + +**Problem:** Can't install packages + +**Solution:** +```bash +# Use --user flag for pip +pip3 install --user skill-seekers + +# Or use a virtual environment (recommended) +python3 -m venv .venv +source .venv/bin/activate +pip install -e . +``` + +### "No such file or directory" + +**Problem:** CLI not found or config file path incorrect + +**Solution:** Ensure you're using the CLI command correctly +```bash +# Verify installation +skill-seekers --version +# Should show version 3.6.0+ + +# Verify config file exists at expected path +ls configs/ +``` + +### "ModuleNotFoundError" or "command not found: skill-seekers" + +**Problem:** Package not installed or virtual environment not activated + +**Solution:** +```bash +# Install the package in editable mode +pip install -e . + +# Or if you need dev tools +pip install -e ".[dev]" +``` + +### Scraping is slow or fails + +**Problem:** Takes forever or gets errors + +**Solution:** +```bash +# Use smaller max_pages for testing +skill-seekers create --config configs/react.json --max-pages 10 + +# Check internet connection +ping google.com + +# Check the website is accessible +curl -I https://docs.yoursite.com +``` + +### Still stuck? + +1. **Check our detailed troubleshooting guide:** [TROUBLESHOOTING.md](TROUBLESHOOTING.md) +2. **Open an issue:** https://github.com/yusufkaraaslan/Skill_Seekers/issues +3. **Include this info:** + - Operating system (macOS 13, Ubuntu 22.04, Windows 11, etc.) + - Python version (`python3 --version`) + - Full error message + - What command you ran + +--- + +## ๐Ÿ“š Next Steps + +- **Read the full README:** [README.md](README.md) +- **Learn about presets:** [configs/](configs/) +- **Try MCP integration:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) +- **Advanced usage:** [docs/](docs/) + +--- + +## โœ… Quick Reference + +```bash +# Your typical workflow: + +# 1. Create/use a config +skill-seekers create --config configs/react.json --max-pages 50 + +# 2. Package it +skill-seekers package output/react/ + +# 3. Upload output/react.zip to Claude + +# Done! ๐ŸŽ‰ +``` + +**Common locations:** +- **Configs:** `configs/*.json` +- **Output:** `output/skill-name/` +- **Packaged skills:** `output/skill-name.zip` + +**Time estimates:** +- Small skill (5-10 pages): 30 seconds +- Medium skill (50-100 pages): 3-5 minutes +- Large skill (500+ pages): 15-30 minutes + +--- + +**Still confused?** That's okay! Open an issue and we'll help you get started: https://github.com/yusufkaraaslan/Skill_Seekers/issues/new diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..edc171a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3293 @@ +# Changelog + +All notable changes to Skill Seeker will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +_Development version: 3.9.0.dev0_ + +### Fixed +- **Unified multi-source `skip_scrape` now rebuilds from cache** โ€” `UnifiedScraper` reloads each configured source from `.skillseeker-cache`/cached extraction files before conflict detection and build, so cached unified configs no longer re-scrape the network (#405). + +## [3.8.0] - 2026-06-15 + +**Theme:** The Grand Unification refactor (one build pipeline, one AI transport, one parser definition, in-process MCP tools โ€” see `docs/UNIFICATION_PLAN.md`) with a 13-bug audit fix-up and a real-world end-to-end CLI testing pass โ€” plus MiniMax-M3, model selection, registry-driven platform targets, a Windows subprocess fix, and codebase de-duplication. + +### Fixed +- **Codebase skills built from a config no longer drop the API reference + dependency graph** โ€” the local source carried `api_reference` and `dependency_graph`, but the unified builder never wrote them out, so a skill built from a scan-emitted `*-codebase.json` shipped without its API reference (it was stranded in the scrape cache). Both are now promoted into `references/codebase_analysis//` and linked from the index. +- **`create ./path` defaults to deep analysis** โ€” local codebase create defaulted to `surface` depth, producing an empty `code_analysis.json` and a misleading "analyzed 0 files" log; it now defaults to `deep` (matching the scraper default and the scan-config path), with an explicit `--depth` still taking precedence. +- **`package` works non-interactively** โ€” the quality-gate prompt raised `EOFError` when stdin wasn't a TTY (CI/pipes); it now auto-proceeds on a non-TTY or with the new `--yes`/`-y` flag, while an interactive terminal still prompts. +- **`quality` prints the score** โ€” the standalone command saved `quality_report.json` but printed nothing; it now shows the score/grade summary, and the report serializes metric levels as `"info"`/`"warning"` instead of the Python enum repr `"MetricLevel.INFO"`. +- **`doctor` no longer miscounts `GITHUB_TOKEN` as an AI provider key** โ€” the API-keys check now names which keys are set, so a bare GitHub token isn't misread as a provider key being configured. +- **`estimate ` gives an actionable error** โ€” passing a URL (which `create` accepts) printed a bare "Config file not found"; it now explains that `estimate` takes a config file and points at `create --dry-run`, and exits non-zero. +- **Web sitemap discovery fails fast on unreachable hosts** โ€” the pre-crawl sitemap probes used a single scalar timeout; they now use a `(connect, read)` timeout so an unreachable host doesn't block the full window before the crawl starts. +- **Fork-bomb guard covers the primary LOCAL enhance path** โ€” `_run_agent_command` now marks `SKILL_SEEKER_ENHANCE_ACTIVE` in the spawned agent's environment (including terminal-mode scripts) and `run()` refuses nested spawns, so a local agent enhancing a skill can no longer recursively launch enhancement. +- **`--dry-run` and `--output` honored for unified configs** โ€” `create` skipped injecting both into `UnifiedScraper` (every other source type got them); dry-run now previews and returns without creating directories, for legacy and unified configs alike. +- **Trailing-slash `--output` no longer leaks intermediates into the packaged skill** โ€” `SkillConverter` resolves `skill_dir` once and strips trailing separators, so `--output out/x/` can't place `_extracted.json` inside the skill directory. +- **snake_case config classification** โ€” `config_extractor._path_has_word` used `\b`, which never matches inside snake_case names (`app_db.yaml`); explicit lookarounds fix detection while keeping dbeaver/blog false positives excluded. +- **How-to guides no longer come out empty for control-flow-wrapped tests** โ€” step extraction recursively descends `with`/`for`/`if`/`try` blocks in source order, and empty AST results fall back to the heuristic instead of emitting empty guides. +- **Slack 429 retry exhaustion logs a truncation warning** (matching the Discord path) instead of silently breaking pagination. +- **Kimi CLI output parsing no longer swallows unknown records** โ€” record boundary is any CamelCase constructor, so new record types (`ToolCallPart`, โ€ฆ) can't leak internals into extracted text. +- **`scan` re-runs no longer churn `.archived/`** โ€” canonical-named files fetched into the out-dir are removed after copying to the slug target, eliminating phantom "removed" diffs on every re-scan. +- **Dry-run page estimates dedupe `utm_*` variants** โ€” `_enqueue_url` normalizes tracking params the same way the real crawl does. +- **MCP per-page diagnostics from worker threads are no longer dropped** โ€” contextvars are propagated into `ThreadPoolExecutor` workers (doc scraper, PDF extractor, enhancers, video visual), so the per-call log capture sees them. +- **Gemini/OpenAI adaptor enhancement gained the truncation gate and atomic save** โ€” both adaptors previously accepted truncated AI output and used a destructive rename-then-write save (a failed write left no SKILL.md); all adaptors now share one enhance flow with central truncation detection and backup+atomic-replace (`enhance_skill`'s save path fixed the same way). +- **MCP `extract_config_patterns` tool works** โ€” it passed flags `config_extractor`'s parser rejects, so it failed on every invocation; now mapped to the real flags and pinned by a regression test. +- **Unified-CLI flags that were silently rejected now work** โ€” `estimate --unlimited/--timeout`, `update --generate-package/--apply-update`, `quality --output`, `stream --streaming-overlap-chars/--batch-size/--checkpoint`, `multilang --report/--export`, `install --target`, and `extract-test-examples --recursive` were accepted by the standalone modules but rejected with "unrecognized arguments" by `skill-seekers ` (central-parser drift). A programmatic drift-guard test now fails CI if any module flag is missing from its central parser. +- **Windows: large subprocess output no longer freezes MCP tools** (#397) โ€” `run_subprocess_with_streaming` replaced its `select()`-based polling loop (unsupported on Windows pipes) with reader threads, and now bounds the timeout reliably. Previously `scrape_docs`/`scrape_github` and other tools could deadlock on a full (>64 KB) pipe buffer on Windows. The fix is applied to the single shared implementation, so all callers benefit. + +### Changed +- **`quality --threshold` defaults to `None`** โ€” without it, `quality` is report-only and keeps the historical exit-0 contract; the quality gate (non-zero exit below the score) fires only when `--threshold` is explicitly given. +- **All enhancement API calls go through `AgentClient`** โ€” one transport with a consistent truncation gate, timeout policy, and error classification. `ANTHROPIC_BASE_URL`, per-provider model overrides (`ANTHROPIC_MODEL`/`GOOGLE_MODEL`/`OPENAI_MODEL`/`MOONSHOT_MODEL`), and the global `SKILL_SEEKER_MODEL` / `SKILL_SEEKER_PROVIDER` overrides are now honored everywhere. API-key auto-detection follows the `API_PROVIDERS` registry order (Anthropic โ†’ Google โ†’ OpenAI โ†’ Moonshot). `video_visual` frame classification is the documented multimodal exception. +- **MCP tools run in-process** โ€” `estimate_pages`, `detect_patterns`, `extract_test_examples`, `extract_config_patterns`, `build_how_to_guides`, `split_config`, `generate_router`, `package_skill`, and `upload_skill` call the real CLI `main()` via a shared `run_cli_main()` helper instead of spawning subprocesses (faster startup, identical output contract; former hard subprocess timeouts become advisory). `enhance_skill` (LOCAL agent) and `install_skill`'s enhancement step stay subprocess **by design** (fork-bomb-guard semantics). +- **Platform `--target` choices are derived from the adaptor registry** (#400) โ€” `enhance`, `upload`, `package`, and `install` now compute their choices from `get_enhancement_platforms()` / `get_upload_platforms()` / `list_platforms()` instead of hand-maintained lists, so newly registered adaptors appear automatically and the lists can no longer drift. Non-breaking (each new list is a superset of the old). + +### Added +- **`stream --output`** โ€” collected chunks are written as JSON (the flag existed in the central parser but chunks were processed and dropped). +- **`multilang --languages`** โ€” restricts `--detect`/`--export` to the given languages (previously a central-parser fiction). +- **`skill_seekers.services` package** โ€” `marketplace_manager`, `marketplace_publisher`, `config_publisher`, `source_manager`, and `git_repo` moved out of `mcp/` so the CLI can import this domain logic without the optional `[mcp]` extra. Back-compat shims remain at the old `skill_seekers.mcp.*` paths. +- **`get_converter("config", {...})`** โ€” `UnifiedScraper` now accepts the factory-shaped config dict, so unified configs construct through the same factory as every other source type (legacy positional construction still supported). +- **`cli/exit_codes.py`** โ€” standard exit-code constants (`EXIT_SUCCESS`/`EXIT_ERROR`/`EXIT_VALIDATION`/`EXIT_INTERRUPT`). +- **`--model` flag for `enhance` and `package`** (#395, #398) โ€” override the platform's default model, e.g. `skill-seekers enhance output/react/ --target minimax --model MiniMax-M2.7` or `skill-seekers package output/react/ --target minimax --model MiniMax-M2.7`. Honored uniformly across all enhancement adaptors and recorded in package metadata. Resurrects the previously-dead `custom_model` config key. +- **MiniMax-M3 is the new default MiniMax model** (#395) โ€” fresh `--target minimax` runs use M3; the previous-generation M2.7 remains selectable via `--model`. Docs (`MINIMAX_INTEGRATION.md`, `MULTI_LLM_SUPPORT.md`) refreshed. +- **More enhancement targets** (#395) โ€” `enhance --target` now accepts every enhancement-capable adaptor (adds `minimax`, `deepseek`, `qwen`, `openrouter`, `together`, `fireworks`); previously only `claude`/`gemini`/`openai`/`kimi` were reachable. +- **More upload targets + `supports_upload()` capability** (#400) โ€” `upload --target` now accepts every adaptor with a real upload, adding `minimax`, `deepseek`, `qwen`, `openrouter`, `together`, `fireworks`, and `pinecone`. New `supports_upload()` adaptor method and `get_upload_platforms()` helper. + +### Internal +- **`DocumentSkillBuilder`** โ€” the build side of all 9 document scrapers (epub, word, pptx, html, pdf, jupyter, man, rss, chat) now lives once in `cli/document_skill_builder.py` (net โˆ’1,859 lines across the scrapers). Every port is byte-identical, proven by golden trees in `tests/golden/phase2/` (`UPDATE_GOLDENS=1` refreshes them โ€” only on purpose). +- **`UnifiedScraper` dispatch table + shared engine** โ€” `scrape_all_sources()` routes through a class-level `SOURCE_DISPATCH` table and `_scrape_with_converter()` handles the 13 mechanical source types through the public `get_converter()`/`extract()` interface (โˆ’280 lines); new converter types registered in `CONVERTER_REGISTRY` work in unified configs automatically. +- **Single-definition CLI parsers** โ€” the central `SubcommandParser` classes in `cli/parsers/` are now the only definition of each command's flags; standalone `main(args=None)` paths build their parser from the central class, and a drift-guard test asserts identical dests/defaults/option strings. +- **`ExecutionContext.override()` is contextvars-based** โ€” concurrent threads/asyncio tasks (the MCP server) can no longer clobber each other's overrides; nested overrides stack and unwind; exceptions restore. +- **One home for agent/provider registries and batching** โ€” `AGENT_PRESETS` and `API_PROVIDERS` live only in `agent_client.py` (a silently-diverged duplicate kimi preset is gone); `cli/parallel_batches.py:run_batches_parallel()` replaces three duplicated `ThreadPoolExecutor` blocks. +- **Import hygiene** โ€” all seven `sys.path.insert` hacks in `mcp/` removed in favor of absolute `skill_seekers.*` imports; no more dual module identities. +- **Performance** โ€” incremental Kotlin brace-depth tracking (was O(nยฒ) prefix scans) and index-based class-body scans in `code_analyzer`, per-build memoization of import resolution in `dependency_analyzer`, GitHub `per_page` restored to `min(max_count, 100)`. +- **De-duplicated copy-pasted code into shared modules** โ€” `mcp/tools/subprocess_utils.py` (the streaming subprocess helper, #397), `mcp/tools/_common.py` (`TextContent` fallback + `CLI_DIR`, #401), and `cli/scraper_utils.py` (`score_code_quality` + `extract_table_from_html`, #402). Behavior preserved (parity-tested); ~hundreds of duplicated lines removed. + +## [3.7.0] - 2026-05-30 + +**Theme:** AI-driven project knowledge base (`skill-seekers scan`) โ€” bootstrap a complete skill set for a project in one command, with safety/observability/coverage hardening throughout. + +### Added +- **`skill-seekers scan ` command** (#327) โ€” point at any project; an AI agent inspects manifests, README, Dockerfile/CI, sampled source files (first 2 KB each), and the git remote, then emits one Skill Seekers config per detected framework plus a `-codebase.json` for the project's own code. Each config stamped with `metadata.detected_version` so re-scans report added / version-bumped / removed dependencies. Internationalized canonical-name resolver (CJK + EU language suffixes) so detections like "Godot ๅผ•ๆ“Ž" resolve `godot`. Out-dir cache means re-scans reuse prior emissions and respect manual edits. Doctor-style report with pluralized counts and resolved / AI-generated / unresolved / archived breakdown. +- **Coverage**: scan recognizes ~50 manifest types (Pipfile, environment.yml, deno.json, flake.nix, Chart.yaml, stack.yaml, deps.edn, dune-project, BUILD.bazel, โ€ฆ) and walks `src/lib/app/cmd/crates/packages/apps/services/backend/frontend` plus root-level files (catches Django, flat-layout Python, Go, Rust workspaces, JS monorepos). +- **Cost + safety flags**: `--max-ai-generations N` (default 10) caps unbounded AI generation for monorepos; `--dry-run` previews what would be emitted without writing or invoking AI; `--probe-urls` HEAD-probes AI-generated URLs with retry-on-404; `--no-fetch` / `--no-generate` / `--no-publish-prompt` for offline / CI use. +- **Community submission** (opt-in): freshly AI-generated configs can be submitted to the [community registry](https://github.com/yusufkaraaslan/skill-seekers-configs) via a native-async flow. Pre-checks `GITHUB_TOKEN`, idempotency-guards against duplicate issues, retries transient failures with backoff. +- **Archival**: configs that disappear from detections are moved (not deleted) to `out_dir/.archived//` so the user never loses hand-edited work and `out_dir` stays clean. +- **Docs**: new `docs/getting-started/05-scan-a-project.md`; entries in README, FAQ, CLI Reference, Feature Matrix, Config Format, Environment Variables, and the Quick Start cross-link. + +### Changed +- **CLI dispatch unified** (#327) โ€” `scan` and `doctor` now consume the parsed-args namespace directly via `Command(args).execute()` instead of building a second `argparse.ArgumentParser`. Eliminates the `_reconstruct_argv` hack for these commands; remaining ~14 commands flagged for migration. +- **Config schema**: `detected_version` lives under `metadata.detected_version` (alongside `metadata.version` for the config-schema version) rather than at top level. Backwards-compatible reader; old top-level placements migrate on next stamp. +- **`SourceDetector.CODE_PROJECT_MARKERS`** is now public (was `_CODE_PROJECT_MARKERS`); cross-module callers no longer reach into a private attribute. + +### Fixed +- **Correctness** (#327) โ€” diff layer keyed by stable filename slug instead of internal config name (eliminates phantom add/remove churn); `resolve_config_path` lookups now append `.json` so local-disk + user-dir paths actually find files; out-dir cache prevents redundant API/AI calls on re-scan; lowercase filename slugs prevent duplicate-file accumulation across runs. +- **Safety** (#327) โ€” atomic JSON writes via `os.replace` so SIGINT mid-write can't corrupt a config and silently flip it to "removed" on the next scan; `_safe_size` guards `stat()` so a broken symlink in `src/` no longer crashes the scan; `AgentClient.call` exceptions caught and logged; AI-generated config names rejected if they fail the registry regex; URL probe catches AI hallucinations of `base_url` before writing. +- **Observability** (#327) โ€” `logging.basicConfig` in scan so `logger.warning`/`error` reaches the user (was silently dropped); non-zero exit code when no configs and no codebase config were emitted, so CI pipelines detect total-failure scans. +- **Publish flow** (#327) โ€” native async (`asyncio.run` at single entry, `asyncio.to_thread` for `input()`); pre-check `GITHUB_TOKEN` with actionable hint instead of asking N "yes/no" questions and failing N times; idempotency check (search existing open issues) prevents duplicate submissions; retry with backoff on transient failures; nested-event-loop detection with clear message instead of opaque traceback. + +## [3.6.0] - 2026-05-03 + +**Theme:** Quality-of-life release โ€” packaging targets, GitHub issue workflow, codebase analysis fixes, and source detection hardening. + +### Added +- **IBM Bob packaging target** โ€” new `--target bob` adaptor and agent install support for IBM's Bob agent platform (#366) +- **GitHub issue filtering** โ€” `--github-issue-state`, `--github-issue-labels`, and `--github-issue-since` filters in the GitHub scraper for narrowing which issues are pulled (#367) +- **Per-issue files** โ€” GitHub scraper now writes one Markdown file per issue instead of a single bundle, improving navigation and downstream chunking (#367) +- **Pinecone frontmatter** โ€” Pinecone vector exports now include consistent YAML frontmatter for metadata round-tripping (#367) + +### Fixed +- **Unified scraper now generates `codebase_analysis/` index** โ€” local sources were producing C3.x outputs with broken SKILL.md links; the unified skill builder now wires up the index and resolves links correctly (#362, #376) +- **Guides fallback fires correctly** โ€” `unified_skill_builder` was emitting a truthy placeholder for empty guides which suppressed the fallback content; placeholder removed (#364, #375) +- **HTML URLs no longer treated as local files** โ€” `source_detector` now checks for `http(s)://` before falling through to the local-path branch, fixing false-positive routing (#373) +- **PDF extracted images appear in markdown** โ€” `pdf_scraper` now inserts `![](โ€ฆ)` references for images extracted from PDFs so they render in the generated SKILL.md (#369) +- **C3.x output for local sources** โ€” `unified` command was skipping the C3.x analysis pipeline for local codebase sources; now emits the full pattern/test/guide/config/router output (#363, #372) +- **Language filter passed to C3.x clone analysis** โ€” repos cloned for analysis now respect `--languages` instead of analyzing every file (fixes #361, #370) +- **Unity vs Unreal detection** โ€” Unity projects with C# imports were being misidentified as Unreal; detection now keys on C# import patterns (fixes #365, #368) + +## [3.5.1] - 2026-04-12 + +### Added +- **Centralized `defaults.json` config** โ€” single source of truth for all default values (`rate_limit`, `max_pages`, `workers`, `async_mode`, enhancement, analysis, RAG settings). New `defaults.py` loader module. All 15+ files that previously hardcoded defaults now read from this file (#356) +- **Low-signal code snippet filtering** โ€” `_is_low_signal_code_snippet()` filters junk patterns like bare `True`, `options`, single identifiers from quick references (#360) +- **Pattern description normalization** โ€” `_normalize_pattern_description()` cleans boilerplate prefixes and truncates to first meaningful sentence (#360) +- **Example language priority ranking** โ€” `_example_language_priority()` ranks Python > Bash > JSON > etc. for SKILL.md examples (#360) +- **`checkpoint_exists()` method** on `DocToSkillConverter` โ€” was called but never defined (#360) +- **Unified config source normalization** โ€” `DocToSkillConverter.__init__` merges fields from `sources[0]` into flat config for compatibility (#360) +- **`display_name` support** in SKILL.md generation โ€” produces cleaner titles and slugs (#360) +- **New tests**: `test_doc_scraper_entrypoint.py` (regression for `_run_scraping`), quick-reference quality tests, docs-only compatibility tests, nested reference coverage tests (#360) + +### Changed +- **`max_pages` default is now unlimited (`-1`)** โ€” the scraper fetches all pages unless the user explicitly sets `--max-pages`. Previously defaulted to 500 (#356) +- **`--no-rate-limit` flag now works** โ€” was defined in CLI arguments but never consumed by `ExecutionContext` (#356) +- **`constants.py` reads from `defaults.json`** โ€” no longer contains hardcoded magic numbers (#356) +- **`ExecutionContext.ScrapingSettings`** โ€” `rate_limit` and `max_pages` now use real defaults instead of `None`, preventing None-poisoning downstream (#356) +- **SKILL.md frontmatter cleanup** โ€” empty `doc_version:` and `version:` fields are now omitted; placeholder sections removed (#360) +- **Enhancement routing through platform adaptors** instead of importing nonexistent `enhance_skill_md` helper (#360) +- **`quality_metrics.py` uses `rglob`** for nested reference directories in unified skills (#360) + +### Fixed +- **`TypeError: '>' not supported between instances of 'NoneType' and 'int'`** โ€” `rate_limit` defaulted to `None` in `ExecutionContext`, which flowed through `config.get("rate_limit", DEFAULT)` (dict.get returns None when the key exists with value None, ignoring the fallback). Fixed in `doc_scraper.py` (sync + async paths), `estimate_pages.py`, and `sync_config.py` (#356, #359) +- **`discover_urls()` loop never executed with unlimited `max_pages`** โ€” `len(discovered) < -1` is always False. Added unlimited mode guard (#356) +- **`converter.scrape()` called nonexistent method** in `_run_scraping()` โ€” changed to `converter.scrape_all()` (#360) +- **None-safety for BeautifulSoup attributes** โ€” `link["href"]`, `sitemap.text`, `meta_desc["content"]` guarded against None XML text nodes (#360) +- **Python 3.10 compatibility** โ€” backslash in f-string in `quality_metrics.py` not supported before 3.12 (#360) + +## [3.5.0] - 2026-04-09 + +**Theme:** Grand Unification โ€” one command, one interface, direct converters. Agent-agnostic architecture, marketplace pipeline, smart SPA discovery, all content extraction enabled by default. 80+ files changed across the codebase. + +### Added +- **Grand Unification** โ€” unified `create` command as single entry point for all 18 source types with auto-detection, direct converter invocation, and centralized enhancement (#346) +- **Agent-agnostic `AgentClient` abstraction** โ€” all 5 enhancers now support Claude, Kimi, Codex, Copilot, OpenCode, and custom agents via a unified interface. Auto-detects agent from API keys instead of hardcoding (#336) +- **Kimi CLI integration** with stdin piping and output parsing (#336) +- **`MarketplacePublisher`** โ€” publish skills to Claude Code plugin marketplace repos (#336) +- **`MarketplaceManager`** โ€” register and manage marketplace repositories (#336) +- **`ConfigPublisher`** โ€” push configs to registered config source repos (#336) +- **`push_config` MCP tool** for automated config publishing (#336) +- **Smart SPA discovery engine** โ€” three-layer discovery: sitemap.xml, llms.txt, SPA nav rendering (#336) +- **`"browser": true` config support** for JavaScript SPA sites with browser renderer timeout defaults (60s, domcontentloaded) (#336) +- **Dynamic routing via `_build_argv()`** โ€” replaced manual arg forwarding with dynamic forwarder, added 7 missing CLI flags (#336) +- **Kotlin language support for codebase analysis** โ€” Full C3.x pipeline support: AST parsing (classes, objects, functions, data/sealed classes, extension functions, coroutines), dependency extraction, design pattern recognition (object declarationโ†’Singleton, companion objectโ†’Factory, sealed classโ†’Strategy), test example extraction (JUnit, Kotest, MockK, Spek), language detection patterns, config detection (build.gradle.kts), and extension maps across all analyzers (#287) +- **Headless browser rendering** (`--browser` flag) โ€” uses Playwright to render JavaScript SPA sites (React, Vue, etc.) that return empty HTML shells. Auto-installs Chromium on first use. Optional dep: `pip install "skill-seekers[browser]"` (#321) +- **`skill-seekers doctor` command** โ€” 8 diagnostic checks (Python version, package install, git, core/optional deps, API keys, MCP server, output dir) with pass/warn/fail status and `--verbose` flag (#316) +- **Prompt injection check workflow** โ€” bundled `prompt-injection-check` workflow scans scraped content for injection patterns (role assumption, instruction overrides, delimiter injection, hidden instructions). Added as first stage in `default` and `security-focus` workflows. Flags suspicious content without removing it (#324) +- **Codex CLI plugin manifest** (`.codex-plugin/plugin.json`) for OpenAI Codex integration (#350) +- **6 behavioral UML diagrams** โ€” 3 sequence (create pipeline, GitHub+C3.x flow, MCP invocation), 2 activity (source detection, enhancement pipeline), 1 component (runtime dependencies with interface contracts) +- **134 new tests** โ€” `test_agent_client.py`, `test_config_publisher.py`, `_build_argv` tests. Total: 3194 passed, 39 expected skips (#336) + +### Changed +- **All content extraction features enabled by default** โ€” pattern detection, test examples, how-to guides, config extraction, and router generation no longer require explicit opt-in +- **Renamed `claude-enhanced` merge mode to `ai-enhanced`** โ€” backward compatibility alias kept (#336) +- **Removed 118+ hardcoded Claude references** across 60+ files (#336) +- **Refactored 5 enhancers** to use `AgentClient` abstraction (#336) +- **Removed 50-file GitHub API analysis limit** (#336) +- **Removed 100-file config extraction limit** (#336) +- **Fixed unified scraper default `max_pages`** from 100 to 500 (#336) +- **Centralized enhancement timeouts** to 45min default with unlimited support (#336) +- **Excluded slow MCP/e2e tests from CI coverage step** to prevent timeout + +### Fixed +- **`glob('*.md')` replaced with `rglob('*.md')`** in all adaptors โ€” fixes packaging when skills are in nested directories (#349) +- **`scraped_data` list-vs-dict bug** in conflict detection (#336) +- **`base_url` passthrough** to doc scraper subprocess (#336) +- **URL filtering** now uses base directory correctly (#336) +- **C3.x analysis data loss** (#336) +- **`--enhance-level` flag** not passed correctly (#336) +- **`guide_enhancer` method rename** โ€” `_call_claude_api` renamed to `_call_ai` (#336) +- **11 pre-existing test failures** fixed (#336) +- **Per-file language detection** in GitHub scraper (#336) +- **GitHub language detection crashes with `TypeError`** when API response contains non-integer metadata keys (e.g., `"url"`) โ€” now filters to integer values only (#322) +- **C3.x codebase analysis crashes with `TypeError`** โ€” `_run_c3_analysis()` and `_analyze_c3x()` passed removed `enhance_with_ai`/`ai_mode` kwargs to `analyze_codebase()` instead of `enhance_level` (#323) + +### Security +- **Removed command injection** via cloned repo script execution (#336) +- **Replaced `git add -A`** with targeted staging in marketplace publisher (#336) +- **Clear auth tokens** from cached `.git/config` after clone (#336) +- **Use `defusedxml`** for sitemap XML parsing (XXE protection) (#336) +- **Path traversal validation** for config names (#336) + +## [3.4.0] - 2026-03-21 + +### Added +- **OpenCode adaptor** (`--target opencode`) - Directory-based packaging with dual-format YAML frontmatter +- **OpenAI-compatible base class** - Shared base for all OpenAI-compatible LLM platforms +- **6 new LLM platform adaptors**: Kimi (`--target kimi`), DeepSeek (`--target deepseek`), Qwen (`--target qwen`), OpenRouter (`--target openrouter`), Together AI (`--target together`), Fireworks AI (`--target fireworks`) +- **7 new CLI agent install paths**: roo, cline, aider, bolt, kilo, continue, kimi-code (total: 18 agents) +- **OpenCode skill splitter** - Auto-split large docs into focused sub-skills with router +- **Bi-directional skill converter** - Import/export between OpenCode and any platform format +- **Distribution files** for Smithery (`smithery.yaml`), GitHub Actions (`templates/github-actions/update-skills.yml`), and Claude Code Plugin +- **Full UML architecture documentation** โ€” 14 class diagrams synced from source code via StarUML +- **StarUML HTML API reference** documentation export +- **Ecosystem section** in README linking all Skill Seekers repos (PyPI, website, plugin, GitHub Action) + +### Fixed +- **`sanitize_url()` crashes on Python 3.14** due to strict `urlparse` rejecting bracket-containing URLs (#284) +- **Blindly appending `/index.html.md` to non-.md URLs** โ€” now only appends for URLs that should have it (#277) +- **Unified scraper temp config** uses unified format for `doc_scraper` instead of raw args (#317) +- **Unicode arrows in CLI help text** replaced with ASCII for Windows cp1252 compatibility +- **CLI flags in plugin slash commands** corrected (`create` uses `--preset`, `package` uses `--target`) +- **MiniMax adaptor** improvements from PR #318 review (#319) +- **Misleading "Scraped N pages" count** reported visited URLs instead of saved pages โ€” now shows `(N saved, M skipped)` (#320) +- **"No scraped data found" after successful scrape** on JavaScript SPA sites โ€” now warns that site requires JS rendering (#320, #321) + +### Changed +- Refactored MiniMax adaptor to inherit from shared OpenAI-compatible base class +- Platform count: 5 โ†’ 12 LLM targets +- Agent count: 11 โ†’ 18 install paths +- Consolidated `Docs/` into `docs/` (single documentation directory) +- Removed stale root-level test scripts and junk files +- Removed stale `UNIFIED_PARSERS.md` superseded by UML architecture +- Added architecture references to README.md and CONTRIBUTING.md +- Fixed pre-existing ruff format issues in 5 files + +## [3.3.0] - 2026-03-16 + +**Theme:** 10 new source types (17 total), EPUB unified integration, sync-config command, performance optimizations, 12 README translations, and 19 bug fixes. 117 files changed, +41,588 lines since v3.2.0. + +### Supported Source Types (17) + +| # | Type | CLI Command | Config Type | Auto-Detection | +|---|------|-------------|-------------|----------------| +| 1 | Documentation (web) | `scrape` / `create ` | `documentation` | HTTP/HTTPS URLs | +| 2 | GitHub repository | `github` / `create owner/repo` | `github` | `owner/repo` or github.com URLs | +| 3 | PDF document | `pdf` / `create file.pdf` | `pdf` | `.pdf` extension | +| 4 | Word document | `word` / `create file.docx` | `word` | `.docx` extension | +| 5 | EPUB e-book | `epub` / `create file.epub` | `epub` | `.epub` extension | +| 6 | Video | `video` / `create ` | `video` | YouTube/Vimeo URLs, video extensions | +| 7 | Local codebase | `analyze` / `create ./path` | `local` | Directory paths | +| 8 | Jupyter Notebook | `jupyter` / `create file.ipynb` | `jupyter` | `.ipynb` extension | +| 9 | Local HTML | `html` / `create file.html` | `html` | `.html`/`.htm` extensions | +| 10 | OpenAPI/Swagger | `openapi` / `create spec.yaml` | `openapi` | `.yaml`/`.yml` with OpenAPI content | +| 11 | AsciiDoc | `asciidoc` / `create file.adoc` | `asciidoc` | `.adoc`/`.asciidoc` extensions | +| 12 | PowerPoint | `pptx` / `create file.pptx` | `pptx` | `.pptx` extension | +| 13 | RSS/Atom feed | `rss` / `create feed.rss` | `rss` | `.rss`/`.atom` extensions | +| 14 | Man pages | `manpage` / `create cmd.1` | `manpage` | `.1`โ€“`.8`/`.man` extensions | +| 15 | Confluence wiki | `confluence` | `confluence` | API or export directory | +| 16 | Notion pages | `notion` | `notion` | API or export directory | +| 17 | Slack/Discord chat | `chat` | `chat` | Export directory or API | + +### Added + +#### 10 New Skill Source Types (17 total) + +Skill Seekers now supports 17 source types โ€” up from 7. Every new type is fully integrated into the CLI (`skill-seekers `), `create` command auto-detection, unified multi-source configs, config validation, the MCP server, and the skill builder. + +- **Jupyter Notebook** โ€” `skill-seekers jupyter --notebook file.ipynb` or `skill-seekers create file.ipynb` + - Extracts markdown cells, code cells with outputs, kernel metadata, imports, and language detection + - Handles single files and directories of notebooks; filters `.ipynb_checkpoints` + - Optional dependency: `pip install "skill-seekers[jupyter]"` (nbformat) + - Entry point: `skill-seekers-jupyter` + +- **Local HTML** โ€” `skill-seekers html --html-path file.html` or `skill-seekers create file.html` + - Parses HTML using BeautifulSoup with smart main content detection (`
`, `
`, `.content`, largest div) + - Extracts headings, code blocks, tables (to markdown), images, links; converts inline HTML to markdown + - Handles single files and directories; supports `.html`, `.htm`, `.xhtml` extensions + - No extra dependencies (BeautifulSoup is a core dep) + +- **OpenAPI/Swagger** โ€” `skill-seekers openapi --spec spec.yaml` or `skill-seekers create spec.yaml` + - Parses OpenAPI 3.0/3.1 and Swagger 2.0 specs from YAML or JSON (local files or URLs via `--spec-url`) + - Extracts endpoints, parameters, request/response schemas, security schemes, tags + - Resolves `$ref` references with circular reference protection; handles `allOf`/`oneOf`/`anyOf` + - Groups endpoints by tags; generates comprehensive API reference markdown + - Source detection sniffs YAML file content for `openapi:` or `swagger:` keys (avoids false positives on non-API YAML files) + - Optional dependency: `pip install "skill-seekers[openapi]"` (pyyaml โ€” already a core dep, guard added for safety) + +- **AsciiDoc** โ€” `skill-seekers asciidoc --asciidoc-path file.adoc` or `skill-seekers create file.adoc` + - Regex-based parser (no external library required) with optional `asciidoc` library support + - Extracts headings (= through =====), `[source,lang]` code blocks, `|===` tables, admonitions (NOTE/TIP/WARNING/IMPORTANT/CAUTION), and `include::` directives + - Converts AsciiDoc formatting to markdown; handles single files and directories + - Optional dependency: `pip install "skill-seekers[asciidoc]"` (asciidoc library for advanced rendering) + +- **PowerPoint (.pptx)** โ€” `skill-seekers pptx --pptx file.pptx` or `skill-seekers create file.pptx` + - Extracts slide text, speaker notes, tables, images (with alt text), and grouped shapes + - Detects code blocks by monospace font analysis (30+ font families) + - Groups slides into sections by layout type; handles single files and directories + - Optional dependency: `pip install "skill-seekers[pptx]"` (python-pptx) + +- **RSS/Atom Feeds** โ€” `skill-seekers rss --feed-url ` / `--feed-path file.rss` or `skill-seekers create feed.rss` + - Parses RSS 2.0, RSS 1.0, and Atom feeds via feedparser + - Optionally follows article links (`--follow-links`, default on) to scrape full page content using BeautifulSoup + - Extracts article titles, summaries, authors, dates, categories; configurable `--max-articles` (default 50) + - Source detection matches `.rss` and `.atom` extensions (`.xml` excluded to avoid false positives) + - Optional dependency: `pip install "skill-seekers[rss]"` (feedparser) + +- **Man Pages** โ€” `skill-seekers manpage --man-names git,curl` / `--man-path dir/` or `skill-seekers create git.1` + - Extracts man pages by running `man` command via subprocess or reading `.1`โ€“`.8`/`.man` files directly + - Handles gzip/bzip2/xz compressed man files; strips troff/groff formatting (backspace overstriking, macros, font escapes) + - Parses structured sections (NAME, SYNOPSIS, DESCRIPTION, OPTIONS, EXAMPLES, SEE ALSO) + - Source detection uses basename heuristic to avoid false positives on log rotation files (e.g., `access.log.1`) + - No external dependencies (stdlib only) + +- **Confluence** โ€” `skill-seekers confluence --base-url --space-key ` or `--export-path dir/` + - API mode: fetches pages from Confluence REST API with pagination (`atlassian-python-api`) + - Export mode: parses Confluence HTML/XML export directories + - Extracts page content, code/panel/info/warning macros, page hierarchy, tables + - Optional dependency: `pip install "skill-seekers[confluence]"` (atlassian-python-api) + +- **Notion** โ€” `skill-seekers notion --database-id ` / `--page-id ` or `--export-path dir/` + - API mode: fetches pages via Notion API with support for 20+ block types (paragraph, heading, code, callout, toggle, table, etc.) + - Export mode: parses Notion Markdown/CSV export directories + - Extracts rich text with annotations (bold, italic, code, links), 16+ property types for database entries + - Optional dependency: `pip install "skill-seekers[notion]"` (notion-client) + +- **Slack/Discord Chat** โ€” `skill-seekers chat --export-path dir/` or `--token --channel ` + - Slack: parses workspace JSON exports or fetches via Slack Web API (`slack_sdk`) + - Discord: parses DiscordChatExporter JSON or fetches via Discord HTTP API + - Extracts messages, code snippets (fenced blocks), shared URLs, threads, reactions, attachments + - Generates per-channel summaries and topic categorization + - Optional dependency: `pip install "skill-seekers[chat]"` (slack-sdk) + +#### EPUB Unified Pipeline Integration +- **EPUB (.epub) input support** via `skill-seekers create book.epub` or `skill-seekers epub --epub book.epub` + - Extracts chapters, metadata (Dublin Core), code blocks, images, and tables from EPUB 2 and EPUB 3 files + - DRM detection with clear error messages (Adobe ADEPT, Apple FairPlay, Readium LCP) + - Font obfuscation correctly identified as non-DRM + - EPUB 3 TOC bug workaround (`ignore_ncx` option) + - `--help-epub` flag for EPUB-specific help + - Optional dependency: `pip install "skill-seekers[epub]"` (ebooklib) + - 107 tests across 14 test classes +- **EPUB added to unified scraper** โ€” `_scrape_epub()` method, `scraped_data["epub"]`, config validation (`_validate_epub_source`), and dry-run display. Previously EPUB worked standalone but was missing from multi-source configs. + +#### Unified Skill Builder โ€” Generic Merge System +- **`_generic_merge()`** โ€” Priority-based section merge for any combination of source types not covered by existing pairwise synthesis (docs+github, docs+pdf, etc.). Produces YAML frontmatter + source-attributed sections. +- **`_append_extra_sources()`** โ€” Appends additional source type content (e.g., Jupyter + PPTX) to pairwise-synthesized SKILL.md. +- **`_generate_generic_references()`** โ€” Generates `references//index.md` for any source type, with ID resolution fallback chain. +- **`_SOURCE_LABELS`** dict โ€” Human-readable labels for all 17 source types used in merge attribution. + +#### Config Validator Expansion +- **17 source types in `VALID_SOURCE_TYPES`** โ€” All new types plus `word` and `video` now have per-type validation methods. +- **`_validate_word_source()`** โ€” Validates `path` field for Word documents (was previously missing). +- **`_validate_video_source()`** โ€” Validates `url`, `path`, or `playlist` field for video sources (was previously missing). +- **11 new `_validate_*_source()` methods** โ€” One for each new type with appropriate required-field checks. + +#### Source Detection Improvements +- **7 new file extension detections** in `SourceDetector.detect()` โ€” `.ipynb`, `.html`/`.htm`, `.pptx`, `.adoc`/`.asciidoc`, `.rss`/`.atom`, `.1`โ€“`.8`/`.man`, `.yaml`/`.yml` (with content sniffing) +- **`_looks_like_openapi()`** โ€” Content sniffing for YAML files: only classifies as OpenAPI if the file contains `openapi:` or `swagger:` key in first 20 lines (prevents false positives on docker-compose, Ansible, Kubernetes manifests, etc.) +- **Man page basename heuristic** โ€” `.1`โ€“`.8` extensions only detected as man pages if the basename has no dots (e.g., `git.1` matches but `access.log.1` does not) +- **`.xml` excluded from RSS detection** โ€” Too generic; only `.rss` and `.atom` trigger RSS detection + +#### MCP Server Integration +- **`scrape_generic` tool** โ€” New MCP tool handles all 10 new source types via subprocess with per-type flag mapping +- **`_PATH_FLAGS` / `_URL_FLAGS` dicts** โ€” Correct flag routing for each source type (e.g., jupyterโ†’`--notebook`, htmlโ†’`--html-path`, rssโ†’`--feed-url`) +- **`GENERIC_SOURCE_TYPES` tuple** โ€” Lists all 10 new types for validation +- **Config validation display** โ€” `validate_config` tool now shows source details for all new types +- **Tool count updated** โ€” 33 โ†’ 34 tools (scraping tools 10 โ†’ 11) + +#### CLI Wiring +- **10 new CLI subcommands** โ€” `jupyter`, `html`, `openapi`, `asciidoc`, `pptx`, `rss`, `manpage`, `confluence`, `notion`, `chat` in `COMMAND_MODULES` +- **10 new argument modules** โ€” `arguments/{jupyter,html,openapi,asciidoc,pptx,rss,manpage,confluence,notion,chat}.py` with per-type `*_ARGUMENTS` dicts +- **10 new parser modules** โ€” `parsers/{jupyter,html,openapi,asciidoc,pptx,rss,manpage,confluence,notion,chat}_parser.py` with `SubcommandParser` implementations +- **`create` command routing** โ€” `_route_generic()` method for all new types with correct module names and CLI flags +- **10 new entry points** in pyproject.toml โ€” `skill-seekers-{jupyter,html,openapi,asciidoc,pptx,rss,manpage,confluence,notion,chat}` +- **7 new optional dependency groups** in pyproject.toml โ€” `[jupyter]`, `[asciidoc]`, `[pptx]`, `[confluence]`, `[notion]`, `[rss]`, `[chat]` +- **`[all]` group updated** โ€” Includes all 7 new optional dependencies + +#### Sync Config Command +- **`skill-seekers sync-config`** โ€” New subcommand that crawls a docs site's navigation, diffs discovered URLs against a config's `start_urls`, and optionally writes the updated list back with `--apply` (#306) + - BFS link discovery with configurable depth (default 2), max-pages, rate-limit + - Respects `url_patterns.include/exclude` from config + - Supports optional `nav_seed_urls` config field + - Handles both unified (sources array) and legacy flat config formats + - MCP `sync_config` tool included + - 57 tests (39 unit + 18 E2E with local HTTP server) + +#### Workflow & Documentation +- **`complex-merge.yaml`** โ€” New 7-stage AI-powered workflow for complex multi-source merging (source inventory โ†’ cross-reference โ†’ conflict detection โ†’ priority merge โ†’ gap analysis โ†’ synthesis โ†’ quality check) +- **AGENTS.md rewritten** โ€” Updated with all 17 source types, scraper pattern docs, project layout, and key pattern documentation +- **77 new integration tests** in `test_new_source_types.py` โ€” Source detection, config validation, generic merge, CLI wiring, validation, and create command routing +- **`docs/BEST_PRACTICES.md`** โ€” Comprehensive guide for creating high-quality skills: SKILL.md structure, code examples, prerequisites, troubleshooting, quality targets, and real-world Grade F to Grade A example (#206) +- **Documentation updated for 17 source types** โ€” 32 files updated across README, CLI reference, feature matrix, MCP reference, config format, API reference, unified scraping, multi-source guide, installation, quick-start, core concepts, user guide, FAQ, troubleshooting, architecture, and all Chinese (zh-CN) translations +- **README translations for 10 languages (12 total)** โ€” Added Japanese (ๆ—ฅๆœฌ่ชž), Korean (ํ•œ๊ตญ์–ด), Spanish (Espaรฑol), French (Franรงais), German (Deutsch), Portuguese (Portuguรชs), Turkish (Tรผrkรงe), Arabic (ุงู„ุนุฑุจูŠุฉ), Hindi (เคนเคฟเคจเฅเคฆเฅ€), and Russian (ะ ัƒััะบะธะน) README translations with language selector bar across all versions + +### Performance +- **Pre-compiled regex and O(1) URL dedup in doc_scraper** โ€” Module-level compiled patterns, `_enqueued_urls` set for O(1) dedup, cached URL patterns, async error logging fix (#309) +- **Bisect-based line indexing in code_analyzer and dependency_analyzer** โ€” O(log n) `offset_to_line()` via bisect replaces O(n) `count("\n")` across all 10 language analyzers and all import extractors +- **O(n) parent class map for Python method detection** โ€” Replaces O(nยฒ) repeated AST walks in code_analyzer +- **O(1) tree traversal in github_scraper** โ€” `deque.popleft()` replaces list `pop(0)` +- **Shared `build_line_index()` / `offset_to_line()` utilities** in `cli/utils.py` โ€” DRY extraction from code_analyzer and dependency_analyzer + +### Fixed +- **Config validator missing `word` and `video` dispatch** โ€” `_validate_source()` had no `elif` branches for `word` or `video` types, silently skipping validation. Added dispatch entries and `_validate_word_source()` / `_validate_video_source()` methods. +- **`openapi_scraper.py` unconditional `import yaml`** โ€” Would crash at import time if pyyaml not installed. Added `try/except ImportError` guard with `YAML_AVAILABLE` flag and `_check_yaml_deps()` helper. +- **`asciidoc_scraper.py` missing standard arguments** โ€” `main()` manually defined args instead of using `add_asciidoc_arguments()`. Refactored to use shared argument definitions + added enhancement workflow integration. +- **`pptx_scraper.py` missing standard arguments** โ€” Same issue. Refactored to use `add_pptx_arguments()`. +- **`chat_scraper.py` missing standard arguments** โ€” Same issue. Refactored to use `add_chat_arguments()`. +- **`notion_scraper.py` missing `run_workflows` call** โ€” `--enhance-workflow` flags were silently ignored. Added workflow runner integration. +- **`openapi_scraper.py` return type `None`** โ€” `main()` returned `None` instead of `int`. Fixed to `return 0` on success, matching all other scrapers. +- **MCP `scrape_generic_tool` flag mismatch** โ€” Was passing `--path`/`--url` as generic flags, but every scraper expects its own flag name (e.g., `--notebook`, `--html-path`, `--spec`). All 10 source types would have failed at runtime. Fixed with per-type `_PATH_FLAGS` and `_URL_FLAGS` mappings. +- **Word scraper `docx_id` key mismatch** โ€” Unified scraper data dict used `docx_id` but generic reference generation looked for `word_id`. Added `word_id` alias. +- **`main.py` docstring stale** โ€” Missing all 10 new commands. Updated to list all 27 commands. +- **`source_detector.py` module docstring stale** โ€” Described only 5 source types. Updated to describe 14+ detected types. +- **`manpage_parser.py` docstring referenced wrong file** โ€” Said `manpage_scraper.py` but actual file is `man_scraper.py`. Fixed. +- **Parser registry test count** โ€” Updated expected count from 25 to 35 for 10 new parsers. +- **'Invalid IPv6 URL' error on bracket-containing URLs (#284)** โ€” URLs with square brackets (e.g., `/api/[v1]/users`) discovered via BFS crawl or HTML extraction bypassed the original fix in `_clean_url()`. Added shared `sanitize_url()` utility applied at every URL ingestion point. 16 new tests. +- **GitHub scraper 'list index out of range' on issue extraction (#269)** โ€” PyGithub's `PaginatedList` slicing could fail on some versions or empty repos. Replaced with `itertools.islice()`. +- **Release workflow version mismatch** โ€” GitHub release showed wrong version (v3.1.3 instead of v3.2.0) because no explicit release name was set and sed regex had unescaped dots. Added explicit `name`/`tag_name`, version consistency check (tag vs pyproject.toml vs package), and empty release notes fallback. +- **Release workflow Python 3.10 compatibility** โ€” Version consistency check used `tomllib` (Python 3.11+). Replaced with grep/sed for 3.10 compatibility. +- **`infer_categories()` "tutorial" vs "tutorials" key mismatch** โ€” Guard checked `'tutorial'` but wrote to `'tutorials'` key, risking silent overwrites in category inference. +- **Flaky `test_benchmark_metadata_overhead`** โ€” Stabilized with 20 iterations, warm-up run, median averaging, and 200% threshold (was failing on CI with 5 iterations and mean). +- **CI branch protection check permanently pending** โ€” Summary job was named 'All Checks Complete' but branch protection required 'Tests'. PRs were stuck as 'Expected โ€” Waiting for status to be reported'. Renamed job to match. + +## [3.2.0] - 2026-03-01 + +**Theme:** Video source support, Word document support, Pinecone adaptor, and quality improvements. 94 files changed, +23,500 lines since v3.1.3. **2,540 tests passing.** + +### ๐ŸŽฌ Video Tutorial Scraping Pipeline (BETA) + +Complete video tutorial extraction system that converts YouTube videos and local video files into AI-consumable skills. The pipeline extracts transcripts, performs visual OCR on code editor panels, tracks code evolution across frames, and generates structured SKILL.md output. + +### Added + +#### Video Pipeline Core (`skill-seekers video`) +- **`skill-seekers video --url `** โ€” New CLI command for video tutorial scraping. Also supports `--video-file` for local files and `--playlist` for YouTube playlists +- **`skill-seekers create `** โ€” Auto-detects YouTube URLs and routes to video scraper +- **`video_scraper.py`** (~960 lines) โ€” Main orchestrator: metadata โ†’ transcript โ†’ segmentation โ†’ visual extraction โ†’ SKILL.md generation +- **`video_models.py`** (~815 lines) โ€” 20+ dataclasses: `VideoMetadata`, `TranscriptSegment`, `VideoChapter`, `KeyframeData`, `FrameSubSection`, `TextBlock`, `CodeTimeline`, `SetupModules`, etc. +- **`video_metadata.py`** (~270 lines) โ€” YouTube metadata extraction (title, channel, views, chapters, duration) via yt-dlp; local file metadata via ffprobe +- **`video_transcript.py`** (~370 lines) โ€” Multi-source transcript extraction with 3-tier fallback: YouTube Transcript API โ†’ yt-dlp subtitles โ†’ faster-whisper local transcription +- **`video_segmenter.py`** (~220 lines) โ€” Chapter-based and time-window segmentation with configurable overlap +- **`video_visual.py`** (~2,410 lines) โ€” Visual extraction pipeline: + - Keyframe detection via scene change (scenedetect) with configurable threshold + - Frame classification (code editor, slides, terminal, browser, other) + - Panel detection โ€” splits IDE screenshots into independent sub-sections (code, terminal, file tree) + - **Per-panel OCR** โ€” Each detected panel OCR'd independently with its own bounding box + - **Multi-engine OCR ensemble** โ€” EasyOCR + pytesseract for code frames (per-line confidence merge with code-token preference), EasyOCR only for non-code frames + - **Parallel OCR** โ€” `ThreadPoolExecutor` for multi-panel frames + - Narrow panel filtering (300px min width) to skip UI chrome + - Text block tracking with spatial panel position matching across frames + - Code timeline with edit tracking (additions, modifications, deletions) + - Vision API fallback when OCR confidence < 0.5 + - Tesseract circuit breaker (`_tesseract_broken` flag) โ€” disables pytesseract after first failure +- **Audio-visual alignment** โ€” Code blocks paired with narrator transcript for context +- **Video-specific AI enhancement** โ€” Custom prompt for OCR denoising, code reconstruction, and tutorial narrative synthesis +- **Two-pass AI enhancement** โ€” Pass 1 cleans reference files (Code Timeline reconstruction from transcript context), Pass 2 generates SKILL.md from cleaned references +- **`_ai_clean_reference()`** โ€” Sends reference file to Claude to reconstruct code blocks using transcript context, fixing OCR noise before SKILL.md generation +- **`video-tutorial.yaml`** workflow preset โ€” 4-stage enhancement pipeline (OCR cleanup โ†’ language detection โ†’ tutorial synthesis โ†’ skill polish) +- **Video arguments** โ€” `arguments/video.py` with `VIDEO_ARGUMENTS` dict: `--url`, `--video-file`, `--playlist`, `--vision-ocr`, `--keyframe-threshold`, `--max-keyframes`, `--whisper-model`, `--setup`, etc. +- **Video parser** โ€” `parsers/video_parser.py` for unified CLI parser registry +- **MCP `scrape_video` tool** โ€” Full video scraping from MCP server with 6 visual params, setup mode, and playlist support +- **`tests/test_video_scraper.py`** (197 tests) โ€” Comprehensive coverage: models, metadata, transcript, segmenter, visual extraction, OCR, panel detection, scraper integration, CLI arguments, OCR cleaning, code filtering + +#### Video `--setup`: GPU Auto-Detection & Dependency Installation +- **`skill-seekers video --setup`** โ€” One-command GPU auto-detection and dependency installation + - `video_setup.py` (~835 lines) โ€” Complete setup orchestration module + - **GPU auto-detection** โ€” Detects NVIDIA (nvidia-smi โ†’ CUDA version), AMD (rocminfo โ†’ ROCm version), or CPU-only without requiring PyTorch + - **Correct PyTorch variant** โ€” Installs from the right index URL: `cu124`/`cu121`/`cu118` for NVIDIA, `rocm6.3`/`rocm6.2.4` for AMD, `cpu` for CPU-only + - **ROCm configuration** โ€” Sets `MIOPEN_FIND_MODE=FAST` and `HSA_OVERRIDE_GFX_VERSION` for AMD GPUs + - **Virtual environment detection** โ€” Warns users outside a venv with opt-in `--force` override + - **System dependency checks** โ€” Validates `tesseract` and `ffmpeg` binaries, provides OS-specific install instructions + - **Module selection** โ€” `SetupModules` dataclass for optional component selection (easyocr, opencv, tesseract, scenedetect, whisper) + - **Base video deps always included** โ€” `yt-dlp` and `youtube-transcript-api` installed automatically + - **Verification step** โ€” Post-install import checks including `torch.cuda.is_available()` and `torch.version.hip` + - **Non-interactive mode** โ€” `run_setup(interactive=False)` for MCP server and CI/CD use +- **`--setup` early-exit** โ€” Runs before source validation (no `--url` required) +- **MCP `scrape_video` setup parameter** โ€” `setup: bool = False` in `server_fastmcp.py` and `scraping_tools.py` +- **`create` command routing** โ€” Forwards `--setup` to video scraper +- **`tests/test_video_setup.py`** (60 tests) โ€” GPU detection, CUDA/ROCm version mapping, installation, verification, venv checks, system deps, module selection + +#### Microsoft Word (.docx) Support +- **`skill-seekers word --docx `** and `skill-seekers create document.docx` โ€” Full pipeline: mammoth โ†’ HTML โ†’ BeautifulSoup โ†’ sections โ†’ SKILL.md + references/ + - `word_scraper.py` โ€” `WordToSkillConverter` class (~600 lines) with heading/code/table/image/metadata extraction + - `arguments/word.py` โ€” `add_word_arguments()` + `WORD_ARGUMENTS` dict + - `parsers/word_parser.py` โ€” WordParser for unified CLI parser registry + - `tests/test_word_scraper.py` โ€” Comprehensive test suite (~300 lines) +- **`.docx` auto-detection** in `source_detector.py` โ€” Routes to word scraper +- **`--help-word`** flag in create command for Word-specific help +- **Word support in unified scraper** โ€” `_scrape_word()` method for multi-source scraping +- **`skill-seekers-word`** entry point in pyproject.toml +- **`docx` optional dependency group** โ€” `pip install skill-seekers[docx]` (mammoth + python-docx) + +#### Other Additions +- **Pinecone adaptor** โ€” `pinecone_adaptor.py` with full upload support +- **`video` and `video-full` optional dependency groups** in pyproject.toml +- **`skill-seekers-video`** entry point in pyproject.toml +- **Video plan documents** โ€” 8 design documents in `docs/plans/video/` (research, data models, pipeline, integration, output, testing, dependencies, overview) + +### Fixed + +#### Video Pipeline OCR Quality Fixes (6) +- **Webcam/OTHER frames skip OCR** โ€” WEBCAM and OTHER frame types no longer get OCR'd, eliminating ~64 junk OCR results per video +- **`_clean_ocr_line()` helper** โ€” Strips leading line numbers, IDE tab bar text, Unity Inspector labels, and VS Code collapse markers from OCR output +- **`_fix_intra_line_duplication()`** โ€” Detects and removes token sequence repetition from multi-engine OCR overlap (e.g., `gpublic class Card Jpublic class Card` โ†’ `public class Card`) +- **`_is_likely_code()` filter** โ€” Reference file code fences now filtered to reject UI junk (Inspector, Hierarchy, Canvas labels) that passed frame classification +- **Language detection on text groups** โ€” `get_text_groups()` now runs `LanguageDetector.detect_from_code()` on each group, filling the previously-always-None `detected_language` field +- **OCR cleaning in text assembly** โ€” `_assemble_structured_text()` applies `_clean_ocr_line()` to every line before joining + +#### Video Pipeline Fixes (15) +- **`extract_visual_data` returning 2-tuple instead of 3** โ€” Caused `ValueError` crash when unpacking results +- **pytesseract in core deps** โ€” Moved from core dependencies to `[video-full]` optional group +- **30-min timeout for video enhancement subprocess** โ€” Previously could hang indefinitely +- **`scrape_video_impl` missing from MCP server fallback import** โ€” Added to import block +- **Auto-generated YouTube captions not detected** โ€” Now checks `is_generated` property on transcripts +- **`--vision-ocr` and `--video-playlist` not forwarded** โ€” `create` command now passes these to video scraper +- **Filename collision for non-ASCII video titles** โ€” Falls back to `video_id` when title contains non-ASCII characters +- **`_vision_used` not a proper dataclass field** โ€” Made a proper field on `FrameSubSection` dataclass +- **6 visual params missing from MCP `scrape_video`** โ€” Exposed keyframe_threshold, max_keyframes, whisper_model, vision_ocr, video_playlist, video_file +- **Missing video dep install instructions in unified scraper** โ€” Added guidance when video dependencies are not installed +- **MCP docstring tool counts outdated** โ€” Updated from 25โ†’33 tools across 7 categories +- **Video and word commands missing from `main.py` docstring** โ€” Added to CLI help text +- **`video-full` exclusion from `[all]` deps undocumented** โ€” Added comment in pyproject.toml +- **Parser registry test count wrong** โ€” Updated expected count from 22โ†’23 for video parser + +#### Scraper & Quality Fixes +- **Issue #300: Selector fallback & dry-run link discovery** โ€” `create https://reactflow.dev/` now finds 20+ pages (was 1): + - `extract_content()` extracted links after early-return โ†’ moved before + - Dry-run used `main.find_all("a")` instead of `soup.find_all("a")` โ†’ fixed + - Async dry-run had no link extraction at all โ†’ added + - `get_configuration()` CSS comma selector conflicted with fallback loop โ†’ removed default + - `create --config` with `base_url` config incorrectly routed to unified_scraper โ†’ now peeks at JSON + - Selector fallback duplicated in 3 places with `body` fallback โ†’ extracted `FALLBACK_MAIN_SELECTORS` constant + `_find_main_content()` helper +- **Issue #301: `setup.sh` fails on macOS** โ€” `pip3` pointed to different Python than `python3`. Changed to `python3 -m pip`. +- **RAG chunking crash (`AttributeError: output_dir`)** โ€” `converter.output_dir` doesn't exist on `DocToSkillConverter`. Changed to `Path(converter.skill_dir)`. +- **`--var` flag silently dropped in `create` routing** โ€” `main.py` read `args.workflow_var` instead of `args.var` +- **`--chunk-overlap-tokens` missing from `package` command** โ€” Wired through entire pipeline: `package_skill()` โ†’ `adaptor.package()` โ†’ `format_skill_md()` โ†’ `_maybe_chunk_content()` โ†’ `RAGChunker` +- **Chunk overlap auto-scaling** โ€” Auto-scales to `max(50, chunk_tokens // 10)` when chunk size is non-default +- **Weaviate `ImportError` masked by generic handler** โ€” Added `except ImportError` before `except Exception` +- **Hardcoded chunk defaults in 12 adaptors** โ€” Replaced `512`/`50` with `DEFAULT_CHUNK_TOKENS`/`DEFAULT_CHUNK_OVERLAP_TOKENS` constants +- **Reference file code truncation** โ€” `codebase_scraper.py` no longer truncates code blocks to 500 chars (5 locations) +- **Enhancement code block limit** โ€” `summarize_reference()` now uses character-budget approach instead of `[:5]` cap +- **Intro boundary code block desync** โ€” Tracks code block state to prevent splitting inside code blocks +- **Hardcoded `python` language** โ€” `unified_skill_builder.py` and `how_to_guide_builder.py` now use detected language +- **GitHub reference file limits removed** โ€” No more caps on issues (was 20), releases (was 10), or release bodies (was 500 chars) +- **GitHub scraper reference limits removed** โ€” `github_scraper.py` no longer caps open_issues at 20 or closed_issues at 10 +- **PDF scraper fixes** โ€” Real API/LOCAL enhancement (was stub); removed `[:3]` reference file limit +- **Word scraper code detection** โ€” Detect mammoth monospace `


` blocks as code +- **Language detector method** โ€” Fixed `detect_from_text` โ†’ `detect_from_code` in word scraper +- **`.docx` file extension validation** โ€” Non-`.docx` files raise `ValueError` with clear message +- **Double `_score_code_quality()` call** โ€” Consolidated to single call in word scraper +- **`--no-preserve-code` renamed** โ€” Now `--no-preserve-code-blocks` (backward-compat alias kept) +- **Dead variable** โ€” Removed unused `_target_lines` in `enhance_skill_local.py` + +### Changed +- **`easyocr` removed from `video-full` optional deps** โ€” Was pulling ~2GB of NVIDIA CUDA packages regardless of GPU vendor. Now installed via `--setup` with correct PyTorch variant. +- **Video dependency error messages** โ€” `video_scraper.py` and `video_visual.py` now suggest `skill-seekers video --setup` as primary fix +- **Shared embedding methods consolidated** โ€” `_generate_openai_embeddings()` and `_generate_st_embeddings()` moved to `SkillAdaptor` base class, eliminating ~150 lines of duplication from chroma/weaviate/pinecone adaptors +- **Chunk constants centralized** โ€” `DEFAULT_CHUNK_TOKENS = 512` and `DEFAULT_CHUNK_OVERLAP_TOKENS = 50` in `arguments/common.py`, used across all 12 adaptors + rag_chunker + base + package_skill + create_command +- **Enhancement summarizer architecture** โ€” Character-budget approach with `target_ratio` for both code blocks and heading chunks + +## [3.1.3] - 2026-02-24 + +### ๐Ÿ› Hotfix โ€” Explicit Chunk Flags & Argument Pipeline Cleanup + +### Fixed +- **Issue #299: `skill-seekers package --target claude` unrecognised argument crash** โ€” `_reconstruct_argv()` in `main.py` emits default flag values back into argv when routing subcommands. `package_skill.py` had a 105-line inline argparser that used different flag names to those in `arguments/package.py`, so forwarded flags were rejected. Fixed by replacing the inline block with a call to `add_package_arguments(parser)` โ€” the single source of truth. + +### Changed +- **`package_skill.py` argparser refactored** โ€” Replaced ~105 lines of inline argparse duplication with a single `add_package_arguments(parser)` call. Flag names are now guaranteed consistent with `_reconstruct_argv()` output, preventing future argument-name drift. +- **Explicit chunk flag names** โ€” All `--chunk-*` flags now include unit suffixes to eliminate ambiguity between RAG tokens and streaming characters: + - `--chunk-size` (RAG tokens) โ†’ `--chunk-tokens` + - `--chunk-overlap` (RAG tokens) โ†’ `--chunk-overlap-tokens` + - `--chunk` (enable RAG chunking) โ†’ `--chunk-for-rag` + - `--streaming-chunk-size` (chars) โ†’ `--streaming-chunk-chars` + - `--streaming-overlap` (chars) โ†’ `--streaming-overlap-chars` + - `--chunk-size` in PDF extractor (pages) โ†’ `--pdf-pages-per-chunk` +- **`setup_logging()` centralized** โ€” Added `setup_logging(verbose, quiet)` to `utils.py` and removed 4 duplicate module-level `logging.basicConfig()` calls from `doc_scraper.py`, `github_scraper.py`, `codebase_scraper.py`, and `unified_scraper.py` + +## [3.1.2] - 2026-02-24 + +### ๐Ÿ”ง Fix `create` Command Argument Forwarding, Gemini Model, and Enhance Dispatcher + +### Fixed +- **`create` command argument forwarding** โ€” Universal flags (`--dry-run`, `--verbose`, `--quiet`, `--name`, `--description`) now work correctly across all source types. Previously, `create -p quick --dry-run`, `create owner/repo --dry-run`, and `create ./path --dry-run` would crash because sub-scrapers didn't accept those flags +- **`skill-seekers analyze --dry-run`** โ€” Fixed `_handle_analyze_command()` in `main.py` not forwarding `--dry-run`, `--preset`, `--quiet`, `--name`, `--description`, `--api-key`, and workflow flags to codebase_scraper +- **Gemini model 404 errors** โ€” Replaced retired `gemini-2.0-flash-exp` with `gemini-2.5-flash` (stable GA) in the Gemini adaptor. Users attempting Gemini enhancement were getting 404 Not Found errors +- **`skill-seekers enhance` auto-detection** โ€” The documented behaviour of auto-detecting API vs LOCAL mode was never implemented. `enhance` now correctly routes to the platform API when a key is present: `ANTHROPIC_API_KEY` โ†’ Claude API, `GOOGLE_API_KEY` โ†’ Gemini API, `OPENAI_API_KEY` โ†’ OpenAI API, no key โ†’ LOCAL mode (Claude Code Max, free). Use `--mode LOCAL` to force local mode regardless + +### Added +- **Shared argument contract** โ€” New `add_all_standard_arguments(parser)` in `arguments/common.py` registers common + behavior + workflow args on any parser as a single call +- **`BEHAVIOR_ARGUMENTS`** โ€” Centralized `--dry-run`, `--verbose`, `--quiet` definitions in `arguments/common.py` +- **`--dry-run` for GitHub scraper** โ€” `skill-seekers github --repo owner/repo --dry-run` now previews the operation +- **`--dry-run` for PDF scraper** โ€” `skill-seekers pdf --name test --dry-run` now previews the operation +- **`--verbose`/`--quiet` for GitHub and PDF scrapers** โ€” Logging level control now works consistently across all scrapers +- **`--name`/`--description` for codebase analyzer** โ€” Custom skill name and description can now be passed to `skill-seekers analyze` +- **`--mode LOCAL` flag for `skill-seekers enhance`** โ€” Explicitly forces LOCAL mode even when API keys are present + +### Changed +- **Argument deduplication** โ€” Removed duplicated argument definitions from `arguments/github.py`, `arguments/scrape.py`, `arguments/analyze.py`, `arguments/pdf.py`; all now import shared args from `arguments/common.py` +- **`create` command `_add_common_args()`** โ€” Only forwards truly universal flags; route-specific flags (`--preset`, `--config`, `--chunk-for-rag`, etc.) moved to their respective route methods +- **`codebase_scraper.py` argparser** โ€” Replaced ~190 lines of inline argparser with `add_analyze_arguments(parser)` call + +## [3.1.1] - 2026-02-23 + +### ๐Ÿ› Hotfix + +### Fixed +- **`create` command `max_pages` AttributeError** โ€” Fixed crash when `max_pages` argument was not provided in web source routing. Uses `getattr()` for safe attribute access (#293, #294) + +### Changed +- Version bump to 3.1.1 + +## [3.1.0] - 2026-02-23 + +### ๐ŸŽฏ "Unified CLI & Developer Experience" โ€” Feature Release + +**Theme:** One command for everything. Better developer tooling. 2280+ tests passing. + +### Added + +#### Unified `create` Command +- **Single command for all source types** โ€” auto-detects URL, GitHub repo (`owner/repo`), local directory, PDF file, or multi-source config JSON + ```bash + skill-seekers create https://docs.react.dev/ + skill-seekers create facebook/react + skill-seekers create ./my-project + skill-seekers create tutorial.pdf + ``` +- **Progressive help disclosure** โ€” default `--help` shows 13 universal flags; detailed help per source: + - `--help-web`, `--help-github`, `--help-local`, `--help-pdf`, `--help-advanced`, `--help-all` +- **`-p` shortcut** for preset selection: `skill-seekers create -p quick|standard|comprehensive` +- **`--local-repo-path`** flag for specifying local clone path in create command with validation +- Supports multi-source config files as input (routes to unified scraper) + +#### Enhancement Workflow Preset System +- **New `workflows` CLI subcommand** to manage enhancement workflow presets +- **65 bundled workflow presets** shipped as YAML files in `skill_seekers/workflows/`: + - Core: `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` + - Domain-specific: `rest-api-design`, `graphql-schema`, `grpc-services`, `websockets-realtime`, `event-driven`, `message-queues`, `stream-processing` + - Architecture: `microservices-patterns`, `serverless-architecture`, `kubernetes-deployment`, `devops-deployment`, `terraform-guide` + - Frontend: `responsive-design`, `component-library`, `forms-validation`, `design-system`, `pwa-checklist`, `ssr-guide`, `deep-linking`, `state-management` + - Quality: `testing-focus`, `testing-frontend`, `performance-optimization`, `observability-stack`, `troubleshooting-guide`, `accessibility-a11y` + - Data: `database-schema`, `data-validation`, `feature-engineering`, `vector-databases`, `mlops-pipeline`, `model-deployment`, `computer-vision` + - Security: `encryption-guide`, `iam-identity`, `secrets-management`, `compliance-gdpr`, `auth-strategies` + - Cloud: `aws-services`, `backup-disaster-recovery` + - Patterns: `advanced-patterns`, `api-evolution`, `migration-guide`, `contribution-guide`, `onboarding-beginner`, `comparison-matrix`, `sdk-integration`, `platform-specific`, `cli-tooling`, `build-tools` + - Mobile: `push-notifications`, `offline-first`, `localization-i18n` + - Background: `background-jobs`, `rate-limiting`, `caching-strategies`, `webhook-guide`, `api-gateway` +- User presets stored in `~/.config/skill-seekers/workflows/` +- Subcommands: + - `skill-seekers workflows list` โ€” List all bundled + user workflows with descriptions + - `skill-seekers workflows show ` โ€” Print YAML content of a workflow + - `skill-seekers workflows copy [name ...]` โ€” Copy bundled workflow(s) to user dir + - `skill-seekers workflows add [file ...]` โ€” Install custom YAML file(s) into user dir + - `skill-seekers workflows remove [name ...]` โ€” Delete user workflow(s) + - `skill-seekers workflows validate ` โ€” Parse and validate a workflow +- `copy`, `add`, `remove` all accept multiple names/files in one command (partial-failure: continues processing, returns non-zero if any item fails) +- New entry point: `skill-seekers-workflows` + +#### Multiple `--enhance-workflow` Flags from CLI +- Chain workflows in a single command: `skill-seekers create --enhance-workflow security-focus --enhance-workflow minimal` +- Supported across all scrapers: `scrape`, `github`, `analyze`, `pdf`, `unified` + +#### Smart Enhancement Dispatcher (`skill-seekers enhance`) +- Auto-routes to API mode (Claude/Gemini/OpenAI) when API key is available, LOCAL mode (Claude Code CLI) otherwise +- Decision priority: `--target` flag โ†’ config `default_agent` โ†’ env vars (`ANTHROPIC_API_KEY` โ†’ claude, `GOOGLE_API_KEY` โ†’ gemini, `OPENAI_API_KEY` โ†’ openai) โ†’ LOCAL fallback +- **Blocks LOCAL mode when running as root** (Docker/VPS) with clear error message + API mode instructions (fixes #286, #289) +- New flags: `--target`, `--api-key`, `--dry-run`, `--interactive-enhancement` + +#### Unified Document Parser System +- New `parsers/extractors.py` module with `RstParser`, `MarkdownParser` classes +- **ReStructuredText (RST) support** โ€” parses class references, code blocks, tables, cross-references +- Shared `parse_document()` factory function for RST/Markdown/PDF input +- Integrated into documentation extraction pipeline for richer content +- `ContentBlockType` and `CrossRefType` enums for structured parsing output + +#### Local Source Support in Unified Scraper +- `"type": "local"` source type in unified config JSONs โ€” analyze local codebases alongside web/GitHub/PDF sources +- `--local-repo-path` CLI flag in unified scraper for per-source path override + +#### CLI Flag Parity Across All Commands +- `analyze`, `pdf`, and `unified` commands now have full flag parity with `scrape`/`github`: + - `--api-key` on `pdf` and `unified` + - `--enhance-level` on `unified` + - `--dry-run` on `analyze` + - All workflow flags (`--enhance-workflow`, `--enhance-stage`, `--var`, `--workflow-dry-run`) on `analyze` +- Workflow JSON config fields (`workflows`, `workflow_stages`, `workflow_vars`) now merged with CLI flags in `unified` scraper + +### Fixed +- **Percent-encode brackets in llms.txt URLs** โ€” prevent "Invalid IPv6 URL" errors when scraping sites with bracket characters (fixes #284) +- **Platform-appropriate config paths on Windows** โ€” use `%APPDATA%` instead of `~/.config` (fixes #283) +- **`create` command multi-source config** โ€” now correctly routes to unified scraper when input is a `.json` config file +- **`create` command `_add_common_args()`** โ€” correctly forwards each `--enhance-workflow` value as a separate flag to sub-scrapers (previously collapsed list to single string, causing workflows to be ignored) +- **`_extract_markdown_content`** โ€” filter out bare `h1` headings and short stub paragraphs that polluted extracted content +- **Godot unified config language names** โ€” corrected `gdscript`/`gds` to proper names in `godot_unified.json` +- **Python 3.10 type union compatibility** โ€” use `Optional[X]` instead of `X | None` in forward-reference positions +- **`_route_config` in unified scraper** โ€” correctly handles all source types when routing config-driven scraping +- **CONFIG_ARGUMENTS** โ€” added to ensure unified CLI has full argument visibility for config-based sources +- **Test suite isolation** โ€” `test_swift_detection.py` now saves/restores `sys.modules` and parent package attributes; prevents `@patch` decorators in downstream files from targeting stale module objects +- **Python 3.14 chromadb compatibility** โ€” catch `pydantic.v1.errors.ConfigError` (not just `ImportError`) when chromadb is installed +- **langchain import path** โ€” updated `langchain.schema` โ†’ `langchain_core.documents` for langchain 1.x +- **Removed legacy `sys.path.insert()` calls** from `codebase_scraper.py`, `doc_scraper.py`, `enhance_skill.py`, `enhance_skill_local.py`, `estimate_pages.py`, `install_skill.py` (unnecessary with `pip install -e .`) +- **Benchmark timing threshold** โ€” relaxed metadata overhead assertion from 10% to 50% for CI runner variability + +### Changed +- **Enhancement flags consolidated** โ€” `--enhance-level` (0-3) replaces three separate flags (`--enhance`, `--enhance-local`, `--api-key`). Old flags still accepted with deprecation warnings until v4.0.0 +- **`workflows copy/add/remove`** now accept multiple names/files in one invocation +- **`pyproject.toml`** โ€” PyYAML added as core dependency (required by workflow preset management); langchain and llama-index added as dependencies; MCP version requirement updated to `>=1.25` + +### Tests +- **2280+ tests passing** (2158 non-MCP + ~122 MCP, up from 1852 in v3.0.0), 11 skipped (external services), 0 failures +- Added `TestAnalyzeWorkflowFlags`, `TestUnifiedCLIArguments`, `TestPDFCLIArguments` classes +- Added `tests/test_mcp_workflow_tools.py` โ€” 5 MCP workflow tool tests +- Added `tests/test_unified_scraper_orchestration.py` โ€” UnifiedScraper orchestration tests +- Removed `@unittest.skip` from gemini/openai/claude adaptor tests that were ready +- Removed `@requires_github` from 5 unified_analyzer tests that fully mock their dependencies +- Macros-specific tests now use `@patch(sys.platform)` instead of runtime `skipTest()` for platform portability + +### Config Repository (skill-seekers-configs) +- **178 production configs reviewed and enhanced** across all 22 categories โ€” brought to v1.1.0 quality standard +- **Removed all `max_pages` fields** from production configs (deprecated, defaults apply automatically) +- **Fixed outdated URLs**: `astro.json` (Astro v3 restructure: `/en/core-concepts/` โ†’ `/en/basics/`), `laravel.json` (11.x โ†’ 12.x throughout) +- **Fixed structural bug** in `httpx_comprehensive.json` โ€” `url_patterns`, `categories`, `rate_limit` moved from top-level into `sources[0]` (required for unified format) +- **Removed hash-fragment start_urls** from `zod.json` (scrapers don't follow `?id=` anchors) +- **Improved category/selector quality** across all 22 categories: 5-13 categories per config, 3-6 keywords each, semantic selector fallback chains +- **README.md**: corrected config count from outdated "50+" to accurate 178 production / 182 total; all category counts verified +- **CONTRIBUTING.md, QUALITY_GUIDELINES.md, AGENTS.md**: aligned with production standards; removed all `max_pages` guidance +- **`scripts/validate-config.py`**: fixed two bugs โ€” unified config categories lookup (was always reporting "no categories" for multi-source configs) and `max_pages` warning logic (was warning when absent, now correctly warns when present) +- **Deleted** `.github/ISSUE_TEMPLATE/submit-config.md` (old duplicate of `submit-config.yml` with outdated content) + +## [3.0.0] - 2026-02-10 + +### ๐Ÿš€ "Universal Intelligence Platform" - Major Release + +**Theme:** Transform any documentation into structured knowledge for any AI system. + +This is our biggest release ever! v3.0.0 establishes Skill Seekers as the **universal documentation preprocessor** for the entire AI ecosystem - from RAG pipelines to AI coding assistants to Claude skills. + +### Highlights + +- ๐Ÿš€ **16 platform adaptors** (up from 4 in v2.x) +- ๐Ÿ› ๏ธ **26 MCP tools** (up from 9) +- โœ… **1,852 tests** passing (up from 700+) +- โ˜๏ธ **Cloud storage** support (S3, GCS, Azure) +- ๐Ÿ”„ **CI/CD ready** (GitHub Action + Docker) +- ๐Ÿ“ฆ **12 example projects** for every integration +- ๐Ÿ“š **18 integration guides** complete + +### Added - Platform Adaptors (16 Total) + +#### RAG & Vector Databases (8) +- **LangChain** (`--format langchain`) - Output LangChain Document objects +- **LlamaIndex** (`--format llama-index`) - Output LlamaIndex TextNode objects +- **Chroma** (`--format chroma`) - Direct ChromaDB integration +- **FAISS** (`--format faiss`) - Facebook AI Similarity Search +- **Haystack** (`--format haystack`) - Deepset Haystack pipelines +- **Qdrant** (`--format qdrant`) - Qdrant vector database +- **Weaviate** (`--format weaviate`) - Weaviate vector search +- **Pinecone-ready** (`--target markdown`) - Markdown format ready for Pinecone + +#### AI Platforms (3) +- **Claude** (`--target claude`) - Claude AI skills (ZIP + YAML) +- **Gemini** (`--target gemini`) - Google Gemini skills (tar.gz) +- **OpenAI** (`--target openai`) - OpenAI ChatGPT (ZIP + Vector Store) + +#### AI Coding Assistants (4) +- **Cursor** (`--target claude` + `.cursorrules`) - Cursor IDE integration +- **Windsurf** (`--target claude` + `.windsurfrules`) - Windsurf/Codeium +- **Cline** (`--target claude` + `.clinerules`) - VS Code extension +- **Continue.dev** (`--target claude`) - Universal IDE support + +#### Generic (1) +- **Markdown** (`--target markdown`) - Generic ZIP export + +### Added - MCP Tools (26 Total) + +#### Config Tools (3) +- `generate_config` - Generate scraping configuration +- `list_configs` - List available preset configs +- `validate_config` - Validate config JSON structure + +#### Scraping Tools (8) +- `estimate_pages` - Estimate page count before scraping +- `scrape_docs` - Scrape documentation websites +- `scrape_github` - Scrape GitHub repositories +- `scrape_pdf` - Extract from PDF files +- `scrape_codebase` - Analyze local codebases +- `detect_patterns` - Detect design patterns in code +- `extract_test_examples` - Extract usage examples from tests +- `build_how_to_guides` - Build how-to guides from code + +#### Packaging Tools (4) +- `package_skill` - Package skill for target platform +- `upload_skill` - Upload to LLM platform +- `enhance_skill` - AI-powered enhancement +- `install_skill` - One-command complete workflow + +#### Source Tools (5) +- `fetch_config` - Fetch config from remote source +- `submit_config` - Submit config for approval +- `add_config_source` - Add Git config source +- `list_config_sources` - List config sources +- `remove_config_source` - Remove config source + +#### Splitting Tools (2) +- `split_config` - Split large configs +- `generate_router` - Generate router skills + +#### Vector DB Tools (4) +- `export_to_weaviate` - Export to Weaviate +- `export_to_chroma` - Export to ChromaDB +- `export_to_faiss` - Export to FAISS +- `export_to_qdrant` - Export to Qdrant + +### Added - Cloud Storage + +Upload skills directly to cloud storage: + +- **AWS S3** - `skill-seekers cloud upload --provider s3 --bucket my-bucket` +- **Google Cloud Storage** - `skill-seekers cloud upload --provider gcs --bucket my-bucket` +- **Azure Blob Storage** - `skill-seekers cloud upload --provider azure --container my-container` + +Features: +- Upload/download directories +- List files with metadata +- Check file existence +- Generate presigned URLs +- Cloud-agnostic interface + +### Added - CI/CD Support + +#### GitHub Action +```yaml +- uses: skill-seekers/action@v1 + with: + config: configs/react.json + format: langchain +``` + +Features: +- Auto-update on doc changes +- Matrix builds for multiple frameworks +- Scheduled updates +- Caching for faster runs + +#### Docker +```bash +docker run -v $(pwd):/data skill-seekers:latest scrape --config /data/config.json +``` + +### Added - Production Infrastructure + +- **Helm Charts** - Kubernetes deployment +- **Docker Compose** - Local vector DB stack +- **Monitoring** - Sentry integration, sync monitoring +- **Benchmarking** - Performance testing framework + +### Added - 12 Example Projects + +Complete working examples for every integration: + +1. **langchain-rag-pipeline** - React docs โ†’ LangChain โ†’ Chroma +2. **llama-index-query-engine** - Vue docs โ†’ LlamaIndex +3. **pinecone-upsert** - Documentation โ†’ Pinecone +4. **chroma-example** - Full ChromaDB workflow +5. **faiss-example** - FAISS index building +6. **haystack-pipeline** - Haystack RAG pipeline +7. **qdrant-example** - Qdrant vector DB +8. **weaviate-example** - Weaviate integration +9. **cursor-react-skill** - React skill for Cursor +10. **windsurf-fastapi-context** - FastAPI for Windsurf +11. **cline-django-assistant** - Django assistant for Cline +12. **continue-dev-universal** - Universal IDE context + +### Quality Metrics + +- โœ… **1,852 tests** across 100 test files +- โœ… **58,512 lines** of Python code +- โœ… **80+ documentation** files +- โœ… **100% test coverage** for critical paths +- โœ… **CI/CD** on every commit + +### Fixed + +#### URL Conversion Bug with Anchor Fragments (Issue #277) +- **Critical Bug Fix**: Fixed 404 errors when scraping documentation with anchor links + - **Problem**: URLs with anchor fragments (e.g., `#synchronous-initialization`) were malformed + - Incorrect: `https://example.com/docs/api#method/index.html.md` โŒ + - Correct: `https://example.com/docs/api/index.html.md` โœ… + - **Root Cause**: `_convert_to_md_urls()` didn't strip anchor fragments before appending `/index.html.md` + - **Solution**: Parse URLs with `urllib.parse` to remove fragments and deduplicate base URLs + - **Impact**: Prevents duplicate requests for the same page with different anchors + - **Additional Fix**: Changed `.md` detection from `".md" in url` to `url.endswith('.md')` + - Prevents false matches on URLs like `/cmd-line` or `/AMD-processors` +- **Test Coverage**: 12 comprehensive tests covering all edge cases + - Anchor fragment stripping + - Deduplication of multiple anchors on same URL + - Query parameter preservation + - Trailing slash handling + - Real-world MikroORM case validation + - 54/54 tests passing (42 existing + 12 new) +- **Reported by**: @devjones via Issue #277 + +### Added + +#### Extended Language Detection (NEW) +- **7 New Programming Languages**: Dart, Scala, SCSS, SASS, Elixir, Lua, Perl + - Pattern-based detection with confidence scoring (0.6-0.8+ thresholds) + - **70 regex patterns** prioritizing unique identifiers (weight 5) + - Framework-specific patterns: + - **Dart**: Flutter widgets (`StatelessWidget`, `StatefulWidget`, `Widget build()`) + - **Scala**: Pattern matching (`case class`, `trait`, `match {}`) + - **SCSS**: Preprocessor features (`$variables`, `@mixin`, `@include`, `@extend`) + - **SASS**: Indented syntax (`=mixin`, `+include`, `$variables`) + - **Elixir**: Functional patterns (`defmodule`, `def ... do`, pipe operator `|>`) + - **Lua**: Game scripting (`local`, `repeat...until`, `~=`, `elseif`) + - **Perl**: Text processing (`my $`, `use strict`, `sub`, `chomp`, regex `=~`) + - **Comprehensive test coverage**: 7 new tests, 30/30 passing (100%) + - **False positive prevention**: Unique identifiers (weight 5) + confidence thresholds + - **No regressions**: All existing language detection tests still pass + - **Total language support**: Now 27+ programming languages + - **Credit**: Contributed by @PaawanBarach via PR #275 + +#### Multi-Agent Support for Local Enhancement (NEW) +- **Multiple Coding Agent Support**: Choose your preferred local coding agent for SKILL.md enhancement + - **Claude Code** (default): Claude Code CLI with `--dangerously-skip-permissions` + - **Codex CLI**: OpenAI Codex CLI with `--full-auto` and `--skip-git-repo-check` + - **Copilot CLI**: GitHub Copilot CLI (`gh copilot chat`) + - **OpenCode CLI**: OpenCode CLI + - **Custom agents**: Use any CLI tool with `--agent custom --agent-cmd "command {prompt_file}"` +- **CLI Arguments**: New flags for agent selection + - `--agent`: Choose agent (claude, codex, copilot, opencode, custom) + - `--agent-cmd`: Override command template for custom agents +- **Environment Variables**: CI/CD friendly configuration + - `SKILL_SEEKER_AGENT`: Default agent to use + - `SKILL_SEEKER_AGENT_CMD`: Default command template for custom agents +- **Security First**: Custom command validation + - Blocks dangerous shell characters (`;`, `&`, `|`, `$`, `` ` ``, `\n`, `\r`) + - Validates executable exists in PATH + - Safe parsing with `shlex.split()` +- **Dual Input Modes**: Supports both file-based and stdin-based agents + - File-based: Uses `{prompt_file}` placeholder (Claude, custom agents) + - Stdin-based: Pipes prompt via stdin (Codex CLI) +- **Backward Compatible**: Claude Code remains the default, no breaking changes +- **Comprehensive Tests**: 13 new tests covering all agent types and security validation +- **Agent Normalization**: Smart alias handling (e.g., "claude-code" โ†’ "claude") +- **Credit**: Contributed by @rovo79 (Robert Dean) via PR #270 + +#### C3.10: Signal Flow Analysis for Godot Projects (NEW) +- **Complete Signal Flow Analysis System**: Analyze event-driven architectures in Godot game projects + - Signal declaration extraction (`signal` keyword detection) + - Connection mapping (`.connect()` calls with targets and methods) + - Emission tracking (`.emit()` and `emit_signal()` calls) + - **208 signals**, **634 connections**, and **298 emissions** detected in test project (Cosmic Idler) + - Signal density metrics (signals per file) + - Event chain detection (signals triggering other signals) + - Output: `signal_flow.json`, `signal_flow.mmd` (Mermaid diagram), `signal_reference.md` + +- **Signal Pattern Detection**: Three major patterns identified + - **EventBus Pattern** (0.90 confidence): Centralized signal hub in autoload + - **Observer Pattern** (0.85 confidence): Multi-observer signals (3+ listeners) + - **Event Chains** (0.80 confidence): Cascading signal propagation + +- **Signal-Based How-To Guides (C3.10.1)**: AI-generated usage guides + - Step-by-step guides (Connect โ†’ Emit โ†’ Handle) + - Real code examples from project + - Common usage locations + - Parameter documentation + - Output: `signal_how_to_guides.md` (10 guides for Cosmic Idler) + +#### Godot Game Engine Support +- **Comprehensive Godot File Type Support**: Full analysis of Godot 4.x projects + - **GDScript (.gd)**: 265 files analyzed in test project + - **Scene files (.tscn)**: 118 scene files + - **Resource files (.tres)**: 38 resource files + - **Shader files (.gdshader, .gdshaderinc)**: 9 shader files + - **C# integration**: Phantom Camera addon (13 files) + +- **GDScript Language Support**: Complete GDScript parsing with regex-based extraction + - Dependency extraction: `preload()`, `load()`, `extends` patterns + - Test framework detection: GUT, gdUnit4, WAT + - Test file patterns: `test_*.gd`, `*_test.gd` + - Signal syntax: `signal`, `.connect()`, `.emit()` + - Export decorators: `@export`, `@onready` + - Test decorators: `@test` (gdUnit4) + +- **Game Engine Framework Detection**: Improved detection for Unity, Unreal, Godot + - **Godot markers**: `project.godot`, `.godot` directory, `.tscn`, `.tres`, `.gd` files + - **Unity markers**: `Assembly-CSharp.csproj`, `UnityEngine.dll`, `ProjectSettings/ProjectVersion.txt` + - **Unreal markers**: `.uproject`, `Source/`, `Config/DefaultEngine.ini` + - Fixed false positive Unity detection (was using generic "Assets" keyword) + +- **GDScript Test Extraction**: Extract usage examples from Godot test files + - **396 test cases** extracted from 20 GUT test files in test project + - Patterns: instantiation (`preload().new()`, `load().new()`), assertions (`assert_eq`, `assert_true`), signals + - GUT framework: `extends GutTest`, `func test_*()`, `add_child_autofree()` + - Test categories: instantiation, assertions, signal connections, setup/teardown + - Real code examples from production test files + +#### C3.9: Project Documentation Extraction +- **Markdown Documentation Extraction**: Automatically extracts and categorizes all `.md` files from projects + - Smart categorization by folder/filename (overview, architecture, guides, workflows, features, etc.) + - Processing depth control: `surface` (raw copy), `deep` (parse+summarize), `full` (AI-enhanced) + - AI enhancement (level 2+) adds topic extraction and cross-references + - New "๐Ÿ“– Project Documentation" section in SKILL.md + - Output to `references/documentation/` organized by category + - Default ON, use `--skip-docs` to disable + - 15 new tests for documentation extraction features + +#### Granular AI Enhancement Control +- **`--enhance-level` Flag**: Fine-grained control over AI enhancement (0-3) + - Level 0: No AI enhancement (default) + - Level 1: SKILL.md enhancement only (fast, high value) + - Level 2: SKILL.md + Architecture + Config + Documentation + - Level 3: Full enhancement (patterns, tests, config, architecture, docs) +- **Config Integration**: `default_enhance_level` setting in `~/.config/skill-seekers/config.json` +- **MCP Support**: All MCP tools updated with `enhance_level` parameter +- **Independent from `--comprehensive`**: Enhancement level is separate from feature depth + +#### C# Language Support +- **C# Test Example Extraction**: Full support for C# test frameworks + - Language alias mapping (C# โ†’ csharp, C++ โ†’ cpp) + - NUnit, xUnit, MSTest test framework patterns + - Mock pattern support (NSubstitute, Moq) + - Zenject dependency injection patterns + - Setup/teardown method extraction + - 2 new tests for C# extraction features + +#### Performance Optimizations +- **Parallel LOCAL Mode AI Enhancement**: 6-12x faster with ThreadPoolExecutor + - Concurrent workers: 3 (configurable via `local_parallel_workers`) + - Batch processing: 20 patterns per Claude CLI call (configurable via `local_batch_size`) + - Significant speedup for large codebases +- **Config Settings**: New `ai_enhancement` section in config + - `local_batch_size`: Patterns per CLI call (default: 20) + - `local_parallel_workers`: Concurrent workers (default: 3) + +#### UX Improvements +- **Auto-Enhancement**: SKILL.md automatically enhanced when using `--enhance` or `--comprehensive` + - No need for separate `skill-seekers enhance` command + - Seamless one-command workflow + - 10-minute timeout for large codebases + - Graceful fallback with retry instructions on failure +- **LOCAL Mode Fallback**: All AI enhancements now fall back to LOCAL mode when no API key is set + - Applies to: pattern enhancement (C3.1), test examples (C3.2), architecture (C3.7) + - Uses Claude Code CLI instead of failing silently + - Better UX: "Using LOCAL mode (Claude Code CLI)" instead of "AI disabled" + +- Support for custom Claude-compatible API endpoints via `ANTHROPIC_BASE_URL` environment variable +- Compatibility with GLM-4.7 and other Claude-compatible APIs across all AI enhancement features + +### Changed +- All AI enhancement modules now respect `ANTHROPIC_BASE_URL` for custom endpoints +- Updated documentation with GLM-4.7 configuration examples +- Rewritten LOCAL mode in `config_enhancer.py` to use Claude CLI properly with explicit output file paths +- Updated MCP `scrape_codebase_tool` with `skip_docs` and `enhance_level` parameters +- Updated CLAUDE.md with C3.9 documentation extraction feature +- Increased default batch size from 5 to 20 patterns for LOCAL mode + +### Fixed +- **C# Test Extraction**: Fixed "Language C# not supported" error with language alias mapping +- **Config Type Field Mismatch**: Fixed KeyError in `config_enhancer.py` by supporting both "type" and "config_type" fields +- **LocalSkillEnhancer Import**: Fixed incorrect import and method call in `main.py` (SkillEnhancer โ†’ LocalSkillEnhancer) +- **Code Quality**: Fixed 4 critical linter errors (unused imports, variables, arguments, import sorting) + +#### Godot Game Engine Fixes +- **GDScript Dependency Extraction**: Fixed 265+ "Syntax error in *.gd" warnings (commit 3e6c448) + - GDScript files were incorrectly routed to Python AST parser + - Created dedicated `_extract_gdscript_imports()` with regex patterns + - Now correctly parses `preload()`, `load()`, `extends` patterns + - Result: 377 dependencies extracted with 0 warnings + +- **Framework Detection False Positive**: Fixed Unity detection on Godot projects (commit 50b28fe) + - Was detecting "Unity" due to generic "Assets" keyword in comments + - Changed Unity markers to specific files: `Assembly-CSharp.csproj`, `UnityEngine.dll`, `Library/` + - Now correctly detects Godot via `project.godot`, `.godot` directory + +- **Circular Dependencies**: Fixed self-referential cycles (commit 50b28fe) + - 3 self-loop warnings (files depending on themselves) + - Added `target != file_path` check in dependency graph builder + - Result: 0 circular dependencies detected + +- **GDScript Test Discovery**: Fixed 0 test files found in Godot projects (commit 50b28fe) + - Added GDScript test patterns: `test_*.gd`, `*_test.gd` + - Added GDScript to LANGUAGE_MAP + - Result: 32 test files discovered (20 GUT files with 396 tests) + +- **GDScript Test Extraction**: Fixed "Language GDScript not supported" warning (commit c826690) + - Added GDScript regex patterns to PATTERNS dictionary + - Patterns: instantiation (`preload().new()`), assertions (`assert_eq`), signals (`.connect()`) + - Result: 22 test examples extracted successfully + +- **Config Extractor Array Handling**: Fixed JSON/YAML array parsing (commit fca0951) + - Error: `'list' object has no attribute 'items'` on root-level arrays + - Added isinstance checks for dict/list/primitive at root + - Result: No JSON array errors, save.json parsed correctly + +- **Progress Indicators**: Fixed missing progress for small batches (commit eec37f5) + - Progress only shown every 5 batches, invisible for small jobs + - Modified condition to always show for batches < 10 + - Result: "Progress: 1/2 batches completed" now visible + +#### Other Fixes +- **C# Test Extraction**: Fixed "Language C# not supported" error with language alias mapping +- **Config Type Field Mismatch**: Fixed KeyError in `config_enhancer.py` by supporting both "type" and "config_type" fields +- **LocalSkillEnhancer Import**: Fixed incorrect import and method call in `main.py` (SkillEnhancer โ†’ LocalSkillEnhancer) +- **Code Quality**: Fixed 4 critical linter errors (unused imports, variables, arguments, import sorting) + +### Tests +- **GDScript Test Extraction Test**: Added comprehensive test case for GDScript GUT/gdUnit4 framework + - Tests player instantiation with `preload()` and `load()` + - Tests signal connections and emissions + - Tests gdUnit4 `@test` annotation syntax + - Tests game state management patterns + - 4 test functions with 60+ lines of GDScript code + - Validates extraction of instantiations, assertions, and signal patterns + +### Removed +- Removed client-specific documentation files from repository + +--- + +## [2.7.4] - 2026-01-22 + +### ๐Ÿ”ง Bug Fix - Language Selector Links + +This **patch release** fixes the broken Chinese language selector link that appeared on PyPI and other non-GitHub platforms. + +### Fixed + +- **Broken Language Selector Links on PyPI** + - **Issue**: Chinese language link used relative URL (`README.zh-CN.md`) which only worked on GitHub + - **Impact**: Users on PyPI clicking "็ฎ€ไฝ“ไธญๆ–‡" got 404 errors + - **Solution**: Changed to absolute GitHub URL (`https://github.com/yusufkaraaslan/Skill_Seekers/blob/main/README.zh-CN.md`) + - **Result**: Language selector now works on PyPI, GitHub, and all platforms + - **Files Fixed**: `README.md`, `README.zh-CN.md` + +### Technical Details + +**Why This Happened:** +- PyPI displays `README.md` but doesn't include `README.zh-CN.md` in the package +- Relative links break when README is rendered outside GitHub repository context +- Absolute GitHub URLs work universally across all platforms + +**Impact:** +- โœ… Chinese language link now accessible from PyPI +- โœ… Consistent experience across all platforms +- โœ… Better user experience for Chinese developers + +--- + +## [2.7.3] - 2026-01-21 + +### ๐ŸŒ International i18n Release + +This **documentation release** adds comprehensive Chinese language support, making Skill Seekers accessible to the world's largest developer community. + +### Added + +- **๐Ÿ‡จ๐Ÿ‡ณ Chinese (Simplified) README Translation** (#260) + - Complete 1,962-line translation of all documentation (README.zh-CN.md) + - Language selector badges in both English and Chinese READMEs + - Machine translation disclaimer with invitation for community improvements + - GitHub issue #260 created for community review and contributions + - Impact: Makes Skill Seekers accessible to 1+ billion Chinese speakers + +- **๐Ÿ“ฆ PyPI Metadata Internationalization** + - Updated package description to highlight Chinese documentation availability + - Added i18n-related keywords: "i18n", "chinese", "international" + - Added Natural Language classifiers: English and Chinese (Simplified) + - Added direct link to Chinese README in project URLs + - Impact: Better discoverability on PyPI for Chinese developers + +### Why This Matters + +- **Market Reach**: Addresses existing Chinese traffic and taps into world's largest developer community +- **Discoverability**: Better indexing on Chinese search engines (Baidu, Gitee, etc.) +- **User Experience**: Native language documentation lowers barrier to entry +- **Community Growth**: Opens contribution opportunities from Chinese developers +- **Competitive Edge**: Most similar tools don't offer Chinese documentation + +### Community Engagement + +Chinese developers are invited to improve the translation quality: +- Review issue: https://github.com/yusufkaraaslan/Skill_Seekers/issues/260 +- Translation guidelines provided for technical accuracy and natural expression +- All contributions welcome and appreciated + +--- + +## [2.7.2] - 2026-01-21 + +### ๐Ÿšจ Critical CLI Bug Fixes + +This **hotfix release** resolves 4 critical CLI bugs reported in issues #258 and #259 that prevented core commands from working correctly. + +### Fixed + +- **Issue #258: `install --config` command fails with unified scraper** (#258) + - **Root Cause**: `unified_scraper.py` missing `--fresh` and `--dry-run` argument definitions + - **Solution**: Added both flags to unified_scraper argument parser and main.py dispatcher + - **Impact**: `skill-seekers install --config react` now works without "unrecognized arguments" error + - **Files Fixed**: `src/skill_seekers/cli/unified_scraper.py`, `src/skill_seekers/cli/main.py` + +- **Issue #259 (Original): `scrape` command doesn't accept URL and --max-pages** (#259) + - **Root Cause**: No positional URL argument or `--max-pages` flag support + - **Solution**: Added positional URL argument and `--max-pages` flag with safety warnings + - **Impact**: `skill-seekers scrape https://example.com --max-pages 50` now works + - **Safety Warnings**: + - โš ๏ธ Warning if max-pages > 1000 (may take hours) + - โš ๏ธ Warning if max-pages < 10 (incomplete skill) + - **Files Fixed**: `src/skill_seekers/cli/doc_scraper.py`, `src/skill_seekers/cli/main.py` + +- **Issue #259 (Comment A): Version shows 2.7.0 instead of actual version** (#259) + - **Root Cause**: Hardcoded version string in main.py + - **Solution**: Import `__version__` from `__init__.py` dynamically + - **Impact**: `skill-seekers --version` now shows correct version (2.7.2) + - **Files Fixed**: `src/skill_seekers/cli/main.py` + +- **Issue #259 (Comment B): PDF command shows empty "Error: " message** (#259) + - **Root Cause**: Exception handler didn't handle empty exception messages + - **Solution**: + - Improved exception handler to show exception type if message is empty + - Added proper error handling with context-specific messages + - Added traceback support in verbose mode + - **Impact**: PDF errors now show clear messages like "Error: RuntimeError occurred" instead of just "Error: " + - **Files Fixed**: `src/skill_seekers/cli/main.py`, `src/skill_seekers/cli/pdf_scraper.py` + +### Testing + +- โœ… Verified `skill-seekers install --config react --dry-run` works +- โœ… Verified `skill-seekers scrape https://tailwindcss.com/docs/installation --max-pages 50` works +- โœ… Verified `skill-seekers --version` shows "2.7.2" +- โœ… Verified PDF errors show proper messages +- โœ… All 202 tests passing + +--- + +## [2.7.1] - 2026-01-18 + +### ๐Ÿšจ Critical Bug Fix - Config Download 404 Errors + +This **hotfix release** resolves a critical bug causing 404 errors when downloading configs from the API. + +### Fixed + +- **Critical: Config download 404 errors** - Fixed bug where code was constructing download URLs manually instead of using the `download_url` field from the API response + - **Root Cause**: Code was building `f"{API_BASE_URL}/api/download/{config_name}.json"` which failed when actual URLs differed (CDN URLs, version-specific paths) + - **Solution**: Changed to use `config_info.get("download_url")` from API response in both MCP server implementations + - **Files Fixed**: + - `src/skill_seekers/mcp/tools/source_tools.py` (FastMCP server) + - `src/skill_seekers/mcp/server_legacy.py` (Legacy server) + - **Impact**: Fixes all config downloads from skillseekersweb.com API and private Git repositories + - **Reported By**: User testing `skill-seekers install --config godot --unlimited` + - **Testing**: All 15 source tools tests pass, all 8 fetch_config tests pass + +--- + +## [2.7.0] - 2026-01-18 + +### ๐Ÿ” Smart Rate Limit Management & Multi-Token Configuration + +This **minor feature release** introduces intelligent GitHub rate limit handling, multi-profile token management, and comprehensive configuration system. Say goodbye to indefinite waits and confusing token setup! + +### Added + +- **๐ŸŽฏ Multi-Token Configuration System** - Flexible GitHub token management with profiles + - **Secure config storage** at `~/.config/skill-seekers/config.json` with 600 permissions + - **Multiple GitHub profiles** support (personal, work, OSS, etc.) + - Per-profile rate limit strategies: `prompt`, `wait`, `switch`, `fail` + - Configurable timeout per profile (default: 30 minutes) + - Auto-detection and smart fallback chain + - Profile switching when rate limited + - **API key management** for Claude, Gemini, OpenAI + - Environment variable fallback (ANTHROPIC_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY) + - Config file storage with secure permissions + - **Progress tracking** for resumable jobs + - Auto-save at configurable intervals (default: 60 seconds) + - Job metadata: command, progress, checkpoints, timestamps + - Stored at `~/.local/share/skill-seekers/progress/` + - **Auto-cleanup** of old progress files (default: 7 days, configurable) + - **First-run experience** with welcome message and quick setup + - **ConfigManager class** with singleton pattern for global access + +- **๐Ÿง™ Interactive Configuration Wizard** - Beautiful terminal UI for easy setup + - **Main menu** with 7 options: + 1. GitHub Token Setup + 2. API Keys (Claude, Gemini, OpenAI) + 3. Rate Limit Settings + 4. Resume Settings + 5. View Current Configuration + 6. Test Connections + 7. Clean Up Old Progress Files + - **GitHub token management**: + - Add/remove profiles with descriptions + - Set default profile + - Browser integration - opens GitHub token creation page + - Token validation with format checking (ghp_*, github_pat_*) + - Strategy selection per profile + - **API keys setup** with browser integration for each provider + - **Connection testing** to verify tokens and API keys + - **Configuration display** with current status and sources + - **CLI commands**: + - `skill-seekers config` - Main menu + - `skill-seekers config --github` - Direct to GitHub setup + - `skill-seekers config --api-keys` - Direct to API keys + - `skill-seekers config --show` - Show current config + - `skill-seekers config --test` - Test connections + +- **๐Ÿšฆ Smart Rate Limit Handler** - Intelligent GitHub API rate limit management + - **Upfront warning** about token status (60/hour vs 5000/hour) + - **Real-time detection** of rate limits from GitHub API responses + - Parses X-RateLimit-* headers + - Detects 403 rate limit errors + - Calculates reset time from timestamps + - **Live countdown timers** with progress display + - **Automatic profile switching** - tries next available profile when rate limited + - **Four rate limit strategies**: + - `prompt` - Ask user what to do (default, interactive) + - `wait` - Auto-wait with countdown timer + - `switch` - Automatically try another profile + - `fail` - Fail immediately with clear error + - **Non-interactive mode** for CI/CD (fail fast, no prompts) + - **Configurable timeouts** per profile (prevents indefinite waits) + - **RateLimitHandler class** with strategy pattern + - **Integration points**: GitHub fetcher, GitHub scraper + +- **๐Ÿ“ฆ Resume Command** - Resume interrupted scraping jobs + - **List resumable jobs** with progress details: + - Job ID, started time, command + - Current phase and file counts + - Last updated timestamp + - **Resume from checkpoints** (skeleton implemented, ready for integration) + - **Auto-cleanup** of old jobs (respects config settings) + - **CLI commands**: + - `skill-seekers resume --list` - List all resumable jobs + - `skill-seekers resume ` - Resume specific job + - `skill-seekers resume --clean` - Clean up old jobs + - **Progress storage** at `~/.local/share/skill-seekers/progress/.json` + +- **โš™๏ธ CLI Enhancements** - New flags and improved UX + - **--non-interactive flag** for CI/CD mode + - Available on: `skill-seekers github` + - Fails fast on rate limits instead of prompting + - Perfect for automated pipelines + - **--profile flag** to select specific GitHub profile + - Available on: `skill-seekers github` + - Uses configured profile from `~/.config/skill-seekers/config.json` + - Overrides environment variables and defaults + - **Entry points** for new commands: + - `skill-seekers-config` - Direct config command access + - `skill-seekers-resume` - Direct resume command access + +- **๐Ÿงช Comprehensive Test Suite** - Full test coverage for new features + - **16 new tests** in `test_rate_limit_handler.py` + - **Test coverage**: + - Header creation (with/without token) + - Handler initialization (token, strategy, config) + - Rate limit detection and extraction + - Upfront checks (interactive and non-interactive) + - Response checking (200, 403, rate limit) + - Strategy handling (fail, wait, switch, prompt) + - Config manager integration + - Profile management (add, retrieve, switch) + - **All tests passing** โœ… (16/16) + - **Test utilities**: Mock responses, config isolation, tmp directories + +- **๐ŸŽฏ Bootstrap Skill Feature** - Self-hosting capability (PR #249) + - **Self-Bootstrap**: Generate skill-seekers as a Claude Code skill + - `./scripts/bootstrap_skill.sh` - One-command bootstrap + - Combines manual header with auto-generated codebase analysis + - Output: `output/skill-seekers/` ready for Claude Code + - Install: `cp -r output/skill-seekers ~/.claude/skills/` + - **Robust Frontmatter Detection**: + - Dynamic YAML frontmatter boundary detection (not hardcoded line counts) + - Fallback to line 6 if frontmatter not found + - Future-proof against frontmatter field additions + - **SKILL.md Validation**: + - File existence and non-empty checks + - Frontmatter delimiter presence + - Required fields validation (name, description) + - Exit with clear error messages on validation failures + - **Comprehensive Error Handling**: + - UV dependency check with install instructions + - Permission checks for output directory + - Graceful degradation on missing header file + +- **๐Ÿ”ง MCP Now Optional** - User choice for installation profile + - **CLI Only**: `pip install skill-seekers` - No MCP dependencies + - **MCP Integration**: `pip install skill-seekers[mcp]` - Full MCP support + - **All Features**: `pip install skill-seekers[all]` - Everything enabled + - **Lazy Loading**: Graceful failure with helpful error messages when MCP not installed + - **Interactive Setup Wizard**: + - Shows all installation options on first run + - Stored at `~/.config/skill-seekers/.setup_shown` + - Accessible via `skill-seekers-setup` command + - **Entry Point**: `skill-seekers-setup` for manual access + +- **๐Ÿงช E2E Testing for Bootstrap** - Comprehensive end-to-end tests + - **6 core tests** verifying bootstrap workflow: + - Output structure creation + - Header prepending + - YAML frontmatter validation + - Line count sanity checks + - Virtual environment installability + - Platform adaptor compatibility + - **Pytest markers**: @pytest.mark.e2e, @pytest.mark.venv, @pytest.mark.slow + - **Execution modes**: + - Fast tests: `pytest -k "not venv"` (~2-3 min) + - Full suite: `pytest -m "e2e"` (~5-10 min) + - **Test utilities**: Fixtures for project root, bootstrap runner, output directory + +- **๐Ÿ“š Comprehensive Documentation Overhaul** - Complete v2.7.0 documentation update + - **7 new documentation files** (~3,750 lines total): + - `docs/reference/API_REFERENCE.md` (750 lines) - Programmatic usage guide for Python developers + - `docs/features/BOOTSTRAP_SKILL.md` (450 lines) - Self-hosting capability documentation + - `docs/reference/CODE_QUALITY.md` (550 lines) - Code quality standards and ruff linting guide + - `docs/guides/TESTING_GUIDE.md` (750 lines) - Complete testing reference (1200+ test suite) + - `docs/QUICK_REFERENCE.md` (300 lines) - One-page cheat sheet for quick command lookup + - `docs/guides/MIGRATION_GUIDE.md` (400 lines) - Version upgrade guides (v1.0.0 โ†’ v2.7.0) + - `docs/FAQ.md` (550 lines) - Comprehensive Q&A for common user questions + - **10 existing files updated**: + - `README.md` - Updated test count badge (700+ โ†’ 1200+ tests), v2.7.0 callout + - `ROADMAP.md` - Added v2.7.0 completion section with task statuses + - `CONTRIBUTING.md` - Added link to CODE_QUALITY.md reference + - `docs/README.md` - Quick links by use case, recent updates section + - `docs/guides/MCP_SETUP.md` - Fixed server_fastmcp references (PR #252) + - `docs/QUICK_REFERENCE.md` - Updated MCP server reference (server.py โ†’ server_fastmcp.py) + - `CLAUDE_INTEGRATION.md` - Updated version references + - 3 other documentation files with v2.7.0 updates + - **Version consistency**: All version references standardized to v2.7.0 + - **Test counts**: Standardized to 1200+ tests (was inconsistent 700+ in some docs) + - **MCP tool counts**: Updated to 18 tools (from 17) + +- **๐Ÿ“ฆ Git Submodules for Configuration Management** - Improved config organization and API deployment + - **Configs as git submodule** at `api/configs_repo/` for cleaner repository + - **Production configs**: Added official production-ready configuration presets + - **Duplicate removal**: Cleaned up all duplicate configs from main repository + - **Test filtering**: Filtered out test-example configs from API endpoints + - **CI/CD integration**: GitHub Actions now initializes submodules automatically + - **API deployment**: Updated render.yaml to use git submodule for configs_repo + - **Benefits**: Cleaner main repo, better config versioning, production/test separation + +- **๐Ÿ” Config Discovery Enhancements** - Improved config listing + - **--all flag** for estimate command: `skill-seekers estimate --all` + - Lists all available preset configurations with descriptions + - Helps users discover supported frameworks before scraping + - Shows config names, frameworks, and documentation URLs + +### Changed + +- **GitHub Fetcher** - Integrated rate limit handler + - Modified `github_fetcher.py` to use `RateLimitHandler` + - Added upfront rate limit check before starting + - Check responses for rate limits on all API calls + - Automatic profile detection from config + - Raises `RateLimitError` when rate limit cannot be handled + - Constructor now accepts `interactive` and `profile_name` parameters + +- **GitHub Scraper** - Added rate limit support + - New `--non-interactive` flag for CI/CD mode + - New `--profile` flag to select GitHub profile + - Config now supports `interactive` and `github_profile` keys + - CLI argument passing for non-interactive and profile options + +- **Main CLI** - Enhanced with new commands + - Added `config` subcommand with options (--github, --api-keys, --show, --test) + - Added `resume` subcommand with options (--list, --clean) + - Updated GitHub subcommand with --non-interactive and --profile flags + - Updated command documentation strings + - Version bumped to 2.7.0 + +- **pyproject.toml** - New entry points and dependency restructuring + - Added `skill-seekers-config` entry point + - Added `skill-seekers-resume` entry point + - Added `skill-seekers-setup` entry point for setup wizard + - **MCP moved to optional dependencies** - Now requires `pip install skill-seekers[mcp]` + - Updated pytest markers: e2e, venv, bootstrap, slow + - Version updated to 2.7.0 + +- **install_skill.py** - Lazy MCP loading + - Try/except ImportError for MCP imports + - Graceful failure with helpful error message when MCP not installed + - Suggests alternatives: scrape + package workflow + - Maintains backward compatibility for existing MCP users + +### Fixed + +- **Code Quality Improvements** - Fixed all 21 ruff linting errors across codebase + - SIM102: Combined nested if statements using `and` operator (7 fixes) + - SIM117: Combined multiple `with` statements into single multi-context `with` (9 fixes) + - B904: Added `from e` to exception chaining for proper error context (1 fix) + - SIM113: Removed unused enumerate counter variable (1 fix) + - B007: Changed unused loop variable to `_` (1 fix) + - ARG002: Removed unused method argument in test fixture (1 fix) + - Files affected: config_extractor.py, config_validator.py, doc_scraper.py, pattern_recognizer.py (3), test_example_extractor.py (3), unified_skill_builder.py, pdf_scraper.py, and 6 test files + - Result: Zero linting errors, cleaner code, better maintainability + +- **Version Synchronization** - Fixed version mismatch across package (Issue #248) + - All `__init__.py` files now correctly show version 2.7.0 (was 2.5.2 in 4 files) + - Files updated: `src/skill_seekers/__init__.py`, `src/skill_seekers/cli/__init__.py`, `src/skill_seekers/mcp/__init__.py`, `src/skill_seekers/mcp/tools/__init__.py` + - Ensures `skill-seekers --version` shows accurate version number + - **Critical**: Prevents bug where PyPI shows wrong version (Issue #248) + +- **Case-Insensitive Regex in Install Workflow** - Fixed install workflow failures (Issue #236) + - Made regex patterns case-insensitive using `(?i)` flag + - Patterns now match both "Saved to:" and "saved to:" (and any case variation) + - Files: `src/skill_seekers/mcp/tools/packaging_tools.py` (lines 529, 668) + - Impact: install_skill workflow now works reliably regardless of output formatting + +- **Test Fixture Error** - Fixed pytest fixture error in bootstrap skill tests + - Removed unused `tmp_path` parameter causing fixture lookup errors + - File: `tests/test_bootstrap_skill.py:54` + - Result: All CI test runs now pass without fixture errors + +- **MCP Setup Modernization** - Updated MCP server configuration (PR #252, @MiaoDX) + - Fixed 41 instances of `server_fastmcp_fastmcp` โ†’ `server_fastmcp` typo in docs/guides/MCP_SETUP.md + - Updated all 12 files to use `skill_seekers.mcp.server_fastmcp` module + - Enhanced setup_mcp.sh with automatic venv detection (.venv, venv, $VIRTUAL_ENV) + - Updated tests to accept `-e ".[mcp]"` format and module references + - Files: .claude/mcp_config.example.json, CLAUDE.md, README.md, docs/guides/*.md, setup_mcp.sh, tests/test_setup_scripts.py + - Benefits: Eliminates "module not found" errors, clean dependency isolation, prepares for v3.0.0 + +- **Rate limit indefinite wait** - No more infinite waiting + - Configurable timeout per profile (default: 30 minutes) + - Clear error messages when timeout exceeded + - Graceful exit with helpful next steps + - Resume capability for interrupted jobs + +- **Token setup confusion** - Clear, guided setup process + - Interactive wizard with browser integration + - Token validation with helpful error messages + - Clear documentation of required scopes + - Test connection feature to verify tokens work + +- **CI/CD failures** - Non-interactive mode support + - `--non-interactive` flag fails fast instead of hanging + - No user prompts in non-interactive mode + - Clear error messages for automation logs + - Exit codes for pipeline integration + +- **AttributeError in codebase_scraper.py** - Fixed incorrect flag check (PR #249) + - Changed `if args.build_api_reference:` to `if not args.skip_api_reference:` + - Aligns with v2.5.2 opt-out flag strategy (--skip-* instead of --build-*) + - Fixed at line 1193 in codebase_scraper.py + +### Technical Details + +- **Architecture**: Strategy pattern for rate limit handling, singleton for config manager +- **Files Modified**: 6 (github_fetcher.py, github_scraper.py, main.py, pyproject.toml, install_skill.py, codebase_scraper.py) +- **New Files**: 6 (config_manager.py ~490 lines, config_command.py ~400 lines, rate_limit_handler.py ~450 lines, resume_command.py ~150 lines, setup_wizard.py ~95 lines, test_bootstrap_skill_e2e.py ~169 lines) +- **Bootstrap Scripts**: 2 (bootstrap_skill.sh enhanced, skill_header.md) +- **Tests**: 22 tests added, all passing (16 rate limit + 6 E2E bootstrap) +- **Dependencies**: MCP moved to optional, no new required dependencies +- **Backward Compatibility**: Fully backward compatible, MCP optionality via pip extras +- **Credits**: Bootstrap feature contributed by @MiaoDX (PR #249) + +### Migration Guide + +**Existing users** - No migration needed! Everything works as before. + +**MCP users** - If you use MCP integration features: +```bash +# Reinstall with MCP support +pip install -U skill-seekers[mcp] + +# Or install everything +pip install -U skill-seekers[all] +``` + +**New installation profiles**: +```bash +# CLI only (no MCP) +pip install skill-seekers + +# With MCP integration +pip install skill-seekers[mcp] + +# With multi-LLM support (Gemini, OpenAI) +pip install skill-seekers[all-llms] + +# Everything +pip install skill-seekers[all] + +# See all options +skill-seekers-setup +``` + +**To use new features**: +```bash +# Set up GitHub token (one-time) +skill-seekers config --github + +# Add multiple profiles +skill-seekers config +# โ†’ Select "1. GitHub Token Setup" +# โ†’ Select "1. Add New Profile" + +# Use specific profile +skill-seekers github --repo owner/repo --profile work + +# CI/CD mode +skill-seekers github --repo owner/repo --non-interactive + +# View configuration +skill-seekers config --show + +# Bootstrap skill-seekers as a Claude Code skill +./scripts/bootstrap_skill.sh +cp -r output/skill-seekers ~/.claude/skills/ +``` + +### Breaking Changes + +None - this release is fully backward compatible. + +--- + +## [2.6.0] - 2026-01-13 + +### ๐Ÿš€ Codebase Analysis Enhancements & Documentation Reorganization + +This **minor feature release** completes the C3.x codebase analysis suite with standalone SKILL.md generation for codebase scraper, adds comprehensive documentation reorganization, and includes quality-of-life improvements for setup and testing. + +### Added +- **C3.8 Standalone Codebase Scraper SKILL.md Generation** - Complete skill structure for standalone codebase analysis + - Generates comprehensive SKILL.md (300+ lines) with all C3.x analysis integrated + - Sections: Description, When to Use, Quick Reference, Design Patterns, Architecture, Configuration, Available References + - Includes language statistics, analysis depth indicators, and feature checkboxes + - Creates references/ directory with organized outputs (API, dependencies, patterns, architecture, config) + - Integration points: + - CLI tool: `skill-seekers analyze --directory /path/to/code --output /path/to/output` + - Unified scraper: Automatic SKILL.md generation when using codebase analysis + - Format helpers for all C3.x sections (patterns, examples, API, architecture, config) + - Perfect for local codebase documentation without GitHub + - **Use Cases**: Private codebases, offline analysis, local project documentation, pre-commit hooks + - Documentation: Integrated into codebase scraper workflow + +- **Global Setup Script with FastMCP** - setup.sh for end-user global installation + - New `setup.sh` script for global PyPI installation (vs `setup_mcp.sh` for development) + - Installs `skill-seekers` globally: `pip3 install skill-seekers` + - Sets up MCP server configuration for Claude Code Desktop + - Creates MCP configuration in `~/.claude/mcp_settings.json` + - Uses global Python installation (no editable install) + - Perfect for end users who want to use Skill Seekers without development setup + - **Separate from development setup**: `setup_mcp.sh` remains for editable development installs + - Documentation: Root-level setup.sh with clear installation instructions + +- **Comprehensive Documentation Reorganization** - Complete overhaul of documentation structure + - Removed 7 temporary/analysis files from root directory + - Archived 14 historical documents to `docs/archive/` (historical, research, temp) + - Organized 29 documentation files into clear subdirectories: + - `docs/features/` (10 files) - Core features, AI enhancement, PDF tools + - `docs/integrations/` (3 files) - Multi-LLM platform support + - `docs/guides/` (6 files) - Setup, MCP, usage guides + - `docs/reference/` (8 files) - Architecture, standards, technical reference + - Created `docs/README.md` - Comprehensive navigation index with: + - Quick navigation by category + - "I want to..." user-focused navigation + - Clear entry points for all documentation + - Links to guides, features, integrations, and reference docs + - **Benefits**: 3x faster documentation discovery, user-focused navigation, scalable structure + - **Structure**: Before: 64 files scattered โ†’ After: 57 files organized with clear navigation + +- **Test Configuration** - AstroValley unified config for testing + - Added `configs/astrovalley_unified.json` for comprehensive testing + - Demonstrates GitHub + codebase analysis integration + - Verified AI enhancement works on both standalone and unified skills + - Tests context awareness: standalone (codebase-only) vs unified (GitHub+codebase) + - Quality metrics: 8.2x growth for standalone, 3.7x for unified enhancement + +- **Enhanced LOCAL Enhancement Modes** - Advanced enhancement execution options (moved from previous unreleased) + - **4 Execution Modes** for different use cases: + - **Headless** (default): Runs in foreground, waits for completion (perfect for CI/CD) + - **Background** (`--background`): Runs in background thread, returns immediately + - **Daemon** (`--daemon`): Fully detached process with `nohup`, survives parent exit + - **Terminal** (`--interactive-enhancement`): Opens new terminal window (macOS) + - **Force Mode (Default ON)**: Skip all confirmations by default for maximum automation + - **No flag needed** - force mode is ON by default + - Use `--no-force` to enable confirmation prompts if needed + - Perfect for CI/CD, batch processing, unattended execution + - "Dangerously skip mode" as requested - auto-yes to everything + - **Status Monitoring**: New `enhance-status` command for background/daemon processes + - Check status once: `skill-seekers enhance-status output/react/` + - Watch in real-time: `skill-seekers enhance-status output/react/ --watch` + - JSON output for scripts: `skill-seekers enhance-status output/react/ --json` + - **Status File**: `.enhancement_status.json` tracks progress (status, message, progress %, PID, timestamp, errors) + - **Daemon Logging**: `.enhancement_daemon.log` for daemon mode execution logs + - **Timeout Configuration**: Custom timeouts for different skill sizes (`--timeout` flag) + - **CLI Integration**: All modes accessible via `skill-seekers enhance` command + - **Documentation**: New `docs/ENHANCEMENT_MODES.md` guide with examples + - **Use Cases**: + - CI/CD pipelines: Force ON by default (no extra flags!) + - Long-running tasks: `--daemon` for tasks that survive logout + - Parallel processing: `--background` for batch enhancement + - Debugging: `--interactive-enhancement` to watch Claude Code work + +- **C3.1 Design Pattern Detection** - Detect 10 common design patterns in code + - Detects: Singleton, Factory, Observer, Strategy, Decorator, Builder, Adapter, Command, Template Method, Chain of Responsibility + - Supports 9 languages: Python, JavaScript, TypeScript, C++, C, C#, Go, Rust, Java (plus Ruby, PHP) + - Three detection levels: surface (fast), deep (balanced), full (thorough) + - Language-specific adaptations for better accuracy + - CLI tool: `skill-seekers-patterns --file src/db.py` + - Codebase scraper integration: `--detect-patterns` flag + - MCP tool: `detect_patterns` for Claude Code integration + - 24 comprehensive tests, 100% passing + - 87% precision, 80% recall (tested on 100 real-world projects) + - Documentation: `docs/PATTERN_DETECTION.md` + +- **C3.2 Test Example Extraction** - Extract real usage examples from test files + - Analyzes test files to extract real API usage patterns + - Categories: instantiation, method_call, config, setup, workflow + - Supports 9 languages: Python (AST-based deep analysis), JavaScript, TypeScript, Go, Rust, Java, C#, PHP, Ruby (regex-based) + - Quality filtering with confidence scoring (removes trivial patterns) + - CLI tool: `skill-seekers extract-test-examples tests/ --language python` + - Codebase scraper integration: `--extract-test-examples` flag + - MCP tool: `extract_test_examples` for Claude Code integration + - 19 comprehensive tests, 100% passing + - JSON and Markdown output formats + - Documentation: `docs/TEST_EXAMPLE_EXTRACTION.md` + +- **C3.3 How-To Guide Generation with Comprehensive AI Enhancement** - Transform test workflows into step-by-step educational guides with professional AI-powered improvements + - Automatically generates comprehensive markdown tutorials from workflow test examples + - **๐Ÿ†• COMPREHENSIVE AI ENHANCEMENT** - 5 automatic improvements that transform basic guides (โญโญ) into professional tutorials (โญโญโญโญโญ): + 1. **Step Descriptions** - Natural language explanations for each step (not just syntax) + 2. **Troubleshooting Solutions** - Diagnostic flows + solutions for common errors + 3. **Prerequisites Explanations** - Why each prerequisite is needed + setup instructions + 4. **Next Steps Suggestions** - Related guides, variations, learning paths + 5. **Use Case Examples** - Real-world scenarios showing when to use guide + - **๐Ÿ†• DUAL-MODE AI SUPPORT** - Choose how to enhance guides: + - **API Mode**: Uses Claude API directly (requires ANTHROPIC_API_KEY) + - Fast, efficient, perfect for automation/CI + - Cost: ~$0.15-$0.30 per guide + - **LOCAL Mode**: Uses Claude Code CLI (no API key needed) + - Uses your existing Claude Code Max plan (FREE!) + - Opens in terminal, takes 30-60 seconds + - Perfect for local development + - **AUTO Mode** (default): Automatically detects best available mode + - **๐Ÿ†• QUALITY TRANSFORMATION**: Basic templates become comprehensive professional tutorials + - Before: 75-line template with just code (โญโญ) + - After: 500+ line guide with explanations, troubleshooting, learning paths (โญโญโญโญโญ) + - **CLI Integration**: Simple flags control AI enhancement + - `--ai-mode api` - Use Claude API (requires ANTHROPIC_API_KEY) + - `--ai-mode local` - Use Claude Code CLI (no API key needed) + - `--ai-mode auto` - Automatic detection (default) + - `--ai-mode none` - Disable AI enhancement + - **4 Intelligent Grouping Strategies**: + - AI Tutorial Group (default) - Uses C3.6 AI analysis for semantic grouping + - File Path - Groups by test file location + - Test Name - Groups by test name patterns + - Complexity - Groups by difficulty level (beginner/intermediate/advanced) + - **Python AST-based Step Extraction** - Precise step identification from test code + - **Rich Markdown Guides** with prerequisites, code examples, verification points, troubleshooting + - **Automatic Complexity Assessment** - Classifies guides by difficulty + - **Multi-Language Support** - Python (AST-based), JavaScript, TypeScript, Go, Rust, Java, C#, PHP, Ruby (heuristic) + - **Integration Points**: + - CLI tool: `skill-seekers-how-to-guides test_examples.json --group-by ai-tutorial-group --ai-mode auto` + - Codebase scraper: `--build-how-to-guides --ai-mode local` (default ON, `--skip-how-to-guides` to disable) + - MCP tool: `build_how_to_guides` for Claude Code integration + - **Components**: WorkflowAnalyzer, WorkflowGrouper, GuideGenerator, HowToGuideBuilder, **GuideEnhancer** (NEW!) + - **Output**: Comprehensive index + individual guides with complete examples + AI enhancements + - **56 comprehensive tests, 100% passing** (30 GuideEnhancer tests + 21 original + 5 integration tests) + - Performance: 2.8s to process 50 workflows + 30-60s AI enhancement per guide + - **Quality Metrics**: Enhanced guides have 95%+ user satisfaction, 50% reduction in support questions + - Documentation: `docs/HOW_TO_GUIDES.md` with AI enhancement guide + +- **C3.4 Configuration Pattern Extraction with AI Enhancement** - Analyze and document configuration files across your codebase with optional AI-powered insights + - **9 Supported Config Formats**: JSON, YAML, TOML, ENV, INI, Python modules, JavaScript/TypeScript configs, Dockerfile, Docker Compose + - **7 Common Pattern Detection**: + - Database configuration (host, port, credentials) + - API configuration (endpoints, keys, timeouts) + - Logging configuration (level, format, handlers) + - Cache configuration (backend, TTL, keys) + - Email configuration (SMTP, credentials) + - Authentication configuration (providers, secrets) + - Server configuration (host, port, workers) + - **๐Ÿ†• COMPREHENSIVE AI ENHANCEMENT** (optional) - Similar to C3.3 dual-mode support: + - **API Mode**: Uses Claude API (requires ANTHROPIC_API_KEY) + - **LOCAL Mode**: Uses Claude Code CLI (FREE, no API key needed) + - **AUTO Mode**: Automatically detects best available mode + - **5 AI-Powered Insights**: + 1. **Explanations** - What each configuration setting does + 2. **Best Practices** - Suggested improvements (better structure, naming, organization) + 3. **Security Analysis** - Identifies hardcoded secrets, exposed credentials, security issues + 4. **Migration Suggestions** - Opportunities to consolidate or standardize configs + 5. **Context** - Explains detected patterns and when to use them + - **Comprehensive Extraction**: + - Extracts all configuration settings with type inference + - Detects environment variables and their usage + - Maps nested configuration structures + - Identifies required vs optional settings + - **Integration Points**: + - CLI tool: `skill-seekers-config-extractor --directory . --enhance-local` (with AI) + - Codebase scraper: `--extract-config-patterns --ai-mode local` (default ON, `--skip-config-patterns` to disable) + - MCP tool: `extract_config_patterns(directory=".", enhance_local=true)` for Claude Code integration + - **Output Formats**: JSON (machine-readable with AI insights) + Markdown (human-readable documentation) + - **Components**: ConfigFileDetector, ConfigParser, ConfigPatternDetector, ConfigExtractor, **ConfigEnhancer** (NEW!) + - **Performance**: Analyzes 100 config files in ~3 seconds (basic) + 30-60 seconds (AI enhancement) + - **Use Cases**: Documentation generation, configuration auditing, migration planning, security reviews, onboarding new developers + - **Test Coverage**: 28 comprehensive tests covering all formats and patterns + +- **C3.5 Architectural Overview & Skill Integrator** - Comprehensive integration of ALL C3.x codebase analysis into unified skills + - **ARCHITECTURE.md Generation** - Comprehensive architectural overview with 8 sections: + 1. **Overview** - Project description and purpose + 2. **Architectural Patterns** - Detected patterns (MVC, MVVM, etc.) from C3.7 analysis + 3. **Technology Stack** - Frameworks, libraries, and languages detected + 4. **Design Patterns** - Summary of C3.1 design patterns (Factory, Singleton, etc.) + 5. **Configuration Overview** - C3.4 config files with security warnings + 6. **Common Workflows** - C3.3 how-to guides summary + 7. **Usage Examples** - C3.2 test examples statistics + 8. **Entry Points & Directory Structure** - Main directories and file organization + - **Default ON Behavior** - C3.x codebase analysis now runs automatically when GitHub sources have `local_repo_path` + - **CLI Flag** - `--skip-codebase-analysis` to disable C3.x analysis if needed + - **Skill Directory Structure** - New `references/codebase_analysis/` with organized C3.x outputs: + - `ARCHITECTURE.md` - Master architectural overview (main deliverable) + - `patterns/` - C3.1 design pattern analysis + - `examples/` - C3.2 test examples + - `guides/` - C3.3 how-to tutorials + - `configuration/` - C3.4 config patterns + - `architecture_details/` - C3.7 architectural pattern details + - **Enhanced SKILL.md** - Architecture & Code Analysis summary section with: + - Primary architectural pattern with confidence + - Design patterns count and top 3 patterns + - Test examples statistics + - How-to guides count + - Configuration files count with security alerts + - Link to ARCHITECTURE.md for complete details + - **Config Properties**: + - `enable_codebase_analysis` (boolean, default: true) - Enable/disable C3.x analysis + - `ai_mode` (enum: auto/api/local/none, default: auto) - AI enhancement mode + - **Graceful Degradation** - Skills build successfully even if C3.x analysis fails + - **Integration Points**: + - Unified scraper: Automatic C3.x analysis when `local_repo_path` exists + - Skill builder: Automatic ARCHITECTURE.md + references generation + - Config validator: Validates new C3.x properties + - **Test Coverage**: 9 comprehensive integration tests + - **Updated Configs**: 5 unified configs updated (react, django, fastapi, godot, svelte-cli) + - **Use Cases**: Understanding codebase architecture, onboarding developers, code reviews, documentation generation, skill completeness + +- **C3.6 AI Enhancement** - AI-powered insights for patterns and test examples + - Enhances C3.1 (Pattern Detection) and C3.2 (Test Examples) with AI analysis + - **Pattern Enhancement**: Explains why patterns detected, suggests improvements, identifies issues + - **Test Example Enhancement**: Adds context, groups examples into tutorials, identifies best practices + - **API Mode** (for pattern/example enhancement): + - Uses Anthropic API with ANTHROPIC_API_KEY + - Batch processing (5 items per call) for efficiency + - Automatic activation when key is set + - Graceful degradation if no key (works offline) + - **LOCAL Mode** (for SKILL.md enhancement - existing feature): + - Uses `skill-seekers enhance output/skill/` command + - Opens Claude Code in new terminal (no API costs!) + - Uses your existing Claude Code Max plan + - Perfect for enhancing generated SKILL.md files + - Note: Pattern/example enhancement uses API mode only (batch processing hundreds of items) + +- **C3.7 Architectural Pattern Detection** - Detect high-level architectural patterns + - Detects MVC, MVVM, MVP, Repository, Service Layer, Layered, Clean Architecture + - Multi-file analysis (analyzes entire codebase structure) + - Framework detection: Django, Flask, Spring, ASP.NET, Rails, Laravel, Angular, React, Vue.js + - Directory structure analysis for pattern recognition + - Evidence-based detection with confidence scoring + - AI-enhanced insights for architectural recommendations + - Always enabled (provides high-level overview) + - Output: `output/codebase/architecture/architectural_patterns.json` + - Integration with C3.6 for AI-powered architectural insights + +### Changed +- **BREAKING: Analysis Features Now Default ON** - Improved UX for codebase analysis + - All analysis features (API reference, dependency graph, patterns, test examples) are now **enabled by default** + - Changed flag pattern from `--build-*` to `--skip-*` for better discoverability + - **Old flags (DEPRECATED)**: `--build-api-reference`, `--build-dependency-graph`, `--detect-patterns`, `--extract-test-examples` + - **New flags**: `--skip-api-reference`, `--skip-dependency-graph`, `--skip-patterns`, `--skip-test-examples` + - **Migration**: Remove old `--build-*` flags from your scripts (features are now ON by default) + - **Backward compatibility**: Deprecated flags show warnings but still work (will be removed in v3.0.0) + - **Rationale**: Users should get maximum value by default; explicitly opt-out if needed + - **Impact**: `codebase-scraper --directory .` now runs all analysis features automatically + +### Fixed +- **Codebase Scraper Language Stats** - Fixed dict format handling in `_get_language_stats()` + - **Issue**: `AttributeError: 'dict' object has no attribute 'suffix'` when generating SKILL.md + - **Cause**: Function expected Path objects but received dict objects from analysis results + - **Fix**: Extract language from dict instead of calling `detect_language()` on Path + - **Impact**: SKILL.md generation now works correctly for all codebases + - Location: `src/skill_seekers/cli/codebase_scraper.py:778` + +### Removed + +--- + +## [2.5.2] - 2025-12-31 + +### ๐Ÿ”ง Package Configuration Improvement + +This **patch release** improves the packaging configuration by switching from manual package listing to automatic package discovery, preventing similar issues in the future. + +### Changed + +- **Package Discovery**: Switched from manual package listing to automatic discovery in pyproject.toml ([#227](https://github.com/yusufkaraaslan/Skill_Seekers/pull/227)) + - **Before**: Manually listed 5 packages (error-prone when adding new modules) + - **After**: Automatic discovery using `[tool.setuptools.packages.find]` + - **Benefits**: Future-proof, prevents missing module bugs, follows Python packaging best practices + - **Impact**: No functional changes, same packages included + - **Credit**: Thanks to [@iamKhan79690](https://github.com/iamKhan79690) for the improvement! + +### Package Structure + +No changes to package contents - all modules from v2.5.1 are still included: +- โœ… `skill_seekers` (core) +- โœ… `skill_seekers.cli` (CLI tools) +- โœ… `skill_seekers.cli.adaptors` (platform adaptors) +- โœ… `skill_seekers.mcp` (MCP server) +- โœ… `skill_seekers.mcp.tools` (MCP tools) + +### Related Issues + +- Closes #226 - MCP server package_skill tool fails (already fixed in v2.5.1, improved by this release) +- Merges #227 - Update setuptools configuration to include adaptors module + +### Contributors + +- [@iamKhan79690](https://github.com/iamKhan79690) - Automatic package discovery implementation + +--- + +## [2.5.1] - 2025-12-30 + +### ๐Ÿ› Critical Bug Fix - PyPI Package Broken + +This **patch release** fixes a critical packaging bug that made v2.5.0 completely unusable for PyPI users. + +### Fixed + +- **CRITICAL**: Added missing `skill_seekers.cli.adaptors` module to packages list in pyproject.toml ([#221](https://github.com/yusufkaraaslan/Skill_Seekers/pull/221)) + - **Issue**: v2.5.0 on PyPI throws `ModuleNotFoundError: No module named 'skill_seekers.cli.adaptors'` + - **Impact**: Broke 100% of multi-platform features (Claude, Gemini, OpenAI, Markdown) + - **Cause**: The adaptors module was missing from the explicit packages list + - **Fix**: Added `skill_seekers.cli.adaptors` to packages in pyproject.toml + - **Credit**: Thanks to [@MiaoDX](https://github.com/MiaoDX) for finding and fixing this issue! + +### Package Structure + +The `skill_seekers.cli.adaptors` module contains the platform adaptor architecture: +- `base.py` - Abstract base class for all adaptors +- `claude.py` - Claude AI platform implementation +- `gemini.py` - Google Gemini platform implementation +- `openai.py` - OpenAI ChatGPT platform implementation +- `markdown.py` - Generic markdown export + +**Note**: v2.5.0 is broken on PyPI. All users should upgrade to v2.5.1 immediately. + +--- + +## [2.5.0] - 2025-12-28 + +### ๐Ÿš€ Multi-Platform Feature Parity - 4 LLM Platforms Supported + +This **major feature release** adds complete multi-platform support for Claude AI, Google Gemini, OpenAI ChatGPT, and Generic Markdown export. All features now work across all platforms with full feature parity. + +### ๐ŸŽฏ Major Features + +#### Multi-LLM Platform Support +- **4 platforms supported**: Claude AI, Google Gemini, OpenAI ChatGPT, Generic Markdown +- **Complete feature parity**: All skill modes work with all platforms +- **Platform adaptors**: Clean architecture with platform-specific implementations +- **Unified workflow**: Same scraping output works for all platforms +- **Smart enhancement**: Platform-specific AI models (Claude Sonnet 4, Gemini 2.0 Flash, GPT-4o) + +#### Platform-Specific Capabilities + +**Claude AI (Default):** +- Format: ZIP with YAML frontmatter + markdown +- Upload: Anthropic Skills API +- Enhancement: Claude Sonnet 4 (local or API) +- MCP integration: Full support + +**Google Gemini:** +- Format: tar.gz with plain markdown +- Upload: Google Files API + Grounding +- Enhancement: Gemini 2.0 Flash +- Long context: 1M tokens supported + +**OpenAI ChatGPT:** +- Format: ZIP with assistant instructions +- Upload: Assistants API + Vector Store +- Enhancement: GPT-4o +- File search: Semantic search enabled + +**Generic Markdown:** +- Format: ZIP with pure markdown +- Upload: Manual distribution +- Universal compatibility: Works with any LLM + +#### Complete Feature Parity + +**All skill modes work with all platforms:** +- Documentation scraping โ†’ All 4 platforms +- GitHub repository analysis โ†’ All 4 platforms +- PDF extraction โ†’ All 4 platforms +- Unified multi-source โ†’ All 4 platforms +- Local repository analysis โ†’ All 4 platforms + +**18 MCP tools with multi-platform support:** +- `package_skill` - Now accepts `target` parameter (claude, gemini, openai, markdown) +- `upload_skill` - Now accepts `target` parameter (claude, gemini, openai) +- `enhance_skill` - NEW standalone tool with `target` parameter +- `install_skill` - Full multi-platform workflow automation + +### Added + +#### Core Infrastructure +- **Platform Adaptors** (`src/skill_seekers/cli/adaptors/`) + - `base_adaptor.py` - Abstract base class for all adaptors + - `claude_adaptor.py` - Claude AI implementation + - `gemini_adaptor.py` - Google Gemini implementation + - `openai_adaptor.py` - OpenAI ChatGPT implementation + - `markdown_adaptor.py` - Generic Markdown export + - `__init__.py` - Factory function `get_adaptor(target)` + +#### CLI Tools +- **Multi-platform packaging**: `skill-seekers package output/skill/ --target gemini` +- **Multi-platform upload**: `skill-seekers upload skill.zip --target openai` +- **Multi-platform enhancement**: `skill-seekers enhance output/skill/ --target gemini --mode api` +- **Target parameter**: All packaging tools now accept `--target` flag + +#### MCP Tools +- **`enhance_skill`** (NEW) - Standalone AI enhancement tool + - Supports local mode (Claude Code Max, no API key) + - Supports API mode (platform-specific APIs) + - Works with Claude, Gemini, OpenAI + - Creates SKILL.md.backup before enhancement + +- **`package_skill`** (UPDATED) - Multi-platform packaging + - New `target` parameter (claude, gemini, openai, markdown) + - Creates ZIP for Claude/OpenAI/Markdown + - Creates tar.gz for Gemini + - Shows platform-specific output messages + +- **`upload_skill`** (UPDATED) - Multi-platform upload + - New `target` parameter (claude, gemini, openai) + - Platform-specific API key validation + - Returns skill ID and platform URL + - Graceful error for markdown (no upload) + +#### Documentation +- **`docs/FEATURE_MATRIX.md`** (NEW) - Comprehensive feature matrix + - Platform support comparison table + - Skill mode support across platforms + - CLI command support matrix + - MCP tool support matrix + - Platform-specific examples + - Verification checklist + +- **`docs/UPLOAD_GUIDE.md`** (REWRITTEN) - Multi-platform upload guide + - Complete guide for all 4 platforms + - Platform selection table + - API key setup instructions + - Platform comparison matrices + - Complete workflow examples + +- **`docs/ENHANCEMENT.md`** (UPDATED) + - Multi-platform enhancement section + - Platform-specific model information + - Cost comparison across platforms + +- **`docs/MCP_SETUP.md`** (UPDATED) + - Added enhance_skill to tool listings + - Multi-platform usage examples + - Updated tool count (10 โ†’ 18 tools) + +- **`src/skill_seekers/mcp/README.md`** (UPDATED) + - Corrected tool count (18 tools) + - Added enhance_skill documentation + - Updated package_skill with target parameter + - Updated upload_skill with target parameter + +#### Optional Dependencies +- **`[gemini]`** extra: `pip install skill-seekers[gemini]` + - google-generativeai>=0.8.3 + - Required for Gemini enhancement and upload + +- **`[openai]`** extra: `pip install skill-seekers[openai]` + - openai>=1.59.6 + - Required for OpenAI enhancement and upload + +- **`[all-llms]`** extra: `pip install skill-seekers[all-llms]` + - Includes both Gemini and OpenAI dependencies + +#### Tests +- **`tests/test_adaptors.py`** - Comprehensive adaptor tests +- **`tests/test_multi_llm_integration.py`** - E2E multi-platform tests +- **`tests/test_install_multiplatform.py`** - Multi-platform install_skill tests +- **700 total tests passing** (up from 427 in v2.4.0) + +### Changed + +#### CLI Architecture +- **Package command**: Now routes through platform adaptors +- **Upload command**: Now supports all 3 upload platforms +- **Enhancement command**: Now supports platform-specific models +- **Unified workflow**: All commands respect `--target` parameter + +#### MCP Architecture +- **Tool modularity**: Cleaner separation with adaptor pattern +- **Error handling**: Platform-specific error messages +- **API key validation**: Per-platform validation logic +- **TextContent fallback**: Graceful degradation when MCP not installed + +#### Documentation +- All platform documentation updated for multi-LLM support +- Consistent terminology across all docs +- Platform comparison tables added +- Examples updated to show all platforms + +### Fixed + +- **TextContent import error** in test environment (5 MCP tool files) + - Added fallback TextContent class when MCP not installed + - Prevents `TypeError: 'NoneType' object is not callable` + - Ensures tests pass without MCP library + +- **UTF-8 encoding** issues on Windows (continued from v2.4.0) + - All file operations use explicit UTF-8 encoding + - CHANGELOG encoding handling improved + +- **API key environment variables** - Clear documentation for all platforms + - ANTHROPIC_API_KEY for Claude + - GOOGLE_API_KEY for Gemini + - OPENAI_API_KEY for OpenAI + +### Other Improvements + +#### Smart Description Generation +- Automatically generates skill descriptions from documentation +- Analyzes reference files to suggest "When to Use" triggers +- Improves SKILL.md quality without manual editing + +#### Smart Summarization +- Large skills (500+ lines) automatically summarized +- Preserves key examples and patterns +- Maintains quality while reducing token usage + +### Deprecation Notice + +None - All changes are backward compatible. Existing v2.4.0 workflows continue to work with default `target='claude'`. + +### Migration Guide + +**For users upgrading from v2.4.0:** + +1. **No changes required** - Default behavior unchanged (targets Claude AI) + +2. **To use other platforms:** + ```bash + # Install platform dependencies + pip install skill-seekers[gemini] # For Gemini + pip install skill-seekers[openai] # For OpenAI + pip install skill-seekers[all-llms] # For all platforms + + # Set API keys + export GOOGLE_API_KEY=AIzaSy... # For Gemini + export OPENAI_API_KEY=sk-proj-... # For OpenAI + + # Use --target flag + skill-seekers package output/react/ --target gemini + skill-seekers upload react-gemini.tar.gz --target gemini + ``` + +3. **MCP users** - New tools available: + - `enhance_skill` - Standalone enhancement (was only in install_skill) + - All packaging tools now accept `target` parameter + +**See full documentation:** +- [Multi-Platform Guide](docs/UPLOAD_GUIDE.md) +- [Feature Matrix](docs/FEATURE_MATRIX.md) +- [Enhancement Guide](docs/ENHANCEMENT.md) + +### Contributors + +- @yusufkaraaslan - Multi-platform architecture, all platform adaptors, comprehensive testing + +### Stats + +- **16 commits** since v2.4.0 +- **700 tests** (up from 427, +273 new tests) +- **4 platforms** supported (was 1) +- **18 MCP tools** (up from 17) +- **5 documentation guides** updated/created +- **29 files changed**, 6,349 insertions(+), 253 deletions(-) + +--- + +## [2.4.0] - 2025-12-25 + +### ๐Ÿš€ MCP 2025 Upgrade - Multi-Agent Support & HTTP Transport + +This **major release** upgrades the MCP infrastructure to the 2025 specification with support for 5 AI coding agents, dual transport modes (stdio + HTTP), and a complete FastMCP refactor. + +### ๐ŸŽฏ Major Features + +#### MCP SDK v1.25.0 Upgrade +- **Upgraded from v1.18.0 to v1.25.0** - Latest MCP protocol specification (November 2025) +- **FastMCP framework** - Decorator-based tool registration, 68% code reduction (2200 โ†’ 708 lines) +- **Enhanced reliability** - Better error handling, automatic schema generation from type hints +- **Backward compatible** - Existing v2.3.0 configurations continue to work + +#### Dual Transport Support +- **stdio transport** (default) - Standard input/output for Claude Code, VS Code + Cline +- **HTTP transport** (new) - Server-Sent Events for Cursor, Windsurf, IntelliJ IDEA +- **Health check endpoint** - `GET /health` for monitoring +- **SSE endpoint** - `GET /sse` for real-time communication +- **Configurable server** - `--http`, `--port`, `--host`, `--log-level` flags +- **uvicorn-powered** - Production-ready ASGI server + +#### Multi-Agent Auto-Configuration +- **5 AI agents supported**: + - Claude Code (stdio) + - Cursor (HTTP) + - Windsurf (HTTP) + - VS Code + Cline (stdio) + - IntelliJ IDEA (HTTP) +- **Automatic detection** - `agent_detector.py` scans for installed agents +- **One-command setup** - `./setup_mcp.sh` configures all detected agents +- **Smart config merging** - Preserves existing MCP servers, only adds skill-seeker +- **Automatic backups** - Timestamped backups before modifications +- **HTTP server management** - Auto-starts HTTP server for HTTP-based agents + +#### Expanded Tool Suite (17 Tools) +- **Config Tools (3)**: generate_config, list_configs, validate_config +- **Scraping Tools (4)**: estimate_pages, scrape_docs, scrape_github, scrape_pdf +- **Packaging Tools (3)**: package_skill, upload_skill, install_skill +- **Splitting Tools (2)**: split_config, generate_router +- **Source Tools (5)**: fetch_config, submit_config, add_config_source, list_config_sources, remove_config_source + +### Added + +#### Core Infrastructure +- **`server_fastmcp.py`** (708 lines) - New FastMCP-based MCP server + - Decorator-based tool registration (`@safe_tool_decorator`) + - Modular tool architecture (5 tool modules) + - HTTP transport with uvicorn + - stdio transport (default) + - Comprehensive error handling + +- **`agent_detector.py`** (333 lines) - Multi-agent detection and configuration + - Detects 5 AI coding agents across platforms (Linux, macOS, Windows) + - Generates agent-specific config formats (JSON, XML) + - Auto-selects transport type (stdio vs HTTP) + - Cross-platform path resolution + +- **Tool modules** (5 modules, 1,676 total lines): + - `tools/config_tools.py` (249 lines) - Configuration management + - `tools/scraping_tools.py` (423 lines) - Documentation scraping + - `tools/packaging_tools.py` (514 lines) - Skill packaging and upload + - `tools/splitting_tools.py` (195 lines) - Config splitting and routing + - `tools/source_tools.py` (295 lines) - Config source management + +#### Setup & Configuration +- **`setup_mcp.sh`** (rewritten, 661 lines) - Multi-agent auto-configuration + - Detects installed agents automatically + - Offers configure all or select individual agents + - Manages HTTP server startup + - Smart config merging with existing configurations + - Comprehensive validation and testing + +- **HTTP server** - Production-ready HTTP transport + - Health endpoint: `/health` + - SSE endpoint: `/sse` + - Messages endpoint: `/messages/` + - CORS middleware for cross-origin requests + - Configurable host and port + - Debug logging support + +#### Documentation +- **`docs/MCP_SETUP.md`** (completely rewritten) - Comprehensive MCP 2025 guide + - Migration guide from v2.3.0 + - Transport modes explained (stdio vs HTTP) + - Agent-specific configuration for all 5 agents + - Troubleshooting for both transports + - Advanced configuration (systemd, launchd services) + +- **`docs/HTTP_TRANSPORT.md`** (434 lines, new) - HTTP transport guide +- **`docs/MULTI_AGENT_SETUP.md`** (643 lines, new) - Multi-agent setup guide +- **`docs/SETUP_QUICK_REFERENCE.md`** (387 lines, new) - Quick reference card +- **`SUMMARY_HTTP_TRANSPORT.md`** (360 lines, new) - Technical implementation details +- **`SUMMARY_MULTI_AGENT_SETUP.md`** (556 lines, new) - Multi-agent technical summary + +#### Testing +- **`test_mcp_fastmcp.py`** (960 lines, 63 tests) - Comprehensive FastMCP server tests + - All 18 tools tested + - Error handling validation + - Type validation + - Integration workflows + +- **`test_server_fastmcp_http.py`** (165 lines, 6 tests) - HTTP transport tests + - Health check endpoint + - SSE endpoint + - CORS middleware + - Argument parsing + +- **All tests passing**: 602/609 tests (99.1% pass rate) + +### Changed + +#### MCP Server Architecture +- **Refactored to FastMCP** - Decorator-based, modular, maintainable +- **Code reduction** - 68% smaller (2200 โ†’ 708 lines) +- **Modular tools** - Separated into 5 category modules +- **Type safety** - Full type hints on all tool functions +- **Improved error handling** - Graceful degradation, clear error messages + +#### Server Compatibility +- **`server.py`** - Now a compatibility shim (delegates to `server_fastmcp.py`) +- **Deprecation warning** - Alerts users to migrate to `server_fastmcp` +- **Backward compatible** - Existing configurations continue to work +- **Migration path** - Clear upgrade instructions in docs + +#### Setup Experience +- **Multi-agent workflow** - One script configures all agents +- **Interactive prompts** - User-friendly with sensible defaults +- **Validation** - Config file validation before writing +- **Backup safety** - Automatic timestamped backups +- **Color-coded output** - Visual feedback (success/warning/error) + +#### Documentation +- **README.md** - Added comprehensive multi-agent section +- **MCP_SETUP.md** - Completely rewritten for v2.4.0 +- **CLAUDE.md** - Updated with new server details +- **Version badges** - Updated to v2.4.0 + +### Fixed +- Import issues in test files (updated to use new tool modules) +- CLI version test (updated to expect v2.3.0) +- Graceful MCP import handling (no sys.exit on import) +- Server compatibility for testing environments + +### Deprecated +- **`server.py`** - Use `server_fastmcp.py` instead + - Compatibility shim provided + - Will be removed in v3.0.0 (6+ months) + - Migration guide available + +### Infrastructure +- **Python 3.10+** - Recommended for best compatibility +- **MCP SDK**: v1.25.0 (pinned to v1.x) +- **uvicorn**: v0.40.0+ (for HTTP transport) +- **starlette**: v0.50.0+ (for HTTP transport) + +### Migration from v2.3.0 + +**Upgrade Steps:** +1. Update dependencies: `pip install -e ".[mcp]"` +2. Update MCP config to use `server_fastmcp`: + ```json + { + "mcpServers": { + "skill-seeker": { + "command": "python", + "args": ["-m", "skill_seekers.mcp.server_fastmcp"] + } + } + } + ``` +3. For HTTP agents, start HTTP server: `python -m skill_seekers.mcp.server_fastmcp --http` +4. Or use auto-configuration: `./setup_mcp.sh` + +**Breaking Changes:** None - fully backward compatible + +**New Capabilities:** +- Multi-agent support (5 agents) +- HTTP transport for web-based agents +- 8 new MCP tools +- Automatic agent detection and configuration + +### Contributors +- Implementation: Claude Sonnet 4.5 +- Testing & Review: @yusufkaraaslan + +--- + +## [2.3.0] - 2025-12-22 + +### ๐Ÿค– Multi-Agent Installation Support + +This release adds automatic skill installation to 10+ AI coding agents with a single command. + +### Added +- **Multi-agent installation support** (#210) + - New `install-agent` command to install skills to any AI coding agent + - Support for 10+ agents: Claude Code, Cursor, VS Code, Amp, Goose, OpenCode, Letta, Aide, Windsurf + - `--agent all` flag to install to all agents at once + - `--force` flag to overwrite existing installations + - `--dry-run` flag to preview installations + - Intelligent path resolution (global vs project-relative) + - Fuzzy matching for agent names with suggestions + - Comprehensive error handling and user feedback + +### Changed +- Skills are now compatible with the Agent Skills open standard (agentskills.io) +- Installation paths follow standard conventions for each agent +- CLI updated with install-agent subcommand + +### Documentation +- Added multi-agent installation guide to README.md +- Updated CLAUDE.md with install-agent examples +- Added agent compatibility table + +### Testing +- Added 32 comprehensive tests for install-agent functionality +- All tests passing (603 tests total, 86 skipped) +- No regressions in existing functionality + +--- + +## [2.2.0] - 2025-12-21 + +### ๐Ÿš€ Private Config Repositories - Team Collaboration Unlocked + +This major release adds **git-based config sources**, enabling teams to fetch configs from private/team repositories in addition to the public API. This unlocks team collaboration, enterprise deployment, and custom config collections. + +### ๐ŸŽฏ Major Features + +#### Git-Based Config Sources (Issue [#211](https://github.com/yusufkaraaslan/Skill_Seekers/issues/211)) +- **Multi-source config management** - Fetch from API, git URL, or named sources +- **Private repository support** - GitHub, GitLab, Bitbucket, Gitea, and custom git servers +- **Team collaboration** - Share configs across 3-5 person teams with version control +- **Enterprise scale** - Support 500+ developers with priority-based resolution +- **Secure authentication** - Environment variable tokens only (GITHUB_TOKEN, GITLAB_TOKEN, etc.) +- **Intelligent caching** - Shallow clone (10-50x faster), auto-pull updates +- **Offline mode** - Works with cached repos when offline +- **Backward compatible** - Existing API-based configs work unchanged + +#### New MCP Tools +- **`add_config_source`** - Register git repositories as config sources + - Auto-detects source type (GitHub, GitLab, etc.) + - Auto-selects token environment variable + - Priority-based resolution for multiple sources + - SSH URL support (auto-converts to HTTPS + token) + +- **`list_config_sources`** - View all registered sources + - Shows git URL, branch, priority, token env + - Filter by enabled/disabled status + - Sorted by priority (lower = higher priority) + +- **`remove_config_source`** - Unregister sources + - Removes from registry (cache preserved for offline use) + - Helpful error messages with available sources + +- **Enhanced `fetch_config`** - Three modes + 1. **Named source mode** - `fetch_config(source="team", config_name="react-custom")` + 2. **Git URL mode** - `fetch_config(git_url="https://...", config_name="react-custom")` + 3. **API mode** - `fetch_config(config_name="react")` (unchanged) + +### Added + +#### Core Infrastructure +- **GitConfigRepo class** (`src/skill_seekers/mcp/git_repo.py`, 283 lines) + - `clone_or_pull()` - Shallow clone with auto-pull and force refresh + - `find_configs()` - Recursive *.json discovery (excludes .git) + - `get_config()` - Load config with case-insensitive matching + - `inject_token()` - Convert SSH to HTTPS with token authentication + - `validate_git_url()` - Support HTTPS, SSH, and file:// URLs + - Comprehensive error handling (auth failures, missing repos, corrupted caches) + +- **SourceManager class** (`src/skill_seekers/mcp/source_manager.py`, 260 lines) + - `add_source()` - Register/update sources with validation + - `get_source()` - Retrieve by name with helpful errors + - `list_sources()` - List all/enabled sources sorted by priority + - `remove_source()` - Unregister sources + - `update_source()` - Modify specific fields + - Atomic file I/O (write to temp, then rename) + - Auto-detect token env vars from source type + +#### Storage & Caching +- **Registry file**: `~/.skill-seekers/sources.json` + - Stores source metadata (URL, branch, priority, timestamps) + - Version-controlled schema (v1.0) + - Atomic writes prevent corruption + +- **Cache directory**: `$SKILL_SEEKERS_CACHE_DIR` (default: `~/.skill-seekers/cache/`) + - One subdirectory per source + - Shallow git clones (depth=1, single-branch) + - Configurable via environment variable + +#### Documentation +- **docs/GIT_CONFIG_SOURCES.md** (800+ lines) - Comprehensive guide + - Quick start, architecture, authentication + - MCP tools reference with examples + - Use cases (small teams, enterprise, open source) + - Best practices, troubleshooting, advanced topics + - Complete API reference + +- **configs/example-team/** - Example repository for testing + - `react-custom.json` - Custom React config with metadata + - `vue-internal.json` - Internal Vue config + - `company-api.json` - Company API config example + - `README.md` - Usage guide and best practices + - `test_e2e.py` - End-to-end test script (7 steps, 100% passing) + +- **README.md** - Updated with git source examples + - New "Private Config Repositories" section in Key Features + - Comprehensive usage examples (quick start, team collaboration, enterprise) + - Supported platforms and authentication + - Example workflows for different team sizes + +### Dependencies +- **GitPython>=3.1.40** - Git operations (clone, pull, branch switching) + - Replaces subprocess calls with high-level API + - Better error handling and cross-platform support + +### Testing +- **83 new tests** (100% passing) + - `tests/test_git_repo.py` (35 tests) - GitConfigRepo functionality + - Initialization, URL validation, token injection + - Clone/pull operations, config discovery, error handling + - `tests/test_source_manager.py` (48 tests) - SourceManager functionality + - Add/get/list/remove/update sources + - Registry persistence, atomic writes, default token env + - `tests/test_mcp_git_sources.py` (18 tests) - MCP integration + - All 3 fetch modes (API, Git URL, Named Source) + - Source management tools (add/list/remove) + - Complete workflow (add โ†’ fetch โ†’ remove) + - Error scenarios (auth failures, missing configs) + +### Improved +- **MCP server** - Now supports 12 tools (up from 9) + - Maintains backward compatibility + - Enhanced error messages with available sources + - Priority-based config resolution + +### Use Cases + +**Small Teams (3-5 people):** +```bash +# One-time setup +add_config_source(name="team", git_url="https://github.com/myteam/configs.git") + +# Daily usage +fetch_config(source="team", config_name="react-internal") +``` + +**Enterprise (500+ developers):** +```bash +# IT pre-configures sources +add_config_source(name="platform", ..., priority=1) +add_config_source(name="mobile", ..., priority=2) + +# Developers use transparently +fetch_config(config_name="platform-api") # Finds in platform source +``` + +**Example Repository:** +```bash +cd /path/to/Skill_Seekers +python3 configs/example-team/test_e2e.py # Test E2E workflow +``` + +### Backward Compatibility +- โœ… All existing configs work unchanged +- โœ… API mode still default (no registration needed) +- โœ… No breaking changes to MCP tools or CLI +- โœ… New parameters are optional (git_url, source, refresh) + +### Security +- โœ… Tokens via environment variables only (not in files) +- โœ… Shallow clones minimize attack surface +- โœ… No token storage in registry file +- โœ… Secure token injection (auto-converts SSH to HTTPS) + +### Performance +- โœ… Shallow clone: 10-50x faster than full clone +- โœ… Minimal disk space (no git history) +- โœ… Auto-pull: Only fetches changes (not full re-clone) +- โœ… Offline mode: Works with cached repos + +### Files Changed +- Modified (2): `pyproject.toml`, `src/skill_seekers/mcp/server.py` +- Added (6): 3 source files + 3 test files + 1 doc + 1 example repo +- Total lines added: ~2,600 + +### Migration Guide + +No migration needed! This is purely additive: + +```python +# Before v2.2.0 (still works) +fetch_config(config_name="react") + +# New in v2.2.0 (optional) +add_config_source(name="team", git_url="...") +fetch_config(source="team", config_name="react-custom") +``` + +### Known Limitations +- MCP async tests require pytest-asyncio (added to dev dependencies) +- Example repository uses 'master' branch (git init default) + +### See Also +- [GIT_CONFIG_SOURCES.md](docs/GIT_CONFIG_SOURCES.md) - Complete guide +- [configs/example-team/](configs/example-team/) - Example repository +- [Issue #211](https://github.com/yusufkaraaslan/Skill_Seekers/issues/211) - Original feature request + +--- + +## [2.1.1] - 2025-11-30 + +### Fixed +- **submit_config MCP tool** - Comprehensive validation and format support ([#11](https://github.com/yusufkaraaslan/Skill_Seekers/issues/11)) + - Now uses ConfigValidator for comprehensive validation (previously only checked 3 fields) + - Validates name format (alphanumeric, hyphens, underscores only) + - Validates URL formats (must start with http:// or https://) + - Validates selectors, patterns, rate limits, and max_pages + - **Supports both legacy and unified config formats** + - Provides detailed error messages with validation failures and examples + - Adds warnings for unlimited scraping configurations + - Enhanced category detection for multi-source configs + - 8 comprehensive test cases added to test_mcp_server.py + - Updated GitHub issue template with format type and validation warnings + +--- + +## [2.1.1] - 2025-11-30 + +### ๐Ÿš€ GitHub Repository Analysis Enhancements + +This release significantly improves GitHub repository scraping with unlimited local analysis, configurable directory exclusions, and numerous bug fixes. + +### Added +- **Configurable directory exclusions** for local repository analysis ([#203](https://github.com/yusufkaraaslan/Skill_Seekers/issues/203)) + - `exclude_dirs_additional`: Extend default exclusions with custom directories + - `exclude_dirs`: Replace default exclusions entirely (advanced users) + - 19 comprehensive tests covering all scenarios + - Logging: INFO for extend mode, WARNING for replace mode +- **Unlimited local repository analysis** via `local_repo_path` configuration parameter +- **Auto-exclusion** of virtual environments, build artifacts, and cache directories +- **Support for analyzing repositories without GitHub API rate limits** (50 โ†’ unlimited files) +- **Skip llms.txt option** - Force HTML scraping even when llms.txt is detected ([#198](https://github.com/yusufkaraaslan/Skill_Seekers/pull/198)) + +### Fixed +- Fixed logger initialization error causing `AttributeError: 'NoneType' object has no attribute 'setLevel'` ([#190](https://github.com/yusufkaraaslan/Skill_Seekers/issues/190)) +- Fixed 3 NoneType subscriptable errors in release tag parsing +- Fixed relative import paths causing `ModuleNotFoundError` +- Fixed hardcoded 50-file analysis limit preventing comprehensive code analysis +- Fixed GitHub API file tree limitation (140 โ†’ 345 files discovered) +- Fixed AST parser "not iterable" errors eliminating 100% of parsing failures (95 โ†’ 0 errors) +- Fixed virtual environment file pollution reducing file tree noise by 95% +- Fixed `force_rescrape` flag not checked before interactive prompt causing EOFError in CI/CD environments + +### Improved +- Increased code analysis coverage from 14% to 93.6% (+79.6 percentage points) +- Improved file discovery from 140 to 345 files (+146%) +- Improved class extraction from 55 to 585 classes (+964%) +- Improved function extraction from 512 to 2,784 functions (+444%) +- Test suite expanded to 427 tests (up from 391) + +--- + +## [2.1.0] - 2025-11-12 + +### ๐ŸŽ‰ Major Enhancement: Quality Assurance + Race Condition Fixes + +This release focuses on quality and reliability improvements, adding comprehensive quality checks and fixing critical race conditions in the enhancement workflow. + +### ๐Ÿš€ Major Features + +#### Comprehensive Quality Checker +- **Automatic quality checks before packaging** - Validates skill quality before upload +- **Quality scoring system** - 0-100 score with A-F grades +- **Enhancement verification** - Checks for template text, code examples, sections +- **Structure validation** - Validates SKILL.md, references/ directory +- **Content quality checks** - YAML frontmatter, language tags, "When to Use" section +- **Link validation** - Validates internal markdown links +- **Detailed reporting** - Errors, warnings, and info messages with file locations +- **CLI tool** - `skill-seekers-quality-checker` with verbose and strict modes + +#### Headless Enhancement Mode (Default) +- **No terminal windows** - Runs enhancement in background by default +- **Proper waiting** - Main console waits for enhancement to complete +- **Timeout protection** - 10-minute default timeout (configurable) +- **Verification** - Checks that SKILL.md was actually updated +- **Progress messages** - Clear status updates during enhancement +- **Interactive mode available** - `--interactive-enhancement` flag for terminal mode + +### Added + +#### New CLI Tools +- **quality_checker.py** - Comprehensive skill quality validation + - Structure checks (SKILL.md, references/) + - Enhancement verification (code examples, sections) + - Content validation (frontmatter, language tags) + - Link validation (internal markdown links) + - Quality scoring (0-100 + A-F grade) + +#### New Features +- **Headless enhancement** - `skill-seekers-enhance` runs in background by default +- **Quality checks in packaging** - Automatic validation before creating .zip +- **MCP quality skip** - MCP server skips interactive checks +- **Enhanced error handling** - Better error messages and timeout handling + +#### Tests +- **+12 quality checker tests** - Comprehensive validation testing +- **391 total tests passing** - Up from 379 in v2.0.0 +- **0 test failures** - All tests green +- **CI improvements** - Fixed macOS terminal detection tests + +### Changed + +#### Enhancement Workflow +- **Default mode changed** - Headless mode is now default (was terminal mode) +- **Waiting behavior** - Main console waits for enhancement completion +- **No race conditions** - Fixed "Package your skill" message appearing too early +- **Better progress** - Clear status messages during enhancement + +#### Package Workflow +- **Quality checks added** - Automatic validation before packaging +- **User confirmation** - Ask to continue if warnings/errors found +- **Skip option** - `--skip-quality-check` flag to bypass checks +- **MCP context** - Automatically skips checks in non-interactive contexts + +#### CLI Arguments +- **doc_scraper.py:** + - Updated `--enhance-local` help text (mentions headless mode) + - Added `--interactive-enhancement` flag +- **enhance_skill_local.py:** + - Changed default to `headless=True` + - Added `--interactive-enhancement` flag + - Added `--timeout` flag (default: 600 seconds) +- **package_skill.py:** + - Added `--skip-quality-check` flag + +### Fixed + +#### Critical Bugs +- **Enhancement race condition** - Main console no longer exits before enhancement completes +- **MCP stdin errors** - MCP server now skips interactive prompts +- **Terminal detection tests** - Fixed for headless mode default + +#### Enhancement Issues +- **Process detachment** - subprocess.run() now waits properly instead of Popen() +- **Timeout handling** - Added timeout protection to prevent infinite hangs +- **Verification** - Checks file modification time and size to verify success +- **Error messages** - Better error handling and user-friendly messages + +#### Test Fixes +- **package_skill tests** - Added skip_quality_check=True to prevent stdin errors +- **Terminal detection tests** - Updated to use headless=False for interactive tests +- **MCP server tests** - Fixed to skip quality checks in non-interactive context + +### Technical Details + +#### New Modules +- `src/skill_seekers/cli/quality_checker.py` - Quality validation engine +- `tests/test_quality_checker.py` - 12 comprehensive tests + +#### Modified Modules +- `src/skill_seekers/cli/enhance_skill_local.py` - Added headless mode +- `src/skill_seekers/cli/doc_scraper.py` - Updated enhancement integration +- `src/skill_seekers/cli/package_skill.py` - Added quality checks +- `src/skill_seekers/mcp/server.py` - Skip quality checks in MCP context +- `tests/test_package_skill.py` - Updated for quality checker +- `tests/test_terminal_detection.py` - Updated for headless default + +#### Commits in This Release +- `e279ed6` - Phase 1: Enhancement race condition fix (headless mode) +- `3272f9c` - Phases 2 & 3: Quality checker implementation +- `2dd1027` - Phase 4: Tests (+12 quality checker tests) +- `befcb89` - CI Fix: Skip quality checks in MCP context +- `67ab627` - CI Fix: Update terminal tests for headless default + +### Upgrade Notes + +#### Breaking Changes +- **Headless mode default** - Enhancement now runs in background by default + - Use `--interactive-enhancement` if you want the old terminal mode + - Affects: `skill-seekers-enhance` and `skill-seekers scrape --enhance-local` + +#### New Behavior +- **Quality checks** - Packaging now runs quality checks by default + - May prompt for confirmation if warnings/errors found + - Use `--skip-quality-check` to bypass (not recommended) + +#### Recommendations +- **Try headless mode** - Faster and more reliable than terminal mode +- **Review quality reports** - Fix warnings before packaging +- **Update scripts** - Add `--skip-quality-check` to automated packaging scripts if needed + +### Migration Guide + +**If you want the old terminal mode behavior:** +```bash +# Old (v2.0.0): Default was terminal mode +skill-seekers-enhance output/react/ + +# New (v2.1.0): Use --interactive-enhancement +skill-seekers-enhance output/react/ --interactive-enhancement +``` + +**If you want to skip quality checks:** +```bash +# Add --skip-quality-check to package command +skill-seekers-package output/react/ --skip-quality-check +``` + +--- + +## [2.0.0] - 2025-11-11 + +### ๐ŸŽ‰ Major Release: PyPI Publication + Modern Python Packaging + +**Skill Seekers is now available on PyPI!** Install with: `pip install skill-seekers` + +This is a major milestone release featuring complete restructuring for modern Python packaging, comprehensive testing improvements, and publication to the Python Package Index. + +### ๐Ÿš€ Major Changes + +#### PyPI Publication +- **Published to PyPI** - https://pypi.org/project/skill-seekers/ +- **Installation:** `pip install skill-seekers` or `uv tool install skill-seekers` +- **No cloning required** - Install globally or in virtual environments +- **Automatic dependency management** - All dependencies handled by pip/uv + +#### Modern Python Packaging +- **pyproject.toml-based configuration** - Standard PEP 621 metadata +- **src/ layout structure** - Best practice package organization +- **Entry point scripts** - `skill-seekers` command available globally +- **Proper dependency groups** - Separate dev, test, and MCP dependencies +- **Build backend** - setuptools-based build with uv support + +#### Unified CLI Interface +- **Single `skill-seekers` command** - Git-style subcommands +- **Subcommands:** `scrape`, `github`, `pdf`, `unified`, `enhance`, `package`, `upload`, `estimate` +- **Consistent interface** - All tools accessible through one entry point +- **Help system** - Comprehensive `--help` for all commands + +### Added + +#### Testing Infrastructure +- **379 passing tests** (up from 299) - Comprehensive test coverage +- **0 test failures** - All tests passing successfully +- **Test suite improvements:** + - Fixed import paths for src/ layout + - Updated CLI tests for unified entry points + - Added package structure verification tests + - Fixed MCP server import tests + - Added pytest configuration in pyproject.toml + +#### Documentation +- **Updated README.md** - PyPI badges, reordered installation options +- **ROADMAP.md** - Comprehensive roadmap with task-based approach +- **Installation guides** - Simplified with PyPI as primary method +- **Testing documentation** - How to run full test suite + +### Changed + +#### Package Structure +- **Moved to src/ layout:** + - `src/skill_seekers/` - Main package + - `src/skill_seekers/cli/` - CLI tools + - `src/skill_seekers/mcp/` - MCP server +- **Import paths updated** - All imports use proper package structure +- **Entry points configured** - All CLI tools available as commands + +#### Import Fixes +- **Fixed `merge_sources.py`** - Corrected conflict_detector import (`.conflict_detector`) +- **Fixed MCP server tests** - Updated to use `skill_seekers.mcp.server` imports +- **Fixed test paths** - All tests updated for src/ layout + +### Fixed + +#### Critical Bugs +- **Import path errors** - Fixed relative imports in CLI modules +- **MCP test isolation** - Added proper MCP availability checks +- **Package installation** - Resolved entry point conflicts +- **Dependency resolution** - All dependencies properly specified + +#### Test Improvements +- **17 test fixes** - Updated for modern package structure +- **MCP test guards** - Proper skipif decorators for MCP tests +- **CLI test updates** - Accept both exit codes 0 and 2 for help +- **Path validation** - Tests verify correct package structure + +### Technical Details + +#### Build System +- **Build backend:** setuptools.build_meta +- **Build command:** `uv build` +- **Publish command:** `uv publish` +- **Distribution formats:** wheel + source tarball + +#### Dependencies +- **Core:** requests, beautifulsoup4, PyGithub, mcp, httpx +- **PDF:** PyMuPDF, Pillow, pytesseract +- **Dev:** pytest, pytest-cov, pytest-anyio, mypy +- **MCP:** mcp package for Claude Code integration + +### Migration Guide + +#### For Users +**Old way:** +```bash +git clone https://github.com/yusufkaraaslan/Skill_Seekers.git +cd Skill_Seekers +pip install -r requirements.txt +python3 cli/doc_scraper.py --config configs/react.json +``` + +**New way:** +```bash +pip install skill-seekers +skill-seekers scrape --config configs/react.json +``` + +#### For Developers +- Update imports: `from cli.* โ†’ from skill_seekers.cli.*` +- Use `pip install -e ".[dev]"` for development +- Run tests: `python -m pytest` +- Entry points instead of direct script execution + +### Breaking Changes +- **CLI interface changed** - Use `skill-seekers` command instead of `python3 cli/...` +- **Import paths changed** - Package now at `skill_seekers.*` instead of `cli.*` +- **Installation method changed** - PyPI recommended over git clone + +### Deprecations +- **Direct script execution** - Still works but deprecated (use `skill-seekers` command) +- **Old import patterns** - Legacy imports still work but will be removed in v3.0 + +### Compatibility +- **Python 3.10+** required +- **Backward compatible** - Old scripts still work with legacy CLI +- **Config files** - No changes required +- **Output format** - No changes to generated skills + +--- + +## [1.3.0] - 2025-10-26 + +### Added - Refactoring & Performance Improvements +- **Async/Await Support for Parallel Scraping** (2-3x performance boost) + - `--async` flag to enable async mode + - `async def scrape_page_async()` method using httpx.AsyncClient + - `async def scrape_all_async()` method with asyncio.gather() + - Connection pooling for better performance + - asyncio.Semaphore for concurrency control + - Comprehensive async testing (11 new tests) + - Full documentation in ASYNC_SUPPORT.md + - Performance: ~55 pages/sec vs ~18 pages/sec (sync) + - Memory: 40 MB vs 120 MB (66% reduction) +- **Python Package Structure** (Phase 0 Complete) + - `cli/__init__.py` - CLI tools package with clean imports + - `skill_seeker_mcp/__init__.py` - MCP server package (renamed from mcp/) + - `skill_seeker_mcp/tools/__init__.py` - MCP tools subpackage + - Proper package imports: `from cli import constants` +- **Centralized Configuration Module** + - `cli/constants.py` with 18 configuration constants + - `DEFAULT_ASYNC_MODE`, `DEFAULT_RATE_LIMIT`, `DEFAULT_MAX_PAGES` + - Enhancement limits, categorization scores, file limits + - All magic numbers now centralized and configurable +- **Code Quality Improvements** + - Converted 71 print() statements to proper logging calls + - Added type hints to all DocToSkillConverter methods + - Fixed all mypy type checking issues + - Installed types-requests for better type safety +- Multi-variant llms.txt detection: downloads all 3 variants (full, standard, small) +- Automatic .txt โ†’ .md file extension conversion +- No content truncation: preserves complete documentation +- `detect_all()` method for finding all llms.txt variants +- `get_proper_filename()` for correct .md naming + +### Changed +- `_try_llms_txt()` now downloads all available variants instead of just one +- Reference files now contain complete content (no 2500 char limit) +- Code samples now include full code (no 600 char limit) +- Test count increased from 207 to 299 (92 new tests) +- All print() statements replaced with logging (logger.info, logger.warning, logger.error) +- Better IDE support with proper package structure +- Code quality improved from 5.5/10 to 6.5/10 + +### Fixed +- File extension bug: llms.txt files now saved as .md +- Content loss: 0% truncation (was 36%) +- Test isolation issues in test_async_scraping.py (proper cleanup with try/finally) +- Import issues: no more sys.path.insert() hacks needed +- .gitignore: added test artifacts (.pytest_cache, .coverage, htmlcov, etc.) + +--- + +## [1.2.0] - 2025-10-23 + +### ๐Ÿš€ PDF Advanced Features Release + +Major enhancement to PDF extraction capabilities with Priority 2 & 3 features. + +### Added + +#### Priority 2: Support More PDF Types +- **OCR Support for Scanned PDFs** + - Automatic text extraction from scanned documents using Tesseract OCR + - Fallback mechanism when page text < 50 characters + - Integration with pytesseract and Pillow + - Command: `--ocr` flag + - New dependencies: `Pillow==11.0.0`, `pytesseract==0.3.13` + +- **Password-Protected PDF Support** + - Handle encrypted PDFs with password authentication + - Clear error messages for missing/wrong passwords + - Secure password handling + - Command: `--password PASSWORD` flag + +- **Complex Table Extraction** + - Extract tables from PDFs using PyMuPDF's table detection + - Capture table data as 2D arrays with metadata (bbox, row/col count) + - Integration with skill references in markdown format + - Command: `--extract-tables` flag + +#### Priority 3: Performance Optimizations +- **Parallel Page Processing** + - 3x faster PDF extraction using ThreadPoolExecutor + - Auto-detect CPU count or custom worker specification + - Only activates for PDFs with > 5 pages + - Commands: `--parallel` and `--workers N` flags + - Benchmarks: 500-page PDF reduced from 4m 10s to 1m 15s + +- **Intelligent Caching** + - In-memory cache for expensive operations (text extraction, code detection, quality scoring) + - 50% faster on re-runs + - Command: `--no-cache` to disable (enabled by default) + +#### New Documentation +- **`docs/PDF_ADVANCED_FEATURES.md`** (580 lines) + - Complete usage guide for all advanced features + - Installation instructions + - Performance benchmarks showing 3x speedup + - Best practices and troubleshooting + - API reference with all parameters + +#### Testing +- **New test file:** `tests/test_pdf_advanced_features.py` (568 lines, 26 tests) + - TestOCRSupport (5 tests) + - TestPasswordProtection (4 tests) + - TestTableExtraction (5 tests) + - TestCaching (5 tests) + - TestParallelProcessing (4 tests) + - TestIntegration (3 tests) +- **Updated:** `tests/test_pdf_extractor.py` (23 tests fixed and passing) +- **Total PDF tests:** 49/49 PASSING โœ… (100% pass rate) + +### Changed +- Enhanced `cli/pdf_extractor_poc.py` with all advanced features +- Updated `requirements.txt` with new dependencies +- Updated `README.md` with PDF advanced features usage +- Updated `docs/TESTING.md` with new test counts (142 total tests) + +### Performance Improvements +- **3.3x faster** with parallel processing (8 workers) +- **1.7x faster** on re-runs with caching enabled +- Support for unlimited page PDFs (no more 500-page limit) + +### Dependencies +- Added `Pillow==11.0.0` for image processing +- Added `pytesseract==0.3.13` for OCR support +- Tesseract OCR engine (system package, optional) + +--- + +## [1.1.0] - 2025-10-22 + +### ๐ŸŒ Documentation Scraping Enhancements + +Major improvements to documentation scraping with unlimited pages, parallel processing, and new configs. + +### Added + +#### Unlimited Scraping & Performance +- **Unlimited Page Scraping** - Removed 500-page limit, now supports unlimited pages +- **Parallel Scraping Mode** - Process multiple pages simultaneously for faster scraping +- **Dynamic Rate Limiting** - Smart rate limit control to avoid server blocks +- **CLI Utilities** - New helper scripts for common tasks + +#### New Configurations +- **Ansible Core 2.19** - Complete Ansible documentation config +- **Claude Code** - Documentation for this very tool! +- **Laravel 9.x** - PHP framework documentation + +#### Testing & Quality +- Comprehensive test coverage for CLI utilities +- Parallel scraping test suite +- Virtual environment setup documentation +- Thread-safety improvements + +### Fixed +- Thread-safety issues in parallel scraping +- CLI path references across all documentation +- Flaky upload_skill tests +- MCP server streaming subprocess implementation + +### Changed +- All CLI examples now use `cli/` directory prefix +- Updated documentation structure +- Enhanced error handling + +--- + +## [1.0.0] - 2025-10-19 + +### ๐ŸŽ‰ First Production Release + +This is the first production-ready release of Skill Seekers with complete feature set, full test coverage, and comprehensive documentation. + +### Added + +#### Smart Auto-Upload Feature +- New `upload_skill.py` CLI tool for automatic API-based upload +- Enhanced `package_skill.py` with `--upload` flag +- Smart API key detection with graceful fallback +- Cross-platform folder opening in `utils.py` +- Helpful error messages instead of confusing errors + +#### MCP Integration Enhancements +- **9 MCP tools** (added `upload_skill` tool) +- `mcp__skill-seeker__upload_skill` - Upload .zip files to Claude automatically +- Enhanced `package_skill` tool with smart auto-upload parameter +- Updated all MCP documentation to reflect 9 tools + +#### Documentation Improvements +- Updated README with version badge (v1.0.0) +- Enhanced upload guide with 3 upload methods +- Updated MCP setup guide with all 9 tools +- Comprehensive test documentation (14/14 tests) +- All references to tool counts corrected + +### Fixed +- Missing `import os` in `mcp/server.py` +- `package_skill.py` exit code behavior (now exits 0 when API key missing) +- Improved UX with helpful messages instead of errors + +### Changed +- Test count badge updated (96 โ†’ 14 passing) +- All documentation references updated to 9 tools + +### Testing +- **CLI Tests:** 8/8 PASSED โœ… +- **MCP Tests:** 6/6 PASSED โœ… +- **Total:** 14/14 PASSED (100%) + +--- + +## [0.4.0] - 2025-10-18 + +### Added + +#### Large Documentation Support (40K+ Pages) +- Config splitting functionality for massive documentation sites +- Router/hub skill generation for intelligent query routing +- Checkpoint/resume feature for long scrapes +- Parallel scraping support for faster processing +- 4 split strategies: auto, category, router, size + +#### New CLI Tools +- `split_config.py` - Split large configs into focused sub-skills +- `generate_router.py` - Generate router/hub skills +- `package_multi.py` - Package multiple skills at once + +#### New MCP Tools +- `split_config` - Split large documentation via MCP +- `generate_router` - Generate router skills via MCP + +#### Documentation +- New `docs/LARGE_DOCUMENTATION.md` guide +- Example config: `godot-large-example.json` (40K pages) + +### Changed +- MCP tool count: 6 โ†’ 8 tools +- Updated documentation for large docs workflow + +--- + +## [0.3.0] - 2025-10-15 + +### Added + +#### MCP Server Integration +- Complete MCP server implementation (`mcp/server.py`) +- 6 MCP tools for Claude Code integration: + - `list_configs` + - `generate_config` + - `validate_config` + - `estimate_pages` + - `scrape_docs` + - `package_skill` + +#### Setup & Configuration +- Automated setup script (`setup_mcp.sh`) +- MCP configuration examples +- Comprehensive MCP setup guide (`docs/MCP_SETUP.md`) +- MCP testing guide (`docs/TEST_MCP_IN_CLAUDE_CODE.md`) + +#### Testing +- 31 comprehensive unit tests for MCP server +- Integration tests via Claude Code MCP protocol +- 100% test pass rate + +#### Documentation +- Complete MCP integration documentation +- Natural language usage examples +- Troubleshooting guides + +### Changed +- Restructured project as monorepo with CLI and MCP server +- Moved CLI tools to `cli/` directory +- Added MCP server to `mcp/` directory + +--- + +## [0.2.0] - 2025-10-10 + +### Added + +#### Testing & Quality +- Comprehensive test suite with 71 tests +- 100% test pass rate +- Test coverage for all major features +- Config validation tests + +#### Optimization +- Page count estimator (`estimate_pages.py`) +- Framework config optimizations with `start_urls` +- Better URL pattern coverage +- Improved scraping efficiency + +#### New Configs +- Kubernetes documentation config +- Tailwind CSS config +- Astro framework config + +### Changed +- Optimized all framework configs +- Improved categorization accuracy +- Enhanced error messages + +--- + +## [0.1.0] - 2025-10-05 + +### Added + +#### Initial Release +- Basic documentation scraper functionality +- Manual skill creation +- Framework configs (Godot, React, Vue, Django, FastAPI) +- Smart categorization system +- Code language detection +- Pattern extraction +- Local and API-based enhancement options +- Basic packaging functionality + +#### Core Features +- BFS traversal for documentation scraping +- CSS selector-based content extraction +- Smart categorization with scoring +- Code block detection and formatting +- Caching system for scraped data +- Interactive mode for config creation + +#### Documentation +- README with quick start guide +- Basic usage documentation +- Configuration file examples + +--- + +## Release Links + +- [v1.2.0](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v1.2.0) - PDF Advanced Features +- [v1.1.0](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v1.1.0) - Documentation Scraping Enhancements +- [v1.0.0](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v1.0.0) - Production Release +- [v0.4.0](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v0.4.0) - Large Documentation Support +- [v0.3.0](https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v0.3.0) - MCP Integration + +--- + +## Version History Summary + +| Version | Date | Highlights | +|---------|------|------------| +| **1.2.0** | 2025-10-23 | ๐Ÿ“„ PDF advanced features: OCR, passwords, tables, 3x faster | +| **1.1.0** | 2025-10-22 | ๐ŸŒ Unlimited scraping, parallel mode, new configs (Ansible, Laravel) | +| **1.0.0** | 2025-10-19 | ๐Ÿš€ Production release, auto-upload, 9 MCP tools | +| **0.4.0** | 2025-10-18 | ๐Ÿ“š Large docs support (40K+ pages) | +| **0.3.0** | 2025-10-15 | ๐Ÿ”Œ MCP integration with Claude Code | +| **0.2.0** | 2025-10-10 | ๐Ÿงช Testing & optimization | +| **0.1.0** | 2025-10-05 | ๐ŸŽฌ Initial release | + +--- + +[Unreleased]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v1.2.0...HEAD +[1.2.0]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v1.1.0...v1.2.0 +[1.1.0]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v1.0.0...v1.1.0 +[1.0.0]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v0.4.0...v1.0.0 +[0.4.0]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v0.3.0...v0.4.0 +[0.3.0]: https://github.com/yusufkaraaslan/Skill_Seekers/compare/v0.2.0...v0.3.0 +[0.2.0]: https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v0.2.0 +[0.1.0]: https://github.com/yusufkaraaslan/Skill_Seekers/releases/tag/v0.1.0 diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..65b8714 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,285 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +**Skill Seekers** converts documentation from 18 source types into production-ready formats for 21+ AI platforms (LLM platforms, RAG frameworks, vector databases, AI coding assistants). Published on PyPI as `skill-seekers`. + +**Version:** 3.7.0 | **Python:** 3.10+ | **Website:** https://skillseekersweb.com/ + +**Architecture:** See `docs/UML_ARCHITECTURE.md` for UML diagrams and module overview. StarUML project at `docs/UML/skill_seekers.mdj`. Refactor state/history: `docs/UNIFICATION_PLAN.md` (Grand Unification โ€” all 5 phases done; remaining cosmetic items listed there). + +## Essential Commands + +```bash +# REQUIRED before running tests or CLI (src/ layout) +pip install -e . + +# Run all tests (NEVER skip - all must pass before commits) +pytest tests/ -v + +# Fast iteration (skip slow MCP tests ~20min) +pytest tests/ --ignore=tests/test_mcp_fastmcp.py --ignore=tests/test_mcp_server.py --ignore=tests/test_install_skill_e2e.py -q + +# Single test +pytest tests/test_scraper_features.py::test_detect_language -vv -s + +# Code quality (must pass before push - matches CI) +uvx ruff check src/ tests/ +uvx ruff format --check src/ tests/ +mypy src/skill_seekers # continue-on-error in CI + +# Auto-fix lint/format issues +uvx ruff check --fix --unsafe-fixes src/ tests/ +uvx ruff format src/ tests/ + +# Build & publish +uv build +uv publish +``` + +## CI Matrix + +Runs on push/PR to `main` or `development`. Lint job (Python 3.12, Ubuntu) + Test job (Ubuntu + macOS, Python 3.10/3.11/3.12, excludes macOS+3.10). Both must pass for merge. + +## Git Workflow + +- **Main branch:** `main` (requires tests + 1 review) +- **Development branch:** `development` (default PR target, requires tests) +- **Feature branches:** `feature/{task-id}-{description}` from `development` +- PRs always target `development`, never `main` directly + +## Architecture + +### CLI: Unified create command + +Entry point `src/skill_seekers/cli/main.py`. The `create` command is the **primary** entry point for skill creation โ€” it auto-detects source type and routes to the appropriate `SkillConverter`. The `scan` command (added in #327) is a separate discovery step for projects with multiple frameworks; it emits one config file per detected framework and you then run `create` on each. + +``` +skill-seekers create # Auto-detect: URL, owner/repo, ./path, file.pdf, etc. +skill-seekers scan

# AI-driven discovery โ†’ emits one config per detected framework + -codebase.json +skill-seekers package # Package for platform (--target claude/gemini/openai/markdown/minimax/opencode/kimi/deepseek/qwen/openrouter/together/fireworks/langchain/llama-index/haystack/chroma/faiss/weaviate/qdrant/pinecone/ibm-bob) +``` + +### Scan command (issue #327) + +`skill-seekers scan ` is an AI-driven project knowledge-base bootstrapper. Pipeline in `src/skill_seekers/cli/scan_command.py`: + +1. `collect_signals()` in `signal_collectors.py` โ€” deterministic, bounded gathering of manifests + README + Dockerfile/CI + sampled source files + git remote. **Per-kind byte budgets** (24 KB manifest / 6 KB README / 6 KB CI / 28 KB samples, total 64 KB) so a fat package.json can't crowd out other kinds. `_SOURCE_DIRS` covers ~14 layouts (Go `cmd/`, Rust `crates/`, JS monorepo `apps/packages/`, Maven `source/`, Django at root); also walks root one level deep for flat-layout Python. +2. `detect_with_ai(bundle, AgentClient)` โ€” one LLM call, structured JSON output. **Source signals are first-2-KB of each file** (whole-file sampling, no regex parsing โ€” added in WS4 because regex missed Go multi-line imports + Rust `mod`/`extern crate`). Canonical-slug prompt + the canonical-name resolver are coupled โ€” change one, update the other. +3. `resolve_or_generate_with_status()` โ€” for each detection: try `out_dir/.json` (cache from prior run), then `resolve_config_path` from `config_fetcher` with multiple canonical name candidates (`_canonical_name_candidates` handles `"Godot Engine"` โ†’ `"godot"`, plus CJK / European suffixes like `"Godot ๅผ•ๆ“Ž"`, `"React ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏ"`, `"Lodash Bibliothek"`), then `generate_config_with_ai` as the last resort. Always appends `.json` to lookup names so local-disk and user-dir resolution actually finds files. Always stamps `metadata.detected_version` (nested, not top-level โ€” `metadata.version` already exists and means config-schema version). +4. `emit_codebase_config()` โ€” always writes `-codebase.json` (a `type: local` source pointed at the project root). +5. `diff_against_existing()` โ€” keyed by **filename slug** (not internal `data["name"]`) so re-scans don't churn when the AI returns a display name vs the registry canonical slug. +6. `_archive_removed()` โ€” when a config disappears from detections, MOVE (not delete โ€” user may have hand-edited) to `out_dir/.archived//`. Runs after diff, before fresh writes. +7. `maybe_publish()` โ€” **native async** (WS11). Opt-in submission of freshly AI-generated configs to the community registry. Pre-checks `GITHUB_TOKEN`. Idempotency guard: `_find_existing_issue` queries GitHub Search API for an existing open issue with the same config name before submitting. Retries transient failures (rate limit, 5xx) with 0s/5s/15s backoff. `_prompt_async` wraps `input()` via `asyncio.to_thread` so the event loop isn't blocked. + +**CLI dispatch** uses the `COMMAND_CLASSES` table in `main.py` (added in WS1). `scan` and `doctor` are dispatched as `Cls(args).execute()` consuming the parsed argparse namespace directly โ€” no `_reconstruct_argv` hack, no duplicate argparse. `ScanCommand.execute()` is the single `asyncio.run` boundary wrapping `run_scan` (sync) + `maybe_publish` (async). Remaining ~14 commands still use the legacy `COMMAND_MODULES` dispatch; they're flagged for migration. + +**Cost guardrails**: `--max-ai-generations N` (default 10) caps unbounded AI generation; `--dry-run` previews without writing or invoking AI; `--probe-urls` HEAD-checks AI-generated URLs with retry-on-404 and stamps `metadata._url_unverified` on confirmed-bad URLs. + +**Safety**: All writes use `_atomic_write_json` (`os.replace` after writing to `.tmp`) so a `KeyboardInterrupt` mid-write can't corrupt configs. `_safe_size` guards `stat()` so broken symlinks don't crash the scan. `ScanCommand.execute` calls `logging.basicConfig` so `logger.warning`/`error` is visible; exit code is non-zero when no configs and no codebase config were emitted. + +**Public constant**: `SourceDetector.CODE_PROJECT_MARKERS` (was `_CODE_PROJECT_MARKERS`) โ€” shared between source_detector + signal_collectors. ~50 manifest types now (Pipfile, environment.yml, deno.json, flake.nix, Chart.yaml, deps.edn, dune-project, BUILD.bazel, โ€ฆ). Public so cross-module access doesn't reach into a private attribute. + +### SkillConverter Pattern (Template Method + Factory) + +All 18 source types implement the `SkillConverter` base class (`skill_converter.py`): + +```python +converter = get_converter("web", config) # Factory lookup +converter.run() # Template: extract() โ†’ build_skill() +``` + +Registry in `CONVERTER_REGISTRY` maps source type โ†’ (module, class). `create_command.py` builds config from `ExecutionContext`, calls `get_converter()`, then runs centralized enhancement. `get_converter("config", {...})` constructs `UnifiedScraper` from the same factory-shaped dict (no special cases in create_command/MCP). The base resolves `skill_dir` once (strips trailing separators) and derives `data_file` via `data_file_for()` โ€” subclasses must not re-derive paths. + +### DocumentSkillBuilder (build side of 9 document scrapers) + +`cli/document_skill_builder.py:DocumentSkillBuilder` sits between `SkillConverter` and the 9 document scrapers (epub, word, pptx, html, pdf, jupyter, man, rss, chat). It owns `categorize_content`, reference-file writing (tables, truncation, image guard), `index.md` + `SKILL.md` generation, and `load_extracted_data`. Variation points are class attrs (`DOC_NOUN`, `SOURCE_LABEL`, `LOAD_TOTAL_KEY`, `PATTERN_KEYWORDS`, `RANGE_LABEL`, โ€ฆ) and small hook methods (`category_stem`, `_write_reference_section`, `_write_skill_md_metadata`). Output is pinned **byte-identical** by golden trees in `tests/golden/phase2/` โ€” `UPDATE_GOLDENS=1` rewrites them, only do that deliberately. Surviving full-method overrides are domain-shaped and commented per scraper. + +### UnifiedScraper (multi-source configs) + +`unified_scraper.py` dispatches via the class-level `SOURCE_DISPATCH` table; `_scrape_with_converter()` is the shared engine for the 13 mechanical source types (`get_converter()` + public `converter.extract()` + cache copy + sub-skill build), so **new types registered in `CONVERTER_REGISTRY` work in unified configs automatically**. documentation/github/local stay bespoke (commented why). `run()` deliberately does NOT follow the base template (TestRunOrchestration pins that run() triggers workflows). + +### Data Flow (5 phases) + +1. **Scrape** - Source-specific scraper extracts content to `output/{name}_data/pages/*.json` +2. **Build** - `build_skill()` categorizes pages, extracts patterns, generates `output/{name}/SKILL.md` +3. **Enhance** (optional) - LLM rewrites SKILL.md (`--enhance-level 0-3`, auto-detects API vs LOCAL mode) +4. **Package** - Platform adaptor formats output (`.zip`, `.tar.gz`, JSON, vector index) +5. **Upload** (optional) - Platform API upload + +### Platform Adaptor Pattern (Strategy + Factory) + +Factory: `get_adaptor(platform, config)` in `adaptors/__init__.py` returns a `SkillAdaptor` instance. Base class `SkillAdaptor` + `SkillMetadata` in `adaptors/base.py`. + +``` +src/skill_seekers/cli/adaptors/ +โ”œโ”€โ”€ __init__.py # Factory: get_adaptor(platform, config), ADAPTORS registry +โ”œโ”€โ”€ base.py # Abstract base: SkillAdaptor, SkillMetadata +โ”œโ”€โ”€ openai_compatible.py # Shared base for OpenAI-compatible platforms +โ”œโ”€โ”€ claude.py # --target claude +โ”œโ”€โ”€ gemini.py # --target gemini +โ”œโ”€โ”€ openai.py # --target openai +โ”œโ”€โ”€ markdown.py # --target markdown +โ”œโ”€โ”€ minimax.py # --target minimax +โ”œโ”€โ”€ opencode.py # --target opencode +โ”œโ”€โ”€ kimi.py # --target kimi +โ”œโ”€โ”€ deepseek.py # --target deepseek +โ”œโ”€โ”€ qwen.py # --target qwen +โ”œโ”€โ”€ openrouter.py # --target openrouter +โ”œโ”€โ”€ together.py # --target together +โ”œโ”€โ”€ fireworks.py # --target fireworks +โ”œโ”€โ”€ langchain.py # --target langchain +โ”œโ”€โ”€ llama_index.py # --target llama-index +โ”œโ”€โ”€ haystack.py # --target haystack +โ”œโ”€โ”€ chroma.py # --target chroma +โ”œโ”€โ”€ faiss_helpers.py # --target faiss +โ”œโ”€โ”€ qdrant.py # --target qdrant +โ”œโ”€โ”€ weaviate.py # --target weaviate +โ”œโ”€โ”€ pinecone_adaptor.py # --target pinecone +โ””โ”€โ”€ streaming_adaptor.py # --target streaming +``` + +All adaptors use `--target`. All adaptors are imported with `try/except ImportError` so missing optional deps don't break the registry. + +### 18 Source Type Converters + +Each in `src/skill_seekers/cli/{type}_scraper.py` as a `SkillConverter` subclass (no `main()`). The `create_command.py` uses `source_detector.py` to auto-detect, then calls `get_converter()`. Converters: web (doc_scraper), github, pdf, word, epub, video, local (codebase_scraper), jupyter, html, openapi, asciidoc, pptx, rss, manpage, confluence, notion, chat, config (unified_scraper). + +### CLI Argument System (single-definition parsers) + +``` +src/skill_seekers/cli/ +โ”œโ”€โ”€ parsers/ # Central SubcommandParser classes โ€” the ONLY definition of each command's flags +โ”‚ โ””โ”€โ”€ create_parser.py # Progressive help disclosure (--help-web, --help-github, etc.) +โ”œโ”€โ”€ arguments/ # Argument definitions +โ”‚ โ”œโ”€โ”€ common.py # add_all_standard_arguments() - shared across all scrapers +โ”‚ โ””โ”€โ”€ create.py # UNIVERSAL_ARGUMENTS, WEB_ARGUMENTS, GITHUB_ARGUMENTS, etc. +โ”œโ”€โ”€ exit_codes.py # EXIT_SUCCESS/ERROR/VALIDATION/INTERRUPT +โ””โ”€โ”€ source_detector.py # Auto-detect source type from input string +``` + +Command modules' standalone `main(args=None)` paths build their parser FROM the central `SubcommandParser` class โ€” **add/change a flag in `parsers/*.py` only**. Drift guards (`tests/test_cli_parsers.py::TestCentralModuleParserSync` and `TestCentralParserSingleSource`) fail CI on any divergence of dests/defaults/option strings. + +`ExecutionContext.override()` is context-local (a `ContextVar` layered over the unchanged base singleton) โ€” thread/async safe for the MCP server; propagate to worker threads via `copy_context`. + +### C3.x Codebase Analysis Pipeline + +Local codebase analysis features, all opt-out (`--skip-*` flags): +- C3.1 `pattern_recognizer.py` - Design pattern detection (10 GoF patterns, 9 languages) +- C3.2 `test_example_extractor.py` - Usage examples from tests +- C3.3 `how_to_guide_builder.py` - AI-enhanced educational guides +- C3.4 `config_extractor.py` - Configuration pattern extraction +- C3.5 `generate_router.py` - Architecture overview generation +- C3.10 `signal_flow_analyzer.py` - Godot signal flow analysis + +### MCP Server + +`src/skill_seekers/mcp/server_fastmcp.py` - 40 tools via FastMCP. Transport: stdio (Claude Code) or HTTP (Cursor/Windsurf). Optional dependency: `pip install -e ".[mcp]"` + +- **Tools run in-process** via `run_cli_main()` in `mcp/tools/_common.py`: same argv parsed by the command's REAL parser (sys.argv patch under a lock), stdout/stderr capture + contextvar log capture, identical `(stdout, stderr, returncode)` contract. No subprocess startup; old hard timeouts are advisory. +- **Exceptions BY DESIGN**: `enhance_skill` (LOCAL agent) and `install_skill`'s enhancement step stay subprocess โ€” the agent must be a real child process for the fork-bomb-guard env semantics (`SKILL_SEEKER_ENHANCE_ACTIVE`). Never make these in-process. +- **Domain logic lives in `skill_seekers.services/`** (marketplace_manager, marketplace_publisher, config_publisher, source_manager, git_repo) โ€” importable by CLI without the `[mcp]` extra; old `skill_seekers.mcp.*` paths are back-compat shims. No `sys.path` hacks anywhere in `mcp/`. + +### Enhancement (AgentClient is the single AI transport) + +Every text-based AI call goes through `AgentClient` (`src/skill_seekers/cli/agent_client.py`): central truncation gate, timeout policy, error classification. `API_PROVIDERS` (provider registry) and `AGENT_PRESETS` (local-agent command templates) live ONLY there. Adaptors declare provider/endpoint/model/prompt and route through `SkillAdaptor._enhance_skill_md_via_client` (atomic save with backup). `video_visual` frame classification is the documented multimodal exception (AgentClient is text-only). + +- **API mode** (if API key set): Anthropic, Google Gemini, OpenAI, Moonshot/Kimi โ€” detected in registry order; `SKILL_SEEKER_PROVIDER` forces one. Models: `SKILL_SEEKER_MODEL` (global) or `ANTHROPIC_MODEL`/`GOOGLE_MODEL`/`OPENAI_MODEL`/`MOONSHOT_MODEL`; `ANTHROPIC_BASE_URL` for compatible endpoints. +- **LOCAL mode** (fallback): Claude Code, Kimi Code, Codex, Copilot, OpenCode, custom agents โ€” command built by `build_local_agent_command()`. +- Control: `--enhance-level 0` (off) / `1` (SKILL.md only) / `2` (default, balanced) / `3` (full) +- Agent selection: `--agent claude|codex|copilot|opencode|kimi|custom` + +## Key Implementation Details + +### Smart Categorization (`doc_scraper.py:smart_categorize()`) + +Scores pages against category keywords: 3 points for URL match, 2 for title, 1 for content. Threshold of 2+ required. Falls back to "other". + +### Content Extraction (`doc_scraper.py`) + +`FALLBACK_MAIN_SELECTORS` constant + `_find_main_content()` helper handle CSS selector fallback. Links are extracted from the full page before early return (not just main content). `body` is deliberately excluded from fallbacks. + +### Three-Stream GitHub Architecture (`unified_codebase_analyzer.py`) + +Stream 1: Code Analysis (AST, patterns, tests, guides). Stream 2: Documentation (README, docs/, wiki). Stream 3: Community (issues, PRs, metadata). Depth control: `basic` (1-2 min) or `c3x` (20-60 min). + +## Testing + +### Test markers (pytest.ini) + +```bash +pytest tests/ -v # Default: fast tests only +pytest tests/ -v -m slow # Include slow tests (>5s) +pytest tests/ -v -m integration # External services required +pytest tests/ -v -m e2e # Resource-intensive +pytest tests/ -v -m "not slow and not integration" # Fastest subset +``` + +### Known legitimate skips (~11) + +- 2: chromadb incompatible with Python 3.14 (pydantic v1) +- 2: weaviate-client not installed +- 2: Qdrant not running (requires docker) +- 2: langchain/llama_index not installed +- 3: GITHUB_TOKEN not set + +### sys.modules gotcha + +`test_swift_detection.py` deletes `skill_seekers.cli` modules from `sys.modules`. It must save and restore both `sys.modules` entries AND parent package attributes (`setattr`). See the test file for the pattern. + +## Dependencies + +Core deps include `langchain`, `llama-index`, `anthropic`, `httpx`, `PyMuPDF`, `pydantic`. Platform-specific deps are optional: + +```bash +pip install -e ".[mcp]" # MCP server +pip install -e ".[gemini]" # Google Gemini +pip install -e ".[openai]" # OpenAI +pip install -e ".[docx]" # Word documents +pip install -e ".[epub]" # EPUB books +pip install -e ".[video]" # Video (lightweight) +pip install -e ".[video-full]"# Video (Whisper + visual) +pip install -e ".[jupyter]" # Jupyter notebooks +pip install -e ".[pptx]" # PowerPoint +pip install -e ".[rss]" # RSS/Atom feeds +pip install -e ".[confluence]"# Confluence wiki +pip install -e ".[notion]" # Notion pages +pip install -e ".[chroma]" # ChromaDB +pip install -e ".[all]" # Everything (except video-full) +``` + +Dev dependencies use PEP 735 `[dependency-groups]` in pyproject.toml. + +## Environment Variables + +```bash +ANTHROPIC_API_KEY=sk-ant-... # Claude AI (or compatible endpoint) +ANTHROPIC_BASE_URL=https://... # Optional: Claude-compatible API endpoint +GOOGLE_API_KEY=AIza... # Google Gemini (optional) +OPENAI_API_KEY=sk-... # OpenAI (optional) +GITHUB_TOKEN=ghp_... # Higher GitHub rate limits +``` + +## Adding New Features + +### New platform adaptor +1. Create `src/skill_seekers/cli/adaptors/{platform}.py` inheriting `SkillAdaptor` from `base.py` +2. Register in `adaptors/__init__.py` (add try/except import + add to `ADAPTORS` dict) +3. Add optional dep to `pyproject.toml` +4. Add tests in `tests/` + +### New source type converter +1. Create `src/skill_seekers/cli/{type}_scraper.py` โ€” for document-shaped sources inherit `DocumentSkillBuilder` (categorization/references/index/SKILL.md come free; implement `extract()` + hooks), otherwise inherit `SkillConverter` and implement `extract()` and `build_skill()`. Set `SOURCE_TYPE`. +2. Register in `CONVERTER_REGISTRY` in `skill_converter.py` โ€” this also makes the type work in unified configs automatically (UnifiedScraper engine) +3. Add source type config building in `create_command.py:_build_config()` +4. Add auto-detection in `source_detector.py` +5. Add optional dep if needed +6. Add tests + +### New CLI argument +- Subcommand flag: define ONLY in the central parser class (`parsers/{cmd}_parser.py`) โ€” module `main()` builds from it; the drift-guard test fails otherwise +- Universal: `UNIVERSAL_ARGUMENTS` in `arguments/create.py` +- Source-specific: appropriate dict (`WEB_ARGUMENTS`, `GITHUB_ARGUMENTS`, etc.) +- Shared across scrapers: `add_all_standard_arguments()` in `arguments/common.py` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..03ee367 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,550 @@ +# Contributing to Skill Seeker + +First off, thank you for considering contributing to Skill Seeker! It's people like you that make Skill Seeker such a great tool. + +## Table of Contents + +- [Branch Workflow](#branch-workflow) +- [Code of Conduct](#code-of-conduct) +- [How Can I Contribute?](#how-can-i-contribute) +- [Development Setup](#development-setup) +- [Pull Request Process](#pull-request-process) +- [Coding Standards](#coding-standards) +- [Testing](#testing) +- [Documentation](#documentation) + +--- + +## Branch Workflow + +**โš ๏ธ IMPORTANT:** Skill Seekers uses a two-branch workflow. + +### Branch Structure + +``` +main (production) + โ†‘ + โ”‚ (only maintainer merges) + โ”‚ +development (integration) โ† default branch for PRs + โ†‘ + โ”‚ (all contributor PRs go here) + โ”‚ +feature branches +``` + +### Branches + +- **`main`** - Production branch + - Always stable + - Only receives merges from `development` by maintainers + - Protected: requires tests + 1 review + +- **`development`** - Integration branch + - **Default branch for all PRs** + - Active development happens here + - Protected: requires tests to pass + - Gets merged to `main` by maintainers + +- **Feature branches** - Your work + - Created from `development` + - Named descriptively (e.g., `feature/123-add-github-scraping`) + - Merged back to `development` via PR + +### Workflow Example + +```bash +# 1. Fork and clone +git clone https://github.com/YOUR_USERNAME/Skill_Seekers.git +cd Skill_Seekers + +# 2. Add upstream +git remote add upstream https://github.com/yusufkaraaslan/Skill_Seekers.git + +# 3. Create feature branch from development +git checkout development +git pull upstream development +git checkout -b my-feature + +# 4. Make changes, commit, push +git add . +git commit -m "Add my feature" +git push origin my-feature + +# 5. Create PR targeting 'development' branch +``` + +--- + +## Related Repositories + +Skill Seekers spans multiple repositories. Make sure you're contributing to the right one: + +| What you want to work on | Repository | +|--------------------------|-----------| +| Core CLI, scrapers, MCP tools, adaptors | [Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers) (this repo) | +| Website, docs, UI/UX | [skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb) | +| Preset configs, community configs | [skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs) | +| GitHub Action integration | [skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action) | +| Claude Code plugin | [skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin) | +| Homebrew formula | [homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers) | + +--- + +## Code of Conduct + +This project and everyone participating in it is governed by our commitment to fostering an open and welcoming environment. Please be respectful and constructive in all interactions. + +--- + +## How Can I Contribute? + +### Reporting Bugs + +Before creating bug reports, please check the [existing issues](https://github.com/yusufkaraaslan/Skill_Seekers/issues) to avoid duplicates. + +When creating a bug report, include: +- **Clear title and description** +- **Steps to reproduce** the issue +- **Expected behavior** vs actual behavior +- **Screenshots** if applicable +- **Environment details** (OS, Python version, etc.) +- **Error messages** and stack traces + +**Example:** +```markdown +**Bug:** MCP tool fails when config has no categories + +**Steps to Reproduce:** +1. Create config with empty categories: `"categories": {}` +2. Run `skill-seekers create --config configs/test.json` +3. See error + +**Expected:** Should use auto-inferred categories +**Actual:** Crashes with KeyError + +**Environment:** +- OS: Ubuntu 22.04 +- Python: 3.10.5 +- Version: 1.0.0 +``` + +### Suggesting Enhancements + +Enhancement suggestions are tracked as [GitHub issues](https://github.com/yusufkaraaslan/Skill_Seekers/issues). + +Include: +- **Clear title** describing the enhancement +- **Detailed description** of the proposed functionality +- **Use cases** that would benefit from this enhancement +- **Examples** of how it would work +- **Alternatives considered** + +### Adding New Framework Configs + +We welcome new framework configurations! To add one: + +1. Create a config file in `configs/` +2. Test it thoroughly with different page counts +3. Submit a PR with: + - The config file + - Brief description of the framework + - Test results (number of pages scraped, categories found) + +**Example PR:** +```markdown +**Add Svelte Documentation Config** + +Adds configuration for Svelte documentation (https://svelte.dev/docs). + +- Config: `configs/svelte.json` +- Tested with max_pages: 100 +- Successfully categorized: getting_started, components, api, advanced +- Total pages available: ~150 +``` + +### Pull Requests + +We actively welcome your pull requests! + +**โš ๏ธ IMPORTANT:** All PRs must target the `development` branch, not `main`. + +1. Fork the repo and create your branch from `development` +2. If you've added code, add tests +3. If you've changed APIs, update the documentation +4. Ensure the test suite passes +5. Make sure your code follows our coding standards +6. Issue that pull request to `development` branch! + +--- + +## Development Setup + +### Prerequisites + +- Python 3.10 or higher (required for MCP integration) +- Git + +### Setup Steps + +1. **Fork and clone the repository** + ```bash + git clone https://github.com/YOUR_USERNAME/Skill_Seekers.git + cd Skill_Seekers + ``` + +2. **Install dependencies** + ```bash + pip install -e . + pip install -e ".[dev]" + pip install -e ".[all]" + ``` + +3. **Create a feature branch from development** + ```bash + git checkout development + git pull upstream development + git checkout -b feature/my-awesome-feature + ``` + +4. **Make your changes** + ```bash + # Edit files... + ``` + +5. **Run tests** + ```bash + python -m pytest tests/ -v + ``` + +6. **Commit your changes** + ```bash + git add . + git commit -m "Add awesome feature" + ``` + +7. **Push to your fork** + ```bash + git push origin feature/my-awesome-feature + ``` + +8. **Create a Pull Request** + +--- + +## Pull Request Process + +### Before Submitting + +- [ ] Tests pass locally (`python -m pytest tests/ -v`) +- [ ] Code follows PEP 8 style guidelines +- [ ] Documentation is updated if needed +- [ ] CHANGELOG.md is updated (if applicable) +- [ ] Commit messages are clear and descriptive + +### PR Template + +```markdown +## Description +Brief description of what this PR does. + +## Type of Change +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Documentation update + +## How Has This Been Tested? +Describe the tests you ran to verify your changes. + +## Checklist +- [ ] My code follows the style guidelines of this project +- [ ] I have performed a self-review of my own code +- [ ] I have commented my code, particularly in hard-to-understand areas +- [ ] I have made corresponding changes to the documentation +- [ ] My changes generate no new warnings +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] New and existing unit tests pass locally with my changes +``` + +### Review Process + +1. A maintainer will review your PR within 3-5 business days +2. Address any feedback or requested changes +3. Once approved, a maintainer will merge your PR +4. Your contribution will be included in the next release! + +### Code Review Guidelines + +**Fix both, don't follow precedent.** When a reviewer flags an anti-pattern in +your PR, do not defend it by pointing at another file that does the same thing. +"`X.py` already does this" is not a justification โ€” it's evidence that two +places need fixing, not that the smell is sanctioned. + +The correct response is one of: +- "Good catch โ€” I'll fix both `new_file.py` and `existing_file.py` in this PR." +- "Out of scope here, but I'll file a follow-up to fix `existing_file.py`." + +The wrong response is: +- "But `existing_file.py` does the same thing, so this matches the convention." + +This rule cuts both ways: maintainers calling out an anti-pattern should be +willing to either accept the broader fix or open the follow-up issue +themselves. Bad-precedent-as-convention is how codebases ossify. + +--- + +## Coding Standards + +### Python Style Guide + +We follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) with some modifications: + +- **Line length:** 100 characters (not 79) +- **Indentation:** 4 spaces +- **Quotes:** Double quotes for strings +- **Naming:** + - Functions/variables: `snake_case` + - Classes: `PascalCase` + - Constants: `UPPER_SNAKE_CASE` + +### Code Organization + +```python +# 1. Standard library imports +import os +import sys +from pathlib import Path + +# 2. Third-party imports +import requests +from bs4 import BeautifulSoup + +# 3. Local application imports +from cli.utils import open_folder + +# 4. Constants +MAX_PAGES = 1000 +DEFAULT_RATE_LIMIT = 0.5 + +# 5. Functions and classes +def my_function(): + """Docstring describing what this function does.""" + pass +``` + +### Documentation + +- All functions should have docstrings +- Use type hints where appropriate +- Add comments for complex logic + +```python +def scrape_page(url: str, selectors: dict) -> dict: + """ + Scrape a single page and extract content. + + Args: + url: The URL to scrape + selectors: Dictionary of CSS selectors + + Returns: + Dictionary containing extracted content + + Raises: + RequestException: If page cannot be fetched + """ + pass +``` + +### Code Quality Tools + +We use **Ruff** for linting and code formatting. Ruff is a fast Python linter that combines multiple tools (Flake8, isort, Black, etc.) into one. + +**Running Ruff:** + +```bash +# Check for linting errors +uvx ruff check src/ tests/ + +# Auto-fix issues +uvx ruff check --fix src/ tests/ + +# Format code +uvx ruff format src/ tests/ +``` + +**Common Ruff Rules:** +- **SIM102** - Simplify nested if statements (use `and` instead) +- **SIM117** - Combine multiple `with` statements +- **B904** - Use `from e` for proper exception chaining +- **SIM113** - Use enumerate instead of manual counters +- **B007** - Use `_` for unused loop variables +- **ARG002** - Remove unused function arguments + +**CI/CD Integration:** + +All pull requests automatically run: +1. `ruff check` - Linting validation +2. `ruff format --check` - Format validation +3. `pytest` - Test suite + +Make sure all checks pass before submitting your PR: + +```bash +# Run the same checks as CI +uvx ruff check src/ tests/ +uvx ruff format --check src/ tests/ +pytest tests/ -v +``` + +--- + +## Testing + +### Running Tests + +```bash +# Run all tests +python -m pytest tests/ -v + +# Run specific test file +python -m pytest tests/test_mcp_server.py -v + +# Run with coverage +python -m pytest tests/ --cov=src/skill_seekers --cov-report=term +``` + +### Writing Tests + +- Tests go in the `tests/` directory +- Test files should start with `test_` +- Use descriptive test names + +```python +def test_config_validation_with_missing_fields(): + """Test that config validation fails when required fields are missing.""" + config = {"name": "test"} # Missing base_url + result = validate_config(config) + assert result is False +``` + +### Test Coverage + +- Aim for >80% code coverage +- Critical paths should have 100% coverage +- Add tests for bug fixes to prevent regressions + +--- + +## Documentation + +### Where to Document + +- **README.md** - Overview, quick start, basic usage +- **docs/** - Detailed guides and tutorials +- **CHANGELOG.md** - All notable changes +- **Code comments** - Complex logic and non-obvious decisions + +### Documentation Style + +- Use clear, simple language +- Include code examples +- Add screenshots for UI-related features +- Keep it up to date with code changes + +--- + +## Project Structure + +``` +Skill_Seekers/ +โ”œโ”€โ”€ src/skill_seekers/ # Main package (src/ layout) +โ”‚ โ”œโ”€โ”€ cli/ # CLI commands and entry points +โ”‚ โ”‚ โ”œโ”€โ”€ main.py # Unified CLI entry (COMMAND_MODULES dict) +โ”‚ โ”‚ โ”œโ”€โ”€ source_detector.py # Auto-detects source type +โ”‚ โ”‚ โ”œโ”€โ”€ create_command.py # Unified `create` command routing +โ”‚ โ”‚ โ”œโ”€โ”€ config_validator.py # VALID_SOURCE_TYPES set +โ”‚ โ”‚ โ”œโ”€โ”€ unified_scraper.py # Multi-source orchestrator +โ”‚ โ”‚ โ”œโ”€โ”€ unified_skill_builder.py # Pairwise synthesis + generic merge +โ”‚ โ”‚ โ”œโ”€โ”€ doc_scraper.py # Documentation (web) +โ”‚ โ”‚ โ”œโ”€โ”€ github_scraper.py # GitHub repos +โ”‚ โ”‚ โ”œโ”€โ”€ pdf_scraper.py # PDF files +โ”‚ โ”‚ โ”œโ”€โ”€ word_scraper.py # Word (.docx) +โ”‚ โ”‚ โ”œโ”€โ”€ epub_scraper.py # EPUB books +โ”‚ โ”‚ โ”œโ”€โ”€ video_scraper.py # Video (YouTube, Vimeo, local) +โ”‚ โ”‚ โ”œโ”€โ”€ codebase_scraper.py # Local codebases +โ”‚ โ”‚ โ”œโ”€โ”€ jupyter_scraper.py # Jupyter Notebooks +โ”‚ โ”‚ โ”œโ”€โ”€ html_scraper.py # Local HTML files +โ”‚ โ”‚ โ”œโ”€โ”€ openapi_scraper.py # OpenAPI/Swagger specs +โ”‚ โ”‚ โ”œโ”€โ”€ asciidoc_scraper.py # AsciiDoc files +โ”‚ โ”‚ โ”œโ”€โ”€ pptx_scraper.py # PowerPoint files +โ”‚ โ”‚ โ”œโ”€โ”€ rss_scraper.py # RSS/Atom feeds +โ”‚ โ”‚ โ”œโ”€โ”€ manpage_scraper.py # Man pages +โ”‚ โ”‚ โ”œโ”€โ”€ confluence_scraper.py # Confluence wikis +โ”‚ โ”‚ โ”œโ”€โ”€ notion_scraper.py # Notion pages +โ”‚ โ”‚ โ”œโ”€โ”€ chat_scraper.py # Slack/Discord exports +โ”‚ โ”‚ โ”œโ”€โ”€ adaptors/ # Platform adaptors (Strategy pattern) +โ”‚ โ”‚ โ”œโ”€โ”€ arguments/ # CLI argument definitions (one per source) +โ”‚ โ”‚ โ”œโ”€โ”€ parsers/ # Subcommand parsers (one per source) +โ”‚ โ”‚ โ””โ”€โ”€ storage/ # Cloud storage adaptors +โ”‚ โ”œโ”€โ”€ services/ # Shared domain logic (marketplace, config publishing, git sources) โ€” used by CLI and MCP +โ”‚ โ”œโ”€โ”€ mcp/ # MCP server + tools (in-process; thin layer over cli/ + services/) +โ”‚ โ””โ”€โ”€ sync/ # Sync monitoring +โ”œโ”€โ”€ configs/ # Preset JSON scraping configs +โ”œโ”€โ”€ docs/ # Documentation +โ”œโ”€โ”€ tests/ # 115+ test files (pytest) +โ””โ”€โ”€ .github/ # GitHub config + โ””โ”€โ”€ workflows/ # CI/CD workflows +``` + +**Scraper pattern (18 source types):** Each source type is a `SkillConverter` subclass in `cli/_scraper.py` (document-shaped sources subclass `DocumentSkillBuilder`, which provides the whole build side), reached via `skill-seekers create` auto-detection โ€” there is no per-type `main()`. Register new types in: `CONVERTER_REGISTRY` in `skill_converter.py` (this also enables them in unified multi-source configs), `create_command.py:_build_config()`, `source_detector.py`, and `config_validator.py` VALID_SOURCE_TYPES. CLI flags are defined once in the central `parsers/*.py` classes (a drift-guard test enforces this). + +### UML Architecture + +Full UML class diagrams are maintained in StarUML and synced from source code: + +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - Overview with embedded PNG diagrams +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML project (open with [StarUML](https://staruml.io/)) +- **[docs/UML/exports/](docs/UML/exports/)** - 14 PNG exports (package overview + 13 class diagrams) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - HTML API reference + +**Key design patterns documented in UML:** +- Strategy + Factory in Adaptors (SkillAdaptor ABC + 20+ implementations) +- Strategy + Factory in Storage (BaseStorageAdaptor + S3/GCS/Azure) +- Template Method in Parsers (SubcommandParser + 28 subclasses) +- Template Method in Analysis (BasePatternDetector + 10 GoF detectors) +- Command pattern in CLI (CLIDispatcher + COMMAND_MODULES lazy dispatch) + +When adding new classes or modules, please update the corresponding UML diagram to keep architecture docs in sync. + +--- + +## Release Process + +Releases are managed by maintainers: + +1. Update version in relevant files +2. Update CHANGELOG.md +3. Create and push version tag +4. GitHub Actions will create the release +5. Announce on relevant channels + +--- + +## Questions? + +- ๐Ÿ’ฌ [Open a discussion](https://github.com/yusufkaraaslan/Skill_Seekers/discussions) +- ๐Ÿ› [Report a bug](https://github.com/yusufkaraaslan/Skill_Seekers/issues) +- ๐Ÿ“ง Contact: yusufkaraaslan.yk@pm.me + +--- + +## Recognition + +Contributors will be recognized in: +- README.md contributors section +- CHANGELOG.md for each release +- GitHub contributors page + +Thank you for contributing to Skill Seeker! ๐ŸŽ‰ diff --git a/DOCUMENTATION_AUDIT_REPORT_2026-05-30.md b/DOCUMENTATION_AUDIT_REPORT_2026-05-30.md new file mode 100644 index 0000000..8869401 --- /dev/null +++ b/DOCUMENTATION_AUDIT_REPORT_2026-05-30.md @@ -0,0 +1,531 @@ +# Skill Seekers Documentation Audit Report +**Date:** 2026-05-30 +**Project Version:** 3.6.0 (from `pyproject.toml`) +**Auditor:** Agent Swarm Analysis +**Scope:** All non-generated `.md` files (excludes `output/`, `.skillseeker-cache/`, virtualenvs) + +--- + +## Executive Summary + +The Skill Seekers project has **~163 non-generated markdown files** across the repository. While the codebase is actively maintained at **v3.6.0**, the documentation ecosystem suffers from **severe version drift**, **widespread stale CLI references**, **broken internal links**, **incomplete translations**, **near-duplicate files**, and **significant gaps between claimed and actual features**. + +### Severity Distribution +| Severity | Count | Description | +|----------|-------|-------------| +| **CRITICAL** | 45+ | Wrong commands, broken links, missing sections, incorrect versions | +| **WARNING** | 60+ | Stale counts, truncated content, minor inaccuracies, deprecated paths | +| **INFO** | 35+ | Missing features from docs, structural suggestions, cosmetic issues | + +### Key Finding +> **The English README.md itself is outdated (claims v3.5.0, shows 14 removed CLI subcommands, has 11 broken internal links), and ALL 11 translations lag even further behind (claiming v3.2.0). The documentation as a whole gives new users a systematically incorrect understanding of how to use the tool.** + +--- + +## 1. Version Consistency Crisis + +Version numbers are **completely inconsistent** across the documentation ecosystem: + +| Location | Claims | Actual | Status | +|----------|--------|--------|--------| +| `pyproject.toml` | โ€” | **3.6.0** | โœ… Source of truth | +| `AGENTS.md` | 3.6.0 | 3.6.0 | โœ… Correct | +| `README.md` (English) | 3.5.0 | 3.6.0 | โŒ Stale | +| **All 11 README translations** | 3.2.0 | 3.6.0 | โŒ **Very stale** | +| `docs/README.md` | 3.2.0 | 3.6.0 | โŒ Stale | +| `docs/getting-started/*.md` | 3.1.0โ€“3.2.0 | 3.6.0 | โŒ Stale | +| `docs/user-guide/*.md` | 3.1.0โ€“3.2.0 | 3.6.0 | โŒ Stale | +| `docs/guides/MCP_SETUP.md` | 2.4.0 | 3.6.0 | โŒ Very stale | +| `docs/reference/MCP_REFERENCE.md` | 3.5.0 | 3.6.0 | โŒ Slightly stale | +| `docs/advanced/mcp-server.md` | 3.2.0 | 3.6.0 | โŒ Stale | +| `ROADMAP.md` | 3.2.0 | 3.6.0 | โŒ Stale | +| `QWEN.md` | 3.3.0 | 3.6.0 | โŒ Stale | +| `integrations/INTEGRATIONS.md` | 2.10.0+ | 3.6.0 | โŒ Very stale | +| `api/configs_repo/STATUS.md` | 2.11.0+ | 3.6.0 | โŒ Very stale | + +**Impact:** New users cannot determine which version of the tool they are reading documentation for. Features documented at v3.1.0 may have changed significantly by v3.6.0. + +--- + +## 2. README.md (English) โ€” Deep Analysis + +### 2.1 CRITICAL Issues + +#### A. Broken / Outdated Internal Links (11 links) +| Link in README | Actual Location | Status | +|---|---|---| +| `ASYNC_SUPPORT.md` | **Does not exist anywhere** | โŒ Dead | +| `docs/ENHANCEMENT_MODES.md` | `docs/features/ENHANCEMENT_MODES.md` | โŒ Wrong path | +| `docs/FEATURE_MATRIX.md` | `docs/reference/FEATURE_MATRIX.md` | โŒ Wrong path | +| `docs/GIT_CONFIG_SOURCES.md` | `docs/reference/GIT_CONFIG_SOURCES.md` | โŒ Wrong path | +| `docs/HOW_TO_GUIDES.md#ai-enhancement-new` | `docs/features/HOW_TO_GUIDES.md` | โŒ Wrong path | +| `docs/IMPLEMENTATION_SUMMARY_THREE_STREAM.md` | `docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md` | โŒ Wrong path | +| `docs/LARGE_DOCUMENTATION.md` | `docs/reference/LARGE_DOCUMENTATION.md` | โŒ Wrong path | +| `docs/MCP_SETUP.md` | `docs/guides/MCP_SETUP.md` | โŒ Wrong path | +| `docs/QUICK_REFERENCE.md` | `docs/archive/legacy/QUICK_REFERENCE.md` | โŒ Wrong path | +| `docs/UNIFIED_SCRAPING.md` | `docs/features/UNIFIED_SCRAPING.md` | โŒ Wrong path | +| `QUICKSTART.md` | `docs/archive/legacy/QUICKSTART.md` | โŒ Wrong path | + +#### B. Non-Existent CLI Subcommands (14 removed commands still shown) +The README displays **legacy subcommands that were removed** in the unified CLI redesign: + +| Invalid Command Shown | Correct Modern Command | +|---|---| +| `skill-seekers scrape --config ...` | `skill-seekers create --config ...` | +| `skill-seekers scrape --url ...` | `skill-seekers create https://...` | +| `skill-seekers video --url ...` | `skill-seekers create ... --video-url ...` | +| `skill-seekers video --setup` | `skill-seekers create --setup` | +| `skill-seekers pdf --pdf ...` | `skill-seekers create ... --pdf ...` | +| `skill-seekers github --repo ...` | `skill-seekers create ...` (auto-detect) | +| `skill-seekers unified --config ...` | `skill-seekers create configs/..._unified.json` | +| `skill-seekers confluence --space ...` | `skill-seekers create ... --space-key ...` | +| `skill-seekers notion --database-id ...` | `skill-seekers create ... --database-id ...` | +| `skill-seekers chat --export-dir ...` | `skill-seekers create ... --chat-export-path ...` | +| `skill-seekers list-configs` | **Does not exist** | +| `skill-seekers analyze --directory ...` | **Does not exist** | + +#### C. Wrong CLI Flags in Examples +- `skill-seekers video --url ...` โ†’ should use `--video-url` +- `skill-seekers video --playlist ...` โ†’ should use `--video-playlist` +- `skill-seekers confluence --space TEAM` โ†’ should use `--space-key` +- `skill-seekers chat --export-dir ./slack-export` โ†’ should use `--chat-export-path` +- `skill-seekers package ... --format chroma/faiss/qdrant` โ†’ should use `--target` + +#### D. Inconsistent Test Counts +- Badge: `3194+ Passing` +- "Quality Assurance" prose: `2,540+ tests` +- Actual codebase: ~3,462 test functions +- **Three different numbers cited in different places** + +#### E. Missing Major Features +The README **omits** these significant v3.x features: +- `--preset` (`quick` / `standard` / `comprehensive`) +- `--dry-run`, `--fresh`, `--resume`, `--skip-scrape` +- `--chunk-for-rag`, `--chunk-tokens`, `--chunk-overlap-tokens` +- `--streaming`, `--marketplace`, `--marketplace-category` +- `skill-seekers doctor` (health check) +- `skill-seekers sync-config` (config drift detection) +- `skill-seekers stream` (streaming ingestion) +- `skill-seekers update` (incremental updater) +- `skill-seekers multilang` (multi-language support) +- `skill-seekers quality` (quality scoring) +- `skill-seekers extract-test-examples` + +### 2.2 WARNING Issues +- MCP tool count: README says 26, AGENTS.md says 40, actual is 40 +- LLM platform comparison table shows only 5 of ~21 supported platforms +- Install-agent names: README says `Kimi` but CLI uses `kimi-code` +- `--target claude` description misleadingly claims auto-copy for Cursor/Windsurf + +--- + +## 3. Translation Analysis (All 11 READMEs) + +### 3.1 Summary Table + +| Translation | Headings | Version | Test Badge | Architecture Section | Scan Section | IBM Bob | MiniMax | Status | +|-------------|----------|---------|------------|----------------------|--------------|---------|---------|--------| +| English | 210 | 3.5.0 | 3194+ | โœ… | โœ… | โœ… | โœ… | โš ๏ธ Stale | +| **zh-CN** | 165 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **ja** | 165 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **ko** | 166 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **de** | 166 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **es** | 195 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **fr** | 196 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **pt-BR** | 195 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **ru** | 166 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **tr** | 195 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **ar** | 166 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | +| **hi** | 195 | **3.2.0** | **2540+** | โŒ Missing | โŒ Missing | โŒ Missing | โŒ Missing | ๐Ÿ”ด Very stale | + +### 3.2 Universal Translation Deficiencies +**Every single translation** is missing these major sections that exist in English: +- `## ๐Ÿ“š Documentation` (early quick-link table) +- `## Architecture` (module overview + UML links) +- `### ๐Ÿ›ฐ๏ธ AI-driven project scan (new)` +- `### ๐Ÿค– Agent-Agnostic Skill Generation` +- `### ๐Ÿ“ฆ Marketplace Pipeline` +- `IBM Bob` support (agent count says 18 instead of 19) +- `MiniMax AI` platform comparison row and examples +- `pepy.tech` and `Trendshift` badges + +### 3.3 Per-Translation Nuances +- **zh-CN, ja, ko** (CJK): Most severely truncated. Installation table has 13 rows vs English 15. Performance table missing Video rows. Smart Rate Limit Management heavily truncated. +- **ko** is the *best* CJK translation: includes Security section at bottom, has correct 15-row install table, includes Video performance rows. +- **fr, tr** (European): Include the early Documentation table (most others don't). Otherwise similar gaps. +- **hi** (Devanagari): Most complete non-European translation. Has all 5 print statements in Three-Stream example. Bootstrap "What you get" bullets present. Good technical transliteration. +- **ar** (Arabic): Most truncated. Three-Stream example has only 2 print statements. Missing Rate Limit Strategies Explained. Some bidi rendering issues in code comments. +- **ru** (Cyrillic): Has some untranslated English fragments ("OpenAPI/Swagger", "README"). Uses Latin "API"/"LOCAL" inconsistently. + +--- + +## 4. Core Project Documentation + +### 4.1 AGENTS.md โ€” โœ… MOSTLY ACCURATE +- Version 3.6.0 โœ… +- Source types count (17 + config) โœ… +- 40 MCP tools โœ… +- Minor: Claims "~14 legacy commands" but actual is 16 + +### 4.2 CLAUDE.md โ€” โœ… ACCURATE +- Architecture descriptions match codebase +- File paths correct +- 24 adaptor files match actual +- Minor: Uses `uvx ruff` while AGENTS.md uses `ruff` + +### 4.3 CHANGELOG.md โ€” โœ… ACCURATE +- Latest version [3.6.0] correctly listed +- `[Unreleased]` section holds post-3.6.0 changes appropriately +- Format consistent + +### 4.4 ROADMAP.md โ€” ๐Ÿ”ด SEVERELY OUTDATED +- Claims `v3.2.0` is current (actual: 3.6.0) +- Lists `v2.7.0`, `v2.8.0`, `v2.9.0` as future releases +- **Completed tasks NOT checked off**: + - A1.3 `submit_config` MCP tool โ€” EXISTS + - C3.3 "Build how-to guides" โ€” `how_to_guide_builder.py` EXISTS + - C3.4 "Extract configuration patterns" โ€” `config_extractor.py` EXISTS + - C3.5 "Create architectural overview" โ€” `generate_router.py` EXISTS + - E1.1 `fetch_config` MCP tool โ€” EXISTS +- Wrong metrics: "1,880+ tests" (actual: ~3,445), "24 preset configs" (actual: 12), "5 bundled workflows" (actual: 68 YAML files) + +### 4.5 TROUBLESHOOTING.md โ€” ๐Ÿ”ด BROKEN PATHS +- Uses **pre-`src/` layout paths** that no longer exist: + - `cli/doc_scraper.py` (ร—3) + - `python3 mcp/server.py` (ร—2) + - `pip3 install -r mcp/requirements.txt` โ€” file does not exist +- **Missing critical step**: Never mentions `pip install -e .` which `conftest.py` hard-requires + +### 4.6 CONTRIBUTING.md โ€” ๐Ÿ”ด WRONG SETUP +- Tells contributors: `pip install requests beautifulsoup4` and `pip install -r mcp/requirements.txt` +- **Should say**: `pip install -e .` / `pip install -e ".[dev]"` (as AGENTS.md states) +- Coverage paths wrong: `--cov=cli --cov=mcp` should be `--cov=src/skill_seekers` +- **Contradicts AGENTS.md**: Describes pre-commit hook setup, but AGENTS.md says "**No pre-commit hooks, no Makefile**" +- Branch naming: uses `feature/my-awesome-feature` without task ID; AGENTS.md specifies `feature/{task-id}-{description}` + +### 4.7 QWEN.md โ€” ๐Ÿ”ด REDUNDANT & OUTDATED +- Version says `v3.3.0` (actual: 3.6.0) +- Claims 26+ MCP tools (actual: 40) +- Shows `skill-seekers package --target langchain` โ€” `langchain` is a `--format` value, not `--target` +- Shows `--target cursor` โ€” not a valid standalone `--target` +- **Omits `scan` and `doctor` entirely** +- Stale numbers: 67 YAML presets (actual: 68), 123 test files (actual: 143) +- **Recommendation**: Update to 3.6.0 or remove (largely duplicates CLAUDE.md/AGENTS.md) + +--- + +## 5. docs/ Directory Analysis + +### 5.1 Structural Issues + +#### A. docs/README.md Omits ~40% of Actual Content +The docs hub README lists only a subset of directories. It **omits**: +- `guides/` (7 files) +- `integrations/` (15 files) +- `features/` (5 files) +- `archive/`, `blog/`, `case-studies/`, `plans/`, `roadmap/`, `strategy/`, `agents/`, `superpowers/` +- `zh-CN/` (entire translation tree) +- `UML/` + +#### B. Phantom Link +`docs/README.md` links to `advanced/mcp-tools.md` โ€” **does not exist**. Only `advanced/mcp-server.md` exists. + +### 5.2 Near-Duplicate File Pairs + +**Pair 1:** `DOCKER_GUIDE.md` (575 lines) โ†” `DOCKER_DEPLOYMENT.md` (762 lines) +- Both cover Docker deployment, Compose, volumes, networking, monitoring, troubleshooting +- `DOCKER_DEPLOYMENT.md` is more detailed (adds embedding server, sync monitor, Prometheus/Grafana/Loki) +- `DOCKER_GUIDE.md` has broken link: `[Vector Database Integration](docs/strategy/WEEK2_COMPLETE.md)` โ€” `WEEK2_COMPLETE.md` does not exist +- **Recommendation**: Merge into single file + +**Pair 2:** `KUBERNETES_GUIDE.md` (957 lines) โ†” `KUBERNETES_DEPLOYMENT.md` (933 lines) +- Both cover Helm charts, manual deployment, scaling, HA, monitoring, security +- `KUBERNETES_DEPLOYMENT.md` adds Velero backup/restore, cost optimization +- `KUBERNETES_GUIDE.md` uses `skillseekers` namespace; `KUBERNETES_DEPLOYMENT.md` uses `skill-seekers` +- **Recommendation**: Merge into single file + +### 5.3 Partial Duplication: Troubleshooting +- `user-guide/06-troubleshooting.md` (~200 lines, v3.1.0) +- Top-level `TROUBLESHOOTING.md` (1094 lines, no version stamp) +- **Significant overlap** in installation, configuration, scraping, enhancement sections +- **Recommendation**: Consolidate or clearly differentiate scope + +### 5.4 Stale MCP Documentation +Three different MCP docs claim three different tool counts: + +| File | Claims | Actual | +|------|--------|--------| +| `guides/MCP_SETUP.md` | 26 tools / v2.4.0 | 40 tools / v3.6.0 | +| `advanced/mcp-server.md` | 27 tools / v3.2.0 | 40 tools / v3.6.0 | +| `reference/MCP_REFERENCE.md` | 40 tools / v3.5.0 | 40 tools / v3.6.0 | + +`guides/MCP_SETUP.md` also claims MCP SDK v1.25.0 and miscounts tool categories (says 27 but lists 28). + +### 5.5 Stale Guide Content +- `guides/MIGRATION_GUIDE.md` header says `v3.1.0-dev` but discusses migrating **to v2.7.0** as "latest" +- `integrations/INTEGRATIONS.md` says "Skill Seekers Version: v2.10.0+" +- `integrations/LANGCHAIN.md` says "Skill Seekers Version: v2.9.0+" +- `features/BOOTSTRAP_SKILL.md` says version 2.7.0 in frontmatter example + +### 5.6 FEATURE_MATRIX Undercount +Lists only 12 platforms but CLI supports 21+ packaging targets. Missing: DeepSeek, Qwen, OpenRouter, Together, Fireworks, IBM Bob, OpenCode, Kimi, and others. + +--- + +## 6. docs/zh-CN/ Translation Quality โ€” ๐Ÿ”ด CRITICAL FINDING + +### 6.1 The Shocking Truth +**The `docs/zh-CN/` directory does NOT contain Chinese translations.** + +Out of **21 files audited**: +- **0 files (0%)** are fully translated to Chinese +- **1 file (~15%)** has partial Chinese (`advanced/mcp-server.md` โ€” just section headers and some tool descriptions) +- **20 files (95%)** are **English copies** with minor divergence + +### 6.2 Content Drift Pattern +The zh-CN files fall into three categories: + +| Category | Files | Description | +|----------|-------|-------------| +| **zh-CN LAGS** | README, CLI_REFERENCE, API_REFERENCE, packaging | English docs are newer (v3.5.0 vs v3.2.0) | +| **zh-CN LEADS** | ARCHITECTURE, core-concepts, scraping, CONFIG_FORMAT, workflows, MCP_REFERENCE, multi-source | zh-CN documents features not yet in English docs (17 sources, unified config, new platforms) | +| **Identical** | 03-your-first-skill, 06-troubleshooting, SKILL_ARCHITECTURE, custom-workflows | Perfect copies | + +### 6.3 Broken Link +- `zh-CN/getting-started/04-next-steps.md` links to `05-scan-a-project.md` โ€” **does not exist in zh-CN/** (only in `docs/getting-started/`) + +### 6.4 Recommendation +If the goal is Chinese-language documentation: **entire directory needs professional translation**. +If the goal is parallel English documentation: **rename directory** (e.g., `docs/extended/`) to avoid misleading users. + +--- + +## 7. Archive, Plans, Strategy & Roadmap Relevance + +### 7.1 docs/archive/ โ€” Mostly Appropriate + +**Historical (8 files):** All are completed verification reports. Correctly archived. Could compress further. +**Legacy (4 files + index):** Self-aware deprecated docs with redirects. Correctly archived. +**Plans (2 files):** Active skills design from Oct 2025. Status unclear โ€” **verify if implemented**. +**Research (4 files):** PDF research from Oct 2025. Informed current implementation. Keep as historical record. + +### 7.2 docs/plans/video/ โ€” ๐Ÿ”ด MISLEADING +All 8 files still say "Status: Planning" but **video support IS implemented** (`video_scraper.py`, `video_models.py`, `video_setup.py`, 60 tests). +**Action:** Update headers to "Implemented" and verify code alignment. Consider moving to `docs/features/`. + +### 7.3 docs/strategy/ โ€” Mixed + +| File | Verdict | +|------|---------| +| `README.md` | Update โ€” integration guides WERE created (18 files) but doc still says "to be created" | +| `ACTION_PLAN.md` | Archive โ€” historical 4-week plan, partially executed | +| `ARBITRARY_LIMITS_AND_DEAD_CODE_PLAN.md` | Update โ€” Stage 1 completed, Stages 2-3 status unknown | +| `INTEGRATION_STRATEGY.md` | Update โ€” much executed, should reflect success | +| `KIMI_ANALYSIS_COMPARISON.md` | Archive โ€” analysis complete, strategy adopted | +| `STAGE_1_*.md` (3 files) | Archive deeper โ€” historical implementation records | +| `DEEPWIKI_ANALYSIS.md`, `INTEGRATION_TEMPLATES.md` | Keep โ€” still valuable | + +### 7.4 docs/roadmap/ โ€” โœ… APPROPRIATE (Future Design) +Intelligence System roadmap (4 files, Jan 2026). No `skill_seekers/intelligence/` package exists yet. These are **future design docs** โ€” correctly kept as research/planning. + +### 7.5 docs/agents/ โ€” Archive +EPUB implementation plans (Mar 2026). EPUB scraper EXISTS and is tested (107 tests). These are completed agent-driven development records โ€” **archive deeper**. + +### 7.6 docs/superpowers/ โ€” Verify +Scrape-count and SPA detection plan (Mar 2026). References `doc_scraper.py` line numbers. **Verify if implemented** and update status. + +--- + +## 8. Distribution & Examples + +### 8.1 distribution/ โ€” ๐Ÿ”ด BROKEN EXAMPLES + +#### github-action/README.md +- Lists CLI commands: `scrape`, `github`, `pdf`, `video`, `analyze`, `unified` +- **None exist in v3.6.0** +- Users copying these workflow examples will get `error: argument command: invalid choice` + +#### claude-plugin/commands/install-skill.md +- Lists targets: `cursor`, `windsurf`, `continue`, `cline` +- **Not registered adaptors** โ€” will fail + +#### claude-plugin/README.md & skills/skill-builder/SKILL.md +- Claims "35 MCP tools" โ€” actual is **40** + +### 8.2 examples/ โ€” ๐Ÿ”ด ALL EXAMPLES USE REMOVED COMMANDS + +**Every example README** (chroma, cline, continue-dev, cursor, haystack, langchain, llama-index, pinecone, weaviate, windsurf) references: +- `skill-seekers scrape --config ...` โ†’ should be `skill-seekers create --config ...` +- `skill-seekers github --repo ...` โ†’ should be `skill-seekers create ...` + +#### windsurf-fastapi-context/ +- References `--split-rules` and `--max-chars` flags on `skill-seekers package` +- **These flags do not exist** + +#### Other Example Issues +- Many reference `skill-seekers v2.10.0` โ€” current is 3.6.0 +- `cursor-react-skill/README.md`: Uses `--target claude` for Cursor. Cursor uses `.cursorrules` (plain markdown); `--target markdown` would be more appropriate +- `continue-dev-universal/README.md`: References `~/.continue/config.json` for HTTP context providers. Continue.dev has shifted toward YAML config and MCP servers + +### 8.3 api/configs_repo/ โ€” ๐Ÿ”ด SEVERELY STALE + +#### STATUS.md +- "Last Updated: 2024-12-21" +- "Total Configs: 90 unified format" +- "Format Version: Unified (v2.11.0+)" +- Actual: v3.6.0, submodule shows 22+ official categories + +#### Divergence Between Copies +- `api/configs_repo/README.md`: Claims **178 configs / 21 categories / v3.1.0+** +- `skill-seekers-configs/README.md` (root copy): Claims **24 configs / 7 categories** +- **These wildly diverge** + +#### CONTRIBUTING.md (configs_repo) +- References `skill-seekers scrape --config` โ€” command removed + +### 8.4 skill-seekers-configs/ โ€” ๐Ÿ”ด COUNTS DON'T ADD UP + +All TODO files claim `โœ… COMPLETE` but counts are contradictory: + +| File | Claims | Actually Lists | +|------|--------|----------------| +| `TODO-ai-ml.md` | 40 configs | 34 items | +| `TODO-build-tools.md` | 9 configs | ~15 items | +| `TODO-cloud.md` | 10 configs | ~15 items | +| `TODO-databases.md` | 9 configs | ~20 items | +| `TODO-development-tools.md` | 6 configs | ~12 items | +| `TODO-devops.md` | 7 configs | ~12 items | +| `TODO-game-engines.md` | 7 configs | ~20 items | +| `TODO-testing.md` | 4 configs | ~10 items | +| `TODO-web-frameworks.md` | 12 configs | ~18 items | + +--- + +## 9. Tests, Scripts, Skills, src docs + +### 9.1 tests/mcp_integration_test.md โ€” ๐Ÿ”ด BROKEN PATHS +- `python3 mcp/server.py` โ†’ should be `python -m skill_seekers.mcp.server_fastmcp` +- `pip3 install -r mcp/requirements.txt` โ†’ file doesn't exist +- `python3 cli/doc_scraper.py`, `python3 cli/package_skill.py` โ†’ pre-`src/` layout + +### 9.2 scripts/skill_header.md โ€” ๐Ÿ”ด DEPRECATED FLAGS +- References `--depth surface/deep/full` โ†’ **deprecated** (use `--preset`) +- References `--ai-mode none/api/local` โ†’ **does not exist** in current CLI + +### 9.3 skills/skill-seekers/SKILL.md โ€” โš ๏ธ STALE COUNT +- Claims **35 MCP tools** โ€” actual is **40** +- Otherwise well-structured + +### 9.4 src/skill_seekers/mcp/README.md โ€” ๐Ÿ”ด INCONSISTENT & BROKEN LINKS +- Header says "34 tools", later says "40 tools" โ€” inconsistent +- References `docs/MCP_SETUP.md`, `docs/USAGE.md`, `docs/TESTING.md` โ€” **none exist** +- References `cli/doc_scraper.py`, `cli/estimate_pages.py`, `cli/package_skill.py` โ€” pre-`src/` layout +- Claims "34 tests | Pass rate: 100%" and "25 tests" in different sections + +--- + +## 10. Missing Documentation + +These features exist in the codebase but are **under-documented or undocumented** in user-facing docs: + +| Feature | Code Evidence | Doc Status | +|---------|---------------|------------| +| `doctor` command | `doctor_command.py` | Not mentioned in README, getting-started, or user-guide | +| `--preset` flag | Major UX feature in `create` | Mentioned in CLI_REFERENCE but not in README or getting-started | +| `--dry-run`, `--fresh`, `--resume` | Lifecycle management | Undocumented in user guides | +| `--chunk-for-rag`, `--chunk-tokens` | RAG chunking on `package` | Undocumented in packaging guides | +| `--streaming` | Memory-efficient packaging | Undocumented | +| `--marketplace`, `--marketplace-category` | Marketplace publishing | Undocumented | +| `scan` command deep guide | `scan_command.py` | Brief mention only; no deep guide | +| `video` source type deep guide | 7 `video_*.py` files | Mentioned but not deeply documented | +| `epub` source type | `epub_scraper.py` (107 tests) | Unclear coverage in user guides | +| `browser` extra dependency | Playwright for SPA sites | Not in installation table | +| `embedding` extra | Embedding server support | Not in installation table | +| Cloud extras (`s3`, `gcs`, `azure`) | Cloud storage upload | Not in installation table | +| All 68 YAML workflow presets | `workflows/` directory | Only mentioned as "67" or "68" | + +--- + +## 11. Unneeded / Redundant Documentation + +| File(s) | Issue | Recommendation | +|---------|-------|----------------| +| `DOCKER_GUIDE.md` + `DOCKER_DEPLOYMENT.md` | Near-duplicates | Merge into one | +| `KUBERNETES_GUIDE.md` + `KUBERNETES_DEPLOYMENT.md` | Near-duplicates | Merge into one | +| `user-guide/06-troubleshooting.md` + `TROUBLESHOOTING.md` | Heavy overlap | Consolidate or differentiate scope | +| `QWEN.md` | Duplicates CLAUDE.md/AGENTS.md, less accurate | Update or remove | +| `docs/archive/historical/*` (8 files) | Historical artifacts | Compress or move to external wiki | +| `docs/strategy/STAGE_1_*.md` (3 files) | Implementation records | Merge into one summary | +| `docs/agents/*` (2 files) | Completed EPUB plans | Archive deeper | +| `skill-seekers-configs/README.md` (root copy) | Wildly diverges from submodule | Remove or sync with `api/configs_repo/` | + +--- + +## 12. Recommendations (Prioritized) + +### P0 โ€” Critical (Fix Immediately) +1. **Update English README.md** to v3.6.0 and remove all 14 legacy CLI subcommand examples +2. **Fix all 11 broken internal links** in README.md +3. **Update or remove ALL 11 README translations** โ€” they are 4 minor versions behind and missing major sections +4. **Update ALL example READMEs** to use `skill-seekers create` instead of removed `scrape`/`github`/`video`/`pdf`/`unified` commands +5. **Fix `distribution/github-action/README.md`** to use valid CLI commands +6. **Update `ROADMAP.md`** version header, check off completed tasks, remove obsolete v2.x release planning +7. **Rewrite `TROUBLESHOOTING.md`** for `src/` layout and modern CLI paths +8. **Fix `CONTRIBUTING.md`** setup instructions to match AGENTS.md (`pip install -e .`) + +### P1 โ€” High (Fix Soon) +9. **Unify version stamps** to 3.6.0 across all docs (or automate via CI build step) +10. **Consolidate Docker and K8s duplicate files** +11. **Update MCP tool counts** to consistently say **40** across all docs +12. **Update `guides/MCP_SETUP.md`** to match current v3.6.0 reality +13. **Update `integrations/INTEGRATIONS.md`** from v2.10.0+ to v3.6.0 +14. **Fix `tests/mcp_integration_test.md`** paths to `server_fastmcp.py` +15. **Fix `src/skill_seekers/mcp/README.md`** broken links and inconsistent counts +16. **Update `FEATURE_MATRIX.md`** to include all 21+ packaging targets +17. **Update `scripts/skill_header.md`** to remove deprecated `--depth` and non-existent `--ai-mode` +18. **Sync or remove `skill-seekers-configs/README.md`** (root copy) + +### P2 โ€” Medium (Quality Improvements) +19. **Update `docs/README.md`** to reflect actual directory structure (add missing directories) +20. **Update `docs/plans/video/*.md`** from "Planning" to "Implemented" +21. **Update `docs/strategy/README.md`** and `INTEGRATION_STRATEGY.md` to show executed deliverables +22. **Add missing features to README**: `--preset`, `--dry-run`, `doctor`, `sync-config`, `stream`, `update`, `multilang`, `quality` +23. **Add missing optional deps** to installation table: `browser`, `embedding`, `s3`, `gcs`, `azure`, `rag-upload` +24. **Add `scan` and `doctor` deep guides** to getting-started or user-guide +25. **Update `guides/MIGRATION_GUIDE.md`** to discuss actual v3.5โ†’v3.6 migration + +### P3 โ€” Low (Nice to Have) +26. **Automate version stamping** in CI to prevent future drift +27. **Archive completed agent plans** (EPUB, scrape-count) deeper or compress +28. **Add documentation update checklist** to `.github/PULL_REQUEST_TEMPLATE.md` +29. **Regenerate UML diagrams** to reflect scan feature and other recent changes +30. **Consider professional translation** of `docs/zh-CN/` or rename to `docs/extended/` if not actually Chinese + +--- + +## Appendix: Files Audited by Area + +| Area | Files Count | Key Finding | +|------|-------------|-------------| +| Root READMEs | 12 | All translations 4 versions behind | +| Core docs | 7 | ROADMAP, TROUBLESHOOTING, CONTRIBUTING severely outdated | +| docs/ main | ~86 | Version inconsistency, duplicate files, missing structure | +| docs/zh-CN/ | 21 | **0% actually translated to Chinese** | +| docs/archive/ | 18 | Appropriately archived, some could compress deeper | +| docs/plans/video/ | 8 | Misleadingly labeled "Planning" โ€” already implemented | +| docs/strategy/ | 11 | Partially executed, needs update | +| docs/roadmap/ | 4 | Future design docs โ€” appropriately kept | +| docs/integrations/ | 18 | Successfully created strategy deliverables | +| distribution/ | 6 | GitHub Action uses removed commands | +| examples/ | 13 | ALL use removed CLI commands | +| api/configs_repo/ | 6 | STATUS.md severely stale | +| skill-seekers-configs/ | 13 | Counts don't add up | +| .github/ | 5 | Templates functional but could reference `doctor` | +| tests/ | 1 | Broken paths to old MCP server | +| scripts/ | 1 | Deprecated flags | +| skills/ | 1 | Stale MCP tool count | +| src/ | 1 | Broken links, inconsistent counts | + +--- + +*End of Report* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2bd0aef --- /dev/null +++ b/Dockerfile @@ -0,0 +1,75 @@ +# Skill Seekers - Multi-stage Docker Build +# Optimized for production deployment with minimal image size + +# Stage 1: Builder - Install dependencies and build +FROM python:3.12-slim as builder + +WORKDIR /build + +# Install build dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + gcc \ + g++ \ + git \ + && rm -rf /var/lib/apt/lists/* + +# Copy dependency files +COPY pyproject.toml README.md ./ +COPY src/ src/ + +# Install dependencies and build package +RUN pip install --no-cache-dir --upgrade pip uv && \ + uv pip install --system --no-cache -e . && \ + uv pip install --system --no-cache ".[all-llms]" + +# Stage 2: Runtime - Minimal production image +FROM python:3.12-slim + +LABEL maintainer="Skill Seekers " +LABEL description="Skill Seekers - Convert documentation to AI skills" +LABEL version="2.9.0" + +# Install runtime dependencies only +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Create non-root user +RUN useradd -m -u 1000 -s /bin/bash skillseeker && \ + mkdir -p /app /data /configs /output && \ + chown -R skillseeker:skillseeker /app /data /configs /output + +WORKDIR /app + +# Copy Python packages from builder +COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages +COPY --from=builder /usr/local/bin/skill-seekers* /usr/local/bin/ + +# Copy application code +COPY --chown=skillseeker:skillseeker src/ src/ +COPY --chown=skillseeker:skillseeker configs/ configs/ +COPY --chown=skillseeker:skillseeker pyproject.toml README.md ./ + +# Switch to non-root user +USER skillseeker + +# Set environment variables +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PATH="/home/skillseeker/.local/bin:$PATH" \ + SKILL_SEEKERS_HOME=/data \ + SKILL_SEEKERS_OUTPUT=/output + +# Health check +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD skill-seekers --version || exit 1 + +# Default volumes +VOLUME ["/data", "/configs", "/output"] + +# Expose MCP server port (HTTP mode) +EXPOSE 8765 + +# Default command - show help +CMD ["skill-seekers", "--help"] diff --git a/Dockerfile.mcp b/Dockerfile.mcp new file mode 100644 index 0000000..7baba55 --- /dev/null +++ b/Dockerfile.mcp @@ -0,0 +1,57 @@ +# Skill Seekers MCP Server - Docker Image +# Optimized for MCP server deployment (stdio + HTTP modes) + +FROM python:3.12-slim + +LABEL maintainer="Skill Seekers " +LABEL description="Skill Seekers MCP Server - 35 tools for AI skills generation" +LABEL version="3.3.0" + +WORKDIR /app + +# Install runtime dependencies +RUN apt-get update && apt-get install -y --no-install-recommends \ + git \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Create non-root user +RUN useradd -m -u 1000 -s /bin/bash mcp && \ + mkdir -p /app /data /configs /output && \ + chown -R mcp:mcp /app /data /configs /output + +# Copy application files +COPY --chown=mcp:mcp src/ src/ +COPY --chown=mcp:mcp configs/ configs/ +COPY --chown=mcp:mcp pyproject.toml README.md ./ + +# Install dependencies +RUN pip install --no-cache-dir --upgrade pip && \ + pip install --no-cache-dir -e ".[all-llms]" && \ + pip install --no-cache-dir mcp + +# Switch to non-root user +USER mcp + +# Environment variables +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + MCP_TRANSPORT=http \ + MCP_PORT=8765 \ + SKILL_SEEKERS_HOME=/data \ + SKILL_SEEKERS_OUTPUT=/output + +# Health check for HTTP mode +HEALTHCHECK --interval=30s --timeout=10s --start-period=10s --retries=3 \ + CMD curl -f http://localhost:${MCP_PORT}/health || exit 1 + +# Volumes +VOLUME ["/data", "/configs", "/output"] + +# Expose MCP server port (default 8765, overridden by $PORT on cloud platforms) +EXPOSE ${MCP_PORT:-8765} + +# Start MCP server in HTTP mode by default +# Uses shell form so $PORT/$MCP_PORT env vars are expanded at runtime +# Cloud platforms (Render, Railway, etc.) set $PORT automatically +CMD python -m skill_seekers.mcp.server_fastmcp --http --host 0.0.0.0 --port ${PORT:-${MCP_PORT:-8765}} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..563effa --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Yusuf Karaaslan + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/QWEN.md b/QWEN.md new file mode 100644 index 0000000..0f38add --- /dev/null +++ b/QWEN.md @@ -0,0 +1,719 @@ +# QWEN.md - Skill Seekers + +Comprehensive context file for AI coding agents working with the Skill Seekers project. + +--- + +## Project Overview + +**Skill Seekers** (v3.6.0) is a Python CLI tool and MCP server that converts documentation sites, GitHub repositories, PDFs, videos, notebooks, wikis, and 17+ source types into structured AI-ready skills for 21+ LLM platforms and RAG pipelines. + +**Tagline:** "The data layer for AI systems" โ€” sits between raw documentation and every AI system that consumes it (Claude, Gemini, LangChain, LlamaIndex, Cursor, etc.). + +### Key Capabilities + +- **18 source types:** documentation (web), GitHub, PDF, Word (.docx), EPUB, video, local codebase, Jupyter, HTML, OpenAPI, AsciiDoc, PowerPoint, RSS/Atom, man pages, Confluence, Notion, Slack/Discord chat +- **21+ export targets:** Claude, Gemini, OpenAI, DeepSeek, Qwen, Fireworks, Together, OpenRouter, IBM BoB, Kimi, MiniMax, OpenCode, LangChain, LlamaIndex, Haystack, Pinecone, Chroma, Weaviate, Qdrant, FAISS, Markdown, and more +- **Unified pipeline:** One scraping command โ†’ export to any platform without re-scraping +- **MCP server:** 40 tools for AI assistants to scrape, package, and manage skills +- **AI enhancement:** Optional Claude-powered enhancement for better skill quality + +### Project Links + +| Resource | Link | +|----------|------| +| Website | https://skillseekersweb.com/ | +| PyPI | https://pypi.org/project/skill-seekers/ | +| GitHub | https://github.com/yusufkaraaslan/Skill_Seekers | +| Configs | https://github.com/yusufkaraaslan/skill-seekers-configs | +| MCP | https://modelcontextprotocol.io | + +--- + +## Project Structure + +``` +Skill_Seekers/ +โ”œโ”€โ”€ src/skill_seekers/ # Main package (src/ layout) +โ”‚ โ”œโ”€โ”€ cli/ # CLI commands (97 files) +โ”‚ โ”‚ โ”œโ”€โ”€ adaptors/ # Platform adaptors (Strategy pattern) +โ”‚ โ”‚ โ”œโ”€โ”€ arguments/ # CLI argument definitions +โ”‚ โ”‚ โ”œโ”€โ”€ parsers/ # Subcommand parsers +โ”‚ โ”‚ โ”œโ”€โ”€ storage/ # Cloud storage adaptors +โ”‚ โ”‚ โ”œโ”€โ”€ main.py # Unified CLI entry point +โ”‚ โ”‚ โ”œโ”€โ”€ source_detector.py # Auto-detects source type +โ”‚ โ”‚ โ”œโ”€โ”€ create_command.py # Unified `create` command +โ”‚ โ”‚ โ”œโ”€โ”€ config_validator.py # Config validation +โ”‚ โ”‚ โ”œโ”€โ”€ unified_scraper.py # Multi-source orchestrator +โ”‚ โ”‚ โ””โ”€โ”€ unified_skill_builder.py # Skill merging +โ”‚ โ”œโ”€โ”€ mcp/ # MCP server +โ”‚ โ”‚ โ”œโ”€โ”€ server.py # Main MCP server +โ”‚ โ”‚ โ”œโ”€โ”€ server_fastmcp.py # FastMCP implementation +โ”‚ โ”‚ โ””โ”€โ”€ tools/ # MCP tools (10 files) +โ”‚ โ”œโ”€โ”€ sync/ # Sync monitoring (Pydantic) +โ”‚ โ”œโ”€โ”€ benchmark/ # Benchmarking framework +โ”‚ โ”œโ”€โ”€ embedding/ # FastAPI embedding server +โ”‚ โ””โ”€โ”€ workflows/ # 68 YAML workflow presets +โ”œโ”€โ”€ tests/ # ~143 test files (pytest) +โ”œโ”€โ”€ configs/ # Preset JSON scraping configs +โ”œโ”€โ”€ docs/ # Documentation +โ”œโ”€โ”€ templates/ # GitHub Actions, etc. +โ”œโ”€โ”€ scripts/ # Utility scripts +โ””โ”€โ”€ pyproject.toml # Project configuration +``` + +--- + +## Setup & Installation + +### Required: Install in Editable Mode + +```bash +# ALWAYS run this first โ€” tests hard-exit if package not installed +pip install -e . + +# With dev tools (pytest, ruff, mypy, coverage) +pip install -e ".[dev]" + +# With all optional dependencies +pip install -e ".[all]" +``` + +**Note:** `tests/conftest.py` checks that `skill_seekers` is importable and calls `sys.exit(1)` if not. + +### Environment Variables + +Copy `.env.example` to `.env` and configure: + +```bash +# Required for AI enhancement +ANTHROPIC_API_KEY=sk-ant-... + +# Optional: LLM platforms +GOOGLE_API_KEY=... # Gemini +OPENAI_API_KEY=... # OpenAI/ChatGPT + +# Optional: GitHub (increases rate limits) +GITHUB_TOKEN=... + +# MCP Server config +MCP_TRANSPORT=http +MCP_PORT=8765 +``` + +--- + +## Build / Test / Lint Commands + +### Testing + +```bash +# Run ALL tests (required before commits) +pytest tests/ -v + +# Run single test file +pytest tests/test_scraper_features.py -v + +# Run single test function +pytest tests/test_scraper_features.py::test_detect_language -v + +# Run single test class method +pytest tests/test_adaptors/test_claude_adaptor.py::TestClaudeAdaptor::test_package -v + +# Skip slow/integration tests +pytest tests/ -v -m "not slow and not integration" + +# With coverage +pytest tests/ --cov=src/skill_seekers --cov-report=term +``` + +### Linting & Formatting + +```bash +# Lint (ruff) +ruff check src/ tests/ +ruff check src/ tests/ --fix + +# Format (ruff) +ruff format --check src/ tests/ +ruff format src/ tests/ + +# Type check (mypy) +mypy src/skill_seekers --show-error-codes --pretty +``` + +### Pytest Configuration + +From `pyproject.toml`: +- `addopts = "-v --tb=short --strict-markers"` +- `asyncio_mode = "auto"` +- `asyncio_default_fixture_loop_scope = "function"` + +**Test markers:** `slow`, `integration`, `e2e`, `venv`, `bootstrap`, `benchmark`, `asyncio` + +**Test count:** 123 test files (107 in `tests/`, 16 in `tests/test_adaptors/`) + +--- + +## CLI Usage + +### Core Commands + +```bash +# Unified create command (auto-detects source type) +skill-seekers create https://docs.react.dev/ +skill-seekers create facebook/react +skill-seekers create manual.pdf +skill-seekers create notebook.ipynb + +# Package for specific platform +skill-seekers package output/react --target claude # Claude AI (ZIP) +skill-seekers package output/react --target gemini # Gemini (tar.gz) +skill-seekers package output/react --target openai # OpenAI +skill-seekers package output/react --target cursor # .cursorrules + +# Multi-source unified scraping +skill-seekers create configs/react_unified.json +``` + +### All 20+ Commands + +| Command | Description | +|---------|-------------| +| `create` | Unified create (auto-detects source) | +| `scan` | AI-detect project tech stack and emit configs | +| `doctor` | Health check for dependencies and configuration | +| `scrape` | Scrape documentation website | +| `github` | Scrape GitHub repository | +| `pdf` | Extract from PDF | +| `word` | Extract from Word (.docx) | +| `epub` | Extract from EPUB | +| `video` | Extract from video | +| `jupyter` | Extract from Jupyter notebook | +| `html` | Extract from local HTML | +| `openapi` | Extract from OpenAPI spec | +| `asciidoc` | Extract from AsciiDoc | +| `pptx` | Extract from PowerPoint | +| `rss` | Extract from RSS/Atom feed | +| `manpage` | Extract from man pages | +| `confluence` | Extract from Confluence | +| `notion` | Extract from Notion | +| `chat` | Extract from Slack/Discord | +| `unified` | Multi-source scraping | +| `analyze` | Analyze local codebase | +| `enhance` | AI enhancement | +| `package` | Package skill | +| `upload` | Upload to platform | +| `install-agent` | Install to AI agent | + +--- + +## Code Style & Conventions + +### Formatting Rules (ruff) + +- **Line length:** 100 characters +- **Target Python:** 3.10+ +- **Enabled lint rules:** E, W, F, I, B, C4, UP, ARG, SIM +- **Ignored rules:** E501, F541, ARG002, B007, I001, SIM114 + +### Naming Conventions + +| Type | Convention | Example | +|------|------------|---------| +| Files | `snake_case.py` | `source_detector.py` | +| Classes | `PascalCase` | `SkillAdaptor`, `ClaudeAdaptor` | +| Functions | `snake_case` | `get_adaptor()`, `detect_language()` | +| Constants | `UPPER_CASE` | `ADAPTORS`, `DEFAULT_CHUNK_TOKENS` | +| Private | `_prefix` | `_read_existing_content()` | + +### Type Hints + +- Gradual typing with modern syntax +- Use `str | None` not `Optional[str]` +- Use `list[str]` not `List[str]` +- MyPy config: `disallow_untyped_defs = false`, `check_untyped_defs = true` + +### Docstrings + +- Module-level docstring on every file +- Google-style for public functions/classes +- Include `Args:`, `Returns:`, `Raises:` sections + +### Error Handling + +```python +# Use specific exceptions +raise ValueError("Invalid config: missing 'sources'") +raise RuntimeError("Scraping failed after 3 retries") + +# Chain exceptions +try: + ... +except Exception as e: + raise RuntimeError(f"Failed to process {source}") from e + +# Guard optional imports +try: + from .claude import ClaudeAdaptor +except ImportError: + ClaudeAdaptor = None +``` + +### Import Patterns + +```python +# Standard library โ†’ third-party โ†’ first-party +import os +import sys +from pathlib import Path + +import requests +from beautifulsoup4 import BeautifulSoup + +from skill_seekers.cli.adaptors import ClaudeAdaptor +from skill_seekers.cli.source_detector import SourceDetector + +# Guard optional imports +try: + from .gemini import GeminiAdaptor +except ImportError: + GeminiAdaptor = None + +# Re-exports (use noqa) +from .base import SkillAdaptor, SkillMetadata # noqa: F401 +``` + +--- + +## Key Architectural Patterns + +### 1. Adaptor (Strategy) Pattern + +All platform logic in `cli/adaptors/`. Each adaptor inherits `SkillAdaptor`: + +```python +from skill_seekers.cli.adaptors.base import SkillAdaptor, SkillMetadata + +class ClaudeAdaptor(SkillAdaptor): + PLATFORM = "claude" + PLATFORM_NAME = "Claude AI (Anthropic)" + + def format_skill_md(self, skill_dir: Path, metadata: SkillMetadata) -> str: + """Format SKILL.md with YAML frontmatter""" + ... + + def package(self, skill_dir: Path, output_path: Path, ...) -> Path: + """Package as ZIP with SKILL.md, references/, scripts/""" + ... + + def upload(self, package_path: Path, api_key: str) -> str: + """Upload to Claude API""" + ... +``` + +**Registered in:** `cli/adaptors/__init__.py` โ†’ `ADAPTORS` dict + +### 2. Scraper Pattern + +Each source type has 3 files: + +``` +cli/_scraper.py # Main scraper class + main() +arguments/.py # CLI argument definitions +parsers/_parser.py # ArgumentParser setup +``` + +**Example:** `pdf_scraper.py` โ†’ `PdfToSkillConverter` class + +**Registered in:** +- `parsers/__init__.py` โ†’ `PARSERS` list +- `main.py` โ†’ `COMMAND_MODULES` dict +- `config_validator.py` โ†’ `VALID_SOURCE_TYPES` set + +### 3. Unified Pipeline + +**`unified_scraper.py`** orchestrates multi-source scraping: + +```python +class UnifiedScraper: + def __init__(self, config_path: str, merge_mode: str = "rule-based"): + self.config = load_config(config_path) + self.scraped_data = { + "documentation": [], + "github": [], + "pdf": [], + # ... 18 source types + } + + def run(self) -> Path: + # 1. Scrape all sources + for source in self.config["sources"]: + self._scrape_source(source) + + # 2. Merge (pairwise synthesis or generic) + merged = self._merge_sources() + + # 3. Build unified skill + return self._build_skill(merged) +``` + +**`unified_skill_builder.py`** uses: +- **Pairwise synthesis** for docs+github+pdf combos +- **`_generic_merge()`** for other combinations + +### 4. Source Detection + +**`source_detector.py`** auto-detects from user input: + +```python +class SourceDetector: + @classmethod + def detect(cls, source: str) -> SourceInfo: + # Check file extensions + if source.endswith(".pdf"): + return cls._detect_pdf(source) + if source.endswith(".ipynb"): + return cls._detect_jupyter(source) + + # Check GitHub patterns + if cls.GITHUB_REPO_PATTERN.match(source): + return cls._detect_github(source) + + # Check URLs + parsed = urlparse(source) + if parsed.scheme in ("http", "https"): + return cls._detect_web(source) + + # Check local directories + if os.path.isdir(source): + return cls._detect_local(source) +``` + +### 5. MCP Tools + +**`mcp/tools/`** grouped by category: + +- `scrape_tools.py` โ€” Scraping tools +- `package_tools.py` โ€” Packaging tools +- `enhance_tools.py` โ€” Enhancement tools +- `install_tools.py` โ€” Installation tools +- `vector_db_tools.py` โ€” Vector DB tools +- `workflow_tools.py` โ€” Workflow tools + +**`scrape_generic_tool`** handles all new source types dynamically. + +--- + +## Configuration + +### Unified Config Format + +```json +{ + "name": "react-skill", + "description": "React documentation skill", + "sources": [ + { + "type": "documentation", + "url": "https://react.dev/", + "config": { + "max_pages": 100, + "include_patterns": ["**/*.md"], + "exclude_patterns": ["**/blog/**"] + } + }, + { + "type": "github", + "repo": "facebook/react", + "config": { + "include": ["src/", "packages/"], + "exclude": ["**/*.test.tsx"] + } + } + ], + "merge_mode": "rule-based", + "output": "output/react" +} +``` + +### Valid Source Types + +```python +VALID_SOURCE_TYPES = { + "documentation", "github", "pdf", "local", "word", + "video", "epub", "jupyter", "html", "openapi", + "asciidoc", "pptx", "confluence", "notion", "rss", + "manpage", "chat" +} +``` + +### Merge Modes + +- **`rule-based`** โ€” Deterministic merging with conflict resolution rules +- **`claude-enhanced`** โ€” AI-powered merging (requires `ANTHROPIC_API_KEY`) + +--- + +## Git Workflow + +### Branch Structure + +``` +main (production, protected) + โ†‘ + โ”‚ (maintainer merges only) + โ”‚ +development (integration, default PR target) + โ†‘ + โ”‚ (all contributor PRs) + โ”‚ +feature branches +``` + +### PR Process + +1. Fork and clone +2. Create feature branch from `development` +3. Make changes, commit, push +4. Create PR targeting **`development`** (NOT `main`) +5. Wait for tests + review + +```bash +git checkout development +git pull upstream development +git checkout -b my-feature +# ... make changes +git commit -m "Add feature X" +git push origin my-feature +# Create PR โ†’ development +``` + +--- + +## Testing Practices + +### Test Organization + +``` +tests/ +โ”œโ”€โ”€ conftest.py # Fixtures, setup +โ”œโ”€โ”€ test_adaptors/ # Adaptor tests (16 files) +โ”œโ”€โ”€ test_scraper_features.py # Core scraper tests +โ”œโ”€โ”€ test_source_detector.py # Source detection tests +โ”œโ”€โ”€ test_config_validation.py # Config validation +โ”œโ”€โ”€ test_mcp_*.py # MCP tests +โ”œโ”€โ”€ test_*_e2e.py # End-to-end tests +โ””โ”€โ”€ fixtures/ # Test fixtures +``` + +### Test Patterns + +```python +import pytest +from skill_seekers.cli.source_detector import SourceDetector + +class TestSourceDetector: + """Test source detection""" + + def test_detect_pdf(self, tmp_path): + """Test PDF detection""" + pdf_file = tmp_path / "test.pdf" + pdf_file.touch() + + result = SourceDetector.detect(str(pdf_file)) + assert result.type == "pdf" + + @pytest.mark.asyncio + async def test_async_scraping(self): + """Test async scraping""" + # asyncio_mode = "auto" โ€” decorator often implicit + ... + + @pytest.mark.slow + def test_slow_operation(self): + """Mark slow tests for optional skipping""" + ... + + @pytest.mark.integration + def test_external_api(self): + """Mark integration tests requiring external services""" + ... +``` + +### Fixtures + +```python +# tests/conftest.py +import pytest +from pathlib import Path + +@pytest.fixture +def sample_config(tmp_path): + """Create sample config file""" + config = { + "name": "test-skill", + "sources": [{"type": "documentation", "url": "https://example.com"}] + } + config_file = tmp_path / "config.json" + config_file.write_text(json.dumps(config)) + return str(config_file) + +@pytest.fixture +def mock_response(): + """Mock HTTP response""" + class MockResponse: + status_code = 200 + text = "Test" + return MockResponse() +``` + +--- + +## Development Guidelines + +### Before Commits + +```bash +# 1. Lint +ruff check src/ tests/ +ruff format --check src/ tests/ + +# 2. Type check +mypy src/skill_seekers + +# 3. Test (ALL must pass) +pytest tests/ -v +``` + +### Adding New Source Types + +1. Create scraper: `cli/_scraper.py` with `ToSkillConverter` class +2. Create arguments: `arguments/.py` +3. Create parser: `parsers/_parser.py` +4. Register in `parsers/__init__.py` โ†’ `PARSERS` +5. Register in `main.py` โ†’ `COMMAND_MODULES` +6. Add to `config_validator.py` โ†’ `VALID_SOURCE_TYPES` +7. Add detection to `source_detector.py` +8. Add to `unified_scraper.py` โ†’ `scraped_data` dict +9. Write tests in `tests/test__scraper.py` + +### Adding New Platform Adaptors + +1. Create adaptor: `cli/adaptors/.py` inheriting `SkillAdaptor` +2. Implement: `format_skill_md()`, `package()`, `upload()` +3. Register in `cli/adaptors/__init__.py` โ†’ `ADAPTORS` dict +4. Add to `package_skill.py` โ†’ target mapping +5. Write tests in `tests/test_adaptors/test_.py` + +### Adding New MCP Tools + +1. Create tool in `mcp/tools/_tools.py` +2. Use `@mcp.tool()` decorator +3. Register in `mcp/server.py` or `mcp/server_fastmcp.py` +4. Write tests in `tests/test_mcp_*.py` + +--- + +## Common Issues & Solutions + +### Tests Fail with Import Error + +**Problem:** `ModuleNotFoundError: No module named 'skill_seekers'` + +**Solution:** Install in editable mode first: +```bash +pip install -e . +``` + +### Optional Dependency Missing + +**Problem:** `ImportError: No module named 'mammoth'` + +**Solution:** Install optional dependency: +```bash +pip install "skill-seekers[docx]" +# or +pip install "skill-seekers[all]" +``` + +### Rate Limiting + +**Problem:** GitHub API rate limited (60/hour anonymous) + +**Solution:** Set `GITHUB_TOKEN` in `.env`: +```bash +GITHUB_TOKEN=ghp_... +``` + +### Async Scraping Issues + +**Problem:** Event loop errors in async tests + +**Solution:** Use `@pytest.mark.asyncio` decorator (auto mode enabled) + +--- + +## Key Files Reference + +| File | Purpose | +|------|---------| +| `pyproject.toml` | Project config, dependencies, tool settings | +| `src/skill_seekers/cli/main.py` | Unified CLI entry point | +| `src/skill_seekers/cli/source_detector.py` | Auto-detect source types | +| `src/skill_seekers/cli/config_validator.py` | Config validation | +| `src/skill_seekers/cli/unified_scraper.py` | Multi-source orchestrator | +| `src/skill_seekers/cli/adaptors/base.py` | Adaptor interface | +| `src/skill_seekers/cli/adaptors/__init__.py` | Adaptor registry | +| `src/skill_seekers/mcp/server.py` | MCP server | +| `tests/conftest.py` | Test fixtures | +| `AGENTS.md` | Quick reference for AI agents | + +--- + +## Version & Release + +- **Current version:** 3.3.0 (from `pyproject.toml`) +- **Version source:** `src/skill_seekers/_version.py` reads from `pyproject.toml` +- **Release process:** Tag โ†’ GitHub Actions โ†’ PyPI publish +- **Changelog:** `CHANGELOG.md` (Keep a Changelog format) + +--- + +## Related Repositories + +| Repository | Purpose | +|------------|---------| +| [Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers) | Core CLI & MCP (this repo) | +| [skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb) | Website & docs | +| [skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs) | Community configs | +| [skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action) | GitHub Action | +| [skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin) | Claude Code plugin | +| [homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers) | Homebrew tap | + +--- + +## Quick Commands Cheat Sheet + +```bash +# Setup +pip install -e ".[dev]" +cp .env.example .env +# Edit .env with API keys + +# Development +ruff check src/ tests/ --fix +ruff format src/ tests/ +mypy src/skill_seekers +pytest tests/ -v + +# Test subsets +pytest tests/test_adaptors/ -v +pytest tests/ -m "not slow and not integration" +pytest tests/ --cov=src/skill_seekers + +# Usage +skill-seekers create https://docs.python.org/ +skill-seekers package output/python --target claude +skill-seekers create configs/react_unified.json +``` diff --git a/README.ar.md b/README.ar.md new file mode 100644 index 0000000..483a107 --- /dev/null +++ b/README.ar.md @@ -0,0 +1,1374 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | ุงู„ุนุฑุจูŠุฉ | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **ุฅุดุนุงุฑ ุงู„ุชุฑุฌู…ุฉ ุงู„ุขู„ูŠุฉ** +> +> ุชู…ุช ุชุฑุฌู…ุฉ ู‡ุฐุง ุงู„ู…ุณุชู†ุฏ ุชู„ู‚ุงุฆูŠู‹ุง ุจูˆุงุณุทุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ. ุนู„ู‰ ุงู„ุฑุบู… ู…ู† ุญุฑุตู†ุง ุนู„ู‰ ุฌูˆุฏุฉ ุงู„ุชุฑุฌู…ุฉุŒ ู‚ุฏ ุชุชุถู…ู† ุชุนุจูŠุฑุงุช ุบูŠุฑ ุฏู‚ูŠู‚ุฉ. + +[![ุงู„ุฅุตุฏุงุฑ](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![ุงู„ุฑุฎุตุฉ: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![ุชูƒุงู…ู„ MCP](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![ุงู„ุงุฎุชุจุงุฑุงุช](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![ู„ูˆุญุฉ ุงู„ู…ุดุฑูˆุน](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![ุฅุตุฏุงุฑ PyPI](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ุงู„ุชู†ุฒูŠู„ุงุช](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ุฅุตุฏุงุฑ Python](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![ุงู„ู…ูˆู‚ุน ุงู„ุฑุณู…ูŠ](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![ู…ุชุงุจุนุฉ ุนู„ู‰ Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![ู†ุฌูˆู… GitHub](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  ุทุจู‚ุฉ ุงู„ุจูŠุงู†ุงุช ู„ุฃู†ุธู…ุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ.** ูŠุญูˆู‘ู„ Skill Seekers ู…ูˆุงู‚ุน ุงู„ุชูˆุซูŠู‚ ูˆู…ุณุชูˆุฏุนุงุช GitHub ูˆู…ู„ูุงุช PDF ูˆุงู„ููŠุฏูŠูˆู‡ุงุช ูˆุฏูุงุชุฑ Jupyter ูˆุงู„ูˆูŠูƒูŠ ูˆ18 ู†ูˆุนู‹ุง ู…ู† ุงู„ู…ุตุงุฏุฑ ุฅู„ู‰ ุฃุตูˆู„ ู…ุนุฑููŠุฉ ู…ู†ุธู…ุฉ โ€” ุฌุงู‡ุฒุฉ ู„ุชุดุบูŠู„ ู…ู‡ุงุฑุงุช ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (Claude ูˆGemini ูˆOpenAI) ูˆุฎุทูˆุท ุฃู†ุงุจูŠุจ RAG (ู…ุซู„ LangChain ูˆLlamaIndex ูˆPinecone) ูˆู…ุณุงุนุฏุงุช ุงู„ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (ู…ุซู„ Cursor ูˆWindsurf ูˆCline) ููŠ ุฏู‚ุงุฆู‚ ุจุฏู„ุงู‹ ู…ู† ุณุงุนุงุช. + +> ๐ŸŒ **[ุฒูŠุงุฑุฉ SkillSeekersWeb.com](https://skillseekersweb.com/)** - ุชุตูุญ ุฃูƒุซุฑ ู…ู† 24 ุฅุนุฏุงุฏู‹ุง ู…ุณุจู‚ู‹ุงุŒ ูˆุดุงุฑูƒ ุฅุนุฏุงุฏุงุชูƒุŒ ูˆุงุทู‘ู„ุน ุนู„ู‰ ุงู„ุชูˆุซูŠู‚ ุงู„ูƒุงู…ู„! + +> ๐Ÿ“‹ **[ุนุฑุถ ุฎุงุฑุทุฉ ุงู„ุทุฑูŠู‚ ูˆุงู„ู…ู‡ุงู…](https://github.com/users/yusufkaraaslan/projects/2)** - 134 ู…ู‡ู…ุฉ ุนุจุฑ 10 ูุฆุงุชุŒ ุงุฎุชุฑ ุฃูŠู‹ุง ู…ู†ู‡ุง ู„ู„ู…ุณุงู‡ู…ุฉ! + +## ๐ŸŒ ุงู„ู…ู†ุธูˆู…ุฉ + +Skill Seekers ู‡ูˆ ู…ุดุฑูˆุน ู…ุชุนุฏุฏ ุงู„ู…ุณุชูˆุฏุนุงุช. ุฅู„ูŠูƒ ุฃูŠู† ูŠูˆุฌุฏ ูƒู„ ุดูŠุก: + +| ุงู„ู…ุณุชูˆุฏุน | ุงู„ูˆุตู | ุงู„ุฑูˆุงุจุท | +|----------|-------|---------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | CLI ุงู„ุฃุณุงุณูŠ ูˆุฎุงุฏู… MCP (ู‡ุฐุง ุงู„ู…ุณุชูˆุฏุน) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | ุงู„ู…ูˆู‚ุน ูˆุงู„ุชูˆุซูŠู‚ | [ุงู„ู…ูˆู‚ุน](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | ู…ุณุชูˆุฏุน ุฅุนุฏุงุฏุงุช ุงู„ู…ุฌุชู…ุน | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action ู„ู€ CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | ุฅุถุงูุฉ Claude Code | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap ู„ู€ macOS | | + +> **ุชุฑูŠุฏ ุงู„ู…ุณุงู‡ู…ุฉุŸ** ู…ุณุชูˆุฏุนุงุช ุงู„ู…ูˆู‚ุน ูˆุงู„ุฅุนุฏุงุฏุงุช ู‡ูŠ ู†ู‚ุงุท ุจุฏุงูŠุฉ ุฑุงุฆุนุฉ ู„ู„ู…ุณุงู‡ู…ูŠู† ุงู„ุฌุฏุฏ! + +## ๐Ÿง  ุทุจู‚ุฉ ุงู„ุจูŠุงู†ุงุช ู„ุฃู†ุธู…ุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + +**Skill Seekers ู‡ูˆ ุทุจู‚ุฉ ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุณุจู‚ุฉ ุงู„ุนุงู…ุฉ** ุงู„ุชูŠ ุชู‚ุน ุจูŠู† ุงู„ุชูˆุซูŠู‚ ุงู„ุฎุงู… ูˆุฌู…ูŠุน ุฃู†ุธู…ุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุชูŠ ุชุณุชู‡ู„ูƒู‡. ุณูˆุงุก ูƒู†ุช ุชุจู†ูŠ ู…ู‡ุงุฑุงุช Claude ุฃูˆ ุฎุท ุฃู†ุงุจูŠุจ RAG ุจุงุณุชุฎุฏุงู… LangChain ุฃูˆ ู…ู„ู `.cursorrules` ู„ู€ Cursor โ€” ูุฅู† ุชุญุถูŠุฑ ุงู„ุจูŠุงู†ุงุช ู…ุชุทุงุจู‚. ุชู‚ูˆู… ุจุฐู„ูƒ ู…ุฑุฉ ูˆุงุญุฏุฉ ูˆุชุตุฏู‘ุฑ ุฅู„ู‰ ุฌู…ูŠุน ุงู„ู…ู†ุตุงุช ุงู„ู…ุณุชู‡ุฏูุฉ. + +```bash +# ุฃู…ุฑ ูˆุงุญุฏ โ†’ ุฃุตู„ ู…ุนุฑููŠ ู…ู†ุธู… +skill-seekers create https://docs.react.dev/ +# ุฃูˆ: skill-seekers create facebook/react +# ุฃูˆ: skill-seekers create ./my-project + +# ุงู„ุชุตุฏูŠุฑ ุฅู„ู‰ ุฃูŠ ู†ุธุงู… ุฐูƒุงุก ุงุตุทู†ุงุนูŠ +skill-seekers package output/react --target claude # โ†’ ู…ู‡ุงุฑุฉ Claude AI (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ ู…ุฌู„ุฏ ู…ู‡ุงุฑุฉ IBM Bob +``` + +### ุงู„ู…ุฎุฑุฌุงุช ุงู„ุชูŠ ูŠุชู… ุจู†ุงุคู‡ุง + +| ุงู„ู…ุฎุฑุฌ | ุงู„ู‡ุฏู | ู…ุง ูŠุดุบู‘ู„ู‡ | +|--------|-------|----------| +| **ู…ู‡ุงุฑุฉ Claude** (ZIP + YAML) | `--target claude` | Claude Code ูˆClaude API | +| **ู…ู‡ุงุฑุฉ Gemini** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o ูˆุงู„ู…ุณุงุนุฏุงุช ุงู„ู…ุฎุตุตุฉ | +| **LangChain Documents** | `--target langchain` | ุณู„ุงุณู„ ุงู„ุฃุณุฆู„ุฉ ูˆุงู„ุฃุฌูˆุจุฉ ูˆุงู„ูˆูƒู„ุงุก ูˆุงู„ู…ุณุชุฑุฌุนุงุช | +| **LlamaIndex TextNodes** | `--target llama-index` | ู…ุญุฑูƒุงุช ุงู„ุงุณุชุนู„ุงู… ูˆู…ุญุฑูƒุงุช ุงู„ู…ุญุงุฏุซุฉ | +| **Haystack Documents** | `--target haystack` | ุฎุทูˆุท ุฃู†ุงุจูŠุจ RAG ู„ู„ู…ุคุณุณุงุช | +| **Pinecone ุฌุงู‡ุฒ** (Markdown) | `--target markdown` | ุฑูุน ุงู„ู…ุชุฌู‡ุงุช | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | ู‚ูˆุงุนุฏ ุจูŠุงู†ุงุช ุงู„ู…ุชุฌู‡ุงุช ุงู„ู…ุญู„ูŠุฉ | +| **ู…ู‡ุงุฑุฉ IBM Bob** (ู…ุฌู„ุฏ) | `--target ibm-bob` | ู…ู‡ุงุฑุงุช IBM Bob ุนู„ู‰ ู…ุณุชูˆู‰ ุงู„ู…ุดุฑูˆุน/ุงู„ุนุงู… | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ ู†ุณุฎ SKILL.md | ู…ู„ู `.cursorrules` ููŠ Cursor IDE | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ ู†ุณุฎ | VS Code ูˆIntelliJ ูˆVim | + +### ู„ู…ุงุฐุง ู‡ุฐุง ู…ู‡ู… + +- โšก **ุฃุณุฑุน ุจู†ุณุจุฉ 99%** โ€” ุฃูŠุงู… ู…ู† ุงู„ุชุญุถูŠุฑ ุงู„ูŠุฏูˆูŠ โ†’ 15โ€“45 ุฏู‚ูŠู‚ุฉ +- ๐ŸŽฏ **ุฌูˆุฏุฉ ู…ู‡ุงุฑุงุช ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** โ€” ู…ู„ูุงุช SKILL.md ุจุฃูƒุซุฑ ู…ู† 500 ุณุทุฑ ุชุชุถู…ู† ุฃู…ุซู„ุฉ ูˆุฃู†ู…ุงุท ูˆุฃุฏู„ุฉ +- ๐Ÿ“Š **ุชู‚ุณูŠู… ุฌุงู‡ุฒ ู„ู€ RAG** โ€” ุชู‚ุณูŠู… ุฐูƒูŠ ูŠุญุงูุธ ุนู„ู‰ ูƒุชู„ ุงู„ูƒูˆุฏ ูˆูŠุตูˆู† ุงู„ุณูŠุงู‚ +- ๐ŸŽฌ **ุงู„ููŠุฏูŠูˆ** โ€” ุงุณุชุฎุฑุงุฌ ุงู„ูƒูˆุฏ ูˆุงู„ู†ุตูˆุต ูˆุงู„ู…ุนุฑูุฉ ุงู„ู…ู†ุธู…ุฉ ู…ู† ูŠูˆุชูŠูˆุจ ูˆุงู„ููŠุฏูŠูˆู‡ุงุช ุงู„ู…ุญู„ูŠุฉ +- ๐Ÿ”„ **ู…ุชุนุฏุฏ ุงู„ู…ุตุงุฏุฑ** โ€” ุฏู…ุฌ 18 ู†ูˆุนู‹ุง ู…ู† ุงู„ู…ุตุงุฏุฑ (ุชูˆุซูŠู‚ ูˆGitHub ูˆPDF ูˆููŠุฏูŠูˆ ูˆุฏูุงุชุฑ Jupyter ูˆูˆูŠูƒูŠ ูˆุงู„ู…ุฒูŠุฏ) ููŠ ุฃุตู„ ู…ุนุฑููŠ ูˆุงุญุฏ +- ๐ŸŒ **ุชุญุถูŠุฑ ูˆุงุญุฏ ู„ูƒู„ ุงู„ุฃู‡ุฏุงู** โ€” ุชุตุฏูŠุฑ ู†ูุณ ุงู„ุฃุตู„ ุฅู„ู‰ 21 ู…ู†ุตุฉ ุฏูˆู† ุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฑุงุฌ +- โœ… **ู…ูุฎุชุจุฑ ุจุฅุญูƒุงู…** โ€” ุฃูƒุซุฑ ู…ู† 3,700 ุงุฎุชุจุงุฑู‹ุง ูˆ24 ุฅุนุฏุงุฏู‹ุง ู…ุณุจู‚ู‹ุง ู„ู„ุฃุทุฑ ุงู„ุจุฑู…ุฌูŠุฉุŒ ุฌุงู‡ุฒ ู„ู„ุฅู†ุชุงุฌ + +## ๐Ÿš€ ุงู„ุจุฏุก ุงู„ุณุฑูŠุน (3 ุฃูˆุงู…ุฑ) + +```bash +# 1. ุงู„ุชุซุจูŠุช +pip install skill-seekers + +# 2. ุฅู†ุดุงุก ู…ู‡ุงุฑุฉ ู…ู† ุฃูŠ ู…ุตุฏุฑ +skill-seekers create https://docs.django.com/ + +# 3. ุงู„ุชุนุจุฆุฉ ู„ู…ู†ุตุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุฎุงุตุฉ ุจูƒ +skill-seekers package output/django --target claude +``` + +**ู‡ุฐุง ูƒู„ ุดูŠุก!** ุฃุตุจุญ ู„ุฏูŠูƒ ุงู„ุขู† `output/django-claude.zip` ุฌุงู‡ุฒู‹ุง ู„ู„ุงุณุชุฎุฏุงู…. + +```bash +# ุงุณุชุฎุฏุงู… ูˆูƒูŠู„ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ ู…ุฎุชู„ู ู„ู„ุชุนุฒูŠุฒ (ุงู„ุงูุชุฑุงุถูŠ: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ ู…ุณุญ ุงู„ู…ุดุฑูˆุน ุงู„ู…ุฏุนูˆู… ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (ุฌุฏูŠุฏ) + +ูˆุฌู‘ู‡ ุฃู…ุฑ `scan` ุฅู„ู‰ ุฃูŠ ู…ุดุฑูˆุน ูˆุณูŠู‚ุฑุฃ ูˆูƒูŠู„ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ู…ู„ูุงุช ุงู„ุชุนุฑูŠู ูˆREADME ูˆDockerfile/CI ูˆุนูŠู†ุงุช ู…ู† ุงุณุชูŠุฑุงุฏุงุช ุงู„ูƒูˆุฏ ุงู„ู…ุตุฏุฑูŠ โ€” ุซู… ูŠูุตุฏุฑ ุฅุนุฏุงุฏู‹ุง ูˆุงุญุฏู‹ุง ู„ูƒู„ ุฅุทุงุฑ ุจุฑู…ุฌูŠ ู…ูƒุชุดู ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ `-codebase.json` ู„ูƒูˆุฏูƒ ุงู„ุฎุงุต. ูŠุซุจู‘ุช ุงู„ุฅุตุฏุงุฑ ุงู„ู…ูƒุชุดู ุจุญูŠุซ ูŠุจู„ู‘ุบ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ ุนู† ุชุฑู‚ูŠุงุช ุงู„ุฅุตุฏุงุฑ: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# ุซู… ุงุจู†ู ุฃูŠู‹ุง ู…ู†ู‡ุง +skill-seekers create ./configs/scanned/react.json +``` + +ุฅุฐุง ู„ู… ูŠูƒู† ู„ู„ุงูƒุชุดุงู ุฅุนุฏุงุฏ ู…ุณุจู‚ ู…ูˆุฌูˆุฏุŒ ูŠูˆู„ู‘ุฏ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุฅุนุฏุงุฏู‹ุง ุฌุฏูŠุฏู‹ุงุ› ูˆุนู†ุฏ ุงู„ุฎุฑูˆุฌ ูŠู…ูƒู†ูƒ ุงุฎุชูŠุงุฑูŠู‹ุง ู†ุดุฑู‡ ููŠ [ุณุฌู„ ุงู„ู…ุฌุชู…ุน](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### ู…ุตุงุฏุฑ ุฃุฎุฑู‰ (18 ู†ูˆุนู‹ุง ู…ุฏุนูˆู…ู‹ุง) + +```bash +# ู…ุณุชูˆุฏุน GitHub +skill-seekers create facebook/react + +# ู…ุดุฑูˆุน ู…ุญู„ูŠ +skill-seekers create ./my-project + +# ู…ุณุชู†ุฏ PDF +skill-seekers create manual.pdf + +# ู…ุณุชู†ุฏ Word +skill-seekers create report.docx + +# ูƒุชุงุจ ุฅู„ูƒุชุฑูˆู†ูŠ EPUB +skill-seekers create book.epub + +# ุฏูุชุฑ Jupyter +skill-seekers create notebook.ipynb + +# ู…ูˆุงุตูุงุช OpenAPI +skill-seekers create openapi.yaml + +# ุนุฑุถ PowerPoint +skill-seekers create presentation.pptx + +# ู…ุณุชู†ุฏ AsciiDoc +skill-seekers create guide.adoc + +# ู…ู„ู HTML ู…ุญู„ูŠ (ูŠููƒุชุดู ุชู„ู‚ุงุฆูŠู‹ุง ุญุณุจ ุงู„ุงู…ุชุฏุงุฏ) +skill-seekers create page.html + +# ู…ุฌู„ุฏ ูƒุงู…ู„ ู…ู† ู…ู„ูุงุช HTML (ูŠููƒุชุดู ุชู„ู‚ุงุฆูŠู‹ุง ู„ู„ู…ุฌู„ุฏุงุช ุงู„ุชูŠ ูŠุบู„ุจ ุนู„ูŠู‡ุง HTML) +skill-seekers create ./mirror_output/site/ + +# ูุฑุถ ูˆุถุน HTML ุนู„ู‰ ู…ุฌู„ุฏ ู…ุฎุชู„ุท/ู…ู„ูŠุก ุจุงู„ูƒูˆุฏ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# ุฎู„ุงุตุฉ RSS/Atom +skill-seekers create feed.rss + +# ุตูุญุฉ Man +skill-seekers create curl.1 + +# ุงู„ููŠุฏูŠูˆ (YouTube ุฃูˆ Vimeo ุฃูˆ ู…ู„ู ู…ุญู„ูŠ โ€” ูŠุชุทู„ุจ skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ุฃูˆู„ ู…ุฑุฉุŸ ุชุซุจูŠุช ุชู„ู‚ุงุฆูŠ ู„ู„ู…ูƒูˆู†ุงุช ุงู„ู…ุฑุฆูŠุฉ ุงู„ู…ุชูˆุงูู‚ุฉ ู…ุน GPU: +skill-seekers create --setup + +# ูˆูŠูƒูŠ Confluence +skill-seekers create --space-key TEAM --name wiki + +# ุตูุญุงุช Notion +skill-seekers create --database-id ... --name docs + +# ุชุตุฏูŠุฑ ู…ุญุงุฏุซุงุช Slack/Discord +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### ุงู„ุชุตุฏูŠุฑ ุฅู„ู‰ ูƒู„ ู…ูƒุงู† + +```bash +# ุงู„ุชุนุจุฆุฉ ู„ุนุฏุฉ ู…ู†ุตุงุช +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## ู…ุง ู‡ูˆ Skill SeekersุŸ + +Skill Seekers ู‡ูˆ **ุทุจู‚ุฉ ุงู„ุจูŠุงู†ุงุช ู„ุฃู†ุธู…ุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** ุงู„ุชูŠ ุชุญูˆู‘ู„ 18 ู†ูˆุนู‹ุง ู…ู† ุงู„ู…ุตุงุฏุฑ โ€” ู…ูˆุงู‚ุน ุงู„ุชูˆุซูŠู‚ ูˆู…ุณุชูˆุฏุนุงุช GitHub ูˆู…ู„ูุงุช PDF ูˆุงู„ููŠุฏูŠูˆู‡ุงุช ูˆุฏูุงุชุฑ Jupyter ูˆู…ุณุชู†ุฏุงุช Word/EPUB/AsciiDoc ูˆู…ูˆุงุตูุงุช OpenAPI ูˆุนุฑูˆุถ PowerPoint ูˆุฎู„ุงุตุงุช RSS ูˆุตูุญุงุช Man ูˆูˆูŠูƒูŠ Confluence ูˆุตูุญุงุช Notion ูˆู…ุญุงุฏุซุงุช Slack/Discord ูˆุงู„ู…ุฒูŠุฏ โ€” ุฅู„ู‰ ุฃุตูˆู„ ู…ุนุฑููŠุฉ ู…ู†ุธู…ุฉ ู„ูƒู„ ู…ู†ุตุฉ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ: + +| ุญุงู„ุฉ ุงู„ุงุณุชุฎุฏุงู… | ู…ุง ุชุญุตู„ ุนู„ูŠู‡ | ุฃู…ุซู„ุฉ | +|---------------|-------------|-------| +| **ู…ู‡ุงุฑุงุช ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** | ู…ู„ู SKILL.md ุดุงู…ู„ + ู…ุฑุงุฌุน | Claude Code ูˆGemini ูˆGPT | +| **ุฎุทูˆุท ุฃู†ุงุจูŠุจ RAG** | ู…ุณุชู†ุฏุงุช ู…ู‚ุณู…ุฉ ู…ุน ุจูŠุงู†ุงุช ูˆุตููŠุฉ ุบู†ูŠุฉ | LangChain ูˆLlamaIndex ูˆHaystack | +| **ู‚ูˆุงุนุฏ ุจูŠุงู†ุงุช ุงู„ู…ุชุฌู‡ุงุช** | ุจูŠุงู†ุงุช ู…ูู†ุณู‚ุฉ ู…ุณุจู‚ู‹ุง ุฌุงู‡ุฒุฉ ู„ู„ุฑูุน | Pinecone ูˆChroma ูˆWeaviate ูˆFAISS | +| **ู…ุณุงุนุฏุงุช ุงู„ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** | ู…ู„ูุงุช ุณูŠุงู‚ ูŠู‚ุฑุฃู‡ุง ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ููŠ ุจูŠุฆุฉ ุงู„ุชุทูˆูŠุฑ ุชู„ู‚ุงุฆูŠู‹ุง | Cursor ูˆWindsurf ูˆCline ูˆContinue.dev | + +## ๐Ÿ“š ุงู„ุชูˆุซูŠู‚ + +| ุฃุฑูŠุฏ ุฃู†... | ุงู‚ุฑุฃ ู‡ุฐุง | +|--------------|-----------| +| **ุฃุจุฏุฃ ุจุณุฑุนุฉ** | [ุงู„ุจุฏุก ุงู„ุณุฑูŠุน](docs/getting-started/02-quick-start.md) - 3 ุฃูˆุงู…ุฑ ู„ุฃูˆู„ ู…ู‡ุงุฑุฉ | +| **ุฃูู‡ู… ุงู„ู…ูุงู‡ูŠู…** | [ุงู„ู…ูุงู‡ูŠู… ุงู„ุฃุณุงุณูŠุฉ](docs/user-guide/01-core-concepts.md) - ูƒูŠู ูŠุนู…ู„ | +| **ุฃุณุชุฎุฑุฌ ุงู„ู…ุตุงุฏุฑ** | [ุฏู„ูŠู„ ุงู„ุงุณุชุฎุฑุงุฌ](docs/user-guide/02-scraping.md) - ุฌู…ูŠุน ุฃู†ูˆุงุน ุงู„ู…ุตุงุฏุฑ | +| **ุฃุนุฒุฒ ุงู„ู…ู‡ุงุฑุงุช** | [ุฏู„ูŠู„ ุงู„ุชุนุฒูŠุฒ](docs/user-guide/03-enhancement.md) - ุงู„ุชุนุฒูŠุฒ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ | +| **ุฃุตุฏู‘ุฑ ุงู„ู…ู‡ุงุฑุงุช** | [ุฏู„ูŠู„ ุงู„ุชุนุจุฆุฉ](docs/user-guide/04-packaging.md) - ุงู„ุชุตุฏูŠุฑ ู„ู„ู…ู†ุตุงุช | +| **ุฃุจุญุซ ุนู† ุงู„ุฃูˆุงู…ุฑ** | [ู…ุฑุฌุน CLI](docs/reference/CLI_REFERENCE.md) - ุฌู…ูŠุน ุงู„ุฃูˆุงู…ุฑ ุงู„ุนุดุฑูŠู† | +| **ุฃู‚ูˆู… ุจุงู„ุฅุนุฏุงุฏ** | [ุชู†ุณูŠู‚ ุงู„ุฅุนุฏุงุฏ](docs/reference/CONFIG_FORMAT.md) - ู…ูˆุงุตูุงุช JSON | +| **ุฃุญู„ ุงู„ู…ุดุงูƒู„** | [ุงุณุชูƒุดุงู ุงู„ุฃุฎุทุงุก](docs/user-guide/06-troubleshooting.md) - ุงู„ู…ุดุงูƒู„ ุงู„ุดุงุฆุนุฉ | + +**ุงู„ุชูˆุซูŠู‚ ุงู„ูƒุงู…ู„:** [docs/README.md](docs/README.md) + +ุจุฏู„ุงู‹ ู…ู† ู‚ุถุงุก ุฃูŠุงู… ููŠ ุงู„ู…ุนุงู„ุฌุฉ ุงู„ูŠุฏูˆูŠุฉ ุงู„ู…ุณุจู‚ุฉุŒ ูŠู‚ูˆู… Skill Seekers ุจู€: + +1. **ุงู„ุงุณุชูŠุนุงุจ** โ€” ุงู„ุชูˆุซูŠู‚ ูˆู…ุณุชูˆุฏุนุงุช GitHub ูˆู‚ูˆุงุนุฏ ุงู„ูƒูˆุฏ ุงู„ู…ุญู„ูŠุฉ ูˆู…ู„ูุงุช PDF ูˆุงู„ููŠุฏูŠูˆู‡ุงุช ูˆุฏูุงุชุฑ Jupyter ูˆุงู„ูˆูŠูƒูŠ ูˆุฃูƒุซุฑ ู…ู† 10 ุฃู†ูˆุงุน ุฃุฎุฑู‰ ู…ู† ุงู„ู…ุตุงุฏุฑ +2. **ุงู„ุชุญู„ูŠู„** โ€” ุชุญู„ูŠู„ AST ุงู„ุนู…ูŠู‚ ูˆุงูƒุชุดุงู ุงู„ุฃู†ู…ุงุท ูˆุงุณุชุฎุฑุงุฌ ูˆุงุฌู‡ุงุช API +3. **ุงู„ู‡ูŠูƒู„ุฉ** โ€” ู…ู„ูุงุช ู…ุฑุฌุนูŠุฉ ู…ูุตู†ูุฉ ู…ุน ุจูŠุงู†ุงุช ูˆุตููŠุฉ +4. **ุงู„ุชุนุฒูŠุฒ** โ€” ุชูˆู„ูŠุฏ SKILL.md ู…ุฏุนูˆู… ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (Claude ุฃูˆ Gemini ุฃูˆ ู…ุญู„ูŠ) +5. **ุงู„ุชุตุฏูŠุฑ** โ€” 16 ุชู†ุณูŠู‚ู‹ุง ุฎุงุตู‹ุง ุจูƒู„ ู…ู†ุตุฉ ู…ู† ุฃุตู„ ูˆุงุญุฏ + +## ู„ู…ุงุฐุง ุชุณุชุฎุฏู… Skill SeekersุŸ + +### ู„ุจู†ู‘ุงุฆูŠ ู…ู‡ุงุฑุงุช ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (Claude ูˆGemini ูˆOpenAI) + +- ๐ŸŽฏ **ู…ู‡ุงุฑุงุช ุจุฌูˆุฏุฉ ุฅู†ุชุงุฌูŠุฉ** โ€” ู…ู„ูุงุช SKILL.md ุจุฃูƒุซุฑ ู…ู† 500 ุณุทุฑ ุชุชุถู…ู† ุฃู…ุซู„ุฉ ูƒูˆุฏ ูˆุฃู†ู…ุงุท ูˆุฃุฏู„ุฉ +- ๐Ÿ”„ **ุณูŠุฑ ุนู…ู„ ุงู„ุชุนุฒูŠุฒ** โ€” ุชุทุจูŠู‚ `security-focus` ุฃูˆ `architecture-comprehensive` ุฃูˆ ุฅุนุฏุงุฏุงุช YAML ู…ุฎุตุตุฉ +- ๐ŸŽฎ **ุฃูŠ ู…ุฌุงู„** โ€” ู…ุญุฑูƒุงุช ุงู„ุฃู„ุนุงุจ (Godot ูˆUnity) ูˆุงู„ุฃุทุฑ ุงู„ุจุฑู…ุฌูŠุฉ (React ูˆDjango) ูˆุงู„ุฃุฏูˆุงุช ุงู„ุฏุงุฎู„ูŠุฉ +- ๐Ÿ”ง **ุงู„ูุฑู‚** โ€” ุฏู…ุฌ ุงู„ุชูˆุซูŠู‚ ุงู„ุฏุงุฎู„ูŠ + ุงู„ูƒูˆุฏ ููŠ ู…ุตุฏุฑ ุญู‚ูŠู‚ุฉ ูˆุงุญุฏ +- ๐Ÿ“š **ุฌูˆุฏุฉ ุนุงู„ูŠุฉ** โ€” ู…ุนุฒุฒุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ู…ุน ุฃู…ุซู„ุฉ ูˆู…ุฑุฌุน ุณุฑูŠุน ูˆุฏู„ูŠู„ ุชู†ู‚ู„ + +### ู„ุจู†ู‘ุงุฆูŠ RAG ูˆู…ู‡ู†ุฏุณูŠ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + +- ๐Ÿค– **ุจูŠุงู†ุงุช ุฌุงู‡ุฒุฉ ู„ู€ RAG** โ€” ู…ุณุชู†ุฏุงุช LangChain `Documents` ู…ูู‚ุณู…ุฉ ู…ุณุจู‚ู‹ุง ูˆLlamaIndex `TextNodes` ูˆHaystack `Documents` +- ๐Ÿš€ **ุฃุณุฑุน ุจู†ุณุจุฉ 99%** โ€” ุฃูŠุงู… ู…ู† ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุณุจู‚ุฉ โ†’ 15โ€“45 ุฏู‚ูŠู‚ุฉ +- ๐Ÿ“Š **ุจูŠุงู†ุงุช ูˆุตููŠุฉ ุฐูƒูŠุฉ** โ€” ูุฆุงุช ูˆู…ุตุงุฏุฑ ูˆุฃู†ูˆุงุน โ†’ ุฏู‚ุฉ ุงุณุชุฑุฌุงุน ุฃุนู„ู‰ +- ๐Ÿ”„ **ู…ุชุนุฏุฏ ุงู„ู…ุตุงุฏุฑ** โ€” ุฏู…ุฌ ุงู„ุชูˆุซูŠู‚ + GitHub + PDF + ุงู„ููŠุฏูŠูˆ ููŠ ุฎุท ุฃู†ุงุจูŠุจ ูˆุงุญุฏ +- ๐ŸŒ **ู…ุณุชู‚ู„ ุนู† ุงู„ู…ู†ุตุฉ** โ€” ุงู„ุชุตุฏูŠุฑ ุฅู„ู‰ ุฃูŠ ู‚ุงุนุฏุฉ ุจูŠุงู†ุงุช ู…ุชุฌู‡ุงุช ุฃูˆ ุฅุทุงุฑ ุนู…ู„ ุฏูˆู† ุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฑุงุฌ + +### ู„ู…ุณุชุฎุฏู…ูŠ ู…ุณุงุนุฏุงุช ุงู„ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” ุชูˆู„ูŠุฏ `.cursorrules` / `.windsurfrules` / `.clinerules` ุชู„ู‚ุงุฆูŠู‹ุง +- ๐ŸŽฏ **ุณูŠุงู‚ ุฏุงุฆู…** โ€” ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ "ูŠุนุฑู" ุฃุทุฑูƒ ุงู„ุจุฑู…ุฌูŠุฉ ุฏูˆู† ุชูƒุฑุงุฑ ุงู„ุชูˆุฌูŠู‡ุงุช +- ๐Ÿ“š **ู…ุญุฏู‘ุซ ุฏุงุฆู…ู‹ุง** โ€” ุชุญุฏูŠุซ ุงู„ุณูŠุงู‚ ููŠ ุฏู‚ุงุฆู‚ ุนู†ุฏ ุชุบูŠุฑ ุงู„ุชูˆุซูŠู‚ + +## ุงู„ู…ูŠุฒุงุช ุงู„ุฑุฆูŠุณูŠุฉ + +### ๐ŸŒ ุงุณุชุฎุฑุงุฌ ุงู„ุชูˆุซูŠู‚ +- โœ… **ุงูƒุชุดุงู ุฐูƒูŠ ู„ู…ูˆุงู‚ุน SPA** - ุงูƒุชุดุงู ุซู„ุงุซูŠ ุงู„ุทุจู‚ุงุช ู„ู…ูˆุงู‚ุน JavaScript SPA (sitemap.xml โ†’ llms.txt โ†’ ุนุฑุถ ุงู„ู…ุชุตูุญ ุจุฏูˆู† ูˆุงุฌู‡ุฉ) +- โœ… **ุฏุนู… llms.txt** - ุงูƒุชุดุงู ูˆุงุณุชุฎุฏุงู… ู…ู„ูุงุช ุงู„ุชูˆุซูŠู‚ ุงู„ุฌุงู‡ุฒุฉ ู„ู†ู…ุงุฐุฌ ุงู„ู„ุบุฉ ุชู„ู‚ุงุฆูŠู‹ุง (ุฃุณุฑุน 10 ู…ุฑุงุช) +- โœ… **ู…ูุณุชุฎุฑุฌ ุนุงู…** - ูŠุนู…ู„ ู…ุน ุฃูŠ ู…ูˆู‚ุน ุชูˆุซูŠู‚ +- โœ… **ุชุตู†ูŠู ุฐูƒูŠ** - ุชู†ุธูŠู… ุงู„ู…ุญุชูˆู‰ ุญุณุจ ุงู„ู…ูˆุถูˆุน ุชู„ู‚ุงุฆูŠู‹ุง +- โœ… **ุงูƒุชุดุงู ู„ุบุฉ ุงู„ูƒูˆุฏ** - ุงู„ุชุนุฑู ุนู„ู‰ Python ูˆJavaScript ูˆC++ ูˆGDScript ูˆุบูŠุฑู‡ุง +- โœ… **ุฃูƒุซุฑ ู…ู† 24 ุฅุนุฏุงุฏู‹ุง ู…ุณุจู‚ู‹ุง ุฌุงู‡ุฒู‹ุง** - Godot ูˆReact ูˆVue ูˆDjango ูˆFastAPI ูˆุงู„ู…ุฒูŠุฏ + +### ๐Ÿ“„ ุฏุนู… PDF +- โœ… **ุงุณุชุฎุฑุงุฌ PDF ุงู„ุฃุณุงุณูŠ** - ุงุณุชุฎุฑุงุฌ ุงู„ู†ุตูˆุต ูˆุงู„ูƒูˆุฏ ูˆุงู„ุตูˆุฑ ู…ู† ู…ู„ูุงุช PDF +- โœ… **OCR ู„ู„ู…ุณุชู†ุฏุงุช ุงู„ู…ู…ุณูˆุญุฉ** - ุงุณุชุฎุฑุงุฌ ุงู„ู†ุต ู…ู† ุงู„ู…ุณุชู†ุฏุงุช ุงู„ู…ู…ุณูˆุญุฉ ุถูˆุฆูŠู‹ุง +- โœ… **ู…ู„ูุงุช PDF ุงู„ู…ุญู…ูŠุฉ ุจูƒู„ู…ุฉ ู…ุฑูˆุฑ** - ุงู„ุชุนุงู…ู„ ู…ุน ู…ู„ูุงุช PDF ุงู„ู…ุดูุฑุฉ +- โœ… **ุงุณุชุฎุฑุงุฌ ุงู„ุฌุฏุงูˆู„** - ุงุณุชุฎุฑุงุฌ ุงู„ุฌุฏุงูˆู„ ุงู„ู…ุนู‚ุฏุฉ +- โœ… **ุงู„ู…ุนุงู„ุฌุฉ ุงู„ู…ุชูˆุงุฒูŠุฉ** - ุฃุณุฑุน 3 ู…ุฑุงุช ู„ู…ู„ูุงุช PDF ุงู„ูƒุจูŠุฑุฉ +- โœ… **ุงู„ุชุฎุฒูŠู† ุงู„ู…ุคู‚ุช ุงู„ุฐูƒูŠ** - ุฃุณุฑุน 50% ุนู†ุฏ ุฅุนุงุฏุฉ ุงู„ุชุดุบูŠู„ + +### ๐ŸŽฌ ุงุณุชุฎุฑุงุฌ ุงู„ููŠุฏูŠูˆ +- โœ… **YouTube ูˆุงู„ููŠุฏูŠูˆู‡ุงุช ุงู„ู…ุญู„ูŠุฉ** - ุงุณุชุฎุฑุงุฌ ุงู„ู†ุตูˆุต ูˆุงู„ูƒูˆุฏ ูˆุงู„ู…ุนุฑูุฉ ุงู„ู…ู†ุธู…ุฉ ู…ู† ุงู„ููŠุฏูŠูˆู‡ุงุช +- โœ… **ุชุญู„ูŠู„ ุงู„ุฅุทุงุฑุงุช ุงู„ู…ุฑุฆูŠุฉ** - ุงุณุชุฎุฑุงุฌ OCR ู…ู† ู…ุญุฑุฑุงุช ุงู„ูƒูˆุฏ ูˆุงู„ุทุฑููŠุงุช ูˆุงู„ุดุฑุงุฆุญ ูˆุงู„ู…ุฎุทุทุงุช +- โœ… **ุงูƒุชุดุงู GPU ุชู„ู‚ุงุฆูŠ** - ุชุซุจูŠุช ุฅุตุฏุงุฑ PyTorch ุงู„ุตุญูŠุญ ุชู„ู‚ุงุฆูŠู‹ุง (CUDA/ROCm/MPS/CPU) +- โœ… **ุชุนุฒูŠุฒ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** - ู…ุฑุญู„ุชุงู†: ุชู†ุธูŠู ู…ุฎุฑุฌุงุช OCR + ุชูˆู„ูŠุฏ SKILL.md ู…ุตู‚ูˆู„ +- โœ… **ู‚ุต ุฒู…ู†ูŠ** - ุงุณุชุฎุฑุงุฌ ุฃู‚ุณุงู… ู…ุญุฏุฏุฉ ุจุงุณุชุฎุฏุงู… `--start-time` ูˆ`--end-time` +- โœ… **ุฏุนู… ู‚ูˆุงุฆู… ุงู„ุชุดุบูŠู„** - ู…ุนุงู„ุฌุฉ ุฌู…ูŠุน ููŠุฏูŠูˆู‡ุงุช ู‚ุงุฆู…ุฉ ุชุดุบูŠู„ YouTube ุฏูุนุฉ ูˆุงุญุฏุฉ +- โœ… **ุงุญุชูŠุงุทูŠ Vision API** - ุงุณุชุฎุฏุงู… Claude Vision ู„ุฅุทุงุฑุงุช OCR ู…ู†ุฎูุถุฉ ุงู„ุซู‚ุฉ + +### ๐Ÿ™ ุชุญู„ูŠู„ ู…ุณุชูˆุฏุนุงุช GitHub +- โœ… **ุชุญู„ูŠู„ ูƒูˆุฏ ุนู…ูŠู‚** - ุชุญู„ูŠู„ AST ู„ู€ Python ูˆJavaScript ูˆTypeScript ูˆJava ูˆC++ ูˆGo +- โœ… **ุงุณุชุฎุฑุงุฌ ูˆุงุฌู‡ุงุช API** - ุงู„ุฏูˆุงู„ ูˆุงู„ุฃุตู†ุงู ูˆุงู„ุชูˆุงุจุน ู…ุน ุงู„ู…ุนุงู…ู„ุงุช ูˆุงู„ุฃู†ูˆุงุน +- โœ… **ุจูŠุงู†ุงุช ุงู„ู…ุณุชูˆุฏุน ุงู„ูˆุตููŠุฉ** - README ูˆุดุฌุฑุฉ ุงู„ู…ู„ูุงุช ูˆุชูˆุฒูŠุน ุงู„ู„ุบุงุช ูˆุงู„ู†ุฌูˆู…/ุงู„ุชูุฑูŠุนุงุช +- โœ… **GitHub Issues ูˆPR** - ุฌู„ุจ ุงู„ู…ุดูƒู„ุงุช ุงู„ู…ูุชูˆุญุฉ/ุงู„ู…ุบู„ู‚ุฉ ู…ุน ุงู„ุชุตู†ูŠูุงุช ูˆุงู„ู…ุฑุงุญู„ +- โœ… **CHANGELOG ูˆุงู„ุฅุตุฏุงุฑุงุช** - ุงุณุชุฎุฑุงุฌ ุณุฌู„ ุงู„ุฅุตุฏุงุฑุงุช ุชู„ู‚ุงุฆูŠู‹ุง +- โœ… **ุงูƒุชุดุงู ุงู„ุชุนุงุฑุถุงุช** - ู…ู‚ุงุฑู†ุฉ ูˆุงุฌู‡ุงุช API ุงู„ู…ูˆุซู‚ุฉ ู…ุน ุงู„ุชู†ููŠุฐ ุงู„ูุนู„ูŠ ู„ู„ูƒูˆุฏ +- โœ… **ุชูƒุงู…ู„ MCP** - ู„ุบุฉ ุทุจูŠุนูŠุฉ: "ุงุณุชุฎุฑุฌ ู…ุณุชูˆุฏุน GitHub facebook/react" + +### ๐Ÿ”„ ุงู„ุงุณุชุฎุฑุงุฌ ุงู„ู…ูˆุญุฏ ู…ุชุนุฏุฏ ุงู„ู…ุตุงุฏุฑ +- โœ… **ุฏู…ุฌ ู…ุตุงุฏุฑ ู…ุชุนุฏุฏุฉ** - ุฎู„ุท ุงู„ุชูˆุซูŠู‚ + GitHub + PDF ููŠ ู…ู‡ุงุฑุฉ ูˆุงุญุฏุฉ +- โœ… **ุงูƒุชุดุงู ุงู„ุชุนุงุฑุถุงุช** - ุงูƒุชุดุงู ุงู„ุชู†ุงู‚ุถุงุช ุจูŠู† ุงู„ุชูˆุซูŠู‚ ูˆุงู„ูƒูˆุฏ ุชู„ู‚ุงุฆูŠู‹ุง +- โœ… **ุฏู…ุฌ ุฐูƒูŠ** - ุญู„ ุงู„ุชุนุงุฑุถุงุช ู‚ุงุฆู… ุนู„ู‰ ุงู„ู‚ูˆุงุนุฏ ุฃูˆ ู…ุฏุนูˆู… ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ +- โœ… **ุชู‚ุงุฑูŠุฑ ุดูุงูุฉ** - ู…ู‚ุงุฑู†ุฉ ุฌู†ุจู‹ุง ุฅู„ู‰ ุฌู†ุจ ู…ุน ุชุญุฐูŠุฑุงุช โš ๏ธ +- โœ… **ุชุญู„ูŠู„ ูุฌูˆุงุช ุงู„ุชูˆุซูŠู‚** - ุชุญุฏูŠุฏ ุงู„ุชูˆุซูŠู‚ ุงู„ู‚ุฏูŠู… ูˆุงู„ู…ูŠุฒุงุช ุบูŠุฑ ุงู„ู…ูˆุซู‚ุฉ +- โœ… **ู…ุตุฏุฑ ุญู‚ูŠู‚ุฉ ูˆุงุญุฏ** - ู…ู‡ุงุฑุฉ ูˆุงุญุฏุฉ ุชุนุฑุถ ูƒู„ุงู‹ ู…ู† ุงู„ู†ูŠุฉ (ุงู„ุชูˆุซูŠู‚) ูˆุงู„ูˆุงู‚ุน (ุงู„ูƒูˆุฏ) +- โœ… **ุงู„ุชูˆุงูู‚ ู…ุน ุงู„ุฅุตุฏุงุฑุงุช ุงู„ุณุงุจู‚ุฉ** - ุฅุนุฏุงุฏุงุช ุงู„ู…ุตุฏุฑ ุงู„ูˆุงุญุฏ ุงู„ู‚ุฏูŠู…ุฉ ุชุนู…ู„ ุจุดูƒู„ ุทุจูŠุนูŠ + +### ๐Ÿค– ุฏุนู… ู…ู†ุตุงุช LLM ุงู„ู…ุชุนุฏุฏุฉ +- โœ… **12 ู…ู†ุตุฉ LLM** - Claude AI ูˆGoogle Gemini ูˆOpenAI ChatGPT ูˆMiniMax AI ูˆMarkdown ุงู„ุนุงู… ูˆOpenCode ูˆKimi (Moonshot AI) ูˆDeepSeek AI ูˆQwen (Alibaba) ูˆOpenRouter ูˆTogether AI ูˆFireworks AI +- โœ… **ุงุณุชุฎุฑุงุฌ ุนุงู…** - ู†ูุณ ุงู„ุชูˆุซูŠู‚ ูŠุนู…ู„ ู„ุฌู…ูŠุน ุงู„ู…ู†ุตุงุช +- โœ… **ุชุนุจุฆุฉ ุฎุงุตุฉ ุจูƒู„ ู…ู†ุตุฉ** - ุชู†ุณูŠู‚ุงุช ู…ุญุณู‘ู†ุฉ ู„ูƒู„ ู†ู…ูˆุฐุฌ ู„ุบูˆูŠ +- โœ… **ุชุตุฏูŠุฑ ุจุฃู…ุฑ ูˆุงุญุฏ** - ุนู„ุงู…ุฉ `--target` ู„ุงุฎุชูŠุงุฑ ุงู„ู…ู†ุตุฉ +- โœ… **ุชุจุนูŠุงุช ุงุฎุชูŠุงุฑูŠุฉ** - ุชุซุจูŠุช ู…ุง ุชุญุชุงุฌู‡ ูู‚ุท +- โœ… **ุชูˆุงูู‚ 100% ู…ุน ุงู„ุฅุตุฏุงุฑุงุช ุงู„ุณุงุจู‚ุฉ** - ุณูŠุฑ ุนู…ู„ Claude ุงู„ุญุงู„ูŠ ู„ุง ูŠุชุบูŠุฑ + +| ุงู„ู…ู†ุตุฉ | ุงู„ุชู†ุณูŠู‚ | ุงู„ุฑูุน | ุงู„ุชุนุฒูŠุฒ | API Key | ู†ู‚ุทุฉ ู†ู‡ุงูŠุฉ ู…ุฎุตุตุฉ | +|--------|---------|-------|---------|---------|-----------------| +| **Claude AI** | ZIP + YAML | โœ… ุชู„ู‚ุงุฆูŠ | โœ… ู†ุนู… | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… ุชู„ู‚ุงุฆูŠ | โœ… ู†ุนู… | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… ุชู„ู‚ุงุฆูŠ | โœ… ู†ุนู… | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… ุชู„ู‚ุงุฆูŠ | โœ… ู†ุนู… | MINIMAX_API_KEY | - | +| **Markdown ุงู„ุนุงู…** | ZIP | โŒ ูŠุฏูˆูŠ | โŒ ู„ุง | - | - | + +```bash +# Claude (ุงู„ุงูุชุฑุงุถูŠ - ู„ุง ุญุงุฌุฉ ู„ุชุบูŠูŠุฑุงุช!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Markdown ุงู„ุนุงู… (ุชุตุฏูŠุฑ ุนุงู…) +skill-seekers package output/react/ --target markdown +# ุงุณุชุฎุฏู… ู…ู„ูุงุช Markdown ู…ุจุงุดุฑุฉ ููŠ ุฃูŠ ู†ู…ูˆุฐุฌ ู„ุบูˆูŠ +``` + +
+๐Ÿ”ง ุงุณุชุฎุฏู… ู…ุฒูˆู‘ุฏ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุฎุงุต ุจูƒ (ู†ู‚ุงุท ู†ู‡ุงูŠุฉ ู…ุชูˆุงูู‚ุฉ ู…ุน OpenAI + ุงุดุชุฑุงูƒุงุชุŒ ุจุฏูˆู† ุฑุตูŠุฏ Anthropic) + +ุฎุทูˆุฉ **ุงู„ุชุนุฒูŠุฒ** ุงู„ุงุฎุชูŠุงุฑูŠุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (ุงู„ู…ุณุชุฎุฏู…ุฉ ููŠ `create` ูˆ`scan` ูˆ`enhance`) **ู„ุง** ุชุชุทู„ุจ ู…ูุชุงุญ Anthropic. ู„ุฏูŠูƒ ุซู„ุงุซ ุทุฑู‚ ู„ุชุดุบูŠู„ู‡ุง: + +**1. ุงุณุชุฎุฏู… ุงุดุชุฑุงูƒู‹ุง ุชุฏูุน ุซู…ู†ู‡ ุจุงู„ูุนู„ โ€” ุจุฏูˆู† ุฑุตูŠุฏ API ุนู„ู‰ ุงู„ุฅุทู„ุงู‚ (ูˆุถุน ุงู„ูˆูƒูŠู„ ุงู„ู…ุญู„ูŠ LOCAL)** + +ูŠู…ูƒู† ู„ู€ Skill Seekers ุงุณุชุฏุนุงุก ูˆุงุฌู‡ุฉ ุณุทุฑ ุฃูˆุงู…ุฑ ู„ูˆูƒูŠู„ ุจุฑู…ุฌุฉ ุณุฌู‘ู„ุช ุงู„ุฏุฎูˆู„ ุฅู„ูŠู‡ ุจุงู„ูุนู„ุŒ ุจุญูŠุซ ูŠุนู…ู„ ุงู„ุชุนุฒูŠุฒ ุนู„ู‰ ุฎุทุชูƒ ุงู„ุญุงู„ูŠุฉ ุจุฏู„ุงู‹ ู…ู† ุฑู…ูˆุฒ API ุงู„ู…ุฏููˆุนุฉ ุญุณุจ ุงู„ุงุณุชุฎุฏุงู…: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ุงุดุชุฑุงูƒูƒ ููŠ ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ ุงุดุชุฑุงูƒูƒ ููŠ Claude Pro/Max +``` + +ุงู„ูˆูƒู„ุงุก ุงู„ู…ุฏุนูˆู…ูˆู†: `claude` ูˆ`codex` ูˆ`copilot` ูˆ`opencode` ูˆ`kimi` ูˆ`custom` +(ุงุฌู…ุน ุจูŠู† `--agent custom` ูˆ`--agent-cmd " ..."` ู„ุชุดุบูŠู„ ุฃูŠ ุฃุฏุงุฉ ุฃุฎุฑู‰). + +**2. ุฃูŠ ู…ุฒูˆู‘ุฏ ู…ุชูˆุงูู‚ ู…ุน OpenAI (OpenRouter ูˆGroq ูˆCerebras ูˆMistral ูˆNVIDIA NIM ูˆุบูŠุฑู‡ุง)** + +ูƒู„ ู‡ุคู„ุงุก ูŠูˆูุฑูˆู† ู†ู‚ุทุฉ ู†ู‡ุงูŠุฉ `/v1` ู…ุชูˆุงูู‚ุฉ ู…ุน OpenAI. ูˆุฌู‘ู‡ Skill Seekers ุฅู„ู‰ ุฃุญุฏู‡ุง ุจุซู„ุงุซุฉ ู…ุชุบูŠุฑุงุช ุจูŠุฆุฉ โ€” ูู‡ูˆ ูŠูƒุชุดู `OPENAI_API_KEY`ุŒ ูˆุชุญุชุฑู… ู…ูƒุชุจุฉ OpenAI SDK ู…ุชุบูŠุฑ `OPENAI_BASE_URL` ุชู„ู‚ุงุฆูŠู‹ุง: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # ู†ู‚ุทุฉ ู†ู‡ุงูŠุฉ ุงู„ู…ุฒูˆู‘ุฏ (ุงู†ุธุฑ ุงู„ุฌุฏูˆู„) +export OPENAI_MODEL="" # ู…ุทู„ูˆุจ โ€” ุงู„ู†ู…ูˆุฐุฌ ุงู„ุงูุชุฑุงุถูŠ gpt-4o ุบูŠุฑ ู…ูˆุฌูˆุฏ ู„ุฏู‰ ุงู„ู…ุฒูˆู‘ุฏูŠู† ุงู„ุขุฎุฑูŠู† +skill-seekers create +``` + +| ุงู„ู…ุฒูˆู‘ุฏ | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> ูŠุฎุชุงุฑ ุงูƒุชุดุงู ุงู„ู…ุฒูˆู‘ุฏ **ุฃูˆู„** ู…ุชุบูŠุฑ ุจูŠุฆุฉ ู„ู…ูุชุงุญ API ูŠุฌุฏู‡ (`ANTHROPIC_API_KEY` โ† `GOOGLE_API_KEY` โ† `OPENAI_API_KEY` โ† `MOONSHOT_API_KEY`). ุนูŠู‘ู† `SKILL_SEEKER_PROVIDER` ู„ูุฑุถ ู…ุฒูˆู‘ุฏ ู…ุญุฏุฏุŒ ุฃูˆ ุชุฃูƒุฏ ู…ู† ุฃู† ุงู„ู…ูุงุชูŠุญ ุฐุงุช ุงู„ุฃูˆู„ูˆูŠุฉ ุงู„ุฃุนู„ู‰ ุบูŠุฑ ู…ุนูŠู‘ู†ุฉ. + +**3. ู†ู‚ุงุท ุงู„ู†ู‡ุงูŠุฉ ุงู„ู…ุชูˆุงูู‚ุฉ ู…ุน Claude (ู…ุซู„ GLM ูˆุงู„ูˆุณุทุงุก)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +ูƒู…ุง ูŠุชูˆูุฑ ุฏุนู… ุฃุตู„ูŠ ู„ู€ Google Gemini (`GOOGLE_API_KEY`) ูˆKimi/Moonshot (`MOONSHOT_API_KEY`). ุงู†ุธุฑ **[ู…ุฑุฌุน ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉ](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** ู„ู„ู‚ุงุฆู…ุฉ ุงู„ูƒุงู…ู„ุฉุŒ ุจู…ุง ููŠ ุฐู„ูƒ ุชุฌุงูˆุฒุงุช ุงู„ู†ู…ุงุฐุฌ ู„ูƒู„ ู…ุฒูˆู‘ุฏ. + +
+ +**ุงู„ุชุซุจูŠุช:** +```bash +# ุชุซุจูŠุช ุฏุนู… Gemini +pip install skill-seekers[gemini] + +# ุชุซุจูŠุช ุฏุนู… OpenAI +pip install skill-seekers[openai] + +# ุชุซุจูŠุช ุฏุนู… MiniMax +pip install skill-seekers[minimax] + +# ุชุซุจูŠุช ุฌู…ูŠุน ู…ู†ุตุงุช LLM +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— ุชูƒุงู…ู„ ุฃุทุฑ RAG + +- โœ… **LangChain Documents** - ุชุตุฏูŠุฑ ู…ุจุงุดุฑ ุจุชู†ุณูŠู‚ `Document` ู…ุน `page_content` + ุจูŠุงู†ุงุช ูˆุตููŠุฉ + - ู…ู†ุงุณุจ ู„ู€: ุณู„ุงุณู„ ุงู„ุฃุณุฆู„ุฉ ูˆุงู„ุฃุฌูˆุจุฉ ูˆุงู„ู…ุณุชุฑุฌุนุงุช ูˆู…ุฎุงุฒู† ุงู„ู…ุชุฌู‡ุงุช ูˆุงู„ูˆูƒู„ุงุก + - ู…ุซุงู„: [ุฎุท ุฃู†ุงุจูŠุจ LangChain RAG](examples/langchain-rag-pipeline/) + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ LangChain](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - ุชุตุฏูŠุฑ ุจุชู†ุณูŠู‚ `TextNode` ู…ุน ู…ุนุฑู‘ูุงุช ูุฑูŠุฏุฉ + ุชุถู…ูŠู†ุงุช + - ู…ู†ุงุณุจ ู„ู€: ู…ุญุฑูƒุงุช ุงู„ุงุณุชุนู„ุงู… ูˆู…ุญุฑูƒุงุช ุงู„ู…ุญุงุฏุซุฉ ูˆุณูŠุงู‚ ุงู„ุชุฎุฒูŠู† + - ู…ุซุงู„: [ู…ุญุฑูƒ ุงุณุชุนู„ุงู… LlamaIndex](examples/llama-index-query-engine/) + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ LlamaIndex](docs/integrations/LLAMA_INDEX.md) + +- โœ… **ุชู†ุณูŠู‚ Pinecone ุงู„ุฌุงู‡ุฒ** - ู…ุญุณู‘ู† ู„ุฑูุน ุงู„ุจูŠุงู†ุงุช ุฅู„ู‰ ู‚ูˆุงุนุฏ ุจูŠุงู†ุงุช ุงู„ู…ุชุฌู‡ุงุช + - ู…ู†ุงุณุจ ู„ู€: ุงู„ุจุญุซ ุงู„ู…ุชุฌู‡ูŠ ุงู„ุฅู†ุชุงุฌูŠ ูˆุงู„ุจุญุซ ุงู„ุฏู„ุงู„ูŠ ูˆุงู„ุจุญุซ ุงู„ู‡ุฌูŠู† + - ู…ุซุงู„: [ุฑูุน Pinecone](examples/pinecone-upsert/) + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ Pinecone](docs/integrations/PINECONE.md) + +**ุชุตุฏูŠุฑ ุณุฑูŠุน:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (ุนุงู…) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**ุฏู„ูŠู„ ุฎุท ุฃู†ุงุจูŠุจ RAG ุงู„ูƒุงู…ู„:** [ุชูˆุซูŠู‚ ุฎุทูˆุท ุฃู†ุงุจูŠุจ RAG](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  ุชูƒุงู…ู„ ู…ุณุงุนุฏุงุช ุงู„ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + +ุชุญูˆูŠู„ ุชูˆุซูŠู‚ ุฃูŠ ุฅุทุงุฑ ุจุฑู…ุฌูŠ ุฅู„ู‰ ุณูŠุงู‚ ุจุฑู…ุฌูŠ ุฎุจูŠุฑ ู„ุฃูƒุซุฑ ู…ู† 4 ู…ุณุงุนุฏุงุช ุฐูƒุงุก ุงุตุทู†ุงุนูŠ: + +- โœ… **Cursor IDE** - ุชูˆู„ูŠุฏ `.cursorrules` ู„ุงู‚ุชุฑุงุญุงุช ุงู„ูƒูˆุฏ ุงู„ู…ุฏุนูˆู…ุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + - ู…ู†ุงุณุจ ู„ู€: ุชูˆู„ูŠุฏ ูƒูˆุฏ ุฎุงุต ุจุงู„ุฅุทุงุฑ ุงู„ุจุฑู…ุฌูŠ ูˆุฃู†ู…ุงุท ู…ุชุณู‚ุฉ + - ูŠุนู…ู„ ู…ุน: Cursor IDE (ู†ุณุฎุฉ ู…ุนุฏู„ุฉ ู…ู† VS Code) + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ Cursor](docs/integrations/CURSOR.md) + - ู…ุซุงู„: [ู…ู‡ุงุฑุฉ Cursor React](examples/cursor-react-skill/) + +- โœ… **Windsurf** - ุชุฎุตูŠุต ุณูŠุงู‚ ู…ุณุงุนุฏ Windsurf AI ุจุงุณุชุฎุฏุงู… `.windsurfrules` + - ู…ู†ุงุณุจ ู„ู€: ู…ุณุงุนุฏุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ู…ุฏู…ุฌุฉ ููŠ ุจูŠุฆุฉ ุงู„ุชุทูˆูŠุฑ ูˆุงู„ุจุฑู…ุฌุฉ ุงู„ุชุฏูู‚ูŠุฉ + - ูŠุนู…ู„ ู…ุน: Windsurf IDE ู…ู† Codeium + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ Windsurf](docs/integrations/WINDSURF.md) + - ู…ุซุงู„: [ุณูŠุงู‚ Windsurf FastAPI](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - ู…ูˆุฌู‡ุงุช ุงู„ู†ุธุงู… + MCP ู„ูˆูƒูŠู„ VS Code + - ู…ู†ุงุณุจ ู„ู€: ุชูˆู„ูŠุฏ ุงู„ูƒูˆุฏ ุงู„ูˆูƒูŠู„ูŠ ููŠ VS Code + - ูŠุนู…ู„ ู…ุน: ุฅุถุงูุฉ Cline ู„ู€ VS Code + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ Cline](docs/integrations/CLINE.md) + - ู…ุซุงู„: [ู…ุณุงุนุฏ Cline Django](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - ุฎูˆุงุฏู… ุณูŠุงู‚ ู…ุณุชู‚ู„ุฉ ุนู† ุจูŠุฆุฉ ุงู„ุชุทูˆูŠุฑ + - ู…ู†ุงุณุจ ู„ู€: ุจูŠุฆุงุช ุชุทูˆูŠุฑ ู…ุชุนุฏุฏุฉ (VS Code ูˆJetBrains ูˆVim) ูˆู…ุฒูˆุฏูŠ LLM ู…ุฎุตุตูŠู† + - ูŠุนู…ู„ ู…ุน: ุฃูŠ ุจูŠุฆุฉ ุชุทูˆูŠุฑ ุชุญุชูˆูŠ ุนู„ู‰ ุฅุถุงูุฉ Continue.dev + - ุฏู„ูŠู„: [ุชูƒุงู…ู„ Continue](docs/integrations/CONTINUE_DEV.md) + - ู…ุซุงู„: [ุณูŠุงู‚ Continue ุงู„ุนุงู…](examples/continue-dev-universal/) + +**ุชุตุฏูŠุฑ ุณุฑูŠุน (ู„ุฃุฏูˆุงุช ุงู„ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ):** +```bash +# ู„ุฃูŠ ู…ุณุงุนุฏ ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (Cursor ูˆWindsurf ูˆCline ูˆContinue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ุฃูˆ --target markdown + +# ู†ุณุฎ ุฅู„ู‰ ู…ุดุฑูˆุนูƒ (ู…ุซุงู„ ู„ู€ Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# ุฃูˆ ู„ู€ Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# ุฃูˆ ู„ู€ Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# ุฃูˆ ู„ู€ Continue.dev (ุฎุงุฏู… HTTP) +python examples/continue-dev-universal/context_server.py +# ู‚ู… ุจุงู„ุฅุนุฏุงุฏ ููŠ ~/.continue/config.json +``` + +**ู…ุฑูƒุฒ ุงู„ุชูƒุงู…ู„:** [ุฌู…ูŠุน ุชูƒุงู…ู„ุงุช ุฃู†ุธู…ุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ ุจู†ูŠุฉ GitHub ุซู„ุงุซูŠุฉ ุงู„ุชุฏูู‚ุงุช +- โœ… **ุชุญู„ูŠู„ ุซู„ุงุซูŠ ุงู„ุชุฏูู‚ุงุช** - ุชู‚ุณูŠู… ู…ุณุชูˆุฏุนุงุช GitHub ุฅู„ู‰ ุชุฏูู‚ุงุช ุงู„ูƒูˆุฏ ูˆุงู„ุชูˆุซูŠู‚ ูˆุงู„ุฑุคู‰ +- โœ… **ู…ุญู„ู„ ู‚ุงุนุฏุฉ ูƒูˆุฏ ู…ูˆุญุฏ** - ูŠุนู…ู„ ู…ุน ุนู†ุงูˆูŠู† URL ุงู„ุฎุงุตุฉ ุจู€ GitHub ูˆุงู„ู…ุณุงุฑุงุช ุงู„ู…ุญู„ูŠุฉ +- โœ… **C3.x ูƒุนู…ู‚ ุชุญู„ูŠู„** - ุงุฎุชุฑ 'basic' (1โ€“2 ุฏู‚ูŠู‚ุฉ) ุฃูˆ 'c3x' (20โ€“60 ุฏู‚ูŠู‚ุฉ) +- โœ… **ุชูˆู„ูŠุฏ ู…ูˆุฌู‘ู‡ ู…ูุญุณู‘ู†** - ุจูŠุงู†ุงุช GitHub ุงู„ูˆุตููŠุฉ ูˆุจุฏุงูŠุฉ ุณุฑูŠุนุฉ ู…ู† README ูˆุงู„ู…ุดุงูƒู„ ุงู„ุดุงุฆุนุฉ +- โœ… **ุชูƒุงู…ู„ ุงู„ู…ุดูƒู„ุงุช** - ุงู„ู…ุดุงูƒู„ ูˆุงู„ุญู„ูˆู„ ุงู„ุฃูƒุซุฑ ุดูŠูˆุนู‹ุง ู…ู† GitHub Issues +- โœ… **ูƒู„ู…ุงุช ู…ูุชุงุญูŠุฉ ุฐูƒูŠุฉ ู„ู„ุชูˆุฌูŠู‡** - ุฃูˆุฒุงู† ุชุตู†ูŠูุงุช GitHub ู…ุถุงุนูุฉ ู„ุงูƒุชุดุงู ุฃูุถู„ ู„ู„ู…ูˆุงุถูŠุน + +**ุดุฑุญ ุงู„ุชุฏูู‚ุงุช ุงู„ุซู„ุงุซุฉ:** +- **ุงู„ุชุฏูู‚ 1: ุงู„ูƒูˆุฏ** - ุชุญู„ูŠู„ C3.x ุงู„ุนู…ูŠู‚ (ุฃู†ู…ุงุท ูˆุฃู…ุซู„ุฉ ูˆุฃุฏู„ุฉ ูˆุฅุนุฏุงุฏุงุช ูˆุจู†ูŠุฉ ู…ุนู…ุงุฑูŠุฉ) +- **ุงู„ุชุฏูู‚ 2: ุงู„ุชูˆุซูŠู‚** - ุชูˆุซูŠู‚ ุงู„ู…ุณุชูˆุฏุน (README ูˆCONTRIBUTING ูˆdocs/*.md) +- **ุงู„ุชุฏูู‚ 3: ุงู„ุฑุคู‰** - ุงู„ู…ุนุฑูุฉ ุงู„ู…ุฌุชู…ุนูŠุฉ (ุงู„ู…ุดูƒู„ุงุช ูˆุงู„ุชุตู†ูŠูุงุช ูˆุงู„ู†ุฌูˆู… ูˆุงู„ุชูุฑูŠุนุงุช) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# ุชุญู„ูŠู„ ู…ุณุชูˆุฏุน GitHub ุจุงู„ุชุฏูู‚ุงุช ุงู„ุซู„ุงุซุฉ +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ุฃูˆ "basic" ู„ู„ุชุญู„ูŠู„ ุงู„ุณุฑูŠุน + fetch_github_metadata=True +) + +# ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุชุฏูู‚ ุงู„ูƒูˆุฏ (ุชุญู„ูŠู„ C3.x) +print(f"ุฃู†ู…ุงุท ุงู„ุชุตู…ูŠู…: {len(result.code_analysis['c3_1_patterns'])}") +print(f"ุฃู…ุซู„ุฉ ุงู„ุงุฎุชุจุงุฑุงุช: {result.code_analysis['c3_2_examples_count']}") + +# ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุชุฏูู‚ ุงู„ุชูˆุซูŠู‚ (ุชูˆุซูŠู‚ ุงู„ู…ุณุชูˆุฏุน) +print(f"README: {result.github_docs['readme'][:100]}") + +# ุงู„ูˆุตูˆู„ ุฅู„ู‰ ุชุฏูู‚ ุงู„ุฑุคู‰ (ุจูŠุงู†ุงุช GitHub ุงู„ูˆุตููŠุฉ) +print(f"ุงู„ู†ุฌูˆู…: {result.github_insights['metadata']['stars']}") +print(f"ุงู„ู…ุดุงูƒู„ ุงู„ุดุงุฆุนุฉ: {len(result.github_insights['common_problems'])}") +``` + +**ุงู„ุชูˆุซูŠู‚ ุงู„ูƒุงู…ู„**: [ู…ู„ุฎุต ุชู†ููŠุฐ ุงู„ุชุฏูู‚ุงุช ุงู„ุซู„ุงุซุฉ](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” ุฅุฏุงุฑุฉ ุญุฏูˆุฏ ุงู„ู…ุนุฏู„ ุงู„ุฐูƒูŠุฉ ูˆุงู„ุฅุนุฏุงุฏุงุช +- โœ… **ู†ุธุงู… ุฅุนุฏุงุฏ ู…ุชุนุฏุฏ ุงู„ุฑู…ูˆุฒ** - ุฅุฏุงุฑุฉ ุญุณุงุจุงุช GitHub ู…ุชุนุฏุฏุฉ (ุดุฎุตูŠ ูˆุนู…ู„ ูˆู…ูุชูˆุญ ุงู„ู…ุตุฏุฑ) + - ุชุฎุฒูŠู† ุขู…ู† ู„ู„ุฅุนุฏุงุฏุงุช ููŠ `~/.config/skill-seekers/config.json` (ุตู„ุงุญูŠุงุช 600) + - ุงุณุชุฑุงุชูŠุฌูŠุงุช ุญุฏ ุงู„ู…ุนุฏู„ ู„ูƒู„ ู…ู„ู ุชุนุฑูŠู: `prompt` ูˆ`wait` ูˆ`switch` ูˆ`fail` + - ู…ู‡ู„ุฉ ู‚ุงุจู„ุฉ ู„ู„ุชุฎุตูŠุต ู„ูƒู„ ู…ู„ู ุชุนุฑูŠู (ุงู„ุงูุชุฑุงุถูŠ: 30 ุฏู‚ูŠู‚ุฉุŒ ุชู…ู†ุน ุงู„ุงู†ุชุธุงุฑ ุบูŠุฑ ุงู„ู…ุญุฏูˆุฏ) + - ุณู„ุณู„ุฉ ุงุญุชูŠุงุทูŠุฉ ุฐูƒูŠุฉ: ู…ุนุงู…ู„ CLI โ†’ ู…ุชุบูŠุฑ ุจูŠุฆุฉ โ†’ ู…ู„ู ุฅุนุฏุงุฏ โ†’ ู…ูˆุฌู‡ + - ุฅุฏุงุฑุฉ ู…ูุงุชูŠุญ API ู„ู€ Claude ูˆGemini ูˆOpenAI +- โœ… **ู…ุนุงู„ุฌ ุฅุนุฏุงุฏ ุชูุงุนู„ูŠ** - ูˆุงุฌู‡ุฉ ุทุฑููŠุฉ ุฌู…ูŠู„ุฉ ู„ู„ุฅุนุฏุงุฏ ุงู„ุณู‡ู„ + - ุชูƒุงู…ู„ ุงู„ู…ุชุตูุญ ู„ุฅู†ุดุงุก ุงู„ุฑู…ูˆุฒ (ูŠูุชุญ GitHub ูˆุบูŠุฑู‡ ุชู„ู‚ุงุฆูŠู‹ุง) + - ุงู„ุชุญู‚ู‚ ู…ู† ุตุญุฉ ุงู„ุฑู…ูˆุฒ ูˆุงุฎุชุจุงุฑ ุงู„ุงุชุตุงู„ + - ุนุฑุถ ู…ุฑุฆูŠ ู„ู„ุญุงู„ุฉ ู…ุน ุชุฑู…ูŠุฒ ู„ูˆู†ูŠ +- โœ… **ู…ุนุงู„ุฌ ุญุฏูˆุฏ ุงู„ู…ุนุฏู„ ุงู„ุฐูƒูŠ** - ู„ุง ู…ุฒูŠุฏ ู…ู† ุงู„ุงู†ุชุธุงุฑ ุบูŠุฑ ุงู„ู…ุญุฏูˆุฏ! + - ุชุญุฐูŠุฑ ู…ุณุจู‚ ุจุดุฃู† ุญุฏูˆุฏ ุงู„ู…ุนุฏู„ (60/ุณุงุนุฉ ู…ู‚ุงุจู„ 5000/ุณุงุนุฉ) + - ุงูƒุชุดุงู ููˆุฑูŠ ู…ู† ุงุณุชุฌุงุจุงุช GitHub API + - ู…ุคู‚ุชุงุช ุนุฏ ุชู†ุงุฒู„ูŠ ู…ุจุงุดุฑุฉ ู…ุน ุงู„ุชู‚ุฏู… + - ุชุจุฏูŠู„ ุชู„ู‚ุงุฆูŠ ู„ู„ู…ู„ูุงุช ุงู„ุชุนุฑูŠููŠุฉ ุนู†ุฏ ุจู„ูˆุบ ุญุฏ ุงู„ู…ุนุฏู„ + - ุฃุฑุจุน ุงุณุชุฑุงุชูŠุฌูŠุงุช: prompt (ุงุณุชูุณุงุฑ) ูˆwait (ุนุฏ ุชู†ุงุฒู„ูŠ) ูˆswitch (ุชุจุฏูŠู„) ูˆfail (ุฅูŠู‚ุงู) +- โœ… **ุงู„ุงุณุชุฆู†ุงู** - ู…ุชุงุจุนุฉ ุงู„ู…ู‡ุงู… ุงู„ู…ุชูˆู‚ูุฉ + - ุญูุธ ุชู„ู‚ุงุฆูŠ ู„ู„ุชู‚ุฏู… ุจููˆุงุตู„ ู‚ุงุจู„ุฉ ู„ู„ุชุฎุตูŠุต (ุงู„ุงูุชุฑุงุถูŠ: 60 ุซุงู†ูŠุฉ) + - ุนุฑุถ ุฌู…ูŠุน ุงู„ู…ู‡ุงู… ุงู„ู‚ุงุจู„ุฉ ู„ู„ุงุณุชุฆู†ุงู ู…ุน ุชูุงุตูŠู„ ุงู„ุชู‚ุฏู… + - ุชู†ุธูŠู ุชู„ู‚ุงุฆูŠ ู„ู„ู…ู‡ุงู… ุงู„ู‚ุฏูŠู…ุฉ (ุงู„ุงูุชุฑุงุถูŠ: 7 ุฃูŠุงู…) +- โœ… **ุฏุนู… CI/CD** - ูˆุถุน ุบูŠุฑ ุชูุงุนู„ูŠ ู„ู„ุฃุชู…ุชุฉ + - ุนู„ุงู…ุฉ `--non-interactive` ู„ู„ูุดู„ ุงู„ุณุฑูŠุน ุจุฏูˆู† ู…ูˆุฌู‡ุงุช + - ุนู„ุงู…ุฉ `--profile` ู„ุงุฎุชูŠุงุฑ ุญุณุงุจ GitHub ู…ุญุฏุฏ + - ุฑุณุงุฆู„ ุฎุทุฃ ูˆุงุถุญุฉ ู„ุณุฌู„ุงุช ุฎุทูˆุท ุงู„ุฃู†ุงุจูŠุจ + +**ุฅุนุฏุงุฏ ุณุฑูŠุน:** +```bash +# ุฅุนุฏุงุฏ ู„ู…ุฑุฉ ูˆุงุญุฏุฉ (5 ุฏู‚ุงุฆู‚) +skill-seekers config --github + +# ุงุณุชุฎุฏุงู… ู…ู„ู ุชุนุฑูŠู ู…ุญุฏุฏ ู„ู„ู…ุณุชูˆุฏุนุงุช ุงู„ุฎุงุตุฉ +skill-seekers create mycompany/private-repo --profile work + +# ูˆุถุน CI/CD (ูุดู„ ุณุฑูŠุนุŒ ุจุฏูˆู† ู…ูˆุฌู‡ุงุช) +skill-seekers create owner/repo --non-interactive + +# ุงุณุชุฆู†ุงู ู…ู‡ู…ุฉ ู…ุชูˆู‚ูุฉ +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**ุดุฑุญ ุงุณุชุฑุงุชูŠุฌูŠุงุช ุญุฏ ุงู„ู…ุนุฏู„:** +- **prompt** (ุงู„ุงูุชุฑุงุถูŠ) - ุงู„ุณุคุงู„ ุนู…ุง ูŠุฌุจ ูุนู„ู‡ ุนู†ุฏ ุจู„ูˆุบ ุญุฏ ุงู„ู…ุนุฏู„ (ุงู†ุชุธุงุฑ ุฃูˆ ุชุจุฏูŠู„ ุฃูˆ ุฅุนุฏุงุฏ ุฑู…ุฒ ุฃูˆ ุฅู„ุบุงุก) +- **wait** - ุงู†ุชุธุงุฑ ุชู„ู‚ุงุฆูŠ ู…ุน ุนุฏ ุชู†ุงุฒู„ูŠ (ูŠุญุชุฑู… ุงู„ู…ู‡ู„ุฉ) +- **switch** - ุชุฌุฑุจุฉ ุงู„ู…ู„ู ุงู„ุชุนุฑูŠููŠ ุงู„ู…ุชุงุญ ุงู„ุชุงู„ูŠ ุชู„ู‚ุงุฆูŠู‹ุง (ู„ุฅุนุฏุงุฏุงุช ุงู„ุญุณุงุจุงุช ุงู„ู…ุชุนุฏุฏุฉ) +- **fail** - ูุดู„ ููˆุฑูŠ ู…ุน ุฎุทุฃ ูˆุงุถุญ (ู…ุซุงู„ูŠ ู„ู€ CI/CD) + +### ๐ŸŽฏ ู…ู‡ุงุฑุฉ Bootstrap - ุงู„ุงุณุชุถุงูุฉ ุงู„ุฐุงุชูŠุฉ + +ุชูˆู„ูŠุฏ skill-seekers ู†ูุณู‡ ูƒู…ู‡ุงุฑุฉ ู„ุงุณุชุฎุฏุงู…ู‡ุง ุฏุงุฎู„ ูˆูƒูŠู„ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุฎุงุต ุจูƒ (Claude Code ูˆKimi ูˆCodex ูˆุบูŠุฑู‡ุง): + +```bash +# ุชูˆู„ูŠุฏ ุงู„ู…ู‡ุงุฑุฉ +./scripts/bootstrap_skill.sh + +# ุงู„ุชุซุจูŠุช ููŠ Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**ู…ุง ุชุญุตู„ ุนู„ูŠู‡:** +- โœ… **ุชูˆุซูŠู‚ ูƒุงู…ู„ ู„ู„ู…ู‡ุงุฑุฉ** - ุฌู…ูŠุน ุฃูˆุงู…ุฑ CLI ูˆุฃู†ู…ุงุท ุงู„ุงุณุชุฎุฏุงู… +- โœ… **ู…ุฑุฌุน ุฃูˆุงู…ุฑ CLI** - ูƒู„ ุฃุฏุงุฉ ูˆุฎูŠุงุฑุงุชู‡ุง ู…ูˆุซู‚ุฉ +- โœ… **ุฃู…ุซู„ุฉ ุงู„ุจุฏุก ุงู„ุณุฑูŠุน** - ุณูŠุฑ ุงู„ุนู…ู„ ุงู„ุดุงุฆุนุฉ ูˆุฃูุถู„ ุงู„ู…ู…ุงุฑุณุงุช +- โœ… **ุชูˆุซูŠู‚ API ู…ูˆู„ู‘ุฏ ุชู„ู‚ุงุฆูŠู‹ุง** - ุชุญู„ูŠู„ ุงู„ูƒูˆุฏ ูˆุงู„ุฃู†ู…ุงุท ูˆุงู„ุฃู…ุซู„ุฉ + +### ๐Ÿ” ู…ุณุชูˆุฏุนุงุช ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุฎุงุตุฉ +- โœ… **ู…ุตุงุฏุฑ ุฅุนุฏุงุฏ ู…ุจู†ูŠุฉ ุนู„ู‰ Git** - ุฌู„ุจ ุงู„ุฅุนุฏุงุฏุงุช ู…ู† ู…ุณุชูˆุฏุนุงุช Git ุฎุงุตุฉ/ูุฑู‚ูŠุฉ +- โœ… **ุฅุฏุงุฑุฉ ู…ุชุนุฏุฏุฉ ุงู„ู…ุตุงุฏุฑ** - ุชุณุฌูŠู„ ุนุฏุฏ ุบูŠุฑ ู…ุญุฏูˆุฏ ู…ู† ู…ุณุชูˆุฏุนุงุช GitHub ูˆGitLab ูˆBitbucket +- โœ… **ุชุนุงูˆู† ุงู„ูุฑู‚** - ู…ุดุงุฑูƒุฉ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุฎุตุตุฉ ุจูŠู† ูุฑู‚ ู…ู† 3โ€“5 ุฃุดุฎุงุต +- โœ… **ุฏุนู… ุงู„ู…ุคุณุณุงุช** - ุงู„ุชูˆุณุน ุฅู„ู‰ ุฃูƒุซุฑ ู…ู† 500 ู…ุทูˆุฑ ู…ุน ุญู„ ู‚ุงุฆู… ุนู„ู‰ ุงู„ุฃูˆู„ูˆูŠุฉ +- โœ… **ู…ุตุงุฏู‚ุฉ ุขู…ู†ุฉ** - ุฑู…ูˆุฒ ู…ุชุบูŠุฑุงุช ุงู„ุจูŠุฆุฉ (GITHUB_TOKEN ูˆGITLAB_TOKEN) +- โœ… **ุชุฎุฒูŠู† ู…ุคู‚ุช ุฐูƒูŠ** - ุงุณุชู†ุณุงุฎ ู…ุฑุฉ ูˆุงุญุฏุฉ ูˆุณุญุจ ุงู„ุชุญุฏูŠุซุงุช ุชู„ู‚ุงุฆูŠู‹ุง +- โœ… **ูˆุถุน ุนุฏู… ุงู„ุงุชุตุงู„** - ุงู„ุนู…ู„ ุจุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุฎุฒู†ุฉ ู…ุคู‚ุชู‹ุง ุฏูˆู† ุงุชุตุงู„ + +### ๐Ÿค– ุชุญู„ูŠู„ ู‚ุงุนุฏุฉ ุงู„ูƒูˆุฏ (C3.x) + +**C3.4: ุงุณุชุฎุฑุงุฌ ุฃู†ู…ุงุท ุงู„ุฅุนุฏุงุฏ (ู…ุน ุชุนุฒูŠุฒ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ)** +- โœ… **9 ุชู†ุณูŠู‚ุงุช ุฅุนุฏุงุฏ** - JSON ูˆYAML ูˆTOML ูˆENV ูˆINI ูˆPython ูˆJavaScript ูˆDockerfile ูˆDocker Compose +- โœ… **7 ุฃู†ูˆุงุน ุฃู†ู…ุงุท** - ู‚ุงุนุฏุฉ ุจูŠุงู†ุงุช ูˆAPI ูˆุชุณุฌูŠู„ ูˆุฐุงูƒุฑุฉ ู…ุคู‚ุชุฉ ูˆุจุฑูŠุฏ ุฅู„ูƒุชุฑูˆู†ูŠ ูˆู…ุตุงุฏู‚ุฉ ูˆุฅุนุฏุงุฏุงุช ุงู„ุฎุงุฏู… +- โœ… **ุชุนุฒูŠุฒ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** - ุชุญู„ูŠู„ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ ุงุฎุชูŠุงุฑูŠ ุจูˆุถุนูŠู† (API + LOCAL) + - ูŠุดุฑุญ ู…ุง ูŠูุนู„ู‡ ูƒู„ ุฅุนุฏุงุฏ + - ูŠู‚ุชุฑุญ ุฃูุถู„ ุงู„ู…ู…ุงุฑุณุงุช ูˆุงู„ุชุญุณูŠู†ุงุช + - **ุชุญู„ูŠู„ ุฃู…ู†ูŠ** - ุงูƒุชุดุงู ุงู„ู…ูุงุชูŠุญ ุงู„ู…ุถู…ู†ุฉ ููŠ ุงู„ูƒูˆุฏ ูˆุจูŠุงู†ุงุช ุงู„ุงุนุชู…ุงุฏ ุงู„ู…ูƒุดูˆูุฉ +- โœ… **ุชูˆุซูŠู‚ ุชู„ู‚ุงุฆูŠ** - ุชูˆู„ูŠุฏ ุชูˆุซูŠู‚ JSON + Markdown ู„ุฌู…ูŠุน ุงู„ุฅุนุฏุงุฏุงุช +- โœ… **ุชูƒุงู…ู„ MCP** - ุฃุฏุงุฉ `extract_config_patterns` ู…ุน ุฏุนู… ุงู„ุชุนุฒูŠุฒ + +**C3.3: ุฃุฏู„ุฉ ุฅุฑุดุงุฏูŠุฉ ู…ุนุฒุฒุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** +- โœ… **ุชุนุฒูŠุฒ ุดุงู…ู„ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ** - ุชุญูˆูŠู„ ุงู„ุฃุฏู„ุฉ ุงู„ุฃุณุงุณูŠุฉ ุฅู„ู‰ ุฏุฑูˆุณ ุงุญุชุฑุงููŠุฉ +- โœ… **5 ุชุญุณูŠู†ุงุช ุชู„ู‚ุงุฆูŠุฉ** - ูˆุตู ุงู„ุฎุทูˆุงุช ูˆุงุณุชูƒุดุงู ุงู„ุฃุฎุทุงุก ูˆุงู„ู…ุชุทู„ุจุงุช ุงู„ู…ุณุจู‚ุฉ ูˆุงู„ุฎุทูˆุงุช ุงู„ุชุงู„ูŠุฉ ูˆุญุงู„ุงุช ุงู„ุงุณุชุฎุฏุงู… +- โœ… **ุฏุนู… ุงู„ูˆุถุนูŠู†** - ูˆุถุน API (ูˆุงุฌู‡ุฉ Claude) ุฃูˆ ูˆุถุน LOCAL (Claude Code CLI) +- โœ… **ุจุฏูˆู† ุชูƒู„ูุฉ ููŠ ุงู„ูˆุถุน ุงู„ู…ุญู„ูŠ** - ุชุนุฒูŠุฒ ู…ุฌุงู†ูŠ ุจุงุณุชุฎุฏุงู… ุฎุทุฉ Claude Code Max +- โœ… **ุชุญูˆู„ ููŠ ุงู„ุฌูˆุฏุฉ** - ู‚ูˆุงู„ุจ ู…ู† 75 ุณุทุฑู‹ุง โ†’ ุฃุฏู„ุฉ ุดุงู…ู„ุฉ ุจุฃูƒุซุฑ ู…ู† 500 ุณุทุฑ + +**ุงู„ุงุณุชุฎุฏุงู…:** +```bash +# ุชุญู„ูŠู„ ุณุฑูŠุน (1โ€“2 ุฏู‚ูŠู‚ุฉุŒ ุงู„ู…ูŠุฒุงุช ุงู„ุฃุณุงุณูŠุฉ ูู‚ุท) +skill-seekers scan tests/ --quick + +# ุชุญู„ูŠู„ ุดุงู…ู„ (ู…ุน ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠุŒ 20โ€“60 ุฏู‚ูŠู‚ุฉ) +skill-seekers scan tests/ --comprehensive + +# ู…ุน ุชุนุฒูŠุฒ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ +skill-seekers scan tests/ --enhance +``` + +**ุงู„ุชูˆุซูŠู‚ ุงู„ูƒุงู…ู„:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ุฅุนุฏุงุฏุงุช ุณูŠุฑ ุนู…ู„ ุงู„ุชุนุฒูŠุฒ ุงู„ู…ุณุจู‚ุฉ + +ุฎุทูˆุท ุฃู†ุงุจูŠุจ ุชุนุฒูŠุฒ ู‚ุงุจู„ุฉ ู„ุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฏุงู… ู…ูุนุฑู‘ูุฉ ุจู€ YAML ุชุชุญูƒู… ููŠ ูƒูŠููŠุฉ ุชุญูˆูŠู„ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ู„ุชูˆุซูŠู‚ูƒ ุงู„ุฎุงู… ุฅู„ู‰ ู…ู‡ุงุฑุฉ ู…ุตู‚ูˆู„ุฉ. + +- โœ… **5 ุฅุนุฏุงุฏุงุช ู…ุณุจู‚ุฉ ู…ูุถู…ู‘ู†ุฉ** โ€” `default` ูˆ`minimal` ูˆ`security-focus` ูˆ`architecture-comprehensive` ูˆ`api-documentation` +- โœ… **ุฅุนุฏุงุฏุงุช ู…ุฎุตุตุฉ** โ€” ุฅุถุงูุฉ ุณูŠุฑ ุนู…ู„ ู…ุฎุตุต ุฅู„ู‰ `~/.config/skill-seekers/workflows/` +- โœ… **ุณู„ุณู„ุฉ ุณูŠุฑ ุนู…ู„ ู…ุชุนุฏุฏุฉ** โ€” ุฑุจุท ุงุซู†ูŠู† ุฃูˆ ุฃูƒุซุฑ ู…ู† ุณูŠุฑ ุงู„ุนู…ู„ ููŠ ุฃู…ุฑ ูˆุงุญุฏ +- โœ… **ุฅุฏุงุฑุฉ ูƒุงู…ู„ุฉ ุนุจุฑ CLI** โ€” ุนุฑุถ ูˆู†ุณุฎ ูˆุฅุถุงูุฉ ูˆุญุฐู ูˆุงู„ุชุญู‚ู‚ ู…ู† ุณูŠุฑ ุงู„ุนู…ู„ + +```bash +# ุชุทุจูŠู‚ ุณูŠุฑ ุนู…ู„ ูˆุงุญุฏ +skill-seekers create ./my-project --enhance-workflow security-focus + +# ุฑุจุท ุนุฏุฉ ุฃุณู„ูˆุจ ุนู…ู„ (ุชูุทุจู‚ ุจุงู„ุชุฑุชูŠุจ) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ุฅุฏุงุฑุฉ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ +skill-seekers workflows list # ุนุฑุถ ุงู„ูƒู„ (ู…ูุถู…ู‘ู†ุฉ + ู…ุฎุตุตุฉ) +skill-seekers workflows show security-focus # ุนุฑุถ ู…ุญุชูˆู‰ YAML +skill-seekers workflows copy security-focus # ู†ุณุฎ ุฅู„ู‰ ู…ุฌู„ุฏ ุงู„ู…ุณุชุฎุฏู… ู„ู„ุชุนุฏูŠู„ +skill-seekers workflows add ./my-workflow.yaml # ุชุซุจูŠุช ุฅุนุฏุงุฏ ู…ุฎุตุต +skill-seekers workflows remove my-workflow # ุญุฐู ุฅุนุฏุงุฏ ู…ุฎุตุต +skill-seekers workflows validate security-focus # ุงู„ุชุญู‚ู‚ ู…ู† ุจู†ูŠุฉ ุงู„ุฅุนุฏุงุฏ + +# ู†ุณุฎ ุนุฏุฉ ุฅุนุฏุงุฏุงุช ุฏูุนุฉ ูˆุงุญุฏุฉ +skill-seekers workflows copy security-focus minimal api-documentation + +# ุฅุถุงูุฉ ุนุฏุฉ ู…ู„ูุงุช ุฏูุนุฉ ูˆุงุญุฏุฉ +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# ุญุฐู ุนุฏุฉ ุฅุนุฏุงุฏุงุช ุฏูุนุฉ ูˆุงุญุฏุฉ +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**ุชู†ุณูŠู‚ ุฅุนุฏุงุฏ YAML ุงู„ู…ุณุจู‚:** +```yaml +name: security-focus +description: "ู…ุฑุงุฌุนุฉ ุฃู…ู†ูŠุฉ: ุงู„ุซุบุฑุงุช ูˆุงู„ู…ุตุงุฏู‚ุฉ ูˆู…ุนุงู„ุฌุฉ ุงู„ุจูŠุงู†ุงุช" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "ู…ุฑุงุฌุนุฉ OWASP Top 10 ูˆุงู„ุซุบุฑุงุช ุงู„ุฃู…ู†ูŠุฉ ุงู„ุดุงุฆุนุฉ..." + - name: auth-review + type: custom + prompt: "ูุญุต ุฃู†ู…ุงุท ุงู„ู…ุตุงุฏู‚ุฉ ูˆุงู„ุชููˆูŠุถ..." + uses_history: true +``` + +### โšก ุงู„ุฃุฏุงุก ูˆุงู„ุชูˆุณุน +- โœ… **ุงู„ูˆุถุน ุบูŠุฑ ุงู„ู…ุชุฒุงู…ู†** - ุงุณุชุฎุฑุงุฌ ุฃุณุฑุน 2โ€“3 ู…ุฑุงุช ู…ุน async/await (ุงุณุชุฎุฏู… ุนู„ุงู…ุฉ `--async`) +- โœ… **ุฏุนู… ุงู„ุชูˆุซูŠู‚ ุงู„ูƒุจูŠุฑ** - ู…ุนุงู„ุฌุฉ ุฃูƒุซุฑ ู…ู† 10 ุขู„ุงูโ€“40 ุฃู„ู ุตูุญุฉ ุจุงู„ุชู‚ุณูŠู… ุงู„ุฐูƒูŠ +- โœ… **ู…ู‡ุงุฑุงุช ุงู„ู…ูˆุฌู‘ู‡/ุงู„ู…ุญูˆุฑ** - ุชูˆุฌูŠู‡ ุฐูƒูŠ ุฅู„ู‰ ู…ู‡ุงุฑุงุช ูุฑุนูŠุฉ ู…ุชุฎุตุตุฉ +- โœ… **ุงุณุชุฎุฑุงุฌ ู…ุชูˆุงุฒู** - ู…ุนุงู„ุฌุฉ ุนุฏุฉ ู…ู‡ุงุฑุงุช ููŠ ูˆู‚ุช ูˆุงุญุฏ +- โœ… **ู†ู‚ุงุท ุงู„ุชูุชูŠุด/ุงู„ุงุณุชุฆู†ุงู** - ู„ุง ูู‚ุฏุงู† ู„ู„ุชู‚ุฏู… ููŠ ุนู…ู„ูŠุงุช ุงู„ุงุณุชุฎุฑุงุฌ ุงู„ุทูˆูŠู„ุฉ +- โœ… **ู†ุธุงู… ุงู„ุชุฎุฒูŠู† ุงู„ู…ุคู‚ุช** - ุงุณุชุฎุฑุงุฌ ู…ุฑุฉ ูˆุงุญุฏุฉ ูˆุฅุนุงุฏุฉ ุงู„ุจู†ุงุก ููˆุฑู‹ุง + +### ๐Ÿค– ุฅู†ุดุงุก ุงู„ู…ู‡ุงุฑุงุช ุงู„ู…ุณุชู‚ู„ุฉ ุนู† ุงู„ูˆูƒูŠู„ +- โœ… **ุฏุนู… ูˆูƒู„ุงุก ู…ุชุนุฏุฏูŠู†** - ุชูˆู„ูŠุฏ ู…ู‡ุงุฑุงุช ู„ู€ Claude ูˆKimi ูˆCodex ูˆCopilot ูˆOpenCode ุฃูˆ ุฃูŠ ูˆูƒูŠู„ ู…ุฎุตุต ุนุจุฑ ุนู„ุงู…ุฉ `--agent` +- โœ… **ุฃูˆุงู…ุฑ ูˆูƒูŠู„ ู…ุฎุตุตุฉ** - ุงุณุชุฎุฏู… `--agent-cmd` ู„ุชุญุฏูŠุฏ ุฃู…ุฑ CLI ู„ูˆูƒูŠู„ ู…ุฎุตุต ู„ู„ุชุนุฒูŠุฒ +- โœ… **ุนู„ุงู…ุงุช ุนุงู…ุฉ** - `--agent` ูˆ`--agent-cmd` ู…ุชุงุญุชุงู† ููŠ ุฌู…ูŠุน ุงู„ุฃูˆุงู…ุฑ (create ูˆscrape ูˆgithub ูˆpdf ูˆุบูŠุฑู‡ุง) + +### ๐Ÿ“ฆ ุฎุท ุฃู†ุงุจูŠุจ ุงู„ุณูˆู‚ +- โœ… **ุงู„ู†ุดุฑ ููŠ ุงู„ุณูˆู‚** - ู†ุดุฑ ุงู„ู…ู‡ุงุฑุงุช ููŠ ู…ุณุชูˆุฏุนุงุช ุณูˆู‚ ุฅุถุงูุงุช Claude Code +- โœ… **ุฎุท ุฃู†ุงุจูŠุจ ุดุงู…ู„** - ู…ู† ู…ุตุฏุฑ ุงู„ุชูˆุซูŠู‚ ุฅู„ู‰ ุฅุฏุฎุงู„ ู…ู†ุดูˆุฑ ููŠ ุงู„ุณูˆู‚ + +### โœ… ุถู…ุงู† ุงู„ุฌูˆุฏุฉ +- โœ… **ุงุฎุชุจุงุฑ ูƒุงู…ู„** - ุฃูƒุซุฑ ู…ู† 3,700 ุงุฎุชุจุงุฑู‹ุง ุจุชุบุทูŠุฉ ุดุงู…ู„ุฉ + +--- + +## ๐Ÿ“ฆ ุงู„ุชุซุจูŠุช + +```bash +# ุงู„ุชุซุจูŠุช ุงู„ุฃุณุงุณูŠ (ุงุณุชุฎุฑุงุฌ ุงู„ุชูˆุซูŠู‚ ูˆุชุญู„ูŠู„ GitHub ูˆPDF ูˆุงู„ุชุนุจุฆุฉ) +pip install skill-seekers + +# ู…ุน ุฏุนู… ุฌู…ูŠุน ู…ู†ุตุงุช LLM +pip install skill-seekers[all-llms] + +# ู…ุน ุฎุงุฏู… MCP +pip install skill-seekers[mcp] + +# ูƒู„ ุดูŠุก +pip install skill-seekers[all] +``` + +**ุชุญุชุงุฌ ู…ุณุงุนุฏุฉ ููŠ ุงู„ุงุฎุชูŠุงุฑุŸ** ุดุบู‘ู„ ู…ุนุงู„ุฌ ุงู„ุฅุนุฏุงุฏ: +```bash +skill-seekers-setup +``` + +### ุฎูŠุงุฑุงุช ุงู„ุชุซุจูŠุช + +| ุฃู…ุฑ ุงู„ุชุซุจูŠุช | ุงู„ู…ูŠุฒุงุช | +|------------|---------| +| `pip install skill-seekers` | ุงู„ุงุณุชุฎุฑุงุฌ ูˆุชุญู„ูŠู„ GitHub ูˆPDF ูˆุฌู…ูŠุน ุงู„ู…ู†ุตุงุช | +| `pip install skill-seekers[gemini]` | + ุฏุนู… Google Gemini | +| `pip install skill-seekers[openai]` | + ุฏุนู… OpenAI ChatGPT | +| `pip install skill-seekers[all-llms]` | + ุฌู…ูŠุน ู…ู†ุตุงุช LLM | +| `pip install skill-seekers[mcp]` | + ุฎุงุฏู… MCP ู„ู€ Claude Code ูˆCursor ูˆุบูŠุฑู‡ู…ุง | +| `pip install skill-seekers[video]` | + ุงุณุชุฎุฑุงุฌ ู†ุตูˆุต ูˆุจูŠุงู†ุงุช YouTube/Vimeo | +| `pip install skill-seekers[video-full]` | + ู†ุณุฎ Whisper + ุงุณุชุฎุฑุงุฌ ุงู„ุฅุทุงุฑุงุช ุงู„ู…ุฑุฆูŠุฉ | +| `pip install skill-seekers[jupyter]` | + ุฏุนู… ุฏูุงุชุฑ Jupyter | +| `pip install skill-seekers[pptx]` | + ุฏุนู… PowerPoint | +| `pip install skill-seekers[confluence]` | + ุฏุนู… ูˆูŠูƒูŠ Confluence | +| `pip install skill-seekers[notion]` | + ุฏุนู… ุตูุญุงุช Notion | +| `pip install skill-seekers[rss]` | + ุฏุนู… ุฎู„ุงุตุงุช RSS/Atom | +| `pip install skill-seekers[chat]` | + ุฏุนู… ุชุตุฏูŠุฑ ู…ุญุงุฏุซุงุช Slack/Discord | +| `pip install skill-seekers[asciidoc]` | + ุฏุนู… ู…ุณุชู†ุฏุงุช AsciiDoc | +| `pip install skill-seekers[all]` | ุชูุนูŠู„ ูƒู„ ุดูŠุก | + +> **ุงู„ู…ูƒูˆู†ุงุช ุงู„ู…ุฑุฆูŠุฉ ู„ู„ููŠุฏูŠูˆ (ู…ุฏุฑูƒุฉ ู„ู€ GPU):** ุจุนุฏ ุชุซุจูŠุช `skill-seekers[video-full]`ุŒ ุดุบู‘ู„ +> `skill-seekers create --setup` ู„ุงูƒุชุดุงู GPU ุชู„ู‚ุงุฆูŠู‹ุง ูˆุชุซุจูŠุช ุฅุตุฏุงุฑ PyTorch +> ุงู„ุตุญูŠุญ + easyocr. ู‡ุฐู‡ ู‡ูŠ ุงู„ุทุฑูŠู‚ุฉ ุงู„ู…ูˆุตู‰ ุจู‡ุง ู„ุชุซุจูŠุช ู…ูƒูˆู†ุงุช ุงู„ุงุณุชุฎุฑุงุฌ ุงู„ู…ุฑุฆูŠ. + +--- + +## ๐Ÿš€ ุณูŠุฑ ุนู…ู„ ุงู„ุชุซุจูŠุช ุจุฃู…ุฑ ูˆุงุญุฏ + +**ุฃุณุฑุน ุทุฑูŠู‚ุฉ ู…ู† ุงู„ุฅุนุฏุงุฏ ุฅู„ู‰ ุงู„ู…ู‡ุงุฑุฉ ุงู„ู…ุฑููˆุนุฉ โ€” ุฃุชู…ุชุฉ ูƒุงู…ู„ุฉ:** + +```bash +# ุชุซุจูŠุช ู…ู‡ุงุฑุฉ React ู…ู† ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุฑุณู…ูŠุฉ (ุฑูุน ุชู„ู‚ุงุฆูŠ ุฅู„ู‰ Claude) +skill-seekers install --config react + +# ุงู„ุชุซุจูŠุช ู…ู† ู…ู„ู ุฅุนุฏุงุฏ ู…ุญู„ูŠ +skill-seekers install --config configs/custom.json + +# ุงู„ุชุซุจูŠุช ุจุฏูˆู† ุฑูุน (ุชุนุจุฆุฉ ูู‚ุท) +skill-seekers install --config django --no-upload + +# ู…ุนุงูŠู†ุฉ ุณูŠุฑ ุงู„ุนู…ู„ ุจุฏูˆู† ุชู†ููŠุฐ +skill-seekers install --config react --dry-run +``` + +**ุงู„ูˆู‚ุช:** 20โ€“45 ุฏู‚ูŠู‚ุฉ ุฅุฌู…ุงู„ุงู‹ | **ุงู„ุฌูˆุฏุฉ:** ุฌุงู‡ุฒ ู„ู„ุฅู†ุชุงุฌ (9/10) | **ุงู„ุชูƒู„ูุฉ:** ู…ุฌุงู†ูŠ + +**ุงู„ู…ุฑุงุญู„ ุงู„ู…ู†ูุฐุฉ:** +``` +๐Ÿ“ฅ ุงู„ู…ุฑุญู„ุฉ 1: ุฌู„ุจ ุงู„ุฅุนุฏุงุฏ (ุฅุฐุง ุชู… ุชูˆููŠุฑ ุงุณู… ุฅุนุฏุงุฏ) +๐Ÿ“– ุงู„ู…ุฑุญู„ุฉ 2: ุงุณุชุฎุฑุงุฌ ุงู„ุชูˆุซูŠู‚ +โœจ ุงู„ู…ุฑุญู„ุฉ 3: ุชุนุฒูŠุฒ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (ุฅู„ุฒุงู…ูŠ - ู„ุง ูŠู…ูƒู† ุชุฎุทูŠู‡) +๐Ÿ“ฆ ุงู„ู…ุฑุญู„ุฉ 4: ุชุนุจุฆุฉ ุงู„ู…ู‡ุงุฑุฉ +โ˜๏ธ ุงู„ู…ุฑุญู„ุฉ 5: ุงู„ุฑูุน ุฅู„ู‰ Claude (ุงุฎุชูŠุงุฑูŠุŒ ูŠุชุทู„ุจ API Key) +``` + +**ุงู„ู…ุชุทู„ุจุงุช:** +- ู…ุชุบูŠุฑ ุงู„ุจูŠุฆุฉ ANTHROPIC_API_KEY (ู„ู„ุฑูุน ุงู„ุชู„ู‚ุงุฆูŠ) +- ุฎุทุฉ Claude Code Max (ู„ู„ุชุนุฒูŠุฒ ุงู„ู…ุญู„ูŠ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ)ุŒ ุฃูˆ ุงุณุชุฎุฏู… `--agent` ู„ุงุฎุชูŠุงุฑ ูˆูƒูŠู„ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ ู…ุฎุชู„ู + +--- + +## ๐Ÿ“Š ู…ุตููˆูุฉ ุงู„ู…ูŠุฒุงุช + +ูŠุฏุนู… Skill Seekers **12 ู…ู†ุตุฉ LLM** ูˆ**8 ุฃู‡ุฏุงู RAG/ู…ุชุฌู‡ุงุช** ูˆ**18 ู†ูˆุนู‹ุง ู…ู† ุงู„ู…ุตุงุฏุฑ** ู…ุน ุชูƒุงูุค ูƒุงู…ู„ ููŠ ุงู„ู…ูŠุฒุงุช ุนุจุฑ ุฌู…ูŠุน ุงู„ุฃู‡ุฏุงู. + +**ุงู„ู…ู†ุตุงุช:** Claude AI ูˆGoogle Gemini ูˆOpenAI ChatGPT ูˆMiniMax AI ูˆMarkdown ุงู„ุนุงู… ูˆOpenCode ูˆKimi (Moonshot AI) ูˆDeepSeek AI ูˆQwen (Alibaba) ูˆOpenRouter ูˆTogether AI ูˆFireworks AI +**ุฃู†ูˆุงุน ุงู„ู…ุตุงุฏุฑ:** ู…ูˆุงู‚ุน ุงู„ุชูˆุซูŠู‚ ูˆู…ุณุชูˆุฏุนุงุช GitHub ูˆPDF ูˆWord (.docx) ูˆEPUB ูˆุงู„ููŠุฏูŠูˆ ูˆู‚ูˆุงุนุฏ ุงู„ูƒูˆุฏ ุงู„ู…ุญู„ูŠุฉ ูˆุฏูุงุชุฑ Jupyter ูˆHTML ุงู„ู…ุญู„ูŠ ูˆOpenAPI/Swagger ูˆAsciiDoc ูˆPowerPoint (.pptx) ูˆุฎู„ุงุตุงุช RSS/Atom ูˆุตูุญุงุช Man ูˆูˆูŠูƒูŠ Confluence ูˆุตูุญุงุช Notion ูˆู…ุญุงุฏุซุงุช Slack/Discord + +ุงู†ุธุฑ [ู…ุตููˆูุฉ ุงู„ู…ูŠุฒุงุช ุงู„ูƒุงู…ู„ุฉ](docs/reference/FEATURE_MATRIX.md) ู„ุฏุนู… ุงู„ู…ู†ุตุงุช ูˆุงู„ู…ูŠุฒุงุช ุจุงู„ุชูุตูŠู„. + +### ู…ู‚ุงุฑู†ุฉ ุณุฑูŠุนุฉ ุจูŠู† ุงู„ู…ู†ุตุงุช + +| ุงู„ู…ูŠุฒุฉ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|--------|--------|--------|--------|---------|----------| +| ุงู„ุชู†ุณูŠู‚ | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| ุงู„ุฑูุน | โœ… API | โœ… API | โœ… API | โœ… API | โŒ ูŠุฏูˆูŠ | +| ุงู„ุชุนุฒูŠุฒ | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ ู„ุง ูŠูˆุฌุฏ | +| ุฌู…ูŠุน ุฃูˆุถุงุน ุงู„ู…ู‡ุงุฑุงุช | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## ุฃู…ุซู„ุฉ ุงู„ุงุณุชุฎุฏุงู… + +### ุงุณุชุฎุฑุงุฌ ุงู„ุชูˆุซูŠู‚ + +```bash +# ุงุณุชุฎุฑุงุฌ ู…ูˆู‚ุน ุชูˆุซูŠู‚ +skill-seekers create --config configs/react.json + +# ุงุณุชุฎุฑุงุฌ ุณุฑูŠุน (ุจุฏูˆู† ุฅุนุฏุงุฏ) +skill-seekers create https://react.dev --name react + +# ุงู„ูˆุถุน ุบูŠุฑ ุงู„ู…ุชุฒุงู…ู† (ุฃุณุฑุน 3 ู…ุฑุงุช) +skill-seekers create --config configs/godot.json --async --workers 8 + +# ุงุณุชุฎุฏุงู… ูˆูƒูŠู„ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ ู…ุญุฏุฏ ู„ู„ุชุนุฒูŠุฒ +skill-seekers create --config configs/react.json --agent kimi +``` + +### ุงุณุชุฎุฑุงุฌ PDF + +```bash +# ุงุณุชุฎุฑุงุฌ PDF ุฃุณุงุณูŠ +skill-seekers create --pdf docs/manual.pdf --name myskill + +# ู…ูŠุฒุงุช ู…ุชู‚ุฏู…ุฉ +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # ุงุณุชุฎุฑุงุฌ ุงู„ุฌุฏุงูˆู„ + --parallel \ # ู…ุนุงู„ุฌุฉ ู…ุชูˆุงุฒูŠุฉ ุณุฑูŠุนุฉ + --workers 8 # ุงุณุชุฎุฏุงู… 8 ุฃู†ูˆูŠุฉ CPU + +# ู…ู„ูุงุช PDF ุงู„ู…ู…ุณูˆุญุฉ ุถูˆุฆูŠู‹ุง (ูŠุชุทู„ุจ: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### ุงุณุชุฎุฑุงุฌ ุงู„ููŠุฏูŠูˆ + +```bash +# ุชุซุจูŠุช ุฏุนู… ุงู„ููŠุฏูŠูˆ +pip install skill-seekers[video] # ุงู„ู†ุตูˆุต + ุงู„ุจูŠุงู†ุงุช ุงู„ูˆุตููŠุฉ +pip install skill-seekers[video-full] # + ู†ุณุฎ Whisper + ุงุณุชุฎุฑุงุฌ ุงู„ุฅุทุงุฑุงุช ุงู„ู…ุฑุฆูŠุฉ + +# ุงูƒุชุดุงู GPU ุชู„ู‚ุงุฆูŠ ูˆุชุซุจูŠุช ุงู„ู…ูƒูˆู†ุงุช ุงู„ู…ุฑุฆูŠุฉ (PyTorch + easyocr) +skill-seekers create --setup + +# ุงู„ุงุณุชุฎุฑุงุฌ ู…ู† ููŠุฏูŠูˆ YouTube +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# ุงู„ุงุณุชุฎุฑุงุฌ ู…ู† ู‚ุงุฆู…ุฉ ุชุดุบูŠู„ YouTube +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# ุงู„ุงุณุชุฎุฑุงุฌ ู…ู† ู…ู„ู ููŠุฏูŠูˆ ู…ุญู„ูŠ +skill-seekers create --video-file recording.mp4 --name myrecording + +# ุงู„ุงุณุชุฎุฑุงุฌ ู…ุน ุชุญู„ูŠู„ ุงู„ุฅุทุงุฑุงุช ุงู„ู…ุฑุฆูŠุฉ (ูŠุชุทู„ุจ ู…ูƒูˆู†ุงุช video-full) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# ู…ุน ุชุนุฒูŠุฒ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ (ุชู†ุธูŠู OCR + ุชูˆู„ูŠุฏ SKILL.md ู…ุตู‚ูˆู„) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# ู‚ุต ู…ู‚ุทุน ู…ุญุฏุฏ ู…ู† ุงู„ููŠุฏูŠูˆ (ูŠุฏุนู… ุงู„ุซูˆุงู†ูŠ ูˆMM:SS ูˆHH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# ุงุณุชุฎุฏุงู… Vision API ู„ุฅุทุงุฑุงุช OCR ู…ู†ุฎูุถุฉ ุงู„ุซู‚ุฉ (ูŠุชุทู„ุจ ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# ุฅุนุงุฏุฉ ุจู†ุงุก ุงู„ู…ู‡ุงุฑุฉ ู…ู† ุจูŠุงู†ุงุช ู…ุณุชุฎุฑุฌุฉ ุณุงุจู‚ู‹ุง (ุชุฎุทูŠ ุงู„ุชู†ุฒูŠู„) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **ุงู„ุฏู„ูŠู„ ุงู„ูƒุงู…ู„:** ุงู†ุธุฑ [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) ู„ู…ุฑุฌุน CLI ุงู„ูƒุงู…ู„ +> ูˆุชูุงุตูŠู„ ุฎุท ุงู„ุฃู†ุงุจูŠุจ ุงู„ู…ุฑุฆูŠ ูˆุฎูŠุงุฑุงุช ุชุนุฒูŠุฒ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ูˆุงุณุชูƒุดุงู ุงู„ุฃุฎุทุงุก. + +### ุชุญู„ูŠู„ ู…ุณุชูˆุฏุนุงุช GitHub + +```bash +# ุงุณุชุฎุฑุงุฌ ุงู„ู…ุณุชูˆุฏุน ุงู„ุฃุณุงุณูŠ +skill-seekers create facebook/react + +# ู…ุน ุงู„ู…ุตุงุฏู‚ุฉ (ุญุฏูˆุฏ ู…ุนุฏู„ ุฃุนู„ู‰) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# ุชุฎุตูŠุต ู…ุง ูŠุชู… ุชุถู…ูŠู†ู‡ +skill-seekers create django/django \ + --include-issues \ # ุงุณุชุฎุฑุงุฌ GitHub Issues + --max-issues 100 \ # ุชุญุฏูŠุฏ ุนุฏุฏ ุงู„ู…ุดูƒู„ุงุช + --include-changelog # ุงุณุชุฎุฑุงุฌ CHANGELOG.md +``` + +### ุงู„ุงุณุชุฎุฑุงุฌ ุงู„ู…ูˆุญุฏ ู…ุชุนุฏุฏ ุงู„ู…ุตุงุฏุฑ + +**ุฏู…ุฌ ุงู„ุชูˆุซูŠู‚ + GitHub + PDF ููŠ ู…ู‡ุงุฑุฉ ู…ูˆุญุฏุฉ ูˆุงุญุฏุฉ ู…ุน ุงูƒุชุดุงู ุงู„ุชุนุงุฑุถุงุช:** + +```bash +# ุงุณุชุฎุฏุงู… ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ูˆุญุฏุฉ ุงู„ู…ูˆุฌูˆุฏุฉ +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# ุฃูˆ ุฅู†ุดุงุก ุฅุนุฏุงุฏ ู…ูˆุญุฏ +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**ุงูƒุชุดุงู ุงู„ุชุนุงุฑุถุงุช ูŠุฌุฏ ุชู„ู‚ุงุฆูŠู‹ุง:** +- ๐Ÿ”ด **ู…ูู‚ูˆุฏ ููŠ ุงู„ูƒูˆุฏ** (ุนุงู„ูŠ): ู…ูˆุซู‚ ูˆู„ูƒู† ุบูŠุฑ ู…ู†ูู‘ุฐ +- ๐ŸŸก **ู…ูู‚ูˆุฏ ููŠ ุงู„ุชูˆุซูŠู‚** (ู…ุชูˆุณุท): ู…ู†ูู‘ุฐ ูˆู„ูƒู† ุบูŠุฑ ู…ูˆุซู‚ +- โš ๏ธ **ุนุฏู… ุชุทุงุจู‚ ุงู„ุชูˆู‚ูŠุน**: ู…ุนุงู…ู„ุงุช/ุฃู†ูˆุงุน ู…ุฎุชู„ูุฉ +- โ„น๏ธ **ุนุฏู… ุชุทุงุจู‚ ุงู„ูˆุตู**: ุดุฑูˆุญุงุช ู…ุฎุชู„ูุฉ + +**ุงู„ุฏู„ูŠู„ ุงู„ูƒุงู…ู„:** ุงู†ุธุฑ [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md). + +### ู…ุณุชูˆุฏุนุงุช ุงู„ุฅุนุฏุงุฏุงุช ุงู„ุฎุงุตุฉ + +**ู…ุดุงุฑูƒุฉ ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุฎุตุตุฉ ุนุจุฑ ุงู„ูุฑู‚ ุจุงุณุชุฎุฏุงู… ู…ุณุชูˆุฏุนุงุช Git ุฎุงุตุฉ:** + +```bash +# ุงู„ุฎูŠุงุฑ 1: ุงุณุชุฎุฏุงู… ุฃุฏูˆุงุช MCP (ู…ูˆุตู‰ ุจู‡) +# ุชุณุฌูŠู„ ู…ุณุชูˆุฏุน ุงู„ูุฑูŠู‚ ุงู„ุฎุงุต +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# ุฌู„ุจ ุงู„ุฅุนุฏุงุฏ ู…ู† ู…ุณุชูˆุฏุน ุงู„ูุฑูŠู‚ +fetch_config(source="team", config_name="internal-api") +``` + +**ุงู„ู…ู†ุตุงุช ุงู„ู…ุฏุนูˆู…ุฉ:** +- GitHub (`GITHUB_TOKEN`) ูˆGitLab (`GITLAB_TOKEN`) ูˆGitea (`GITEA_TOKEN`) ูˆBitbucket (`BITBUCKET_TOKEN`) + +**ุงู„ุฏู„ูŠู„ ุงู„ูƒุงู…ู„:** ุงู†ุธุฑ [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md). + +## ูƒูŠู ูŠุนู…ู„ + +```mermaid +graph LR + A[ู…ูˆู‚ุน ุงู„ุชูˆุซูŠู‚] --> B[Skill Seekers] + B --> C[ุงู„ู…ูุณุชุฎุฑุฌ] + B --> D[ุชุนุฒูŠุฒ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ] + B --> E[ุงู„ู…ูุนุจุฆ] + C --> F[ู…ุฑุงุฌุน ู…ู†ุธู…ุฉ] + D --> F + F --> E + E --> G[ู…ู‡ุงุฑุฉ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ .zip] + G --> H[ุงู„ุฑูุน ุฅู„ู‰ ู…ู†ุตุฉ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ] +``` + +0. **ุงูƒุชุดุงู llms.txt** - ุงู„ุชุญู‚ู‚ ุฃูˆู„ุงู‹ ู…ู† llms-full.txt ูˆllms.txt ูˆllms-small.txt (ุฌุฒุก ู…ู† ุงู„ุงูƒุชุดุงู ุงู„ุฐูƒูŠ ู„ู…ูˆุงู‚ุน SPA) +1. **ุงู„ุงุณุชุฎุฑุงุฌ**: ุณุญุจ ุฌู…ูŠุน ุงู„ุตูุญุงุช ู…ู† ุงู„ุชูˆุซูŠู‚ +2. **ุงู„ุชุตู†ูŠู**: ุชู†ุธูŠู… ุงู„ู…ุญุชูˆู‰ ุญุณุจ ุงู„ู…ูˆุงุถูŠุน (API ูˆุฃุฏู„ุฉ ูˆุฏุฑูˆุณ ูˆุบูŠุฑู‡ุง) +3. **ุงู„ุชุนุฒูŠุฒ**: ูŠุญู„ู„ ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุงู„ุชูˆุซูŠู‚ ูˆูŠู†ุดุฆ SKILL.md ุดุงู…ู„ุงู‹ ู…ุน ุฃู…ุซู„ุฉ (ูŠุฏุนู… ูˆูƒู„ุงุก ู…ุชุนุฏุฏูŠู† ุนุจุฑ `--agent`) +4. **ุงู„ุชุนุจุฆุฉ**: ุชุฌู…ูŠุน ูƒู„ ุดูŠุก ููŠ ู…ู„ู `.zip` ุฌุงู‡ุฒ ู„ู„ู…ู†ุตุฉ + +## ุงู„ุจู†ูŠุฉ ุงู„ู…ุนู…ุงุฑูŠุฉ + +ูŠุชูƒูˆู† ุงู„ู†ุธุงู… ู…ู† **8 ูˆุญุฏุงุช ุฃุณุงุณูŠุฉ** ูˆ**5 ูˆุญุฏุงุช ู…ุณุงุนุฏุฉ** (ุญูˆุงู„ูŠ 200 ุตู†ู ุฅุฌู…ุงู„ุงู‹): + +![ู†ุธุฑุฉ ุนุงู…ุฉ ุนู„ู‰ ุงู„ุญุฒู…](docs/UML/exports/00_package_overview.png) + +| ุงู„ูˆุญุฏุฉ | ุงู„ุบุฑุถ | ุงู„ุฃุตู†ุงู ุงู„ุฑุฆูŠุณูŠุฉ | +|--------|-------|-----------------| +| **CLICore** | ู…ููˆุฒู‘ุน ุฃูˆุงู…ุฑ ุจุฃุณู„ูˆุจ Git | `CLIDispatcher` ูˆ`SourceDetector` ูˆ`CreateCommand` | +| **Scrapers** | ู…ุณุชุฎุฑุฌุงุช 18 ู†ูˆุนู‹ุง ู…ู† ุงู„ู…ุตุงุฏุฑ | `DocToSkillConverter` ูˆ`DocumentSkillBuilder` (ุทุจู‚ุฉ ุจู†ุงุก ู…ุดุชุฑูƒุฉ) ูˆ`UnifiedScraper` | +| **Adaptors** | ุฃูƒุซุฑ ู…ู† 20 ุชู†ุณูŠู‚ ู…ู†ุตุฉ ุฅุฎุฑุงุฌ | `SkillAdaptor` (ABC) ูˆ`ClaudeAdaptor` ูˆ`LangChainAdaptor` | +| **Analysis** | ุฎุท ุฃู†ุงุจูŠุจ ุชุญู„ูŠู„ ู‚ุงุนุฏุฉ ุงู„ูƒูˆุฏ C3.x | `UnifiedCodebaseAnalyzer` ูˆ`PatternRecognizer` ูˆ10 ูƒุงุดูุงุช GoF | +| **Enhancement** | ุชุญุณูŠู† ุงู„ู…ู‡ุงุฑุงุช ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ ุนุจุฑ `AgentClient` | `AgentClient` ูˆ`AIEnhancer` ูˆ`UnifiedEnhancer` ูˆ`WorkflowEngine` | +| **Packaging** | ุชุนุจุฆุฉ ุงู„ู…ู‡ุงุฑุงุช ูˆุฑูุนู‡ุง ูˆุชุซุจูŠุชู‡ุง | `PackageSkill` ูˆ`InstallAgent` | +| **MCP** | ุฎุงุฏู… FastMCP (40 ุฃุฏุงุฉ) | `SkillSeekerMCPServer` ูˆ10 ูˆุญุฏุงุช ุฃุฏูˆุงุช | +| **Sync** | ุงูƒุชุดุงู ุชุบูŠูŠุฑุงุช ุงู„ุชูˆุซูŠู‚ | `ChangeDetector` ูˆ`SyncMonitor` ูˆ`Notifier` | + +ุงู„ูˆุญุฏุงุช ุงู„ู…ุณุงุนุฏุฉ: **Parsers** (28 ู…ูุญู„ู„ CLI) ูˆ**Storage** (S3/GCS/Azure) ูˆ**Embedding** (ู…ุชุฌู‡ุงุช ู…ุชุนุฏุฏุฉ ุงู„ู…ุฒูˆุฏูŠู†) ูˆ**Benchmark** (ุงู„ุฃุฏุงุก) ูˆ**Utilities** (16 ู…ุณุงุนุฏู‹ุง ู…ุดุชุฑูƒู‹ุง). + +ู…ุฎุทุทุงุช UML ุงู„ูƒุงู…ู„ุฉ: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | ู…ุดุฑูˆุน StarUML: `docs/UML/skill_seekers.mdj` | ู…ุฑุฌุน HTML API: `docs/UML/html/` + +## ๐Ÿ“‹ ุงู„ู…ุชุทู„ุจุงุช ุงู„ู…ุณุจู‚ุฉ + +**ู‚ุจู„ ุงู„ุจุฏุกุŒ ุชุฃูƒุฏ ู…ู† ุชูˆูุฑ:** + +1. **Python 3.10 ุฃูˆ ุฃุญุฏุซ** - [ุชู†ุฒูŠู„](https://www.python.org/downloads/) | ุงู„ุชุญู‚ู‚: `python3 --version` +2. **Git** - [ุชู†ุฒูŠู„](https://git-scm.com/) | ุงู„ุชุญู‚ู‚: `git --version` +3. **15โ€“30 ุฏู‚ูŠู‚ุฉ** ู„ู„ุฅุนุฏุงุฏ ุงู„ุฃูˆู„ูŠ + +**ู…ุณุชุฎุฏู… ุฌุฏูŠุฏุŸ** โ†’ **[ุงุจุฏุฃ ู…ู† ู‡ู†ุง: ุฏู„ูŠู„ ุงู„ุจุฏุก ุงู„ุณุฑูŠุน ุงู„ู…ูุญูƒู…](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค ุฑูุน ุงู„ู…ู‡ุงุฑุงุช ุฅู„ู‰ Claude + +ุจุนุฏ ุชุนุจุฆุฉ ุงู„ู…ู‡ุงุฑุฉุŒ ุชุญุชุงุฌ ุฅู„ู‰ ุฑูุนู‡ุง ุฅู„ู‰ Claude: + +### ุงู„ุฎูŠุงุฑ 1: ุงู„ุฑูุน ุงู„ุชู„ู‚ุงุฆูŠ (ุนุจุฑ API) + +```bash +# ุชุนูŠูŠู† API Key (ู…ุฑุฉ ูˆุงุญุฏุฉ) +export ANTHROPIC_API_KEY=sk-ant-... + +# ุงู„ุชุนุจุฆุฉ ูˆุงู„ุฑูุน ุชู„ู‚ุงุฆูŠู‹ุง +skill-seekers package output/react/ --upload + +# ุฃูˆ ุฑูุน ู…ู„ู .zip ู…ูˆุฌูˆุฏ +skill-seekers upload output/react.zip +``` + +### ุงู„ุฎูŠุงุฑ 2: ุงู„ุฑูุน ุงู„ูŠุฏูˆูŠ (ุจุฏูˆู† API Key) + +```bash +# ุชุนุจุฆุฉ ุงู„ู…ู‡ุงุฑุฉ +skill-seekers package output/react/ +# โ†’ ูŠู†ุดุฆ output/react.zip + +# ุซู… ุงุฑูุน ูŠุฏูˆูŠู‹ุง: +# - ุงุฐู‡ุจ ุฅู„ู‰ https://claude.ai/skills +# - ุงู†ู‚ุฑ "ุฑูุน ุงู„ู…ู‡ุงุฑุฉ" +# - ุงุฎุชุฑ output/react.zip +``` + +### ุงู„ุฎูŠุงุฑ 3: MCP (Claude Code) + +``` +ููŠ Claude CodeุŒ ุงุทู„ุจ ุจุจุณุงุทุฉ: +"ุนุจู‘ุฆ ูˆุงุฑูุน ู…ู‡ุงุฑุฉ React" +``` + +--- + +## ๐Ÿค– ุงู„ุชุซุจูŠุช ููŠ ูˆูƒู„ุงุก ุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ + +ูŠู…ูƒู† ู„ู€ Skill Seekers ุชุซุจูŠุช ุงู„ู…ู‡ุงุฑุงุช ุชู„ู‚ุงุฆูŠู‹ุง ููŠ 19 ูˆูƒูŠู„ ุจุฑู…ุฌุฉ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ. + +```bash +# ุงู„ุชุซุจูŠุช ููŠ ูˆูƒูŠู„ ู…ุญุฏุฏ +skill-seekers install-agent output/react/ --agent cursor + +# ุงู„ุชุซุจูŠุช ููŠ IBM Bob (ู…ุญู„ูŠ ุนู„ู‰ ู…ุณุชูˆู‰ ุงู„ู…ุดุฑูˆุน .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# ุงู„ุชุซุจูŠุช ููŠ ุฌู…ูŠุน ุงู„ูˆูƒู„ุงุก ุฏูุนุฉ ูˆุงุญุฏุฉ +skill-seekers install-agent output/react/ --agent all + +# ุงู„ู…ุนุงูŠู†ุฉ ุจุฏูˆู† ุชุซุจูŠุช +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### ุงู„ูˆูƒู„ุงุก ุงู„ู…ุฏุนูˆู…ูˆู† + +| ุงู„ูˆูƒูŠู„ | ุงู„ู…ุณุงุฑ | ุงู„ู†ูˆุน | +|--------|--------|-------| +| **Claude Code** | `~/.claude/skills/` | ุนุงู… | +| **Cursor** | `.cursor/skills/` | ู…ุดุฑูˆุน | +| **VS Code / Copilot** | `.github/skills/` | ู…ุดุฑูˆุน | +| **Amp** | `~/.amp/skills/` | ุนุงู… | +| **Goose** | `~/.config/goose/skills/` | ุนุงู… | +| **OpenCode** | `~/.opencode/skills/` | ุนุงู… | +| **Windsurf** | `~/.windsurf/skills/` | ุนุงู… | +| **Roo Code** | `.roo/skills/` | ู…ุดุฑูˆุน | +| **Cline** | `.cline/skills/` | ู…ุดุฑูˆุน | +| **Aider** | `~/.aider/skills/` | ุนุงู… | +| **Bolt** | `.bolt/skills/` | ู…ุดุฑูˆุน | +| **Kilo Code** | `.kilo/skills/` | ู…ุดุฑูˆุน | +| **Continue** | `~/.continue/skills/` | ุนุงู… | +| **Kimi Code** | `~/.kimi/skills/` | ุนุงู… | +| **IBM Bob** | `.bob/skills/` | ู…ุดุฑูˆุน | + +--- + +## ๐Ÿ”Œ ุชูƒุงู…ู„ MCP (40 ุฃุฏุงุฉ) + +ูŠุฃุชูŠ Skill Seekers ู…ุน ุฎุงุฏู… MCP ู„ู„ุงุณุชุฎุฏุงู… ู…ู† Claude Code ูˆCursor ูˆWindsurf ูˆVS Code + Cline ุฃูˆ IntelliJ IDEA. + +```bash +# ูˆุถุน stdio (Claude Code ูˆVS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# ูˆุถุน HTTP (Cursor ูˆWindsurf ูˆIntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# ุฅุนุฏุงุฏ ุชู„ู‚ุงุฆูŠ ู„ุฌู…ูŠุน ุงู„ูˆูƒู„ุงุก ุฏูุนุฉ ูˆุงุญุฏุฉ +./setup_mcp.sh +``` + +**ุฌู…ูŠุน ุงู„ุฃุฏูˆุงุช ุงู„ุฃุฑุจุนูŠู† ุงู„ู…ุชุงุญุฉ:** +- **ุฃุณุงุณูŠุฉ (9):** `list_configs` ูˆ`generate_config` ูˆ`validate_config` ูˆ`estimate_pages` ูˆ`scrape_docs` ูˆ`package_skill` ูˆ`upload_skill` ูˆ`enhance_skill` ูˆ`install_skill` +- **ู…ูˆุณุนุฉ (10):** `scrape_github` ูˆ`scrape_pdf` ูˆ`unified_scrape` ูˆ`merge_sources` ูˆ`detect_conflicts` ูˆ`add_config_source` ูˆ`fetch_config` ูˆ`list_config_sources` ูˆ`remove_config_source` ูˆ`split_config` +- **ู‚ูˆุงุนุฏ ุจูŠุงู†ุงุช ุงู„ู…ุชุฌู‡ุงุช (4):** `export_to_chroma` ูˆ`export_to_weaviate` ูˆ`export_to_faiss` ูˆ`export_to_qdrant` +- **ุงู„ุณุญุงุจุฉ (3):** `cloud_upload` ูˆ`cloud_download` ูˆ`cloud_list` + +**ุงู„ุฏู„ูŠู„ ุงู„ูƒุงู…ู„:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ ุงู„ุฅุนุฏุงุฏุงุช + +### ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ ุงู„ู…ุชุงุญุฉ (ุฃูƒุซุฑ ู…ู† 24) + +```bash +# ุนุฑุถ ุฌู…ูŠุน ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ +# skill-seekers list-configs # ุบูŠุฑ ู…ุชุงุญ ููŠ v3.7.0 +``` + +| ุงู„ูุฆุฉ | ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ | +|-------|-----------------| +| **ุฃุทุฑ ุงู„ูˆูŠุจ** | `react` ูˆ`vue` ูˆ`angular` ูˆ`svelte` ูˆ`nextjs` | +| **Python** | `django` ูˆ`flask` ูˆ`fastapi` ูˆ`sqlalchemy` ูˆ`pytest` | +| **ุชุทูˆูŠุฑ ุงู„ุฃู„ุนุงุจ** | `godot` ูˆ`pygame` ูˆ`unity` | +| **ุงู„ุฃุฏูˆุงุช ูˆDevOps** | `docker` ูˆ`kubernetes` ูˆ`terraform` ูˆ`ansible` | +| **ู…ูˆุญุฏุฉ (ุชูˆุซูŠู‚ + GitHub)** | `react-unified` ูˆ`vue-unified` ูˆ`nextjs-unified` ูˆุงู„ู…ุฒูŠุฏ | + +### ุฅู†ุดุงุก ุฅุนุฏุงุฏูƒ ุงู„ุฎุงุต + +```bash +# ุงู„ุฎูŠุงุฑ 1: ุชูุงุนู„ูŠ +skill-seekers create --interactive + +# ุงู„ุฎูŠุงุฑ 2: ู†ุณุฎ ูˆุชุนุฏูŠู„ ุฅุนุฏุงุฏ ู…ุณุจู‚ +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### ุจู†ูŠุฉ ู…ู„ู ุงู„ุฅุนุฏุงุฏ + +```json +{ + "name": "myframework", + "description": "ู…ุชู‰ ุชุณุชุฎุฏู… ู‡ุฐู‡ ุงู„ู…ู‡ุงุฑุฉ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### ู…ูƒุงู† ุชุฎุฒูŠู† ุงู„ุฅุนุฏุงุฏุงุช + +ุชุจุญุซ ุงู„ุฃุฏุงุฉ ุจุงู„ุชุฑุชูŠุจ ุงู„ุชุงู„ูŠ: +1. ุงู„ู…ุณุงุฑ ุงู„ุฏู‚ูŠู‚ ุงู„ู…ูู‚ุฏู‘ู… +2. `./configs/` (ุงู„ู…ุฌู„ุฏ ุงู„ุญุงู„ูŠ) +3. `~/.config/skill-seekers/configs/` (ู…ุฌู„ุฏ ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุชุฎุฏู…) +4. ูˆุงุฌู‡ุฉ SkillSeekersWeb.com (ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ) + +--- + +## ๐Ÿ“Š ู…ุง ูŠุชู… ุฅู†ุดุงุคู‡ + +``` +output/ +โ”œโ”€โ”€ godot_data/ # ุงู„ุจูŠุงู†ุงุช ุงู„ุฎุงู… ุงู„ู…ุณุชุฎุฑุฌุฉ +โ”‚ โ”œโ”€โ”€ pages/ # ู…ู„ูุงุช JSON (ูˆุงุญุฏ ู„ูƒู„ ุตูุญุฉ) +โ”‚ โ””โ”€โ”€ summary.json # ู†ุธุฑุฉ ุนุงู…ุฉ +โ”‚ +โ””โ”€โ”€ godot/ # ุงู„ู…ู‡ุงุฑุฉ + โ”œโ”€โ”€ SKILL.md # ู…ุนุฒุฒ ุจุฃู…ุซู„ุฉ ุญู‚ูŠู‚ูŠุฉ + โ”œโ”€โ”€ references/ # ุชูˆุซูŠู‚ ู…ูุตู†ู‘ู + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # ูุงุฑุบ (ุฃุถู ู†ุตูˆุตูƒ ุงู„ุจุฑู…ุฌูŠุฉ) + โ””โ”€โ”€ assets/ # ูุงุฑุบ (ุฃุถู ู…ูˆุงุฑุฏูƒ) +``` + +--- + +## ๐Ÿ› ุงุณุชูƒุดุงู ุงู„ุฃุฎุทุงุก ูˆุฅุตู„ุงุญู‡ุง + +### ู„ู… ูŠุชู… ุงุณุชุฎุฑุงุฌ ุฃูŠ ู…ุญุชูˆู‰ุŸ +- ุชุญู‚ู‚ ู…ู† ู…ูุญุฏุฏ `main_content` +- ุฌุฑู‘ุจ: `article` ุฃูˆ `main` ุฃูˆ `div[role="main"]` + +### ุงู„ุจูŠุงู†ุงุช ู…ูˆุฌูˆุฏุฉ ู„ูƒู† ู„ุง ุชูุณุชุฎุฏู…ุŸ +```bash +# ูุฑุถ ุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฑุงุฌ +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ุงู„ุชุตู†ูŠูุงุช ุบูŠุฑ ุฌูŠุฏุฉุŸ +ุนุฏู‘ู„ ู‚ุณู… `categories` ููŠ ุงู„ุฅุนุฏุงุฏ ุจูƒู„ู…ุงุช ู…ูุชุงุญูŠุฉ ุฃูุถู„. + +### ุชุฑูŠุฏ ุชุญุฏูŠุซ ุงู„ุชูˆุซูŠู‚ุŸ +```bash +# ุญุฐู ุงู„ุจูŠุงู†ุงุช ุงู„ู‚ุฏูŠู…ุฉ ูˆุฅุนุงุฏุฉ ุงู„ุงุณุชุฎุฑุงุฌ +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ุงู„ุชุนุฒูŠุฒ ู„ุง ูŠุนู…ู„ุŸ +```bash +# ุงู„ุชุญู‚ู‚ ู…ู† ุชุนูŠูŠู† API Key +echo $ANTHROPIC_API_KEY + +# ุฌุฑู‘ุจ ุงู„ูˆุถุน ุงู„ู…ุญู„ูŠ (ูŠุณุชุฎุฏู… Claude Code MaxุŒ ู„ุง ูŠุญุชุงุฌ API Key) +skill-seekers enhance output/react/ --mode LOCAL + +# ู…ุฑุงู‚ุจุฉ ุญุงู„ุฉ ุงู„ุชุนุฒูŠุฒ ููŠ ุงู„ุฎู„ููŠุฉ +skill-seekers enhance-status output/react/ --watch +``` + +### ู…ุดุงูƒู„ ุญุฏูˆุฏ ู…ุนุฏู„ GitHubุŸ +```bash +# ุชุนูŠูŠู† GitHub Token (5000 ุทู„ุจ/ุณุงุนุฉ ู…ู‚ุงุจู„ 60 ุทู„ุจ/ุณุงุนุฉ ุจุฏูˆู† ู…ุตุงุฏู‚ุฉ) +export GITHUB_TOKEN=ghp_your_token_here + +# ุฃูˆ ุฅุนุฏุงุฏ ู…ู„ูุงุช ุชุนุฑูŠู ู…ุชุนุฏุฏุฉ +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ ุงู„ุฃุฏุงุก + +| ุงู„ู…ู‡ู…ุฉ | ุงู„ูˆู‚ุช | ู…ู„ุงุญุธุงุช | +|--------|-------|---------| +| ุงู„ุงุณุชุฎุฑุงุฌ (ู…ุชุฒุงู…ู†) | 15โ€“45 ุฏู‚ูŠู‚ุฉ | ุงู„ู…ุฑุฉ ุงู„ุฃูˆู„ู‰ ูู‚ุทุŒ ู‚ุงุฆู… ุนู„ู‰ ุงู„ุฎูŠูˆุท | +| ุงู„ุงุณุชุฎุฑุงุฌ (ุบูŠุฑ ู…ุชุฒุงู…ู†) | 5โ€“15 ุฏู‚ูŠู‚ุฉ | ุฃุณุฑุน 2โ€“3 ู…ุฑุงุช ู…ุน ุนู„ุงู…ุฉ `--async` | +| ุงู„ุจู†ุงุก | 1โ€“3 ุฏู‚ุงุฆู‚ | ุฅุนุงุฏุฉ ุจู†ุงุก ุณุฑูŠุนุฉ ู…ู† ุงู„ุชุฎุฒูŠู† ุงู„ู…ุคู‚ุช | +| ุฅุนุงุฏุฉ ุงู„ุจู†ุงุก | ุฃู‚ู„ ู…ู† ุฏู‚ูŠู‚ุฉ | ู…ุน `--skip-scrape` | +| ุงู„ุชุนุฒูŠุฒ (ู…ุญู„ูŠ) | 30โ€“60 ุซุงู†ูŠุฉ | ูŠุณุชุฎุฏู… Claude Code Max | +| ุงู„ุชุนุฒูŠุฒ (API) | 20โ€“40 ุซุงู†ูŠุฉ | ูŠุชุทู„ุจ API Key | +| ุงู„ููŠุฏูŠูˆ (ุงู„ู†ุตูˆุต) | 1โ€“3 ุฏู‚ุงุฆู‚ | YouTube/ู…ุญู„ูŠุŒ ุงู„ู†ุตูˆุต ูู‚ุท | +| ุงู„ููŠุฏูŠูˆ (ู…ุฑุฆูŠ) | 5โ€“15 ุฏู‚ูŠู‚ุฉ | + ุงุณุชุฎุฑุงุฌ ุฅุทุงุฑุงุช OCR | +| ุงู„ุชุนุจุฆุฉ | 5โ€“10 ุซูˆุงู†ู | ุฅู†ุดุงุก ู…ู„ู .zip ุงู„ู†ู‡ุงุฆูŠ | + +--- + +## ๐Ÿ†• ุงู„ุฌุฏูŠุฏ ููŠ v3.6.0 + +### ุงู„ุฅุนุฏุงุฏุงุช ุงู„ู…ุณุจู‚ุฉ ู„ุณูŠุฑ ุงู„ุนู…ู„ +ุชุญูƒู… ููŠ ุนู…ู‚ ุงู„ุชุญู„ูŠู„ ุจุงุณุชุฎุฏุงู… `--preset`: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # ุณุฑูŠุนุŒ ุณุทุญูŠ +skill-seekers create https://docs.react.dev/ --preset standard # ู…ุชูˆุงุฒู† (ุงู„ุงูุชุฑุงุถูŠ) +skill-seekers create https://docs.react.dev/ --preset comprehensive # ุนู…ูŠู‚ ูˆุดุงู…ู„ +``` + +### ุฃุนู„ุงู… ุฏูˆุฑุฉ ุงู„ุญูŠุงุฉ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # ู…ุนุงูŠู†ุฉ ุจุฏูˆู† ุงุณุชุฎุฑุงุฌ +skill-seekers create https://docs.react.dev/ --fresh # ุชุฌุงู‡ู„ ุฐุงูƒุฑุฉ ุงู„ุชุฎุฒูŠู† ุงู„ู…ุคู‚ุชุŒ ุฅุนุงุฏุฉ ุงุณุชุฎุฑุงุฌ ูƒุงู…ู„ุฉ +skill-seekers create https://docs.react.dev/ --resume # ุงุณุชุฆู†ุงู ุงู„ู…ู‡ู…ุฉ ุงู„ู…ู‚ุงุทุนุฉ +skill-seekers create https://docs.react.dev/ --skip-scrape # ุฅุนุงุฏุฉ ุชุนุจุฆุฉ ุงู„ู†ุงุชุฌ ุงู„ู…ูˆุฌูˆุฏ +``` + +### ูุญุต ุงู„ุตุญุฉ ูˆุงู„ุฃุฏูˆุงุช ุงู„ู…ุณุงุนุฏุฉ +```bash +skill-seekers doctor # ุชุดุฎูŠุต ุงู„ุชุซุจูŠุช ูˆุงู„ุจูŠุฆุฉ +skill-seekers sync-config # ูƒุดู ุงู†ุญุฑุงู ุงู„ุชูƒูˆูŠู† +skill-seekers stream # ุงู„ุงุณุชู‡ู„ุงูƒ ุงู„ู…ุชุฏูู‚ ู„ู„ู…ุณุชู†ุฏุงุช ุงู„ูƒุจูŠุฑุฉ +skill-seekers update output/react/ # ุงู„ุชุญุฏูŠุซ ุงู„ุชุฒุงูŠุฏูŠ +skill-seekers multilang # ุฅู†ุดุงุก ู…ู‡ุงุฑุงุช ู…ุชุนุฏุฏุฉ ุงู„ู„ุบุงุช +skill-seekers quality output/react/ # ุชู‚ุฑูŠุฑ ุงู„ุฌูˆุฏุฉ (ุฃุถู --threshold 7 ู„ูุฑุถ ุญุฏ ุฃุฏู†ู‰: ุฑู…ุฒ ุฎุฑูˆุฌ ุบูŠุฑ ุตูุฑูŠ ุนู†ุฏ ุฃู‚ู„ ู…ู† 7/10) +``` + +### ุฎูŠุงุฑุงุช ุชู‚ุณูŠู… RAG (ุงู„ุชุนุจุฆุฉ) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### ุงู„ู†ุดุฑ ููŠ ุงู„ุณูˆู‚ +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### ุชุจุนูŠุงุช ุงุฎุชูŠุงุฑูŠุฉ ุฅุถุงููŠุฉ +| ุงู„ุฅุถุงูุฉ | ุงู„ุชุซุจูŠุช | ุงู„ุบุฑุถ | +|---------|---------|-------| +| `browser` | `pip install "skill-seekers[browser]"` | Playwright ุจุฏูˆู† ูˆุงุฌู‡ุฉ ู„ู…ูˆุงู‚ุน SPA | +| `embedding` | `pip install "skill-seekers[embedding]"` | ุฏุนู… ุฎุงุฏู… ุงู„ุชุถู…ูŠู†ุงุช | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` ูˆุบูŠุฑู‡ุง | ุงู„ุฑูุน ุฅู„ู‰ ุงู„ุชุฎุฒูŠู† ุงู„ุณุญุงุจูŠ | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | ุชุจุนูŠุงุช ุงู„ุฑูุน ุงู„ู…ุฌู…ุนุฉ ู„ู‚ูˆุงุนุฏ ุจูŠุงู†ุงุช ุงู„ู…ุชุฌู‡ุงุช | + +--- + +## ๐Ÿ“š ุงู„ุชูˆุซูŠู‚ + +### ุฃุฏู„ุฉ ุงู„ุจุฏุก +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **ุงุจุฏุฃ ู…ู† ู‡ู†ุง ุฅุฐุง ูƒู†ุช ุฌุฏูŠุฏู‹ุง!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - ุจุฏุก ุณุฑูŠุน ู„ู„ู…ุณุชุฎุฏู…ูŠู† ุฐูˆูŠ ุงู„ุฎุจุฑุฉ +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - ุงู„ู…ุดุงูƒู„ ุงู„ุดุงุฆุนุฉ ูˆุญู„ูˆู„ู‡ุง +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - ูˆุฑู‚ุฉ ู…ุฑุฌุนูŠุฉ ุณุฑูŠุนุฉ + +### ุงู„ุจู†ูŠุฉ ุงู„ู…ุนู…ุงุฑูŠุฉ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - ู†ุธุฑุฉ ุนุงู…ุฉ ุนู„ู‰ ุจู†ูŠุฉ UML ู…ุน 14 ู…ุฎุทุทู‹ุง +- **[docs/UML/exports/](docs/UML/exports/)** - ุชุตุฏูŠุฑุงุช ู…ุฎุทุทุงุช PNG (ู†ุธุฑุฉ ุนุงู…ุฉ ุนู„ู‰ ุงู„ุญุฒู… + 13 ู…ุฎุทุท ุฃุตู†ุงู) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - ู…ุฑุฌุน HTML API ูƒุงู…ู„ (ุฌู…ูŠุน ุงู„ุฃุตู†ุงู ูˆุงู„ุนู…ู„ูŠุงุช ูˆุงู„ุณู…ุงุช) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - ู…ู„ู ู…ุดุฑูˆุน StarUML (ุงูุชุญู‡ ุจุงุณุชุฎุฏุงู… [StarUML](https://staruml.io/)) + +### ุงู„ุฃุฏู„ุฉ +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - ู…ุนุงู„ุฌุฉ ุฃูƒุซุฑ ู…ู† 10 ุขู„ุงูโ€“40 ุฃู„ู ุตูุญุฉ +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - ุฏู„ูŠู„ ุฃูˆุถุงุน ุงู„ุชุนุฒูŠุฒ ุจุงู„ุฐูƒุงุก ุงู„ุงุตุทู†ุงุนูŠ +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - ุฅุนุฏุงุฏ ุชูƒุงู…ู„ MCP +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - ุงู„ุงุณุชุฎุฑุงุฌ ู…ุชุนุฏุฏ ุงู„ู…ุตุงุฏุฑ +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - ุงู„ุฏู„ูŠู„ ุงู„ูƒุงู…ู„ ู„ุงุณุชุฎุฑุงุฌ ุงู„ููŠุฏูŠูˆ + +### ุฃุฏู„ุฉ ุงู„ุชูƒุงู…ู„ +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - ุฌู…ูŠุน ุฎุทูˆุท ุฃู†ุงุจูŠุจ RAG + +--- + +## ๐Ÿ“ ุงู„ุฑุฎุตุฉ + +ุฑุฎุตุฉ MIT - ุงู†ุธุฑ ู…ู„ู [LICENSE](LICENSE) ู„ู„ุชูุงุตูŠู„ + +--- + +ุจู†ุงุก ู…ู‡ุงุฑุงุช ุณุนูŠุฏ! ๐Ÿš€ + +--- + +## ๐Ÿ”’ ุงู„ุฃู…ุงู† + +[![ุดุงุฑุฉ ุชู‚ูŠูŠู… ุฃู…ุงู† MseeP.ai](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› ุงู„ุฑุนุงุฉ + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” ู…ู†ุตุฉ ุงุณุชุฏู„ุงู„ ุฐูƒุงุก ุงุตุทู†ุงุนูŠ ูƒุงู…ู„ุฉ ุงู„ูˆุณุงุฆุท ูˆู…ุชูˆุงูู‚ุฉ ู…ุน OpenAI. ูŠุฏุนู…ู‡ุง Skill Seekers ูƒู‡ุฏู ู„ู„ุชุนุจุฆุฉ/ุงู„ุชุนุฒูŠุฒ ุนุจุฑ `--target atlas` ู…ุน `ATLAS_API_KEY`. diff --git a/README.de.md b/README.de.md new file mode 100644 index 0000000..045a867 --- /dev/null +++ b/README.de.md @@ -0,0 +1,1341 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | Deutsch | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **Hinweis zur maschinellen รœbersetzung** +> +> Dieses Dokument wurde automatisch durch KI รผbersetzt. Trotz Bemรผhungen um Qualitรคt kรถnnen ungenaue Ausdrรผcke vorkommen. +> +> Gerne kรถnnen Sie รผber [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) zur Verbesserung der รœbersetzung beitragen! Ihr Feedback ist uns sehr wertvoll. + +[![Version](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![Lizenz: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP-Integration](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Getestet](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Projektboard](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI-Version](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python-Version](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![Website](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter Follow](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Repo Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**Die Datenschicht fรผr KI-Systeme.** Skill Seekers verwandelt Dokumentationswebsites, GitHub-Repositories, PDFs, Videos, Jupyter-Notebooks, Wikis und รผber 10 weitere Quelltypen in strukturierte Wissensressourcen โ€” bereit fรผr KI-Skills (Claude, Gemini, OpenAI), RAG-Pipelines (LangChain, LlamaIndex, Pinecone) und KI-Programmierassistenten (Cursor, Windsurf, Cline) in Minuten statt Stunden. + +> **[Besuchen Sie SkillSeekersWeb.com](https://skillseekersweb.com/)** - Durchsuchen Sie รผber 24 vorgefertigte Konfigurationen, teilen Sie Ihre Konfigurationen und greifen Sie auf die vollstรคndige Dokumentation zu! + +> **[Entwicklungsroadmap und Aufgaben ansehen](https://github.com/users/yusufkaraaslan/projects/2)** - 134 Aufgaben in 10 Kategorien โ€” wรคhlen Sie eine beliebige zum Mitwirken! + +## ๐ŸŒ ร–kosystem + +Skill Seekers ist ein Multi-Repository-Projekt. Hier finden Sie alles: + +| Repository | Beschreibung | Links | +|-----------|-------------|-------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | Kern-CLI & MCP-Server (dieses Repo) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Website & Dokumentation | [Web](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Community-Konfigurationsrepository | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action fรผr CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code Plugin | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew Tap fรผr macOS | | + +> **Mรถchten Sie beitragen?** Die Website- und Konfigurations-Repos sind ideale Einstiegspunkte fรผr neue Mitwirkende! + +## Die Datenschicht fรผr KI-Systeme + +**Skill Seekers ist die universelle Vorverarbeitungsschicht**, die zwischen Rohdokumentation und jedem KI-System steht, das diese konsumiert. Ob Sie Claude-Skills, eine LangChain-RAG-Pipeline oder eine Cursor-`.cursorrules`-Datei erstellen โ€” die Datenaufbereitung ist identisch. Sie fรผhren sie einmal durch und exportieren fรผr alle Zielplattformen. + +```bash +# Ein Befehl โ†’ strukturierte Wissensressource +skill-seekers create https://docs.react.dev/ +# oder: skill-seekers create facebook/react +# oder: skill-seekers create ./my-project + +# Export in jedes KI-System +skill-seekers package output/react --target claude # โ†’ Claude AI Skill (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob Skill-Verzeichnis +``` + +### Was erstellt wird + +| Ausgabe | Ziel | Einsatzbereich | +|---------|------|---------------| +| **Claude Skill** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini Skill** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, benutzerdefinierte Assistenten | +| **LangChain Documents** | `--target langchain` | QA-Chains, Agenten, Retriever | +| **LlamaIndex TextNodes** | `--target llama-index` | Query Engines, Chat Engines | +| **Haystack Documents** | `--target haystack` | Enterprise-RAG-Pipelines | +| **Pinecone-ready** (Markdown) | `--target markdown` | Vektor-Upsert | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Lokale Vektordatenbanken | +| **IBM Bob Skill** (Verzeichnis) | `--target ibm-bob` | IBM Bob Projekt-/globale Skills | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ SKILL.md kopieren | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ kopieren | VS Code, IntelliJ, Vim | + +### Warum Skill Seekers + +- **99 % schneller** โ€” Tage manueller Datenaufbereitung โ†’ 15โ€“45 Minuten +- **KI-Skill-Qualitรคt** โ€” รœber 500 Zeilen SKILL.md-Dateien mit Beispielen, Mustern und Anleitungen +- **RAG-fertige Chunks** โ€” Intelligentes Chunking bewahrt Codeblรถcke und Kontext +- **18 Quelltypen** โ€” Dokumentation + GitHub + PDF + Videos + Notebooks + Wikis u. v. m. zu einer Wissensressource vereinen +- **Einmal aufbereiten, รผberall exportieren** โ€” Export auf 21 Plattformen ohne erneutes Scrapen +- **Videos** โ€” Code, Transkripte und strukturiertes Wissen aus YouTube- und lokalen Videos extrahieren +- **Kampferprobt** โ€” รœber 3.700 Tests, 24+ Framework-Presets, produktionsreif + +## Schnellstart (3 Befehle) + +```bash +# 1. Installieren +pip install skill-seekers + +# 2. Skill aus beliebiger Quelle erstellen +skill-seekers create https://docs.django.com/ + +# 3. Fรผr Ihre KI-Plattform paketieren +skill-seekers package output/django --target claude +``` + +**Das war's!** Sie haben nun `output/django-claude.zip` einsatzbereit. + +```bash +# Einen anderen KI-Agenten fรผr die Verbesserung verwenden (Standard: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### KI-gestรผtzter Projekt-Scan (neu) + +Richten Sie `scan` auf ein beliebiges Projekt: Ein KI-Agent liest dessen Manifeste, README, +Dockerfile/CI und gesampelte Quellcode-Imports โ€” und erstellt dann eine Konfiguration pro +erkanntem Framework sowie eine `-codebase.json` fรผr Ihren eigenen Code. Die erkannte +Version wird festgehalten, sodass ein erneuter Lauf Versionssprรผnge meldet: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# AnschlieรŸend beliebige davon erstellen +skill-seekers create ./configs/scanned/react.json +``` + +Gibt es fรผr eine Erkennung kein vorhandenes Preset, generiert die KI eine neue Konfiguration; +beim Beenden kรถnnen Sie diese optional in die [Community-Registry](https://github.com/yusufkaraaslan/skill-seekers-configs) zurรผckverรถffentlichen. + +### Weitere Quellen (18 unterstรผtzt) + +```bash +# GitHub-Repository +skill-seekers create facebook/react + +# Lokales Projekt +skill-seekers create ./my-project + +# PDF-Dokument +skill-seekers create manual.pdf + +# Word-Dokument +skill-seekers create report.docx + +# EPUB-E-Book +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# OpenAPI-Spezifikation +skill-seekers create openapi.yaml + +# PowerPoint-Prรคsentation +skill-seekers create presentation.pptx + +# AsciiDoc-Dokument +skill-seekers create guide.adoc + +# Lokale HTML-Datei (automatisch anhand der Erweiterung erkannt) +skill-seekers create page.html + +# Ganzes Verzeichnis mit HTML-Dateien (automatisch erkannt bei HTML-dominanten Verzeichnissen) +skill-seekers create ./mirror_output/site/ + +# HTML-Modus fรผr gemischte/code-lastige Verzeichnisse erzwingen +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS-/Atom-Feed +skill-seekers create feed.rss + +# Man-Page +skill-seekers create curl.1 + +# Video (YouTube, Vimeo oder lokale Datei โ€” erfordert skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# Erstmalig? Automatische Installation GPU-bewusster visueller Abhรคngigkeiten: +skill-seekers create --setup + +# Confluence-Wiki +skill-seekers create --space-key TEAM --name wiki + +# Notion-Seiten +skill-seekers create --database-id ... --name docs + +# Slack-/Discord-Chatexport +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### รœberallhin exportieren + +```bash +# Fรผr mehrere Plattformen paketieren +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Was ist Skill Seekers? + +Skill Seekers ist die **Datenschicht fรผr KI-Systeme** und transformiert 18 Quelltypen โ€” Dokumentationswebsites, GitHub-Repositories, PDFs, Videos, Jupyter-Notebooks, Word-/EPUB-/AsciiDoc-Dokumente, OpenAPI/Swagger-Spezifikationen, PowerPoint-Prรคsentationen, RSS/Atom-Feeds, Man-Pages, Confluence-Wikis, Notion-Seiten, Slack-/Discord-Chatexporte und mehr โ€” in strukturierte Wissensressourcen fรผr jedes KI-Ziel: + +| Anwendungsfall | Ergebnis | Beispiele | +|----------------|----------|-----------| +| **KI-Skills** | Umfassende SKILL.md + Referenzdateien | Claude Code, Gemini, GPT | +| **RAG-Pipelines** | Dokumenten-Chunks mit reichhaltigen Metadaten | LangChain, LlamaIndex, Haystack | +| **Vektordatenbanken** | Vorformatierte, upload-bereite Daten | Pinecone, Chroma, Weaviate, FAISS | +| **KI-Programmierassistenten** | Kontextdateien, die Ihre IDE-KI automatisch liest | Cursor, Windsurf, Cline, Continue.dev | + +## Dokumentation + +| Ich mรถchte... | Lesen Sie dies | +|---------------|----------------| +| **Schnell loslegen** | [Schnellstart](docs/getting-started/02-quick-start.md) - 3 Befehle bis zum ersten Skill | +| **Konzepte verstehen** | [Kernkonzepte](docs/user-guide/01-core-concepts.md) - So funktioniert es | +| **Quellen scrapen** | [Scraping-Anleitung](docs/user-guide/02-scraping.md) - Alle Quelltypen | +| **Skills verbessern** | [Verbesserungs-Anleitung](docs/user-guide/03-enhancement.md) - KI-Verbesserung | +| **Skills exportieren** | [Paketierungs-Anleitung](docs/user-guide/04-packaging.md) - Plattform-Export | +| **Befehle nachschlagen** | [CLI-Referenz](docs/reference/CLI_REFERENCE.md) - Alle 20 Befehle | +| **Konfigurieren** | [Konfigurationsformat](docs/reference/CONFIG_FORMAT.md) - JSON-Spezifikation | +| **Probleme beheben** | [Fehlerbehebung](docs/user-guide/06-troubleshooting.md) - Hรคufige Probleme | + +**Vollstรคndige Dokumentation:** [docs/README.md](docs/README.md) + +Anstatt tagelange manuelle Vorverarbeitung durchzufรผhren, erledigt Skill Seekers dies: + +1. **Erfassen** โ€” Dokumentation, GitHub-Repos, lokale Codebasen, PDFs, Videos, Jupyter-Notebooks, Wikis und รผber 10 weitere Quelltypen +2. **Analysieren** โ€” Tiefgreifendes AST-Parsing, Mustererkennung, API-Extraktion +3. **Strukturieren** โ€” Kategorisierte Referenzdateien mit Metadaten +4. **Verbessern** โ€” KI-gestรผtzte SKILL.md-Generierung (Claude, Gemini oder lokal) +5. **Exportieren** โ€” 16 plattformspezifische Formate aus einer Ressource + +## Warum Skill Seekers nutzen? + +### Fรผr KI-Skill-Ersteller (Claude, Gemini, OpenAI) + +- **Produktionsreife Skills** โ€” รœber 500 Zeilen SKILL.md-Dateien mit Codebeispielen, Mustern und Anleitungen +- **Verbesserungsworkflows** โ€” `security-focus`, `architecture-comprehensive` oder eigene YAML-Presets anwenden +- **Jede Domรคne** โ€” Game-Engines (Godot, Unity), Frameworks (React, Django), interne Tools +- **Teamarbeit** โ€” Interne Dokumentation + Code zu einer einzigen Wissensquelle vereinen +- **Hohe Qualitรคt** โ€” KI-verbessert mit Beispielen, Kurzreferenz und Navigationshinweisen + +### Fรผr RAG-Entwickler und KI-Ingenieure + +- **RAG-fertige Daten** โ€” Vorgesplittete LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- **99 % schneller** โ€” Tage der Vorverarbeitung โ†’ 15โ€“45 Minuten +- **Intelligente Metadaten** โ€” Kategorien, Quellen, Typen โ†’ hรถhere Abrufgenauigkeit +- **Multi-Source** โ€” Dokumentation + GitHub + PDFs in einer Pipeline kombinieren +- **Plattformunabhรคngig** โ€” Export in jede Vektordatenbank oder jedes Framework ohne erneutes Scrapen + +### Fรผr KI-Programmierassistenten-Nutzer + +- **Cursor / Windsurf / Cline** โ€” `.cursorrules` / `.windsurfrules` / `.clinerules` automatisch generieren +- **Dauerhafter Kontext** โ€” Die KI โ€žkennt" Ihre Frameworks ohne wiederholtes Prompting +- **Immer aktuell** โ€” Kontext in Minuten aktualisieren, wenn sich die Dokumentation รคndert + +## Kernfunktionen + +### Dokumentations-Scraping +- **Intelligente SPA-Erkennung** - Dreischichtige Erkennung fรผr JavaScript-SPA-Websites (sitemap.xml โ†’ llms.txt โ†’ Headless-Browser-Rendering) +- **llms.txt-Unterstรผtzung** - Erkennt und nutzt automatisch LLM-bereite Dokumentationsdateien (10x schneller) +- **Universal-Scraper** - Funktioniert mit JEDER Dokumentationswebsite +- **Intelligente Kategorisierung** - Organisiert Inhalte automatisch nach Themen +- **Code-Spracherkennung** - Erkennt Python, JavaScript, C++, GDScript usw. +- **รœber 24 fertige Presets** - Godot, React, Vue, Django, FastAPI und mehr + +### PDF-Unterstรผtzung +- **Grundlegende PDF-Extraktion** - Text, Code und Bilder aus PDFs extrahieren +- **OCR fรผr gescannte PDFs** - Text aus gescannten Dokumenten extrahieren +- **Passwortgeschรผtzte PDFs** - Verschlรผsselte PDFs verarbeiten +- **Tabellenextraktion** - Komplexe Tabellen aus PDFs extrahieren +- **Parallelverarbeitung** - 3x schneller bei groรŸen PDFs +- **Intelligentes Caching** - 50 % schneller bei Wiederholungen + +### Videoextraktion +- **YouTube und lokale Videos** - Transkripte, Bildschirmcode und strukturiertes Wissen aus Videos extrahieren +- **Visuelle Frameanalyse** - OCR-Extraktion aus Code-Editoren, Terminals, Folien und Diagrammen +- **GPU-Autoerkennung** - Installiert automatisch den richtigen PyTorch-Build (CUDA/ROCm/MPS/CPU) +- **KI-Verbesserung** - Zwei Durchlรคufe: OCR-Artefakte bereinigen + ausgefeilte SKILL.md generieren +- **Zeitausschnitte** - Bestimmte Abschnitte mit `--start-time` und `--end-time` extrahieren +- **Playlist-Unterstรผtzung** - Alle Videos einer YouTube-Playlist stapelweise verarbeiten +- **Vision-API-Fallback** - Claude Vision fรผr OCR-Frames mit niedriger Konfidenz verwenden + +### GitHub-Repository-Analyse +- **Tiefgreifende Codeanalyse** - AST-Parsing fรผr Python, JavaScript, TypeScript, Java, C++, Go +- **API-Extraktion** - Funktionen, Klassen, Methoden mit Parametern und Typen +- **Repository-Metadaten** - README, Dateibaum, Sprachverteilung, Stars/Forks +- **GitHub Issues und PRs** - Offene/geschlossene Issues mit Labels und Meilensteinen abrufen +- **CHANGELOG und Releases** - Versionshistorie automatisch extrahieren +- **Konflikterkennung** - Dokumentierte APIs mit tatsรคchlicher Code-Implementierung vergleichen +- **MCP-Integration** - Natรผrliche Sprache: โ€žScrape GitHub Repo facebook/react" + +### Vereinheitlichtes Multi-Source-Scraping +- **Mehrere Quellen kombinieren** - Dokumentation + GitHub + PDF in einem Skill vereinen +- **Konflikterkennung** - Automatische Erkennung von Abweichungen zwischen Dokumentation und Code +- **Intelligentes Zusammenfรผhren** - Regelbasierte oder KI-gesteuerte Konfliktlรถsung +- **Transparente Berichte** - Nebeneinander-Vergleich mit Warnhinweisen +- **Dokumentationslรผckenanalyse** - Erkennt veraltete Dokumentation und undokumentierte Funktionen +- **Einzelne Wahrheitsquelle** - Ein Skill zeigt sowohl Absicht (Dokumentation) als auch Realitรคt (Code) +- **Abwรคrtskompatibel** - Bestehende Einzelquellen-Konfigurationen funktionieren weiterhin + +### Multi-LLM-Plattformunterstรผtzung +- **12 LLM-Plattformen** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Generisches Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- **Universelles Scraping** - Dieselbe Dokumentation funktioniert fรผr alle Plattformen +- **Plattformspezifische Paketierung** - Optimierte Formate fรผr jedes LLM +- **Ein-Befehl-Export** - `--target`-Flag wรคhlt die Plattform +- **Optionale Abhรคngigkeiten** - Nur installieren, was Sie benรถtigen +- **100 % abwรคrtskompatibel** - Bestehende Claude-Workflows bleiben unverรคndert + +| Plattform | Format | Upload | Verbesserung | API Key | Benutzerdefinierter Endpunkt | +|-----------|--------|--------|-------------|---------|------------------------------| +| **Claude AI** | ZIP + YAML | Auto | Ja | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | Auto | Ja | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | Auto | Ja | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | Auto | Ja | MINIMAX_API_KEY | - | +| **Generisches Markdown** | ZIP | Manuell | Nein | - | - | + +```bash +# Claude (Standard - keine ร„nderungen nรถtig!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Generisches Markdown (universeller Export) +skill-seekers package output/react/ --target markdown +# Die Markdown-Dateien direkt in jedem LLM verwenden +``` + +
+Eigenen KI-Anbieter verwenden (OpenAI-kompatible Endpunkte + Abonnements, keine Anthropic-Credits nรถtig) + +Der optionale KI-**Verbesserungsschritt** (verwendet von `create`, `scan` und `enhance`) erfordert **keinen** Anthropic-Key. Sie haben drei Mรถglichkeiten, ihn zu betreiben: + +**1. Ein Abonnement nutzen, das Sie bereits bezahlen โ€” ganz ohne API-Credits (LOCAL-Agentenmodus)** + +Skill Seekers kann eine Coding-Agent-CLI aufrufen, bei der Sie bereits angemeldet sind, sodass die Verbesserung รผber Ihren bestehenden Tarif lรคuft statt รผber abgerechnete API-Tokens: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ Ihr ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ Ihr Claude Pro/Max +``` + +Unterstรผtzte Agenten: `claude`, `codex`, `copilot`, `opencode`, `kimi` und `custom` +(kombinieren Sie `--agent custom` mit `--agent-cmd " ..."`, um jedes andere Tool anzusteuern). + +**2. Jeder OpenAI-kompatible Anbieter (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +Alle diese Anbieter stellen einen OpenAI-kompatiblen `/v1`-Endpunkt bereit. Richten Sie Skill Seekers mit drei Umgebungsvariablen darauf aus โ€” es erkennt `OPENAI_API_KEY`, und das OpenAI SDK berรผcksichtigt `OPENAI_BASE_URL` automatisch: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # Anbieter-Endpunkt (siehe Tabelle) +export OPENAI_MODEL="" # erforderlich โ€” der Standard gpt-4o existiert anderswo nicht +skill-seekers create +``` + +| Anbieter | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> Die Anbieter-Erkennung wรคhlt die **erste** gefundene API-Key-Umgebungsvariable (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Setzen Sie `SKILL_SEEKER_PROVIDER`, um einen bestimmten Anbieter zu erzwingen, oder stellen Sie sicher, dass die hรถher priorisierten Keys nicht gesetzt sind. + +**3. Claude-kompatible Endpunkte (z. B. GLM, Proxys)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) und Kimi/Moonshot (`MOONSHOT_API_KEY`) werden ebenfalls nativ unterstรผtzt. Die vollstรคndige Liste โ€” einschlieรŸlich anbieterspezifischer Modell-Overrides โ€” finden Sie in der **[Umgebungsvariablen-Referenz](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)**. + +
+ +**Installation:** +```bash +# Mit Gemini-Unterstรผtzung installieren +pip install skill-seekers[gemini] + +# Mit OpenAI-Unterstรผtzung installieren +pip install skill-seekers[openai] + +# Mit MiniMax-Unterstรผtzung installieren +pip install skill-seekers[minimax] + +# Mit allen LLM-Plattformen installieren +pip install skill-seekers[all-llms] +``` + +### RAG-Framework-Integrationen + +- **LangChain Documents** - Direkter Export ins `Document`-Format mit `page_content` + Metadaten + - Geeignet fรผr: QA-Chains, Retriever, Vektorspeicher, Agenten + - Beispiel: [LangChain RAG-Pipeline](examples/langchain-rag-pipeline/) + - Anleitung: [LangChain-Integration](docs/integrations/LANGCHAIN.md) + +- **LlamaIndex TextNodes** - Export ins `TextNode`-Format mit eindeutigen IDs + Embeddings + - Geeignet fรผr: Query Engines, Chat Engines, Storage Context + - Beispiel: [LlamaIndex Query Engine](examples/llama-index-query-engine/) + - Anleitung: [LlamaIndex-Integration](docs/integrations/LLAMA_INDEX.md) + +- **Pinecone-fertiges Format** - Optimiert fรผr Vektordatenbank-Upsert + - Geeignet fรผr: Produktions-Vektorsuche, semantische Suche, Hybridsuche + - Beispiel: [Pinecone Upsert](examples/pinecone-upsert/) + - Anleitung: [Pinecone-Integration](docs/integrations/PINECONE.md) + +**Schnellexport:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (Universal) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Vollstรคndige RAG-Pipeline-Anleitung:** [RAG-Pipelines-Dokumentation](docs/integrations/RAG_PIPELINES.md) + +--- + +### KI-Programmierassistenten-Integrationen + +Verwandeln Sie beliebige Framework-Dokumentation in Experten-Programmierkontext fรผr รผber 4 KI-Assistenten: + +- **Cursor IDE** - `.cursorrules` fรผr KI-gestรผtzte Codevorschlรคge generieren + - Geeignet fรผr: Framework-spezifische Codegenerierung, konsistente Muster + - Anleitung: [Cursor-Integration](docs/integrations/CURSOR.md) + - Beispiel: [Cursor React Skill](examples/cursor-react-skill/) + +- **Windsurf** - Windsurf-KI-Assistentenkontext mit `.windsurfrules` anpassen + - Geeignet fรผr: IDE-native KI-Unterstรผtzung, Flow-basiertes Programmieren + - Anleitung: [Windsurf-Integration](docs/integrations/WINDSURF.md) + - Beispiel: [Windsurf FastAPI Kontext](examples/windsurf-fastapi-context/) + +- **Cline (VS Code)** - System-Prompts + MCP fรผr VS Code Agenten + - Geeignet fรผr: Agentische Codegenerierung in VS Code + - Anleitung: [Cline-Integration](docs/integrations/CLINE.md) + - Beispiel: [Cline Django Assistent](examples/cline-django-assistant/) + +- **Continue.dev** - Kontextserver fรผr IDE-unabhรคngige KI + - Geeignet fรผr: Multi-IDE-Umgebungen (VS Code, JetBrains, Vim), benutzerdefinierte LLM-Anbieter + - Anleitung: [Continue-Integration](docs/integrations/CONTINUE_DEV.md) + - Beispiel: [Continue Universal Kontext](examples/continue-dev-universal/) + +**Schnellexport (fรผr KI-Programmiertools):** +```bash +# Fรผr jeden KI-Programmierassistenten (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude + +# In Ihr Projekt kopieren (Beispiel fรผr Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Oder fรผr Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Oder fรผr Cline +cp output/django-claude/SKILL.md my-project/.clinerules +``` + +**Integrations-Hub:** [Alle KI-System-Integrationen](docs/integrations/INTEGRATIONS.md) + +--- + +### Drei-Stream-GitHub-Architektur +- **Triple-Stream-Analyse** - GitHub-Repos in Code-, Dokumentations- und Insights-Streams aufteilen +- **Vereinheitlichter Codebase-Analyzer** - Funktioniert mit GitHub-URLs UND lokalen Pfaden +- **C3.x als Analysetiefe** - โ€žbasic" (1โ€“2 Min.) oder โ€žc3x" (20โ€“60 Min.) Analyse wรคhlen +- **Erweiterte Router-Generierung** - GitHub-Metadaten, README-Schnellstart, hรคufige Probleme +- **Issue-Integration** - Hรคufigste Probleme und Lรถsungen aus GitHub Issues +- **Intelligente Routing-Schlรผsselwรถrter** - GitHub-Labels 2x gewichtet fรผr bessere Themenerkennung + +**Drei Streams erklรคrt:** +- **Stream 1: Code** - Tiefgreifende C3.x-Analyse (Muster, Beispiele, Anleitungen, Konfigurationen, Architektur) +- **Stream 2: Dokumentation** - Repository-Dokumentation (README, CONTRIBUTING, docs/*.md) +- **Stream 3: Insights** - Community-Wissen (Issues, Labels, Stars, Forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# GitHub-Repo mit allen drei Streams analysieren +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # oder "basic" fรผr schnelle Analyse + fetch_github_metadata=True +) + +print(f"Design patterns: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Stars: {result.github_insights['metadata']['stars']}") +``` + +**Vollstรคndige Dokumentation**: [Drei-Stream-Implementierungszusammenfassung](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### Intelligentes Rate-Limit-Management und Konfiguration +- **Multi-Token-Konfigurationssystem** - Mehrere GitHub-Konten verwalten (Privat, Arbeit, Open Source) + - Sichere Konfigurationsspeicherung unter `~/.config/skill-seekers/config.json` (Berechtigung 600) + - Rate-Limit-Strategien pro Profil: `prompt`, `wait`, `switch`, `fail` + - Intelligente Fallback-Kette: CLI-Argument โ†’ Umgebungsvariable โ†’ Konfigurationsdatei โ†’ Abfrage +- **Interaktiver Konfigurationsassistent** - Ansprechende Terminal-UI fรผr einfache Einrichtung +- **Intelligenter Rate-Limit-Handler** - Kein endloses Warten mehr! + - Echtzeit-Countdown, automatischer Profilwechsel + - Vier Strategien: prompt (fragen), wait (Countdown), switch (wechseln), fail (abbrechen) +- **Wiederaufnahme-Funktion** - Unterbrochene Aufgaben fortsetzen +- **CI/CD-Unterstรผtzung** - `--non-interactive`-Flag fรผr Automatisierung + +**Schnelleinrichtung:** +```bash +# Einmalige Konfiguration (5 Minuten) +skill-seekers config --github + +# Spezifisches Profil fรผr private Repositories verwenden +skill-seekers create mycompany/private-repo --profile work + +# CI/CD-Modus (schnelles Abbrechen, keine Abfragen) +skill-seekers create owner/repo --non-interactive + +# Unterbrochenen Job fortsetzen +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Rate-Limit-Strategien erklรคrt:** +- **prompt** (Standard) - Fragt bei Erreichen des Limits, was zu tun ist (warten, wechseln, Token einrichten, abbrechen) +- **wait** - Wartet automatisch mit Countdown (respektiert das Timeout) +- **switch** - Versucht automatisch das nรคchste verfรผgbare Profil (fรผr Multi-Konto-Setups) +- **fail** - Bricht sofort mit klarer Fehlermeldung ab (ideal fรผr CI/CD) + +### Bootstrap-Skill - Selbst-Hosting + +Skill Seekers selbst als Skill generieren, um es innerhalb Ihres KI-Agenten zu verwenden (Claude Code, Kimi, Codex usw.): + +```bash +# Skill generieren +./scripts/bootstrap_skill.sh + +# In Claude Code installieren +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**Was Sie erhalten:** +- **Vollstรคndige Skill-Dokumentation** - Alle CLI-Befehle und Nutzungsmuster +- **CLI-Befehlsreferenz** - Jedes Tool und seine Optionen dokumentiert +- **Schnellstart-Beispiele** - Gรคngige Workflows und Best Practices +- **Auto-generierte API-Dokumentation** - Codeanalyse, Muster und Beispiele + +### Private Konfigurations-Repositories +- **Git-basierte Konfigurationsquellen** - Konfigurationen aus privaten/Team-Git-Repositories abrufen +- **Multi-Source-Verwaltung** - Unbegrenzte GitHub-, GitLab-, Bitbucket-Repositories registrieren +- **Team-Zusammenarbeit** - Benutzerdefinierte Konfigurationen in 3โ€“5-Personen-Teams teilen +- **Enterprise-Unterstรผtzung** - Skalierung auf 500+ Entwickler +- **Sichere Authentifizierung** - Umgebungsvariablen-Tokens (GITHUB_TOKEN, GITLAB_TOKEN) + +### Codebase-Analyse (C3.x) + +**C3.4: Konfigurationsmuster-Extraktion (mit KI-Verbesserung)** +- **9 Konfigurationsformate** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- **7 Mustertypen** - Datenbank-, API-, Logging-, Cache-, E-Mail-, Auth-, Server-Konfigurationen +- **KI-Verbesserung** - Optionale Dual-Modus-KI-Analyse (API + LOCAL) +- **Sicherheitsanalyse** - Hartcodierte Geheimnisse und offengelegte Anmeldedaten finden + +**C3.3: KI-verbesserte Anleitungen** +- **Umfassende KI-Verbesserung** - Grundanleitungen in professionelle Tutorials verwandeln +- **5 automatische Verbesserungen** - Schrittbeschreibungen, Fehlerbehebung, Voraussetzungen, nรคchste Schritte, Anwendungsfรคlle +- **Dual-Modus-Unterstรผtzung** - API-Modus (Claude API) oder LOCAL-Modus (Claude Code CLI) +- **LOCAL-Modus kostenlos** - Kostenlose Verbesserung mit Ihrem Claude Code Max Plan + +**Verwendung:** +```bash +# Schnellanalyse (1โ€“2 Minuten, nur Grundfunktionen) +skill-seekers scan tests/ --quick + +# Umfassende Analyse (mit KI, 20โ€“60 Minuten) +skill-seekers scan tests/ --comprehensive + +# Mit KI-Verbesserung +skill-seekers scan tests/ --enhance +``` + +**Vollstรคndige Dokumentation:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### Verbesserungs-Workflow-Presets + +Wiederverwendbare YAML-definierte Verbesserungspipelines, die steuern, wie KI Ihre Rohdokumentation in einen ausgefeilten Skill transformiert. + +- **5 mitgelieferte Presets** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- **Benutzerdefinierte Presets** โ€” Eigene Workflows unter `~/.config/skill-seekers/workflows/` hinzufรผgen +- **Mehrere Workflows** โ€” Zwei oder mehr Workflows in einem Befehl verketten +- **Vollstรคndige CLI-Verwaltung** โ€” Workflows auflisten, anzeigen, kopieren, hinzufรผgen, entfernen und validieren + +```bash +# Einzelnen Workflow anwenden +skill-seekers create ./my-project --enhance-workflow security-focus + +# Mehrere Workflows verketten (werden der Reihe nach angewendet) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# Presets verwalten +skill-seekers workflows list # Alle auflisten (mitgeliefert + benutzerdefiniert) +skill-seekers workflows show security-focus # YAML-Inhalt anzeigen +skill-seekers workflows copy security-focus # Zum Benutzerverzeichnis kopieren (zum Bearbeiten) +skill-seekers workflows add ./my-workflow.yaml # Benutzerdefiniertes Preset installieren +skill-seekers workflows remove my-workflow # Benutzerdefiniertes Preset entfernen +skill-seekers workflows validate security-focus # Preset-Struktur validieren + +# Mehrere gleichzeitig kopieren +skill-seekers workflows copy security-focus minimal api-documentation + +# Mehrere Dateien gleichzeitig hinzufรผgen +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Mehrere gleichzeitig entfernen +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML-Preset-Format:** +```yaml +name: security-focus +description: "Security-focused review: vulnerabilities, auth, data handling" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "Review for OWASP top 10 and common security vulnerabilities..." + - name: auth-review + type: custom + prompt: "Examine authentication and authorisation patterns..." + uses_history: true +``` + +### Leistung und Skalierung +- **Async-Modus** - 2โ€“3x schnelleres Scraping mit async/await (Flag `--async` verwenden) +- **Unterstรผtzung groรŸer Dokumentationen** - 10Kโ€“40K+ Seiten mit intelligentem Aufteilen verarbeiten +- **Router-/Hub-Skills** - Intelligentes Routing zu spezialisierten Sub-Skills +- **Paralleles Scraping** - Mehrere Skills gleichzeitig verarbeiten +- **Checkpoint/Wiederaufnahme** - Bei langen Scraping-Vorgรคngen nie den Fortschritt verlieren +- **Caching-System** - Einmal scrapen, sofort neu erstellen + +### Agenten-agnostische Skill-Generierung +- **Multi-Agenten-Unterstรผtzung** - Skills fรผr Claude, Kimi, Codex, Copilot, OpenCode oder beliebige eigene Agenten per `--agent`-Flag generieren +- **Eigene Agentenbefehle** - Mit `--agent-cmd` einen benutzerdefinierten Agenten-CLI-Befehl fรผr die Verbesserung angeben +- **Universelle Flags** - `--agent` und `--agent-cmd` sind in allen Befehlen verfรผgbar (create, scrape, github, pdf usw.) + +### Marketplace-Pipeline +- **Auf dem Marketplace verรถffentlichen** - Skills in Claude Code Plugin-Marketplace-Repos verรถffentlichen +- **End-to-End-Pipeline** - Von der Dokumentationsquelle bis zum verรถffentlichten Marketplace-Eintrag + +### Qualitรคtssicherung +- **Vollstรคndig getestet** - รœber 3.700 Tests mit umfassender Abdeckung + +--- + +## Installation + +```bash +# Basisinstallation (Dokumentations-Scraping, GitHub-Analyse, PDF, Paketierung) +pip install skill-seekers + +# Mit Unterstรผtzung aller LLM-Plattformen +pip install skill-seekers[all-llms] + +# Mit MCP-Server +pip install skill-seekers[mcp] + +# Alles +pip install skill-seekers[all] +``` + +**Hilfe bei der Auswahl nรถtig?** Starten Sie den Einrichtungsassistenten: +```bash +skill-seekers-setup +``` + +### Installationsoptionen + +| Installation | Funktionen | +|-------------|-----------| +| `pip install skill-seekers` | Scraping, GitHub-Analyse, PDF, alle Plattformen | +| `pip install skill-seekers[gemini]` | + Google Gemini-Unterstรผtzung | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT-Unterstรผtzung | +| `pip install skill-seekers[all-llms]` | + Alle LLM-Plattformen | +| `pip install skill-seekers[mcp]` | + MCP-Server | +| `pip install skill-seekers[video]` | + YouTube-/Vimeo-Transkript- und Metadatenextraktion | +| `pip install skill-seekers[video-full]` | + Whisper-Transkription und visuelle Frameextraktion | +| `pip install skill-seekers[jupyter]` | + Jupyter-Notebook-Unterstรผtzung | +| `pip install skill-seekers[pptx]` | + PowerPoint-Unterstรผtzung | +| `pip install skill-seekers[confluence]` | + Confluence-Wiki-Unterstรผtzung | +| `pip install skill-seekers[notion]` | + Notion-Seitenunterstรผtzung | +| `pip install skill-seekers[rss]` | + RSS-/Atom-Feed-Unterstรผtzung | +| `pip install skill-seekers[chat]` | + Slack-/Discord-Chatexport-Unterstรผtzung | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc-Dokumentunterstรผtzung | +| `pip install skill-seekers[all]` | Alles aktiviert | + +> **Visuelle Video-Abhรคngigkeiten (GPU-bewusst):** Nach der Installation von `skill-seekers[video-full]` fรผhren Sie +> `skill-seekers create --setup` aus, um Ihre GPU automatisch zu erkennen und die richtige PyTorch- +> Variante + easyocr zu installieren. Dies ist der empfohlene Weg zur Installation visueller Extraktionsabhรคngigkeiten. + +--- + +## Ein-Befehl-Installations-Workflow + +**Der schnellste Weg von der Konfiguration zum hochgeladenen Skill โ€” vollstรคndig automatisiert:** + +```bash +# React-Skill aus offiziellen Konfigurationen installieren (automatischer Upload zu Claude) +skill-seekers install --config react + +# Aus lokaler Konfigurationsdatei installieren +skill-seekers install --config configs/custom.json + +# Ohne Upload installieren (nur Paketierung) +skill-seekers install --config django --no-upload + +# Workflow ohne Ausfรผhrung in der Vorschau anzeigen +skill-seekers install --config react --dry-run +``` + +**Dauer:** 20โ€“45 Minuten insgesamt | **Qualitรคt:** Produktionsreif (9/10) | **Kosten:** Kostenlos + +**Ausgefรผhrte Phasen:** +``` +Phase 1: Konfiguration abrufen (falls Konfigurationsname angegeben) +Phase 2: Dokumentation scrapen +Phase 3: KI-Verbesserung (OBLIGATORISCH - kein รœberspringen mรถglich) +Phase 4: Skill paketieren +Phase 5: Zu Claude hochladen (optional, erfordert API Key) +``` + +**Voraussetzungen:** +- Umgebungsvariable ANTHROPIC_API_KEY (fรผr automatischen Upload) +- Claude Code Max Plan (fรผr lokale KI-Verbesserung), oder mit `--agent` einen anderen KI-Agenten auswรคhlen + +--- + +## Funktionsmatrix + +Skill Seekers unterstรผtzt **12 LLM-Plattformen**, **8 RAG-/Vektor-Ziele**, **18 Quelltypen** und vollstรคndige Funktionsparitรคt fรผr alle Ziele. + +**Plattformen:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Generisches Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**Quelltypen:** Dokumentationswebsites, GitHub-Repos, PDFs, Word (.docx), EPUB, Video, lokale Codebasen, Jupyter-Notebooks, lokales HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS-/Atom-Feeds, Man-Pages, Confluence-Wikis, Notion-Seiten, Slack-/Discord-Chatexporte + +Vollstรคndige Informationen finden Sie in der [vollstรคndigen Funktionsmatrix](docs/reference/FEATURE_MATRIX.md). + +### Schneller Plattformvergleich + +| Funktion | Claude | Gemini | OpenAI | MiniMax | Markdown | +|----------|--------|--------|--------|---------|----------| +| Format | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Upload | API | API | API | API | Manuell | +| Verbesserung | Sonnet 4 | 2.0 Flash | GPT-4o | M3 | Keine | +| Alle Skill-Modi | Ja | Ja | Ja | Ja | Ja | + +--- + +## Verwendungsbeispiele + +### Dokumentations-Scraping + +```bash +# Dokumentationswebsite scrapen +skill-seekers create --config configs/react.json + +# Schnelles Scraping (ohne Konfiguration) +skill-seekers create https://react.dev --name react + +# Mit Async-Modus (3x schneller) +skill-seekers create --config configs/godot.json --async --workers 8 + +# Einen bestimmten KI-Agenten fรผr die Verbesserung verwenden +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF-Extraktion + +```bash +# Grundlegende PDF-Extraktion +skill-seekers create --pdf docs/manual.pdf --name myskill + +# Erweiterte Funktionen +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Tabellen extrahieren + --parallel \ # Schnelle Parallelverarbeitung + --workers 8 # 8 CPU-Kerne verwenden + +# Gescannte PDFs (erfordert: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Videoextraktion + +```bash +# Video-Unterstรผtzung installieren +pip install skill-seekers[video] # Transkripte + Metadaten +pip install skill-seekers[video-full] # + Whisper-Transkription + visuelle Frameextraktion + +# GPU automatisch erkennen und visuelle Abhรคngigkeiten installieren (PyTorch + easyocr) +skill-seekers create --setup + +# Aus YouTube-Video extrahieren +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# Aus einer YouTube-Playlist extrahieren +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Aus einer lokalen Videodatei extrahieren +skill-seekers create --video-file recording.mp4 --name myrecording + +# Mit visueller Frameanalyse extrahieren (erfordert video-full-Abhรคngigkeiten) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# Mit KI-Verbesserung (OCR bereinigen + ausgefeilte SKILL.md generieren) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Bestimmten Abschnitt eines Videos ausschneiden (unterstรผtzt Sekunden, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# Vision API fรผr OCR-Frames mit niedriger Konfidenz verwenden (erfordert ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Skill aus zuvor extrahierten Daten neu erstellen (Download รผberspringen) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Vollstรคndige Anleitung:** Siehe [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) fรผr die vollstรคndige CLI-Referenz, +> Details zur visuellen Pipeline, KI-Verbesserungsoptionen und Fehlerbehebung. + +### GitHub-Repository-Analyse + +```bash +# Grundlegendes Repository-Scraping +skill-seekers create facebook/react + +# Mit Authentifizierung (hรถhere Rate-Limits) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Inhalte anpassen +skill-seekers create django/django \ + --include-issues \ # GitHub Issues extrahieren + --max-issues 100 \ # Issue-Anzahl begrenzen + --include-changelog # CHANGELOG.md extrahieren +``` + +### Vereinheitlichtes Multi-Source-Scraping + +**Dokumentation + GitHub + PDF zu einem vereinheitlichten Skill mit Konflikterkennung kombinieren:** + +```bash +# Vorhandene vereinheitlichte Konfigurationen verwenden +skill-seekers create --config configs/react_unified.json + +# Oder vereinheitlichte Konfiguration erstellen +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**Die Konflikterkennung findet automatisch:** +- **Im Code fehlend** (hoch): Dokumentiert, aber nicht implementiert +- **In der Dokumentation fehlend** (mittel): Implementiert, aber nicht dokumentiert +- **Signatur-Abweichung**: Unterschiedliche Parameter/Typen +- **Beschreibungs-Abweichung**: Unterschiedliche Erklรคrungen + +**Vollstรคndige Anleitung:** Siehe [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md). + +### Private Konfigurations-Repositories + +**Benutzerdefinierte Konfigurationen รผber private Git-Repositories im Team teilen:** + +```bash +# MCP-Tools verwenden, um das private Team-Repository zu registrieren +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Konfiguration aus dem Team-Repository abrufen +fetch_config(source="team", config_name="internal-api") +``` + +**Unterstรผtzte Plattformen:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Vollstรคndige Anleitung:** Siehe [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md). + +## Funktionsweise + +```mermaid +graph LR + A[Dokumentationswebsite] --> B[Skill Seekers] + B --> C[Scraper] + B --> D[KI-Verbesserung] + B --> E[Paketierer] + C --> F[Geordnete Referenzdateien] + D --> F + F --> E + E --> G[KI-Skill .zip] + G --> H[Upload zur KI-Plattform] +``` + +0. **llms.txt erkennen** - Prรผft zuerst auf llms-full.txt, llms.txt, llms-small.txt (Teil der intelligenten SPA-Erkennung) +1. **Scrapen**: Alle Seiten aus der Dokumentation extrahieren +2. **Kategorisieren**: Inhalte nach Themen organisieren (API, Anleitungen, Tutorials usw.) +3. **Verbessern**: KI analysiert Dokumente und erstellt umfassende SKILL.md mit Beispielen (unterstรผtzt mehrere Agenten via `--agent`) +4. **Paketieren**: Alles in eine plattformfertige `.zip`-Datei bรผndeln + +## Architektur + +Das System ist in **8 Kernmodule** und **5 Hilfsmodule** organisiert (~200 Klassen insgesamt): + +![Paketรผbersicht](docs/UML/exports/00_package_overview.png) + +| Modul | Zweck | Wichtige Klassen | +|-------|-------|------------------| +| **CLICore** | Git-artiger Befehls-Dispatcher | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 Quelltyp-Extraktoren | `DocToSkillConverter`, `DocumentSkillBuilder` (gemeinsame Build-Schicht), `UnifiedScraper` | +| **Adaptors** | 20+ Ausgabeplattform-Formate | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | C3.x-Codebase-Analysepipeline | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 GoF-Detektoren | +| **Enhancement** | KI-gestรผtzte Skill-Verbesserung via `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Skills paketieren, hochladen, installieren | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP-Server (40 Tools) | `SkillSeekerMCPServer`, 10 Tool-Module | +| **Sync** | Erkennung von Dokumentationsรคnderungen | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Hilfsmodule: **Parsers** (28 CLI-Parser), **Storage** (S3/GCS/Azure), **Embedding** (Multi-Provider-Vektoren), **Benchmark** (Performance), **Utilities** (16 gemeinsame Helfer). + +Vollstรคndige UML-Diagramme: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML-Projekt: `docs/UML/skill_seekers.mdj` | HTML-API-Referenz: `docs/UML/html/` + +## Voraussetzungen + +**Bevor Sie beginnen, stellen Sie sicher, dass Sie Folgendes haben:** + +1. **Python 3.10 oder hรถher** - [Herunterladen](https://www.python.org/downloads/) | Prรผfen: `python3 --version` +2. **Git** - [Herunterladen](https://git-scm.com/) | Prรผfen: `git --version` +3. **15โ€“30 Minuten** fรผr die erstmalige Einrichtung + +**Erstmalig hier?** โ†’ **[Starten Sie hier: Narrensichere Schnellstartanleitung](BULLETPROOF_QUICKSTART.md)** + +--- + +## Skills zu Claude hochladen + +Sobald Ihr Skill paketiert ist, mรผssen Sie ihn zu Claude hochladen: + +### Option 1: Automatischer Upload (API-basiert) + +```bash +# API Key setzen (einmalig) +export ANTHROPIC_API_KEY=sk-ant-... + +# Paketieren und automatisch hochladen +skill-seekers package output/react/ --upload + +# ODER vorhandene .zip hochladen +skill-seekers upload output/react.zip +``` + +### Option 2: Manueller Upload (ohne API Key) + +```bash +# Skill paketieren +skill-seekers package output/react/ +# โ†’ Erstellt output/react.zip + +# Dann manuell hochladen: +# - Gehen Sie zu https://claude.ai/skills +# - Klicken Sie auf โ€žSkill hochladen" +# - Wรคhlen Sie output/react.zip +``` + +### Option 3: MCP (Claude Code) + +``` +In Claude Code einfach fragen: +"Paketiere und lade den React-Skill hoch" +``` + +--- + +## Installation fรผr KI-Agenten + +Skill Seekers kann Skills automatisch fรผr 19 KI-Programmieragenten installieren. + +```bash +# Fรผr einen bestimmten Agenten installieren +skill-seekers install-agent output/react/ --agent cursor + +# Fรผr IBM Bob installieren (projektlokal: .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Fรผr alle Agenten gleichzeitig installieren +skill-seekers install-agent output/react/ --agent all + +# Vorschau ohne Installation +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Unterstรผtzte Agenten + +| Agent | Pfad | Typ | +|-------|------|-----| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Projekt | +| **VS Code / Copilot** | `.github/skills/` | Projekt | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Projekt | +| **Cline** | `.cline/skills/` | Projekt | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Projekt | +| **Kilo Code** | `.kilo/skills/` | Projekt | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Projekt | + +--- + +## MCP-Integration (40 Tools) + +Skill Seekers liefert einen MCP-Server fรผr die Verwendung mit Claude Code, Cursor, Windsurf, VS Code + Cline oder IntelliJ IDEA. + +```bash +# stdio-Modus (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# HTTP-Modus (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Alle Agenten automatisch konfigurieren +./setup_mcp.sh +``` + +**Alle 40 verfรผgbaren Tools:** +- **Kern (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **Erweitert (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Vektordatenbank (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Cloud (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**Vollstรคndige Anleitung:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## Konfiguration + +### Verfรผgbare Presets (24+) + +```bash +# Alle Presets auflisten +# skill-seekers list-configs # In v3.7.0 nicht verfรผgbar +``` + +| Kategorie | Presets | +|-----------|---------| +| **Web-Frameworks** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Spieleentwicklung** | `godot`, `pygame`, `unity` | +| **Tools und DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **Vereinheitlicht (Doku + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` u. a. | + +### Eigene Konfiguration erstellen + +```bash +# Option 1: Interaktiv +skill-seekers create --interactive + +# Option 2: Preset kopieren und bearbeiten +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Konfigurationsdatei-Struktur + +```json +{ + "name": "myframework", + "description": "When to use this skill", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Speicherorte fรผr Konfigurationen + +Das Tool sucht in dieser Reihenfolge: +1. Exakter Pfad wie angegeben +2. `./configs/` (aktuelles Verzeichnis) +3. `~/.config/skill-seekers/configs/` (Benutzerkonfigurationsverzeichnis) +4. SkillSeekersWeb.com API (Preset-Konfigurationen) + +--- + +## Was wird erstellt + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Gescrapte Rohdaten +โ”‚ โ”œโ”€โ”€ pages/ # JSON-Dateien (eine pro Seite) +โ”‚ โ””โ”€โ”€ summary.json # รœbersicht +โ”‚ +โ””โ”€โ”€ godot/ # Der Skill + โ”œโ”€โ”€ SKILL.md # Verbessert mit echten Beispielen + โ”œโ”€โ”€ references/ # Kategorisierte Dokumentation + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # Leer (eigene hinzufรผgen) + โ””โ”€โ”€ assets/ # Leer (eigene hinzufรผgen) +``` + +--- + +## Fehlerbehebung + +### Kein Inhalt extrahiert? +- รœberprรผfen Sie Ihren `main_content`-Selektor +- Versuchen Sie: `article`, `main`, `div[role="main"]` + +### Daten vorhanden, aber werden nicht verwendet? +```bash +# Erneutes Scraping erzwingen +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### Kategorien nicht gut? +Bearbeiten Sie den `categories`-Abschnitt in der Konfiguration mit besseren Schlรผsselwรถrtern. + +### Dokumentation aktualisieren? +```bash +# Alte Daten lรถschen und erneut scrapen +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### Verbesserung funktioniert nicht? +```bash +# Prรผfen, ob API Key gesetzt ist +echo $ANTHROPIC_API_KEY + +# LOCAL-Modus versuchen (nutzt Claude Code Max, kein API Key nรถtig) +skill-seekers enhance output/react/ --mode LOCAL + +# Hintergrund-Verbesserungsstatus รผberwachen +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub-Rate-Limit-Probleme? +```bash +# GitHub Token setzen (5000 Anfragen/Stunde vs. 60/Stunde anonym) +export GITHUB_TOKEN=ghp_your_token_here + +# Oder mehrere Profile konfigurieren +skill-seekers config --github +``` + +--- + +## Leistung + +| Aufgabe | Dauer | Hinweise | +|---------|-------|----------| +| Scraping (synchron) | 15โ€“45 Min. | Nur beim ersten Mal, thread-basiert | +| Scraping (asynchron) | 5โ€“15 Min. | 2โ€“3x schneller mit `--async`-Flag | +| Erstellen | 1โ€“3 Min. | Schneller Neuaufbau aus Cache | +| Neuerstellen | <1 Min. | Mit `--skip-scrape` | +| Verbesserung (LOCAL) | 30โ€“60 Sek. | Nutzt Claude Code Max | +| Verbesserung (API) | 20โ€“40 Sek. | Erfordert API Key | +| Video (Transkript) | 1โ€“3 Min. | YouTube/lokal, nur Transkript | +| Video (visuell) | 5โ€“15 Min. | + OCR-Frameextraktion | +| Paketierung | 5โ€“10 Sek. | Finale .zip-Erstellung | + +--- + +## Neu in v3.6.0 + +### Workflow-Presets +Analysetiefe mit `--preset` steuern: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Schnell, oberflรคchlich +skill-seekers create https://docs.react.dev/ --preset standard # Ausgewogen (Standard) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Tiefgehend, erschรถpfend +``` + +### Lifecycle-Flags +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Vorschau ohne Scraping +skill-seekers create https://docs.react.dev/ --fresh # Cache ignorieren, vollstรคndiges Re-Scraping +skill-seekers create https://docs.react.dev/ --resume # Unterbrochenen Job fortsetzen +skill-seekers create https://docs.react.dev/ --skip-scrape # Bestehende Ausgabe neu paketieren +``` + +### Health Check & Utilities +```bash +skill-seekers doctor # Installation & Umgebung diagnostizieren +skill-seekers sync-config # Konfigurationsabweichung erkennen +skill-seekers stream # Streaming-Ingestion fรผr groรŸe Dokumentationen +skill-seekers update output/react/ # Inkrementelles Update +skill-seekers multilang # Mehrsprachige Skill-Generierung +skill-seekers quality output/react/ # Qualitรคtsbericht (mit --threshold 7 als Gate: Exit-Code ungleich null unter 7/10) +``` + +### RAG-Chunking-Optionen (package) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Marketplace-Verรถffentlichung +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Weitere optionale Abhรคngigkeiten +| Extra | Installation | Zweck | +|-------|--------------|-------| +| `browser` | `pip install "skill-seekers[browser]"` | Headless Playwright fรผr SPA-Websites | +| `embedding` | `pip install "skill-seekers[embedding]"` | Embedding-Server-Unterstรผtzung | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` usw. | Cloud-Storage-Upload | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | Kombinierte Vektordatenbank-Upload-Abhรคngigkeiten | + +--- + +## Dokumentation + +### Erste Schritte +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - **Neue Nutzer starten hier!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Schnellstart fรผr erfahrene Nutzer +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Hรคufige Probleme und Lรถsungen +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - Einseiter-Kurzreferenz + +### Architektur +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - UML-Architekturรผbersicht mit 14 Diagrammen +- **[docs/UML/exports/](docs/UML/exports/)** - PNG-Diagramm-Exporte (Paketรผbersicht + 13 Klassendiagramme) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Vollstรคndige HTML-API-Referenz (alle Klassen, Operationen, Attribute) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML-Projektdatei (mit [StarUML](https://staruml.io/) รถffnen) + +### Anleitungen +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - 10Kโ€“40K+ Seiten verarbeiten +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - KI-Verbesserungsmodi-Anleitung +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP-Integrations-Einrichtung +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - Multi-Source-Scraping +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Vollstรคndige Videoextraktions-Anleitung + +### Integrationsanleitungen +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - Alle RAG-Pipelines + +--- + +## Lizenz + +MIT-Lizenz - siehe [LICENSE](LICENSE)-Datei fรผr Details + +--- + +Viel Erfolg beim Erstellen von Skills! + +--- + +## Sicherheit + +[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## Sponsoren + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” eine vollmodale, OpenAI-kompatible KI-Inferenzplattform. Skill Seekers unterstรผtzt sie als Paketierungs-/Verbesserungsziel via `--target atlas` mit `ATLAS_API_KEY`. diff --git a/README.es.md b/README.es.md new file mode 100644 index 0000000..b9a0ec0 --- /dev/null +++ b/README.es.md @@ -0,0 +1,1380 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | Espaรฑol | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **Aviso de traducciรณn automรกtica** +> +> Este documento ha sido traducido automรกticamente por IA. Aunque nos esforzamos por garantizar la calidad, pueden existir expresiones inexactas. +> +> ยกAyรบdanos a mejorar la traducciรณn a travรฉs de [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260)! Tu retroalimentaciรณn es muy valiosa para nosotros. + +[![Versiรณn](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![Licencia: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![Integraciรณn MCP](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Tests aprobados](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Tablero del proyecto](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![Versiรณn PyPI](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Descargas](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Versiรณn de Python](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![Sitio web](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Seguir en Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![Estrellas en GitHub](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  La capa de datos para sistemas de IA.** Skill Seekers convierte sitios de documentaciรณn, repositorios de GitHub, PDFs, videos, notebooks, wikis y mรกs de 10 tipos de fuentes adicionales en activos de conocimiento estructurado, listos para potenciar AI Skills (Claude, Gemini, OpenAI), pipelines RAG (LangChain, LlamaIndex, Pinecone) y asistentes de programaciรณn con IA (Cursor, Windsurf, Cline) en minutos, no en horas. + +> ๐ŸŒ **[Visita SkillSeekersWeb.com](https://skillseekersweb.com/)** - ยกExplora mรกs de 24 configuraciones predefinidas, comparte tus configuraciones y accede a la documentaciรณn completa! + +> ๐Ÿ“‹ **[Ver hoja de ruta y tareas de desarrollo](https://github.com/users/yusufkaraaslan/projects/2)** - ยก134 tareas en 10 categorรญas, elige cualquiera para contribuir! + +## ๐ŸŒ Ecosistema + +Skill Seekers es un proyecto multi-repositorio. Aquรญ es donde vive todo: + +| Repositorio | Descripciรณn | Enlaces | +|------------|-------------|---------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | CLI principal y servidor MCP (este repo) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Sitio web y documentaciรณn | [Web](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Repositorio de configuraciones comunitarias | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action para CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Plugin para Claude Code | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap para macOS | | + +> **ยฟQuieres contribuir?** ยกLos repos del sitio web y configuraciones son excelentes puntos de partida para nuevos colaboradores! + +## ๐Ÿง  La capa de datos para sistemas de IA + +**Skill Seekers es la capa universal de preprocesamiento** que se ubica entre la documentaciรณn sin procesar y cada sistema de IA que la consume. Ya sea que estรฉs construyendo Claude Skills, un pipeline RAG con LangChain o un archivo `.cursorrules` para Cursor, la preparaciรณn de datos es idรฉntica. Lo haces una vez y exportas a todos los destinos. + +```bash +# Un comando โ†’ activo de conocimiento estructurado +skill-seekers create https://docs.react.dev/ +# o: skill-seekers create facebook/react +# o: skill-seekers create ./my-project + +# Exportar a cualquier sistema de IA +skill-seekers package output/react --target claude # โ†’ Claude AI Skill (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ Directorio de skill IBM Bob +``` + +### Lo que se genera + +| Salida | Destino | Para quรฉ sirve | +|--------|---------|-----------------| +| **Claude Skill** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini Skill** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, asistentes personalizados | +| **LangChain Documents** | `--target langchain` | Cadenas QA, agentes, recuperadores | +| **LlamaIndex TextNodes** | `--target llama-index` | Motores de consulta, motores de chat | +| **Haystack Documents** | `--target haystack` | Pipelines RAG empresariales | +| **Pinecone-ready** (Markdown) | `--target markdown` | Carga de vectores | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Bases de datos vectoriales locales | +| **IBM Bob Skill** (directorio) | `--target ibm-bob` | Skills de proyecto/globales de IBM Bob | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ copiar SKILL.md | `.cursorrules` del IDE Cursor | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ copiar | VS Code, IntelliJ, Vim | + +### Por quรฉ es importante + +- โšก **99% mรกs rรกpido** โ€” Dรญas de preparaciรณn manual โ†’ 15โ€“45 minutos +- ๐ŸŽฏ **Calidad de AI Skill** โ€” Archivos SKILL.md de mรกs de 500 lรญneas con ejemplos, patrones y guรญas +- ๐Ÿ“Š **Fragmentos listos para RAG** โ€” Fragmentaciรณn inteligente que preserva bloques de cรณdigo y mantiene el contexto +- ๐ŸŽฌ **Videos** โ€” Extrae cรณdigo, transcripciones y conocimiento estructurado de YouTube y videos locales +- ๐Ÿ”„ **Multi-fuente** โ€” Combina 18 tipos de fuentes (docs, GitHub, PDFs, videos, notebooks, wikis y mรกs) en un solo activo de conocimiento +- ๐ŸŒ **Una preparaciรณn, todos los destinos** โ€” Exporta el mismo activo a 21 plataformas sin volver a extraer +- โœ… **Probado en producciรณn** โ€” Mรกs de 3.700 tests, mรกs de 24 presets de frameworks, listo para producciรณn + +## ๐Ÿš€ Inicio rรกpido (3 comandos) + +```bash +# 1. Instalar +pip install skill-seekers + +# 2. Crear skill desde cualquier fuente +skill-seekers create https://docs.django.com/ + +# 3. Empaquetar para tu plataforma de IA +skill-seekers package output/django --target claude +``` + +**ยกEso es todo!** Ahora tienes `output/django-claude.zip` listo para usar. + +```bash +# Usar un agente de IA diferente para la mejora (predeterminado: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ Escaneo de proyecto con IA (nuevo) + +Apunta `scan` a cualquier proyecto y un agente de IA lee sus manifiestos, README, +Dockerfile/CI e imports muestreados del cรณdigo fuente โ€” luego genera una configuraciรณn +por framework detectado mรกs un `-codebase.json` para tu propio cรณdigo. Fija la +versiรณn detectada, de modo que volver a ejecutarlo reporta los cambios de versiรณn: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# Luego construye cualquiera de ellas +skill-seekers create ./configs/scanned/react.json +``` + +Si una detecciรณn no tiene un preset existente, la IA genera una configuraciรณn nueva; +al salir puedes publicarla opcionalmente en el [registro comunitario](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### Otras fuentes (18 soportadas) + +```bash +# Repositorio de GitHub +skill-seekers create facebook/react + +# Proyecto local +skill-seekers create ./my-project + +# Documento PDF +skill-seekers create manual.pdf + +# Documento Word +skill-seekers create report.docx + +# Libro electrรณnico EPUB +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# Especificaciรณn OpenAPI +skill-seekers create openapi.yaml + +# Presentaciรณn PowerPoint +skill-seekers create presentation.pptx + +# Documento AsciiDoc +skill-seekers create guide.adoc + +# Archivo HTML local (auto-detectado por la extensiรณn) +skill-seekers create page.html + +# Directorio completo de archivos HTML (auto-detectado para directorios predominantemente HTML) +skill-seekers create ./mirror_output/site/ + +# Forzar modo HTML en un directorio mixto/con mucho cรณdigo +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# Feed RSS/Atom +skill-seekers create feed.rss + +# Pรกgina de manual +skill-seekers create curl.1 + +# Video (YouTube, Vimeo o archivo local โ€” requiere skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ยฟPrimera vez? Instala automรกticamente las dependencias visuales con detecciรณn de GPU: +skill-seekers create --setup + +# Wiki de Confluence +skill-seekers create --space-key TEAM --name wiki + +# Pรกginas de Notion +skill-seekers create --database-id ... --name docs + +# Exportaciรณn de chat de Slack/Discord +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### Exportar a todas partes + +```bash +# Empaquetar para mรบltiples plataformas +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## ยฟQuรฉ es Skill Seekers? + +Skill Seekers es la **capa de datos para sistemas de IA**. Transforma 18 tipos de fuentes โ€”sitios web de documentaciรณn, repositorios de GitHub, PDFs, videos, Jupyter Notebooks, documentos Word/EPUB/AsciiDoc, especificaciones OpenAPI, presentaciones PowerPoint, feeds RSS, pรกginas de manual, wikis de Confluence, pรกginas de Notion, exportaciones de Slack/Discord y mรกsโ€” en activos de conocimiento estructurado para cualquier destino de IA: + +| Caso de uso | Lo que obtienes | Ejemplos | +|-------------|-----------------|----------| +| **AI Skills** | SKILL.md completo + referencias | Claude Code, Gemini, GPT | +| **Pipelines RAG** | Documentos fragmentados con metadatos enriquecidos | LangChain, LlamaIndex, Haystack | +| **Bases de datos vectoriales** | Datos pre-formateados listos para carga | Pinecone, Chroma, Weaviate, FAISS | +| **Asistentes de programaciรณn con IA** | Archivos de contexto que tu IDE IA lee automรกticamente | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š Documentaciรณn + +| Quiero... | Lee esto | +|-----------|----------| +| **Empezar rรกpidamente** | [Inicio rรกpido](docs/getting-started/02-quick-start.md) - 3 comandos hasta tu primer skill | +| **Entender los conceptos** | [Conceptos fundamentales](docs/user-guide/01-core-concepts.md) - Cรณmo funciona | +| **Extraer fuentes** | [Guรญa de extracciรณn](docs/user-guide/02-scraping.md) - Todos los tipos de fuentes | +| **Mejorar skills** | [Guรญa de mejora](docs/user-guide/03-enhancement.md) - Mejora con IA | +| **Exportar skills** | [Guรญa de empaquetado](docs/user-guide/04-packaging.md) - Exportaciรณn a plataformas | +| **Consultar comandos** | [Referencia CLI](docs/reference/CLI_REFERENCE.md) - Los 20 comandos | +| **Configurar** | [Formato de configuraciรณn](docs/reference/CONFIG_FORMAT.md) - Especificaciรณn JSON | +| **Resolver problemas** | [Soluciรณn de problemas](docs/user-guide/06-troubleshooting.md) - Problemas comunes | + +**Documentaciรณn completa:** [docs/README.md](docs/README.md) + +En lugar de pasar dรญas en preprocesamiento manual, Skill Seekers: + +1. **Ingesta** โ€” documentaciรณn, repositorios de GitHub, bases de cรณdigo locales, PDFs, videos, notebooks, wikis y mรกs de 10 tipos de fuentes adicionales +2. **Analiza** โ€” anรกlisis profundo AST, detecciรณn de patrones, extracciรณn de APIs +3. **Estructura** โ€” archivos de referencia categorizados con metadatos +4. **Mejora** โ€” generaciรณn de SKILL.md potenciada por IA (Claude, Gemini o local) +5. **Exporta** โ€” 16 formatos especรญficos por plataforma desde un solo activo + +## ยฟPor quรฉ usar Skill Seekers? + +### Para constructores de AI Skills (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **Skills de nivel producciรณn** โ€” Archivos SKILL.md de mรกs de 500 lรญneas con ejemplos de cรณdigo, patrones y guรญas +- ๐Ÿ”„ **Flujos de mejora** โ€” Aplica presets como `security-focus`, `architecture-comprehensive` o YAML personalizados +- ๐ŸŽฎ **Cualquier dominio** โ€” Motores de juegos (Godot, Unity), frameworks (React, Django), herramientas internas +- ๐Ÿ”ง **Equipos** โ€” Combina documentaciรณn interna + cรณdigo en una รบnica fuente de verdad +- ๐Ÿ“š **Calidad** โ€” Mejorado con IA, incluye ejemplos, referencia rรกpida y guรญa de navegaciรณn + +### Para constructores de RAG e ingenieros de IA + +- ๐Ÿค– **Datos listos para RAG** โ€” `Documents` de LangChain, `TextNodes` de LlamaIndex y `Documents` de Haystack pre-fragmentados +- ๐Ÿš€ **99% mรกs rรกpido** โ€” Dรญas de preprocesamiento โ†’ 15โ€“45 minutos +- ๐Ÿ“Š **Metadatos inteligentes** โ€” Categorรญas, fuentes, tipos โ†’ mayor precisiรณn en la recuperaciรณn +- ๐Ÿ”„ **Multi-fuente** โ€” Combina docs + GitHub + PDFs + videos en un solo pipeline +- ๐ŸŒ **Agnรณstico de plataforma** โ€” Exporta a cualquier base de datos vectorial o framework sin volver a extraer + +### Para usuarios de asistentes de programaciรณn con IA + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” Genera `.cursorrules` / `.windsurfrules` / `.clinerules` automรกticamente +- ๐ŸŽฏ **Contexto persistente** โ€” La IA "conoce" tus frameworks sin necesidad de repetir prompts +- ๐Ÿ“š **Siempre actualizado** โ€” Actualiza el contexto en minutos cuando cambia la documentaciรณn + +## Funcionalidades clave + +### ๐ŸŒ Extracciรณn de documentaciรณn +- โœ… **Descubrimiento SPA inteligente** - Descubrimiento en tres capas para sitios SPA con JavaScript (sitemap.xml โ†’ llms.txt โ†’ renderizado con navegador headless) +- โœ… **Soporte para llms.txt** - Detecta y usa automรกticamente archivos de documentaciรณn optimizados para LLM (10 veces mรกs rรกpido) +- โœ… **Scraper universal** - Funciona con CUALQUIER sitio web de documentaciรณn +- โœ… **Categorizaciรณn inteligente** - Organiza automรกticamente el contenido por tema +- โœ… **Detecciรณn de lenguajes de cรณdigo** - Reconoce Python, JavaScript, C++, GDScript, etc. +- โœ… **Mรกs de 24 presets listos para usar** - Godot, React, Vue, Django, FastAPI y mรกs + +### ๐Ÿ“„ Soporte para PDF +- โœ… **Extracciรณn bรกsica de PDF** - Extrae texto, cรณdigo e imรกgenes de archivos PDF +- โœ… **OCR para PDFs escaneados** - Extrae texto de documentos escaneados +- โœ… **PDFs protegidos con contraseรฑa** - Maneja PDFs cifrados +- โœ… **Extracciรณn de tablas** - Extrae tablas complejas de PDFs +- โœ… **Procesamiento en paralelo** - 3 veces mรกs rรกpido para PDFs grandes +- โœ… **Cachรฉ inteligente** - 50% mรกs rรกpido en ejecuciones posteriores + +### ๐ŸŽฌ Extracciรณn de video +- โœ… **YouTube y videos locales** - Extrae transcripciones, cรณdigo en pantalla y conocimiento estructurado de videos +- โœ… **Anรกlisis visual de fotogramas** - Extracciรณn OCR de editores de cรณdigo, terminales, diapositivas y diagramas +- โœ… **Detecciรณn automรกtica de GPU** - Instala automรกticamente la compilaciรณn correcta de PyTorch (CUDA/ROCm/MPS/CPU) +- โœ… **Mejora con IA** - Dos pasadas: limpieza de artefactos OCR + generaciรณn de SKILL.md pulido +- โœ… **Recorte temporal** - Extrae secciones especรญficas con `--start-time` y `--end-time` +- โœ… **Soporte para listas de reproducciรณn** - Procesa por lotes todos los videos de una lista de reproducciรณn de YouTube +- โœ… **Respaldo con Vision API** - Usa Claude Vision para fotogramas OCR de baja confianza + +### ๐Ÿ™ Anรกlisis de repositorios de GitHub +- โœ… **Anรกlisis profundo de cรณdigo** - Anรกlisis AST para Python, JavaScript, TypeScript, Java, C++, Go +- โœ… **Extracciรณn de APIs** - Funciones, clases, mรฉtodos con parรกmetros y tipos +- โœ… **Metadatos del repositorio** - README, รกrbol de archivos, desglose de lenguajes, estrellas/forks +- โœ… **GitHub Issues y PRs** - Obtiene issues abiertos/cerrados con etiquetas e hitos +- โœ… **CHANGELOG y releases** - Extrae automรกticamente el historial de versiones +- โœ… **Detecciรณn de conflictos** - Compara APIs documentadas vs. implementaciรณn real del cรณdigo +- โœ… **Integraciรณn MCP** - Lenguaje natural: "Extrae el repositorio de GitHub facebook/react" + +### ๐Ÿ”„ Extracciรณn unificada multi-fuente +- โœ… **Combina mรบltiples fuentes** - Mezcla documentaciรณn + GitHub + PDF en un solo skill +- โœ… **Detecciรณn de conflictos** - Encuentra automรกticamente discrepancias entre docs y cรณdigo +- โœ… **Fusiรณn inteligente** - Resoluciรณn de conflictos basada en reglas o potenciada por IA +- โœ… **Informes transparentes** - Comparaciรณn lado a lado con advertencias โš ๏ธ +- โœ… **Anรกlisis de brechas en documentaciรณn** - Identifica docs obsoletos y funcionalidades no documentadas +- โœ… **Fuente รบnica de verdad** - Un solo skill que muestra tanto la intenciรณn (docs) como la realidad (cรณdigo) +- โœ… **Compatible con versiones anteriores** - Las configuraciones de fuente รบnica legacy siguen funcionando + +### ๐Ÿค– Soporte para mรบltiples plataformas LLM +- โœ… **12 plataformas LLM** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown genรฉrico, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **Extracciรณn universal** - La misma documentaciรณn funciona para todas las plataformas +- โœ… **Empaquetado especรญfico por plataforma** - Formatos optimizados para cada LLM +- โœ… **Exportaciรณn con un solo comando** - El flag `--target` selecciona la plataforma +- โœ… **Dependencias opcionales** - Instala solo lo que necesitas +- โœ… **100% compatible con versiones anteriores** - Los flujos de trabajo existentes de Claude no cambian + +| Plataforma | Formato | Carga | Mejora | API Key | Endpoint personalizado | +|------------|---------|-------|--------|---------|------------------------| +| **Claude AI** | ZIP + YAML | โœ… Automรกtica | โœ… Sรญ | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… Automรกtica | โœ… Sรญ | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… Automรกtica | โœ… Sรญ | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… Automรกtica | โœ… Sรญ | MINIMAX_API_KEY | - | +| **Markdown genรฉrico** | ZIP | โŒ Manual | โŒ No | - | - | + +```bash +# Claude (predeterminado - ยกsin cambios necesarios!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Markdown genรฉrico (exportaciรณn universal) +skill-seekers package output/react/ --target markdown +# Usa los archivos markdown directamente en cualquier LLM +``` + +
+๐Ÿ”ง Usa tu propio proveedor de IA (endpoints compatibles con OpenAI + suscripciones, sin necesidad de crรฉditos de Anthropic) + +El paso opcional de **mejora** con IA (usado por `create`, `scan` y `enhance`) **no** requiere una clave de Anthropic. Tienes tres formas de alimentarlo: + +**1. Usa una suscripciรณn que ya pagas โ€” sin crรฉditos de API (modo agente LOCAL)** + +Skill Seekers puede delegar en una CLI de agente de programaciรณn en la que ya tienes sesiรณn iniciada, de modo que la mejora se ejecuta con tu plan existente en lugar de tokens de API medidos: + +```bash +skill-seekers create --agent codex # CLI de OpenAI Codex โ†’ tu ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ tu Claude Pro/Max +``` + +Agentes soportados: `claude`, `codex`, `copilot`, `opencode`, `kimi` y `custom` +(combina `--agent custom` con `--agent-cmd " ..."` para usar cualquier otra herramienta). + +**2. Cualquier proveedor compatible con OpenAI (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +Todos ellos exponen un endpoint `/v1` compatible con OpenAI. Apunta Skill Seekers a uno de ellos con tres variables de entorno โ€” detecta `OPENAI_API_KEY`, y el SDK de OpenAI respeta `OPENAI_BASE_URL` automรกticamente: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # endpoint del proveedor (ver tabla) +export OPENAI_MODEL="" # requerido โ€” el predeterminado gpt-4o no existirรก en otros proveedores +skill-seekers create +``` + +| Proveedor | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> La detecciรณn de proveedor elige la **primera** variable de entorno de API key que encuentra (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Configura `SKILL_SEEKER_PROVIDER` para forzar un proveedor especรญfico, o asegรบrate de que las claves de mayor prioridad no estรฉn definidas. + +**3. Endpoints compatibles con Claude (ej. GLM, proxies)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) y Kimi/Moonshot (`MOONSHOT_API_KEY`) tambiรฉn estรกn soportados de forma nativa. Consulta la **[Referencia de variables de entorno](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** para la lista completa, incluidas las sobrescrituras de modelo por proveedor. + +
+ +**Instalaciรณn:** +```bash +# Instalar con soporte para Gemini +pip install skill-seekers[gemini] + +# Instalar con soporte para OpenAI +pip install skill-seekers[openai] + +# Instalar con soporte para MiniMax +pip install skill-seekers[minimax] + +# Instalar con todas las plataformas LLM +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— Integraciones con frameworks RAG + +- โœ… **LangChain Documents** - Exportaciรณn directa al formato `Document` con `page_content` + metadatos + - Ideal para: cadenas QA, recuperadores, almacenes de vectores, agentes + - Ejemplo: [Pipeline RAG con LangChain](examples/langchain-rag-pipeline/) + - Guรญa: [Integraciรณn con LangChain](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - Exportaciรณn al formato `TextNode` con IDs รบnicos + embeddings + - Ideal para: motores de consulta, motores de chat, contexto de almacenamiento + - Ejemplo: [Motor de consulta LlamaIndex](examples/llama-index-query-engine/) + - Guรญa: [Integraciรณn con LlamaIndex](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Formato listo para Pinecone** - Optimizado para carga en bases de datos vectoriales + - Ideal para: bรบsqueda vectorial en producciรณn, bรบsqueda semรกntica, bรบsqueda hรญbrida + - Ejemplo: [Carga en Pinecone](examples/pinecone-upsert/) + - Guรญa: [Integraciรณn con Pinecone](docs/integrations/PINECONE.md) + +**Exportaciรณn rรกpida:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (universal) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Guรญa completa de pipelines RAG:** [Documentaciรณn de pipelines RAG](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  Integraciones con asistentes de programaciรณn con IA + +Transforma cualquier documentaciรณn de framework en contexto experto de programaciรณn para mรกs de 4 asistentes de IA: + +- โœ… **Cursor IDE** - Genera `.cursorrules` para sugerencias de cรณdigo potenciadas por IA + - Ideal para: generaciรณn de cรณdigo especรญfica por framework, patrones consistentes + - Funciona con: Cursor IDE (fork de VS Code) + - Guรญa: [Integraciรณn con Cursor](docs/integrations/CURSOR.md) + - Ejemplo: [Skill de React para Cursor](examples/cursor-react-skill/) + +- โœ… **Windsurf** - Personaliza el contexto del asistente IA de Windsurf con `.windsurfrules` + - Ideal para: asistencia IA nativa del IDE, programaciรณn basada en flujos + - Funciona con: Windsurf IDE de Codeium + - Guรญa: [Integraciรณn con Windsurf](docs/integrations/WINDSURF.md) + - Ejemplo: [Contexto FastAPI para Windsurf](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - Prompts de sistema + MCP para el agente de VS Code + - Ideal para: generaciรณn de cรณdigo agรฉntica en VS Code + - Funciona con: extensiรณn Cline para VS Code + - Guรญa: [Integraciรณn con Cline](docs/integrations/CLINE.md) + - Ejemplo: [Asistente Django para Cline](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - Servidores de contexto para IA independiente del IDE + - Ideal para: entornos multi-IDE (VS Code, JetBrains, Vim), proveedores LLM personalizados + - Funciona con: cualquier IDE con el plugin Continue.dev + - Guรญa: [Integraciรณn con Continue](docs/integrations/CONTINUE_DEV.md) + - Ejemplo: [Contexto universal de Continue](examples/continue-dev-universal/) + +**Exportaciรณn rรกpida para herramientas de programaciรณn con IA:** +```bash +# Para cualquier asistente de programaciรณn con IA (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # o --target markdown + +# Copiar a tu proyecto (ejemplo para Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# O para Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# O para Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# O para Continue.dev (servidor HTTP) +python examples/continue-dev-universal/context_server.py +# Configurar en ~/.continue/config.json +``` + +**Centro de integraciones:** [Todas las integraciones con sistemas de IA](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ Arquitectura de tres flujos para GitHub +- โœ… **Anรกlisis de triple flujo** - Divide los repos de GitHub en flujos de Cรณdigo, Documentaciรณn e Insights +- โœ… **Analizador de cรณdigo unificado** - Funciona con URLs de GitHub Y rutas locales +- โœ… **C3.x como profundidad de anรกlisis** - Elige entre 'basic' (1โ€“2 min) o 'c3x' (20โ€“60 min) +- โœ… **Generaciรณn mejorada del router** - Metadatos de GitHub, inicio rรกpido del README, problemas comunes +- โœ… **Integraciรณn de issues** - Problemas principales y soluciones desde GitHub Issues +- โœ… **Palabras clave de enrutamiento inteligente** - Etiquetas de GitHub con peso 2x para mejor detecciรณn de temas + +**Los tres flujos explicados:** +- **Flujo 1: Cรณdigo** - Anรกlisis profundo C3.x (patrones, ejemplos, guรญas, configuraciones, arquitectura) +- **Flujo 2: Documentaciรณn** - Documentaciรณn del repositorio (README, CONTRIBUTING, docs/*.md) +- **Flujo 3: Insights** - Conocimiento de la comunidad (issues, etiquetas, estrellas, forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# Analizar repositorio de GitHub con los tres flujos +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # o "basic" para anรกlisis rรกpido + fetch_github_metadata=True +) + +# Acceder al flujo de cรณdigo (anรกlisis C3.x) +print(f"Design patterns: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Test examples: {result.code_analysis['c3_2_examples_count']}") + +# Acceder al flujo de documentaciรณn (docs del repositorio) +print(f"README: {result.github_docs['readme'][:100]}") + +# Acceder al flujo de insights (metadatos de GitHub) +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"Common issues: {len(result.github_insights['common_problems'])}") +``` + +**Documentaciรณn completa**: [Resumen de implementaciรณn de tres flujos](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” Gestiรณn inteligente de lรญmites de tasa y configuraciรณn +- โœ… **Sistema de configuraciรณn multi-token** - Gestiona mรบltiples cuentas de GitHub (personal, trabajo, OSS) + - Almacenamiento seguro de configuraciรณn en `~/.config/skill-seekers/config.json` (permisos 600) + - Estrategias de lรญmite de tasa por perfil: `prompt`, `wait`, `switch`, `fail` + - Timeout configurable por perfil (predeterminado: 30 min, evita esperas indefinidas) + - Cadena inteligente de respaldo: argumento CLI โ†’ variable de entorno โ†’ archivo de configuraciรณn โ†’ prompt + - Gestiรณn de API keys para Claude, Gemini, OpenAI +- โœ… **Asistente de configuraciรณn interactivo** - Interfaz de terminal atractiva para fรกcil configuraciรณn + - Integraciรณn con navegador para creaciรณn de tokens (abre automรกticamente GitHub, etc.) + - Validaciรณn de tokens y pruebas de conexiรณn + - Visualizaciรณn de estado con cรณdigos de color +- โœ… **Manejador inteligente de lรญmites de tasa** - ยกNo mรกs esperas indefinidas! + - Advertencia anticipada sobre lรญmites de tasa (60/hora vs 5000/hora) + - Detecciรณn en tiempo real desde las respuestas de la API de GitHub + - Temporizadores de cuenta regresiva en vivo con progreso + - Cambio automรกtico de perfil cuando se alcanza el lรญmite + - Cuatro estrategias: prompt (preguntar), wait (cuenta regresiva), switch (cambiar a otro), fail (abortar) +- โœ… **Capacidad de reanudaciรณn** - Continรบa trabajos interrumpidos + - Auto-guardado de progreso en intervalos configurables (predeterminado: 60 seg) + - Lista todos los trabajos reanudables con detalles de progreso + - Limpieza automรกtica de trabajos antiguos (predeterminado: 7 dรญas) +- โœ… **Soporte CI/CD** - Modo no interactivo para automatizaciรณn + - Flag `--non-interactive` que falla rรกpidamente sin prompts + - Flag `--profile` para seleccionar una cuenta de GitHub especรญfica + - Mensajes de error claros para logs de pipelines + +**Configuraciรณn rรกpida:** +```bash +# Configuraciรณn รบnica (5 minutos) +skill-seekers config --github + +# Usar perfil especรญfico para repos privados +skill-seekers create mycompany/private-repo --profile work + +# Modo CI/CD (fallo rรกpido, sin prompts) +skill-seekers create owner/repo --non-interactive + +# Reanudar trabajo interrumpido +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Estrategias de lรญmite de tasa explicadas:** +- **prompt** (predeterminado) - Pregunta quรฉ hacer cuando se alcanza el lรญmite (esperar, cambiar, configurar token, cancelar) +- **wait** - Espera automรกticamente con temporizador de cuenta regresiva (respeta el timeout) +- **switch** - Intenta automรกticamente el siguiente perfil disponible (para configuraciones multi-cuenta) +- **fail** - Falla inmediatamente con error claro (perfecto para CI/CD) + +### ๐ŸŽฏ Skill Bootstrap - Auto-alojamiento + +Genera skill-seekers como un skill para usarlo dentro de tu agente de IA (Claude Code, Kimi, Codex, etc.): + +```bash +# Generar el skill +./scripts/bootstrap_skill.sh + +# Instalar en Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**Lo que obtienes:** +- โœ… **Documentaciรณn completa del skill** - Todos los comandos CLI y patrones de uso +- โœ… **Referencia de comandos CLI** - Cada herramienta y sus opciones documentadas +- โœ… **Ejemplos de inicio rรกpido** - Flujos de trabajo comunes y mejores prรกcticas +- โœ… **Documentaciรณn de API auto-generada** - Anรกlisis de cรณdigo, patrones y ejemplos + +### ๐Ÿ” Repositorios de configuraciรณn privados +- โœ… **Fuentes de configuraciรณn basadas en Git** - Obtรฉn configuraciones desde repositorios git privados/de equipo +- โœ… **Gestiรณn multi-fuente** - Registra repositorios ilimitados de GitHub, GitLab, Bitbucket +- โœ… **Colaboraciรณn en equipo** - Comparte configuraciones personalizadas entre equipos de 3โ€“5 personas +- โœ… **Soporte empresarial** - Escala a mรกs de 500 desarrolladores con resoluciรณn basada en prioridad +- โœ… **Autenticaciรณn segura** - Tokens como variables de entorno (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **Cachรฉ inteligente** - Clona una vez, obtiene actualizaciones automรกticamente +- โœ… **Modo offline** - Trabaja con configuraciones en cachรฉ cuando no hay conexiรณn + +### ๐Ÿค– Anรกlisis de cรณdigo (C3.x) + +**C3.4: Extracciรณn de patrones de configuraciรณn con mejora por IA** +- โœ… **9 formatos de configuraciรณn** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 tipos de patrones** - Configuraciones de base de datos, API, logging, cachรฉ, correo, autenticaciรณn, servidor +- โœ… **Mejora con IA** - Anรกlisis IA opcional en modo dual (API + LOCAL) + - Explica quรฉ hace cada configuraciรณn + - Sugiere mejores prรกcticas y mejoras + - **Anรกlisis de seguridad** - Encuentra secretos codificados y credenciales expuestas +- โœ… **Auto-documentaciรณn** - Genera documentaciรณn JSON + Markdown de todas las configuraciones +- โœ… **Integraciรณn MCP** - Herramienta `extract_config_patterns` con soporte de mejora + +**C3.3: Guรญas prรกcticas mejoradas con IA** +- โœ… **Mejora integral con IA** - Transforma guรญas bรกsicas en tutoriales profesionales +- โœ… **5 mejoras automรกticas** - Descripciones de pasos, soluciรณn de problemas, prerrequisitos, siguientes pasos, casos de uso +- โœ… **Soporte de modo dual** - Modo API (Claude API) o modo LOCAL (Claude Code CLI) +- โœ… **Sin costos con modo LOCAL** - Mejora GRATUITA usando tu plan Claude Code Max +- โœ… **Transformaciรณn de calidad** - Plantillas de 75 lรญneas โ†’ guรญas completas de mรกs de 500 lรญneas + +**Uso:** +```bash +# Anรกlisis rรกpido (1โ€“2 min, solo funciones bรกsicas) +skill-seekers scan tests/ --quick + +# Anรกlisis completo con IA (20โ€“60 min, todas las funciones) +skill-seekers scan tests/ --comprehensive + +# Con mejora por IA +skill-seekers scan tests/ --enhance +``` + +**Documentaciรณn completa:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ Presets de flujo de trabajo de mejora + +Pipelines de mejora reutilizables definidos en YAML que controlan cรณmo la IA transforma tu documentaciรณn sin procesar en un skill pulido. + +- โœ… **5 presets incluidos** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **Presets definidos por el usuario** โ€” aรฑade flujos personalizados a `~/.config/skill-seekers/workflows/` +- โœ… **Mรบltiples flujos de trabajo** โ€” encadena dos o mรกs flujos en un solo comando +- โœ… **CLI completamente gestionado** โ€” lista, inspecciona, copia, aรฑade, elimina y valida flujos de trabajo + +```bash +# Aplicar un solo flujo de trabajo +skill-seekers create ./my-project --enhance-workflow security-focus + +# Encadenar mรบltiples flujos de trabajo (se aplican en orden) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# Gestionar presets +skill-seekers workflows list # Listar todos (incluidos + usuario) +skill-seekers workflows show security-focus # Mostrar contenido YAML +skill-seekers workflows copy security-focus # Copiar al directorio de usuario para editar +skill-seekers workflows add ./my-workflow.yaml # Instalar un preset personalizado +skill-seekers workflows remove my-workflow # Eliminar un preset de usuario +skill-seekers workflows validate security-focus # Validar estructura del preset + +# Copiar varios a la vez +skill-seekers workflows copy security-focus minimal api-documentation + +# Aรฑadir varios archivos a la vez +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Eliminar varios a la vez +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**Formato de preset YAML:** +```yaml +name: security-focus +description: "Security-focused review: vulnerabilities, auth, data handling" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "Review for OWASP top 10 and common security vulnerabilities..." + - name: auth-review + type: custom + prompt: "Examine authentication and authorisation patterns..." + uses_history: true +``` + +### โšก Rendimiento y escalabilidad +- โœ… **Modo asรญncrono** - Extracciรณn 2โ€“3x mรกs rรกpida con async/await (usa el flag `--async`) +- โœ… **Soporte para documentaciรณn grande** - Maneja documentos de 10Kโ€“40K+ pรกginas con divisiรณn inteligente +- โœ… **Skills Router/Hub** - Enrutamiento inteligente hacia sub-skills especializados +- โœ… **Extracciรณn en paralelo** - Procesa mรบltiples skills simultรกneamente +- โœ… **Checkpoint/Reanudaciรณn** - Nunca pierdas progreso en extracciones largas +- โœ… **Sistema de cachรฉ** - Extrae una vez, reconstruye instantรกneamente + +### ๐Ÿค– Generaciรณn de skills agnรณstica al agente +- โœ… **Soporte multi-agente** - Genera skills para Claude, Kimi, Codex, Copilot, OpenCode o cualquier agente personalizado mediante el flag `--agent` +- โœ… **Comandos de agente personalizados** - Usa `--agent-cmd` para especificar un comando CLI de agente personalizado para la mejora +- โœ… **Flags universales** - `--agent` y `--agent-cmd` disponibles en todos los comandos (create, scrape, github, pdf, etc.) + +### ๐Ÿ“ฆ Pipeline de Marketplace +- โœ… **Publicar en el marketplace** - Publica skills en repositorios del marketplace de plugins de Claude Code +- โœ… **Pipeline de extremo a extremo** - Desde la fuente de documentaciรณn hasta la entrada publicada en el marketplace + +### โœ… Garantรญa de calidad +- โœ… **Completamente probado** - Mรกs de 3.700 tests con cobertura completa + +--- + +## ๐Ÿ“ฆ Instalaciรณn + +```bash +# Instalaciรณn bรกsica (extracciรณn de documentaciรณn, anรกlisis de GitHub, PDF, empaquetado) +pip install skill-seekers + +# Con soporte para todas las plataformas LLM +pip install skill-seekers[all-llms] + +# Con servidor MCP +pip install skill-seekers[mcp] + +# Todo incluido +pip install skill-seekers[all] +``` + +**ยฟNecesitas ayuda para elegir?** Ejecuta el asistente de configuraciรณn: +```bash +skill-seekers-setup +``` + +### Opciones de instalaciรณn + +| Instalaciรณn | Funcionalidades | +|-------------|-----------------| +| `pip install skill-seekers` | Extracciรณn, anรกlisis de GitHub, PDF, todas las plataformas | +| `pip install skill-seekers[gemini]` | + Soporte para Google Gemini | +| `pip install skill-seekers[openai]` | + Soporte para OpenAI ChatGPT | +| `pip install skill-seekers[all-llms]` | + Todas las plataformas LLM | +| `pip install skill-seekers[mcp]` | + Servidor MCP para Claude Code, Cursor, etc. | +| `pip install skill-seekers[video]` | + Extracciรณn de transcripciones y metadatos de YouTube/Vimeo | +| `pip install skill-seekers[video-full]` | + Transcripciรณn Whisper y extracciรณn visual de fotogramas | +| `pip install skill-seekers[jupyter]` | + Soporte para Jupyter Notebook | +| `pip install skill-seekers[pptx]` | + Soporte para PowerPoint | +| `pip install skill-seekers[confluence]` | + Soporte para wiki de Confluence | +| `pip install skill-seekers[notion]` | + Soporte para pรกginas de Notion | +| `pip install skill-seekers[rss]` | + Soporte para feeds RSS/Atom | +| `pip install skill-seekers[chat]` | + Soporte para exportaciรณn de chat de Slack/Discord | +| `pip install skill-seekers[asciidoc]` | + Soporte para documentos AsciiDoc | +| `pip install skill-seekers[all]` | Todo habilitado | + +> **Dependencias visuales para video (detecciรณn de GPU):** Despuรฉs de instalar `skill-seekers[video-full]`, ejecuta +> `skill-seekers create --setup` para detectar automรกticamente tu GPU e instalar la variante correcta de PyTorch +> + easyocr. Esta es la forma recomendada de instalar las dependencias de extracciรณn visual. + +--- + +## ๐Ÿš€ Flujo de trabajo de instalaciรณn con un solo comando + +**La forma mรกs rรกpida de ir desde la configuraciรณn hasta el skill subido - automatizaciรณn completa:** + +```bash +# Instalar skill de React desde las configuraciones oficiales (se sube automรกticamente a Claude) +skill-seekers install --config react + +# Instalar desde archivo de configuraciรณn local +skill-seekers install --config configs/custom.json + +# Instalar sin subir (solo empaquetar) +skill-seekers install --config django --no-upload + +# Previsualizar flujo de trabajo sin ejecutar +skill-seekers install --config react --dry-run +``` + +**Tiempo:** 20โ€“45 minutos en total | **Calidad:** Listo para producciรณn (9/10) | **Costo:** Gratis + +**Fases ejecutadas:** +``` +๐Ÿ“ฅ FASE 1: Obtener configuraciรณn (si se proporciona nombre de configuraciรณn) +๐Ÿ“– FASE 2: Extraer documentaciรณn +โœจ FASE 3: Mejora con IA (OBLIGATORIA - sin opciรณn de omitir) +๐Ÿ“ฆ FASE 4: Empaquetar skill +โ˜๏ธ FASE 5: Subir a Claude (opcional, requiere API key) +``` + +**Requisitos:** +- Variable de entorno ANTHROPIC_API_KEY (para subida automรกtica) +- Plan Claude Code Max (para mejora local con IA), o usa `--agent` para seleccionar un agente de IA diferente + +--- + +## ๐Ÿ“Š Matriz de funcionalidades + +Skill Seekers soporta **12 plataformas LLM**, **8 destinos RAG/vectoriales**, **18 tipos de fuentes** y paridad total de funcionalidades en todos los destinos. + +**Plataformas:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown genรฉrico, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**Tipos de fuentes:** Sitios web de documentaciรณn, repos de GitHub, PDFs, Word (.docx), EPUB, Video, Bases de cรณdigo locales, Jupyter Notebooks, HTML local, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), feeds RSS/Atom, pรกginas de manual, wikis de Confluence, pรกginas de Notion, exportaciones de chat de Slack/Discord + +Consulta la [Matriz completa de funcionalidades](docs/reference/FEATURE_MATRIX.md) para informaciรณn detallada de soporte por plataforma y funcionalidad. + +### Comparaciรณn rรกpida de plataformas + +| Funcionalidad | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------------|--------|--------|--------|---------|----------| +| Formato | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Carga | โœ… API | โœ… API | โœ… API | โœ… API | โŒ Manual | +| Mejora | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ Ninguna | +| Todos los modos de skill | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## Ejemplos de uso + +### Extracciรณn de documentaciรณn + +```bash +# Extraer sitio web de documentaciรณn +skill-seekers create --config configs/react.json + +# Extracciรณn rรกpida sin configuraciรณn +skill-seekers create https://react.dev --name react + +# Con modo asรญncrono (3x mรกs rรกpido) +skill-seekers create --config configs/godot.json --async --workers 8 + +# Usar un agente de IA especรญfico para la mejora +skill-seekers create --config configs/react.json --agent kimi +``` + +### Extracciรณn de PDF + +```bash +# Extracciรณn bรกsica de PDF +skill-seekers create --pdf docs/manual.pdf --name myskill + +# Funciones avanzadas +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Extraer tablas + --parallel \ # Procesamiento paralelo rรกpido + --workers 8 # Usar 8 nรบcleos de CPU + +# PDFs escaneados (requiere: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Extracciรณn de video + +```bash +# Instalar soporte para video +pip install skill-seekers[video] # Transcripciones + metadatos +pip install skill-seekers[video-full] # + Whisper + extracciรณn visual de fotogramas + +# Detectar GPU automรกticamente e instalar dependencias visuales (PyTorch + easyocr) +skill-seekers create --setup + +# Extraer de video de YouTube +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# Extraer de una lista de reproducciรณn de YouTube +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Extraer de un archivo de video local +skill-seekers create --video-file recording.mp4 --name myrecording + +# Extraer con anรกlisis visual de fotogramas (requiere dependencias video-full) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# Con mejora por IA (limpia OCR + genera SKILL.md pulido) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Recortar una secciรณn especรญfica de un video (soporta segundos, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# Usar Vision API para fotogramas OCR de baja confianza (requiere ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Reconstruir skill desde datos previamente extraรญdos (saltar descarga) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Guรญa completa:** Consulta [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) para la referencia CLI completa, +> detalles del pipeline visual, opciones de mejora con IA y soluciรณn de problemas. + +### Anรกlisis de repositorios de GitHub + +```bash +# Extracciรณn bรกsica de repositorio +skill-seekers create facebook/react + +# Con autenticaciรณn (lรญmites de tasa mรกs altos) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Personalizar quรฉ incluir +skill-seekers create django/django \ + --include-issues \ # Extraer GitHub Issues + --max-issues 100 \ # Limitar cantidad de issues + --include-changelog # Extraer CHANGELOG.md +``` + +### Extracciรณn unificada multi-fuente + +**Combina documentaciรณn + GitHub + PDF en un solo skill unificado con detecciรณn de conflictos:** + +```bash +# Usar configuraciones unificadas existentes +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# O crear configuraciรณn unificada +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**La detecciรณn de conflictos encuentra automรกticamente:** +- ๐Ÿ”ด **Falta en el cรณdigo** (alto): Documentado pero no implementado +- ๐ŸŸก **Falta en la documentaciรณn** (medio): Implementado pero no documentado +- โš ๏ธ **Discrepancia de firma**: Parรกmetros/tipos diferentes +- โ„น๏ธ **Discrepancia de descripciรณn**: Explicaciones diferentes + +**Guรญa completa:** Consulta [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) para documentaciรณn completa. + +### Repositorios de configuraciรณn privados + +**Comparte configuraciones personalizadas entre equipos usando repositorios git privados:** + +```bash +# Opciรณn 1: Usando herramientas MCP (recomendado) +# Registrar el repo privado de tu equipo +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Obtener configuraciรณn del repo del equipo +fetch_config(source="team", config_name="internal-api") +``` + +**Plataformas soportadas:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Guรญa completa:** Consulta [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) para documentaciรณn completa. + +## Cรณmo funciona + +```mermaid +graph LR + A[Sitio web de documentaciรณn] --> B[Skill Seekers] + B --> C[Scraper] + B --> D[Mejora con IA] + B --> E[Empaquetador] + C --> F[Referencias organizadas] + D --> F + F --> E + E --> G[AI Skill .zip] + G --> H[Subir a la plataforma de IA] +``` + +0. **Detectar llms.txt** - Primero verifica llms-full.txt, llms.txt, llms-small.txt (parte del descubrimiento SPA inteligente) +1. **Extraer**: Extrae todas las pรกginas de la documentaciรณn +2. **Categorizar**: Organiza el contenido en temas (API, guรญas, tutoriales, etc.) +3. **Mejorar**: La IA analiza los docs y crea un SKILL.md completo con ejemplos (soporta mรบltiples agentes mediante `--agent`) +4. **Empaquetar**: Agrupa todo en un archivo `.zip` listo para la plataforma + +## Arquitectura + +El sistema estรก organizado en **8 mรณdulos principales** y **5 mรณdulos de utilidades** (~200 clases en total): + +![Vista general de paquetes](docs/UML/exports/00_package_overview.png) + +| Mรณdulo | Propรณsito | Clases clave | +|--------|-----------|--------------| +| **CLICore** | Despachador de comandos al estilo Git | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 extractores por tipo de fuente | `DocToSkillConverter`, `DocumentSkillBuilder` (capa de construcciรณn compartida), `UnifiedScraper` | +| **Adaptors** | 20+ formatos de plataformas de salida | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | Pipeline de anรกlisis de cรณdigo C3.x | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 detectores GoF | +| **Enhancement** | Mejora de skills con IA mediante `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Empaquetar, subir e instalar skills | `PackageSkill`, `InstallAgent` | +| **MCP** | Servidor FastMCP (40 herramientas) | `SkillSeekerMCPServer`, 10 mรณdulos de herramientas | +| **Sync** | Detecciรณn de cambios en la documentaciรณn | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Mรณdulos de utilidades: **Parsers** (28 parsers CLI), **Storage** (S3/GCS/Azure), **Embedding** (vectores multi-proveedor), **Benchmark** (rendimiento), **Utilities** (16 helpers compartidos). + +Diagramas UML completos: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | Proyecto StarUML: `docs/UML/skill_seekers.mdj` | Referencia API en HTML: `docs/UML/html/` + +## ๐Ÿ“‹ Prerrequisitos + +**Antes de empezar, asegรบrate de tener:** + +1. **Python 3.10 o superior** - [Descargar](https://www.python.org/downloads/) | Verificar: `python3 --version` +2. **Git** - [Descargar](https://git-scm.com/) | Verificar: `git --version` +3. **15โ€“30 minutos** para la configuraciรณn inicial + +**ยฟPrimera vez?** โ†’ **[Empieza aquรญ: Guรญa de inicio rรกpido a prueba de fallos](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Subir skills a Claude + +Una vez empaquetado tu skill, necesitas subirlo a Claude: + +### Opciรณn 1: Subida automรกtica (basada en API) + +```bash +# Configurar tu API key (una sola vez) +export ANTHROPIC_API_KEY=sk-ant-... + +# Empaquetar y subir automรกticamente +skill-seekers package output/react/ --upload + +# O subir un .zip existente +skill-seekers upload output/react.zip +``` + +### Opciรณn 2: Subida manual (sin API Key) + +```bash +# Empaquetar skill +skill-seekers package output/react/ +# โ†’ Crea output/react.zip + +# Luego subir manualmente: +# - Ve a https://claude.ai/skills +# - Haz clic en "Upload Skill" +# - Selecciona output/react.zip +``` + +### Opciรณn 3: MCP (Claude Code) + +``` +En Claude Code, simplemente pide: +"Empaqueta y sube el skill de React" +``` + +--- + +## ๐Ÿค– Instalaciรณn en agentes de IA + +Skill Seekers puede instalar automรกticamente skills en 19 agentes de programaciรณn con IA. + +```bash +# Instalar en un agente especรญfico +skill-seekers install-agent output/react/ --agent cursor + +# Instalar en IBM Bob (local al proyecto: .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Instalar en todos los agentes a la vez +skill-seekers install-agent output/react/ --agent all + +# Previsualizar sin instalar +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Agentes soportados + +| Agente | Ruta | Tipo | +|--------|------|------| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Proyecto | +| **VS Code / Copilot** | `.github/skills/` | Proyecto | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Proyecto | +| **Cline** | `.cline/skills/` | Proyecto | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Proyecto | +| **Kilo Code** | `.kilo/skills/` | Proyecto | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Proyecto | + +--- + +## ๐Ÿ”Œ Integraciรณn MCP (40 herramientas) + +Skill Seekers incluye un servidor MCP para usar desde Claude Code, Cursor, Windsurf, VS Code + Cline o IntelliJ IDEA. + +```bash +# Modo stdio (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# Modo HTTP (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Auto-configurar todos los agentes a la vez +./setup_mcp.sh +``` + +**Las 40 herramientas disponibles:** +- **Core (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **Extendidas (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Bases de datos vectoriales (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Nube (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**Guรญa completa:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ Configuraciรณn + +### Presets disponibles (mรกs de 24) + +```bash +# Listar todos los presets +# skill-seekers list-configs # No disponible en v3.7.0 +``` + +| Categorรญa | Presets | +|-----------|---------| +| **Frameworks Web** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Desarrollo de juegos** | `godot`, `pygame`, `unity` | +| **Herramientas y DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **Unificados (Docs + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` y mรกs | + +### Crear tu propia configuraciรณn + +```bash +# Opciรณn 1: Interactivo +skill-seekers create --interactive + +# Opciรณn 2: Copiar y editar un preset +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Estructura del archivo de configuraciรณn + +```json +{ + "name": "myframework", + "description": "When to use this skill", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Dรณnde almacenar las configuraciones + +La herramienta busca en este orden: +1. Ruta exacta proporcionada +2. `./configs/` (directorio actual) +3. `~/.config/skill-seekers/configs/` (directorio de configuraciรณn del usuario) +4. API de SkillSeekersWeb.com (configuraciones predefinidas) + +--- + +## ๐Ÿ“Š Lo que se crea + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Datos sin procesar extraรญdos +โ”‚ โ”œโ”€โ”€ pages/ # Archivos JSON (uno por pรกgina) +โ”‚ โ””โ”€โ”€ summary.json # Resumen general +โ”‚ +โ””โ”€โ”€ godot/ # El skill + โ”œโ”€โ”€ SKILL.md # Mejorado con ejemplos reales + โ”œโ”€โ”€ references/ # Docs categorizados + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # Vacรญo (aรฑade los tuyos) + โ””โ”€โ”€ assets/ # Vacรญo (aรฑade los tuyos) +``` + +--- + +## ๐Ÿ› Soluciรณn de problemas + +### ยฟNo se extrajo contenido? +- Verifica tu selector `main_content` +- Prueba con: `article`, `main`, `div[role="main"]` + +### ยฟLos datos existen pero no se usan? +```bash +# Forzar re-extracciรณn +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ยฟCategorรญas incorrectas? +Edita la secciรณn `categories` de la configuraciรณn con mejores palabras clave. + +### ยฟQuieres actualizar la documentaciรณn? +```bash +# Eliminar datos antiguos y volver a extraer +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ยฟLa mejora no funciona? +```bash +# Verificar si la API key estรก configurada +echo $ANTHROPIC_API_KEY + +# Probar modo LOCAL (usa Claude Code Max, no requiere API key) +skill-seekers enhance output/react/ --mode LOCAL + +# Monitorear el estado de mejora en segundo plano +skill-seekers enhance-status output/react/ --watch +``` + +### ยฟProblemas con lรญmite de tasa de GitHub? +```bash +# Configurar un token de GitHub (5000 req/hora vs 60/hora anรณnimo) +export GITHUB_TOKEN=ghp_your_token_here + +# O configurar mรบltiples perfiles +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ Rendimiento + +| Tarea | Tiempo | Notas | +|-------|--------|-------| +| Extracciรณn (sรญncrona) | 15โ€“45 min | Solo la primera vez, basado en hilos | +| Extracciรณn (asรญncrona) | 5โ€“15 min | 2โ€“3x mรกs rรกpido con el flag `--async` | +| Construcciรณn | 1โ€“3 min | Reconstrucciรณn rรกpida desde cachรฉ | +| Reconstrucciรณn | <1 min | Con `--skip-scrape` | +| Mejora (LOCAL) | 30โ€“60 seg | Usa Claude Code Max | +| Mejora (API) | 20โ€“40 seg | Requiere API key | +| Video (transcripciรณn) | 1โ€“3 min | YouTube/local, solo transcripciรณn | +| Video (visual) | 5โ€“15 min | + Extracciรณn de fotogramas OCR | +| Empaquetado | 5โ€“10 seg | Creaciรณn del .zip final | + +--- + +## ๐Ÿ†• Novedades en v3.6.0 + +### Presets de flujo de trabajo +Controla la profundidad del anรกlisis con `--preset`: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Rรกpido, superficial +skill-seekers create https://docs.react.dev/ --preset standard # Equilibrado (predeterminado) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Profundo, exhaustivo +``` + +### Banderas de ciclo de vida +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Vista previa sin extracciรณn +skill-seekers create https://docs.react.dev/ --fresh # Ignorar cachรฉ, re-extracciรณn completa +skill-seekers create https://docs.react.dev/ --resume # Reanudar trabajo interrumpido +skill-seekers create https://docs.react.dev/ --skip-scrape # Reempaquetar salida existente +``` + +### Health Check y utilidades +```bash +skill-seekers doctor # Diagnosticar instalaciรณn y entorno +skill-seekers sync-config # Detectar desviaciรณn de configuraciรณn +skill-seekers stream # Ingesta por streaming para documentaciรณn grande +skill-seekers update output/react/ # Actualizaciรณn incremental +skill-seekers multilang # Generaciรณn de skills multilingรผe +skill-seekers quality output/react/ # Informe de calidad (aรฑade --threshold 7 para bloquear: salida distinta de cero por debajo de 7/10) +``` + +### Opciones de RAG Chunking (package) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Publicaciรณn en el marketplace +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Dependencias opcionales adicionales +| Extra | Instalaciรณn | Propรณsito | +|-------|-------------|-----------| +| `browser` | `pip install "skill-seekers[browser]"` | Playwright headless para sitios SPA | +| `embedding` | `pip install "skill-seekers[embedding]"` | Soporte de servidor de embeddings | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` etc. | Subida a almacenamiento en la nube | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | Dependencias combinadas de subida a bases de datos vectoriales | + +--- + +## ๐Ÿ“š Documentaciรณn + +### Primeros pasos +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **ยกEMPIEZA AQUร si eres nuevo!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Inicio rรกpido para usuarios experimentados +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problemas comunes y soluciones +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - Hoja de referencia rรกpida + +### Arquitectura +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - Vista general de la arquitectura UML con 14 diagramas +- **[docs/UML/exports/](docs/UML/exports/)** - Exportaciones de diagramas en PNG (vista general de paquetes + 13 diagramas de clases) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Referencia API completa en HTML (todas las clases, operaciones, atributos) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - Archivo de proyecto StarUML (abrir con [StarUML](https://staruml.io/)) + +### Guรญas +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - Manejar documentos de 10Kโ€“40K+ pรกginas +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - Guรญa de modos de mejora con IA +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - Configuraciรณn de integraciรณn MCP +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - Extracciรณn multi-fuente +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Guรญa de extracciรณn de video + +### Guรญas de integraciรณn +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - Todos los pipelines RAG + +--- + +## ๐Ÿ“ Licencia + +Licencia MIT - consulta el archivo [LICENSE](LICENSE) para mรกs detalles + +--- + +ยกFeliz construcciรณn de skills! ๐Ÿš€ + +--- + +## ๐Ÿ”’ Seguridad + +[![Insignia de evaluaciรณn de seguridad MseeP.ai](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› Patrocinadores + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” una plataforma de inferencia de IA full-modal compatible con OpenAI. Skill Seekers la soporta como destino de empaquetado/mejora mediante `--target atlas` con `ATLAS_API_KEY`. diff --git a/README.fr.md b/README.fr.md new file mode 100644 index 0000000..a484073 --- /dev/null +++ b/README.fr.md @@ -0,0 +1,1380 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | Franรงais | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **Avis de traduction automatique** +> +> Ce document a รฉtรฉ traduit automatiquement par IA. Bien que nous nous efforcions de garantir la qualitรฉ, des expressions inexactes peuvent subsister. +> +> N'hรฉsitez pas ร  contribuer ร  l'amรฉlioration de la traduction via [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) ! Vos retours nous sont prรฉcieux. + +[![Version](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![Licence : MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![Intรฉgration MCP](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Tests rรฉussis](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Tableau de projet](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![Version PyPI](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Tรฉlรฉchargements](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Version Python](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![Site web](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Suivre sur Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![ร‰toiles GitHub](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  La couche de donnรฉes pour les systรจmes d'IA.** Skill Seekers transforme les sites de documentation, dรฉpรดts GitHub, PDF, vidรฉos, notebooks Jupyter, wikis et plus de 10 autres types de sources en ressources de connaissances structurรฉes โ€” prรชtes ร  alimenter les compรฉtences IA (Claude, Gemini, OpenAI), les pipelines RAG (LangChain, LlamaIndex, Pinecone) et les assistants de codage IA (Cursor, Windsurf, Cline) en quelques minutes, pas en heures. + +> ๐ŸŒ **[Visitez SkillSeekersWeb.com](https://skillseekersweb.com/)** - Parcourez plus de 24 configurations prรฉdรฉfinies, partagez vos configurations et accรฉdez ร  la documentation complรจte ! + +> ๐Ÿ“‹ **[Consultez la feuille de route et les tรขches](https://github.com/users/yusufkaraaslan/projects/2)** - 134 tรขches rรฉparties en 10 catรฉgories, choisissez-en une pour contribuer ! + +## ๐ŸŒ ร‰cosystรจme + +Skill Seekers est un projet multi-dรฉpรดts. Voici oรน se trouve chaque partie : + +| Dรฉpรดt | Description | Liens | +|-------|-------------|-------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | CLI principal et serveur MCP (ce dรฉpรดt) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Site web et documentation | [Site](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Dรฉpรดt de configurations communautaires | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action pour CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Plugin Claude Code | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap pour macOS | | + +> **Vous voulez contribuer ?** Les dรฉpรดts du site web et des configurations sont d'excellents points de dรฉpart pour les nouveaux contributeurs ! + +## ๐Ÿง  La couche de donnรฉes pour les systรจmes d'IA + +**Skill Seekers est la couche de prรฉtraitement universelle** qui se situe entre la documentation brute et tous les systรจmes d'IA qui la consomment. Que vous construisiez des compรฉtences Claude, un pipeline RAG LangChain ou un fichier `.cursorrules` pour Cursor โ€” la prรฉparation des donnรฉes est identique. Vous le faites une seule fois, et exportez vers toutes les cibles. + +```bash +# Une commande โ†’ ressource de connaissances structurรฉe +skill-seekers create https://docs.react.dev/ +# ou : skill-seekers create facebook/react +# ou : skill-seekers create ./my-project + +# Exporter vers n'importe quel systรจme d'IA +skill-seekers package output/react --target claude # โ†’ Compรฉtence Claude AI (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ Rรฉpertoire de compรฉtence IBM Bob +``` + +### Ce qui est gรฉnรฉrรฉ + +| Sortie | Cible | Utilisation | +|--------|-------|-------------| +| **Compรฉtence Claude** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Compรฉtence Gemini** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, assistants personnalisรฉs | +| **LangChain Documents** | `--target langchain` | Chaรฎnes QA, agents, rรฉcupรฉrateurs | +| **LlamaIndex TextNodes** | `--target llama-index` | Moteurs de requรชtes, moteurs de chat | +| **Haystack Documents** | `--target haystack` | Pipelines RAG d'entreprise | +| **Prรชt pour Pinecone** (Markdown) | `--target markdown` | Insertion vectorielle | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Bases vectorielles locales | +| **Compรฉtence IBM Bob** (rรฉpertoire) | `--target ibm-bob` | Compรฉtences projet/globales IBM Bob | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ copier SKILL.md | `.cursorrules` de l'IDE Cursor | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ copier | VS Code, IntelliJ, Vim | + +### Pourquoi c'est important + +- โšก **99 % plus rapide** โ€” Des jours de prรฉparation manuelle โ†’ 15โ€“45 minutes +- ๐ŸŽฏ **Qualitรฉ des compรฉtences IA** โ€” Fichiers SKILL.md de 500+ lignes avec exemples, patterns et guides +- ๐Ÿ“Š **Fragments prรชts pour le RAG** โ€” Dรฉcoupage intelligent prรฉservant les blocs de code et le contexte +- ๐ŸŽฌ **Vidรฉos** โ€” Extraction de code, transcriptions et connaissances structurรฉes depuis YouTube et vidรฉos locales +- ๐Ÿ”„ **Multi-sources** โ€” Combinez 18 types de sources (docs, GitHub, PDF, vidรฉos, notebooks, wikis, etc.) en une seule ressource +- ๐ŸŒ **Une prรฉparation, toutes les cibles** โ€” Exportez la mรชme ressource vers 21 plateformes sans re-scraping +- โœ… **ร‰prouvรฉ en production** โ€” 3 700+ tests, 24+ prรฉrรฉglages de frameworks, prรชt pour la production + +## ๐Ÿš€ Dรฉmarrage rapide (3 commandes) + +```bash +# 1. Installer +pip install skill-seekers + +# 2. Crรฉer une compรฉtence depuis n'importe quelle source +skill-seekers create https://docs.django.com/ + +# 3. Empaqueter pour votre plateforme IA +skill-seekers package output/django --target claude +``` + +**C'est tout !** Vous avez maintenant `output/django-claude.zip` prรชt ร  l'emploi. + +```bash +# Utiliser un autre agent IA pour l'amรฉlioration (par dรฉfaut : claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ Scan de projet pilotรฉ par IA (nouveau) + +Pointez `scan` vers n'importe quel projet : un agent IA lit ses manifestes, son README, +son Dockerfile/CI et un รฉchantillon d'imports du code source โ€” puis รฉmet une configuration +par framework dรฉtectรฉ plus un `-codebase.json` pour votre propre code. La version +dรฉtectรฉe est รฉpinglรฉe, de sorte qu'une rรฉ-exรฉcution signale les montรฉes de version : + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# Puis construisez n'importe laquelle d'entre elles +skill-seekers create ./configs/scanned/react.json +``` + +Si une dรฉtection n'a pas de prรฉrรฉglage existant, l'IA gรฉnรจre une configuration fraรฎche ; +ร  la fin, vous pouvez รฉventuellement la publier dans le [registre communautaire](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### Autres sources (18 prises en charge) + +```bash +# Dรฉpรดt GitHub +skill-seekers create facebook/react + +# Projet local +skill-seekers create ./my-project + +# Document PDF +skill-seekers create manual.pdf + +# Document Word +skill-seekers create report.docx + +# Livre numรฉrique EPUB +skill-seekers create book.epub + +# Notebook Jupyter +skill-seekers create notebook.ipynb + +# Spรฉcification OpenAPI +skill-seekers create openapi.yaml + +# Prรฉsentation PowerPoint +skill-seekers create presentation.pptx + +# Document AsciiDoc +skill-seekers create guide.adoc + +# Fichier HTML local (auto-dรฉtectรฉ par l'extension) +skill-seekers create page.html + +# Rรฉpertoire entier de fichiers HTML (auto-dรฉtectรฉ pour les rรฉpertoires ร  dominante HTML) +skill-seekers create ./mirror_output/site/ + +# Forcer le mode HTML sur un rรฉpertoire mixte/riche en code +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# Flux RSS/Atom +skill-seekers create feed.rss + +# Page de manuel +skill-seekers create curl.1 + +# Vidรฉo (YouTube, Vimeo ou fichier local โ€” nรฉcessite skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# Premiรจre utilisation ? Installation automatique des dรฉpendances visuelles GPU : +skill-seekers create --setup + +# Wiki Confluence +skill-seekers create --space-key TEAM --name wiki + +# Pages Notion +skill-seekers create --database-id ... --name docs + +# Export chat Slack/Discord +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### Exporter partout + +```bash +# Empaqueter pour plusieurs plateformes +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Qu'est-ce que Skill Seekers ? + +Skill Seekers est la **couche de donnรฉes pour les systรจmes d'IA**. Il transforme 18 types de sources โ€” sites de documentation, dรฉpรดts GitHub, PDF, vidรฉos, notebooks Jupyter, documents Word/EPUB/AsciiDoc, spรฉcifications OpenAPI, prรฉsentations PowerPoint, flux RSS, pages de manuel, wikis Confluence, pages Notion, exports Slack/Discord, et plus encore โ€” en ressources de connaissances structurรฉes pour toutes les cibles IA : + +| Cas d'usage | Ce que vous obtenez | Exemples | +|-------------|---------------------|----------| +| **Compรฉtences IA** | SKILL.md complet + rรฉfรฉrences | Claude Code, Gemini, GPT | +| **Pipelines RAG** | Documents dรฉcoupรฉs avec mรฉtadonnรฉes riches | LangChain, LlamaIndex, Haystack | +| **Bases vectorielles** | Donnรฉes prรฉ-formatรฉes prรชtes ร  l'insertion | Pinecone, Chroma, Weaviate, FAISS | +| **Assistants de codage IA** | Fichiers de contexte lus automatiquement par l'IA de votre IDE | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š Documentation + +| Je veux... | Lire ceci | +|------------|-----------| +| **Dรฉmarrer rapidement** | [Dรฉmarrage rapide](docs/getting-started/02-quick-start.md) - 3 commandes pour une premiรจre compรฉtence | +| **Comprendre les concepts** | [Concepts fondamentaux](docs/user-guide/01-core-concepts.md) - Comment รงa marche | +| **Scraper des sources** | [Guide de scraping](docs/user-guide/02-scraping.md) - Tous les types de sources | +| **Amรฉliorer les compรฉtences** | [Guide d'amรฉlioration](docs/user-guide/03-enhancement.md) - Amรฉlioration par IA | +| **Exporter les compรฉtences** | [Guide d'empaquetage](docs/user-guide/04-packaging.md) - Export vers les plateformes | +| **Consulter les commandes** | [Rรฉfรฉrence CLI](docs/reference/CLI_REFERENCE.md) - Les 20 commandes | +| **Configurer** | [Format de configuration](docs/reference/CONFIG_FORMAT.md) - Spรฉcification JSON | +| **Rรฉsoudre des problรจmes** | [Dรฉpannage](docs/user-guide/06-troubleshooting.md) - Problรจmes courants | + +**Documentation complรจte :** [docs/README.md](docs/README.md) + +Au lieu de passer des jours en prรฉtraitement manuel, Skill Seekers : + +1. **Ingรจre** โ€” docs, dรฉpรดts GitHub, bases de code locales, PDF, vidรฉos, notebooks, wikis et plus de 10 autres types de sources +2. **Analyse** โ€” analyse AST approfondie, dรฉtection de patterns, extraction d'API +3. **Structure** โ€” fichiers de rรฉfรฉrence catรฉgorisรฉs avec mรฉtadonnรฉes +4. **Amรฉliore** โ€” gรฉnรฉration de SKILL.md par IA (Claude, Gemini ou local) +5. **Exporte** โ€” 16 formats spรฉcifiques ร  chaque plateforme depuis une seule ressource + +## Pourquoi l'utiliser ? + +### Pour les crรฉateurs de compรฉtences IA (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **Compรฉtences de qualitรฉ production** โ€” Fichiers SKILL.md de 500+ lignes avec exemples de code, patterns et guides +- ๐Ÿ”„ **Workflows d'amรฉlioration** โ€” Appliquez `security-focus`, `architecture-comprehensive` ou des prรฉrรฉglages YAML personnalisรฉs +- ๐ŸŽฎ **N'importe quel domaine** โ€” Moteurs de jeux (Godot, Unity), frameworks (React, Django), outils internes +- ๐Ÿ”ง **ร‰quipes** โ€” Combinez documentation interne + code en une source de vรฉritรฉ unique +- ๐Ÿ“š **Qualitรฉ** โ€” Amรฉliorรฉ par IA avec exemples, rรฉfรฉrence rapide et guide de navigation + +### Pour les dรฉveloppeurs RAG et ingรฉnieurs IA + +- ๐Ÿค– **Donnรฉes prรชtes pour le RAG** โ€” `Documents` LangChain, `TextNodes` LlamaIndex, `Documents` Haystack prรฉ-dรฉcoupรฉs +- ๐Ÿš€ **99 % plus rapide** โ€” Des jours de prรฉtraitement โ†’ 15โ€“45 minutes +- ๐Ÿ“Š **Mรฉtadonnรฉes intelligentes** โ€” Catรฉgories, sources, types โ†’ meilleure prรฉcision de rรฉcupรฉration +- ๐Ÿ”„ **Multi-sources** โ€” Combinez docs + GitHub + PDF + vidรฉos dans un seul pipeline +- ๐ŸŒ **Indรฉpendant de la plateforme** โ€” Exportez vers n'importe quelle base vectorielle ou framework sans re-scraping + +### Pour les utilisateurs d'assistants de codage IA + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” Gรฉnรฉrez automatiquement `.cursorrules` / `.windsurfrules` / `.clinerules` +- ๐ŸŽฏ **Contexte persistant** โ€” L'IA ยซ connaรฎt ยป vos frameworks sans prompts rรฉpรฉtitifs +- ๐Ÿ“š **Toujours ร  jour** โ€” Mettez ร  jour le contexte en quelques minutes quand la documentation change + +## Fonctionnalitรฉs clรฉs + +### ๐ŸŒ Scraping de documentation +- โœ… **Dรฉcouverte SPA intelligente** - Dรฉcouverte en trois couches pour les sites SPA JavaScript (sitemap.xml โ†’ llms.txt โ†’ rendu par navigateur headless) +- โœ… **Support llms.txt** - Dรฉtecte et utilise automatiquement les fichiers de documentation prรชts pour les LLM (10x plus rapide) +- โœ… **Scraper universel** - Fonctionne avec N'IMPORTE QUEL site de documentation +- โœ… **Catรฉgorisation intelligente** - Organise automatiquement le contenu par sujet +- โœ… **Dรฉtection du langage de code** - Reconnaรฎt Python, JavaScript, C++, GDScript, etc. +- โœ… **24+ prรฉrรฉglages prรชts ร  l'emploi** - Godot, React, Vue, Django, FastAPI, et plus + +### ๐Ÿ“„ Support PDF +- โœ… **Extraction PDF basique** - Extraction de texte, code et images depuis les fichiers PDF +- โœ… **OCR pour PDF scannรฉs** - Extraction de texte depuis les documents numรฉrisรฉs +- โœ… **PDF protรฉgรฉs par mot de passe** - Gestion des PDF chiffrรฉs +- โœ… **Extraction de tableaux** - Extraction de tableaux complexes depuis les PDF +- โœ… **Traitement parallรจle** - 3x plus rapide pour les gros PDF +- โœ… **Cache intelligent** - 50 % plus rapide lors des rรฉ-exรฉcutions + +### ๐ŸŽฌ Extraction vidรฉo +- โœ… **YouTube et vidรฉos locales** - Extraction de transcriptions, code ร  l'รฉcran et connaissances structurรฉes depuis les vidรฉos +- โœ… **Analyse visuelle des images** - Extraction OCR depuis รฉditeurs de code, terminaux, diapositives et diagrammes +- โœ… **Dรฉtection automatique du GPU** - Installation automatique de la bonne version de PyTorch (CUDA/ROCm/MPS/CPU) +- โœ… **Amรฉlioration par IA** - Deux passes : nettoyage OCR + gรฉnรฉration d'un SKILL.md soignรฉ +- โœ… **Dรฉcoupage temporel** - Extraction de sections spรฉcifiques avec `--start-time` et `--end-time` +- โœ… **Support des playlists** - Traitement par lots de toutes les vidรฉos d'une playlist YouTube +- โœ… **Fallback Vision API** - Utilisation de Claude Vision pour les images OCR ร  faible confiance + +### ๐Ÿ™ Analyse de dรฉpรดts GitHub +- โœ… **Analyse approfondie du code** - Analyse AST pour Python, JavaScript, TypeScript, Java, C++, Go +- โœ… **Extraction d'API** - Fonctions, classes, mรฉthodes avec paramรจtres et types +- โœ… **Mรฉtadonnรฉes du dรฉpรดt** - README, arborescence, rรฉpartition des langages, รฉtoiles/forks +- โœ… **Issues et PR GitHub** - Rรฉcupรฉration des issues ouvertes/fermรฉes avec labels et jalons +- โœ… **CHANGELOG et versions** - Extraction automatique de l'historique des versions +- โœ… **Dรฉtection de conflits** - Comparaison entre les API documentรฉes et l'implรฉmentation rรฉelle +- โœ… **Intรฉgration MCP** - En langage naturel : ยซ Scraper le dรฉpรดt GitHub facebook/react ยป + +### ๐Ÿ”„ Scraping multi-sources unifiรฉ +- โœ… **Combinaison de sources multiples** - Mรฉlangez documentation + GitHub + PDF dans une seule compรฉtence +- โœ… **Dรฉtection de conflits** - Dรฉtection automatique des divergences entre docs et code +- โœ… **Fusion intelligente** - Rรฉsolution de conflits par rรจgles ou par IA +- โœ… **Rapports transparents** - Comparaison cรดte ร  cรดte avec avertissements โš ๏ธ +- โœ… **Analyse des lacunes documentaires** - Identification des docs obsolรจtes et fonctionnalitรฉs non documentรฉes +- โœ… **Source de vรฉritรฉ unique** - Une seule compรฉtence montrant ร  la fois l'intention (docs) et la rรฉalitรฉ (code) +- โœ… **Rรฉtrocompatibilitรฉ** - Les configurations ร  source unique hรฉritรฉes fonctionnent toujours + +### ๐Ÿค– Support multi-plateformes LLM +- โœ… **12 plateformes LLM** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown gรฉnรฉrique, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **Scraping universel** - La mรชme documentation fonctionne pour toutes les plateformes +- โœ… **Empaquetage spรฉcifique** - Formats optimisรฉs pour chaque LLM +- โœ… **Export en une commande** - Le flag `--target` sรฉlectionne la plateforme +- โœ… **Dรฉpendances optionnelles** - Installez seulement ce dont vous avez besoin +- โœ… **100 % rรฉtrocompatible** - Les workflows Claude existants restent inchangรฉs + +| Plateforme | Format | Upload | Amรฉlioration | API Key | Endpoint personnalisรฉ | +|------------|--------|--------|--------------|---------|----------------------| +| **Claude AI** | ZIP + YAML | โœ… Auto | โœ… Oui | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… Auto | โœ… Oui | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… Auto | โœ… Oui | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… Auto | โœ… Oui | MINIMAX_API_KEY | - | +| **Markdown gรฉnรฉrique** | ZIP | โŒ Manuel | โŒ Non | - | - | + +```bash +# Claude (par dรฉfaut - aucune modification nรฉcessaire !) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Markdown gรฉnรฉrique (export universel) +skill-seekers package output/react/ --target markdown +# Utilisez les fichiers markdown directement dans n'importe quel LLM +``` + +
+๐Ÿ”ง Utilisez votre propre fournisseur d'IA (endpoints compatibles OpenAI + abonnements, aucun crรฉdit Anthropic nรฉcessaire) + +L'รฉtape optionnelle d'**amรฉlioration** par IA (utilisรฉe par `create`, `scan` et `enhance`) ne nรฉcessite **pas** de clรฉ Anthropic. Vous avez trois faรงons de l'alimenter : + +**1. Utilisez un abonnement que vous payez dรฉjร  โ€” aucun crรฉdit API (mode agent LOCAL)** + +Skill Seekers peut dรฉlรฉguer ร  une CLI d'agent de codage ร  laquelle vous รชtes dรฉjร  connectรฉ, de sorte que l'amรฉlioration s'exรฉcute sur votre forfait existant plutรดt qu'avec des tokens API facturรฉs : + +```bash +skill-seekers create --agent codex # CLI OpenAI Codex โ†’ votre ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ votre Claude Pro/Max +``` + +Agents supportรฉs : `claude`, `codex`, `copilot`, `opencode`, `kimi` et `custom` +(associez `--agent custom` ร  `--agent-cmd " ..."` pour piloter n'importe quel autre outil). + +**2. N'importe quel fournisseur compatible OpenAI (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +Tous ces fournisseurs exposent un endpoint `/v1` compatible OpenAI. Pointez Skill Seekers vers l'un d'eux avec trois variables d'environnement โ€” il dรฉtecte `OPENAI_API_KEY`, et le SDK OpenAI honore automatiquement `OPENAI_BASE_URL` : + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # endpoint du fournisseur (voir tableau) +export OPENAI_MODEL="" # requis โ€” le dรฉfaut gpt-4o n'existera pas ailleurs +skill-seekers create +``` + +| Fournisseur | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> La dรฉtection du fournisseur retient la **premiรจre** variable d'environnement de clรฉ API trouvรฉe (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Dรฉfinissez `SKILL_SEEKER_PROVIDER` pour forcer un fournisseur spรฉcifique, ou assurez-vous que les clรฉs de prioritรฉ supรฉrieure ne sont pas dรฉfinies. + +**3. Endpoints compatibles Claude (ex. GLM, proxys)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) et Kimi/Moonshot (`MOONSHOT_API_KEY`) sont รฉgalement supportรฉs nativement. Consultez la **[rรฉfรฉrence des variables d'environnement](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** pour la liste complรจte, y compris les surcharges de modรจle par fournisseur. + +
+ +**Installation :** +```bash +# Installer le support Gemini +pip install skill-seekers[gemini] + +# Installer le support OpenAI +pip install skill-seekers[openai] + +# Installer le support MiniMax +pip install skill-seekers[minimax] + +# Installer toutes les plateformes LLM +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— Intรฉgrations de frameworks RAG + +- โœ… **LangChain Documents** - Export direct au format `Document` avec `page_content` + mรฉtadonnรฉes + - Idรฉal pour : chaรฎnes QA, rรฉcupรฉrateurs, stores vectoriels, agents + - Exemple : [Pipeline RAG LangChain](examples/langchain-rag-pipeline/) + - Guide : [Intรฉgration LangChain](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - Export au format `TextNode` avec IDs uniques + embeddings + - Idรฉal pour : moteurs de requรชtes, moteurs de chat, contexte de stockage + - Exemple : [Moteur de requรชtes LlamaIndex](examples/llama-index-query-engine/) + - Guide : [Intรฉgration LlamaIndex](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Format prรชt pour Pinecone** - Optimisรฉ pour l'insertion dans les bases vectorielles + - Idรฉal pour : recherche vectorielle en production, recherche sรฉmantique, recherche hybride + - Exemple : [Insertion Pinecone](examples/pinecone-upsert/) + - Guide : [Intรฉgration Pinecone](docs/integrations/PINECONE.md) + +**Export rapide :** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (universel) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Guide complet des pipelines RAG :** [Documentation des pipelines RAG](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  Intรฉgrations d'assistants de codage IA + +Transformez n'importe quelle documentation de framework en contexte de codage expert pour plus de 4 assistants IA : + +- โœ… **Cursor IDE** - Gรฉnรฉration de `.cursorrules` pour des suggestions de code alimentรฉes par l'IA + - Idรฉal pour : gรฉnรฉration de code spรฉcifique au framework, patterns cohรฉrents + - Fonctionne avec : Cursor IDE (fork de VS Code) + - Guide : [Intรฉgration Cursor](docs/integrations/CURSOR.md) + - Exemple : [Compรฉtence Cursor React](examples/cursor-react-skill/) + +- โœ… **Windsurf** - Personnalisation du contexte de l'assistant IA Windsurf avec `.windsurfrules` + - Idรฉal pour : assistance IA native dans l'IDE, codage en flux + - Fonctionne avec : Windsurf IDE par Codeium + - Guide : [Intรฉgration Windsurf](docs/integrations/WINDSURF.md) + - Exemple : [Contexte FastAPI Windsurf](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - Prompts systรจme + MCP pour l'agent VS Code + - Idรฉal pour : gรฉnรฉration de code agentique dans VS Code + - Fonctionne avec : extension Cline pour VS Code + - Guide : [Intรฉgration Cline](docs/integrations/CLINE.md) + - Exemple : [Assistant Django Cline](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - Serveurs de contexte pour une IA indรฉpendante de l'IDE + - Idรฉal pour : environnements multi-IDE (VS Code, JetBrains, Vim), fournisseurs LLM personnalisรฉs + - Fonctionne avec : tout IDE disposant du plugin Continue.dev + - Guide : [Intรฉgration Continue](docs/integrations/CONTINUE_DEV.md) + - Exemple : [Contexte universel Continue](examples/continue-dev-universal/) + +**Export rapide pour les outils de codage IA :** +```bash +# Pour n'importe quel assistant de codage IA (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ou --target markdown + +# Copier dans votre projet (exemple pour Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Ou pour Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Ou pour Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# Ou pour Continue.dev (serveur HTTP) +python examples/continue-dev-universal/context_server.py +# Configurer dans ~/.continue/config.json +``` + +**Hub d'intรฉgrations :** [Toutes les intรฉgrations de systรจmes IA](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ Architecture GitHub ร  trois flux +- โœ… **Analyse ร  triple flux** - Division des dรฉpรดts GitHub en flux Code, Docs et Insights +- โœ… **Analyseur de base de code unifiรฉ** - Fonctionne avec les URL GitHub ET les chemins locaux +- โœ… **C3.x comme profondeur d'analyse** - Choisissez 'basic' (1โ€“2 min) ou 'c3x' (20โ€“60 min) +- โœ… **Gรฉnรฉration de routeur amรฉliorรฉe** - Mรฉtadonnรฉes GitHub, dรฉmarrage rapide README, problรจmes courants +- โœ… **Intรฉgration des Issues** - Principaux problรจmes et solutions depuis les issues GitHub +- โœ… **Mots-clรฉs de routage intelligents** - Labels GitHub pondรฉrรฉs 2x pour une meilleure dรฉtection des sujets + +**Les trois flux expliquรฉs :** +- **Flux 1 : Code** - Analyse approfondie C3.x (patterns, exemples, guides, configurations, architecture) +- **Flux 2 : Docs** - Documentation du dรฉpรดt (README, CONTRIBUTING, docs/*.md) +- **Flux 3 : Insights** - Connaissances communautaires (issues, labels, รฉtoiles, forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# Analyser un dรฉpรดt GitHub avec les trois flux +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ou "basic" pour une analyse rapide + fetch_github_metadata=True +) + +# Accรฉder au flux code (analyse C3.x) +print(f"Design patterns: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Test examples: {result.code_analysis['c3_2_examples_count']}") + +# Accรฉder au flux docs (documentation du dรฉpรดt) +print(f"README: {result.github_docs['readme'][:100]}") + +# Accรฉder au flux insights (mรฉtadonnรฉes GitHub) +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"Common issues: {len(result.github_insights['common_problems'])}") +``` + +**Documentation complรจte** : [Rรฉsumรฉ de l'implรฉmentation ร  trois flux](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” Gestion intelligente des limites de dรฉbit et configuration +- โœ… **Systรจme de configuration multi-tokens** - Gรฉrez plusieurs comptes GitHub (personnel, professionnel, OSS) + - Stockage sรฉcurisรฉ de la configuration dans `~/.config/skill-seekers/config.json` (permissions 600) + - Stratรฉgies de limite de dรฉbit par profil : `prompt`, `wait`, `switch`, `fail` + - Dรฉlai d'expiration configurable par profil (dรฉfaut : 30 min, รฉvite les attentes indรฉfinies) + - Chaรฎne de repli intelligente : argument CLI โ†’ variable d'env โ†’ fichier de config โ†’ prompt + - Gestion des clรฉs API pour Claude, Gemini, OpenAI +- โœ… **Assistant de configuration interactif** - Interface terminal รฉlรฉgante pour une configuration facile + - Intรฉgration navigateur pour la crรฉation de tokens (ouverture automatique de GitHub, etc.) + - Validation des tokens et test de connexion + - Affichage visuel du statut avec code couleur +- โœ… **Gestionnaire intelligent de limites de dรฉbit** - Plus d'attentes indรฉfinies ! + - Avertissement prรฉalable sur les limites de dรฉbit (60/heure vs 5000/heure) + - Dรฉtection en temps rรฉel depuis les rรฉponses de l'API GitHub + - Compteurs ร  rebours en direct avec progression + - Basculement automatique de profil en cas de limite atteinte + - Quatre stratรฉgies : prompt (demander), wait (compte ร  rebours), switch (essayer un autre), fail (abandonner) +- โœ… **Capacitรฉ de reprise** - Continuez les tรขches interrompues + - Sauvegarde automatique ร  intervalles configurables (dรฉfaut : 60 sec) + - Liste de toutes les tรขches reprises avec dรฉtails de progression + - Nettoyage automatique des anciennes tรขches (dรฉfaut : 7 jours) +- โœ… **Support CI/CD** - Mode non-interactif pour l'automatisation + - Flag `--non-interactive` pour un รฉchec rapide sans prompts + - Flag `--profile` pour sรฉlectionner un compte GitHub spรฉcifique + - Messages d'erreur clairs pour les logs de pipeline + +**Configuration rapide :** +```bash +# Configuration unique (5 minutes) +skill-seekers config --github + +# Utiliser un profil spรฉcifique pour les dรฉpรดts privรฉs +skill-seekers create mycompany/private-repo --profile work + +# Mode CI/CD (รฉchec rapide, sans prompts) +skill-seekers create owner/repo --non-interactive + +# Reprendre une tรขche interrompue +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Stratรฉgies de limite de dรฉbit :** +- **prompt** (par dรฉfaut) - Demande quoi faire en cas de limite (attendre, basculer, configurer un token, annuler) +- **wait** - Attend automatiquement avec un compte ร  rebours (respecte le dรฉlai d'expiration) +- **switch** - Essaie automatiquement le profil disponible suivant (pour les configurations multi-comptes) +- **fail** - ร‰choue immรฉdiatement avec un message d'erreur clair (parfait pour le CI/CD) + +### ๐ŸŽฏ Compรฉtence Bootstrap - Auto-hรฉbergement + +Gรฉnรฉrez skill-seekers lui-mรชme en tant que compรฉtence ร  utiliser dans votre agent IA (Claude Code, Kimi, Codex, etc.) : + +```bash +# Gรฉnรฉrer la compรฉtence +./scripts/bootstrap_skill.sh + +# Installer dans Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**Ce que vous obtenez :** +- โœ… **Documentation complรจte de la compรฉtence** - Toutes les commandes CLI et patterns d'utilisation +- โœ… **Rรฉfรฉrence des commandes CLI** - Chaque outil et ses options documentรฉs +- โœ… **Exemples de dรฉmarrage rapide** - Workflows courants et bonnes pratiques +- โœ… **Documentation API auto-gรฉnรฉrรฉe** - Analyse de code, patterns et exemples + +### ๐Ÿ” Dรฉpรดts de configuration privรฉs +- โœ… **Sources de configuration basรฉes sur Git** - Rรฉcupรฉrez les configurations depuis des dรฉpรดts Git privรฉs/d'รฉquipe +- โœ… **Gestion multi-sources** - Enregistrez un nombre illimitรฉ de dรฉpรดts GitHub, GitLab, Bitbucket +- โœ… **Collaboration d'รฉquipe** - Partagez des configurations personnalisรฉes au sein d'รฉquipes de 3 ร  5 personnes +- โœ… **Support entreprise** - Montรฉe en charge jusqu'ร  500+ dรฉveloppeurs avec rรฉsolution par prioritรฉ +- โœ… **Authentification sรฉcurisรฉe** - Tokens via variables d'environnement (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **Cache intelligent** - Clonage unique, mises ร  jour automatiques par pull +- โœ… **Mode hors ligne** - Travaillez avec les configurations en cache en l'absence de connexion + +### ๐Ÿค– Analyse de base de code (C3.x) + +**C3.4 : Extraction de patterns de configuration avec amรฉlioration IA** +- โœ… **9 formats de configuration** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 types de patterns** - Configurations de base de donnรฉes, API, journalisation, cache, e-mail, authentification, serveur +- โœ… **Amรฉlioration par IA** - Analyse IA optionnelle en mode double (API + LOCAL) + - Explique ce que fait chaque configuration + - Suggรจre des bonnes pratiques et amรฉliorations + - **Analyse de sรฉcuritรฉ** - Dรฉtecte les secrets codรฉs en dur, les identifiants exposรฉs +- โœ… **Documentation automatique** - Gรฉnรจre une documentation JSON + Markdown de toutes les configurations +- โœ… **Intรฉgration MCP** - Outil `extract_config_patterns` avec support d'amรฉlioration + +**C3.3 : Guides pratiques amรฉliorรฉs par IA** +- โœ… **Amรฉlioration IA complรจte** - Transforme les guides basiques en tutoriels professionnels +- โœ… **5 amรฉliorations automatiques** - Descriptions d'รฉtapes, dรฉpannage, prรฉrequis, รฉtapes suivantes, cas d'usage +- โœ… **Support en mode double** - Mode API (Claude API) ou mode LOCAL (CLI Claude Code) +- โœ… **Aucun coรปt en mode LOCAL** - Amรฉlioration GRATUITE avec votre abonnement Claude Code Max +- โœ… **Transformation qualitative** - Templates de 75 lignes โ†’ guides complets de 500+ lignes + +**Utilisation :** +```bash +# Analyse rapide (1โ€“2 min, fonctionnalitรฉs basiques uniquement) +skill-seekers scan tests/ --quick + +# Analyse complรจte avec IA (20โ€“60 min, toutes les fonctionnalitรฉs) +skill-seekers scan tests/ --comprehensive + +# Avec amรฉlioration par IA +skill-seekers scan tests/ --enhance +``` + +**Documentation complรจte :** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ Prรฉrรฉglages de workflow d'amรฉlioration + +Pipelines d'amรฉlioration rรฉutilisables dรฉfinis en YAML qui contrรดlent comment l'IA transforme votre documentation brute en une compรฉtence soignรฉe. + +- โœ… **5 prรฉrรฉglages intรฉgrรฉs** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **Prรฉrรฉglages dรฉfinis par l'utilisateur** โ€” Ajoutez des workflows personnalisรฉs dans `~/.config/skill-seekers/workflows/` +- โœ… **Chaรฎnage de workflows** โ€” Chaรฎnez deux workflows ou plus dans une seule commande +- โœ… **CLI complet** โ€” Lister, inspecter, copier, ajouter, supprimer et valider les workflows + +```bash +# Appliquer un workflow unique +skill-seekers create ./my-project --enhance-workflow security-focus + +# Chaรฎner plusieurs workflows (appliquรฉs dans l'ordre) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# Gรฉrer les prรฉrรฉglages +skill-seekers workflows list # Lister tous (intรฉgrรฉs + utilisateur) +skill-seekers workflows show security-focus # Afficher le contenu YAML +skill-seekers workflows copy security-focus # Copier dans le rรฉpertoire utilisateur pour รฉdition +skill-seekers workflows add ./my-workflow.yaml # Installer un prรฉrรฉglage personnalisรฉ +skill-seekers workflows remove my-workflow # Supprimer un prรฉrรฉglage utilisateur +skill-seekers workflows validate security-focus # Valider la structure du prรฉrรฉglage + +# Copier plusieurs ร  la fois +skill-seekers workflows copy security-focus minimal api-documentation + +# Ajouter plusieurs fichiers ร  la fois +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Supprimer plusieurs ร  la fois +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**Format YAML des prรฉrรฉglages :** +```yaml +name: security-focus +description: "Security-focused review: vulnerabilities, auth, data handling" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "Review for OWASP top 10 and common security vulnerabilities..." + - name: auth-review + type: custom + prompt: "Examine authentication and authorisation patterns..." + uses_history: true +``` + +### โšก Performance et montรฉe en charge +- โœ… **Mode asynchrone** - Scraping 2โ€“3x plus rapide avec async/await (flag `--async`) +- โœ… **Support des grandes documentations** - Gestion de documents de 10Kโ€“40K+ pages avec dรฉcoupage intelligent +- โœ… **Compรฉtences Router/Hub** - Routage intelligent vers des sous-compรฉtences spรฉcialisรฉes +- โœ… **Scraping parallรจle** - Traitement simultanรฉ de plusieurs compรฉtences +- โœ… **Points de contrรดle/Reprise** - Ne perdez jamais la progression lors de longs scrapings +- โœ… **Systรจme de cache** - Scrapez une fois, reconstruisez instantanรฉment + +### ๐Ÿค– Gรฉnรฉration de compรฉtences indรฉpendante de l'agent +- โœ… **Support multi-agents** - Gรฉnรฉrez des compรฉtences pour Claude, Kimi, Codex, Copilot, OpenCode ou tout agent personnalisรฉ via le flag `--agent` +- โœ… **Commandes d'agent personnalisรฉes** - Utilisez `--agent-cmd` pour spรฉcifier une commande CLI d'agent personnalisรฉe pour l'amรฉlioration +- โœ… **Flags universels** - `--agent` et `--agent-cmd` disponibles sur toutes les commandes (create, scrape, github, pdf, etc.) + +### ๐Ÿ“ฆ Pipeline Marketplace +- โœ… **Publication sur le marketplace** - Publiez des compรฉtences dans les dรฉpรดts du marketplace de plugins Claude Code +- โœ… **Pipeline de bout en bout** - De la source de documentation ร  l'entrรฉe publiรฉe sur le marketplace + +### โœ… Assurance qualitรฉ +- โœ… **Entiรจrement testรฉ** - 3 700+ tests avec couverture complรจte + +--- + +## ๐Ÿ“ฆ Installation + +```bash +# Installation basique (scraping de documentation, analyse GitHub, PDF, empaquetage) +pip install skill-seekers + +# Avec support de toutes les plateformes LLM +pip install skill-seekers[all-llms] + +# Avec serveur MCP +pip install skill-seekers[mcp] + +# Tout inclus +pip install skill-seekers[all] +``` + +**Besoin d'aide pour choisir ?** Lancez l'assistant de configuration : +```bash +skill-seekers-setup +``` + +### Options d'installation + +| Installation | Fonctionnalitรฉs | +|-------------|-----------------| +| `pip install skill-seekers` | Scraping, analyse GitHub, PDF, toutes les plateformes | +| `pip install skill-seekers[gemini]` | + Support Google Gemini | +| `pip install skill-seekers[openai]` | + Support OpenAI ChatGPT | +| `pip install skill-seekers[all-llms]` | + Toutes les plateformes LLM | +| `pip install skill-seekers[mcp]` | + Serveur MCP pour Claude Code, Cursor, etc. | +| `pip install skill-seekers[video]` | + Extraction de transcriptions et mรฉtadonnรฉes YouTube/Vimeo | +| `pip install skill-seekers[video-full]` | + Transcription Whisper et extraction visuelle d'images | +| `pip install skill-seekers[jupyter]` | + Support des notebooks Jupyter | +| `pip install skill-seekers[pptx]` | + Support PowerPoint | +| `pip install skill-seekers[confluence]` | + Support wiki Confluence | +| `pip install skill-seekers[notion]` | + Support des pages Notion | +| `pip install skill-seekers[rss]` | + Support des flux RSS/Atom | +| `pip install skill-seekers[chat]` | + Support des exports chat Slack/Discord | +| `pip install skill-seekers[asciidoc]` | + Support des documents AsciiDoc | +| `pip install skill-seekers[all]` | Tout activรฉ | + +> **Dรฉpendances visuelles vidรฉo (compatibles GPU) :** Aprรจs avoir installรฉ `skill-seekers[video-full]`, exรฉcutez +> `skill-seekers create --setup` pour dรฉtecter automatiquement votre GPU et installer la bonne variante +> de PyTorch + easyocr. C'est la mรฉthode recommandรฉe pour installer les dรฉpendances d'extraction visuelle. + +--- + +## ๐Ÿš€ Workflow d'installation en une commande + +**Le moyen le plus rapide d'aller de la configuration ร  la compรฉtence uploadรฉe โ€” automatisation complรจte :** + +```bash +# Installer la compรฉtence React depuis les configurations officielles (upload automatique vers Claude) +skill-seekers install --config react + +# Installer depuis un fichier de configuration local +skill-seekers install --config configs/custom.json + +# Installer sans uploader (empaquetage uniquement) +skill-seekers install --config django --no-upload + +# Prรฉvisualiser le workflow sans l'exรฉcuter +skill-seekers install --config react --dry-run +``` + +**Durรฉe :** 20โ€“45 minutes au total | **Qualitรฉ :** Prรชt pour la production (9/10) | **Coรปt :** Gratuit + +**Phases exรฉcutรฉes :** +``` +๐Ÿ“ฅ PHASE 1 : Rรฉcupรฉration de la configuration (si un nom de config est fourni) +๐Ÿ“– PHASE 2 : Scraping de la documentation +โœจ PHASE 3 : Amรฉlioration par IA (OBLIGATOIRE โ€” pas d'option pour passer) +๐Ÿ“ฆ PHASE 4 : Empaquetage de la compรฉtence +โ˜๏ธ PHASE 5 : Upload vers Claude (optionnel, nรฉcessite une clรฉ API) +``` + +**Prรฉrequis :** +- Variable d'environnement ANTHROPIC_API_KEY (pour l'upload automatique) +- Abonnement Claude Code Max (pour l'amรฉlioration IA locale), ou utilisez `--agent` pour sรฉlectionner un autre agent IA + +--- + +## ๐Ÿ“Š Matrice de fonctionnalitรฉs + +Skill Seekers prend en charge **12 plateformes LLM**, **8 cibles RAG/vectorielles**, **18 types de sources** et une paritรฉ fonctionnelle complรจte sur toutes les cibles. + +**Plateformes :** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown gรฉnรฉrique, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**Types de sources :** Sites de documentation, dรฉpรดts GitHub, PDF, Word (.docx), EPUB, Vidรฉo, Bases de code locales, Notebooks Jupyter, HTML local, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), Flux RSS/Atom, Pages de manuel, Wikis Confluence, Pages Notion, Exports chat Slack/Discord + +Consultez la [matrice complรจte des fonctionnalitรฉs](docs/reference/FEATURE_MATRIX.md) pour le support dรฉtaillรฉ par plateforme et fonctionnalitรฉ. + +### Comparaison rapide des plateformes + +| Fonctionnalitรฉ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|----------------|--------|--------|--------|---------|----------| +| Format | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Upload | โœ… API | โœ… API | โœ… API | โœ… API | โŒ Manuel | +| Amรฉlioration | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ Aucune | +| Tous les modes de compรฉtence | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## Exemples d'utilisation + +### Scraping de documentation + +```bash +# Scraper un site de documentation +skill-seekers create --config configs/react.json + +# Scraping rapide sans configuration +skill-seekers create https://react.dev --name react + +# En mode asynchrone (3x plus rapide) +skill-seekers create --config configs/godot.json --async --workers 8 + +# Utiliser un agent IA spรฉcifique pour l'amรฉlioration +skill-seekers create --config configs/react.json --agent kimi +``` + +### Extraction PDF + +```bash +# Extraction PDF basique +skill-seekers create --pdf docs/manual.pdf --name myskill + +# Fonctionnalitรฉs avancรฉes +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Extraire les tableaux + --parallel \ # Traitement parallรจle rapide + --workers 8 # Utiliser 8 cล“urs CPU + +# PDF scannรฉs (nรฉcessite : pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Extraction vidรฉo + +```bash +# Installer le support vidรฉo +pip install skill-seekers[video] # Transcriptions + mรฉtadonnรฉes +pip install skill-seekers[video-full] # + Transcription Whisper + extraction visuelle + +# Dรฉtecter automatiquement le GPU et installer les dรฉpendances visuelles (PyTorch + easyocr) +skill-seekers create --setup + +# Extraire depuis une vidรฉo YouTube +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# Extraire depuis une playlist YouTube +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Extraire depuis un fichier vidรฉo local +skill-seekers create --video-file recording.mp4 --name myrecording + +# Extraire avec analyse visuelle des images (nรฉcessite les dรฉpendances video-full) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# Avec amรฉlioration IA (nettoyage OCR + gรฉnรฉration d'un SKILL.md soignรฉ) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Dรฉcouper une section spรฉcifique d'une vidรฉo (supporte les secondes, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# Utiliser Vision API pour les images OCR ร  faible confiance (nรฉcessite ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Reconstruire la compรฉtence depuis des donnรฉes extraites prรฉcรฉdemment (sans tรฉlรฉchargement) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Guide complet :** Consultez [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) pour la rรฉfรฉrence CLI complรจte, +> les dรฉtails du pipeline visuel, les options d'amรฉlioration IA et le dรฉpannage. + +### Analyse de dรฉpรดts GitHub + +```bash +# Scraping basique de dรฉpรดt +skill-seekers create facebook/react + +# Avec authentification (limites de dรฉbit plus รฉlevรฉes) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Personnaliser le contenu inclus +skill-seekers create django/django \ + --include-issues \ # Extraire les issues GitHub + --max-issues 100 \ # Limiter le nombre d'issues + --include-changelog # Extraire CHANGELOG.md +``` + +### Scraping multi-sources unifiรฉ + +**Combinez documentation + GitHub + PDF en une compรฉtence unifiรฉe avec dรฉtection de conflits :** + +```bash +# Utiliser les configurations unifiรฉes existantes +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# Ou crรฉer une configuration unifiรฉe +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**La dรฉtection de conflits trouve automatiquement :** +- ๐Ÿ”ด **Absent du code** (รฉlevรฉ) : Documentรฉ mais non implรฉmentรฉ +- ๐ŸŸก **Absent de la documentation** (moyen) : Implรฉmentรฉ mais non documentรฉ +- โš ๏ธ **Incompatibilitรฉ de signature** : Paramรจtres/types diffรฉrents +- โ„น๏ธ **Incompatibilitรฉ de description** : Explications diffรฉrentes + +**Guide complet :** Consultez [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) pour la documentation complรจte. + +### Dรฉpรดts de configuration privรฉs + +**Partagez des configurations personnalisรฉes entre รฉquipes via des dรฉpรดts Git privรฉs :** + +```bash +# Option 1 : Utilisation des outils MCP (recommandรฉ) +# Enregistrer le dรฉpรดt privรฉ de votre รฉquipe +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Rรฉcupรฉrer la configuration depuis le dรฉpรดt d'รฉquipe +fetch_config(source="team", config_name="internal-api") +``` + +**Plateformes supportรฉes :** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Guide complet :** Consultez [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) pour la documentation complรจte. + +## Comment รงa marche + +```mermaid +graph LR + A[Site de documentation] --> B[Skill Seekers] + B --> C[Scraper] + B --> D[Amรฉlioration IA] + B --> E[Empaqueteur] + C --> F[Rรฉfรฉrences organisรฉes] + D --> F + F --> E + E --> G[Compรฉtence IA .zip] + G --> H[Upload vers la plateforme IA] +``` + +0. **Dรฉtection de llms.txt** - Vรฉrifie d'abord llms-full.txt, llms.txt, llms-small.txt (fait partie de la dรฉcouverte SPA intelligente) +1. **Scraping** : Extraction de toutes les pages de la documentation +2. **Catรฉgorisation** : Organisation du contenu par thรจmes (API, guides, tutoriels, etc.) +3. **Amรฉlioration** : L'IA analyse la documentation et crรฉe un SKILL.md complet avec des exemples (supporte plusieurs agents via `--agent`) +4. **Empaquetage** : Regroupement de tout dans un fichier `.zip` prรชt pour la plateforme + +## Architecture + +Le systรจme est organisรฉ en **8 modules principaux** et **5 modules utilitaires** (~200 classes au total) : + +![Vue d'ensemble des packages](docs/UML/exports/00_package_overview.png) + +| Module | Objectif | Classes clรฉs | +|--------|----------|--------------| +| **CLICore** | Rรฉpartiteur de commandes faรงon Git | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 extracteurs par type de source | `DocToSkillConverter`, `DocumentSkillBuilder` (couche de construction partagรฉe), `UnifiedScraper` | +| **Adaptors** | 20+ formats de plateformes de sortie | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | Pipeline d'analyse de code C3.x | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 dรฉtecteurs GoF | +| **Enhancement** | Amรฉlioration de compรฉtences par IA via `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Empaqueter, uploader, installer les compรฉtences | `PackageSkill`, `InstallAgent` | +| **MCP** | Serveur FastMCP (40 outils) | `SkillSeekerMCPServer`, 10 modules d'outils | +| **Sync** | Dรฉtection des changements de documentation | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Modules utilitaires : **Parsers** (28 parsers CLI), **Storage** (S3/GCS/Azure), **Embedding** (vecteurs multi-fournisseurs), **Benchmark** (performance), **Utilities** (16 helpers partagรฉs). + +Diagrammes UML complets : **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | Projet StarUML : `docs/UML/skill_seekers.mdj` | Rรฉfรฉrence API HTML : `docs/UML/html/` + +## ๐Ÿ“‹ Prรฉrequis + +**Avant de commencer, assurez-vous d'avoir :** + +1. **Python 3.10 ou supรฉrieur** - [Tรฉlรฉcharger](https://www.python.org/downloads/) | Vรฉrifier : `python3 --version` +2. **Git** - [Tรฉlรฉcharger](https://git-scm.com/) | Vรฉrifier : `git --version` +3. **15 ร  30 minutes** pour la premiรจre installation + +**Premiรจre utilisation ?** โ†’ **[Commencez ici : Guide de dรฉmarrage rapide infaillible](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Uploader des compรฉtences vers Claude + +Une fois votre compรฉtence empaquetรฉe, vous devez l'uploader vers Claude : + +### Option 1 : Upload automatique (via API) + +```bash +# Dรฉfinir votre clรฉ API (une seule fois) +export ANTHROPIC_API_KEY=sk-ant-... + +# Empaqueter et uploader automatiquement +skill-seekers package output/react/ --upload + +# OU uploader un .zip existant +skill-seekers upload output/react.zip +``` + +### Option 2 : Upload manuel (sans clรฉ API) + +```bash +# Empaqueter la compรฉtence +skill-seekers package output/react/ +# โ†’ Crรฉe output/react.zip + +# Puis uploader manuellement : +# - Rendez-vous sur https://claude.ai/skills +# - Cliquez sur ยซ Upload Skill ยป +# - Sรฉlectionnez output/react.zip +``` + +### Option 3 : MCP (Claude Code) + +``` +Dans Claude Code, demandez simplement : +ยซ Empaqueter et uploader la compรฉtence React ยป +``` + +--- + +## ๐Ÿค– Installation dans les agents IA + +Skill Seekers peut installer automatiquement des compรฉtences dans 19 agents de codage IA. + +```bash +# Installer dans un agent spรฉcifique +skill-seekers install-agent output/react/ --agent cursor + +# Installer dans IBM Bob (local au projet : .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Installer dans tous les agents ร  la fois +skill-seekers install-agent output/react/ --agent all + +# Prรฉvisualiser sans installer +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Agents supportรฉs + +| Agent | Chemin | Type | +|-------|--------|------| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Projet | +| **VS Code / Copilot** | `.github/skills/` | Projet | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Projet | +| **Cline** | `.cline/skills/` | Projet | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Projet | +| **Kilo Code** | `.kilo/skills/` | Projet | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Projet | + +--- + +## ๐Ÿ”Œ Intรฉgration MCP (40 outils) + +Skill Seekers inclut un serveur MCP utilisable depuis Claude Code, Cursor, Windsurf, VS Code + Cline ou IntelliJ IDEA. + +```bash +# Mode stdio (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# Mode HTTP (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Configuration automatique de tous les agents en une fois +./setup_mcp.sh +``` + +**Les 40 outils disponibles :** +- **Noyau (9) :** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **ร‰tendu (10) :** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Bases vectorielles (4) :** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Cloud (3) :** `cloud_upload`, `cloud_download`, `cloud_list` + +**Guide complet :** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ Configuration + +### Prรฉrรฉglages disponibles (24+) + +```bash +# Lister tous les prรฉrรฉglages +# skill-seekers list-configs # Non disponible dans la v3.7.0 +``` + +| Catรฉgorie | Prรฉrรฉglages | +|-----------|-------------| +| **Frameworks Web** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Dรฉveloppement de jeux** | `godot`, `pygame`, `unity` | +| **Outils et DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **Unifiรฉ (Docs + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified`, et plus | + +### Crรฉer votre propre configuration + +```bash +# Option 1 : Interactif +skill-seekers create --interactive + +# Option 2 : Copier et modifier un prรฉrรฉglage +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Structure du fichier de configuration + +```json +{ + "name": "myframework", + "description": "When to use this skill", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Oรน stocker les configurations + +L'outil cherche dans cet ordre : +1. Chemin exact tel que fourni +2. `./configs/` (rรฉpertoire courant) +3. `~/.config/skill-seekers/configs/` (rรฉpertoire de configuration utilisateur) +4. API SkillSeekersWeb.com (configurations prรฉdรฉfinies) + +--- + +## ๐Ÿ“Š Ce qui est gรฉnรฉrรฉ + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Donnรฉes brutes scrapรฉes +โ”‚ โ”œโ”€โ”€ pages/ # Fichiers JSON (un par page) +โ”‚ โ””โ”€โ”€ summary.json # Vue d'ensemble +โ”‚ +โ””โ”€โ”€ godot/ # La compรฉtence + โ”œโ”€โ”€ SKILL.md # Amรฉliorรฉ avec de vrais exemples + โ”œโ”€โ”€ references/ # Documentation catรฉgorisรฉe + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # Vide (ajoutez les vรดtres) + โ””โ”€โ”€ assets/ # Vide (ajoutez les vรดtres) +``` + +--- + +## ๐Ÿ› Dรฉpannage + +### Aucun contenu extrait ? +- Vรฉrifiez votre sรฉlecteur `main_content` +- Essayez : `article`, `main`, `div[role="main"]` + +### Les donnรฉes existent mais ne sont pas utilisรฉes ? +```bash +# Forcer un nouveau scraping +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### Catรฉgorisation insatisfaisante ? +Modifiez la section `categories` de la configuration avec de meilleurs mots-clรฉs. + +### Vous voulez mettre ร  jour la documentation ? +```bash +# Supprimer les anciennes donnรฉes et re-scraper +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### L'amรฉlioration ne fonctionne pas ? +```bash +# Vรฉrifier si la clรฉ API est dรฉfinie +echo $ANTHROPIC_API_KEY + +# Essayer le mode LOCAL ร  la place (utilise Claude Code Max, pas besoin de clรฉ API) +skill-seekers enhance output/react/ --mode LOCAL + +# Surveiller l'รฉtat de l'amรฉlioration en arriรจre-plan +skill-seekers enhance-status output/react/ --watch +``` + +### Problรจmes de limite de dรฉbit GitHub ? +```bash +# Dรฉfinir un token GitHub (5000 req/heure vs 60/heure en anonyme) +export GITHUB_TOKEN=ghp_your_token_here + +# Ou configurer plusieurs profils +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ Performance + +| Tรขche | Durรฉe | Notes | +|-------|-------|-------| +| Scraping (synchrone) | 15โ€“45 min | Premiรจre fois uniquement, basรฉ sur les threads | +| Scraping (asynchrone) | 5โ€“15 min | 2โ€“3x plus rapide avec le flag `--async` | +| Construction | 1โ€“3 min | Reconstruction rapide depuis le cache | +| Reconstruction | <1 min | Avec `--skip-scrape` | +| Amรฉlioration (LOCAL) | 30โ€“60 sec | Utilise Claude Code Max | +| Amรฉlioration (API) | 20โ€“40 sec | Nรฉcessite une clรฉ API | +| Vidรฉo (transcription) | 1โ€“3 min | YouTube/local, transcription uniquement | +| Vidรฉo (visuel) | 5โ€“15 min | + Extraction OCR d'images | +| Empaquetage | 5โ€“10 sec | Crรฉation finale du .zip | + +--- + +## ๐Ÿ†• Nouveautรฉs de la v3.6.0 + +### Prรฉrรฉglages de workflow +Contrรดlez la profondeur d'analyse avec `--preset` : + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Rapide, en surface +skill-seekers create https://docs.react.dev/ --preset standard # ร‰quilibrรฉ (par dรฉfaut) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Approfondi, exhaustif +``` + +### Flags de cycle de vie +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Aperรงu sans scraping +skill-seekers create https://docs.react.dev/ --fresh # Ignorer le cache, re-scraping complet +skill-seekers create https://docs.react.dev/ --resume # Reprendre une tรขche interrompue +skill-seekers create https://docs.react.dev/ --skip-scrape # Rรฉ-empaqueter la sortie existante +``` + +### Health Check et utilitaires +```bash +skill-seekers doctor # Diagnostiquer l'installation et l'environnement +skill-seekers sync-config # Dรฉtecter la dรฉrive de configuration +skill-seekers stream # Ingestion en streaming pour les grandes documentations +skill-seekers update output/react/ # Mise ร  jour incrรฉmentale +skill-seekers multilang # Gรฉnรฉration de compรฉtences multilingues +skill-seekers quality output/react/ # Rapport de qualitรฉ (ajoutez --threshold 7 pour bloquer : code de sortie non nul en dessous de 7/10) +``` + +### Options de chunking RAG (package) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Publication sur le marketplace +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Dรฉpendances optionnelles supplรฉmentaires +| Extra | Installation | Objectif | +|-------|--------------|----------| +| `browser` | `pip install "skill-seekers[browser]"` | Playwright headless pour les sites SPA | +| `embedding` | `pip install "skill-seekers[embedding]"` | Support du serveur d'embeddings | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` etc. | Upload vers le stockage cloud | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | Dรฉpendances combinรฉes d'upload vers bases vectorielles | + +--- + +## ๐Ÿ“š Documentation + +### Premiers pas +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **COMMENCEZ ICI** si vous รชtes nouveau ! +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Dรฉmarrage rapide pour utilisateurs expรฉrimentรฉs +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problรจmes courants et solutions +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - Aide-mรฉmoire sur une page + +### Architecture +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - Vue d'ensemble de l'architecture UML avec 14 diagrammes +- **[docs/UML/exports/](docs/UML/exports/)** - Exports PNG des diagrammes (vue d'ensemble des packages + 13 diagrammes de classes) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Rรฉfรฉrence API HTML complรจte (toutes les classes, opรฉrations, attributs) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - Fichier projet StarUML (ร  ouvrir avec [StarUML](https://staruml.io/)) + +### Guides +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - Gรฉrer les documentations de 10Kโ€“40K+ pages +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - Guide des modes d'amรฉlioration IA +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - Configuration de l'intรฉgration MCP +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - Scraping multi-sources +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Guide d'extraction vidรฉo + +### Guides d'intรฉgration +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - RAG LangChain +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - IDE Cursor +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - IDE Windsurf +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - Tous les pipelines RAG + +--- + +## ๐Ÿ“ Licence + +Licence MIT - voir le fichier [LICENSE](LICENSE) pour plus de dรฉtails + +--- + +Bonne crรฉation de compรฉtences ! ๐Ÿš€ + +--- + +## ๐Ÿ”’ Sรฉcuritรฉ + +[![Badge d'รฉvaluation de sรฉcuritรฉ MseeP.ai](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› Sponsors + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” une plateforme d'infรฉrence IA full-modal compatible OpenAI. Skill Seekers la prend en charge comme cible d'empaquetage/amรฉlioration via `--target atlas` avec `ATLAS_API_KEY`. diff --git a/README.hi.md b/README.hi.md new file mode 100644 index 0000000..7c300d9 --- /dev/null +++ b/README.hi.md @@ -0,0 +1,1377 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | เคนเคฟเคจเฅเคฆเฅ€ | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **เคฎเคถเฅ€เคจ เค…เคจเฅเคตเคพเคฆ เคธเฅ‚เคšเคจเคพ** +> +> เคฏเคน เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ AI เคฆเฅเคตเคพเคฐเคพ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค…เคจเฅเคตเคพเคฆเคฟเคค เค•เคฟเคฏเคพ เค—เคฏเคพ เคนเฅˆเฅค เคนเคฎ เค—เฅเคฃเคตเคคเฅเคคเคพ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค•เคฐเคจเฅ‡ เค•เคพ เคชเฅเคฐเคฏเคพเคธ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚, เคฒเฅ‡เค•เคฟเคจ เค…เคถเฅเคฆเฅเคง เค…เคญเคฟเคตเฅเคฏเค•เฅเคคเคฟเคฏเคพเค เคนเฅ‹ เคธเค•เคคเฅ€ เคนเฅˆเค‚เฅค +> +> เค…เคจเฅเคตเคพเคฆ เคธเฅเคงเคพเคฐเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) เคชเคฐ เคธเคฎเฅเคชเคฐเฅเค• เค•เคฐเฅ‡เค‚! เค†เคชเค•เฅ€ เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพ เคนเคฎเคพเคฐเฅ‡ เคฒเคฟเค เคฌเคนเฅเคค เคฎเฅ‚เคฒเฅเคฏเคตเคพเคจ เคนเฅˆเฅค + +[![เคธเค‚เคธเฅเค•เคฐเคฃ](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![เคฒเคพเค‡เคธเฅ‡เค‚เคธ: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP เคเค•เฅ€เค•เคฐเคฃ](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![เคชเคฐเฅ€เค•เฅเคทเคฃ เคชเคพเคธ](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![เคชเคฐเคฟเคฏเฅ‹เคœเคจเคพ เคฌเฅ‹เคฐเฅเคก](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI เคธเค‚เคธเฅเค•เคฐเคฃ](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - เคกเคพเค‰เคจเคฒเฅ‹เคก](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python เคธเค‚เคธเฅเค•เคฐเคฃ](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![เคตเฅ‡เคฌเคธเคพเค‡เคŸ](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter Follow](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  AI เคธเคฟเคธเฅเคŸเคฎ เค•เฅ‡ เคฒเคฟเค เคกเฅ‡เคŸเคพ เคฒเฅ‡เคฏเคฐเฅค** Skill Seekers เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸเฅ‹เค‚, GitHub เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€, PDF, เคตเฅ€เคกเคฟเคฏเฅ‹, Jupyter เคจเฅ‹เคŸเคฌเฅเค•, เคตเคฟเค•เฅ€ เค”เคฐ 10+ เค…เคจเฅเคฏ เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐเฅ‹เค‚ เค•เฅ‹ เคธเค‚เคฐเคšเคฟเคค เคœเฅเคžเคพเคจ เคธเค‚เคชเคคเฅเคคเคฟ เคฎเฅ‡เค‚ เคฌเคฆเคฒเคคเคพ เคนเฅˆโ€”เคœเฅ‹ เคฎเคฟเคจเคŸเฅ‹เค‚ เคฎเฅ‡เค‚ AI เค•เฅŒเคถเคฒ (Claude, Gemini, OpenAI), RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ (LangChain, LlamaIndex, Pinecone) เค”เคฐ AI เค•เฅ‹เคกเคฟเค‚เค— เคธเคนเคพเคฏเค•เฅ‹เค‚ (Cursor, Windsurf, Cline) เค•เฅ‹ เคถเค•เฅเคคเคฟ เคชเฅเคฐเคฆเคพเคจ เค•เคฐ เคธเค•เคคเฅ€ เคนเฅˆเค‚เฅค + +> ๐ŸŒ **[SkillSeekersWeb.com เคชเคฐ เคœเคพเคเค](https://skillseekersweb.com/)** - 24+ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ เคฌเฅเคฐเคพเค‰เคœเคผ เค•เคฐเฅ‡เค‚, เค…เคชเคจเฅ‡ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเคพเคเคพ เค•เคฐเฅ‡เค‚ เค”เคฐ เคชเฅ‚เคฐเฅเคฃ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคฆเฅ‡เค–เฅ‡เค‚! + +> ๐Ÿ“‹ **[เคตเคฟเค•เคพเคธ เคฐเฅ‹เคกเคฎเฅˆเคช เค”เคฐ เค•เคพเคฐเฅเคฏ เคฆเฅ‡เค–เฅ‡เค‚](https://github.com/users/yusufkaraaslan/projects/2)** - 10 เคถเฅเคฐเฅ‡เคฃเคฟเคฏเฅ‹เค‚ เคฎเฅ‡เค‚ 134 เค•เคพเคฐเฅเคฏ, เค•เคฟเคธเฅ€ เคญเฅ€ เคฎเฅ‡เค‚ เคฏเฅ‹เค—เคฆเคพเคจ เค•เคฐเฅ‡เค‚! + +## ๐ŸŒ เค‡เค•เฅ‹เคธเคฟเคธเฅเคŸเคฎ + +Skill Seekers เคเค• เคฎเคฒเฅเคŸเฅ€-เคฐเคฟเคชเฅ‰เคœเคฟเคŸเคฐเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคนเฅˆเฅค เคฏเคนเคพเค‚ เคธเคฌ เค•เฅเค› เคฎเฅŒเคœเฅ‚เคฆ เคนเฅˆ: + +| เคฐเคฟเคชเฅ‰เคœเคฟเคŸเคฐเฅ€ | เคตเคฟเคตเคฐเคฃ | เคฒเคฟเค‚เค• | +|-----------|--------|------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | เค•เฅ‹เคฐ CLI เค”เคฐ MCP เคธเคฐเฅเคตเคฐ (เคฏเคน เคฐเคฟเคชเฅ‹) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | เคตเฅ‡เคฌเคธเคพเค‡เคŸ เค”เคฐ เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ | [เคธเคพเค‡เคŸ](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | เคธเคพเคฎเฅเคฆเคพเคฏเคฟเค• เค•เฅ‰เคจเฅเคซเคฟเค— เคฐเคฟเคชเฅ‰เคœเคฟเคŸเคฐเฅ€ | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code เคชเฅเคฒเค—เค‡เคจ | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | macOS เค•เฅ‡ เคฒเคฟเค Homebrew tap | | + +> **เคฏเฅ‹เค—เคฆเคพเคจ เค•เคฐเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚?** เคตเฅ‡เคฌเคธเคพเค‡เคŸ เค”เคฐ เค•เฅ‰เคจเฅเคซเคฟเค— เคฐเคฟเคชเฅ‰เคœเคฟเคŸเคฐเฅ€ เคจเค เคฏเฅ‹เค—เคฆเคพเคจเค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‡ เคฒเคฟเค เคฌเฅ‡เคนเคคเคฐเฅ€เคจ เคถเฅเคฐเฅเค†เคคเฅ€ เคฌเคฟเค‚เคฆเฅ เคนเฅˆเค‚! + +## ๐Ÿง  AI เคธเคฟเคธเฅเคŸเคฎ เค•เฅ‡ เคฒเคฟเค เคกเฅ‡เคŸเคพ เคฒเฅ‡เคฏเคฐ + +**Skill Seekers เคเค• เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคชเฅเคฐเฅ€เคชเฅเคฐเฅ‹เคธเฅ‡เคธเคฟเค‚เค— เคฒเฅ‡เคฏเคฐ เคนเฅˆ** เคœเฅ‹ เค•เคšเฅเคšเฅ‡ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ‹เค‚ เค”เคฐ เค‰เคจเค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเคจเฅ‡ เคตเคพเคฒเฅ‡ เคธเคญเฅ€ AI เคธเคฟเคธเฅเคŸเคฎ เค•เฅ‡ เคฌเฅ€เคš เคธเฅเคฅเคฟเคค เคนเฅˆเฅค เคšเคพเคนเฅ‡ เค†เคช Claude เค•เฅŒเคถเคฒ, LangChain RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ, เคฏเคพ Cursor `.cursorrules` เคซเคผเคพเค‡เคฒ เคฌเคจเคพ เคฐเคนเฅ‡ เคนเฅ‹เค‚โ€”เคกเฅ‡เคŸเคพ เคคเฅˆเคฏเคพเคฐเฅ€ เคชเฅ‚เคฐเฅ€ เคคเคฐเคน เคธเคฎเคพเคจ เคนเฅˆเฅค เคฌเคธ เคเค• เคฌเคพเคฐ เค•เคฐเฅ‡เค‚, เค”เคฐ เคธเคญเฅ€ เคฒเค•เฅเคทเฅเคฏเฅ‹เค‚ เคชเคฐ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚เฅค + +```bash +# เคเค• เค•เคฎเคพเค‚เคก โ†’ เคธเค‚เคฐเคšเคฟเคค เคœเฅเคžเคพเคจ เคธเค‚เคชเคคเฅเคคเคฟ +skill-seekers create https://docs.react.dev/ +# เคฏเคพ: skill-seekers create facebook/react +# เคฏเคพ: skill-seekers create ./my-project + +# เค•เคฟเคธเฅ€ เคญเฅ€ AI เคธเคฟเคธเฅเคŸเคฎ เคชเคฐ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚ +skill-seekers package output/react --target claude # โ†’ Claude AI เค•เฅŒเคถเคฒ (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob เค•เฅŒเคถเคฒ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€ +``` + +### เคจเคฟเคฐเฅเคฎเคฟเคค เค†เค‰เคŸเคชเฅเคŸ + +| เค†เค‰เคŸเคชเฅเคŸ | เคฒเค•เฅเคทเฅเคฏ | เค‰เคชเคฏเฅ‹เค— | +|---------|--------|-------| +| **Claude เค•เฅŒเคถเคฒ** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini เค•เฅŒเคถเคฒ** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, เค•เคธเฅเคŸเคฎ เคธเคนเคพเคฏเค• | +| **LangChain Documents** | `--target langchain` | QA เคšเฅ‡เคจ, เคเคœเฅ‡เค‚เคŸ, เคฐเคฟเคŸเฅเคฐเฅ€เคตเคฐ | +| **LlamaIndex TextNodes** | `--target llama-index` | เค•เฅเคตเฅ‡เคฐเฅ€ เค‡เค‚เคœเคจ, เคšเฅˆเคŸ เค‡เค‚เคœเคจ | +| **Haystack Documents** | `--target haystack` | เคเค‚เคŸเคฐเคชเฅเคฐเคพเค‡เคœเคผ RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ | +| **Pinecone-เคคเฅˆเคฏเคพเคฐ** (Markdown) | `--target markdown` | เคตเฅ‡เค•เฅเคŸเคฐ เค…เคชเคธเคฐเฅเคŸ | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | เคธเฅเคฅเคพเคจเฅ€เคฏ เคตเฅ‡เค•เฅเคŸเคฐ DB | +| **IBM Bob เค•เฅŒเคถเคฒ** (เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€) | `--target ibm-bob` | IBM Bob เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ/เคตเฅˆเคถเฅเคตเคฟเค• เค•เฅŒเคถเคฒ | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ SKILL.md เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚ | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ เค•เฅ‰เคชเฅ€ | VS Code, IntelliJ, Vim | + +### เคฏเคน เค•เฅเคฏเฅ‹เค‚ เคฎเคนเคคเฅเคตเคชเฅ‚เคฐเฅเคฃ เคนเฅˆ + +- โšก **99% เคคเฅ‡เคœเคผ** โ€” เคฆเคฟเคจเฅ‹เค‚ เค•เฅ€ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ เคกเฅ‡เคŸเคพ เคคเฅˆเคฏเคพเคฐเฅ€ โ†’ 15โ€“45 เคฎเคฟเคจเคŸ +- ๐ŸŽฏ **AI เค•เฅŒเคถเคฒ เค—เฅเคฃเคตเคคเฅเคคเคพ** โ€” 500+ เคชเค‚เค•เฅเคคเคฟเคฏเฅ‹เค‚ เค•เฅ€ SKILL.md เคซเคผเคพเค‡เคฒเฅ‡เค‚ เคœเคฟเคธเคฎเฅ‡เค‚ เค‰เคฆเคพเคนเคฐเคฃ, เคชเฅˆเคŸเคฐเฅเคจ เค”เคฐ เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค เคนเฅˆเค‚ +- ๐Ÿ“Š **RAG-เคคเฅˆเคฏเคพเคฐ เคšเค‚เค•** โ€” เคธเฅเคฎเคพเคฐเฅเคŸ เคšเค‚เค•เคฟเค‚เค— เคœเฅ‹ เค•เฅ‹เคก เคฌเฅเคฒเฅ‰เค• เค•เฅ‹ เคธเฅเคฐเค•เฅเคทเคฟเคค เคฐเค–เคคเฅ€ เคนเฅˆ เค”เคฐ เคธเค‚เคฆเคฐเฅเคญ เคฌเคจเคพเค เคฐเค–เคคเฅ€ เคนเฅˆ +- ๐ŸŽฌ **เคตเฅ€เคกเคฟเคฏเฅ‹** โ€” YouTube เค”เคฐ เคธเฅเคฅเคพเคจเฅ€เคฏ เคตเฅ€เคกเคฟเคฏเฅ‹ เคธเฅ‡ เค•เฅ‹เคก, เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ เค”เคฐ เคธเค‚เคฐเคšเคฟเคค เคœเฅเคžเคพเคจ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- ๐Ÿ”„ **เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค** โ€” 18 เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐเฅ‹เค‚ (เคกเฅ‰เค•เฅเคธ, GitHub, PDF, เคตเฅ€เคกเคฟเคฏเฅ‹, เคจเฅ‹เคŸเคฌเฅเค•, เคตเคฟเค•เฅ€ เค†เคฆเคฟ) เค•เฅ‹ เคเค• เคœเฅเคžเคพเคจ เคธเค‚เคชเคคเฅเคคเคฟ เคฎเฅ‡เค‚ เคฎเคฟเคฒเคพเคเค +- ๐ŸŒ **เคเค• เคฌเคพเคฐ เคคเฅˆเคฏเคพเคฐเฅ€, เคนเคฐ เคฒเค•เฅเคทเฅเคฏ** โ€” เคฌเคฟเคจเคพ เคฆเฅ‹เคฌเคพเคฐเคพ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฟเค 21 เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคชเคฐ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคฏเฅเคฆเฅเคง-เคชเคฐเฅ€เค•เฅเคทเคฟเคค** โ€” 3,700+ เคชเคฐเฅ€เค•เฅเคทเคฃ, 24+ เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เคชเฅเคฐเฅ€เคธเฅ‡เคŸ, เคชเฅเคฐเฅ‹เคกเค•เฅเคถเคจ-เคคเฅˆเคฏเคพเคฐ + +## ๐Ÿš€ เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค (3 เค•เคฎเคพเค‚เคก) + +```bash +# 1. เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers + +# 2. เค•เคฟเคธเฅ€ เคญเฅ€ เคธเฅเคฐเฅ‹เคค เคธเฅ‡ เค•เฅŒเคถเคฒ เคฌเคจเคพเคเค +skill-seekers create https://docs.django.com/ + +# 3. เค…เคชเคจเฅ‡ AI เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เค•เฅ‡ เคฒเคฟเค เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ +skill-seekers package output/django --target claude +``` + +**เคฌเคธ เค‡เคคเคจเคพ เคนเฅ€!** เค…เคฌ เค†เคชเค•เฅ‡ เคชเคพเคธ `output/django-claude.zip` เค‰เคชเคฏเฅ‹เค— เค•เฅ‡ เคฒเคฟเค เคคเฅˆเคฏเคพเคฐ เคนเฅˆเฅค + +```bash +# เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค เคเค• เค…เคฒเค— AI เคเคœเฅ‡เค‚เคŸ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI-เคธเค‚เคšเคพเคฒเคฟเคค เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคธเฅเค•เฅˆเคจ (เคจเคฏเคพ) + +`scan` เค•เฅ‹ เค•เคฟเคธเฅ€ เคญเฅ€ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคชเคฐ เคšเคฒเคพเคเค โ€” เคเค• AI เคเคœเฅ‡เค‚เคŸ เค‰เคธเค•เฅ‡ เคฎเฅˆเคจเคฟเคซเคผเฅ‡เคธเฅเคŸ, README, +Dockerfile/CI เค”เคฐ เคธเฅˆเค‚เคชเคฒ เค•เคฟเค เค—เค เคธเฅเคฐเฅ‹เคค เค‡เคฎเฅเคชเฅ‹เคฐเฅเคŸ เคชเคขเคผเคคเคพ เคนเฅˆ โ€” เคซเคฟเคฐ เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคชเคนเคšเคพเคจเฅ‡ เค—เค +เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เค•เฅ‡ เคฒเคฟเค เคเค• เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค”เคฐ เค†เคชเค•เฅ‡ เค…เคชเคจเฅ‡ เค•เฅ‹เคก เค•เฅ‡ เคฒเคฟเค เคเค• `-codebase.json` +เคœเคจเคฐเฅ‡เคŸ เค•เคฐเคคเคพ เคนเฅˆเฅค เคชเคนเคšเคพเคจเคพ เค—เคฏเคพ เคธเค‚เคธเฅเค•เคฐเคฃ เคชเคฟเคจ เค•เคฟเคฏเคพ เคœเคพเคคเคพ เคนเฅˆ เคคเคพเค•เคฟ เคฆเฅ‹เคฌเคพเคฐเคพ เคšเคฒเคพเคจเฅ‡ เคชเคฐ +เคธเค‚เคธเฅเค•เคฐเคฃ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ เคนเฅ‹เค‚: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# เคซเคฟเคฐ เค‡เคจเคฎเฅ‡เค‚ เคธเฅ‡ เค•เฅ‹เคˆ เคญเฅ€ เคฌเคจเคพเคเค +skill-seekers create ./configs/scanned/react.json +``` + +เคฏเคฆเคฟ เค•เคฟเคธเฅ€ เคชเคนเคšเคพเคจ เค•เฅ‡ เคฒเคฟเค เค•เฅ‹เคˆ เคฎเฅŒเคœเฅ‚เคฆเคพ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคจเคนเฅ€เค‚ เคนเฅˆ, เคคเฅ‹ AI เคเค• เคจเคฏเคพ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคœเคจเคฐเฅ‡เคŸ +เค•เคฐเคคเคพ เคนเฅˆ; เคธเคฎเคพเคชเฅเคคเคฟ เคชเคฐ เค†เคช เค‡เคธเฅ‡ เคตเฅˆเค•เคฒเฅเคชเคฟเค• เคฐเฅ‚เคช เคธเฅ‡ [เคธเคพเคฎเฅเคฆเคพเคฏเคฟเค• เคฐเคœเคฟเคธเฅเคŸเฅเคฐเฅ€](https://github.com/yusufkaraaslan/skill-seekers-configs) เคฎเฅ‡เค‚ เคชเฅเคฐเค•เคพเคถเคฟเคค เค•เคฐ เคธเค•เคคเฅ‡ เคนเฅˆเค‚เฅค + +### เค…เคจเฅเคฏ เคธเฅเคฐเฅ‹เคค (18 เคธเคฎเคฐเฅเคฅเคฟเคค) + +```bash +# GitHub เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ +skill-seekers create facebook/react + +# เคธเฅเคฅเคพเคจเฅ€เคฏ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ +skill-seekers create ./my-project + +# PDF เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ +skill-seekers create manual.pdf + +# Word เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ +skill-seekers create report.docx + +# EPUB เคˆ-เคฌเฅเค• +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# OpenAPI spec +skill-seekers create openapi.yaml + +# PowerPoint เคชเฅเคฐเคธเฅเคคเฅเคคเคฟ +skill-seekers create presentation.pptx + +# AsciiDoc เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ +skill-seekers create guide.adoc + +# เคธเฅเคฅเคพเคจเฅ€เคฏ HTML เคซเคผเคพเค‡เคฒ (เคเค•เฅเคธเคŸเฅ‡เค‚เคถเคจ เคธเฅ‡ เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเคนเคšเคพเคจ) +skill-seekers create page.html + +# HTML เคซเคผเคพเค‡เคฒเฅ‹เค‚ เค•เฅ€ เคชเฅ‚เคฐเฅ€ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€ (HTML-เคชเฅเคฐเคงเคพเคจ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€ เค•เฅ‡ เคฒเคฟเค เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเคนเคšเคพเคจ) +skill-seekers create ./mirror_output/site/ + +# เคฎเคฟเคถเฅเคฐเคฟเคค/เค•เฅ‹เคก-เคชเฅเคฐเคงเคพเคจ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€ เคชเคฐ HTML เคฎเฅ‹เคก เคฌเคพเคงเฅเคฏ เค•เคฐเฅ‡เค‚ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom เคซเคผเฅ€เคก +skill-seekers create feed.rss + +# Man เคชเฅ‡เคœ +skill-seekers create curl.1 + +# เคตเฅ€เคกเคฟเคฏเฅ‹ (YouTube, Vimeo, เคฏเคพ เคธเฅเคฅเคพเคจเฅ€เคฏ เคซเคผเคพเค‡เคฒ โ€” skill-seekers[video] เค†เคตเคถเฅเคฏเค•) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# เคชเคนเคฒเฅ€ เคฌเคพเคฐ? GPU-เคธเค•เฅเคทเคฎ เคตเคฟเคœเคผเฅเค…เคฒ เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚: +skill-seekers create --setup + +# Confluence เคตเคฟเค•เฅ€ +skill-seekers create --space-key TEAM --name wiki + +# Notion เคชเฅ‡เคœ +skill-seekers create --database-id ... --name docs + +# Slack/Discord เคšเฅˆเคŸ เคเค•เฅเคธเคชเฅ‹เคฐเฅเคŸ +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### เคนเคฐ เคœเค—เคน เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚ + +```bash +# เคเค•เคพเคงเคฟเค• เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เค•เฅ‡ เคฒเคฟเค เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Skill Seekers เค•เฅเคฏเคพ เคนเฅˆ? + +Skill Seekers **AI เคธเคฟเคธเฅเคŸเคฎ เค•เฅ‡ เคฒเคฟเค เคกเฅ‡เคŸเคพ เคฒเฅ‡เคฏเคฐ** เคนเฅˆเฅค เคฏเคน 18 เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐเฅ‹เค‚โ€”เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸ, GitHub เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€, PDF, เคตเฅ€เคกเคฟเคฏเฅ‹, Jupyter Notebook, Word/EPUB/AsciiDoc เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ, OpenAPI/Swagger เคธเฅเคชเฅ‡เค•, PowerPoint เคชเฅเคฐเคธเฅเคคเฅเคคเคฟเคฏเคพเค, RSS/Atom เคซเคผเฅ€เคก, Man เคชเฅ‡เคœ, Confluence เคตเคฟเค•เฅ€, Notion เคชเฅ‡เคœ, Slack/Discord เคเค•เฅเคธเคชเฅ‹เคฐเฅเคŸ เค†เคฆเคฟโ€”เค•เฅ‹ เคนเคฐ AI เคฒเค•เฅเคทเฅเคฏ เค•เฅ‡ เคฒเคฟเค เคธเค‚เคฐเคšเคฟเคค เคœเฅเคžเคพเคจ เคธเค‚เคชเคคเฅเคคเคฟ เคฎเฅ‡เค‚ เคฌเคฆเคฒเคคเคพ เคนเฅˆ: + +| เค‰เคชเคฏเฅ‹เค— | เค†เคช เค•เฅเคฏเคพ เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเคคเฅ‡ เคนเฅˆเค‚ | เค‰เคฆเคพเคนเคฐเคฃ | +|-------|------------------------|--------| +| **AI เค•เฅŒเคถเคฒ** | เคตเฅเคฏเคพเคชเค• SKILL.md + เคธเค‚เคฆเคฐเฅเคญ | Claude Code, Gemini, GPT | +| **RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ** | เคธเคฎเฅƒเคฆเฅเคง เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ เค•เฅ‡ เคธเคพเคฅ เคšเค‚เค• เค•เคฟเค เค—เค เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ | LangChain, LlamaIndex, Haystack | +| **เคตเฅ‡เค•เฅเคŸเคฐ เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ** | เค…เคชเคธเคฐเฅเคŸ เค•เฅ‡ เคฒเคฟเค เคคเฅˆเคฏเคพเคฐ เคชเฅเคฐเฅ€-เคซเคผเฅ‰เคฐเฅเคฎเฅ‡เคŸเฅ‡เคก เคกเฅ‡เคŸเคพ | Pinecone, Chroma, Weaviate, FAISS | +| **AI เค•เฅ‹เคกเคฟเค‚เค— เคธเคนเคพเคฏเค•** | เคธเค‚เคฆเคฐเฅเคญ เคซเคผเคพเค‡เคฒเฅ‡เค‚ เคœเฅ‹ เค†เคชเค•เคพ IDE AI เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคชเคขเคผเคคเคพ เคนเฅˆ | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ + +| เคฎเฅˆเค‚ เคšเคพเคนเคคเคพ/เคšเคพเคนเคคเฅ€ เคนเฅ‚เค... | เคฏเคน เคชเคขเคผเฅ‡เค‚ | +|------------------------|---------| +| **เคœเคฒเฅเคฆเฅ€ เคถเฅเคฐเฅ‚ เค•เคฐเคจเคพ** | [เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค](docs/getting-started/02-quick-start.md) - เคชเคนเคฒเฅ‡ เค•เฅŒเคถเคฒ เคคเค• 3 เค•เคฎเคพเค‚เคก | +| **เค…เคตเคงเคพเคฐเคฃเคพเคเค เคธเคฎเคเคจเคพ** | [เคฎเฅ‚เคฒ เค…เคตเคงเคพเคฐเคฃเคพเคเค](docs/user-guide/01-core-concepts.md) - เคฏเคน เค•เฅˆเคธเฅ‡ เค•เคพเคฎ เค•เคฐเคคเคพ เคนเฅˆ | +| **เคธเฅเคฐเฅ‹เคค เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเคจเคพ** | [เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— เค—เคพเค‡เคก](docs/user-guide/02-scraping.md) - เคธเคญเฅ€ เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐ | +| **เค•เฅŒเคถเคฒ เคฌเคขเคผเคพเคจเคพ** | [เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค—เคพเค‡เคก](docs/user-guide/03-enhancement.md) - AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ | +| **เค•เฅŒเคถเคฒ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเคจเคพ** | [เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค— เค—เคพเค‡เคก](docs/user-guide/04-packaging.md) - เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคจเคฟเคฐเฅเคฏเคพเคค | +| **เค•เคฎเคพเค‚เคก เคฆเฅ‡เค–เคจเคพ** | [CLI เคธเค‚เคฆเคฐเฅเคญ](docs/reference/CLI_REFERENCE.md) - เคธเคญเฅ€ 20 เค•เคฎเคพเค‚เคก | +| **เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเคจเคพ** | [เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคชเฅเคฐเคพเคฐเฅ‚เคช](docs/reference/CONFIG_FORMAT.md) - JSON เคตเคฟเคจเคฟเคฐเฅเคฆเฅ‡เคถ | +| **เคธเคฎเคธเฅเคฏเคพ เคนเคฒ เค•เคฐเคจเคพ** | [เคธเคฎเคธเฅเคฏเคพ เคจเคฟเคตเคพเคฐเคฃ](docs/user-guide/06-troubleshooting.md) - เคธเคพเคฎเคพเคจเฅเคฏ เคธเคฎเคธเฅเคฏเคพเคเค | + +**เคชเฅ‚เคฐเฅเคฃ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ:** [docs/README.md](docs/README.md) + +เคฆเคฟเคจเฅ‹เค‚ เค•เฅ€ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ เคชเฅเคฐเฅ€เคชเฅเคฐเฅ‹เคธเฅ‡เคธเคฟเค‚เค— เค•เฅ‡ เคฌเคœเคพเคฏ, Skill Seekers: + +1. **เคธเค‚เค—เฅเคฐเคน เค•เคฐเคคเคพ เคนเฅˆ** โ€” เคกเฅ‰เค•เฅเคธ, GitHub เคฐเคฟเคชเฅ‹, เคธเฅเคฅเคพเคจเฅ€เคฏ เค•เฅ‹เคกเคฌเฅ‡เคธ, PDF, เคตเฅ€เคกเคฟเคฏเฅ‹, เคจเฅ‹เคŸเคฌเฅเค•, เคตเคฟเค•เฅ€ เค”เคฐ 10+ เค…เคจเฅเคฏ เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐ +2. **เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เคฐเคคเคพ เคนเฅˆ** โ€” เค—เคนเคจ AST เคชเคพเคฐเฅเคธเคฟเค‚เค—, เคชเฅˆเคŸเคฐเฅเคจ เคชเคนเคšเคพเคจ, API เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ +3. **เคธเค‚เคฐเคšเคฟเคค เค•เคฐเคคเคพ เคนเฅˆ** โ€” เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ เค•เฅ‡ เคธเคพเคฅ เคตเคฐเฅเค—เฅ€เค•เฅƒเคค เคธเค‚เคฆเคฐเฅเคญ เคซเคผเคพเค‡เคฒเฅ‡เค‚ +4. **เคฌเคขเคผเคพเคคเคพ เคนเฅˆ** โ€” AI-เคธเค‚เคšเคพเคฒเคฟเคค SKILL.md เคจเคฟเคฐเฅเคฎเคพเคฃ (Claude, Gemini, เคฏเคพ เคธเฅเคฅเคพเคจเฅ€เคฏ) +5. **เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเคคเคพ เคนเฅˆ** โ€” เคเค• เคธเค‚เคชเคคเฅเคคเคฟ เคธเฅ‡ 16 เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ-เคตเคฟเคถเคฟเคทเฅเคŸ เคชเฅเคฐเคพเคฐเฅ‚เคช + +## Skill Seekers เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เฅเคฏเฅ‹เค‚ เค•เคฐเฅ‡เค‚? + +### AI เค•เฅŒเคถเคฒ เคจเคฟเคฐเฅเคฎเคพเคคเคพเค“เค‚ เค•เฅ‡ เคฒเคฟเค (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **เคชเฅเคฐเฅ‹เคกเค•เฅเคถเคจ-เค—เฅเคฐเฅ‡เคก เค•เฅŒเคถเคฒ** โ€” 500+ เคชเค‚เค•เฅเคคเคฟเคฏเฅ‹เค‚ เค•เฅ€ SKILL.md เคซเคผเคพเค‡เคฒเฅ‡เค‚ เคœเคฟเคจเคฎเฅ‡เค‚ เค•เฅ‹เคก เค‰เคฆเคพเคนเคฐเคฃ, เคชเฅˆเคŸเคฐเฅเคจ เค”เคฐ เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค เคนเฅˆเค‚ +- ๐Ÿ”„ **เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹** โ€” `security-focus`, `architecture-comprehensive`, เคฏเคพ เค•เคธเฅเคŸเคฎ YAML เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคฒเคพเค—เฅ‚ เค•เคฐเฅ‡เค‚ +- ๐ŸŽฎ **เค•เฅ‹เคˆ เคญเฅ€ เคกเฅ‹เคฎเฅ‡เคจ** โ€” เค—เฅ‡เคฎ เค‡เค‚เคœเคจ (Godot, Unity), เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• (React, Django), เค†เค‚เคคเคฐเคฟเค• เค‰เคชเค•เคฐเคฃ +- ๐Ÿ”ง **เคŸเฅ€เคฎเฅ‡เค‚** โ€” เค†เค‚เคคเคฐเคฟเค• เคกเฅ‰เค•เฅเคธ + เค•เฅ‹เคก เค•เฅ‹ เคเค•เคฒ เคธเคคเฅเคฏ เคธเฅเคฐเฅ‹เคค เคฎเฅ‡เค‚ เคฎเคฟเคฒเคพเคเค +- ๐Ÿ“š **เค—เฅเคฃเคตเคคเฅเคคเคพ** โ€” เค‰เคฆเคพเคนเคฐเคฃ, เคคเฅเคตเคฐเคฟเคค เคธเค‚เคฆเคฐเฅเคญ เค”เคฐ เคจเฅ‡เคตเคฟเค—เฅ‡เคถเคจ เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคจ เค•เฅ‡ เคธเคพเคฅ AI-เคธเค‚เคตเคฐเฅเคงเคฟเคค + +### RAG เคจเคฟเคฐเฅเคฎเคพเคคเคพเค“เค‚ เค”เคฐ AI เค‡เค‚เคœเฅ€เคจเคฟเคฏเคฐเฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค + +- ๐Ÿค– **RAG-เคคเฅˆเคฏเคพเคฐ เคกเฅ‡เคŸเคพ** โ€” เคชเฅเคฐเฅ€-เคšเค‚เค• เค•เคฟเค เค—เค LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- ๐Ÿš€ **99% เคคเฅ‡เคœเคผ** โ€” เคฆเคฟเคจเฅ‹เค‚ เค•เฅ€ เคชเฅเคฐเฅ€เคชเฅเคฐเฅ‹เคธเฅ‡เคธเคฟเค‚เค— โ†’ 15โ€“45 เคฎเคฟเคจเคŸ +- ๐Ÿ“Š **เคธเฅเคฎเคพเคฐเฅเคŸ เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ** โ€” เคถเฅเคฐเฅ‡เคฃเคฟเคฏเคพเค, เคธเฅเคฐเฅ‹เคค, เคชเฅเคฐเค•เคพเคฐ โ†’ เคฌเฅ‡เคนเคคเคฐ เคชเฅเคจเคฐเฅเคชเฅเคฐเคพเคชเฅเคคเคฟ เคธเคŸเฅ€เค•เคคเคพ +- ๐Ÿ”„ **เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค** โ€” เคเค• เคชเคพเค‡เคชเคฒเคพเค‡เคจ เคฎเฅ‡เค‚ เคกเฅ‰เค•เฅเคธ + GitHub + PDF + เคตเฅ€เคกเคฟเคฏเฅ‹ เคฎเคฟเคฒเคพเคเค +- ๐ŸŒ **เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ-เค…เคœเฅเคžเฅ‡เคฏเคตเคพเคฆเฅ€** โ€” เคฌเคฟเคจเคพ เคฆเฅ‹เคฌเคพเคฐเคพ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฟเค เค•เคฟเคธเฅ€ เคญเฅ€ เคตเฅ‡เค•เฅเคŸเคฐ DB เคฏเคพ เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เคฎเฅ‡เค‚ เคจเคฟเคฐเฅเคฏเคพเคค เค•เคฐเฅ‡เค‚ + +### AI เค•เฅ‹เคกเคฟเค‚เค— เคธเคนเคพเคฏเค• เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‡ เคฒเคฟเค + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ `.cursorrules` / `.windsurfrules` / `.clinerules` เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚ +- ๐ŸŽฏ **เคธเฅเคฅเคพเคฏเฅ€ เคธเค‚เคฆเคฐเฅเคญ** โ€” AI เค†เคชเค•เฅ‡ เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เค•เฅ‹ "เคœเคพเคจเคคเคพ" เคนเฅˆ, เคฌเคพเคฐ-เคฌเคพเคฐ เคชเฅเคฐเฅ‰เคฎเฅเคชเฅเคŸ เคฆเฅ‡เคจเฅ‡ เค•เฅ€ เค†เคตเคถเฅเคฏเค•เคคเคพ เคจเคนเฅ€เค‚ +- ๐Ÿ“š **เคนเคฎเฅ‡เคถเคพ เค…เคฆเฅเคฏเคคเคฟเคค** โ€” เคกเฅ‰เค•เฅเคธ เคฌเคฆเคฒเคจเฅ‡ เคชเคฐ เคฎเคฟเคจเคŸเฅ‹เค‚ เคฎเฅ‡เค‚ เคธเค‚เคฆเคฐเฅเคญ เค…เคชเคกเฅ‡เคŸ เค•เคฐเฅ‡เค‚ + +## เคฎเฅเค–เฅเคฏ เคตเคฟเคถเฅ‡เคทเคคเคพเคเค + +### ๐ŸŒ เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— +- โœ… **เคธเฅเคฎเคพเคฐเฅเคŸ SPA เค–เฅ‹เคœ** - JavaScript SPA เคธเคพเค‡เคŸเฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค เคคเฅ€เคจ-เคชเคฐเคค เค–เฅ‹เคœ (sitemap.xml โ†’ llms.txt โ†’ เคนเฅ‡เคกเคฒเฅ‡เคธ เคฌเฅเคฐเคพเค‰เคœเคผเคฐ เคฐเฅ‡เค‚เคกเคฐเคฟเค‚เค—) +- โœ… **llms.txt เคธเคฎเคฐเฅเคฅเคจ** - LLM-เคคเฅˆเคฏเคพเคฐ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคซเคผเคพเค‡เคฒเฅ‹เค‚ เค•เฅ‹ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคชเคนเคšเคพเคจเคคเคพ เค”เคฐ เค‰เคชเคฏเฅ‹เค— เค•เคฐเคคเคพ เคนเฅˆ (10 เค—เฅเคจเคพ เคคเฅ‡เคœเคผ) +- โœ… **เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคธเฅเค•เฅเคฐเฅˆเคชเคฐ** - เค•เคฟเคธเฅ€ เคญเฅ€ เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸ เค•เฅ‡ เคธเคพเคฅ เค•เคพเคฎ เค•เคฐเคคเคพ เคนเฅˆ +- โœ… **เคธเฅเคฎเคพเคฐเฅเคŸ เคตเคฐเฅเค—เฅ€เค•เคฐเคฃ** - เคธเคพเคฎเค—เฅเคฐเฅ€ เค•เฅ‹ เคตเคฟเคทเคฏ เค•เฅ‡ เค…เคจเฅเคธเคพเคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคคเคพ เคนเฅˆ +- โœ… **เค•เฅ‹เคก เคญเคพเคทเคพ เคชเคนเคšเคพเคจ** - Python, JavaScript, C++, GDScript เค†เคฆเคฟ เค•เฅ‹ เคชเคนเคšเคพเคจเคคเคพ เคนเฅˆ +- โœ… **24+ เคคเฅˆเคฏเคพเคฐ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ** - Godot, React, Vue, Django, FastAPI เค”เคฐ เค…เคงเคฟเค• + +### ๐Ÿ“„ PDF เคธเคฎเคฐเฅเคฅเคจ +- โœ… **เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ PDF เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ** - PDF เคซเคผเคพเค‡เคฒเฅ‹เค‚ เคธเฅ‡ เคŸเฅ‡เค•เฅเคธเฅเคŸ, เค•เฅ‹เคก เค”เคฐ เค›เคตเคฟเคฏเคพเค เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคธเฅเค•เฅˆเคจ เค•เคฟเค เค—เค PDF เค•เฅ‡ เคฒเคฟเค OCR** - เคธเฅเค•เฅˆเคจ เค•เคฟเค เค—เค เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ‹เค‚ เคธเฅ‡ เคŸเฅ‡เค•เฅเคธเฅเคŸ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคชเคพเคธเคตเคฐเฅเคก-เคธเฅเคฐเค•เฅเคทเคฟเคค PDF** - เคเคจเฅเค•เฅเคฐเคฟเคชเฅเคŸเฅ‡เคก PDF เค•เฅ‹ เคธเค‚เคญเคพเคฒเฅ‡เค‚ +- โœ… **เคคเคพเคฒเคฟเค•เคพ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ** - PDF เคธเฅ‡ เคœเคŸเคฟเคฒ เคคเคพเคฒเคฟเค•เคพเคเค เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคธเคฎเคพเคจเคพเค‚เคคเคฐ เคชเฅเคฐเคธเค‚เคธเฅเค•เคฐเคฃ** - เคฌเคกเคผเฅ€ PDF เค•เฅ‡ เคฒเคฟเค 3 เค—เฅเคจเคพ เคคเฅ‡เคœเคผ +- โœ… **เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เค•เฅˆเคถเคฟเค‚เค—** - เคฆเฅ‹เคฌเคพเคฐเคพ เคšเคฒเคพเคจเฅ‡ เคชเคฐ 50% เคคเฅ‡เคœเคผ + +### ๐ŸŽฌ เคตเฅ€เคกเคฟเคฏเฅ‹ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ +- โœ… **YouTube เค”เคฐ เคธเฅเคฅเคพเคจเฅ€เคฏ เคตเฅ€เคกเคฟเคฏเฅ‹** - เคตเฅ€เคกเคฟเคฏเฅ‹ เคธเฅ‡ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ, เค‘เคจ-เคธเฅเค•เฅเคฐเฅ€เคจ เค•เฅ‹เคก เค”เคฐ เคธเค‚เคฐเคšเคฟเคค เคœเฅเคžเคพเคจ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคตเคฟเคœเคผเฅเค…เคฒ เคซเคผเฅเคฐเฅ‡เคฎ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ** - เค•เฅ‹เคก เคเคกเคฟเคŸเคฐ, เคŸเคฐเฅเคฎเคฟเคจเคฒ, เคธเฅเคฒเคพเค‡เคก เค”เคฐ เค†เคฐเฅ‡เค–เฅ‹เค‚ เคธเฅ‡ OCR เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ +- โœ… **GPU เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเคนเคšเคพเคจ** - เคธเคนเฅ€ PyTorch เคฌเคฟเคฒเฅเคก เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเคคเคพ เคนเฅˆ (CUDA/ROCm/MPS/CPU) +- โœ… **AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ** - เคฆเฅ‹-เคšเคฐเคฃ: OCR เค†เคฐเฅเคŸเคฟเคซเคผเฅˆเค•เฅเคŸ เคธเคพเคซเคผ เค•เคฐเฅ‡เค‚ + เคชเฅ‰เคฒเคฟเคถ SKILL.md เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚ +- โœ… **เคธเคฎเคฏ เค•เฅเคฒเคฟเคชเคฟเค‚เค—** - `--start-time` เค”เคฐ `--end-time` เค•เฅ‡ เคธเคพเคฅ เคตเคฟเคถเคฟเคทเฅเคŸ เค–เค‚เคก เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคชเฅเคฒเฅ‡เคฒเคฟเคธเฅเคŸ เคธเคฎเคฐเฅเคฅเคจ** - YouTube เคชเฅเคฒเฅ‡เคฒเคฟเคธเฅเคŸ เคฎเฅ‡เค‚ เคธเคญเฅ€ เคตเฅ€เคกเคฟเคฏเฅ‹ เค•เฅ‹ เคฌเฅˆเคš เคฎเฅ‡เค‚ เคชเฅเคฐเฅ‹เคธเฅ‡เคธ เค•เคฐเฅ‡เค‚ +- โœ… **Vision API เคซเคผเฅ‰เคฒเคฌเฅˆเค•** - เค•เคฎ-เคตเคฟเคถเฅเคตเคธเคจเฅ€เคฏ OCR เคซเคผเฅเคฐเฅ‡เคฎ เค•เฅ‡ เคฒเคฟเค Claude Vision เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ + +### ๐Ÿ™ GitHub เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ +- โœ… **เค—เคนเคจ เค•เฅ‹เคก เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ** - Python, JavaScript, TypeScript, Java, C++, Go เค•เฅ‡ เคฒเคฟเค AST เคชเคพเคฐเฅเคธเคฟเค‚เค— +- โœ… **API เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ** - เคซเคผเค‚เค•เฅเคถเคจ, เค•เฅเคฒเคพเคธเฅ‡เคธ, เคฎเฅ‡เคฅเคกเฅเคธ เคœเคฟเคจเคฎเฅ‡เค‚ เคชเฅˆเคฐเคพเคฎเฅ€เคŸเคฐ เค”เคฐ เคŸเคพเค‡เคช เคถเคพเคฎเคฟเคฒ เคนเฅˆเค‚ +- โœ… **เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ** - README, เคซเคผเคพเค‡เคฒ เคŸเฅเคฐเฅ€, เคญเคพเคทเคพ เคฌเฅเคฐเฅ‡เค•เคกเคพเค‰เคจ, เคธเฅเคŸเคพเคฐเฅเคธ/เคซเคผเฅ‹เคฐเฅเค•เฅเคธ +- โœ… **GitHub Issues เค”เคฐ PR** - เคฒเฅ‡เคฌเคฒ เค”เคฐ เคฎเคพเค‡เคฒเคธเฅเคŸเฅ‹เคจ เค•เฅ‡ เคธเคพเคฅ เค–เฅเคฒเฅ‡/เคฌเค‚เคฆ issues เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚ +- โœ… **CHANGELOG เค”เคฐ เคฐเคฟเคฒเฅ€เคœเคผ** - เคธเค‚เคธเฅเค•เคฐเคฃ เค‡เคคเคฟเคนเคพเคธ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +- โœ… **เคตเคฟเคฐเฅ‹เคง เคชเคนเคšเคพเคจ** - เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เฅƒเคค API เคฌเคจเคพเคฎ เคตเคพเคธเฅเคคเคตเคฟเค• เค•เฅ‹เคก เค•เคพเคฐเฅเคฏเคพเคจเฅเคตเคฏเคจ เค•เฅ€ เคคเฅเคฒเคจเคพ เค•เคฐเฅ‡เค‚ +- โœ… **MCP เคเค•เฅ€เค•เคฐเคฃ** - เคชเฅเคฐเคพเค•เฅƒเคคเคฟเค• เคญเคพเคทเคพ: "GitHub เคฐเคฟเคชเฅ‹ facebook/react เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚" + +### ๐Ÿ”„ เคเค•เฅ€เค•เฅƒเคค เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— +- โœ… **เคเค•เคพเคงเคฟเค• เคธเฅเคฐเฅ‹เคค เคฎเคฟเคฒเคพเคเค** - เคเค• เค•เฅŒเคถเคฒ เคฎเฅ‡เค‚ เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ + GitHub + PDF เคฎเคฟเคถเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคตเคฟเคฐเฅ‹เคง เคชเคนเคšเคพเคจ** - เคกเฅ‰เค•เฅเคธ เค”เคฐ เค•เฅ‹เคก เค•เฅ‡ เคฌเฅ€เคš เคตเคฟเคธเค‚เค—เคคเคฟเคฏเฅ‹เค‚ เค•เฅ‹ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค–เฅ‹เคœเฅ‡เค‚ +- โœ… **เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เคตเคฟเคฒเคฏ** - เคจเคฟเคฏเคฎ-เค†เคงเคพเคฐเคฟเคค เคฏเคพ AI-เคธเค‚เคšเคพเคฒเคฟเคค เคตเคฟเคฐเฅ‹เคง เคธเคฎเคพเคงเคพเคจ +- โœ… **เคชเคพเคฐเคฆเคฐเฅเคถเฅ€ เคฐเคฟเคชเฅ‹เคฐเฅเคŸเคฟเค‚เค—** - โš ๏ธ เคšเฅ‡เคคเคพเคตเคจเคฟเคฏเฅ‹เค‚ เค•เฅ‡ เคธเคพเคฅ เคธเคพเคฅ-เคธเคพเคฅ เคคเฅเคฒเคจเคพ +- โœ… **เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เค…เค‚เคคเคฐเคพเคฒ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ** - เคชเฅเคฐเคพเคจเฅ‡ เคกเฅ‰เค•เฅเคธ เค”เคฐ เค…เคจเคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เฅƒเคค เคธเฅเคตเคฟเคงเคพเค“เค‚ เค•เฅ€ เคชเคนเคšเคพเคจ +- โœ… **เคเค•เคฒ เคธเคคเฅเคฏ เคธเฅเคฐเฅ‹เคค** - เคเค• เค•เฅŒเคถเคฒ เคœเฅ‹ เค‡เคฐเคพเคฆเคพ (เคกเฅ‰เค•เฅเคธ) เค”เคฐ เคตเคพเคธเฅเคคเคตเคฟเค•เคคเคพ (เค•เฅ‹เคก) เคฆเฅ‹เคจเฅ‹เค‚ เคฆเคฟเค–เคพเคคเคพ เคนเฅˆ +- โœ… **เคชเคถเฅเคšเค—เคพเคฎเฅ€ เคธเค‚เค—เคค** - เคชเฅเคฐเคพเคจเฅ‡ เคเค•เคฒ-เคธเฅเคฐเฅ‹เคค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค…เคญเฅ€ เคญเฅ€ เค•เคพเคฎ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚ + +### ๐Ÿค– เคฌเคนเฅ-LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคธเคฎเคฐเฅเคฅเคจ +- โœ… **12 LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, เคœเฅ‡เคจเฅ‡เคฐเคฟเค• Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค—** - เคธเคฎเคพเคจ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเคญเฅ€ เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เค•เฅ‡ เคฒเคฟเค เค•เคพเคฎ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚ +- โœ… **เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ-เคตเคฟเคถเคฟเคทเฅเคŸ เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค—** - เคชเฅเคฐเคคเฅเคฏเฅ‡เค• LLM เค•เฅ‡ เคฒเคฟเค เค…เคจเฅเค•เฅ‚เคฒเคฟเคค เคชเฅเคฐเคพเคฐเฅ‚เคช +- โœ… **เคเค•-เค•เคฎเคพเค‚เคก เคจเคฟเคฐเฅเคฏเคพเคค** - `--target` เคซเคผเฅเคฒเฅˆเค— เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคšเฅเคจเคคเคพ เคนเฅˆ +- โœ… **เคตเฅˆเค•เคฒเฅเคชเคฟเค• เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€** - เค•เฅ‡เคตเคฒ เคตเคนเฅ€ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ เคœเฅ‹ เค†เคชเค•เฅ‹ เคšเคพเคนเคฟเค +- โœ… **100% เคชเคถเฅเคšเค—เคพเคฎเฅ€ เคธเค‚เค—เคค** - เคฎเฅŒเคœเฅ‚เคฆเคพ Claude เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เค…เคชเคฐเคฟเคตเคฐเฅเคคเคฟเคค + +| เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ | เคชเฅเคฐเคพเคฐเฅ‚เคช | เค…เคชเคฒเฅ‹เคก | เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ | API Key | เค•เคธเฅเคŸเคฎ เคเค‚เคกเคชเฅ‰เค‡เค‚เคŸ | +|------------|---------|-------|-------------|---------|----------------| +| **Claude AI** | ZIP + YAML | โœ… เคธเฅเคตเคšเคพเคฒเคฟเคค | โœ… เคนเคพเค | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… เคธเฅเคตเคšเคพเคฒเคฟเคค | โœ… เคนเคพเค | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… เคธเฅเคตเคšเคพเคฒเคฟเคค | โœ… เคนเคพเค | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… เคธเฅเคตเคšเคพเคฒเคฟเคค | โœ… เคนเคพเค | MINIMAX_API_KEY | - | +| **เคœเฅ‡เคจเฅ‡เคฐเคฟเค• Markdown** | ZIP | โŒ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ | โŒ เคจเคนเฅ€เค‚ | - | - | + +```bash +# Claude (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ - เค•เฅ‹เคˆ เคฌเคฆเคฒเคพเคต เค†เคตเคถเฅเคฏเค• เคจเคนเฅ€เค‚!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# เคœเฅ‡เคจเฅ‡เคฐเคฟเค• Markdown (เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคจเคฟเคฐเฅเคฏเคพเคค) +skill-seekers package output/react/ --target markdown +# Markdown เคซเคผเคพเค‡เคฒเฅ‹เค‚ เค•เคพ เค•เคฟเคธเฅ€ เคญเฅ€ LLM เคฎเฅ‡เค‚ เคธเฅ€เคงเฅ‡ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ +``` + +
+๐Ÿ”ง เค…เคชเคจเฅ‡ เคธเฅเคตเคฏเค‚ เค•เฅ‡ AI เคชเฅเคฐเคฆเคพเคคเคพ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ (OpenAI-เคธเค‚เค—เคค เคเค‚เคกเคชเฅ‰เค‡เค‚เคŸ + เคธเคฌเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ, Anthropic เค•เฅเคฐเฅ‡เคกเคฟเคŸ เค†เคตเคถเฅเคฏเค• เคจเคนเฅ€เค‚) + +เคตเฅˆเค•เคฒเฅเคชเคฟเค• AI **เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ** เคšเคฐเคฃ (`create`, `scan` เค”เคฐ `enhance` เคฆเฅเคตเคพเคฐเคพ เค‰เคชเคฏเฅ‹เค— เค•เคฟเคฏเคพ เคœเคพเคคเคพ เคนเฅˆ) เค•เฅ‡ เคฒเคฟเค Anthropic key **เค†เคตเคถเฅเคฏเค• เคจเคนเฅ€เค‚** เคนเฅˆเฅค เค‡เคธเฅ‡ เคšเคฒเคพเคจเฅ‡ เค•เฅ‡ เคคเฅ€เคจ เคคเคฐเฅ€เค•เฅ‡ เคนเฅˆเค‚: + +**1. เคตเคน เคธเคฌเฅเคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ เคœเคฟเคธเค•เฅ‡ เคฒเคฟเค เค†เคช เคชเคนเคฒเฅ‡ เคธเฅ‡ เคญเฅเค—เคคเคพเคจ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚ โ€” เค•เฅ‹เคˆ API เค•เฅเคฐเฅ‡เคกเคฟเคŸ เคจเคนเฅ€เค‚ (LOCAL เคเคœเฅ‡เค‚เคŸ เคฎเฅ‹เคก)** + +Skill Seekers เค‰เคธ เค•เฅ‹เคกเคฟเค‚เค—-เคเคœเฅ‡เค‚เคŸ CLI เค•เฅ‹ เค•เฅ‰เคฒ เค•เคฐ เคธเค•เคคเคพ เคนเฅˆ เคœเคฟเคธเคฎเฅ‡เค‚ เค†เคช เคชเคนเคฒเฅ‡ เคธเฅ‡ เคฒเฅ‰เค— เค‡เคจ เคนเฅˆเค‚, เคคเคพเค•เคฟ เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคฎเฅ€เคŸเคฐเฅเคก API เคŸเฅ‹เค•เคจ เค•เฅ‡ เคฌเคœเคพเคฏ เค†เคชเค•เฅ‡ เคฎเฅŒเคœเฅ‚เคฆเคพ เคชเฅเคฒเคพเคจ เคชเคฐ เคšเคฒเฅ‡: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ เค†เคชเค•เคพ ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ เค†เคชเค•เคพ Claude Pro/Max +``` + +เคธเคฎเคฐเฅเคฅเคฟเคค เคเคœเฅ‡เค‚เคŸ: `claude`, `codex`, `copilot`, `opencode`, `kimi` เค”เคฐ `custom` +(เค•เคฟเคธเฅ€ เค…เคจเฅเคฏ เคŸเฅ‚เคฒ เค•เฅ‹ เคšเคฒเคพเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค `--agent custom` เค•เฅ‹ `--agent-cmd " ..."` เค•เฅ‡ เคธเคพเคฅ เคœเฅ‹เคกเคผเฅ‡เค‚)เฅค + +**2. เค•เฅ‹เคˆ เคญเฅ€ OpenAI-เคธเค‚เค—เคค เคชเฅเคฐเคฆเคพเคคเคพ (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +เคฏเฅ‡ เคธเคญเฅ€ เคเค• OpenAI-เคธเค‚เค—เคค `/v1` เคเค‚เคกเคชเฅ‰เค‡เค‚เคŸ เคชเฅเคฐเคฆเคพเคจ เค•เคฐเคคเฅ‡ เคนเฅˆเค‚เฅค เคคเฅ€เคจ เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ เค•เฅ‡ เคธเคพเคฅ Skill Seekers เค•เฅ‹ เค•เคฟเคธเฅ€ เคเค• เคชเคฐ เคชเฅ‰เค‡เค‚เคŸ เค•เคฐเฅ‡เค‚ โ€” เคฏเคน `OPENAI_API_KEY` เค•เคพ เคชเคคเคพ เคฒเค—เคพเคคเคพ เคนเฅˆ, เค”เคฐ OpenAI SDK เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ `OPENAI_BASE_URL` เค•เคพ เคธเคฎเฅเคฎเคพเคจ เค•เคฐเคคเคพ เคนเฅˆ: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # เคชเฅเคฐเคฆเคพเคคเคพ เคเค‚เคกเคชเฅ‰เค‡เค‚เคŸ (เคคเคพเคฒเคฟเค•เคพ เคฆเฅ‡เค–เฅ‡เค‚) +export OPENAI_MODEL="" # เค†เคตเคถเฅเคฏเค• โ€” เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ gpt-4o เค…เคจเฅเคฏ เคœเค—เคน เคฎเฅŒเคœเฅ‚เคฆ เคจเคนเฅ€เค‚ เคนเฅ‹เค—เคพ +skill-seekers create +``` + +| เคชเฅเคฐเคฆเคพเคคเคพ | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> เคชเฅเคฐเคฆเคพเคคเคพ เคชเคนเคšเคพเคจ **เคชเคนเคฒเฅ‡** เคฎเคฟเคฒเคจเฅ‡ เคตเคพเคฒเฅ‡ API-key เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ เค•เฅ‹ เคšเฅเคจเคคเฅ€ เคนเฅˆ (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`)เฅค เค•เคฟเคธเฅ€ เคตเคฟเคถเคฟเคทเฅเคŸ เคชเฅเคฐเคฆเคพเคคเคพ เค•เฅ‹ เคฌเคพเคงเฅเคฏ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค `SKILL_SEEKER_PROVIDER` เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚, เคฏเคพ เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค•เคฐเฅ‡เค‚ เค•เคฟ เค‰เคšเฅเคš-เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพ เคตเคพเคฒเฅ€ keys เค…เคจเคธเฅ‡เคŸ เคนเฅˆเค‚เฅค + +**3. Claude-เคธเค‚เค—เคค เคเค‚เคกเคชเฅ‰เค‡เค‚เคŸ (เคœเฅˆเคธเฅ‡ GLM, เคชเฅเคฐเฅ‰เค•เฅเคธเฅ€)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) เค”เคฐ Kimi/Moonshot (`MOONSHOT_API_KEY`) เคญเฅ€ เคจเฅ‡เคŸเคฟเคต เคฐเฅ‚เคช เคธเฅ‡ เคธเคฎเคฐเฅเคฅเคฟเคค เคนเฅˆเค‚เฅค เคชเฅเคฐเคคเคฟ-เคชเฅเคฐเคฆเคพเคคเคพ เคฎเฅ‰เคกเคฒ เค“เคตเคฐเคฐเคพเค‡เคก เคธเคนเคฟเคค เคชเฅ‚เคฐเฅ€ เคธเฅ‚เคšเฅ€ เค•เฅ‡ เคฒเคฟเค **[เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ เคธเค‚เคฆเคฐเฅเคญ](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** เคฆเฅ‡เค–เฅ‡เค‚เฅค + +
+ +**เค‡เค‚เคธเฅเคŸเฅ‰เคฒเฅ‡เคถเคจ:** +```bash +# Gemini เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคธเคพเคฅ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers[gemini] + +# OpenAI เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคธเคพเคฅ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers[openai] + +# MiniMax เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคธเคพเคฅ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers[minimax] + +# เคธเคญเฅ€ LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เค•เฅ‡ เคธเคพเคฅ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เคเค•เฅ€เค•เคฐเคฃ + +- โœ… **LangChain Documents** - `page_content` + เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ เค•เฅ‡ เคธเคพเคฅ เคธเฅ€เคงเฅ‡ `Document` เคชเฅเคฐเคพเคฐเฅ‚เคช เคฎเฅ‡เค‚ เคจเคฟเคฐเฅเคฏเคพเคค + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: QA เคšเฅ‡เคจ, เคฐเคฟเคŸเฅเคฐเฅ€เคตเคฐ, เคตเฅ‡เค•เฅเคŸเคฐ เคธเฅเคŸเฅ‹เคฐ, เคเคœเฅ‡เค‚เคŸ + - เค‰เคฆเคพเคนเคฐเคฃ: [LangChain RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ](examples/langchain-rag-pipeline/) + - เค—เคพเค‡เคก: [LangChain เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - เค…เคฆเฅเคตเคฟเคคเฅ€เคฏ ID + เคเคฎเฅเคฌเฅ‡เคกเคฟเค‚เค— เค•เฅ‡ เคธเคพเคฅ `TextNode` เคชเฅเคฐเคพเคฐเฅ‚เคช เคฎเฅ‡เค‚ เคจเคฟเคฐเฅเคฏเคพเคค + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: เค•เฅเคตเฅ‡เคฐเฅ€ เค‡เค‚เคœเคจ, เคšเฅˆเคŸ เค‡เค‚เคœเคจ, เคธเฅเคŸเฅ‹เคฐเฅ‡เคœ เคธเค‚เคฆเคฐเฅเคญ + - เค‰เคฆเคพเคนเคฐเคฃ: [LlamaIndex เค•เฅเคตเฅ‡เคฐเฅ€ เค‡เค‚เคœเคจ](examples/llama-index-query-engine/) + - เค—เคพเค‡เคก: [LlamaIndex เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone-เคคเฅˆเคฏเคพเคฐ เคชเฅเคฐเคพเคฐเฅ‚เคช** - เคตเฅ‡เค•เฅเคŸเคฐ เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ เค…เคชเคธเคฐเฅเคŸ เค•เฅ‡ เคฒเคฟเค เค…เคจเฅเค•เฅ‚เคฒเคฟเคค + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: เคชเฅเคฐเฅ‹เคกเค•เฅเคถเคจ เคตเฅ‡เค•เฅเคŸเคฐ เคธเคฐเฅเคš, เคธเคฟเคฎเฅ‡เค‚เคŸเคฟเค• เคธเคฐเฅเคš, เคนเคพเค‡เคฌเฅเคฐเคฟเคก เคธเคฐเฅเคš + - เค‰เคฆเคพเคนเคฐเคฃ: [Pinecone เค…เคชเคธเคฐเฅเคŸ](examples/pinecone-upsert/) + - เค—เคพเค‡เคก: [Pinecone เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/PINECONE.md) + +**เคคเฅเคตเคฐเคฟเคค เคจเคฟเคฐเฅเคฏเคพเคค:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค•) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**เคชเฅ‚เคฐเฅเคฃ RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ เค—เคพเค‡เคก:** [RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI เค•เฅ‹เคกเคฟเค‚เค— เคธเคนเคพเคฏเค• เคเค•เฅ€เค•เคฐเคฃ + +เค•เคฟเคธเฅ€ เคญเฅ€ เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค• เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เค•เฅ‹ 4+ AI เคธเคนเคพเคฏเค•เฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค เคตเคฟเคถเฅ‡เคทเคœเฅเคž เค•เฅ‹เคกเคฟเค‚เค— เคธเค‚เคฆเคฐเฅเคญ เคฎเฅ‡เค‚ เคฌเคฆเคฒเฅ‡เค‚: + +- โœ… **Cursor IDE** - AI-เคธเค‚เคšเคพเคฒเคฟเคค เค•เฅ‹เคก เคธเฅเคเคพเคตเฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค `.cursorrules` เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚ + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค•-เคตเคฟเคถเคฟเคทเฅเคŸ เค•เฅ‹เคก เคœเคจเคฐเฅ‡เคถเคจ, เคธเฅเคธเค‚เค—เคค เคชเฅˆเคŸเคฐเฅเคจ + - เค—เคพเค‡เคก: [Cursor เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/CURSOR.md) + - เค‰เคฆเคพเคนเคฐเคฃ: [Cursor React เค•เฅŒเคถเคฒ](examples/cursor-react-skill/) + +- โœ… **Windsurf** - `.windsurfrules` เค•เฅ‡ เคธเคพเคฅ Windsurf AI เคธเคนเคพเคฏเค• เคธเค‚เคฆเคฐเฅเคญ เค•เคธเฅเคŸเคฎเคพเค‡เคœเคผ เค•เคฐเฅ‡เค‚ + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: IDE-เคจเฅ‡เคŸเคฟเคต AI เคธเคนเคพเคฏเคคเคพ, เคซเคผเฅเคฒเฅ‹-เค†เคงเคพเคฐเคฟเคค เค•เฅ‹เคกเคฟเค‚เค— + - เค—เคพเค‡เคก: [Windsurf เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/WINDSURF.md) + - เค‰เคฆเคพเคนเคฐเคฃ: [Windsurf FastAPI เคธเค‚เคฆเคฐเฅเคญ](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - VS Code เคเคœเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค เคธเคฟเคธเฅเคŸเคฎ เคชเฅเคฐเฅ‰เคฎเฅเคชเฅเคŸ + MCP + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: VS Code เคฎเฅ‡เค‚ เคเคœเฅ‡เค‚เคŸเคฟเค• เค•เฅ‹เคก เคœเคจเคฐเฅ‡เคถเคจ + - เค—เคพเค‡เคก: [Cline เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/CLINE.md) + - เค‰เคฆเคพเคนเคฐเคฃ: [Cline Django เคธเคนเคพเคฏเค•](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - IDE-เค…เคœเฅเคžเฅ‡เคฏเคตเคพเคฆเฅ€ AI เค•เฅ‡ เคฒเคฟเค เคธเค‚เคฆเคฐเฅเคญ เคธเคฐเฅเคตเคฐ + - เค‡เคธเค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅเค•เฅเคค: เคฌเคนเฅ-IDE เคตเคพเคคเคพเคตเคฐเคฃ (VS Code, JetBrains, Vim), เค•เคธเฅเคŸเคฎ LLM เคชเฅเคฐเคฆเคพเคคเคพ + - เค—เคพเค‡เคก: [Continue เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/CONTINUE_DEV.md) + - เค‰เคฆเคพเคนเคฐเคฃ: [Continue เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคธเค‚เคฆเคฐเฅเคญ](examples/continue-dev-universal/) + +**AI เค•เฅ‹เคกเคฟเค‚เค— เคŸเฅ‚เคฒ เค•เฅ‡ เคฒเคฟเค เคคเฅเคตเคฐเคฟเคค เคจเคฟเคฐเฅเคฏเคพเคค:** +```bash +# เค•เคฟเคธเฅ€ เคญเฅ€ AI เค•เฅ‹เคกเคฟเค‚เค— เคธเคนเคพเคฏเค• เค•เฅ‡ เคฒเคฟเค (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # เคฏเคพ --target markdown + +# เค…เคชเคจเฅ‡ เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคฎเฅ‡เค‚ เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚ (Cursor เค•เฅ‡ เคฒเคฟเค เค‰เคฆเคพเคนเคฐเคฃ) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# เคฏเคพ Windsurf เค•เฅ‡ เคฒเคฟเค +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# เคฏเคพ Cline เค•เฅ‡ เคฒเคฟเค +cp output/django-claude/SKILL.md my-project/.clinerules + +# เคฏเคพ Continue.dev เค•เฅ‡ เคฒเคฟเค (HTTP เคธเคฐเฅเคตเคฐ) +python examples/continue-dev-universal/context_server.py +# ~/.continue/config.json เคฎเฅ‡เค‚ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเฅ‡เค‚ +``` + +**เคเค•เฅ€เค•เคฐเคฃ เคนเคฌ:** [เคธเคญเฅ€ AI เคธเคฟเคธเฅเคŸเคฎ เคเค•เฅ€เค•เคฐเคฃ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ เคคเฅ€เคจ-เคงเคพเคฐเคพ GitHub เค†เคฐเฅเค•เคฟเคŸเฅ‡เค•เฅเคšเคฐ +- โœ… **เคคเฅ€เคจ-เคงเคพเคฐเคพ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ** - GitHub เคฐเคฟเคชเฅ‹ เค•เฅ‹ เค•เฅ‹เคก, เคกเฅ‰เค•เฅเคธ เค”เคฐ เค…เค‚เคคเคฐเฅเคฆเฅƒเคทเฅเคŸเคฟ เคงเคพเคฐเคพเค“เค‚ เคฎเฅ‡เค‚ เคตเคฟเคญเคพเคœเคฟเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคเค•เฅ€เค•เฅƒเคค เค•เฅ‹เคกเคฌเฅ‡เคธ เคตเคฟเคถเฅเคฒเฅ‡เคทเค•** - GitHub URL เค”เคฐ เคธเฅเคฅเคพเคจเฅ€เคฏ เคชเคฅ เคฆเฅ‹เคจเฅ‹เค‚ เค•เฅ‡ เคธเคพเคฅ เค•เคพเคฎ เค•เคฐเคคเคพ เคนเฅˆ +- โœ… **C3.x เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค—เคนเคฐเคพเคˆ** - 'basic' (1-2 เคฎเคฟเคจเคŸ) เคฏเคพ 'c3x' (20-60 เคฎเคฟเคจเคŸ) เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคšเฅเคจเฅ‡เค‚ +- โœ… **เคธเค‚เคตเคฐเฅเคงเคฟเคค เคฐเคพเค‰เคŸเคฐ เคœเคจเคฐเฅ‡เคถเคจ** - GitHub เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ, README เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค, เคธเคพเคฎเคพเคจเฅเคฏ เคธเคฎเคธเฅเคฏเคพเคเค +- โœ… **Issue เคเค•เฅ€เค•เคฐเคฃ** - GitHub issues เคธเฅ‡ เคถเฅ€เคฐเฅเคท เคธเคฎเคธเฅเคฏเคพเคเค เค”เคฐ เคธเคฎเคพเคงเคพเคจ +- โœ… **เคธเฅเคฎเคพเคฐเฅเคŸ เคฐเคพเค‰เคŸเคฟเค‚เค— เค•เฅ€เคตเคฐเฅเคก** - เคฌเฅ‡เคนเคคเคฐ เคตเคฟเคทเคฏ เคชเคนเคšเคพเคจ เค•เฅ‡ เคฒเคฟเค GitHub เคฒเฅ‡เคฌเคฒ 2x เคญเคพเคฐเคฟเคค + +**เคคเฅ€เคจ เคงเคพเคฐเคพเคเค เคตเคฟเคธเฅเคคเคพเคฐ เคธเฅ‡:** +- **เคงเคพเคฐเคพ 1: เค•เฅ‹เคก** - เค—เคนเคจ C3.x เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ (เคชเฅˆเคŸเคฐเฅเคจ, เค‰เคฆเคพเคนเคฐเคฃ, เค—เคพเค‡เคก, เค•เฅ‰เคจเฅเคซเคผเคฟเค—, เค†เคฐเฅเค•เคฟเคŸเฅ‡เค•เฅเคšเคฐ) +- **เคงเคพเคฐเคพ 2: เคกเฅ‰เค•เฅเคธ** - เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ (README, CONTRIBUTING, docs/*.md) +- **เคงเคพเคฐเคพ 3: เค…เค‚เคคเคฐเฅเคฆเฅƒเคทเฅเคŸเคฟ** - เคธเคพเคฎเฅเคฆเคพเคฏเคฟเค• เคœเฅเคžเคพเคจ (issues, เคฒเฅ‡เคฌเคฒ, stars, forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# เคคเฅ€เคจเฅ‹เค‚ เคงเคพเคฐเคพเค“เค‚ เค•เฅ‡ เคธเคพเคฅ GitHub เคฐเคฟเคชเฅ‹ เค•เคพ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เคฐเฅ‡เค‚ +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # เคฏเคพ "basic" เคคเฅเคตเคฐเคฟเคค เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เฅ‡ เคฒเคฟเค + fetch_github_metadata=True +) + +# เค•เฅ‹เคก เคงเคพเคฐเคพ (C3.x เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ) เคคเค• เคชเคนเฅเคเคšเฅ‡เค‚ +print(f"เคกเคฟเคœเคผเคพเค‡เคจ เคชเฅˆเคŸเคฐเฅเคจ: {len(result.code_analysis['c3_1_patterns'])}") +print(f"เคŸเฅ‡เคธเฅเคŸ เค‰เคฆเคพเคนเคฐเคฃ: {result.code_analysis['c3_2_examples_count']}") + +# เคกเฅ‰เค•เฅเคธ เคงเคพเคฐเคพ (เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคกเฅ‰เค•เฅเคธ) เคคเค• เคชเคนเฅเคเคšเฅ‡เค‚ +print(f"README: {result.github_docs['readme'][:100]}") + +# เค…เค‚เคคเคฐเฅเคฆเฅƒเคทเฅเคŸเคฟ เคงเคพเคฐเคพ (GitHub เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ) เคคเค• เคชเคนเฅเคเคšเฅ‡เค‚ +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"เคธเคพเคฎเคพเคจเฅเคฏ เคธเคฎเคธเฅเคฏเคพเคเค: {len(result.github_insights['common_problems'])}") +``` + +**เคชเฅ‚เคฐเฅเคฃ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ**: [เคคเฅ€เคจ-เคงเคพเคฐเคพ เค•เคพเคฐเฅเคฏเคพเคจเฅเคตเคฏเคจ เคธเคพเคฐเคพเค‚เคถ](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” เคธเฅเคฎเคพเคฐเฅเคŸ เคฆเคฐ เคธเฅ€เคฎเคพ เคชเฅเคฐเคฌเค‚เคงเคจ เค”เคฐ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ +- โœ… **เคฌเคนเฅ-เคŸเฅ‹เค•เคจ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ เคธเคฟเคธเฅเคŸเคฎ** - เคเค•เคพเคงเคฟเค• GitHub เค–เคพเคคเฅ‹เค‚ เค•เคพ เคชเฅเคฐเคฌเค‚เคงเคจ (เคตเฅเคฏเค•เฅเคคเคฟเค—เคค, เค•เคพเคฐเฅเคฏ, OSS) + - `~/.config/skill-seekers/config.json` เคชเคฐ เคธเฅเคฐเค•เฅเคทเคฟเคค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคญเค‚เคกเคพเคฐเคฃ (600 เค…เคจเฅเคฎเคคเคฟเคฏเคพเค) + - เคชเฅเคฐเคคเคฟ-เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เคฆเคฐ เคธเฅ€เคฎเคพ เคฐเคฃเคจเฅ€เคคเคฟเคฏเคพเค: `prompt`, `wait`, `switch`, `fail` + - เคชเฅเคฐเคคเคฟ เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเคจเฅ‡ เคฏเฅ‹เค—เฅเคฏ เคŸเคพเค‡เคฎเค†เค‰เคŸ (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ: 30 เคฎเคฟเคจเคŸ, เค…เคจเคฟเคถเฅเคšเคฟเคค เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เคฐเฅ‹เค•เคคเคพ เคนเฅˆ) + - เคธเฅเคฎเคพเคฐเฅเคŸ เคซเคผเฅ‰เคฒเคฌเฅˆเค• เคถเฅเคฐเฅƒเค‚เค–เคฒเคพ: CLI เคคเคฐเฅเค• โ†’ เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ โ†’ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคซเคผเคพเค‡เคฒ โ†’ เคชเฅเคฐเฅ‰เคฎเฅเคชเฅเคŸ + - Claude, Gemini, OpenAI เค•เฅ‡ เคฒเคฟเค API key เคชเฅเคฐเคฌเค‚เคงเคจ +- โœ… **เค‡เค‚เคŸเคฐเฅˆเค•เฅเคŸเคฟเคต เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ เคตเคฟเคœเคผเคพเคฐเฅเคก** - เค†เคธเคพเคจ เคธเฅ‡เคŸเค…เคช เค•เฅ‡ เคฒเคฟเค เคธเฅเค‚เคฆเคฐ เคŸเคฐเฅเคฎเคฟเคจเคฒ UI + - เคŸเฅ‹เค•เคจ เคจเคฟเคฐเฅเคฎเคพเคฃ เค•เฅ‡ เคฒเคฟเค เคฌเฅเคฐเคพเค‰เคœเคผเคฐ เคเค•เฅ€เค•เคฐเคฃ (GitHub เค†เคฆเคฟ เคธเฅเคตเคšเคพเคฒเคฟเคค เค–เฅ‹เคฒเคคเคพ เคนเฅˆ) + - เคŸเฅ‹เค•เคจ เคฎเคพเคจเฅเคฏเค•เคฐเคฃ เค”เคฐ เค•เคจเฅ‡เค•เฅเคถเคจ เคชเคฐเฅ€เค•เฅเคทเคฃ + - เคฐเค‚เค— เค•เฅ‹เคกเคฟเค‚เค— เค•เฅ‡ เคธเคพเคฅ เคตเคฟเคœเคผเฅเค…เคฒ เคธเฅเคŸเฅ‡เคŸเคธ เคชเฅเคฐเคฆเคฐเฅเคถเคจ +- โœ… **เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เคฆเคฐ เคธเฅ€เคฎเคพ เคนเฅˆเค‚เคกเคฒเคฐ** - เค…เคฌ เค…เคจเคฟเคถเฅเคšเคฟเคค เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ เคจเคนเฅ€เค‚! + - เคฆเคฐ เคธเฅ€เคฎเคพเค“เค‚ เค•เฅ‡ เคฌเคพเคฐเฅ‡ เคฎเฅ‡เค‚ เคชเฅ‚เคฐเฅเคต เคšเฅ‡เคคเคพเคตเคจเฅ€ (60/เค˜เค‚เคŸเคพ เคฌเคจเคพเคฎ 5000/เค˜เค‚เคŸเคพ) + - GitHub API เคชเฅเคฐเคคเคฟเค•เฅเคฐเคฟเคฏเคพเค“เค‚ เคธเฅ‡ เคฐเฅ€เคฏเคฒ-เคŸเคพเค‡เคฎ เคชเคนเคšเคพเคจ + - เคชเฅเคฐเค—เคคเคฟ เค•เฅ‡ เคธเคพเคฅ เคฒเคพเค‡เคต เค‰เคฒเคŸเฅ€ เค—เคฟเคจเคคเฅ€ เคŸเคพเค‡เคฎเคฐ + - เคฆเคฐ เคธเฅ€เคฎเคฟเคค เคนเฅ‹เคจเฅ‡ เคชเคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เคธเฅเคตเคฟเคšเคฟเค‚เค— + - เคšเคพเคฐ เคฐเคฃเคจเฅ€เคคเคฟเคฏเคพเค: prompt (เคชเฅ‚เค›เฅ‡เค‚), wait (เค‰เคฒเคŸเฅ€ เค—เคฟเคจเคคเฅ€), switch (เคฆเฅ‚เคธเคฐเคพ เคชเฅเคฐเคฏเคพเคธ), fail (เคฐเคฆเฅเคฆ) +- โœ… **เคชเฅเคจเคƒ เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เค•เฅ€ เค•เฅเคทเคฎเคคเคพ** - เคฌเคพเคงเคฟเคค เค•เคพเคฐเฅเคฏเฅ‹เค‚ เค•เฅ‹ เคœเคพเคฐเฅ€ เคฐเค–เฅ‡เค‚ + - เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเคจเฅ‡ เคฏเฅ‹เค—เฅเคฏ เค…เค‚เคคเคฐเคพเคฒ เคชเคฐ เคชเฅเคฐเค—เคคเคฟ เคธเฅเคตเคšเคพเคฒเคฟเคค เคธเคนเฅ‡เคœเฅ‡เค‚ (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ: 60 เคธเฅ‡เค•เค‚เคก) + - เคชเฅเคฐเค—เคคเคฟ เคตเคฟเคตเคฐเคฃ เค•เฅ‡ เคธเคพเคฅ เคธเคญเฅ€ เคชเฅเคจเคƒ เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เคฏเฅ‹เค—เฅเคฏ เค•เคพเคฐเฅเคฏเฅ‹เค‚ เค•เฅ€ เคธเฅ‚เคšเฅ€ + - เคชเฅเคฐเคพเคจเฅ‡ เค•เคพเคฐเฅเคฏเฅ‹เค‚ เค•เฅ€ เคธเฅเคตเคšเคพเคฒเคฟเคค เคธเคซเคผเคพเคˆ (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ: 7 เคฆเคฟเคจ) +- โœ… **CI/CD เคธเคฎเคฐเฅเคฅเคจ** - เค‘เคŸเฅ‹เคฎเฅ‡เคถเคจ เค•เฅ‡ เคฒเคฟเค เคจเฅ‰เคจ-เค‡เค‚เคŸเคฐเฅˆเค•เฅเคŸเคฟเคต เคฎเฅ‹เคก + - `--non-interactive` เคซเคผเฅเคฒเฅˆเค— เคชเฅเคฐเฅ‰เคฎเฅเคชเฅเคŸ เค•เฅ‡ เคฌเคฟเคจเคพ เคคเฅ‡เคœเคผ เคตเคฟเคซเคฒเคคเคพ + - `--profile` เคซเคผเฅเคฒเฅˆเค— เคตเคฟเคถเคฟเคทเฅเคŸ GitHub เค–เคพเคคเคพ เคšเฅเคจเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค + - เคชเคพเค‡เคชเคฒเคพเค‡เคจ เคฒเฅ‰เค— เค•เฅ‡ เคฒเคฟเค เคธเฅเคชเคทเฅเคŸ เคคเฅเคฐเฅเคŸเคฟ เคธเค‚เคฆเฅ‡เคถ + +**เคคเฅเคตเคฐเคฟเคค เคธเฅ‡เคŸเค…เคช:** +```bash +# เคเค• เคฌเคพเคฐ เค•เคพ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ (5 เคฎเคฟเคจเคŸ) +skill-seekers config --github + +# เคจเคฟเคœเฅ€ เคฐเคฟเคชเฅ‹ เค•เฅ‡ เคฒเคฟเค เคตเคฟเคถเคฟเคทเฅเคŸ เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ +skill-seekers create mycompany/private-repo --profile work + +# CI/CD เคฎเฅ‹เคก (เคคเฅ‡เคœเคผ เคตเคฟเคซเคฒเคคเคพ, เค•เฅ‹เคˆ เคชเฅเคฐเฅ‰เคฎเฅเคชเฅเคŸ เคจเคนเฅ€เค‚) +skill-seekers create owner/repo --non-interactive + +# เคฌเคพเคงเคฟเคค เค•เคพเคฐเฅเคฏ เคชเฅเคจเคƒ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚ +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**เคฆเคฐ เคธเฅ€เคฎเคพ เคฐเคฃเคจเฅ€เคคเคฟเคฏเคพเค เคตเคฟเคธเฅเคคเคพเคฐ เคธเฅ‡:** +- **prompt** (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ) - เคฆเคฐ เคธเฅ€เคฎเคฟเคค เคนเฅ‹เคจเฅ‡ เคชเคฐ เคชเฅ‚เค›เฅ‡เค‚ เค•เคฟ เค•เฅเคฏเคพ เค•เคฐเคจเคพ เคนเฅˆ (เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ, เคธเฅเคตเคฟเคš, เคŸเฅ‹เค•เคจ เคธเฅ‡เคŸเค…เคช, เคฐเคฆเฅเคฆ) +- **wait** - เค‰เคฒเคŸเฅ€ เค—เคฟเคจเคคเฅ€ เคŸเคพเค‡เคฎเคฐ เค•เฅ‡ เคธเคพเคฅ เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเฅเคฐเคคเฅ€เค•เฅเคทเคพ (เคŸเคพเค‡เคฎเค†เค‰เคŸ เค•เคพ เคธเคฎเฅเคฎเคพเคจ เค•เคฐเคคเคพ เคนเฅˆ) +- **switch** - เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค…เค—เคฒเคพ เค‰เคชเคฒเคฌเฅเคง เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เค†เคœเคผเคฎเคพเคเค (เคฌเคนเฅ-เค–เคพเคคเคพ เคธเฅ‡เคŸเค…เคช เค•เฅ‡ เคฒเคฟเค) +- **fail** - เคธเฅเคชเคทเฅเคŸ เคคเฅเคฐเฅเคŸเคฟ เค•เฅ‡ เคธเคพเคฅ เคคเฅเคฐเค‚เคค เคตเคฟเคซเคฒ (CI/CD เค•เฅ‡ เคฒเคฟเค เคฌเคฟเคฒเฅเค•เฅเคฒ เคธเคนเฅ€) + +### ๐ŸŽฏ Bootstrap เค•เฅŒเคถเคฒ - เคธเฅเคต-เคนเฅ‹เคธเฅเคŸเคฟเค‚เค— + +Skill Seekers เค•เฅ‹ เค…เคชเคจเฅ‡ AI เคเคœเฅ‡เค‚เคŸ (Claude Code, Kimi, Codex เค†เคฆเคฟ) เคฎเฅ‡เค‚ เค‰เคชเคฏเฅ‹เค— เค•เฅ‡ เคฒเคฟเค เคเค• เค•เฅŒเคถเคฒ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚: + +```bash +# เค•เฅŒเคถเคฒ เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚ +./scripts/bootstrap_skill.sh + +# Claude Code เคฎเฅ‡เค‚ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**เค†เคชเค•เฅ‹ เค•เฅเคฏเคพ เคฎเคฟเคฒเคคเคพ เคนเฅˆ:** +- โœ… **เคชเฅ‚เคฐเฅเคฃ เค•เฅŒเคถเคฒ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ** - เคธเคญเฅ€ CLI เค•เคฎเคพเค‚เคก เค”เคฐ เค‰เคชเคฏเฅ‹เค— เคชเฅˆเคŸเคฐเฅเคจ +- โœ… **CLI เค•เคฎเคพเค‚เคก เคธเค‚เคฆเคฐเฅเคญ** - เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เคŸเฅ‚เคฒ เค”เคฐ เค‰เคธเค•เฅ‡ เคตเคฟเค•เคฒเฅเคช เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เฅƒเคค +- โœ… **เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค เค‰เคฆเคพเคนเคฐเคฃ** - เคธเคพเคฎเคพเคจเฅเคฏ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เค”เคฐ เคธเคฐเฅเคตเฅ‹เคคเฅเคคเคฎ เค…เคญเฅเคฏเคพเคธ +- โœ… **เคธเฅเคตเคšเคพเคฒเคฟเคค-เคœเคจเคฐเฅ‡เคŸเฅ‡เคก API เคกเฅ‰เค•เฅเคธ** - เค•เฅ‹เคก เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ, เคชเฅˆเคŸเคฐเฅเคจ เค”เคฐ เค‰เคฆเคพเคนเคฐเคฃ + +### ๐Ÿ” เคจเคฟเคœเฅ€ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ +- โœ… **Git-เค†เคงเคพเคฐเคฟเคค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเฅเคฐเฅ‹เคค** - เคจเคฟเคœเฅ€/เคŸเฅ€เคฎ Git เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคธเฅ‡ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเคฌเค‚เคงเคจ** - เค…เคธเฅ€เคฎเคฟเคค GitHub, GitLab, Bitbucket เคฐเคฟเคชเฅ‹ เคชเค‚เคœเฅ€เค•เฅƒเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคŸเฅ€เคฎ เคธเคนเคฏเฅ‹เค—** - 3-5 เคตเฅเคฏเค•เฅเคคเคฟ เคŸเฅ€เคฎเฅ‹เค‚ เคฎเฅ‡เค‚ เค•เคธเฅเคŸเคฎ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเคพเคเคพ เค•เคฐเฅ‡เค‚ +- โœ… **เคเค‚เคŸเคฐเคชเฅเคฐเคพเค‡เคœเคผ เคธเคฎเคฐเฅเคฅเคจ** - เคชเฅเคฐเคพเคฅเคฎเคฟเค•เคคเคพ-เค†เคงเคพเคฐเคฟเคค เคธเคฎเคพเคงเคพเคจ เค•เฅ‡ เคธเคพเคฅ 500+ เคกเฅ‡เคตเคฒเคชเคฐ เคคเค• เคธเฅเค•เฅ‡เคฒ เค•เคฐเฅ‡เค‚ +- โœ… **เคธเฅเคฐเค•เฅเคทเคฟเคค เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ** - เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ เคŸเฅ‹เค•เคจ (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เค•เฅˆเคถเคฟเค‚เค—** - เคเค• เคฌเคพเคฐ เค•เฅเคฒเฅ‹เคจ เค•เคฐเฅ‡เค‚, เค…เคชเคกเฅ‡เคŸ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚ +- โœ… **เค‘เคซเคผเคฒเคพเค‡เคจ เคฎเฅ‹เคก** - เค‘เคซเคผเคฒเคพเค‡เคจ เคนเฅ‹เคจเฅ‡ เคชเคฐ เค•เฅˆเคถ เค•เคฟเค เค—เค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เฅ‡ เคธเคพเคฅ เค•เคพเคฎ เค•เคฐเฅ‡เค‚ + +### ๐Ÿค– เค•เฅ‹เคกเคฌเฅ‡เคธ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ (C3.x) + +**C3.4: AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคธเคพเคฅ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ เคชเฅˆเคŸเคฐเฅเคจ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ** +- โœ… **9 เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคชเฅเคฐเคพเคฐเฅ‚เคช** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 เคชเฅˆเคŸเคฐเฅเคจ เคชเฅเคฐเค•เคพเคฐ** - เคกเฅ‡เคŸเคพเคฌเฅ‡เคธ, API, เคฒเฅ‰เค—เคฟเค‚เค—, เค•เฅˆเคถ, เคˆเคฎเฅ‡เคฒ, เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ, เคธเคฐเฅเคตเคฐ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ +- โœ… **AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ** - เคตเฅˆเค•เคฒเฅเคชเคฟเค• เคฆเฅ‹เคนเคฐเฅ‡-เคฎเฅ‹เคก AI เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ (API + LOCAL) + - เคชเฅเคฐเคคเฅเคฏเฅ‡เค• เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เฅเคฏเคพ เค•เคฐเคคเคพ เคนเฅˆ เคธเคฎเคเคพเคคเคพ เคนเฅˆ + - เคธเคฐเฅเคตเฅ‹เคคเฅเคคเคฎ เค…เคญเฅเคฏเคพเคธ เค”เคฐ เคธเฅเคงเคพเคฐ เคธเฅเคเคพเคคเคพ เคนเฅˆ + - **เคธเฅเคฐเค•เฅเคทเคพ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ** - เคนเคพเคฐเฅเคกเค•เฅ‹เคกเฅ‡เคก เคฐเคนเคธเฅเคฏ, เค‰เคœเคพเค—เคฐ เค•เฅเคฐเฅ‡เคกเฅ‡เค‚เคถเคฟเคฏเคฒ เค–เฅ‹เคœเคคเคพ เคนเฅˆ +- โœ… **เคธเฅเคตเคšเคพเคฒเคฟเคค เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ** - เคธเคญเฅ€ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เคพ JSON + Markdown เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ เคœเคจเคฐเฅ‡เคŸ เค•เคฐเคคเคพ เคนเฅˆ +- โœ… **MCP เคเค•เฅ€เค•เคฐเคฃ** - เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคธเคพเคฅ `extract_config_patterns` เคŸเฅ‚เคฒ + +**C3.3: AI-เคธเค‚เคตเคฐเฅเคงเคฟเคค เค•เฅˆเคธเฅ‡-เค•เคฐเฅ‡เค‚ เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค** +- โœ… **เคตเฅเคฏเคพเคชเค• AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ** - เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ เค—เคพเค‡เคก เค•เฅ‹ เคชเฅ‡เคถเฅ‡เคตเคฐ เคŸเฅเคฏเฅ‚เคŸเฅ‹เคฐเคฟเคฏเคฒ เคฎเฅ‡เค‚ เคฌเคฆเคฒเคคเคพ เคนเฅˆ +- โœ… **5 เคธเฅเคตเคšเคพเคฒเคฟเคค เคธเฅเคงเคพเคฐ** - เคšเคฐเคฃ เคตเคฟเคตเคฐเคฃ, เคธเคฎเคธเฅเคฏเคพ เคจเคฟเคตเคพเคฐเคฃ, เคชเฅ‚เคฐเฅเคตเคพเคชเฅ‡เค•เฅเคทเคพเคเค, เค…เค—เคฒเฅ‡ เค•เคฆเคฎ, เค‰เคชเคฏเฅ‹เค— เคฎเคพเคฎเคฒเฅ‡ +- โœ… **เคฆเฅ‹เคนเคฐเฅ‡-เคฎเฅ‹เคก เคธเคฎเคฐเฅเคฅเคจ** - API เคฎเฅ‹เคก (Claude API) เคฏเคพ LOCAL เคฎเฅ‹เคก (Claude Code CLI) +- โœ… **LOCAL เคฎเฅ‹เคก เคฎเฅ‡เค‚ เคถเฅ‚เคจเฅเคฏ เคฒเคพเค—เคค** - เค…เคชเคจเฅ‡ Claude Code Max เคชเฅเคฒเคพเคจ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเค•เฅ‡ เคฎเฅเคซเคผเฅเคค เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ +- โœ… **เค—เฅเคฃเคตเคคเฅเคคเคพ เคชเคฐเคฟเคตเคฐเฅเคคเคจ** - 75-เคชเค‚เค•เฅเคคเคฟ เคŸเฅ‡เคฎเฅเคชเคฒเฅ‡เคŸ โ†’ 500+ เคชเค‚เค•เฅเคคเคฟ เคตเฅเคฏเคพเคชเค• เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค + +**เค‰เคชเคฏเฅ‹เค—:** +```bash +# เคคเฅเคตเคฐเคฟเคค เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ (1-2 เคฎเคฟเคจเคŸ, เค•เฅ‡เคตเคฒ เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ เคธเฅเคตเคฟเคงเคพเคเค) +skill-seekers scan tests/ --quick + +# AI เค•เฅ‡ เคธเคพเคฅ เคตเฅเคฏเคพเคชเค• เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ (20-60 เคฎเคฟเคจเคŸ, เคธเคญเฅ€ เคธเฅเคตเคฟเคงเคพเคเค) +skill-seekers scan tests/ --comprehensive + +# AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคธเคพเคฅ +skill-seekers scan tests/ --enhance +``` + +**เคชเฅ‚เคฐเฅเคฃ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ + +เคชเฅเคจ: เคชเฅเคฐเคฏเฅ‹เคœเฅเคฏ YAML-เคชเคฐเคฟเคญเคพเคทเคฟเคค เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคชเคพเค‡เคชเคฒเคพเค‡เคจ เคœเฅ‹ เคจเคฟเคฏเค‚เคคเฅเคฐเคฟเคค เค•เคฐเคคเฅ€ เคนเฅˆเค‚ เค•เคฟ AI เค•เคšเฅเคšเฅ‡ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เค•เฅ‹ เคชเฅ‰เคฒเคฟเคถ เค•เคฟเค เค—เค เค•เฅŒเคถเคฒ เคฎเฅ‡เค‚ เค•เฅˆเคธเฅ‡ เคฌเคฆเคฒเคคเคพ เคนเฅˆเฅค + +- โœ… **5 เคฌเค‚เคกเคฒ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ-เคชเคฐเคฟเคญเคพเคทเคฟเคค เคชเฅเคฐเฅ€เคธเฅ‡เคŸ** โ€” `~/.config/skill-seekers/workflows/` เคฎเฅ‡เค‚ เค•เคธเฅเคŸเคฎ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคœเฅ‹เคกเคผเฅ‡เค‚ +- โœ… **เคเค•เคพเคงเคฟเค• เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹** โ€” เคเค• เค•เคฎเคพเค‚เคก เคฎเฅ‡เค‚ เคฆเฅ‹ เคฏเคพ เค…เคงเคฟเค• เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคšเฅ‡เคจ เค•เคฐเฅ‡เค‚ +- โœ… **เคชเฅ‚เคฐเฅเคฃ เคชเฅเคฐเคฌเค‚เคงเคฟเคค CLI** โ€” เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เค•เฅ‹ เคธเฅ‚เคšเฅ€เคฌเคฆเฅเคง, เคจเคฟเคฐเฅ€เค•เฅเคทเคฃ, เค•เฅ‰เคชเฅ€, เคœเฅ‹เคกเคผเฅ‡เค‚, เคนเคŸเคพเคเค เค”เคฐ เคฎเคพเคจเฅเคฏ เค•เคฐเฅ‡เค‚ + +```bash +# เคเค•เคฒ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคฒเคพเค—เฅ‚ เค•เคฐเฅ‡เค‚ +skill-seekers create ./my-project --enhance-workflow security-focus + +# เคเค•เคพเคงเคฟเค• เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคšเฅ‡เคจ เค•เคฐเฅ‡เค‚ (เค•เฅเคฐเคฎ เคฎเฅ‡เค‚ เคฒเคพเค—เฅ‚) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคชเฅเคฐเคฌเค‚เคงเคจ +skill-seekers workflows list # เคธเคญเฅ€ เคธเฅ‚เคšเฅ€เคฌเคฆเฅเคง เค•เคฐเฅ‡เค‚ (เคฌเค‚เคกเคฒ + เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ) +skill-seekers workflows show security-focus # YAML เคธเคพเคฎเค—เฅเคฐเฅ€ เคชเฅเคฐเคฟเค‚เคŸ เค•เคฐเฅ‡เค‚ +skill-seekers workflows copy security-focus # เคธเค‚เคชเคพเคฆเคจ เค•เฅ‡ เคฒเคฟเค เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€ เคฎเฅ‡เค‚ เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚ +skill-seekers workflows add ./my-workflow.yaml # เค•เคธเฅเคŸเคฎ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +skill-seekers workflows remove my-workflow # เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคนเคŸเคพเคเค +skill-seekers workflows validate security-focus # เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคธเค‚เคฐเคšเคจเคพ เคฎเคพเคจเฅเคฏ เค•เคฐเฅ‡เค‚ + +# เคเค• เคธเคพเคฅ เค•เคˆ เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚ +skill-seekers workflows copy security-focus minimal api-documentation + +# เคเค• เคธเคพเคฅ เค•เคˆ เคซเคผเคพเค‡เคฒเฅ‡เค‚ เคœเฅ‹เคกเคผเฅ‡เค‚ +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# เคเค• เคธเคพเคฅ เค•เคˆ เคนเคŸเคพเคเค +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคชเฅเคฐเคพเคฐเฅ‚เคช:** +```yaml +name: security-focus +description: "เคธเฅเคฐเค•เฅเคทเคพ-เค•เฅ‡เค‚เคฆเฅเคฐเคฟเคค เคธเคฎเฅ€เค•เฅเคทเคพ: เค•เคฎเคœเคผเฅ‹เคฐเคฟเคฏเคพเค, เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ, เคกเฅ‡เคŸเคพ เคนเฅˆเค‚เคกเคฒเคฟเค‚เค—" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "OWASP เคถเฅ€เคฐเฅเคท 10 เค”เคฐ เคธเคพเคฎเคพเคจเฅเคฏ เคธเฅเคฐเค•เฅเคทเคพ เค•เคฎเคœเคผเฅ‹เคฐเคฟเคฏเฅ‹เค‚ เค•เฅ€ เคธเคฎเฅ€เค•เฅเคทเคพ เค•เคฐเฅ‡เค‚..." + - name: auth-review + type: custom + prompt: "เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เค”เคฐ เคชเฅเคฐเคพเคงเคฟเค•เคฐเคฃ เคชเฅˆเคŸเคฐเฅเคจ เค•เฅ€ เคœเคพเคเคš เค•เคฐเฅ‡เค‚..." + uses_history: true +``` + +### โšก เคชเฅเคฐเคฆเคฐเฅเคถเคจ เค”เคฐ เคธเฅเค•เฅ‡เคฒ +- โœ… **เคเคธเคฟเค‚เค• เคฎเฅ‹เคก** - async/await เค•เฅ‡ เคธเคพเคฅ 2-3 เค—เฅเคจเคพ เคคเฅ‡เคœเคผ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— (`--async` เคซเคผเฅเคฒเฅˆเค— เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚) +- โœ… **เคฌเคกเคผเฅ‡ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเคฎเคฐเฅเคฅเคจ** - เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เคตเคฟเคญเคพเคœเคจ เค•เฅ‡ เคธเคพเคฅ 10K-40K+ เคชเฅ‡เคœ เค•เฅ‡ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเค‚เคญเคพเคฒเฅ‡เค‚ +- โœ… **เคฐเคพเค‰เคŸเคฐ/เคนเคฌ เค•เฅŒเคถเคฒ** - เคตเคฟเคถเฅ‡เคท เค‰เคช-เค•เฅŒเคถเคฒ เคคเค• เคฌเฅเคฆเฅเคงเคฟเคฎเคพเคจ เคฐเฅ‚เคŸเคฟเค‚เค— +- โœ… **เคธเคฎเคพเคจเคพเค‚เคคเคฐ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค—** - เคเค• เคธเคพเคฅ เค•เคˆ เค•เฅŒเคถเคฒ เคชเฅเคฐเฅ‹เคธเฅ‡เคธ เค•เคฐเฅ‡เค‚ +- โœ… **เคšเฅ‡เค•เคชเฅ‰เค‡เค‚เคŸ/เคชเฅเคจเคƒ เคถเฅเคฐเฅ‚** - เคฒเค‚เคฌเฅ€ เคธเฅเค•เฅเคฐเฅˆเคช เคฎเฅ‡เค‚ เค•เคญเฅ€ เคชเฅเคฐเค—เคคเคฟ เคจ เค–เฅ‹เคเค +- โœ… **เค•เฅˆเคถเคฟเค‚เค— เคธเคฟเคธเฅเคŸเคฎ** - เคเค• เคฌเคพเคฐ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚, เคคเฅเคฐเค‚เคค เคชเฅเคจเคฐเฅเคจเคฟเคฐเฅเคฎเคพเคฃ เค•เคฐเฅ‡เค‚ + +### ๐Ÿค– เคเคœเฅ‡เค‚เคŸ-เค…เคœเฅเคžเฅ‡เคฏ เค•เฅŒเคถเคฒ เคœเคจเคฐเฅ‡เคถเคจ +- โœ… **เคฌเคนเฅ-เคเคœเฅ‡เค‚เคŸ เคธเคฎเคฐเฅเคฅเคจ** - `--agent` เคซเคผเฅเคฒเฅˆเค— เค•เฅ‡ เคฎเคพเคงเฅเคฏเคฎ เคธเฅ‡ Claude, Kimi, Codex, Copilot, OpenCode เคฏเคพ เค•เคฟเคธเฅ€ เคญเฅ€ เค•เคธเฅเคŸเคฎ เคเคœเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค เค•เฅŒเคถเคฒ เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚ +- โœ… **เค•เคธเฅเคŸเคฎ เคเคœเฅ‡เค‚เคŸ เค•เคฎเคพเค‚เคก** - เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค เค•เคธเฅเคŸเคฎ เคเคœเฅ‡เค‚เคŸ CLI เค•เคฎเคพเค‚เคก เคจเคฟเคฐเฅเคฆเคฟเคทเฅเคŸ เค•เคฐเคจเฅ‡ เคนเฅ‡เคคเฅ `--agent-cmd` เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ +- โœ… **เคธเคพเคฐเฅเคตเคญเฅŒเคฎเคฟเค• เคซเคผเฅเคฒเฅˆเค—** - `--agent` เค”เคฐ `--agent-cmd` เคธเคญเฅ€ เค•เคฎเคพเค‚เคก เคชเคฐ เค‰เคชเคฒเคฌเฅเคง (create, scrape, github, pdf เค†เคฆเคฟ) + +### ๐Ÿ“ฆ เคฎเคพเคฐเฅเค•เฅ‡เคŸเคชเฅเคฒเฅ‡เคธ เคชเคพเค‡เคชเคฒเคพเค‡เคจ +- โœ… **เคฎเคพเคฐเฅเค•เฅ‡เคŸเคชเฅเคฒเฅ‡เคธ เคฎเฅ‡เค‚ เคชเฅเคฐเค•เคพเคถเคฟเคค เค•เคฐเฅ‡เค‚** - Claude Code เคชเฅเคฒเค—เค‡เคจ เคฎเคพเคฐเฅเค•เฅ‡เคŸเคชเฅเคฒเฅ‡เคธ เคฐเคฟเคชเฅ‹ เคฎเฅ‡เค‚ เค•เฅŒเคถเคฒ เคชเฅเคฐเค•เคพเคถเคฟเคค เค•เคฐเฅ‡เค‚ +- โœ… **เคเค‚เคก-เคŸเฅ‚-เคเค‚เคก เคชเคพเค‡เคชเคฒเคพเค‡เคจ** - เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเฅเคฐเฅ‹เคค เคธเฅ‡ เคชเฅเคฐเค•เคพเคถเคฟเคค เคฎเคพเคฐเฅเค•เฅ‡เคŸเคชเฅเคฒเฅ‡เคธ เคชเฅเคฐเคตเคฟเคทเฅเคŸเคฟ เคคเค• + +### โœ… เค—เฅเคฃเคตเคคเฅเคคเคพ เค†เคถเฅเคตเคพเคธเคจ +- โœ… **เคชเฅ‚เคฐเฅเคฃ เคชเคฐเฅ€เค•เฅเคทเคฟเคค** - 3,700+ เคชเคฐเฅ€เค•เฅเคทเคฃ เคตเฅเคฏเคพเคชเค• เค•เคตเคฐเฅ‡เคœ เค•เฅ‡ เคธเคพเคฅ + +--- + +## ๐Ÿ“ฆ เค‡เค‚เคธเฅเคŸเฅ‰เคฒเฅ‡เคถเคจ + +```bash +# เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ (เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค—, GitHub เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ, PDF, เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค—) +pip install skill-seekers + +# เคธเคญเฅ€ LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคธเคพเคฅ +pip install skill-seekers[all-llms] + +# MCP เคธเคฐเฅเคตเคฐ เค•เฅ‡ เคธเคพเคฅ +pip install skill-seekers[mcp] + +# เคธเคฌ เค•เฅเค› +pip install skill-seekers[all] +``` + +**เคšเฅเคจเคจเฅ‡ เคฎเฅ‡เค‚ เคฎเคฆเคฆ เคšเคพเคนเคฟเค?** เคธเฅ‡เคŸเค…เคช เคตเคฟเคœเคผเคพเคฐเฅเคก เคšเคฒเคพเคเค: +```bash +skill-seekers-setup +``` + +### เค‡เค‚เคธเฅเคŸเฅ‰เคฒเฅ‡เคถเคจ เคตเคฟเค•เคฒเฅเคช + +| เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฎเคพเค‚เคก | เคตเคฟเคถเฅ‡เคทเคคเคพเคเค | +|---------------|----------| +| `pip install skill-seekers` | เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค—, GitHub เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ, PDF, เคธเคญเฅ€ เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ | +| `pip install skill-seekers[gemini]` | + Google Gemini เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[all-llms]` | + เคธเคญเฅ€ LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ | +| `pip install skill-seekers[mcp]` | + MCP เคธเคฐเฅเคตเคฐ | +| `pip install skill-seekers[video]` | + YouTube/Vimeo เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ เค”เคฐ เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ | +| `pip install skill-seekers[video-full]` | + Whisper เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ เค”เคฐ เคตเคฟเคœเคผเฅเค…เคฒ เคซเคผเฅเคฐเฅ‡เคฎ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ | +| `pip install skill-seekers[jupyter]` | + Jupyter Notebook เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[pptx]` | + PowerPoint เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[confluence]` | + Confluence เคตเคฟเค•เฅ€ เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[notion]` | + Notion เคชเฅ‡เคœ เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[rss]` | + RSS/Atom เคซเคผเฅ€เคก เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[chat]` | + Slack/Discord เคšเฅˆเคŸ เคเค•เฅเคธเคชเฅ‹เคฐเฅเคŸ เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเคฎเคฐเฅเคฅเคจ | +| `pip install skill-seekers[all]` | เคธเคฌ เค•เฅเค› เคธเค•เฅเคทเคฎ | + +> **เคตเฅ€เคกเคฟเคฏเฅ‹ เคตเคฟเคœเคผเฅเค…เคฒ เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ (GPU-เคธเค•เฅเคทเคฎ):** `skill-seekers[video-full]` เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเคจเฅ‡ เค•เฅ‡ เคฌเคพเคฆ, +> `skill-seekers create --setup` เคšเคฒเคพเคเค เคคเคพเค•เคฟ เค†เคชเค•เคพ GPU เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เคชเคนเคšเคพเคจเคพ เคœเคพ เคธเค•เฅ‡ เค”เคฐ เคธเคนเฅ€ PyTorch +> เคธเค‚เคธเฅเค•เคฐเคฃ + easyocr เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฟเคฏเคพ เคœเคพ เคธเค•เฅ‡เฅค เคฏเคน เคตเคฟเคœเคผเฅเค…เคฒ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเคจเฅ‡ เค•เคพ เค…เคจเฅเคถเค‚เคธเคฟเคค เคคเคฐเฅ€เค•เคพ เคนเฅˆเฅค + +--- + +## ๐Ÿš€ เคเค•-เค•เคฎเคพเค‚เคก เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ + +**เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเฅ‡ เค…เคชเคฒเฅ‹เคกเฅ‡เคก เค•เฅŒเคถเคฒ เคคเค• เค•เคพ เคธเคฌเคธเฅ‡ เคคเฅ‡เคœเคผ เคคเคฐเฅ€เค•เคพ โ€” เคชเฅ‚เคฐเฅเคฃ เค‘เคŸเฅ‹เคฎเฅ‡เคถเคจ:** + +```bash +# เค†เคงเคฟเค•เคพเคฐเคฟเค• เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเฅ‡ React เค•เฅŒเคถเคฒ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ (Claude เคชเคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เค…เคชเคฒเฅ‹เคก) +skill-seekers install --config react + +# เคธเฅเคฅเคพเคจเฅ€เคฏ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคซเคผเคพเค‡เคฒ เคธเฅ‡ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +skill-seekers install --config configs/custom.json + +# เค…เคชเคฒเฅ‹เคก เค•เคฟเค เคฌเคฟเคจเคพ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ (เค•เฅ‡เคตเคฒ เคชเฅˆเค•เฅ‡เคœ) +skill-seekers install --config django --no-upload + +# เคฌเคฟเคจเคพ เคจเคฟเคทเฅเคชเคพเคฆเคจ เค•เคฟเค เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เค•เคพ เคชเฅ‚เคฐเฅเคตเคพเคตเคฒเฅ‹เค•เคจ เค•เคฐเฅ‡เค‚ +skill-seekers install --config react --dry-run +``` + +**เคธเคฎเคฏ:** เค•เฅเคฒ 20-45 เคฎเคฟเคจเคŸ | **เค—เฅเคฃเคตเคคเฅเคคเคพ:** เคชเฅเคฐเฅ‹เคกเค•เฅเคถเคจ-เคคเฅˆเคฏเคพเคฐ (9/10) | **เคฒเคพเค—เคค:** เคฎเฅเคซเคผเฅเคค + +**เคจเคฟเคทเฅเคชเคพเคฆเคฟเคค เคšเคฐเคฃ:** +``` +๐Ÿ“ฅ เคšเคฐเคฃ 1: เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚ (เคฏเคฆเคฟ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคจเคพเคฎ เคฆเคฟเคฏเคพ เค—เคฏเคพ เคนเฅ‹) +๐Ÿ“– เคšเคฐเคฃ 2: เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚ +โœจ เคšเคฐเคฃ 3: AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ (เค…เคจเคฟเคตเคพเคฐเฅเคฏ - เค›เฅ‹เคกเคผเคจเฅ‡ เค•เคพ เคตเคฟเค•เคฒเฅเคช เคจเคนเฅ€เค‚) +๐Ÿ“ฆ เคšเคฐเคฃ 4: เค•เฅŒเคถเคฒ เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ +โ˜๏ธ เคšเคฐเคฃ 5: Claude เคชเคฐ เค…เคชเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚ (เคตเฅˆเค•เคฒเฅเคชเคฟเค•, API key เค†เคตเคถเฅเคฏเค•) +``` + +**เค†เคตเคถเฅเคฏเค•เคคเคพเคเค:** +- ANTHROPIC_API_KEY เคชเคฐเฅเคฏเคพเคตเคฐเคฃ เคšเคฐ (เคธเฅเคตเคšเคพเคฒเคฟเคค เค…เคชเคฒเฅ‹เคก เค•เฅ‡ เคฒเคฟเค) +- Claude Code Max เคชเฅเคฒเคพเคจ (เคธเฅเคฅเคพเคจเฅ€เคฏ AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค), เคฏเคพ เค…เคฒเค— AI เคเคœเฅ‡เค‚เคŸ เคšเฅเคจเคจเฅ‡ เค•เฅ‡ เคฒเคฟเค `--agent` เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ + +--- + +## ๐Ÿ“Š เคซเคผเฅ€เคšเคฐ เคฎเฅˆเคŸเฅเคฐเคฟเค•เฅเคธ + +Skill Seekers **12 LLM เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ**, **8 RAG/เคตเฅ‡เค•เฅเคŸเคฐ เคฒเค•เฅเคทเฅเคฏ**, **18 เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐ** เค”เคฐ เคธเคญเฅ€ เคฒเค•เฅเคทเฅเคฏเฅ‹เค‚ เคชเคฐ เคชเฅ‚เคฐเฅเคฃ เคซเคผเฅ€เคšเคฐ เคธเคฎเคพเคจเคคเคพ เค•เคพ เคธเคฎเคฐเฅเคฅเคจ เค•เคฐเคคเคพ เคนเฅˆเฅค + +**เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, เคœเฅ‡เคจเฅ‡เคฐเคฟเค• Markdown, OpenCode, Kimi, DeepSeek, Qwen, OpenRouter, Together AI, Fireworks AI +**เคธเฅเคฐเฅ‹เคค เคชเฅเคฐเค•เคพเคฐ:** เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸ, GitHub เคฐเคฟเคชเฅ‹, PDF, Word (.docx), EPUB, เคตเฅ€เคกเคฟเคฏเฅ‹, เคธเฅเคฅเคพเคจเฅ€เคฏ เค•เฅ‹เคกเคฌเฅ‡เคธ, Jupyter Notebook, เคธเฅเคฅเคพเคจเฅ€เคฏ HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS/Atom เคซเคผเฅ€เคก, Man เคชเฅ‡เคœ, Confluence เคตเคฟเค•เฅ€, Notion เคชเฅ‡เคœ, Slack/Discord เคšเฅˆเคŸ เคเค•เฅเคธเคชเฅ‹เคฐเฅเคŸ + +เคตเคฟเคธเฅเคคเฅƒเคค เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เค”เคฐ เคซเคผเฅ€เคšเคฐ เคธเคฎเคฐเฅเคฅเคจ เค•เฅ‡ เคฒเคฟเค [เคชเฅ‚เคฐเฅเคฃ เคซเคผเฅ€เคšเคฐ เคฎเฅˆเคŸเฅเคฐเคฟเค•เฅเคธ](docs/reference/FEATURE_MATRIX.md) เคฆเฅ‡เค–เฅ‡เค‚เฅค + +### เคคเฅเคตเคฐเคฟเคค เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคคเฅเคฒเคจเคพ + +| เคตเคฟเคถเฅ‡เคทเคคเคพ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------|--------|--------|--------|---------|----------| +| เคชเฅเคฐเคพเคฐเฅ‚เคช | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| เค…เคชเคฒเฅ‹เคก | โœ… API | โœ… API | โœ… API | โœ… API | โŒ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ | +| เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ เค•เฅ‹เคˆ เคจเคนเฅ€เค‚ | +| เคธเคญเฅ€ เค•เฅŒเคถเคฒ เคฎเฅ‹เคก | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## เค‰เคชเคฏเฅ‹เค— เค‰เคฆเคพเคนเคฐเคฃ + +### เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— + +```bash +# เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚ +skill-seekers create --config configs/react.json + +# เคฌเคฟเคจเคพ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เฅ‡ เคคเฅเคตเคฐเคฟเคค เคธเฅเค•เฅเคฐเฅˆเคช +skill-seekers create https://react.dev --name react + +# เคเคธเคฟเค‚เค• เคฎเฅ‹เคก เค•เฅ‡ เคธเคพเคฅ (3 เค—เฅเคจเคพ เคคเฅ‡เคœเคผ) +skill-seekers create --config configs/godot.json --async --workers 8 + +# เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคฒเคฟเค เคเค• เคตเคฟเคถเคฟเคทเฅเคŸ AI เคเคœเฅ‡เค‚เคŸ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ + +```bash +# เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ PDF เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ +skill-seekers create --pdf docs/manual.pdf --name myskill + +# เค‰เคจเฅเคจเคค เคธเฅเคตเคฟเคงเคพเคเค +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # เคคเคพเคฒเคฟเค•เคพเคเค เคจเคฟเค•เคพเคฒเฅ‡เค‚ + --parallel \ # เคคเฅ‡เคœเคผ เคธเคฎเคพเคจเคพเค‚เคคเคฐ เคชเฅเคฐเคธเค‚เคธเฅเค•เคฐเคฃ + --workers 8 # 8 CPU เค•เฅ‹เคฐ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ + +# เคธเฅเค•เฅˆเคจ เค•เคฟเค เค—เค PDF (เค†เคตเคถเฅเคฏเค•: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### เคตเฅ€เคกเคฟเคฏเฅ‹ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ + +```bash +# เคตเฅ€เคกเคฟเคฏเฅ‹ เคธเคฎเคฐเฅเคฅเคจ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +pip install skill-seekers[video] # เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ + เคฎเฅ‡เคŸเคพเคกเฅ‡เคŸเคพ +pip install skill-seekers[video-full] # + Whisper เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคถเคจ + เคตเคฟเคœเคผเฅเค…เคฒ เคซเคผเฅเคฐเฅ‡เคฎ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ + +# GPU เคธเฅเคตเคšเคพเคฒเคฟเคค เคชเคนเคšเคพเคจ เค”เคฐ เคตเคฟเคœเคผเฅเค…เคฒ เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ (PyTorch + easyocr) +skill-seekers create --setup + +# YouTube เคตเฅ€เคกเคฟเคฏเฅ‹ เคธเฅ‡ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# YouTube เคชเฅเคฒเฅ‡เคฒเคฟเคธเฅเคŸ เคธเฅ‡ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# เคธเฅเคฅเคพเคจเฅ€เคฏ เคตเฅ€เคกเคฟเคฏเฅ‹ เคซเคผเคพเค‡เคฒ เคธเฅ‡ เคจเคฟเค•เคพเคฒเฅ‡เค‚ +skill-seekers create --video-file recording.mp4 --name myrecording + +# เคตเคฟเคœเคผเฅเค…เคฒ เคซเคผเฅเคฐเฅ‡เคฎ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เฅ‡ เคธเคพเคฅ เคจเคฟเค•เคพเคฒเฅ‡เค‚ (video-full เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ เค†เคตเคถเฅเคฏเค•) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เฅ‡ เคธเคพเคฅ (OCR เคธเคพเคซเคผ เค•เคฐเฅ‡เค‚ + เคชเฅ‰เคฒเคฟเคถ SKILL.md เคœเคจเคฐเฅ‡เคŸ เค•เคฐเฅ‡เค‚) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# เคตเฅ€เคกเคฟเคฏเฅ‹ เค•เคพ เคตเคฟเคถเคฟเคทเฅเคŸ เคญเคพเค— เค•เฅเคฒเคฟเคช เค•เคฐเฅ‡เค‚ (เคธเฅ‡เค•เค‚เคก, MM:SS, HH:MM:SS เคธเคฎเคฐเฅเคฅเคฟเคค) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# เค•เคฎ-เคตเคฟเคถเฅเคตเคธเคจเฅ€เคฏ OCR เคซเคผเฅเคฐเฅ‡เคฎ เค•เฅ‡ เคฒเคฟเค Vision API เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ (ANTHROPIC_API_KEY เค†เคตเคถเฅเคฏเค•) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# เคชเคนเคฒเฅ‡ เคธเฅ‡ เคจเคฟเค•เคพเคฒเฅ‡ เค—เค เคกเฅ‡เคŸเคพ เคธเฅ‡ เค•เฅŒเคถเคฒ เคชเฅเคจเคฐเฅเคจเคฟเคฐเฅเคฎเคพเคฃ เค•เคฐเฅ‡เค‚ (เคกเคพเค‰เคจเคฒเฅ‹เคก เค›เฅ‹เคกเคผเฅ‡เค‚) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **เคชเฅ‚เคฐเฅเคฃ เค—เคพเค‡เคก:** เคชเฅ‚เคฐเฅเคฃ CLI เคธเค‚เคฆเคฐเฅเคญ, เคตเคฟเคœเคผเฅเค…เคฒ เคชเคพเค‡เคชเคฒเคพเค‡เคจ เคตเคฟเคตเคฐเคฃ, AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคตเคฟเค•เคฒเฅเคช +> เค”เคฐ เคธเคฎเคธเฅเคฏเคพ เคจเคฟเคตเคพเคฐเคฃ เค•เฅ‡ เคฒเคฟเค [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) เคฆเฅ‡เค–เฅ‡เค‚เฅค + +### GitHub เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ + +```bash +# เคฌเฅเคจเคฟเคฏเคพเคฆเฅ€ เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— +skill-seekers create facebook/react + +# เคชเฅเคฐเคฎเคพเคฃเฅ€เค•เคฐเคฃ เค•เฅ‡ เคธเคพเคฅ (เค‰เคšเฅเคš เคฆเคฐ เคธเฅ€เคฎเคพ) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# เคถเคพเคฎเคฟเคฒ เคธเคพเคฎเค—เฅเคฐเฅ€ เค•เคธเฅเคŸเคฎเคพเค‡เคœเคผ เค•เคฐเฅ‡เค‚ +skill-seekers create django/django \ + --include-issues \ # GitHub Issues เคจเคฟเค•เคพเคฒเฅ‡เค‚ + --max-issues 100 \ # issue เคธเค‚เค–เฅเคฏเคพ เคธเฅ€เคฎเคฟเคค เค•เคฐเฅ‡เค‚ + --include-changelog # CHANGELOG.md เคจเคฟเค•เคพเคฒเฅ‡เค‚ +``` + +### เคเค•เฅ€เค•เฅƒเคค เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— + +**เคตเคฟเคฐเฅ‹เคง เคชเคนเคšเคพเคจ เค•เฅ‡ เคธเคพเคฅ เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ + GitHub + PDF เค•เฅ‹ เคเค• เคเค•เฅ€เค•เฅƒเคค เค•เฅŒเคถเคฒ เคฎเฅ‡เค‚ เคฎเคฟเคฒเคพเคเค:** + +```bash +# เคฎเฅŒเคœเฅ‚เคฆเคพ เคเค•เฅ€เค•เฅƒเคค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเฅ‡เค‚ +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# เคฏเคพ เคเค•เฅ€เค•เฅƒเคค เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคฌเคจเคพเคเค +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**เคตเคฟเคฐเฅ‹เคง เคชเคนเคšเคพเคจ เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ เค–เฅ‹เคœเคคเฅ€ เคนเฅˆ:** +- ๐Ÿ”ด **เค•เฅ‹เคก เคฎเฅ‡เค‚ เค…เคจเฅเคชเคธเฅเคฅเคฟเคค** (เค‰เคšเฅเคš): เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เฅƒเคค เคฒเฅ‡เค•เคฟเคจ เค•เคพเคฐเฅเคฏเคพเคจเฅเคตเคฟเคค เคจเคนเฅ€เค‚ +- ๐ŸŸก **เคกเฅ‰เค•เฅเคธ เคฎเฅ‡เค‚ เค…เคจเฅเคชเคธเฅเคฅเคฟเคค** (เคฎเคงเฅเคฏเคฎ): เค•เคพเคฐเฅเคฏเคพเคจเฅเคตเคฟเคค เคฒเฅ‡เค•เคฟเคจ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เฅƒเคค เคจเคนเฅ€เค‚ +- โš ๏ธ **เคนเคธเฅเคคเคพเค•เฅเคทเคฐ เคฌเฅ‡เคฎเฅ‡เคฒ**: เคญเคฟเคจเฅเคจ เคชเฅˆเคฐเคพเคฎเฅ€เคŸเคฐ/เคŸเคพเค‡เคช +- โ„น๏ธ **เคตเคฟเคตเคฐเคฃ เคฌเฅ‡เคฎเฅ‡เคฒ**: เคญเคฟเคจเฅเคจ เคธเฅเคชเคทเฅเคŸเฅ€เค•เคฐเคฃ + +**เคชเฅ‚เคฐเฅเคฃ เค—เคพเค‡เคก:** [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) เคฆเฅ‡เค–เฅ‡เค‚เฅค + +### เคจเคฟเคœเฅ€ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ + +**เคจเคฟเคœเฅ€ Git เคฐเคฟเคชเฅ‰เคœเคผเคฟเคŸเคฐเฅ€ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฐเค•เฅ‡ เคŸเฅ€เคฎเฅ‹เค‚ เคฎเฅ‡เค‚ เค•เคธเฅเคŸเคฎ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคธเคพเคเคพ เค•เคฐเฅ‡เค‚:** + +```bash +# เคตเคฟเค•เคฒเฅเคช 1: MCP เคŸเฅ‚เคฒ เค•เคพ เค‰เคชเคฏเฅ‹เค— (เค…เคจเฅเคถเค‚เคธเคฟเคค) +# เค…เคชเคจเฅ€ เคŸเฅ€เคฎ เค•เฅ€ เคจเคฟเคœเฅ€ เคฐเคฟเคชเฅ‹ เคชเค‚เคœเฅ€เค•เฅƒเคค เค•เคฐเฅ‡เค‚ +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# เคŸเฅ€เคฎ เคฐเคฟเคชเฅ‹ เคธเฅ‡ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคชเฅเคฐเคพเคชเฅเคค เค•เคฐเฅ‡เค‚ +fetch_config(source="team", config_name="internal-api") +``` + +**เคธเคฎเคฐเฅเคฅเคฟเคค เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**เคชเฅ‚เคฐเฅเคฃ เค—เคพเค‡เคก:** [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) เคฆเฅ‡เค–เฅ‡เค‚เฅค + +## เคฏเคน เค•เฅˆเคธเฅ‡ เค•เคพเคฎ เค•เคฐเคคเคพ เคนเฅˆ + +```mermaid +graph LR + A[เคกเฅ‰เค•เฅเคฏเฅ‚เคฎเฅ‡เค‚เคŸเฅ‡เคถเคจ เคตเฅ‡เคฌเคธเคพเค‡เคŸ] --> B[Skill Seekers] + B --> C[เคธเฅเค•เฅเคฐเฅˆเคชเคฐ] + B --> D[AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ] + B --> E[เคชเฅˆเค•เฅ‡เคœเคฐ] + C --> F[เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เคธเค‚เคฆเคฐเฅเคญ] + D --> F + F --> E + E --> G[AI เค•เฅŒเคถเคฒ .zip] + G --> H[AI เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคชเคฐ เค…เคชเคฒเฅ‹เคก] +``` + +0. **llms.txt เคชเคนเคšเคพเคจ** - เคชเคนเคฒเฅ‡ llms-full.txt, llms.txt, llms-small.txt เค•เฅ€ เคœเคพเคเคš เค•เคฐเคคเคพ เคนเฅˆ (เคธเฅเคฎเคพเคฐเฅเคŸ SPA เค–เฅ‹เคœ เค•เคพ เคนเคฟเคธเฅเคธเคพ) +1. **เคธเฅเค•เฅเคฐเฅˆเคช**: เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ เคธเฅ‡ เคธเคญเฅ€ เคชเฅ‡เคœ เคจเคฟเค•เคพเคฒเคคเคพ เคนเฅˆ +2. **เคตเคฐเฅเค—เฅ€เค•เคฐเคฃ**: เคธเคพเคฎเค—เฅเคฐเฅ€ เค•เฅ‹ เคตเคฟเคทเคฏเฅ‹เค‚ เคฎเฅ‡เค‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เค•เคฐเคคเคพ เคนเฅˆ (API, เค—เคพเค‡เคก, เคŸเฅเคฏเฅ‚เคŸเฅ‹เคฐเคฟเคฏเคฒ เค†เคฆเคฟ) +3. **เคเคจเฅเคนเคพเค‚เคธ**: AI เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เค•เคพ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เคฐเคคเคพ เคนเฅˆ เค”เคฐ เค‰เคฆเคพเคนเคฐเคฃเฅ‹เค‚ เค•เฅ‡ เคธเคพเคฅ เคตเฅเคฏเคพเคชเค• SKILL.md เคฌเคจเคพเคคเคพ เคนเฅˆ (`--agent` เค•เฅ‡ เคฎเคพเคงเฅเคฏเคฎ เคธเฅ‡ เค•เคˆ เคเคœเฅ‡เค‚เคŸ เคธเคฎเคฐเฅเคฅเคฟเคค) +4. **เคชเฅˆเค•เฅ‡เคœ**: เคธเคฌ เค•เฅเค› เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ-เคคเฅˆเคฏเคพเคฐ `.zip` เคซเคผเคพเค‡เคฒ เคฎเฅ‡เค‚ เคฌเค‚เคกเคฒ เค•เคฐเคคเคพ เคนเฅˆ + +## เคตเคพเคธเฅเคคเฅเค•เคฒเคพ + +เคธเคฟเคธเฅเคŸเคฎ **8 เค•เฅ‹เคฐ เคฎเฅ‰เคกเฅเคฏเฅ‚เคฒ** เค”เคฐ **5 เคฏเฅ‚เคŸเคฟเคฒเคฟเคŸเฅ€ เคฎเฅ‰เคกเฅเคฏเฅ‚เคฒ** เคฎเฅ‡เค‚ เคตเฅเคฏเคตเคธเฅเคฅเคฟเคค เคนเฅˆ (เค•เฅเคฒ ~200 เค•เฅเคฒเคพเคธเฅ‡เคธ): + +![เคชเฅˆเค•เฅ‡เคœ เค…เคตเคฒเฅ‹เค•เคจ](docs/UML/exports/00_package_overview.png) + +| เคฎเฅ‰เคกเฅเคฏเฅ‚เคฒ | เค‰เคฆเฅเคฆเฅ‡เคถเฅเคฏ | เคฎเฅเค–เฅเคฏ เค•เฅเคฒเคพเคธเฅ‡เคธ | +|---------|---------|---------------| +| **CLICore** | Git-เคถเฅˆเคฒเฅ€ เค•เคฎเคพเค‚เคก เคกเคฟเคธเฅเคชเฅˆเคšเคฐ | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 เคธเฅเคฐเฅ‹เคค-เคชเฅเคฐเค•เคพเคฐ เคเค•เฅเคธเคŸเฅเคฐเฅˆเค•เฅเคŸเคฐ | `DocToSkillConverter`, `DocumentSkillBuilder` (เคธเคพเคเคพ เคฌเคฟเคฒเฅเคก เคฒเฅ‡เคฏเคฐ), `UnifiedScraper` | +| **Adaptors** | 20+ เค†เค‰เคŸเคชเฅเคŸ เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎ เคชเฅเคฐเคพเคฐเฅ‚เคช | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | C3.x เค•เฅ‹เคกเคฌเฅ‡เคธ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เคชเคพเค‡เคชเคฒเคพเค‡เคจ | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 GoF เคกเคฟเคŸเฅ‡เค•เฅเคŸเคฐ | +| **Enhancement** | `AgentClient` เค•เฅ‡ เคฎเคพเคงเฅเคฏเคฎ เคธเฅ‡ AI-เคธเค‚เคšเคพเคฒเคฟเคค เค•เฅŒเคถเคฒ เคธเฅเคงเคพเคฐ | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | เค•เฅŒเคถเคฒ เคชเฅˆเค•เฅ‡เคœ, เค…เคชเคฒเฅ‹เคก, เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP เคธเคฐเฅเคตเคฐ (40 เคŸเฅ‚เคฒ) | `SkillSeekerMCPServer`, 10 เคŸเฅ‚เคฒ เคฎเฅ‰เคกเฅเคฏเฅ‚เคฒ | +| **Sync** | เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคชเคฐเคฟเคตเคฐเฅเคคเคจ เคชเคนเคšเคพเคจ | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +เคฏเฅ‚เคŸเคฟเคฒเคฟเคŸเฅ€ เคฎเฅ‰เคกเฅเคฏเฅ‚เคฒ: **Parsers** (28 CLI เคชเคพเคฐเฅเคธเคฐ), **Storage** (S3/GCS/Azure), **Embedding** (เคฌเคนเฅ-เคชเฅเคฐเคฆเคพเคคเคพ เคตเฅ‡เค•เฅเคŸเคฐ), **Benchmark** (เคชเฅเคฐเคฆเคฐเฅเคถเคจ), **Utilities** (16 เคธเคพเคเคพ เคนเฅ‡เคฒเฅเคชเคฐ)เฅค + +เคชเฅ‚เคฐเฅเคฃ UML เค†เคฐเฅ‡เค–: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ: `docs/UML/skill_seekers.mdj` | HTML API เคธเค‚เคฆเคฐเฅเคญ: `docs/UML/html/` + +## ๐Ÿ“‹ เคชเฅ‚เคฐเฅเคตเคพเคชเฅ‡เค•เฅเคทเคพเคเค + +**เคถเฅเคฐเฅ‚ เค•เคฐเคจเฅ‡ เคธเฅ‡ เคชเคนเคฒเฅ‡, เคธเฅเคจเคฟเคถเฅเคšเคฟเคค เค•เคฐเฅ‡เค‚ เค•เคฟ เค†เคชเค•เฅ‡ เคชเคพเคธ เคนเฅˆ:** + +1. **Python 3.10 เคฏเคพ เค‰เคšเฅเคšเคคเคฐ** - [เคกเคพเค‰เคจเคฒเฅ‹เคก](https://www.python.org/downloads/) | เคœเคพเคเคšเฅ‡เค‚: `python3 --version` +2. **Git** - [เคกเคพเค‰เคจเคฒเฅ‹เคก](https://git-scm.com/) | เคœเคพเคเคšเฅ‡เค‚: `git --version` +3. **15-30 เคฎเคฟเคจเคŸ** เคชเคนเคฒเฅ€ เคฌเคพเคฐ เคธเฅ‡เคŸเค…เคช เค•เฅ‡ เคฒเคฟเค + +**เคชเคนเคฒเฅ€ เคฌเคพเคฐ?** โ†’ **[เคฏเคนเคพเค เคธเฅ‡ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚: เคฌเฅเคฒเฅ‡เคŸเคชเฅเคฐเฅ‚เคซเคผ เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค เค—เคพเค‡เคก](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Claude เคชเคฐ เค•เฅŒเคถเคฒ เค…เคชเคฒเฅ‹เคก เค•เคฐเคจเคพ + +เค†เคชเค•เคพ เค•เฅŒเคถเคฒ เคชเฅˆเค•เฅ‡เคœ เคนเฅ‹ เคœเคพเคจเฅ‡ เค•เฅ‡ เคฌเคพเคฆ, เค‡เคธเฅ‡ Claude เคชเคฐ เค…เคชเคฒเฅ‹เคก เค•เคฐเคจเคพ เคนเฅ‹เค—เคพ: + +### เคตเคฟเค•เคฒเฅเคช 1: เคธเฅเคตเคšเคพเคฒเคฟเคค เค…เคชเคฒเฅ‹เคก (API-เค†เคงเคพเคฐเคฟเคค) + +```bash +# เค…เคชเคจเฅ€ API key เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚ (เคเค• เคฌเคพเคฐ) +export ANTHROPIC_API_KEY=sk-ant-... + +# เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ เค”เคฐ เคธเฅเคตเคšเคพเคฒเคฟเคค เค…เคชเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚ +skill-seekers package output/react/ --upload + +# เคฏเคพ เคฎเฅŒเคœเฅ‚เคฆเคพ .zip เค…เคชเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚ +skill-seekers upload output/react.zip +``` + +### เคตเคฟเค•เคฒเฅเคช 2: เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ เค…เคชเคฒเฅ‹เคก (API Key เค•เฅ‡ เคฌเคฟเคจเคพ) + +```bash +# เค•เฅŒเคถเคฒ เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ +skill-seekers package output/react/ +# โ†’ output/react.zip เคฌเคจเคพเคคเคพ เคนเฅˆ + +# เคซเคฟเคฐ เคฎเฅˆเคจเฅเคฏเฅเค…เคฒ เคฐเฅ‚เคช เคธเฅ‡ เค…เคชเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚: +# - https://claude.ai/skills เคชเคฐ เคœเคพเคเค +# - "Upload Skill" เคชเคฐ เค•เฅเคฒเคฟเค• เค•เคฐเฅ‡เค‚ +# - output/react.zip เคšเฅเคจเฅ‡เค‚ +``` + +### เคตเคฟเค•เคฒเฅเคช 3: MCP (Claude Code) + +``` +Claude Code เคฎเฅ‡เค‚, เคฌเคธ เคชเฅ‚เค›เฅ‡เค‚: +"React เค•เฅŒเคถเคฒ เคชเฅˆเค•เฅ‡เคœ เค”เคฐ เค…เคชเคฒเฅ‹เคก เค•เคฐเฅ‡เค‚" +``` + +--- + +## ๐Ÿค– AI เคเคœเฅ‡เค‚เคŸ เคฎเฅ‡เค‚ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเคจเคพ + +Skill Seekers เคธเฅเคตเคšเคพเคฒเคฟเคค เคฐเฅ‚เคช เคธเฅ‡ 19 AI เค•เฅ‹เคกเคฟเค‚เค— เคเคœเฅ‡เค‚เคŸ เคฎเฅ‡เค‚ เค•เฅŒเคถเคฒ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐ เคธเค•เคคเคพ เคนเฅˆเฅค + +```bash +# เคตเคฟเคถเคฟเคทเฅเคŸ เคเคœเฅ‡เค‚เคŸ เคฎเฅ‡เค‚ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +skill-seekers install-agent output/react/ --agent cursor + +# IBM Bob เคฎเฅ‡เค‚ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ (เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ-เคธเฅเคฅเคพเคจเฅ€เคฏ .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# เคธเคญเฅ€ เคเคœเฅ‡เค‚เคŸ เคฎเฅ‡เค‚ เคเค• เคธเคพเคฅ เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฐเฅ‡เค‚ +skill-seekers install-agent output/react/ --agent all + +# เค‡เค‚เคธเฅเคŸเฅ‰เคฒ เค•เคฟเค เคฌเคฟเคจเคพ เคชเฅ‚เคฐเฅเคตเคพเคตเคฒเฅ‹เค•เคจ เค•เคฐเฅ‡เค‚ +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### เคธเคฎเคฐเฅเคฅเคฟเคค เคเคœเฅ‡เค‚เคŸ + +| เคเคœเฅ‡เค‚เคŸ | เคชเคฅ | เคชเฅเคฐเค•เคพเคฐ | +|-------|-----|--------| +| **Claude Code** | `~/.claude/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Cursor** | `.cursor/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **VS Code / Copilot** | `.github/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **Amp** | `~/.amp/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Goose** | `~/.config/goose/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **OpenCode** | `~/.opencode/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Windsurf** | `~/.windsurf/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Roo Code** | `.roo/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **Cline** | `.cline/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **Aider** | `~/.aider/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Bolt** | `.bolt/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **Kilo Code** | `.kilo/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | +| **Continue** | `~/.continue/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **Kimi Code** | `~/.kimi/skills/` | เคตเฅˆเคถเฅเคตเคฟเค• | +| **IBM Bob** | `.bob/skills/` | เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ | + +--- + +## ๐Ÿ”Œ MCP เคเค•เฅ€เค•เคฐเคฃ (40 เคŸเฅ‚เคฒ) + +Skill Seekers Claude Code, Cursor, Windsurf, VS Code + Cline, เคฏเคพ IntelliJ IDEA เคธเฅ‡ เค‰เคชเคฏเฅ‹เค— เค•เฅ‡ เคฒเคฟเค MCP เคธเคฐเฅเคตเคฐ เคชเฅเคฐเคฆเคพเคจ เค•เคฐเคคเคพ เคนเฅˆเฅค + +```bash +# stdio เคฎเฅ‹เคก (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# HTTP เคฎเฅ‹เคก (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# เคธเคญเฅ€ เคเคœเฅ‡เค‚เคŸ เค•เฅ‹ เคเค• เคธเคพเคฅ เคธเฅเคตเคšเคพเคฒเคฟเคค เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเฅ‡เค‚ +./setup_mcp.sh +``` + +**เคธเคญเฅ€ 40 เคŸเฅ‚เคฒ เค‰เคชเคฒเคฌเฅเคง:** +- **เคฎเฅ‚เคฒ (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **เคตเคฟเคธเฅเคคเคพเคฐเคฟเคค (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **เคตเฅ‡เค•เฅเคŸเคฐ DB (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **เค•เฅเคฒเคพเค‰เคก (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**เคชเฅ‚เคฐเฅเคฃ เค—เคพเค‡เคก:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ + +### เค‰เคชเคฒเคฌเฅเคง เคชเฅเคฐเฅ€เคธเฅ‡เคŸ (24+) + +```bash +# เคธเคญเฅ€ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เคธเฅ‚เคšเฅ€เคฌเคฆเฅเคง เค•เคฐเฅ‡เค‚ +# skill-seekers list-configs # v3.7.0 เคฎเฅ‡เค‚ เค‰เคชเคฒเคฌเฅเคง เคจเคนเฅ€เค‚ +``` + +| เคถเฅเคฐเฅ‡เคฃเฅ€ | เคชเฅเคฐเฅ€เคธเฅ‡เคŸ | +|--------|---------| +| **เคตเฅ‡เคฌ เคซเคผเฅเคฐเฅ‡เคฎเคตเคฐเฅเค•** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **เค—เฅ‡เคฎ เคกเฅ‡เคตเคฒเคชเคฎเฅ‡เค‚เคŸ** | `godot`, `pygame`, `unity` | +| **เคŸเฅ‚เคฒ เค”เคฐ DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **เคเค•เฅ€เค•เฅƒเคค (เคกเฅ‰เค•เฅเคธ + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` เค”เคฐ เค…เคงเคฟเค• | + +### เค…เคชเคจเคพ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคฌเคจเคพเคเค + +```bash +# เคตเคฟเค•เคฒเฅเคช 1: เค‡เค‚เคŸเคฐเฅˆเค•เฅเคŸเคฟเคต +skill-seekers create --interactive + +# เคตเคฟเค•เคฒเฅเคช 2: เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เค•เฅ‰เคชเฅ€ เค•เคฐเฅ‡เค‚ เค”เคฐ เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฐเฅ‡เค‚ +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคซเคผเคพเค‡เคฒ เคธเค‚เคฐเคšเคจเคพ + +```json +{ + "name": "myframework", + "description": "เค‡เคธ เค•เฅŒเคถเคฒ เค•เคพ เค‰เคชเคฏเฅ‹เค— เค•เคฌ เค•เคฐเฅ‡เค‚", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### เค•เฅ‰เคจเฅเคซเคผเคฟเค— เค•เคนเคพเค เคธเค‚เค—เฅเคฐเคนเฅ€เคค เค•เคฐเฅ‡เค‚ + +เคŸเฅ‚เคฒ เค‡เคธ เค•เฅเคฐเคฎ เคฎเฅ‡เค‚ เค–เฅ‹เคœเคคเคพ เคนเฅˆ: +1. เคฆเคฟเค เค—เค เคธเคŸเฅ€เค• เคชเคฅ เคชเคฐ +2. `./configs/` (เคตเคฐเฅเคคเคฎเคพเคจ เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€) +3. `~/.config/skill-seekers/configs/` (เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพ เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคกเคพเคฏเคฐเฅ‡เค•เฅเคŸเคฐเฅ€) +4. SkillSeekersWeb.com API (เคชเฅเคฐเฅ€เคธเฅ‡เคŸ เค•เฅ‰เคจเฅเคซเคผเคฟเค—) + +--- + +## ๐Ÿ“Š เค•เฅเคฏเคพ เคฌเคจเคพเคฏเคพ เคœเคพเคคเคพ เคนเฅˆ + +``` +output/ +โ”œโ”€โ”€ godot_data/ # เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฟเคฏเคพ เค—เคฏเคพ เค•เคšเฅเคšเคพ เคกเฅ‡เคŸเคพ +โ”‚ โ”œโ”€โ”€ pages/ # JSON เคซเคผเคพเค‡เคฒเฅ‡เค‚ (เคชเฅเคฐเคคเคฟ เคชเฅ‡เคœ เคเค•) +โ”‚ โ””โ”€โ”€ summary.json # เค…เคตเคฒเฅ‹เค•เคจ +โ”‚ +โ””โ”€โ”€ godot/ # เค•เฅŒเคถเคฒ + โ”œโ”€โ”€ SKILL.md # เคตเคพเคธเฅเคคเคตเคฟเค• เค‰เคฆเคพเคนเคฐเคฃเฅ‹เค‚ เค•เฅ‡ เคธเคพเคฅ เคธเค‚เคตเคฐเฅเคงเคฟเคค + โ”œโ”€โ”€ references/ # เคตเคฐเฅเค—เฅ€เค•เฅƒเคค เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # เค–เคพเคฒเฅ€ (เค…เคชเคจเฅ€ เคธเฅเค•เฅเคฐเคฟเคชเฅเคŸ เคœเฅ‹เคกเคผเฅ‡เค‚) + โ””โ”€โ”€ assets/ # เค–เคพเคฒเฅ€ (เค…เคชเคจเฅ‡ เคธเค‚เคธเคพเคงเคจ เคœเฅ‹เคกเคผเฅ‡เค‚) +``` + +--- + +## ๐Ÿ› เคธเคฎเคธเฅเคฏเคพ เคจเคฟเคตเคพเคฐเคฃ + +### เค•เฅ‹เคˆ เคธเคพเคฎเค—เฅเคฐเฅ€ เคจเคนเฅ€เค‚ เคจเคฟเค•เคฒเฅ€? +- เค…เคชเคจเคพ `main_content` เคธเคฟเคฒเฅ‡เค•เฅเคŸเคฐ เคœเคพเคเคšเฅ‡เค‚ +- เค†เคœเคผเคฎเคพเคเค: `article`, `main`, `div[role="main"]` + +### เคกเฅ‡เคŸเคพ เคนเฅˆ เคฒเฅ‡เค•เคฟเคจ เค‰เคชเคฏเฅ‹เค— เคจเคนเฅ€เค‚ เคนเฅ‹ เคฐเคนเคพ? +```bash +# เคฌเคฒเคชเฅ‚เคฐเฅเคตเค• เคชเฅเคจเคƒ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚ +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### เคถเฅเคฐเฅ‡เคฃเคฟเคฏเคพเค เค…เคšเฅเค›เฅ€ เคจเคนเฅ€เค‚ เคนเฅˆเค‚? +เค•เฅ‰เคจเฅเคซเคผเคฟเค— เคฎเฅ‡เค‚ `categories` เค…เคจเฅเคญเคพเค— เค•เฅ‹ เคฌเฅ‡เคนเคคเคฐ เค•เฅ€เคตเคฐเฅเคก เค•เฅ‡ เคธเคพเคฅ เคธเค‚เคชเคพเคฆเคฟเคค เค•เคฐเฅ‡เค‚เฅค + +### เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เค…เคชเคกเฅ‡เคŸ เค•เคฐเคจเคพ เคšเคพเคนเคคเฅ‡ เคนเฅˆเค‚? +```bash +# เคชเฅเคฐเคพเคจเคพ เคกเฅ‡เคŸเคพ เคนเคŸเคพเคเค เค”เคฐ เคชเฅเคจเคƒ เคธเฅเค•เฅเคฐเฅˆเคช เค•เคฐเฅ‡เค‚ +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เค•เคพเคฎ เคจเคนเฅ€เค‚ เค•เคฐ เคฐเคนเคพ? +```bash +# เคœเคพเคเคšเฅ‡เค‚ เค•เคฟ API key เคธเฅ‡เคŸ เคนเฅˆ เคฏเคพ เคจเคนเฅ€เค‚ +echo $ANTHROPIC_API_KEY + +# เค‡เคธเค•เฅ‡ เคฌเคœเคพเคฏ LOCAL เคฎเฅ‹เคก เค†เคœเคผเคฎเคพเคเค (Claude Code Max เค‰เคชเคฏเฅ‹เค— เค•เคฐเคคเคพ เคนเฅˆ, API key เค•เฅ€ เค†เคตเคถเฅเคฏเค•เคคเคพ เคจเคนเฅ€เค‚) +skill-seekers enhance output/react/ --mode LOCAL + +# เคฌเฅˆเค•เค—เฅเคฐเคพเค‰เค‚เคก เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคธเฅเคฅเคฟเคคเคฟ เค•เฅ€ เคจเคฟเค—เคฐเคพเคจเฅ€ เค•เคฐเฅ‡เค‚ +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub เคฆเคฐ เคธเฅ€เคฎเคพ เคธเคฎเคธเฅเคฏเคพเคเค? +```bash +# GitHub token เคธเฅ‡เคŸ เค•เคฐเฅ‡เค‚ (5000 เค…เคจเฅเคฐเฅ‹เคง/เค˜เค‚เคŸเคพ เคฌเคจเคพเคฎ เค…เคจเคพเคฎ 60/เค˜เค‚เคŸเคพ) +export GITHUB_TOKEN=ghp_your_token_here + +# เคฏเคพ เคเค•เคพเคงเคฟเค• เคชเฅเคฐเฅ‹เคซเคผเคพเค‡เคฒ เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐ เค•เคฐเฅ‡เค‚ +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ เคชเฅเคฐเคฆเคฐเฅเคถเคจ + +| เค•เคพเคฐเฅเคฏ | เคธเคฎเคฏ | เคŸเคฟเคชเฅเคชเคฃเคฟเคฏเคพเค | +|-------|------|-----------| +| เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— (เคธเคฟเค‚เค•) | 15-45 เคฎเคฟเคจเคŸ | เค•เฅ‡เคตเคฒ เคชเคนเคฒเฅ€ เคฌเคพเคฐ, เคฅเฅเคฐเฅ‡เคก-เค†เคงเคพเคฐเคฟเคค | +| เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— (เคเคธเคฟเค‚เค•) | 5-15 เคฎเคฟเคจเคŸ | `--async` เคซเคผเฅเคฒเฅˆเค— เคธเฅ‡ 2-3 เค—เฅเคจเคพ เคคเฅ‡เคœเคผ | +| เคจเคฟเคฐเฅเคฎเคพเคฃ | 1-3 เคฎเคฟเคจเคŸ | เค•เฅˆเคถ เคธเฅ‡ เคคเฅ‡เคœเคผ เคชเฅเคจเคฐเฅเคจเคฟเคฐเฅเคฎเคพเคฃ | +| เคชเฅเคจเคฐเฅเคจเคฟเคฐเฅเคฎเคพเคฃ | <1 เคฎเคฟเคจเคŸ | `--skip-scrape` เค•เฅ‡ เคธเคพเคฅ | +| เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ (LOCAL) | 30-60 เคธเฅ‡เค•เค‚เคก | Claude Code Max เค‰เคชเคฏเฅ‹เค— เค•เคฐเคคเคพ เคนเฅˆ | +| เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ (API) | 20-40 เคธเฅ‡เค•เค‚เคก | API key เค†เคตเคถเฅเคฏเค• | +| เคตเฅ€เคกเคฟเคฏเฅ‹ (เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ) | 1-3 เคฎเคฟเคจเคŸ | YouTube/เคธเฅเคฅเคพเคจเฅ€เคฏ, เค•เฅ‡เคตเคฒ เคŸเฅเคฐเคพเค‚เคธเค•เฅเคฐเคฟเคชเฅเคŸ | +| เคตเฅ€เคกเคฟเคฏเฅ‹ (เคตเคฟเคœเคผเฅเค…เคฒ) | 5-15 เคฎเคฟเคจเคŸ | + OCR เคซเคผเฅเคฐเฅ‡เคฎ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ | +| เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค— | 5-10 เคธเฅ‡เค•เค‚เคก | เค…เค‚เคคเคฟเคฎ .zip เคจเคฟเคฐเฅเคฎเคพเคฃ | + +--- + +## ๐Ÿ†• v3.6.0 เคฎเฅ‡เค‚ เคจเคฏเคพ + +### เคตเคฐเฅเค•เคซเคผเฅเคฒเฅ‹ เคชเฅเคฐเฅ€เคธเฅ‡เคŸ +`--preset` เค•เฅ‡ เคธเคพเคฅ เคตเคฟเคถเฅเคฒเฅ‡เคทเคฃ เค•เฅ€ เค—เคนเคฐเคพเคˆ เคจเคฟเคฏเค‚เคคเฅเคฐเคฟเคค เค•เคฐเฅ‡เค‚: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # เคคเฅ‡เคœเคผ, เคธเคคเคนเฅ€ เคธเฅเคคเคฐ +skill-seekers create https://docs.react.dev/ --preset standard # เคธเค‚เคคเฅเคฒเคฟเคค (เคกเคฟเคซเคผเฅ‰เคฒเฅเคŸ) +skill-seekers create https://docs.react.dev/ --preset comprehensive # เค—เคนเคจ, เคตเคฟเคธเฅเคคเฅƒเคค +``` + +### เคฒเคพเค‡เคซเคผเคธเคพเค‡เค•เคฟเคฒ เคซเฅเคฒเฅˆเค—เฅเคธ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— เค•เฅ‡ เคฌเคฟเคจเคพ เคชเฅ‚เคฐเฅเคตเคพเคตเคฒเฅ‹เค•เคจ +skill-seekers create https://docs.react.dev/ --fresh # เค•เฅˆเคถ เค•เฅ‹ เค…เคจเคฆเฅ‡เค–เคพ เค•เคฐเฅ‡เค‚, เคชเฅ‚เคฐเฅเคฃ เคชเฅเคจเคƒ เคธเฅเค•เฅเคฐเฅˆเคช +skill-seekers create https://docs.react.dev/ --resume # เคฐเฅเค•เฅ‡ เคนเฅเค เค•เคพเคฐเฅเคฏ เค•เฅ‹ เคซเคฟเคฐ เคธเฅ‡ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚ +skill-seekers create https://docs.react.dev/ --skip-scrape # เคฎเฅŒเคœเฅ‚เคฆเคพ เค†เค‰เคŸเคชเฅเคŸ เค•เฅ‹ เคชเฅเคจเคƒ เคชเฅˆเค•เฅ‡เคœ เค•เคฐเฅ‡เค‚ +``` + +### เคธเฅเคตเคพเคธเฅเคฅเฅเคฏ เคœเคพเคเคš เค”เคฐ เค‰เคชเคฏเฅ‹เค—เคฟเคคเคพเคเค +```bash +skill-seekers doctor # เค‡เค‚เคธเฅเคŸเฅ‰เคฒเฅ‡เคถเคจ เค”เคฐ เคชเคฐเคฟเคตเฅ‡เคถ เค•เคพ เคจเคฟเคฆเคพเคจ เค•เคฐเฅ‡เค‚ +skill-seekers sync-config # เค•เฅ‰เคจเฅเคซเคผเคฟเค—เคฐเฅ‡เคถเคจ เคกเฅเคฐเคฟเคซเฅเคŸ เค•เคพ เคชเคคเคพ เคฒเค—เคพเคเค +skill-seekers stream # เคฌเคกเคผเฅ‡ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค เคธเฅเคŸเฅเคฐเฅ€เคฎเคฟเค‚เค— เค‡เคจเคœเฅ‡เคธเฅเคŸเคจ +skill-seekers update output/react/ # เคตเฅƒเคฆเฅเคงเคฟเคถเฅ€เคฒ เค…เคชเคกเฅ‡เคŸ +skill-seekers multilang # เคฌเคนเฅเคญเคพเคทเฅ€ เค•เฅŒเคถเคฒ เคœเคจเคฐเฅ‡เคถเคจ +skill-seekers quality output/react/ # เค—เฅเคฃเคตเคคเฅเคคเคพ เคฐเคฟเคชเฅ‹เคฐเฅเคŸ (เค—เฅ‡เคŸ เค•เฅ‡ เคฒเคฟเค --threshold 7 เคœเฅ‹เคกเคผเฅ‡เค‚: 7/10 เคธเฅ‡ เคจเฅ€เคšเฅ‡ เค—เฅˆเคฐ-เคถเฅ‚เคจเฅเคฏ เคจเคฟเค•เคพเคธ เค•เฅ‹เคก) +``` + +### RAG เคšเค‚เค•เคฟเค‚เค— เคตเคฟเค•เคฒเฅเคช (เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค—) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### เคฎเคพเคฐเฅเค•เฅ‡เคŸเคชเฅเคฒเฅ‡เคธ เคชเฅเคฐเค•เคพเคถเคจ +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### เค…เคคเคฟเคฐเคฟเค•เฅเคค เคตเฅˆเค•เคฒเฅเคชเคฟเค• เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ +| เคเค•เฅเคธเฅเคŸเฅเคฐเคพ | เค‡เค‚เคธเฅเคŸเฅ‰เคฒ | เค‰เคฆเฅเคฆเฅ‡เคถเฅเคฏ | +|----------|---------|---------| +| `browser` | `pip install "skill-seekers[browser]"` | SPA เคธเคพเค‡เคŸเฅ‹เค‚ เค•เฅ‡ เคฒเคฟเค เคนเฅ‡เคกเคฒเฅ‡เคธ Playwright | +| `embedding` | `pip install "skill-seekers[embedding]"` | เคเคฎเฅเคฌเฅ‡เคกเคฟเค‚เค— เคธเคฐเฅเคตเคฐ เคธเคฎเคฐเฅเคฅเคจ | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` เค†เคฆเคฟ | เค•เฅเคฒเคพเค‰เคก เคธเฅเคŸเฅ‹เคฐเฅ‡เคœ เค…เคชเคฒเฅ‹เคก | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | เคธเค‚เคฏเฅเค•เฅเคค เคตเฅ‡เค•เฅเคŸเคฐ DB เค…เคชเคฒเฅ‹เคก เคกเคฟเคชเฅ‡เค‚เคกเฅ‡เค‚เคธเฅ€ | + +--- + +## ๐Ÿ“š เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผเฅ€เค•เคฐเคฃ + +### เคถเฅเคฐเฅเค†เคค เค•เคฐเคจเคพ +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **เคจเค เคนเฅˆเค‚? เคฏเคนเคพเค เคธเฅ‡ เคถเฅเคฐเฅ‚ เค•เคฐเฅ‡เค‚!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - เค…เคจเฅเคญเคตเฅ€ เค‰เคชเคฏเฅ‹เค—เค•เคฐเฅเคคเคพเค“เค‚ เค•เฅ‡ เคฒเคฟเค เคคเฅเคตเคฐเคฟเคค เคถเฅเคฐเฅเค†เคค +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - เคธเคพเคฎเคพเคจเฅเคฏ เคธเคฎเคธเฅเคฏเคพเคเค เค”เคฐ เคธเคฎเคพเคงเคพเคจ +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - เคเค•-เคชเฅ‡เคœ เคšเฅ€เคŸ เคถเฅ€เคŸ + +### เคตเคพเคธเฅเคคเฅเค•เคฒเคพ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - 14 เค†เคฐเฅ‡เค–เฅ‹เค‚ เค•เฅ‡ เคธเคพเคฅ UML เคตเคพเคธเฅเคคเฅเค•เคฒเคพ เค…เคตเคฒเฅ‹เค•เคจ +- **[docs/UML/exports/](docs/UML/exports/)** - PNG เค†เคฐเฅ‡เค– เคจเคฟเคฐเฅเคฏเคพเคค (เคชเฅˆเค•เฅ‡เคœ เค…เคตเคฒเฅ‹เค•เคจ + 13 เค•เฅเคฒเคพเคธ เค†เคฐเฅ‡เค–) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - เคชเฅ‚เคฐเฅเคฃ HTML API เคธเค‚เคฆเคฐเฅเคญ (เคธเคญเฅ€ เค•เฅเคฒเคพเคธเฅ‡เคธ, เค‘เคชเคฐเฅ‡เคถเคจ, เคเคŸเฅเคฐเคฟเคฌเฅเคฏเฅ‚เคŸ) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML เคชเฅเคฐเฅ‹เคœเฅ‡เค•เฅเคŸ เคซเคผเคพเค‡เคฒ ([StarUML](https://staruml.io/) เคธเฅ‡ เค–เฅ‹เคฒเฅ‡เค‚) + +### เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - 10K-40K+ เคชเฅ‡เคœ เคฆเคธเฅเคคเคพเคตเฅ‡เคœเคผ เคธเค‚เคญเคพเคฒเฅ‡เค‚ +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคฎเฅ‹เคก เค—เคพเค‡เคก +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP เคเค•เฅ€เค•เคฐเคฃ เคธเฅ‡เคŸเค…เคช +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - เคฌเคนเฅ-เคธเฅเคฐเฅ‹เคค เคธเฅเค•เฅเคฐเฅˆเคชเคฟเค‚เค— +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - เคตเฅ€เคกเคฟเคฏเฅ‹ เคจเคฟเคทเฅเค•เคฐเฅเคทเคฃ เค—เคพเค‡เคก + +### เคเค•เฅ€เค•เคฐเคฃ เคฎเคพเคฐเฅเค—เคฆเคฐเฅเคถเคฟเค•เคพเคเค +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - เคธเคญเฅ€ RAG เคชเคพเค‡เคชเคฒเคพเค‡เคจ + +--- + +## ๐Ÿ“ เคฒเคพเค‡เคธเฅ‡เค‚เคธ + +MIT เคฒเคพเค‡เคธเฅ‡เค‚เคธ - เคตเคฟเคตเคฐเคฃ เค•เฅ‡ เคฒเคฟเค [LICENSE](LICENSE) เคซเคผเคพเค‡เคฒ เคฆเฅ‡เค–เฅ‡เค‚ + +--- + +เค•เฅŒเคถเคฒ เคจเคฟเคฐเฅเคฎเคพเคฃ เค•เคพ เค†เคจเค‚เคฆ เคฒเฅ‡เค‚! ๐Ÿš€ + +--- + +## ๐Ÿ”’ เคธเฅเคฐเค•เฅเคทเคพ + +[![MseeP.ai เคธเฅเคฐเค•เฅเคทเคพ เคฎเฅ‚เคฒเฅเคฏเคพเค‚เค•เคจ เคฌเฅˆเคœ](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› เคชเฅเคฐเคพเคฏเฅ‹เคœเค• + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” เคเค• เคซเฅเคฒ-เคฎเฅ‹เคกเคฒ, OpenAI-เคธเค‚เค—เคค AI เค‡เคจเฅเคซเคผเคฐเฅ‡เค‚เคธ เคชเฅเคฒเฅ‡เคŸเคซเคผเฅ‰เคฐเฅเคฎเฅค Skill Seekers เค‡เคธเฅ‡ `ATLAS_API_KEY` เค•เฅ‡ เคธเคพเคฅ `--target atlas` เค•เฅ‡ เคฎเคพเคงเฅเคฏเคฎ เคธเฅ‡ เคชเฅˆเค•เฅ‡เคœเคฟเค‚เค—/เคเคจเฅเคนเคพเค‚เคธเคฎเฅ‡เค‚เคŸ เคฒเค•เฅเคทเฅเคฏ เค•เฅ‡ เคฐเฅ‚เคช เคฎเฅ‡เค‚ เคธเคฎเคฐเฅเคฅเคจ เค•เคฐเคคเคพ เคนเฅˆเฅค diff --git a/README.ja.md b/README.ja.md new file mode 100644 index 0000000..0e1c345 --- /dev/null +++ b/README.ja.md @@ -0,0 +1,1376 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | ๆ—ฅๆœฌ่ชž | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **ๆฉŸๆขฐ็ฟป่จณใซ้–ขใ™ใ‚‹ๆณจๆ„** +> +> ใ“ใฎๆ–‡ๆ›ธใฏAIใซใ‚ˆใฃใฆ่‡ชๅ‹•็ฟป่จณใ•ใ‚ŒใŸใ‚‚ใฎใงใ™ใ€‚็ฟป่จณใฎๅ“่ณชๅ‘ไธŠใซๅŠชใ‚ใฆใ„ใพใ™ใŒใ€ไธๆญฃ็ขบใช่กจ็พใŒๅซใพใ‚Œใ‚‹ๅ ดๅˆใŒใ‚ใ‚Šใพใ™ใ€‚ +> +> ็ฟป่จณใฎๆ”นๅ–„ใซใ”ๅ”ๅŠ›ใ„ใŸใ ใ‘ใ‚‹ๆ–นใฏใ€[GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) ใ‹ใ‚‰ใƒ•ใ‚ฃใƒผใƒ‰ใƒใƒƒใ‚ฏใ‚’ใŠๅฏ„ใ›ใใ ใ•ใ„ใ€‚ + +[![ใƒใƒผใ‚ธใƒงใƒณ](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![ใƒฉใ‚คใ‚ปใƒณใ‚น: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP ็ตฑๅˆ](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![ใƒ†ใ‚นใƒˆ้€š้Ž](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒœใƒผใƒ‰](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI ใƒใƒผใ‚ธใƒงใƒณ](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ๆ•ฐ](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python ใƒใƒผใ‚ธใƒงใƒณ](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![ๅ…ฌๅผใ‚ตใ‚คใƒˆ](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter ใƒ•ใ‚ฉใƒญใƒผ](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  AI ใ‚ทใ‚นใƒ†ใƒ ใฎใƒ‡ใƒผใ‚ฟใƒฌใ‚คใƒคใƒผใ€‚** Skill Seekers ใฏใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆใ€GitHub ใƒชใƒใ‚ธใƒˆใƒชใ€PDFใ€ๅ‹•็”ปใ€ใƒŽใƒผใƒˆใƒ–ใƒƒใ‚ฏใ€Wiki ใชใฉ 18 ็จฎ้กžใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—ใ‚’ๆง‹้€ ๅŒ–ใ•ใ‚ŒใŸใƒŠใƒฌใƒƒใ‚ธใ‚ขใ‚ปใƒƒใƒˆใซๅค‰ๆ›ใ—ใพใ™ใ€‚AI ใ‚นใ‚ญใƒซ๏ผˆClaudeใ€Geminiใ€OpenAI๏ผ‰ใ€RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ๏ผˆLangChainใ€LlamaIndexใ€Pinecone๏ผ‰ใ€AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆ๏ผˆCursorใ€Windsurfใ€Cline๏ผ‰ใ‚’ใ€ๆ•ฐๆ™‚้–“ใงใฏใชใๆ•ฐๅˆ†ใงๆง‹็ฏ‰ใงใใพใ™ใ€‚ + +> ๐ŸŒ **[SkillSeekersWeb.com ใซใ‚ขใ‚ฏใ‚ปใ‚น](https://skillseekersweb.com/)** - 24 ไปฅไธŠใฎใƒ—ใƒชใ‚ปใƒƒใƒˆ่จญๅฎšใ‚’้–ฒ่ฆงใ€่จญๅฎšใฎๅ…ฑๆœ‰ใ€ๅฎŒๅ…จใชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใธใฎใ‚ขใ‚ฏใ‚ปใ‚น๏ผ + +> ๐Ÿ“‹ **[้–‹็™บใƒญใƒผใƒ‰ใƒžใƒƒใƒ—ใจใ‚ฟใ‚นใ‚ฏใ‚’็ขบ่ช](https://github.com/users/yusufkaraaslan/projects/2)** - 10 ใ‚ซใƒ†ใ‚ดใƒชใง 134 ใ‚ฟใ‚นใ‚ฏใ€ๅฅฝใใชใ‚‚ใฎใ‚’้ธใ‚“ใง่ฒข็Œฎใงใใพใ™๏ผ + +## ๐ŸŒ ใ‚จใ‚ณใ‚ทใ‚นใƒ†ใƒ  + +Skill Seekers ใฏใƒžใƒซใƒใƒชใƒใ‚ธใƒˆใƒชใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใ™ใ€‚ๅ„ใƒชใƒใ‚ธใƒˆใƒชใฎๅฝนๅ‰ฒ๏ผš + +| ใƒชใƒใ‚ธใƒˆใƒช | ่ชฌๆ˜Ž | ใƒชใƒณใ‚ฏ | +|-----------|------|-------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | ใ‚ณใ‚ข CLI & MCP ใ‚ตใƒผใƒใƒผ๏ผˆใ“ใฎใƒชใƒใ‚ธใƒˆใƒช๏ผ‰ | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | ใ‚ฆใ‚งใƒ–ใ‚ตใ‚คใƒˆ๏ผ†ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ | [ใ‚ตใ‚คใƒˆ](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃ่จญๅฎšใƒชใƒใ‚ธใƒˆใƒช | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code ใƒ—ใƒฉใ‚ฐใ‚คใƒณ | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | macOS Homebrew tap | | + +> **่ฒข็Œฎใ—ใŸใ„ใงใ™ใ‹๏ผŸ** ใ‚ฆใ‚งใƒ–ใ‚ตใ‚คใƒˆใจ่จญๅฎšใƒชใƒใ‚ธใƒˆใƒชใฏๆ–ฐใ—ใ„่ฒข็Œฎ่€…ใซๆœ€้ฉใงใ™๏ผ + +## ๐Ÿง  AI ใ‚ทใ‚นใƒ†ใƒ ใฎใƒ‡ใƒผใ‚ฟใƒฌใ‚คใƒคใƒผ + +**Skill Seekers ใฏๆฑŽ็”จ็š„ใชๅ‰ๅ‡ฆ็†ใƒฌใ‚คใƒคใƒผ**ใงใ‚ใ‚Šใ€็”Ÿใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใจใใ‚Œใ‚’ๅˆฉ็”จใ™ใ‚‹ใ™ในใฆใฎ AI ใ‚ทใ‚นใƒ†ใƒ ใฎ้–“ใซไฝ็ฝฎใ—ใพใ™ใ€‚Claude ใ‚นใ‚ญใƒซใ€LangChain RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใ€Cursor ใฎ `.cursorrules` ใƒ•ใ‚กใ‚คใƒซใฎใ„ใšใ‚Œใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ๅ ดๅˆใงใ‚‚ใ€ใƒ‡ใƒผใ‚ฟใฎๆบ–ๅ‚™ไฝœๆฅญใฏๅŒใ˜ใงใ™ใ€‚ไธ€ๅบฆๅฎŸ่กŒใ™ใ‚Œใฐใ€ใ™ในใฆใฎใ‚ฟใƒผใ‚ฒใƒƒใƒˆใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆใงใใพใ™ใ€‚ + +```bash +# 1ใ‚ณใƒžใƒณใƒ‰ โ†’ ๆง‹้€ ๅŒ–ใƒŠใƒฌใƒƒใ‚ธใ‚ขใ‚ปใƒƒใƒˆ +skill-seekers create https://docs.react.dev/ +# ใพใŸใฏ: skill-seekers create facebook/react +# ใพใŸใฏ: skill-seekers create ./my-project + +# ไปปๆ„ใฎ AI ใ‚ทใ‚นใƒ†ใƒ ใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ +skill-seekers package output/react --target claude # โ†’ Claude AI ใ‚นใ‚ญใƒซ (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob ใ‚นใ‚ญใƒซใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช +``` + +### ็”Ÿๆˆใ•ใ‚Œใ‚‹ๅ‡บๅŠ› + +| ๅ‡บๅŠ› | ใ‚ฟใƒผใ‚ฒใƒƒใƒˆ | ็”จ้€” | +|------|-----------|------| +| **Claude ใ‚นใ‚ญใƒซ** (ZIP + YAML) | `--target claude` | Claude Codeใ€Claude API | +| **Gemini ใ‚นใ‚ญใƒซ** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4oใ€ใ‚ซใ‚นใ‚ฟใƒ ใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆ | +| **LangChain Documents** | `--target langchain` | QA ใƒใ‚งใƒผใƒณใ€ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ€ใƒชใƒˆใƒชใƒผใƒใƒผ | +| **LlamaIndex TextNodes** | `--target llama-index` | ใ‚ฏใ‚จใƒชใ‚จใƒณใ‚ธใƒณใ€ใƒใƒฃใƒƒใƒˆใ‚จใƒณใ‚ธใƒณ | +| **Haystack Documents** | `--target haystack` | ใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บ RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ | +| **Pinecone ๅฏพๅฟœ** (Markdown) | `--target markdown` | ใƒ™ใ‚ฏใƒˆใƒซใ‚ขใƒƒใƒ—ใ‚ตใƒผใƒˆ | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | ใƒญใƒผใ‚ซใƒซใƒ™ใ‚ฏใƒˆใƒซ DB | +| **IBM Bob ใ‚นใ‚ญใƒซ**๏ผˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช๏ผ‰ | `--target ibm-bob` | IBM Bob ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ/ใ‚ฐใƒญใƒผใƒใƒซใ‚นใ‚ญใƒซ | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ SKILL.md ใ‚’ใ‚ณใƒ”ใƒผ | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ ใ‚ณใƒ”ใƒผ | VS Codeใ€IntelliJใ€Vim | + +### ้ธใฐใ‚Œใ‚‹็†็”ฑ + +- โšก **99% ้ซ˜้€ŸๅŒ–** โ€” ๆ•ฐๆ—ฅใฎๆ‰‹ไฝœๆฅญใƒ‡ใƒผใ‚ฟๆบ–ๅ‚™ โ†’ 15ใ€œ45 ๅˆ† +- ๐ŸŽฏ **AI ใ‚นใ‚ญใƒซๅ“่ณช** โ€” ใ‚ตใƒณใƒ—ใƒซใ€ใƒ‘ใ‚ฟใƒผใƒณใ€ใ‚ฌใ‚คใƒ‰ใ‚’ๅซใ‚€ 500 ่กŒไปฅไธŠใฎ SKILL.md ใƒ•ใ‚กใ‚คใƒซ +- ๐Ÿ“Š **RAG ๅฏพๅฟœใƒใƒฃใƒณใ‚ฏ** โ€” ใ‚ณใƒผใƒ‰ใƒ–ใƒญใƒƒใ‚ฏใ‚’ไฟๆŒใ—ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚’็ถญๆŒใ™ใ‚‹ใ‚นใƒžใƒผใƒˆใƒใƒฃใƒณใ‚ญใƒณใ‚ฐ +- ๐ŸŽฌ **ๅ‹•็”ป** โ€” YouTube ใ‚„ใƒญใƒผใ‚ซใƒซๅ‹•็”ปใ‹ใ‚‰ใ‚ณใƒผใƒ‰ใ€ๅญ—ๅน•ใ€ๆง‹้€ ๅŒ–็Ÿฅ่ญ˜ใ‚’ๆŠฝๅ‡บ +- ๐Ÿ”„ **ใƒžใƒซใƒใ‚ฝใƒผใ‚น** โ€” 18 ็จฎ้กžใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—๏ผˆใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ€GitHubใ€PDFใ€ๅ‹•็”ปใ€ใƒŽใƒผใƒˆใƒ–ใƒƒใ‚ฏใ€Wiki ใชใฉ๏ผ‰ใ‚’ 1 ใคใฎใƒŠใƒฌใƒƒใ‚ธใ‚ขใ‚ปใƒƒใƒˆใซ็ตฑๅˆ +- ๐ŸŒ **ไธ€ๅบฆใฎๆบ–ๅ‚™ใงๅ…จใ‚ฟใƒผใ‚ฒใƒƒใƒˆ** โ€” ๅ†ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใชใ—ใงๅŒใ˜ใ‚ขใ‚ปใƒƒใƒˆใ‚’ 21 ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ +- โœ… **ๅฎŸๆˆฆใƒ†ใ‚นใƒˆๆธˆใฟ** โ€” 3,700 ไปฅไธŠใฎใƒ†ใ‚นใƒˆใ€24 ไปฅไธŠใฎใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใƒ—ใƒชใ‚ปใƒƒใƒˆใ€ๆœฌ็•ช้‹็”จๅฏ่ƒฝ + +## ๐Ÿš€ ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ๏ผˆ3 ใ‚ณใƒžใƒณใƒ‰๏ผ‰ + +```bash +# 1. ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers + +# 2. ไปปๆ„ใฎใ‚ฝใƒผใ‚นใ‹ใ‚‰ใ‚นใ‚ญใƒซใ‚’ไฝœๆˆ +skill-seekers create https://docs.django.com/ + +# 3. AI ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ‘ใ‘ใซใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ +skill-seekers package output/django --target claude +``` + +**ใ“ใ‚Œใ ใ‘ใงใ™๏ผ** `output/django-claude.zip` ใŒใ™ใใซไฝฟใˆใ‚‹็Šถๆ…‹ใง็”Ÿๆˆใ•ใ‚Œใพใ™ใ€‚ + +```bash +# ๅผทๅŒ–ใซๅˆฅใฎ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚’ไฝฟ็”จ๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผšclaude๏ผ‰ +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI ้ง†ๅ‹•ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚นใ‚ญใƒฃใƒณ๏ผˆๆ–ฐๆฉŸ่ƒฝ๏ผ‰ + +ไปปๆ„ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซ `scan` ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใจใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใŒใƒžใƒ‹ใƒ•ใ‚งใ‚นใƒˆใ€READMEใ€Dockerfile/CIใ€ใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใ•ใ‚ŒใŸใ‚ฝใƒผใ‚นใฎใ‚คใƒณใƒใƒผใƒˆใ‚’่ชญใฟๅ–ใ‚Šใ€ๆคœๅ‡บใ•ใ‚ŒใŸใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใ”ใจใซ 1 ใคใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใจใ€่‡ชๅˆ†ใฎใ‚ณใƒผใƒ‰็”จใฎ `-codebase.json` ใ‚’ๅ‡บๅŠ›ใ—ใพใ™ใ€‚ๆคœๅ‡บใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณใ‚’่จ˜้Œฒใ™ใ‚‹ใŸใ‚ใ€ๅ†ๅฎŸ่กŒๆ™‚ใซใฏใƒใƒผใ‚ธใƒงใƒณใ‚ขใƒƒใƒ—ใŒๅ ฑๅ‘Šใ•ใ‚Œใพใ™๏ผš + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# ใใฎๅพŒใ€ไปปๆ„ใฎใ‚‚ใฎใ‚’ใƒ“ใƒซใƒ‰ +skill-seekers create ./configs/scanned/react.json +``` + +ๆคœๅ‡บ็ตๆžœใซๆ—ขๅญ˜ใฎใƒ—ใƒชใ‚ปใƒƒใƒˆใŒใชใ„ๅ ดๅˆใฏ AI ใŒๆ–ฐใ—ใ„่จญๅฎšใ‚’็”Ÿๆˆใ—ใพใ™ใ€‚็ต‚ไบ†ๆ™‚ใซ [ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใƒฌใ‚ธใ‚นใƒˆใƒช](https://github.com/yusufkaraaslan/skill-seekers-configs) ใธใฎๅ…ฌ้–‹ใ‚’ไปปๆ„ใง้ธๆŠžใงใใพใ™ใ€‚ + +### ใใฎไป–ใฎใ‚ฝใƒผใ‚น๏ผˆ18 ็จฎ้กžๅฏพๅฟœ๏ผ‰ + +```bash +# GitHub ใƒชใƒใ‚ธใƒˆใƒช +skill-seekers create facebook/react + +# ใƒญใƒผใ‚ซใƒซใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ +skill-seekers create ./my-project + +# PDF ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ +skill-seekers create manual.pdf + +# Word ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ +skill-seekers create report.docx + +# EPUB ้›ปๅญๆ›ธ็ฑ +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# OpenAPI ไป•ๆง˜ +skill-seekers create openapi.yaml + +# PowerPoint ใƒ—ใƒฌใ‚ผใƒณใƒ†ใƒผใ‚ทใƒงใƒณ +skill-seekers create presentation.pptx + +# AsciiDoc ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ +skill-seekers create guide.adoc + +# ใƒญใƒผใ‚ซใƒซ HTML ใƒ•ใ‚กใ‚คใƒซ๏ผˆๆ‹กๅผตๅญใง่‡ชๅ‹•ๆคœๅ‡บ๏ผ‰ +skill-seekers create page.html + +# HTML ใƒ•ใ‚กใ‚คใƒซใฎใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชๅ…จไฝ“๏ผˆHTML ไธปไฝ“ใฎใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ‚’่‡ชๅ‹•ๆคœๅ‡บ๏ผ‰ +skill-seekers create ./mirror_output/site/ + +# ใ‚ณใƒผใƒ‰ใŒๆททๅœจใ™ใ‚‹ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใง HTML ใƒขใƒผใƒ‰ใ‚’ๅผทๅˆถ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom ใƒ•ใ‚ฃใƒผใƒ‰ +skill-seekers create feed.rss + +# Man ใƒšใƒผใ‚ธ +skill-seekers create curl.1 + +# ๅ‹•็”ป๏ผˆYouTubeใ€Vimeoใ€ใพใŸใฏใƒญใƒผใ‚ซใƒซใƒ•ใ‚กใ‚คใƒซ โ€” skill-seekers[video] ใŒๅฟ…่ฆ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ๅˆๅ›žไฝฟ็”จๆ™‚ใฏ GPU ๅฏพๅฟœใฎใƒ“ใ‚ธใƒฅใ‚ขใƒซไพๅญ˜้–ขไฟ‚ใ‚’่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผš +skill-seekers create --setup + +# Confluence Wiki +skill-seekers create --space-key TEAM --name wiki + +# Notion ใƒšใƒผใ‚ธ +skill-seekers create --database-id ... --name docs + +# Slack/Discord ใƒใƒฃใƒƒใƒˆใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### ใ‚ใ‚‰ใ‚†ใ‚‹ๅ ดๆ‰€ใธใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + +```bash +# ่ค‡ๆ•ฐใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ‘ใ‘ใซใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Skill Seekers ใจใฏ๏ผŸ + +Skill Seekers ใฏ **AI ใ‚ทใ‚นใƒ†ใƒ ใฎใƒ‡ใƒผใ‚ฟใƒฌใ‚คใƒคใƒผ**ใงใ‚ใ‚Šใ€18 ็จฎ้กžใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—โ€”โ€”ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆใ€GitHub ใƒชใƒใ‚ธใƒˆใƒชใ€PDFใ€ๅ‹•็”ปใ€Jupyter Notebookใ€Word/EPUB/AsciiDoc ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ€OpenAPI ไป•ๆง˜ใ€PowerPoint ใƒ—ใƒฌใ‚ผใƒณใƒ†ใƒผใ‚ทใƒงใƒณใ€RSS ใƒ•ใ‚ฃใƒผใƒ‰ใ€Man ใƒšใƒผใ‚ธใ€Confluence Wikiใ€Notion ใƒšใƒผใ‚ธใ€Slack/Discord ใƒใƒฃใƒƒใƒˆใ‚จใ‚ฏใ‚นใƒใƒผใƒˆใชใฉโ€”โ€”ใ‚’ใ™ในใฆใฎ AI ใ‚ฟใƒผใ‚ฒใƒƒใƒˆใซ้ฉใ—ใŸๆง‹้€ ๅŒ–ใƒŠใƒฌใƒƒใ‚ธใ‚ขใ‚ปใƒƒใƒˆใซๅค‰ๆ›ใ—ใพใ™๏ผš + +| ใƒฆใƒผใ‚นใ‚ฑใƒผใ‚น | ๅพ—ใ‚‰ใ‚Œใ‚‹ใ‚‚ใฎ | ไพ‹ | +|-------------|-------------|-----| +| **AI ใ‚นใ‚ญใƒซ** | ๅŒ…ๆ‹ฌ็š„ใช SKILL.md + ๅ‚็…งใƒ•ใ‚กใ‚คใƒซ | Claude Codeใ€Geminiใ€GPT | +| **RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ** | ใƒชใƒƒใƒใชใƒกใ‚ฟใƒ‡ใƒผใ‚ฟไป˜ใใƒใƒฃใƒณใ‚ฏใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ | LangChainใ€LlamaIndexใ€Haystack | +| **ใƒ™ใ‚ฏใƒˆใƒซใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚น** | ใ‚ขใƒƒใƒ—ใ‚ตใƒผใƒˆ็”จใซใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆๆธˆใฟใƒ‡ใƒผใ‚ฟ | Pineconeใ€Chromaใ€Weaviateใ€FAISS | +| **AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆ** | IDE ใฎ AI ใŒ่‡ชๅ‹•็š„ใซ่ชญใฟๅ–ใ‚‹ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใƒ•ใ‚กใ‚คใƒซ | Cursorใ€Windsurfใ€Clineใ€Continue.dev | + +## ๐Ÿ“š ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + +| ใ‚„ใ‚ŠใŸใ„ใ“ใจ | ่ชญใ‚€ในใใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ | +|--------------|-----------| +| **ใ™ใใซๅง‹ใ‚ใ‚‹** | [ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ](docs/getting-started/02-quick-start.md) - 3 ใ‚ณใƒžใƒณใƒ‰ใงๆœ€ๅˆใฎใ‚นใ‚ญใƒซใ‚’ไฝœๆˆ | +| **ใ‚ณใƒณใ‚ปใƒ—ใƒˆใ‚’็†่งฃใ™ใ‚‹** | [ใ‚ณใ‚ขใ‚ณใƒณใ‚ปใƒ—ใƒˆ](docs/user-guide/01-core-concepts.md) - ไป•็ต„ใฟใฎ่งฃ่ชฌ | +| **ใ‚ฝใƒผใ‚นใ‚’ใ‚นใ‚ฏใƒฌใ‚คใƒ—ใ™ใ‚‹** | [ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใ‚ฌใ‚คใƒ‰](docs/user-guide/02-scraping.md) - ใ™ในใฆใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ— | +| **ใ‚นใ‚ญใƒซใ‚’ๅผทๅŒ–ใ™ใ‚‹** | [ๅผทๅŒ–ใ‚ฌใ‚คใƒ‰](docs/user-guide/03-enhancement.md) - AI ๅผทๅŒ– | +| **ใ‚นใ‚ญใƒซใ‚’ใ‚จใ‚ฏใ‚นใƒใƒผใƒˆใ™ใ‚‹** | [ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐใ‚ฌใ‚คใƒ‰](docs/user-guide/04-packaging.md) - ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ | +| **ใ‚ณใƒžใƒณใƒ‰ใ‚’่ชฟในใ‚‹** | [CLI ใƒชใƒ•ใ‚กใƒฌใƒณใ‚น](docs/reference/CLI_REFERENCE.md) - ๅ…จ 20 ใ‚ณใƒžใƒณใƒ‰ | +| **่จญๅฎšใ™ใ‚‹** | [่จญๅฎšใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ](docs/reference/CONFIG_FORMAT.md) - JSON ไป•ๆง˜ | +| **ๅ•้กŒใ‚’่งฃๆฑบใ™ใ‚‹** | [ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐ](docs/user-guide/06-troubleshooting.md) - ใ‚ˆใใ‚ใ‚‹ๅ•้กŒ | + +**ๅฎŒๅ…จใชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผš** [docs/README.md](docs/README.md) + +Skill Seekers ใฏๆ•ฐๆ—ฅใ‹ใ‹ใ‚‹ๆ‰‹ๅ‹•ๅ‰ๅ‡ฆ็†ใฎไปฃใ‚ใ‚Šใซไปฅไธ‹ใ‚’่กŒใ„ใพใ™๏ผš + +1. **ๅ–ใ‚Š่พผใฟ** โ€” ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ€GitHub ใƒชใƒใ‚ธใƒˆใƒชใ€ใƒญใƒผใ‚ซใƒซใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นใ€PDFใ€ๅ‹•็”ปใ€Jupyter Notebookใ€Wiki ใชใฉ 10 ็จฎ้กžไปฅไธŠใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ— +2. **ๅˆ†ๆž** โ€” ้ซ˜ๅบฆใช AST ่งฃๆžใ€ใƒ‘ใ‚ฟใƒผใƒณๆคœๅ‡บใ€API ๆŠฝๅ‡บ +3. **ๆง‹้€ ๅŒ–** โ€” ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟไป˜ใใฎใ‚ซใƒ†ใ‚ดใƒชๅˆ†้กžใ•ใ‚ŒใŸๅ‚็…งใƒ•ใ‚กใ‚คใƒซ +4. **ๅผทๅŒ–** โ€” AI ้ง†ๅ‹•ใฎ SKILL.md ็”Ÿๆˆ๏ผˆClaudeใ€Geminiใ€ใพใŸใฏใƒญใƒผใ‚ซใƒซ๏ผ‰ +5. **ใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ** โ€” 1 ใคใฎใ‚ขใ‚ปใƒƒใƒˆใ‹ใ‚‰ 16 ็จฎ้กžใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅฐ‚็”จใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + +## ใชใœ Skill Seekers ใ‚’ไฝฟใ†ใฎใ‹๏ผŸ + +### AI ใ‚นใ‚ญใƒซใƒ“ใƒซใƒ€ใƒผๅ‘ใ‘๏ผˆClaudeใ€Geminiใ€OpenAI๏ผ‰ + +- ๐ŸŽฏ **ๆœฌ็•ชใ‚ฐใƒฌใƒผใƒ‰ใฎใ‚นใ‚ญใƒซ** โ€” ใ‚ณใƒผใƒ‰ไพ‹ใ€ใƒ‘ใ‚ฟใƒผใƒณใ€ใ‚ฌใ‚คใƒ‰ใ‚’ๅซใ‚€ 500 ่กŒไปฅไธŠใฎ SKILL.md ใƒ•ใ‚กใ‚คใƒซ +- ๐Ÿ”„ **ๅผทๅŒ–ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผ** โ€” `security-focus`ใ€`architecture-comprehensive` ใพใŸใฏใ‚ซใ‚นใ‚ฟใƒ  YAML ใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’้ฉ็”จ +- ๐ŸŽฎ **ใ‚ใ‚‰ใ‚†ใ‚‹ใƒ‰ใƒกใ‚คใƒณ** โ€” ใ‚ฒใƒผใƒ ใ‚จใƒณใ‚ธใƒณ๏ผˆGodotใ€Unity๏ผ‰ใ€ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏ๏ผˆReactใ€Django๏ผ‰ใ€็คพๅ†…ใƒ„ใƒผใƒซ +- ๐Ÿ”ง **ใƒใƒผใƒ ๅ‘ใ‘** โ€” ็คพๅ†…ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + ใ‚ณใƒผใƒ‰ใ‚’ๅ˜ไธ€ใฎไฟก้ ผใงใใ‚‹ใ‚ฝใƒผใ‚นใซ็ตฑๅˆ +- ๐Ÿ“š **้ซ˜ๅ“่ณช** โ€” ใ‚ตใƒณใƒ—ใƒซใ€ใ‚ฏใ‚คใƒƒใ‚ฏใƒชใƒ•ใ‚กใƒฌใƒณใ‚นใ€ใƒŠใƒ“ใ‚ฒใƒผใ‚ทใƒงใƒณใ‚ฌใ‚คใƒ‰ไป˜ใใฎ AI ๅผทๅŒ– + +### RAG ใƒ“ใƒซใƒ€ใƒผ & AI ใ‚จใƒณใ‚ธใƒ‹ใ‚ขๅ‘ใ‘ + +- ๐Ÿค– **RAG ๅฏพๅฟœใƒ‡ใƒผใ‚ฟ** โ€” ไบ‹ๅ‰ใƒใƒฃใƒณใ‚ฏๆธˆใฟใฎ LangChain `Documents`ใ€LlamaIndex `TextNodes`ใ€Haystack `Documents` +- ๐Ÿš€ **99% ้ซ˜้€ŸๅŒ–** โ€” ๆ•ฐๆ—ฅใฎๅ‰ๅ‡ฆ็† โ†’ 15ใ€œ45 ๅˆ† +- ๐Ÿ“Š **ใ‚นใƒžใƒผใƒˆใƒกใ‚ฟใƒ‡ใƒผใ‚ฟ** โ€” ใ‚ซใƒ†ใ‚ดใƒชใ€ใ‚ฝใƒผใ‚นใ€ใ‚ฟใ‚คใƒ— โ†’ ใ‚ˆใ‚Š้ซ˜ใ„ๆคœ็ดข็ฒพๅบฆ +- ๐Ÿ”„ **ใƒžใƒซใƒใ‚ฝใƒผใ‚น** โ€” 1 ใคใฎใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใงใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + GitHub + PDF + ๅ‹•็”ปใ‚’็ตฑๅˆ +- ๐ŸŒ **ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ้žไพๅญ˜** โ€” ๅ†ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใชใ—ใงไปปๆ„ใฎใƒ™ใ‚ฏใƒˆใƒซ DB ใ‚„ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + +### AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆใƒฆใƒผใ‚ถใƒผๅ‘ใ‘ + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” `.cursorrules` / `.windsurfrules` / `.clinerules` ใ‚’่‡ชๅ‹•็”Ÿๆˆ +- ๐ŸŽฏ **ๆฐธ็ถš็š„ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ** โ€” AI ใŒใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใ‚’ใ€Œ็†่งฃใ€ใ—ใ€็นฐใ‚Š่ฟ”ใ—ใฎใƒ—ใƒญใƒณใƒ—ใƒˆใŒไธ่ฆใซ +- ๐Ÿ“š **ๅธธใซๆœ€ๆ–ฐ** โ€” ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆๆ›ดๆ–ฐๆ™‚ใซๆ•ฐๅˆ†ใงใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚’ๆ›ดๆ–ฐ + +## ไธป่ฆๆฉŸ่ƒฝ + +### ๐ŸŒ ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +- โœ… **ใ‚นใƒžใƒผใƒˆ SPA ใƒ‡ใ‚ฃใ‚นใ‚ซใƒใƒชใƒผ** - JavaScript SPA ใ‚ตใ‚คใƒˆๅ‘ใ‘ใฎ 3 ๅฑคใƒ‡ใ‚ฃใ‚นใ‚ซใƒใƒชใƒผ๏ผˆsitemap.xml โ†’ llms.txt โ†’ ใƒ˜ใƒƒใƒ‰ใƒฌใ‚นใƒ–ใƒฉใ‚ฆใ‚ถใƒฌใƒณใƒ€ใƒชใƒณใ‚ฐ๏ผ‰ +- โœ… **llms.txt ใ‚ตใƒใƒผใƒˆ** - LLM ๅฏพๅฟœใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใƒ•ใ‚กใ‚คใƒซใ‚’่‡ชๅ‹•ๆคœๅ‡บใ—ไฝฟ็”จ๏ผˆ10 ๅ€้ซ˜้€Ÿ๏ผ‰ +- โœ… **ๆฑŽ็”จใ‚นใ‚ฏใƒฌใ‚คใƒ‘ใƒผ** - ใ‚ใ‚‰ใ‚†ใ‚‹ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆใซๅฏพๅฟœ +- โœ… **ใ‚นใƒžใƒผใƒˆๅˆ†้กž** - ใƒˆใƒ”ใƒƒใ‚ฏๅˆฅใซใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’่‡ชๅ‹•ๆ•ด็† +- โœ… **ใ‚ณใƒผใƒ‰่จ€่ชžๆคœๅ‡บ** - Pythonใ€JavaScriptใ€C++ใ€GDScript ใชใฉใ‚’่ช่ญ˜ +- โœ… **24 ไปฅไธŠใฎใƒ—ใƒชใ‚ปใƒƒใƒˆ** - Godotใ€Reactใ€Vueใ€Djangoใ€FastAPI ใชใฉ + +### ๐Ÿ“„ PDF ใ‚ตใƒใƒผใƒˆ +- โœ… **ๅŸบๆœฌ PDF ๆŠฝๅ‡บ** - PDF ใ‹ใ‚‰ใƒ†ใ‚ญใ‚นใƒˆใ€ใ‚ณใƒผใƒ‰ใ€็”ปๅƒใ‚’ๆŠฝๅ‡บ +- โœ… **ใ‚นใ‚ญใƒฃใƒณ PDF ใฎ OCR** - ใ‚นใ‚ญใƒฃใƒณใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‹ใ‚‰ใƒ†ใ‚ญใ‚นใƒˆใ‚’ๆŠฝๅ‡บ +- โœ… **ใƒ‘ใ‚นใƒฏใƒผใƒ‰ไฟ่ญท PDF** - ๆš—ๅทๅŒ– PDF ใฎๅ‡ฆ็† +- โœ… **ใƒ†ใƒผใƒ–ใƒซๆŠฝๅ‡บ** - ่ค‡้›‘ใชใƒ†ใƒผใƒ–ใƒซใฎๆŠฝๅ‡บ +- โœ… **ไธฆๅˆ—ๅ‡ฆ็†** - ๅคง่ฆๆจก PDF ใง 3 ๅ€้ซ˜้€Ÿ +- โœ… **ใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใ‚ญใƒฃใƒƒใ‚ทใƒฅ** - ๅ†ๅฎŸ่กŒๆ™‚ใซ 50% ้ซ˜้€Ÿ + +### ๐ŸŽฌ ๅ‹•็”ปๆŠฝๅ‡บ +- โœ… **YouTube & ใƒญใƒผใ‚ซใƒซๅ‹•็”ป** - ๅ‹•็”ปใ‹ใ‚‰ๅญ—ๅน•ใ€ใ‚ณใƒผใƒ‰ใ€ๆง‹้€ ๅŒ–็Ÿฅ่ญ˜ใ‚’ๆŠฝๅ‡บ +- โœ… **ใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ•ใƒฌใƒผใƒ ๅˆ†ๆž** - ใ‚ณใƒผใƒ‰ใ‚จใƒ‡ใ‚ฃใ‚ฟใ€ใ‚ฟใƒผใƒŸใƒŠใƒซใ€ใ‚นใƒฉใ‚คใƒ‰ใ€ๅ›ณใฎ OCR ๆŠฝๅ‡บ +- โœ… **GPU ่‡ชๅ‹•ๆคœๅ‡บ** - ๆญฃใ—ใ„ PyTorch ใƒ“ใƒซใƒ‰๏ผˆCUDA/ROCm/MPS/CPU๏ผ‰ใ‚’่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +- โœ… **AI ๅผทๅŒ–** - 2 ใƒ‘ใ‚นๅ‡ฆ็†๏ผšOCR ใ‚ขใƒผใƒ†ใ‚ฃใƒ•ใ‚กใ‚ฏใƒˆใฎใ‚ฏใƒชใƒผใƒณใ‚ขใƒƒใƒ— + ๆด—็ทดใ•ใ‚ŒใŸ SKILL.md ใฎ็”Ÿๆˆ +- โœ… **ๆ™‚้–“ใƒˆใƒชใƒŸใƒณใ‚ฐ** - `--start-time` ใจ `--end-time` ใง็‰นๅฎšใฎใ‚ปใ‚ฏใ‚ทใƒงใƒณใ‚’ๆŠฝๅ‡บ +- โœ… **ใƒ—ใƒฌใ‚คใƒชใ‚นใƒˆใ‚ตใƒใƒผใƒˆ** - YouTube ใƒ—ใƒฌใ‚คใƒชใ‚นใƒˆๅ†…ใฎใ™ในใฆใฎๅ‹•็”ปใ‚’ไธ€ๆ‹ฌๅ‡ฆ็† +- โœ… **Vision API ใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏ** - ไฝŽไฟก้ ผๅบฆใฎ OCR ใƒ•ใƒฌใƒผใƒ ใซ Claude Vision ใ‚’ไฝฟ็”จ + +### ๐Ÿ™ GitHub ใƒชใƒใ‚ธใƒˆใƒชๅˆ†ๆž +- โœ… **้ซ˜ๅบฆใชใ‚ณใƒผใƒ‰ๅˆ†ๆž** - Pythonใ€JavaScriptใ€TypeScriptใ€Javaใ€C++ใ€Go ใฎ AST ่งฃๆž +- โœ… **API ๆŠฝๅ‡บ** - ้–ขๆ•ฐใ€ใ‚ฏใƒฉใ‚นใ€ใƒกใ‚ฝใƒƒใƒ‰ใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใจๅž‹ๆƒ…ๅ ฑ +- โœ… **ใƒชใƒใ‚ธใƒˆใƒชใƒกใ‚ฟใƒ‡ใƒผใ‚ฟ** - READMEใ€ใƒ•ใ‚กใ‚คใƒซใƒ„ใƒชใƒผใ€่จ€่ชžๆง‹ๆˆใ€ใ‚นใ‚ฟใƒผ/ใƒ•ใ‚ฉใƒผใ‚ฏๆ•ฐ +- โœ… **GitHub Issues & PR** - ใƒฉใƒ™ใƒซใจใƒžใ‚คใƒซใ‚นใƒˆใƒผใƒณไป˜ใใฎ Issue ใ‚’ๅ–ๅพ— +- โœ… **CHANGELOG & ใƒชใƒชใƒผใ‚น** - ใƒใƒผใ‚ธใƒงใƒณๅฑฅๆญดใ‚’่‡ชๅ‹•ๆŠฝๅ‡บ +- โœ… **ใ‚ณใƒณใƒ•ใƒชใ‚ฏใƒˆๆคœๅ‡บ** - ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆๅŒ–ใ•ใ‚ŒใŸ API ใจๅฎŸ้š›ใฎใ‚ณใƒผใƒ‰ๅฎŸ่ฃ…ใ‚’ๆฏ”่ผƒ +- โœ… **MCP ็ตฑๅˆ** - ่‡ช็„ถ่จ€่ชžใงๆ“ไฝœ๏ผšใ€ŒGitHub ใƒชใƒใ‚ธใƒˆใƒช facebook/react ใ‚’ใ‚นใ‚ฏใƒฌใ‚คใƒ—ใ€ + +### ๐Ÿ”„ ็ตฑๅˆใƒžใƒซใƒใ‚ฝใƒผใ‚นใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +- โœ… **่ค‡ๆ•ฐใ‚ฝใƒผใ‚นใฎ็ตฑๅˆ** - 1 ใคใฎใ‚นใ‚ญใƒซใงใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + GitHub + PDF ใ‚’ๆททๅˆ +- โœ… **ใ‚ณใƒณใƒ•ใƒชใ‚ฏใƒˆๆคœๅ‡บ** - ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใจใ‚ณใƒผใƒ‰้–“ใฎไธไธ€่‡ดใ‚’่‡ชๅ‹•ๆคœๅ‡บ +- โœ… **ใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใƒžใƒผใ‚ธ** - ใƒซใƒผใƒซใƒ™ใƒผใ‚นใพใŸใฏ AI ้ง†ๅ‹•ใฎใ‚ณใƒณใƒ•ใƒชใ‚ฏใƒˆ่งฃๆฑบ +- โœ… **้€ๆ˜Žใชใƒฌใƒใƒผใƒˆ** - โš ๏ธ ่ญฆๅ‘Šไป˜ใใฎไธฆๅˆ—ๆฏ”่ผƒ +- โœ… **ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ฎใƒฃใƒƒใƒ—ๅˆ†ๆž** - ๅคใ„ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚„ๆœชๆ–‡ๆ›ธๅŒ–ๆฉŸ่ƒฝใ‚’็‰นๅฎš +- โœ… **ๅ”ฏไธ€ใฎไฟก้ ผใงใใ‚‹ใ‚ฝใƒผใ‚น** - ๆ„ๅ›ณ๏ผˆใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผ‰ใจ็พๅฎŸ๏ผˆใ‚ณใƒผใƒ‰๏ผ‰ใฎไธกๆ–นใ‚’็คบใ™ 1 ใคใฎใ‚นใ‚ญใƒซ +- โœ… **ๅพŒๆ–นไบ’ๆ›ๆ€ง** - ใƒฌใ‚ฌใ‚ทใƒผใฎๅ˜ไธ€ใ‚ฝใƒผใ‚น่จญๅฎšใฏๅผ•ใ็ถšใๅ‹•ไฝœ + +### ๐Ÿค– ใƒžใƒซใƒ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚ตใƒใƒผใƒˆ +- โœ… **12 ใฎ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ** - Claude AIใ€Google Geminiใ€OpenAI ChatGPTใ€MiniMax AIใ€ๆฑŽ็”จ Markdownใ€OpenCodeใ€Kimi๏ผˆMoonshot AI๏ผ‰ใ€DeepSeek AIใ€Qwen๏ผˆAlibaba๏ผ‰ใ€OpenRouterใ€Together AIใ€Fireworks AI +- โœ… **ๆฑŽ็”จใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ** - ๅŒใ˜ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใŒใ™ในใฆใฎใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใงไฝฟ็”จๅฏ่ƒฝ +- โœ… **ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅ›บๆœ‰ใฎใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ** - ๅ„ LLM ใซๆœ€้ฉๅŒ–ใ•ใ‚ŒใŸใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ +- โœ… **ใƒฏใƒณใ‚ณใƒžใƒณใƒ‰ใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ** - `--target` ใƒ•ใƒฉใ‚ฐใงใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚’้ธๆŠž +- โœ… **ใ‚ชใƒ—ใ‚ทใƒงใƒณไพๅญ˜้–ขไฟ‚** - ๅฟ…่ฆใชใ‚‚ใฎใ ใ‘ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +- โœ… **100% ๅพŒๆ–นไบ’ๆ›** - ๆ—ขๅญ˜ใฎ Claude ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใฏๅค‰ๆ›ดไธ่ฆ + +| ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  | ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ | ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ | ๅผทๅŒ– | API ใ‚ญใƒผ | ใ‚ซใ‚นใ‚ฟใƒ ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ | +|----------------|------------|------------|------|---------|-------------------| +| **Claude AI** | ZIP + YAML | โœ… ่‡ชๅ‹• | โœ… ใ‚ใ‚Š | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… ่‡ชๅ‹• | โœ… ใ‚ใ‚Š | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… ่‡ชๅ‹• | โœ… ใ‚ใ‚Š | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… ่‡ชๅ‹• | โœ… ใ‚ใ‚Š | MINIMAX_API_KEY | - | +| **ๆฑŽ็”จ Markdown** | ZIP | โŒ ๆ‰‹ๅ‹• | โŒ ใชใ— | - | - | + +```bash +# Claude๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ โ€” ๅค‰ๆ›ดไธ่ฆ๏ผ๏ผ‰ +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# ๆฑŽ็”จ Markdown๏ผˆใƒฆใƒ‹ใƒใƒผใ‚ตใƒซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ๏ผ‰ +skill-seekers package output/react/ --target markdown +# Markdown ใƒ•ใ‚กใ‚คใƒซใฏไปปๆ„ใฎ LLM ใง็›ดๆŽฅไฝฟ็”จๅฏ่ƒฝ +``` + +
+๐Ÿ”ง ็‹ฌ่‡ชใฎ AI ใƒ—ใƒญใƒใ‚คใƒ€ใƒผใ‚’ไฝฟ็”จ๏ผˆOpenAI ไบ’ๆ›ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ + ใ‚ตใƒ–ใ‚นใ‚ฏใƒชใƒ—ใ‚ทใƒงใƒณใ€Anthropic ใ‚ฏใƒฌใ‚ธใƒƒใƒˆไธ่ฆ๏ผ‰ + +ใ‚ชใƒ—ใ‚ทใƒงใƒณใฎ AI **ๅผทๅŒ–**ใ‚นใƒ†ใƒƒใƒ—๏ผˆ`create`ใ€`scan`ใ€`enhance` ใงไฝฟ็”จ๏ผ‰ใซใฏ Anthropic ใ‚ญใƒผใฏ**ไธ่ฆ**ใงใ™ใ€‚ไปฅไธ‹ใฎ 3 ใคใฎๆ–นๆณ•ใงๅฎŸ่กŒใงใใพใ™๏ผš + +**1. ใ™ใงใซๅฅ‘็ด„ใ—ใฆใ„ใ‚‹ใ‚ตใƒ–ใ‚นใ‚ฏใƒชใƒ—ใ‚ทใƒงใƒณใ‚’ไฝฟ็”จ โ€” API ใ‚ฏใƒฌใ‚ธใƒƒใƒˆๅฎŒๅ…จไธ่ฆ๏ผˆLOCAL ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใƒขใƒผใƒ‰๏ผ‰** + +Skill Seekers ใฏใƒญใ‚ฐใ‚คใƒณๆธˆใฟใฎใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ CLI ใ‚’ๅ‘ผใณๅ‡บใ›ใ‚‹ใŸใ‚ใ€ๅพ“้‡่ชฒ้‡‘ใฎ API ใƒˆใƒผใ‚ฏใƒณใงใฏใชใๆ—ขๅญ˜ใฎใƒ—ใƒฉใƒณใงๅผทๅŒ–ใ‚’ๅฎŸ่กŒใงใใพใ™๏ผš + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ChatGPT Plus ใƒ—ใƒฉใƒณ +skill-seekers create --agent claude # Claude Code โ†’ Claude Pro/Max ใƒ—ใƒฉใƒณ +``` + +ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใ‚‹ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ๏ผš`claude`ใ€`codex`ใ€`copilot`ใ€`opencode`ใ€`kimi`ใ€`custom` +๏ผˆ`--agent custom` ใจ `--agent-cmd " ..."` ใ‚’็ต„ใฟๅˆใ‚ใ›ใ‚Œใฐไปปๆ„ใฎใƒ„ใƒผใƒซใ‚’ๅˆฉ็”จๅฏ่ƒฝ๏ผ‰ใ€‚ + +**2. ไปปๆ„ใฎ OpenAI ไบ’ๆ›ใƒ—ใƒญใƒใ‚คใƒ€ใƒผ๏ผˆOpenRouterใ€Groqใ€Cerebrasใ€Mistralใ€NVIDIA NIM ใชใฉ๏ผ‰** + +ใ“ใ‚Œใ‚‰ใฏใ™ในใฆ OpenAI ไบ’ๆ›ใฎ `/v1` ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ‚’ๅ…ฌ้–‹ใ—ใฆใ„ใพใ™ใ€‚3 ใคใฎ็’ฐๅขƒๅค‰ๆ•ฐใ‚’่จญๅฎšใ™ใ‚‹ใ ใ‘ใงๅˆฉ็”จใงใใพใ™ โ€” Skill Seekers ใฏ `OPENAI_API_KEY` ใ‚’ๆคœๅ‡บใ—ใ€OpenAI SDK ใŒ `OPENAI_BASE_URL` ใ‚’่‡ชๅ‹•็š„ใซๅฐŠ้‡ใ—ใพใ™๏ผš + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # ใƒ—ใƒญใƒใ‚คใƒ€ใƒผใฎใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ๏ผˆไธ‹่กจๅ‚็…ง๏ผ‰ +export OPENAI_MODEL="" # ๅฟ…้ ˆ โ€” ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎ gpt-4o ใฏไป–ใฎใƒ—ใƒญใƒใ‚คใƒ€ใƒผใซใฏๅญ˜ๅœจใ—ใพใ›ใ‚“ +skill-seekers create +``` + +| ใƒ—ใƒญใƒใ‚คใƒ€ใƒผ | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> ใƒ—ใƒญใƒใ‚คใƒ€ใƒผๆคœๅ‡บใฏใ€**ๆœ€ๅˆใซ**่ฆ‹ใคใ‹ใฃใŸ API ใ‚ญใƒผ็’ฐๅขƒๅค‰ๆ•ฐใ‚’ๆŽก็”จใ—ใพใ™๏ผˆ`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`๏ผ‰ใ€‚็‰นๅฎšใฎใƒ—ใƒญใƒใ‚คใƒ€ใƒผใ‚’ๅผทๅˆถใ™ใ‚‹ใซใฏ `SKILL_SEEKER_PROVIDER` ใ‚’่จญๅฎšใ™ใ‚‹ใ‹ใ€ๅ„ชๅ…ˆๅบฆใฎ้ซ˜ใ„ใ‚ญใƒผใŒๆœช่จญๅฎšใงใ‚ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚ + +**3. Claude ไบ’ๆ›ใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆ๏ผˆGLMใ€ใƒ—ใƒญใ‚ญใ‚ทใชใฉ๏ผ‰** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini๏ผˆ`GOOGLE_API_KEY`๏ผ‰ใจ Kimi/Moonshot๏ผˆ`MOONSHOT_API_KEY`๏ผ‰ใ‚‚ใƒใ‚คใƒ†ใ‚ฃใƒ–ใซใ‚ตใƒใƒผใƒˆใ•ใ‚Œใฆใ„ใพใ™ใ€‚ใƒ—ใƒญใƒใ‚คใƒ€ใƒผใ”ใจใฎใƒขใƒ‡ใƒซไธŠๆ›ธใใ‚’ๅซใ‚€ๅฎŒๅ…จใชใƒชใ‚นใƒˆใฏ **[็’ฐๅขƒๅค‰ๆ•ฐใƒชใƒ•ใ‚กใƒฌใƒณใ‚น](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ + +
+ +**ใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผš** +```bash +# Gemini ใ‚ตใƒใƒผใƒˆใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers[gemini] + +# OpenAI ใ‚ตใƒใƒผใƒˆใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers[openai] + +# MiniMax ใ‚ตใƒใƒผใƒˆใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers[minimax] + +# ใ™ในใฆใฎ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏ็ตฑๅˆ + +- โœ… **LangChain Documents** - `page_content` + ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟไป˜ใใฎ `Document` ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใซ็›ดๆŽฅใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + - ๆœ€้ฉใช็”จ้€”๏ผšQA ใƒใ‚งใƒผใƒณใ€ใƒชใƒˆใƒชใƒผใƒใƒผใ€ใƒ™ใ‚ฏใƒˆใƒซใ‚นใƒˆใ‚ขใ€ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[LangChain RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ](examples/langchain-rag-pipeline/) + - ใ‚ฌใ‚คใƒ‰๏ผš[LangChain ็ตฑๅˆ](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - ใƒฆใƒ‹ใƒผใ‚ฏ ID + ใ‚จใƒณใƒ™ใƒ‡ใ‚ฃใƒณใ‚ฐไป˜ใใฎ `TextNode` ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆใซใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + - ๆœ€้ฉใช็”จ้€”๏ผšใ‚ฏใ‚จใƒชใ‚จใƒณใ‚ธใƒณใ€ใƒใƒฃใƒƒใƒˆใ‚จใƒณใ‚ธใƒณใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[LlamaIndex ใ‚ฏใ‚จใƒชใ‚จใƒณใ‚ธใƒณ](examples/llama-index-query-engine/) + - ใ‚ฌใ‚คใƒ‰๏ผš[LlamaIndex ็ตฑๅˆ](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone ๅฏพๅฟœใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ** - ใƒ™ใ‚ฏใƒˆใƒซใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ‚ขใƒƒใƒ—ใ‚ตใƒผใƒˆใซๆœ€้ฉๅŒ– + - ๆœ€้ฉใช็”จ้€”๏ผšใƒ—ใƒญใƒ€ใ‚ฏใ‚ทใƒงใƒณใƒ™ใ‚ฏใƒˆใƒซๆคœ็ดขใ€ใ‚ปใƒžใƒณใƒ†ใ‚ฃใƒƒใ‚ฏๆคœ็ดขใ€ใƒใ‚คใƒ–ใƒชใƒƒใƒ‰ๆคœ็ดข + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[Pinecone ใ‚ขใƒƒใƒ—ใ‚ตใƒผใƒˆ](examples/pinecone-upsert/) + - ใ‚ฌใ‚คใƒ‰๏ผš[Pinecone ็ตฑๅˆ](docs/integrations/PINECONE.md) + +**ใ‚ฏใ‚คใƒƒใ‚ฏใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ๏ผš** +```bash +# LangChain Documents๏ผˆJSON๏ผ‰ +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes๏ผˆJSON๏ผ‰ +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown๏ผˆๆฑŽ็”จ๏ผ‰ +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**ๅฎŒๅ…จใช RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใ‚ฌใ‚คใƒ‰๏ผš** [RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆ็ตฑๅˆ + +ไปปๆ„ใฎใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ 4 ใคไปฅไธŠใฎ AI ใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆๅ‘ใ‘ใฎใ‚จใ‚ญใ‚นใƒ‘ใƒผใƒˆใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใซๅค‰ๆ›๏ผš + +- โœ… **Cursor IDE** - AI ้ง†ๅ‹•ใฎใ‚ณใƒผใƒ‰ๆๆกˆ็”จใซ `.cursorrules` ใ‚’็”Ÿๆˆ + - ๆœ€้ฉใช็”จ้€”๏ผšใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏๅ›บๆœ‰ใฎใ‚ณใƒผใƒ‰็”Ÿๆˆใ€ไธ€่ฒซใ—ใŸใƒ‘ใ‚ฟใƒผใƒณ + - ๅฏพๅฟœ๏ผšCursor IDE๏ผˆVS Code ใƒ•ใ‚ฉใƒผใ‚ฏ๏ผ‰ + - ใ‚ฌใ‚คใƒ‰๏ผš[Cursor ็ตฑๅˆ](docs/integrations/CURSOR.md) + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[Cursor React ใ‚นใ‚ญใƒซ](examples/cursor-react-skill/) + +- โœ… **Windsurf** - `.windsurfrules` ใง Windsurf AI ใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆใฎใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚’ใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บ + - ๆœ€้ฉใช็”จ้€”๏ผšIDE ใƒใ‚คใƒ†ใ‚ฃใƒ–ใฎ AI ๆ”ฏๆดใ€ใƒ•ใƒญใƒผใƒ™ใƒผใ‚นใฎใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐ + - ๅฏพๅฟœ๏ผšCodeium ่ฃฝ Windsurf IDE + - ใ‚ฌใ‚คใƒ‰๏ผš[Windsurf ็ตฑๅˆ](docs/integrations/WINDSURF.md) + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[Windsurf FastAPI ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ](examples/windsurf-fastapi-context/) + +- โœ… **Cline๏ผˆVS Code๏ผ‰** - VS Code ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ็”จใฎใ‚ทใ‚นใƒ†ใƒ ใƒ—ใƒญใƒณใƒ—ใƒˆ + MCP + - ๆœ€้ฉใช็”จ้€”๏ผšVS Code ใงใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆๅž‹ใ‚ณใƒผใƒ‰็”Ÿๆˆ + - ๅฏพๅฟœ๏ผšVS Code ็”จ Cline ๆ‹กๅผตๆฉŸ่ƒฝ + - ใ‚ฌใ‚คใƒ‰๏ผš[Cline ็ตฑๅˆ](docs/integrations/CLINE.md) + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[Cline Django ใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆ](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - IDE ้žไพๅญ˜ใฎ AI ใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆใ‚ตใƒผใƒใƒผ + - ๆœ€้ฉใช็”จ้€”๏ผšใƒžใƒซใƒ IDE ็’ฐๅขƒ๏ผˆVS Codeใ€JetBrainsใ€Vim๏ผ‰ใ€ใ‚ซใ‚นใ‚ฟใƒ  LLM ใƒ—ใƒญใƒใ‚คใƒ€ใƒผ + - ๅฏพๅฟœ๏ผšContinue.dev ใƒ—ใƒฉใ‚ฐใ‚คใƒณใ‚’ๅ‚™ใˆใŸไปปๆ„ใฎ IDE + - ใ‚ฌใ‚คใƒ‰๏ผš[Continue ็ตฑๅˆ](docs/integrations/CONTINUE_DEV.md) + - ใ‚ตใƒณใƒ—ใƒซ๏ผš[Continue ใƒฆใƒ‹ใƒใƒผใ‚ตใƒซใ‚ณใƒณใƒ†ใ‚ญใ‚นใƒˆ](examples/continue-dev-universal/) + +**AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใƒ„ใƒผใƒซๅ‘ใ‘ใ‚ฏใ‚คใƒƒใ‚ฏใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ๏ผš** +```bash +# ไปปๆ„ใฎ AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆๅ‘ใ‘๏ผˆCursorใ€Windsurfใ€Clineใ€Continue.dev๏ผ‰ +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ใพใŸใฏ --target markdown + +# ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซใ‚ณใƒ”ใƒผ๏ผˆCursor ใฎๅ ดๅˆ๏ผ‰ +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Windsurf ใฎๅ ดๅˆ +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Cline ใฎๅ ดๅˆ +cp output/django-claude/SKILL.md my-project/.clinerules + +# Continue.dev ใฎๅ ดๅˆ๏ผˆHTTP ใ‚ตใƒผใƒใƒผ๏ผ‰ +python examples/continue-dev-universal/context_server.py +# ~/.continue/config.json ใง่จญๅฎš +``` + +**็ตฑๅˆใƒใƒ–๏ผš** [ใ™ในใฆใฎ AI ใ‚ทใ‚นใƒ†ใƒ ็ตฑๅˆ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ 3 ใ‚นใƒˆใƒชใƒผใƒ  GitHub ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ +- โœ… **3 ใ‚นใƒˆใƒชใƒผใƒ ๅˆ†ๆž** - GitHub ใƒชใƒใ‚ธใƒˆใƒชใ‚’ใ‚ณใƒผใƒ‰ใ€ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ€ใ‚คใƒณใ‚ตใ‚คใƒˆใฎ 3 ใ‚นใƒˆใƒชใƒผใƒ ใซๅˆ†ๅ‰ฒ +- โœ… **็ตฑๅˆใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นใ‚ขใƒŠใƒฉใ‚คใ‚ถใƒผ** - GitHub URL ใจใƒญใƒผใ‚ซใƒซใƒ‘ใ‚นใฎไธกๆ–นใซๅฏพๅฟœ +- โœ… **C3.x ๅˆ†ๆžๆทฑๅบฆ** - ใ€Œbasicใ€๏ผˆ1ใ€œ2 ๅˆ†๏ผ‰ใพใŸใฏใ€Œc3xใ€๏ผˆ20ใ€œ60 ๅˆ†๏ผ‰ๅˆ†ๆžใ‚’้ธๆŠž +- โœ… **ๅผทๅŒ–ใƒซใƒผใ‚ฟใƒผ็”Ÿๆˆ** - GitHub ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟใ€README ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ€ใ‚ˆใใ‚ใ‚‹ๅ•้กŒ +- โœ… **Issue ็ตฑๅˆ** - GitHub Issues ใ‹ใ‚‰ใฎใ‚ˆใใ‚ใ‚‹ๅ•้กŒใจ่งฃๆฑบ็ญ– +- โœ… **ใ‚นใƒžใƒผใƒˆใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚ญใƒผใƒฏใƒผใƒ‰** - GitHub ใƒฉใƒ™ใƒซใฎ้‡ใฟไป˜ใ‘ใŒ 2 ๅ€ใงใƒˆใƒ”ใƒƒใ‚ฏๆคœๅ‡บ็ฒพๅบฆใ‚’ๅ‘ไธŠ + +**3 ใ‚นใƒˆใƒชใƒผใƒ ใฎ่ชฌๆ˜Ž๏ผš** +- **ใ‚นใƒˆใƒชใƒผใƒ  1๏ผšใ‚ณใƒผใƒ‰** - ้ซ˜ๅบฆใช C3.x ๅˆ†ๆž๏ผˆใƒ‘ใ‚ฟใƒผใƒณใ€ใ‚ตใƒณใƒ—ใƒซใ€ใ‚ฌใ‚คใƒ‰ใ€่จญๅฎšใ€ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ๏ผ‰ +- **ใ‚นใƒˆใƒชใƒผใƒ  2๏ผšใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ** - ใƒชใƒใ‚ธใƒˆใƒชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผˆREADMEใ€CONTRIBUTINGใ€docs/*.md๏ผ‰ +- **ใ‚นใƒˆใƒชใƒผใƒ  3๏ผšใ‚คใƒณใ‚ตใ‚คใƒˆ** - ใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃ็Ÿฅ่ญ˜๏ผˆIssuesใ€ใƒฉใƒ™ใƒซใ€Starsใ€Forks๏ผ‰ + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# 3 ใ‚นใƒˆใƒชใƒผใƒ ใง GitHub ใƒชใƒใ‚ธใƒˆใƒชใ‚’ๅˆ†ๆž +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ใพใŸใฏ "basic" ใงใ‚ฏใ‚คใƒƒใ‚ฏๅˆ†ๆž + fetch_github_metadata=True +) + +# ใ‚ณใƒผใƒ‰ใ‚นใƒˆใƒชใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚น๏ผˆC3.x ๅˆ†ๆž๏ผ‰ +print(f"ใƒ‡ใ‚ถใ‚คใƒณใƒ‘ใ‚ฟใƒผใƒณ: {len(result.code_analysis['c3_1_patterns'])}") +print(f"ใƒ†ใ‚นใƒˆใ‚ตใƒณใƒ—ใƒซ: {result.code_analysis['c3_2_examples_count']}") + +# ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚นใƒˆใƒชใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚น๏ผˆใƒชใƒใ‚ธใƒˆใƒชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผ‰ +print(f"README: {result.github_docs['readme'][:100]}") + +# ใ‚คใƒณใ‚ตใ‚คใƒˆใ‚นใƒˆใƒชใƒผใƒ ใธใฎใ‚ขใ‚ฏใ‚ปใ‚น๏ผˆGitHub ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟ๏ผ‰ +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"ใ‚ˆใใ‚ใ‚‹ๅ•้กŒ: {len(result.github_insights['common_problems'])}") +``` + +**ๅฎŒๅ…จใชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ**๏ผš[3 ใ‚นใƒˆใƒชใƒผใƒ ๅฎŸ่ฃ…ใ‚ตใƒžใƒชใƒผ](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” ใ‚นใƒžใƒผใƒˆใƒฌใƒผใƒˆๅˆถ้™็ฎก็†ใจ่จญๅฎš +- โœ… **ใƒžใƒซใƒใƒˆใƒผใ‚ฏใƒณ่จญๅฎšใ‚ทใ‚นใƒ†ใƒ ** - ่ค‡ๆ•ฐใฎ GitHub ใ‚ขใ‚ซใ‚ฆใƒณใƒˆ๏ผˆๅ€‹ไบบใ€ไป•ไบ‹ใ€OSS๏ผ‰ใ‚’็ฎก็† + - ใ‚ปใ‚ญใƒฅใ‚ขใช่จญๅฎšใ‚นใƒˆใƒฌใƒผใ‚ธ `~/.config/skill-seekers/config.json`๏ผˆใƒ‘ใƒผใƒŸใƒƒใ‚ทใƒงใƒณ 600๏ผ‰ + - ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ”ใจใฎใƒฌใƒผใƒˆๅˆถ้™ๆˆฆ็•ฅ๏ผš`prompt`ใ€`wait`ใ€`switch`ใ€`fail` + - ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ”ใจใฎใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆ่จญๅฎš๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš30 ๅˆ†ใ€็„กๆœŸ้™ใฎๅพ…ๆฉŸใ‚’้˜ฒๆญข๏ผ‰ + - ใ‚นใƒžใƒผใƒˆใƒ•ใ‚ฉใƒผใƒซใƒใƒƒใ‚ฏใƒใ‚งใƒผใƒณ๏ผšCLI ๅผ•ๆ•ฐ โ†’ ็’ฐๅขƒๅค‰ๆ•ฐ โ†’ ่จญๅฎšใƒ•ใ‚กใ‚คใƒซ โ†’ ใƒ—ใƒญใƒณใƒ—ใƒˆ + - Claudeใ€Geminiใ€OpenAI ใฎ API ใ‚ญใƒผ็ฎก็† +- โœ… **ๅฏพ่ฉฑๅผ่จญๅฎšใ‚ฆใ‚ฃใ‚ถใƒผใƒ‰** - ็พŽใ—ใ„ใ‚ฟใƒผใƒŸใƒŠใƒซ UI ใง็ฐกๅ˜ใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ— + - ใƒˆใƒผใ‚ฏใƒณไฝœๆˆใฎใŸใ‚ใฎใƒ–ใƒฉใ‚ฆใ‚ถ็ตฑๅˆ๏ผˆGitHub ใชใฉใ‚’่‡ชๅ‹•ใง้–‹ใ๏ผ‰ + - ใƒˆใƒผใ‚ฏใƒณใฎๆคœ่จผใจๆŽฅ็ถšใƒ†ใ‚นใƒˆ + - ใ‚ซใƒฉใƒผใ‚ณใƒผใƒ‰ไป˜ใใฎใƒ“ใ‚ธใƒฅใ‚ขใƒซใ‚นใƒ†ใƒผใ‚ฟใ‚น่กจ็คบ +- โœ… **ใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใƒฌใƒผใƒˆๅˆถ้™ใƒใƒณใƒ‰ใƒฉใƒผ** - ็„ก้™ๅพ…ใกใฏใ‚‚ใ†็ต‚ใ‚ใ‚Š๏ผ + - ใƒฌใƒผใƒˆๅˆถ้™๏ผˆ60 ๅ›ž/ๆ™‚้–“ vs 5000 ๅ›ž/ๆ™‚้–“๏ผ‰ใฎไบ‹ๅ‰่ญฆๅ‘Š + - GitHub API ใƒฌใ‚นใƒใƒณใ‚นใ‹ใ‚‰ใฎใƒชใ‚ขใƒซใ‚ฟใ‚คใƒ ๆคœๅ‡บ + - ้€ฒๆ—ไป˜ใใฎใƒฉใ‚คใƒ–ใ‚ซใ‚ฆใƒณใƒˆใƒ€ใ‚ฆใƒณใ‚ฟใ‚คใƒžใƒผ + - ใƒฌใƒผใƒˆๅˆถ้™ๆ™‚ใฎ่‡ชๅ‹•ใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซๅˆ‡ใ‚Šๆ›ฟใˆ + - 4 ใคใฎๆˆฆ็•ฅ๏ผšprompt๏ผˆ็ขบ่ช๏ผ‰ใ€wait๏ผˆใ‚ซใ‚ฆใƒณใƒˆใƒ€ใ‚ฆใƒณ๏ผ‰ใ€switch๏ผˆๅˆ‡ใ‚Šๆ›ฟใˆ๏ผ‰ใ€fail๏ผˆไธญๆญข๏ผ‰ +- โœ… **ใƒฌใ‚ธใƒฅใƒผใƒ ๆฉŸ่ƒฝ** - ไธญๆ–ญใ•ใ‚ŒใŸใ‚ธใƒงใƒ–ใฎๅ†้–‹ + - ่จญๅฎšๅฏ่ƒฝใช้–“้š”ใงใฎ้€ฒๆ—่‡ชๅ‹•ไฟๅญ˜๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš60 ็ง’๏ผ‰ + - ๅ†้–‹ๅฏ่ƒฝใชใ‚ธใƒงใƒ–ใฎไธ€่ฆง่กจ็คบ๏ผˆ้€ฒๆ—่ฉณ็ดฐไป˜ใ๏ผ‰ + - ๅคใ„ใ‚ธใƒงใƒ–ใฎ่‡ชๅ‹•ใ‚ฏใƒชใƒผใƒณใ‚ขใƒƒใƒ—๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผš7 ๆ—ฅ๏ผ‰ +- โœ… **CI/CD ใ‚ตใƒใƒผใƒˆ** - ่‡ชๅ‹•ๅŒ–ๅ‘ใ‘ใฎ้žๅฏพ่ฉฑใƒขใƒผใƒ‰ + - `--non-interactive` ใƒ•ใƒฉใ‚ฐใงใƒ—ใƒญใƒณใƒ—ใƒˆใชใ—ใฎๅณๆ™‚ๅคฑๆ•— + - `--profile` ใƒ•ใƒฉใ‚ฐใง็‰นๅฎšใฎ GitHub ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใ‚’้ธๆŠž + - ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใƒญใ‚ฐๅ‘ใ‘ใฎๆ˜Ž็ขบใชใ‚จใƒฉใƒผใƒกใƒƒใ‚ปใƒผใ‚ธ + +**ใ‚ฏใ‚คใƒƒใ‚ฏใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—๏ผš** +```bash +# ๅˆๅ›ž่จญๅฎš๏ผˆ5 ๅˆ†๏ผ‰ +skill-seekers config --github + +# ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒชใƒใ‚ธใƒˆใƒช็”จใซ็‰นๅฎšใฎใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’ไฝฟ็”จ +skill-seekers create mycompany/private-repo --profile work + +# CI/CD ใƒขใƒผใƒ‰๏ผˆๅณๆ™‚ๅคฑๆ•—ใ€ใƒ—ใƒญใƒณใƒ—ใƒˆใชใ—๏ผ‰ +skill-seekers create owner/repo --non-interactive + +# ไธญๆ–ญใ•ใ‚ŒใŸใ‚ธใƒงใƒ–ใ‚’ๅ†้–‹ +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**ใƒฌใƒผใƒˆๅˆถ้™ๆˆฆ็•ฅใฎ่ชฌๆ˜Ž๏ผš** +- **prompt**๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผ‰- ใƒฌใƒผใƒˆๅˆถ้™ๆ™‚ใซใฉใ†ใ™ใ‚‹ใ‹็ขบ่ช๏ผˆๅพ…ๆฉŸใ€ๅˆ‡ใ‚Šๆ›ฟใˆใ€ใƒˆใƒผใ‚ฏใƒณ่จญๅฎšใ€ใ‚ญใƒฃใƒณใ‚ปใƒซ๏ผ‰ +- **wait** - ใ‚ซใ‚ฆใƒณใƒˆใƒ€ใ‚ฆใƒณใ‚ฟใ‚คใƒžใƒผไป˜ใใง่‡ชๅ‹•ๅพ…ๆฉŸ๏ผˆใ‚ฟใ‚คใƒ ใ‚ขใ‚ฆใƒˆใ‚’ๅฐŠ้‡๏ผ‰ +- **switch** - ๆฌกใซๅˆฉ็”จๅฏ่ƒฝใชใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’่‡ชๅ‹•็š„ใซ่ฉฆ่กŒ๏ผˆใƒžใƒซใƒใ‚ขใ‚ซใ‚ฆใƒณใƒˆๆง‹ๆˆๅ‘ใ‘๏ผ‰ +- **fail** - ๆ˜Ž็ขบใชใ‚จใƒฉใƒผใงๅณๆ™‚ๅคฑๆ•—๏ผˆCI/CD ใซๆœ€้ฉ๏ผ‰ + +### ๐ŸŽฏ Bootstrap ใ‚นใ‚ญใƒซ โ€” ใ‚ปใƒซใƒ•ใƒ›ใ‚นใƒ†ใ‚ฃใƒณใ‚ฐ + +skill-seekers ่‡ชไฝ“ใ‚’ใ‚นใ‚ญใƒซใจใ—ใฆ็”Ÿๆˆใ—ใ€AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ๏ผˆClaude Codeใ€Kimiใ€Codex ใชใฉ๏ผ‰ๅ†…ใงไฝฟ็”จใงใใพใ™๏ผš + +```bash +# ใ‚นใ‚ญใƒซใ‚’็”Ÿๆˆ +./scripts/bootstrap_skill.sh + +# Claude Code ใซใ‚คใƒณใ‚นใƒˆใƒผใƒซ +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**ๅพ—ใ‚‰ใ‚Œใ‚‹ใ‚‚ใฎ๏ผš** +- โœ… **ๅฎŒๅ…จใชใ‚นใ‚ญใƒซใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ** - ใ™ในใฆใฎ CLI ใ‚ณใƒžใƒณใƒ‰ใจไฝฟ็”จใƒ‘ใ‚ฟใƒผใƒณ +- โœ… **CLI ใ‚ณใƒžใƒณใƒ‰ใƒชใƒ•ใ‚กใƒฌใƒณใ‚น** - ใ™ในใฆใฎใƒ„ใƒผใƒซใจใใฎใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚’ๆ–‡ๆ›ธๅŒ– +- โœ… **ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ‚ตใƒณใƒ—ใƒซ** - ไธ€่ˆฌ็š„ใชใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใจใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น +- โœ… **่‡ชๅ‹•็”Ÿๆˆ API ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ** - ใ‚ณใƒผใƒ‰ๅˆ†ๆžใ€ใƒ‘ใ‚ฟใƒผใƒณใ€ใ‚ตใƒณใƒ—ใƒซ + +### ๐Ÿ” ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆ่จญๅฎšใƒชใƒใ‚ธใƒˆใƒช +- โœ… **Git ใƒ™ใƒผใ‚นใฎ่จญๅฎšใ‚ฝใƒผใ‚น** - ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆ/ใƒใƒผใƒ  Git ใƒชใƒใ‚ธใƒˆใƒชใ‹ใ‚‰่จญๅฎšใ‚’ๅ–ๅพ— +- โœ… **ใƒžใƒซใƒใ‚ฝใƒผใ‚น็ฎก็†** - GitHubใ€GitLabใ€Bitbucket ใƒชใƒใ‚ธใƒˆใƒชใ‚’็„กๅˆถ้™ใซ็™ป้Œฒ +- โœ… **ใƒใƒผใƒ ใ‚ณใƒฉใƒœใƒฌใƒผใ‚ทใƒงใƒณ** - 3ใ€œ5 ไบบใฎใƒใƒผใƒ ้–“ใงใ‚ซใ‚นใ‚ฟใƒ ่จญๅฎšใ‚’ๅ…ฑๆœ‰ +- โœ… **ใ‚จใƒณใ‚ฟใƒผใƒ—ใƒฉใ‚คใ‚บใ‚ตใƒใƒผใƒˆ** - ๅ„ชๅ…ˆๅบฆใƒ™ใƒผใ‚นใฎ่งฃๆฑบใง 500 ไบบไปฅไธŠใฎ้–‹็™บ่€…ใซใ‚นใ‚ฑใƒผใƒซ +- โœ… **ใ‚ปใ‚ญใƒฅใ‚ข่ช่จผ** - ็’ฐๅขƒๅค‰ๆ•ฐใƒˆใƒผใ‚ฏใƒณ๏ผˆGITHUB_TOKENใ€GITLAB_TOKEN๏ผ‰ +- โœ… **ใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใ‚ญใƒฃใƒƒใ‚ทใƒฅ** - ไธ€ๅบฆใ‚ฏใƒญใƒผใƒณใ™ใ‚Œใฐใ€ๆ›ดๆ–ฐใฏ่‡ชๅ‹•็š„ใซใƒ—ใƒซ +- โœ… **ใ‚ชใƒ•ใƒฉใ‚คใƒณใƒขใƒผใƒ‰** - ใ‚ชใƒ•ใƒฉใ‚คใƒณๆ™‚ใฏใ‚ญใƒฃใƒƒใ‚ทใƒฅใ•ใ‚ŒใŸ่จญๅฎšใงไฝœๆฅญ + +### ๐Ÿค– ใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นๅˆ†ๆž๏ผˆC3.x๏ผ‰ + +**C3.4๏ผšAI ๅผทๅŒ–ไป˜ใ่จญๅฎšใƒ‘ใ‚ฟใƒผใƒณๆŠฝๅ‡บ** +- โœ… **9 ใคใฎ่จญๅฎšใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ** - JSONใ€YAMLใ€TOMLใ€ENVใ€INIใ€Pythonใ€JavaScriptใ€Dockerfileใ€Docker Compose +- โœ… **7 ใคใฎใƒ‘ใ‚ฟใƒผใƒณใ‚ฟใ‚คใƒ—** - ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ€APIใ€ใƒญใ‚ฎใƒณใ‚ฐใ€ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ€ใƒกใƒผใƒซใ€่ช่จผใ€ใ‚ตใƒผใƒใƒผ่จญๅฎš +- โœ… **AI ๅผทๅŒ–** - ใ‚ชใƒ—ใ‚ทใƒงใƒณใฎใƒ‡ใƒฅใ‚ขใƒซใƒขใƒผใƒ‰ AI ๅˆ†ๆž๏ผˆAPI + LOCAL๏ผ‰ + - ๅ„่จญๅฎšใŒไฝ•ใ‚’ใ™ใ‚‹ใ‹ใ‚’่ชฌๆ˜Ž + - ใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚นใจๆ”นๅ–„ๆกˆใ‚’ๆๆกˆ + - **ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃๅˆ†ๆž** - ใƒใƒผใƒ‰ใ‚ณใƒผใƒ‰ใ•ใ‚ŒใŸใ‚ทใƒผใ‚ฏใƒฌใƒƒใƒˆใ‚„ๅ…ฌ้–‹ใ•ใ‚ŒใŸ่ช่จผๆƒ…ๅ ฑใ‚’ๆคœๅ‡บ +- โœ… **่‡ชๅ‹•ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ็”Ÿๆˆ** - ใ™ในใฆใฎ่จญๅฎšใฎ JSON + Markdown ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’็”Ÿๆˆ +- โœ… **MCP ็ตฑๅˆ** - ๅผทๅŒ–ใ‚ตใƒใƒผใƒˆไป˜ใใฎ `extract_config_patterns` ใƒ„ใƒผใƒซ + +**C3.3๏ผšAI ๅผทๅŒ–ๆ“ไฝœใ‚ฌใ‚คใƒ‰** +- โœ… **ๅŒ…ๆ‹ฌ็š„ใช AI ๅผทๅŒ–** - ๅŸบๆœฌใ‚ฌใ‚คใƒ‰ใ‚’ใƒ—ใƒญใƒ•ใ‚งใƒƒใ‚ทใƒงใƒŠใƒซใชใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใซๅค‰ๆ› +- โœ… **5 ใคใฎ่‡ชๅ‹•ๆ”นๅ–„** - ใ‚นใƒ†ใƒƒใƒ—่ชฌๆ˜Žใ€ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ€ๅ‰ๆๆกไปถใ€ๆฌกใฎใ‚นใƒ†ใƒƒใƒ—ใ€ใƒฆใƒผใ‚นใ‚ฑใƒผใ‚น +- โœ… **ใƒ‡ใƒฅใ‚ขใƒซใƒขใƒผใƒ‰ใ‚ตใƒใƒผใƒˆ** - API ใƒขใƒผใƒ‰๏ผˆClaude API๏ผ‰ใพใŸใฏ LOCAL ใƒขใƒผใƒ‰๏ผˆClaude Code CLI๏ผ‰ +- โœ… **LOCAL ใƒขใƒผใƒ‰ใฏใ‚ณใ‚นใƒˆ็„กๆ–™** - Claude Code Max ใƒ—ใƒฉใƒณใง็„กๆ–™ๅผทๅŒ– +- โœ… **ๅ“่ณชใฎๅค‰้ฉ** - 75 ่กŒใฎใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ โ†’ 500 ่กŒไปฅไธŠใฎๅŒ…ๆ‹ฌ็š„ใชใ‚ฌใ‚คใƒ‰ + +**ไฝฟ็”จๆ–นๆณ•๏ผš** +```bash +# ใ‚ฏใ‚คใƒƒใ‚ฏๅˆ†ๆž๏ผˆ1ใ€œ2 ๅˆ†ใ€ๅŸบๆœฌๆฉŸ่ƒฝใฎใฟ๏ผ‰ +skill-seekers scan tests/ --quick + +# ๅŒ…ๆ‹ฌ็š„ๅˆ†ๆž๏ผˆAI ไป˜ใใ€20ใ€œ60 ๅˆ†๏ผ‰ +skill-seekers scan tests/ --comprehensive + +# AI ๅผทๅŒ–ไป˜ใ +skill-seekers scan tests/ --enhance +``` + +**ๅฎŒๅ…จใชใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ๏ผš** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ๅผทๅŒ–ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใƒ—ใƒชใ‚ปใƒƒใƒˆ + +ๅ†ๅˆฉ็”จๅฏ่ƒฝใช YAML ๅฎš็พฉใฎๅผทๅŒ–ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใงใ€AI ใŒ็”Ÿใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๆด—็ทดใ•ใ‚ŒใŸใ‚นใ‚ญใƒซใซๅค‰ๆ›ใ™ใ‚‹ๆ–นๆณ•ใ‚’ๅˆถๅพกใ—ใพใ™ใ€‚ + +- โœ… **5 ใคใฎ็ต„ใฟ่พผใฟใƒ—ใƒชใ‚ปใƒƒใƒˆ** โ€” `default`ใ€`minimal`ใ€`security-focus`ใ€`architecture-comprehensive`ใ€`api-documentation` +- โœ… **ใƒฆใƒผใ‚ถใƒผๅฎš็พฉใƒ—ใƒชใ‚ปใƒƒใƒˆ** โ€” `~/.config/skill-seekers/workflows/` ใซใ‚ซใ‚นใ‚ฟใƒ ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใ‚’่ฟฝๅŠ  +- โœ… **่ค‡ๆ•ฐใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใƒใ‚งใƒผใƒณ** โ€” 1 ใคใฎใ‚ณใƒžใƒณใƒ‰ใง 2 ใคไปฅไธŠใฎใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใ‚’ใƒใ‚งใƒผใƒณ +- โœ… **ๅฎŒๅ…จใช CLI ็ฎก็†** โ€” ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใฎไธ€่ฆง่กจ็คบใ€็ขบ่ชใ€ใ‚ณใƒ”ใƒผใ€่ฟฝๅŠ ใ€ๅ‰Š้™คใ€ๆคœ่จผ + +```bash +# ๅ˜ไธ€ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใฎ้ฉ็”จ +skill-seekers create ./my-project --enhance-workflow security-focus + +# ่ค‡ๆ•ฐใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใฎใƒใ‚งใƒผใƒณ๏ผˆ้ †ๅบใฉใŠใ‚Šใซ้ฉ็”จ๏ผ‰ +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ใƒ—ใƒชใ‚ปใƒƒใƒˆใฎ็ฎก็† +skill-seekers workflows list # ใ™ในใฆไธ€่ฆง่กจ็คบ๏ผˆ็ต„ใฟ่พผใฟ + ใƒฆใƒผใ‚ถใƒผ๏ผ‰ +skill-seekers workflows show security-focus # YAML ๅ†…ๅฎนใ‚’่กจ็คบ +skill-seekers workflows copy security-focus # ็ทจ้›†็”จใซใƒฆใƒผใ‚ถใƒผใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใซใ‚ณใƒ”ใƒผ +skill-seekers workflows add ./my-workflow.yaml # ใ‚ซใ‚นใ‚ฟใƒ ใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +skill-seekers workflows remove my-workflow # ใƒฆใƒผใ‚ถใƒผใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’ๅ‰Š้™ค +skill-seekers workflows validate security-focus # ใƒ—ใƒชใ‚ปใƒƒใƒˆๆง‹้€ ใ‚’ๆคœ่จผ + +# ่ค‡ๆ•ฐใ‚’ๅŒๆ™‚ใซใ‚ณใƒ”ใƒผ +skill-seekers workflows copy security-focus minimal api-documentation + +# ่ค‡ๆ•ฐใƒ•ใ‚กใ‚คใƒซใ‚’ๅŒๆ™‚ใซ่ฟฝๅŠ  +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# ่ค‡ๆ•ฐใ‚’ๅŒๆ™‚ใซๅ‰Š้™ค +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML ใƒ—ใƒชใ‚ปใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ๏ผš** +```yaml +name: security-focus +description: "ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ้‡็‚นใƒฌใƒ“ใƒฅใƒผ๏ผš่„†ๅผฑๆ€งใ€่ช่จผใ€ใƒ‡ใƒผใ‚ฟๅ‡ฆ็†" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "OWASP Top 10 ใจไธ€่ˆฌ็š„ใชใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ่„†ๅผฑๆ€งใ‚’ใƒฌใƒ“ใƒฅใƒผ..." + - name: auth-review + type: custom + prompt: "่ช่จผใจ่ชๅฏใƒ‘ใ‚ฟใƒผใƒณใ‚’ๆคœๆŸป..." + uses_history: true +``` + +### โšก ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใจใ‚นใ‚ฑใƒผใƒซ +- โœ… **้žๅŒๆœŸใƒขใƒผใƒ‰** - async/await ใง 2ใ€œ3 ๅ€้ซ˜้€Ÿใชใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ๏ผˆ`--async` ใƒ•ใƒฉใ‚ฐใ‚’ไฝฟ็”จ๏ผ‰ +- โœ… **ๅคง่ฆๆจกใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใƒใƒผใƒˆ** - ใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใชๅˆ†ๅ‰ฒใง 10Kใ€œ40K ไปฅไธŠใฎใƒšใƒผใ‚ธใ‚’ๅ‡ฆ็† +- โœ… **ใƒซใƒผใ‚ฟใƒผ/ใƒใƒ–ใ‚นใ‚ญใƒซ** - ๅฐ‚็”จใ‚ตใƒ–ใ‚นใ‚ญใƒซใธใฎใ‚คใƒณใƒ†ใƒชใ‚ธใ‚งใƒณใƒˆใƒซใƒผใƒ†ใ‚ฃใƒณใ‚ฐ +- โœ… **ไธฆๅˆ—ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ** - ่ค‡ๆ•ฐใฎใ‚นใ‚ญใƒซใ‚’ๅŒๆ™‚ๅ‡ฆ็† +- โœ… **ใƒใ‚งใƒƒใ‚ฏใƒใ‚คใƒณใƒˆ/ใƒฌใ‚ธใƒฅใƒผใƒ ** - ้•ทๆ™‚้–“ใ‚นใ‚ฏใƒฌใ‚คใƒ—ใงใ‚‚้€ฒๆ—ใ‚’ๅคฑใ‚ใชใ„ +- โœ… **ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ‚ทใ‚นใƒ†ใƒ ** - ไธ€ๅบฆใ‚นใ‚ฏใƒฌใ‚คใƒ—ใ™ใ‚Œใฐๅณๅบงใซใƒชใƒ“ใƒซใƒ‰ + +### ๐Ÿค– ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ้žไพๅญ˜ใฎใ‚นใ‚ญใƒซ็”Ÿๆˆ +- โœ… **ใƒžใƒซใƒใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚ตใƒใƒผใƒˆ** - `--agent` ใƒ•ใƒฉใ‚ฐใง Claudeใ€Kimiใ€Codexใ€Copilotใ€OpenCodeใ€ใพใŸใฏไปปๆ„ใฎใ‚ซใ‚นใ‚ฟใƒ ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆๅ‘ใ‘ใซใ‚นใ‚ญใƒซใ‚’็”Ÿๆˆ +- โœ… **ใ‚ซใ‚นใ‚ฟใƒ ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚ณใƒžใƒณใƒ‰** - `--agent-cmd` ใงๅผทๅŒ–ใซไฝฟ็”จใ™ใ‚‹ใ‚ซใ‚นใ‚ฟใƒ ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ CLI ใ‚ณใƒžใƒณใƒ‰ใ‚’ๆŒ‡ๅฎš +- โœ… **ใƒฆใƒ‹ใƒใƒผใ‚ตใƒซใƒ•ใƒฉใ‚ฐ** - `--agent` ใจ `--agent-cmd` ใฏใ™ในใฆใฎใ‚ณใƒžใƒณใƒ‰๏ผˆcreateใ€scrapeใ€githubใ€pdf ใชใฉ๏ผ‰ใงๅˆฉ็”จๅฏ่ƒฝ + +### ๐Ÿ“ฆ ใƒžใƒผใ‚ฑใƒƒใƒˆใƒ—ใƒฌใ‚คใ‚นใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ +- โœ… **ใƒžใƒผใ‚ฑใƒƒใƒˆใƒ—ใƒฌใ‚คใ‚นใธใฎๅ…ฌ้–‹** - Claude Code ใƒ—ใƒฉใ‚ฐใ‚คใƒณใƒžใƒผใ‚ฑใƒƒใƒˆใƒ—ใƒฌใ‚คใ‚นใƒชใƒใ‚ธใƒˆใƒชใซใ‚นใ‚ญใƒซใ‚’ๅ…ฌ้–‹ +- โœ… **ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ** - ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ฝใƒผใ‚นใ‹ใ‚‰ๅ…ฌ้–‹ๆธˆใฟใƒžใƒผใ‚ฑใƒƒใƒˆใƒ—ใƒฌใ‚คใ‚นใ‚จใƒณใƒˆใƒชใพใง + +### โœ… ๅ“่ณชไฟ่จผ +- โœ… **ๅฎŒๅ…จใƒ†ใ‚นใƒˆ** - 3,700 ไปฅไธŠใฎใƒ†ใ‚นใƒˆใ€ๅŒ…ๆ‹ฌ็š„ใชใ‚ซใƒใƒฌใƒƒใ‚ธ + +--- + +## ๐Ÿ“ฆ ใ‚คใƒณใ‚นใƒˆใƒผใƒซ + +```bash +# ๅŸบๆœฌใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใ€GitHub ๅˆ†ๆžใ€PDFใ€ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ๏ผ‰ +pip install skill-seekers + +# ใ™ในใฆใฎ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ‚ตใƒใƒผใƒˆไป˜ใ +pip install skill-seekers[all-llms] + +# MCP ใ‚ตใƒผใƒใƒผไป˜ใ +pip install skill-seekers[mcp] + +# ๅ…จๆฉŸ่ƒฝ +pip install skill-seekers[all] +``` + +**้ธๆŠžใซ่ฟทใฃใŸใ‚‰๏ผŸ** ใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—ใ‚ฆใ‚ฃใ‚ถใƒผใƒ‰ใ‚’ๅฎŸ่กŒ๏ผš +```bash +skill-seekers-setup +``` + +### ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ‚ชใƒ—ใ‚ทใƒงใƒณ + +| ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ‚ณใƒžใƒณใƒ‰ | ๆฉŸ่ƒฝ | +|-------------------|------| +| `pip install skill-seekers` | ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใ€GitHub ๅˆ†ๆžใ€PDFใ€ๅ…จใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  | +| `pip install skill-seekers[gemini]` | + Google Gemini ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[all-llms]` | + ใ™ในใฆใฎ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  | +| `pip install skill-seekers[mcp]` | + Claude Code ใ‚„ Cursor ใชใฉใฎ MCP ใ‚ตใƒผใƒใƒผ | +| `pip install skill-seekers[video]` | + YouTube/Vimeo ๅญ—ๅน• & ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟๆŠฝๅ‡บ | +| `pip install skill-seekers[video-full]` | + Whisper ๆ–‡ๅญ—่ตทใ“ใ— & ใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ•ใƒฌใƒผใƒ ๆŠฝๅ‡บ | +| `pip install skill-seekers[jupyter]` | + Jupyter Notebook ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[pptx]` | + PowerPoint ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[confluence]` | + Confluence Wiki ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[notion]` | + Notion ใƒšใƒผใ‚ธใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[rss]` | + RSS/Atom ใƒ•ใ‚ฃใƒผใƒ‰ใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[chat]` | + Slack/Discord ใƒใƒฃใƒƒใƒˆใ‚จใ‚ฏใ‚นใƒใƒผใƒˆใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใƒใƒผใƒˆ | +| `pip install skill-seekers[all]` | ๅ…จๆฉŸ่ƒฝ | + +> **ๅ‹•็”ปใƒ“ใ‚ธใƒฅใ‚ขใƒซไพๅญ˜้–ขไฟ‚๏ผˆGPU ๅฏพๅฟœ๏ผ‰๏ผš** `skill-seekers[video-full]` ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใŸๅพŒใ€ +> `skill-seekers create --setup` ใ‚’ๅฎŸ่กŒใ—ใฆ GPU ใ‚’่‡ชๅ‹•ๆคœๅ‡บใ—ใ€ๆญฃใ—ใ„ PyTorch +> ใƒใƒผใ‚ธใƒงใƒณ + easyocr ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ—ใพใ™ใ€‚ใ“ใ‚Œใฏใƒ“ใ‚ธใƒฅใ‚ขใƒซๆŠฝๅ‡บไพๅญ˜้–ขไฟ‚ใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซใซๆŽจๅฅจใ•ใ‚Œใ‚‹ๆ–นๆณ•ใงใ™ใ€‚ + +--- + +## ๐Ÿš€ ใƒฏใƒณใ‚ณใƒžใƒณใƒ‰ใ‚คใƒณใ‚นใƒˆใƒผใƒซใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผ + +**่จญๅฎšใ‹ใ‚‰ใ‚นใ‚ญใƒซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใพใงใฎๆœ€้€Ÿใฎๆ–นๆณ•โ€”โ€”ๅฎŒๅ…จ่‡ชๅ‹•ๅŒ–๏ผš** + +```bash +# ๅ…ฌๅผ่จญๅฎšใ‹ใ‚‰ React ใ‚นใ‚ญใƒซใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆClaude ใซ่‡ชๅ‹•ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰๏ผ‰ +skill-seekers install --config react + +# ใƒญใƒผใ‚ซใƒซ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ‹ใ‚‰ใ‚คใƒณใ‚นใƒˆใƒผใƒซ +skill-seekers install --config configs/custom.json + +# ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใชใ—ใงใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใฎใฟ๏ผ‰ +skill-seekers install --config django --no-upload + +# ๅฎŸ่กŒใ›ใšใซใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใ‚’ใƒ—ใƒฌใƒ“ใƒฅใƒผ +skill-seekers install --config react --dry-run +``` + +**ๆ‰€่ฆๆ™‚้–“๏ผš** ๅˆ่จˆ 20ใ€œ45 ๅˆ† | **ๅ“่ณช๏ผš** ๆœฌ็•ช้‹็”จๅฏ่ƒฝ๏ผˆ9/10๏ผ‰ | **ใ‚ณใ‚นใƒˆ๏ผš** ็„กๆ–™ + +**ๅฎŸ่กŒใƒ•ใ‚งใƒผใ‚บ๏ผš** +``` +๐Ÿ“ฅ ใƒ•ใ‚งใƒผใ‚บ 1๏ผš่จญๅฎšใฎๅ–ๅพ—๏ผˆ่จญๅฎšๅใŒๆŒ‡ๅฎšใ•ใ‚ŒใŸๅ ดๅˆ๏ผ‰ +๐Ÿ“– ใƒ•ใ‚งใƒผใ‚บ 2๏ผšใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฎใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +โœจ ใƒ•ใ‚งใƒผใ‚บ 3๏ผšAI ๅผทๅŒ–๏ผˆๅฟ…้ ˆ โ€” ใ‚นใ‚ญใƒƒใƒ—ไธๅฏ๏ผ‰ +๐Ÿ“ฆ ใƒ•ใ‚งใƒผใ‚บ 4๏ผšใ‚นใ‚ญใƒซใฎใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ +โ˜๏ธ ใƒ•ใ‚งใƒผใ‚บ 5๏ผšClaude ใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰๏ผˆใ‚ชใƒ—ใ‚ทใƒงใƒณใ€API ใ‚ญใƒผใŒๅฟ…่ฆ๏ผ‰ +``` + +**่ฆไปถ๏ผš** +- ANTHROPIC_API_KEY ็’ฐๅขƒๅค‰ๆ•ฐ๏ผˆ่‡ชๅ‹•ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰็”จ๏ผ‰ +- Claude Code Max ใƒ—ใƒฉใƒณ๏ผˆใƒญใƒผใ‚ซใƒซ AI ๅผทๅŒ–็”จ๏ผ‰ใ€ใพใŸใฏ `--agent` ใงๅˆฅใฎ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚’้ธๆŠž + +--- + +## ๐Ÿ“Š ๆฉŸ่ƒฝใƒžใƒˆใƒชใƒƒใ‚ฏใ‚น + +Skill Seekers ใฏ **12 ใฎ LLM ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ **ใ€**8 ใคใฎ RAG/ใƒ™ใ‚ฏใƒˆใƒซใ‚ฟใƒผใ‚ฒใƒƒใƒˆ**ใ€**18 ็จฎ้กžใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—**ใ‚’ใ‚ตใƒใƒผใƒˆใ—ใ€ใ™ในใฆใฎใ‚ฟใƒผใ‚ฒใƒƒใƒˆใงๅฎŒๅ…จใชๆฉŸ่ƒฝใƒ‘ใƒชใƒ†ใ‚ฃใ‚’ๆไพ›ใ—ใพใ™ใ€‚ + +**ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๏ผš** Claude AIใ€Google Geminiใ€OpenAI ChatGPTใ€MiniMax AIใ€ๆฑŽ็”จ Markdownใ€OpenCodeใ€Kimi๏ผˆMoonshot AI๏ผ‰ใ€DeepSeek AIใ€Qwen๏ผˆAlibaba๏ผ‰ใ€OpenRouterใ€Together AIใ€Fireworks AI +**ใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—๏ผš** ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆใ€GitHub ใƒชใƒใ‚ธใƒˆใƒชใ€PDFใ€Word๏ผˆ.docx๏ผ‰ใ€EPUBใ€ๅ‹•็”ปใ€ใƒญใƒผใ‚ซใƒซใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นใ€Jupyter Notebookใ€ใƒญใƒผใ‚ซใƒซ HTMLใ€OpenAPI/Swaggerใ€AsciiDocใ€PowerPoint๏ผˆ.pptx๏ผ‰ใ€RSS/Atom ใƒ•ใ‚ฃใƒผใƒ‰ใ€Man ใƒšใƒผใ‚ธใ€Confluence Wikiใ€Notion ใƒšใƒผใ‚ธใ€Slack/Discord ใƒใƒฃใƒƒใƒˆใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ + +่ฉณ็ดฐใฏ [ๅฎŒๅ…จใชๆฉŸ่ƒฝใƒžใƒˆใƒชใƒƒใ‚ฏใ‚น](docs/reference/FEATURE_MATRIX.md) ใ‚’ใ”่ฆงใใ ใ•ใ„ใ€‚ + +### ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ็ฐกๆ˜“ๆฏ”่ผƒ + +| ๆฉŸ่ƒฝ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|------|--------|--------|--------|--------|----------| +| ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ | โœ… API | โœ… API | โœ… API | โœ… API | โŒ ๆ‰‹ๅ‹• | +| ๅผทๅŒ– | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ ใชใ— | +| ๅ…จใ‚นใ‚ญใƒซใƒขใƒผใƒ‰ | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## ไฝฟ็”จไพ‹ + +### ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ + +```bash +# ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆใ‚’ใ‚นใ‚ฏใƒฌใ‚คใƒ— +skill-seekers create --config configs/react.json + +# ่จญๅฎšใชใ—ใงใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฏใƒฌใ‚คใƒ— +skill-seekers create https://react.dev --name react + +# ้žๅŒๆœŸใƒขใƒผใƒ‰๏ผˆ3 ๅ€้ซ˜้€Ÿ๏ผ‰ +skill-seekers create --config configs/godot.json --async --workers 8 + +# ๅผทๅŒ–ใซ็‰นๅฎšใฎ AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚’ไฝฟ็”จ +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF ๆŠฝๅ‡บ + +```bash +# ๅŸบๆœฌ PDF ๆŠฝๅ‡บ +skill-seekers create --pdf docs/manual.pdf --name myskill + +# ้ซ˜ๅบฆใชๆฉŸ่ƒฝ +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # ใƒ†ใƒผใƒ–ใƒซๆŠฝๅ‡บ + --parallel \ # ้ซ˜้€Ÿไธฆๅˆ—ๅ‡ฆ็† + --workers 8 # 8 CPU ใ‚ณใ‚ขใ‚’ไฝฟ็”จ + +# ใ‚นใ‚ญใƒฃใƒณ PDF๏ผˆๅฟ…่ฆ๏ผšpip install pytesseract Pillow๏ผ‰ +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### ๅ‹•็”ปๆŠฝๅ‡บ + +```bash +# ๅ‹•็”ปใ‚ตใƒใƒผใƒˆใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซ +pip install skill-seekers[video] # ๅญ—ๅน• + ใƒกใ‚ฟใƒ‡ใƒผใ‚ฟ +pip install skill-seekers[video-full] # + Whisper ๆ–‡ๅญ—่ตทใ“ใ— + ใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ•ใƒฌใƒผใƒ ๆŠฝๅ‡บ + +# GPU ่‡ชๅ‹•ๆคœๅ‡บใจใƒ“ใ‚ธใƒฅใ‚ขใƒซไพๅญ˜้–ขไฟ‚ใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆPyTorch + easyocr๏ผ‰ +skill-seekers create --setup + +# YouTube ๅ‹•็”ปใ‹ใ‚‰ๆŠฝๅ‡บ +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# YouTube ใƒ—ใƒฌใ‚คใƒชใ‚นใƒˆใ‹ใ‚‰ๆŠฝๅ‡บ +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# ใƒญใƒผใ‚ซใƒซๅ‹•็”ปใƒ•ใ‚กใ‚คใƒซใ‹ใ‚‰ๆŠฝๅ‡บ +skill-seekers create --video-file recording.mp4 --name myrecording + +# ใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ•ใƒฌใƒผใƒ ๅˆ†ๆžไป˜ใใงๆŠฝๅ‡บ๏ผˆvideo-full ไพๅญ˜้–ขไฟ‚ใŒๅฟ…่ฆ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# AI ๅผทๅŒ–ไป˜ใ๏ผˆOCR ใ‚ฏใƒชใƒผใƒณใ‚ขใƒƒใƒ— + ๆด—็ทดใ•ใ‚ŒใŸ SKILL.md ใ‚’็”Ÿๆˆ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# ๅ‹•็”ปใฎ็‰นๅฎšใ‚ปใ‚ฏใ‚ทใƒงใƒณใ‚’ใƒˆใƒชใƒŸใƒณใ‚ฐ๏ผˆ็ง’ๆ•ฐใ€MM:SSใ€HH:MM:SS ๅฝขๅผใซๅฏพๅฟœ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# ไฝŽไฟก้ ผๅบฆ OCR ใƒ•ใƒฌใƒผใƒ ใซ Vision API ใ‚’ไฝฟ็”จ๏ผˆANTHROPIC_API_KEY ใŒๅฟ…่ฆ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# ไปฅๅ‰ใซๆŠฝๅ‡บใ—ใŸใƒ‡ใƒผใ‚ฟใ‹ใ‚‰ใ‚นใ‚ญใƒซใ‚’ๅ†ๆง‹็ฏ‰๏ผˆใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰ใ‚’ใ‚นใ‚ญใƒƒใƒ—๏ผ‰ +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **ๅฎŒๅ…จใ‚ฌใ‚คใƒ‰๏ผš** [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) ใงๅฎŒๅ…จใช CLI ใƒชใƒ•ใ‚กใƒฌใƒณใ‚นใ€ +> ใƒ“ใ‚ธใƒฅใ‚ขใƒซใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณใฎ่ฉณ็ดฐใ€AI ๅผทๅŒ–ใ‚ชใƒ—ใ‚ทใƒงใƒณใ€ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ + +### GitHub ใƒชใƒใ‚ธใƒˆใƒชๅˆ†ๆž + +```bash +# ๅŸบๆœฌใƒชใƒใ‚ธใƒˆใƒชใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +skill-seekers create facebook/react + +# ่ช่จผไป˜ใ๏ผˆใ‚ˆใ‚Š้ซ˜ใ„ใƒฌใƒผใƒˆๅˆถ้™๏ผ‰ +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# ๅซใ‚ใ‚‹ใ‚ณใƒณใƒ†ใƒณใƒ„ใฎใ‚ซใ‚นใ‚ฟใƒžใ‚คใ‚บ +skill-seekers create django/django \ + --include-issues \ # GitHub Issues ใ‚’ๆŠฝๅ‡บ + --max-issues 100 \ # Issue ๆ•ฐใ‚’ๅˆถ้™ + --include-changelog # CHANGELOG.md ใ‚’ๆŠฝๅ‡บ +``` + +### ็ตฑๅˆใƒžใƒซใƒใ‚ฝใƒผใ‚นใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ + +**ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + GitHub + PDF ใ‚’ใ‚ณใƒณใƒ•ใƒชใ‚ฏใƒˆๆคœๅ‡บไป˜ใใฎ็ตฑๅˆใ‚นใ‚ญใƒซใซ็ตฑๅˆ๏ผš** + +```bash +# ๆ—ขๅญ˜ใฎ็ตฑๅˆ่จญๅฎšใ‚’ไฝฟ็”จ +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# ใพใŸใฏ็ตฑๅˆ่จญๅฎšใ‚’ไฝœๆˆ +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**ใ‚ณใƒณใƒ•ใƒชใ‚ฏใƒˆๆคœๅ‡บใŒ่‡ชๅ‹•็š„ใซ็™บ่ฆ‹ใ™ใ‚‹ใ‚‚ใฎ๏ผš** +- ๐Ÿ”ด **ใ‚ณใƒผใƒ‰ใซๅญ˜ๅœจใ—ใชใ„**๏ผˆ้ซ˜๏ผ‰๏ผšๆ–‡ๆ›ธๅŒ–ใ•ใ‚Œใฆใ„ใ‚‹ใŒๆœชๅฎŸ่ฃ… +- ๐ŸŸก **ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใซๅญ˜ๅœจใ—ใชใ„**๏ผˆไธญ๏ผ‰๏ผšๅฎŸ่ฃ…ใ•ใ‚Œใฆใ„ใ‚‹ใŒๆœชๆ–‡ๆ›ธๅŒ– +- โš ๏ธ **ใ‚ทใ‚ฐใƒใƒใƒฃไธไธ€่‡ด**๏ผšใƒ‘ใƒฉใƒกใƒผใ‚ฟ/ๅž‹ใŒ็•ฐใชใ‚‹ +- โ„น๏ธ **่ชฌๆ˜Žใฎไธไธ€่‡ด**๏ผš่ชฌๆ˜ŽใŒ็•ฐใชใ‚‹ + +**ๅฎŒๅ…จใ‚ฌใ‚คใƒ‰๏ผš** [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ + +### ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆ่จญๅฎšใƒชใƒใ‚ธใƒˆใƒช + +**ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆ Git ใƒชใƒใ‚ธใƒˆใƒชใ‚’ไฝฟ็”จใ—ใฆใƒใƒผใƒ ้–“ใงใ‚ซใ‚นใ‚ฟใƒ ่จญๅฎšใ‚’ๅ…ฑๆœ‰๏ผš** + +```bash +# ใ‚ชใƒ—ใ‚ทใƒงใƒณ 1๏ผšMCP ใƒ„ใƒผใƒซใ‚’ไฝฟ็”จ๏ผˆๆŽจๅฅจ๏ผ‰ +# ใƒใƒผใƒ ใฎใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒชใƒใ‚ธใƒˆใƒชใ‚’็™ป้Œฒ +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# ใƒใƒผใƒ ใƒชใƒใ‚ธใƒˆใƒชใ‹ใ‚‰่จญๅฎšใ‚’ๅ–ๅพ— +fetch_config(source="team", config_name="internal-api") +``` + +**ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใ‚‹ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๏ผš** +- GitHub๏ผˆ`GITHUB_TOKEN`๏ผ‰ใ€GitLab๏ผˆ`GITLAB_TOKEN`๏ผ‰ใ€Gitea๏ผˆ`GITEA_TOKEN`๏ผ‰ใ€Bitbucket๏ผˆ`BITBUCKET_TOKEN`๏ผ‰ + +**ๅฎŒๅ…จใ‚ฌใ‚คใƒ‰๏ผš** [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) ใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ใ€‚ + +## ไป•็ต„ใฟ + +```mermaid +graph LR + A[ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚ตใ‚คใƒˆ] --> B[Skill Seekers] + B --> C[ใ‚นใ‚ฏใƒฌใ‚คใƒ‘ใƒผ] + B --> D[AI ๅผทๅŒ–] + B --> E[ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒฃใƒผ] + C --> F[ๆ•ด็†ใ•ใ‚ŒใŸๅ‚็…งใƒ•ใ‚กใ‚คใƒซ] + D --> F + F --> E + E --> G[AI ใ‚นใ‚ญใƒซ .zip] + G --> H[AI ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰] +``` + +0. **llms.txt ใฎๆคœๅ‡บ** - llms-full.txtใ€llms.txtใ€llms-small.txt ใ‚’ๅ„ชๅ…ˆใƒใ‚งใƒƒใ‚ฏ๏ผˆใ‚นใƒžใƒผใƒˆ SPA ใƒ‡ใ‚ฃใ‚นใ‚ซใƒใƒชใƒผใฎไธ€้ƒจ๏ผ‰ +1. **ใ‚นใ‚ฏใƒฌใ‚คใƒ—**๏ผšใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‹ใ‚‰ใ™ในใฆใฎใƒšใƒผใ‚ธใ‚’ๆŠฝๅ‡บ +2. **ใ‚ซใƒ†ใ‚ดใƒชๅˆ†้กž**๏ผšใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ใƒˆใƒ”ใƒƒใ‚ฏๅˆฅใซๆ•ด็†๏ผˆAPIใ€ใ‚ฌใ‚คใƒ‰ใ€ใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใชใฉ๏ผ‰ +3. **ๅผทๅŒ–**๏ผšAI ใŒใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๅˆ†ๆžใ—ใ€ใ‚ตใƒณใƒ—ใƒซไป˜ใใฎๅŒ…ๆ‹ฌ็š„ใช SKILL.md ใ‚’ไฝœๆˆ๏ผˆ`--agent` ใง่ค‡ๆ•ฐใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซๅฏพๅฟœ๏ผ‰ +4. **ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ**๏ผšใ™ในใฆใ‚’ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ๅฏพๅฟœใฎ `.zip` ใƒ•ใ‚กใ‚คใƒซใซใƒใƒณใƒ‰ใƒซ + +## ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ + +ใ‚ทใ‚นใƒ†ใƒ ใฏ **8 ใคใฎใ‚ณใ‚ขใƒขใ‚ธใƒฅใƒผใƒซ**ใจ **5 ใคใฎใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃใƒขใ‚ธใƒฅใƒผใƒซ**๏ผˆๅˆ่จˆ็ด„ 200 ใ‚ฏใƒฉใ‚น๏ผ‰ใงๆง‹ๆˆใ•ใ‚Œใฆใ„ใพใ™๏ผš + +![ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธๆฆ‚่ฆ](docs/UML/exports/00_package_overview.png) + +| ใƒขใ‚ธใƒฅใƒผใƒซ | ็›ฎ็š„ | ไธป่ฆใ‚ฏใƒฉใ‚น | +|-----------|------|-------------| +| **CLICore** | Git ใ‚นใ‚ฟใ‚คใƒซใฎใ‚ณใƒžใƒณใƒ‰ใƒ‡ใ‚ฃใ‚นใƒ‘ใƒƒใƒใƒฃใƒผ | `CLIDispatcher`ใ€`SourceDetector`ใ€`CreateCommand` | +| **Scrapers** | 18 ็จฎ้กžใฎใ‚ฝใƒผใ‚นใ‚ฟใ‚คใƒ—ๆŠฝๅ‡บๅ™จ | `DocToSkillConverter`ใ€`DocumentSkillBuilder`๏ผˆๅ…ฑๆœ‰ใƒ“ใƒซใƒ‰ใƒฌใ‚คใƒคใƒผ๏ผ‰ใ€`UnifiedScraper` | +| **Adaptors** | 20 ไปฅไธŠใฎๅ‡บๅŠ›ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใƒ•ใ‚ฉใƒผใƒžใƒƒใƒˆ | `SkillAdaptor`๏ผˆABC๏ผ‰ใ€`ClaudeAdaptor`ใ€`LangChainAdaptor` | +| **Analysis** | C3.x ใ‚ณใƒผใƒ‰ใƒ™ใƒผใ‚นๅˆ†ๆžใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ | `UnifiedCodebaseAnalyzer`ใ€`PatternRecognizer`ใ€10 ็จฎ้กžใฎ GoF ๆคœๅ‡บๅ™จ | +| **Enhancement** | `AgentClient` ใซใ‚ˆใ‚‹ AI ้ง†ๅ‹•ใฎใ‚นใ‚ญใƒซๆ”นๅ–„ | `AgentClient`ใ€`AIEnhancer`ใ€`UnifiedEnhancer`ใ€`WorkflowEngine` | +| **Packaging** | ใ‚นใ‚ญใƒซใฎใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ€ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ€ใ‚คใƒณใ‚นใƒˆใƒผใƒซ | `PackageSkill`ใ€`InstallAgent` | +| **MCP** | FastMCP ใ‚ตใƒผใƒใƒผ๏ผˆ40 ใƒ„ใƒผใƒซ๏ผ‰ | `SkillSeekerMCPServer`ใ€10 ใฎใƒ„ใƒผใƒซใƒขใ‚ธใƒฅใƒผใƒซ | +| **Sync** | ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆๅค‰ๆ›ดๆคœๅ‡บ | `ChangeDetector`ใ€`SyncMonitor`ใ€`Notifier` | + +ใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃใƒขใ‚ธใƒฅใƒผใƒซ๏ผš**Parsers**๏ผˆ28 ใฎ CLI ใƒ‘ใƒผใ‚ตใƒผ๏ผ‰ใ€**Storage**๏ผˆS3/GCS/Azure๏ผ‰ใ€**Embedding**๏ผˆใƒžใƒซใƒใƒ—ใƒญใƒใ‚คใƒ€ใƒผใƒ™ใ‚ฏใƒˆใƒซ๏ผ‰ใ€**Benchmark**๏ผˆใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚น๏ผ‰ใ€**Utilities**๏ผˆ16 ใฎๅ…ฑๆœ‰ใƒ˜ใƒซใƒ‘ใƒผ๏ผ‰ใ€‚ + +ๅฎŒๅ…จใช UML ๅ›ณ๏ผš**[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ๏ผš`docs/UML/skill_seekers.mdj` | HTML API ใƒชใƒ•ใ‚กใƒฌใƒณใ‚น๏ผš`docs/UML/html/` + +## ๐Ÿ“‹ ๅ‰ๆๆกไปถ + +**้–‹ๅง‹ๅ‰ใซไปฅไธ‹ใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„๏ผš** + +1. **Python 3.10 ไปฅไธŠ** - [ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰](https://www.python.org/downloads/) | ็ขบ่ช๏ผš`python3 --version` +2. **Git** - [ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰](https://git-scm.com/) | ็ขบ่ช๏ผš`git --version` +3. **15ใ€œ30 ๅˆ†**ใฎๅˆๅ›žใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ—ๆ™‚้–“ + +**ๅˆใ‚ใฆใฎๆ–นใฏ๏ผŸ** โ†’ **[ใ“ใกใ‚‰ใ‹ใ‚‰้–‹ๅง‹๏ผš็ขบๅฎŸใชใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆใ‚ฌใ‚คใƒ‰](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Claude ใธใฎใ‚นใ‚ญใƒซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ + +ใ‚นใ‚ญใƒซใฎใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใŒๅฎŒไบ†ใ—ใŸใ‚‰ใ€Claude ใซใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผš + +### ใ‚ชใƒ—ใ‚ทใƒงใƒณ 1๏ผš่‡ชๅ‹•ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰๏ผˆAPI ใƒ™ใƒผใ‚น๏ผ‰ + +```bash +# API ใ‚ญใƒผใ‚’่จญๅฎš๏ผˆไธ€ๅบฆใ ใ‘๏ผ‰ +export ANTHROPIC_API_KEY=sk-ant-... + +# ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใจ่‡ชๅ‹•ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ +skill-seekers package output/react/ --upload + +# ใพใŸใฏๆ—ขๅญ˜ใฎ .zip ใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ +skill-seekers upload output/react.zip +``` + +### ใ‚ชใƒ—ใ‚ทใƒงใƒณ 2๏ผšๆ‰‹ๅ‹•ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰๏ผˆAPI ใ‚ญใƒผไธ่ฆ๏ผ‰ + +```bash +# ใ‚นใ‚ญใƒซใ‚’ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ +skill-seekers package output/react/ +# โ†’ output/react.zip ใŒไฝœๆˆใ•ใ‚Œใพใ™ + +# ๆ‰‹ๅ‹•ใงใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰๏ผš +# - https://claude.ai/skills ใซใ‚ขใ‚ฏใ‚ปใ‚น +# - ใ€Œใ‚นใ‚ญใƒซใ‚’ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ€ใ‚’ใ‚ฏใƒชใƒƒใ‚ฏ +# - output/react.zip ใ‚’้ธๆŠž +``` + +### ใ‚ชใƒ—ใ‚ทใƒงใƒณ 3๏ผšMCP๏ผˆClaude Code๏ผ‰ + +``` +Claude Code ใง็›ดๆŽฅ่žใใ ใ‘๏ผš +ใ€ŒReact ใ‚นใ‚ญใƒซใ‚’ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ—ใฆใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ใ—ใฆใ€ +``` + +--- + +## ๐Ÿค– AI ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใธใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซ + +Skill Seekers ใฏ 19 ใฎ AI ใ‚ณใƒผใƒ‡ใ‚ฃใƒณใ‚ฐใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซใ‚นใ‚ญใƒซใ‚’่‡ชๅ‹•ใ‚คใƒณใ‚นใƒˆใƒผใƒซใงใใพใ™ใ€‚ + +```bash +# ็‰นๅฎšใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซใ‚คใƒณใ‚นใƒˆใƒผใƒซ +skill-seekers install-agent output/react/ --agent cursor + +# IBM Bob ใซใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒญใƒผใ‚ซใƒซใฎ .bob/skills/๏ผ‰ +skill-seekers install-agent output/react/ --agent bob + +# ใ™ในใฆใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใซไธ€ๆ‹ฌใ‚คใƒณใ‚นใƒˆใƒผใƒซ +skill-seekers install-agent output/react/ --agent all + +# ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ›ใšใซใƒ—ใƒฌใƒ“ใƒฅใƒผ +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### ใ‚ตใƒใƒผใƒˆใ•ใ‚Œใ‚‹ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ + +| ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ | ใƒ‘ใ‚น | ใ‚ฟใ‚คใƒ— | +|------------|------|-------| +| **Claude Code** | `~/.claude/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Cursor** | `.cursor/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **VS Code / Copilot** | `.github/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **Amp** | `~/.amp/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Goose** | `~/.config/goose/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **OpenCode** | `~/.opencode/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Windsurf** | `~/.windsurf/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Roo Code** | `.roo/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **Cline** | `.cline/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **Aider** | `~/.aider/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Bolt** | `.bolt/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **Kilo Code** | `.kilo/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | +| **Continue** | `~/.continue/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **Kimi Code** | `~/.kimi/skills/` | ใ‚ฐใƒญใƒผใƒใƒซ | +| **IBM Bob** | `.bob/skills/` | ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆ | + +--- + +## ๐Ÿ”Œ MCP ็ตฑๅˆ๏ผˆ40 ใƒ„ใƒผใƒซ๏ผ‰ + +Skill Seekers ใฏ Claude Codeใ€Cursorใ€Windsurfใ€VS Code + Clineใ€IntelliJ IDEA ใงไฝฟ็”จใงใใ‚‹ MCP ใ‚ตใƒผใƒใƒผใ‚’ๆไพ›ใ—ใพใ™ใ€‚ + +```bash +# stdio ใƒขใƒผใƒ‰๏ผˆClaude Codeใ€VS Code + Cline๏ผ‰ +python -m skill_seekers.mcp.server_fastmcp + +# HTTP ใƒขใƒผใƒ‰๏ผˆCursorใ€Windsurfใ€IntelliJ๏ผ‰ +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# ใ™ในใฆใฎใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใ‚’ไธ€ๆ‹ฌ่‡ชๅ‹•่จญๅฎš +./setup_mcp.sh +``` + +**ๅˆฉ็”จๅฏ่ƒฝใชๅ…จ 40 ใƒ„ใƒผใƒซ๏ผš** +- **ใ‚ณใ‚ข๏ผˆ9๏ผ‰๏ผš** `list_configs`ใ€`generate_config`ใ€`validate_config`ใ€`estimate_pages`ใ€`scrape_docs`ใ€`package_skill`ใ€`upload_skill`ใ€`enhance_skill`ใ€`install_skill` +- **ๆ‹กๅผต๏ผˆ10๏ผ‰๏ผš** `scrape_github`ใ€`scrape_pdf`ใ€`unified_scrape`ใ€`merge_sources`ใ€`detect_conflicts`ใ€`add_config_source`ใ€`fetch_config`ใ€`list_config_sources`ใ€`remove_config_source`ใ€`split_config` +- **ใƒ™ใ‚ฏใƒˆใƒซ DB๏ผˆ4๏ผ‰๏ผš** `export_to_chroma`ใ€`export_to_weaviate`ใ€`export_to_faiss`ใ€`export_to_qdrant` +- **ใ‚ฏใƒฉใ‚ฆใƒ‰๏ผˆ3๏ผ‰๏ผš** `cloud_upload`ใ€`cloud_download`ใ€`cloud_list` + +**ๅฎŒๅ…จใ‚ฌใ‚คใƒ‰๏ผš** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ ่จญๅฎš + +### ๅˆฉ็”จๅฏ่ƒฝใชใƒ—ใƒชใ‚ปใƒƒใƒˆ๏ผˆ24 ไปฅไธŠ๏ผ‰ + +```bash +# ใ™ในใฆใฎใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’ไธ€่ฆง่กจ็คบ +# skill-seekers list-configs # v3.7.0 ใงใฏๅˆฉ็”จไธๅฏ +``` + +| ใ‚ซใƒ†ใ‚ดใƒช | ใƒ—ใƒชใ‚ปใƒƒใƒˆ | +|---------|----------| +| **Web ใƒ•ใƒฌใƒผใƒ ใƒฏใƒผใ‚ฏ** | `react`ใ€`vue`ใ€`angular`ใ€`svelte`ใ€`nextjs` | +| **Python** | `django`ใ€`flask`ใ€`fastapi`ใ€`sqlalchemy`ใ€`pytest` | +| **ใ‚ฒใƒผใƒ ้–‹็™บ** | `godot`ใ€`pygame`ใ€`unity` | +| **ใƒ„ใƒผใƒซ & DevOps** | `docker`ใ€`kubernetes`ใ€`terraform`ใ€`ansible` | +| **็ตฑๅˆ๏ผˆใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + GitHub๏ผ‰** | `react-unified`ใ€`vue-unified`ใ€`nextjs-unified` ใชใฉ | + +### ็‹ฌ่‡ชใฎ่จญๅฎšใ‚’ไฝœๆˆ + +```bash +# ใ‚ชใƒ—ใ‚ทใƒงใƒณ 1๏ผšๅฏพ่ฉฑๅผ +skill-seekers create --interactive + +# ใ‚ชใƒ—ใ‚ทใƒงใƒณ 2๏ผšใƒ—ใƒชใ‚ปใƒƒใƒˆใ‚’ใ‚ณใƒ”ใƒผใ—ใฆ็ทจ้›† +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใฎๆง‹้€  + +```json +{ + "name": "myframework", + "description": "ใ“ใฎใ‚นใ‚ญใƒซใ‚’ไฝฟ็”จใ™ใ‚‹ใ‚ฟใ‚คใƒŸใƒณใ‚ฐ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### ่จญๅฎšใฎไฟๅญ˜ๅ ดๆ‰€ + +ใƒ„ใƒผใƒซใฏไปฅไธ‹ใฎ้ †ๅบใงๆคœ็ดขใ—ใพใ™๏ผš +1. ๆŒ‡ๅฎšใ•ใ‚ŒใŸๆญฃ็ขบใชใƒ‘ใ‚น +2. `./configs/`๏ผˆใ‚ซใƒฌใƒณใƒˆใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช๏ผ‰ +3. `~/.config/skill-seekers/configs/`๏ผˆใƒฆใƒผใ‚ถใƒผ่จญๅฎšใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช๏ผ‰ +4. SkillSeekersWeb.com API๏ผˆใƒ—ใƒชใ‚ปใƒƒใƒˆ่จญๅฎš๏ผ‰ + +--- + +## ๐Ÿ“Š ไฝœๆˆใ•ใ‚Œใ‚‹ใ‚‚ใฎ + +``` +output/ +โ”œโ”€โ”€ godot_data/ # ใ‚นใ‚ฏใƒฌใ‚คใƒ—ใ•ใ‚ŒใŸ็”Ÿใƒ‡ใƒผใ‚ฟ +โ”‚ โ”œโ”€โ”€ pages/ # JSON ใƒ•ใ‚กใ‚คใƒซ๏ผˆใƒšใƒผใ‚ธใ”ใจใซ 1 ใค๏ผ‰ +โ”‚ โ””โ”€โ”€ summary.json # ๆฆ‚่ฆ +โ”‚ +โ””โ”€โ”€ godot/ # ใ‚นใ‚ญใƒซใƒ•ใ‚กใ‚คใƒซ + โ”œโ”€โ”€ SKILL.md # ๅฎŸ้š›ใฎใ‚ตใƒณใƒ—ใƒซไป˜ใๅผทๅŒ–็‰ˆ + โ”œโ”€โ”€ references/ # ใ‚ซใƒ†ใ‚ดใƒชๅˆ†้กžใ•ใ‚ŒใŸใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # ็ฉบ๏ผˆ็‹ฌ่‡ชใฎใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’่ฟฝๅŠ ๅฏ่ƒฝ๏ผ‰ + โ””โ”€โ”€ assets/ # ็ฉบ๏ผˆ็‹ฌ่‡ชใฎใ‚ขใ‚ปใƒƒใƒˆใ‚’่ฟฝๅŠ ๅฏ่ƒฝ๏ผ‰ +``` + +--- + +## ๐Ÿ› ใƒˆใƒฉใƒ–ใƒซใ‚ทใƒฅใƒผใƒ†ใ‚ฃใƒณใ‚ฐ + +### ใ‚ณใƒณใƒ†ใƒณใƒ„ใŒๆŠฝๅ‡บใ•ใ‚Œใชใ„ๅ ดๅˆ +- `main_content` ใ‚ปใƒฌใ‚ฏใ‚ฟใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ +- ่ฉฆใ—ใฆใฟใฆใใ ใ•ใ„๏ผš`article`ใ€`main`ใ€`div[role="main"]` + +### ใƒ‡ใƒผใ‚ฟใฏใ‚ใ‚‹ใฎใซไฝฟ็”จใ•ใ‚Œใชใ„ๅ ดๅˆ +```bash +# ๅผทๅˆถๅ†ใ‚นใ‚ฏใƒฌใ‚คใƒ— +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ใ‚ซใƒ†ใ‚ดใƒชๅˆ†้กžใŒไธ้ฉๅˆ‡ใชๅ ดๅˆ +่จญๅฎšใฎ `categories` ใ‚ปใ‚ฏใ‚ทใƒงใƒณใ‚’ใ‚ˆใ‚Š้ฉๅˆ‡ใชใ‚ญใƒผใƒฏใƒผใƒ‰ใง็ทจ้›†ใ—ใฆใใ ใ•ใ„ใ€‚ + +### ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใ‚’ๆ›ดๆ–ฐใ—ใŸใ„ๅ ดๅˆ +```bash +# ๅคใ„ใƒ‡ใƒผใ‚ฟใ‚’ๅ‰Š้™คใ—ใฆๅ†ใ‚นใ‚ฏใƒฌใ‚คใƒ— +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ๅผทๅŒ–ใŒๅ‹•ไฝœใ—ใชใ„ๅ ดๅˆ +```bash +# API ใ‚ญใƒผใŒ่จญๅฎšใ•ใ‚Œใฆใ„ใ‚‹ใ‹็ขบ่ช +echo $ANTHROPIC_API_KEY + +# LOCAL ใƒขใƒผใƒ‰ใ‚’่ฉฆใ™๏ผˆClaude Code Max ใ‚’ไฝฟ็”จใ€API ใ‚ญใƒผไธ่ฆ๏ผ‰ +skill-seekers enhance output/react/ --mode LOCAL + +# ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ๅผทๅŒ–ใฎ็Šถๆ…‹ใ‚’็›ฃ่ฆ– +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub ใƒฌใƒผใƒˆๅˆถ้™ใฎๅ•้กŒ๏ผŸ +```bash +# GitHub ใƒˆใƒผใ‚ฏใƒณใ‚’่จญๅฎš๏ผˆๅŒฟๅ 60 ๅ›ž/ๆ™‚้–“ โ†’ 5000 ๅ›ž/ๆ™‚้–“๏ผ‰ +export GITHUB_TOKEN=ghp_your_token_here + +# ใพใŸใฏ่ค‡ๆ•ฐใฎใƒ—ใƒญใƒ•ใ‚กใ‚คใƒซใ‚’่จญๅฎš +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚น + +| ใ‚ฟใ‚นใ‚ฏ | ๆ™‚้–“ | ๅ‚™่€ƒ | +|-------|------|------| +| ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ๏ผˆๅŒๆœŸ๏ผ‰| 15ใ€œ45 ๅˆ† | ๅˆๅ›žใฎใฟใ€ใ‚นใƒฌใƒƒใƒ‰ใƒ™ใƒผใ‚น | +| ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ๏ผˆ้žๅŒๆœŸ๏ผ‰| 5ใ€œ15 ๅˆ† | `--async` ใƒ•ใƒฉใ‚ฐใง 2ใ€œ3 ๅ€้ซ˜้€Ÿ | +| ใƒ“ใƒซใƒ‰ | 1ใ€œ3 ๅˆ† | ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ‹ใ‚‰ใฎ้ซ˜้€Ÿใƒชใƒ“ใƒซใƒ‰ | +| ใƒชใƒ“ใƒซใƒ‰ | 1 ๅˆ†ๆœชๆบ€ | `--skip-scrape` ไฝฟ็”จๆ™‚ | +| ๅผทๅŒ–๏ผˆLOCAL๏ผ‰| 30ใ€œ60 ็ง’ | Claude Code Max ใ‚’ไฝฟ็”จ | +| ๅผทๅŒ–๏ผˆAPI๏ผ‰| 20ใ€œ40 ็ง’ | API ใ‚ญใƒผใŒๅฟ…่ฆ | +| ๅ‹•็”ป๏ผˆๅญ—ๅน•๏ผ‰| 1ใ€œ3 ๅˆ† | YouTube/ใƒญใƒผใ‚ซใƒซใ€ๅญ—ๅน•ใฎใฟ | +| ๅ‹•็”ป๏ผˆใƒ“ใ‚ธใƒฅใ‚ขใƒซ๏ผ‰| 5ใ€œ15 ๅˆ† | + OCR ใƒ•ใƒฌใƒผใƒ ๆŠฝๅ‡บ | +| ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ | 5ใ€œ10 ็ง’ | ๆœ€็ต‚ .zip ใฎไฝœๆˆ | + +--- + +## ๐Ÿ†• v3.6.0 ใฎๆ–ฐๆฉŸ่ƒฝ + +### ใƒฏใƒผใ‚ฏใƒ•ใƒญใƒผใƒ—ใƒชใ‚ปใƒƒใƒˆ +`--preset` ใงๅˆ†ๆžใฎๆทฑใ•ใ‚’ๅˆถๅพก๏ผš + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # ้ซ˜้€Ÿใ€่กจ้ขใƒฌใƒ™ใƒซ +skill-seekers create https://docs.react.dev/ --preset standard # ใƒใƒฉใƒณใ‚น๏ผˆใƒ‡ใƒ•ใ‚ฉใƒซใƒˆ๏ผ‰ +skill-seekers create https://docs.react.dev/ --preset comprehensive # ๆทฑใใ€็ถฒ็พ…็š„ +``` + +### ใƒฉใ‚คใƒ•ใ‚ตใ‚คใ‚ฏใƒซใƒ•ใƒฉใ‚ฐ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐใชใ—ใงใƒ—ใƒฌใƒ“ใƒฅใƒผ +skill-seekers create https://docs.react.dev/ --fresh # ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ‚’็„ก่ฆ–ใ—ใฆๅฎŒๅ…จใซๅ†ใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +skill-seekers create https://docs.react.dev/ --resume # ไธญๆ–ญใ—ใŸใ‚ธใƒงใƒ–ใ‚’ๅ†้–‹ +skill-seekers create https://docs.react.dev/ --skip-scrape # ๆ—ขๅญ˜ใฎๅ‡บๅŠ›ใ‚’ๅ†ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ +``` + +### ใƒ˜ใƒซใ‚นใƒใ‚งใƒƒใ‚ฏใจใƒฆใƒผใƒ†ใ‚ฃใƒชใƒ†ใ‚ฃ +```bash +skill-seekers doctor # ใ‚คใƒณใ‚นใƒˆใƒผใƒซใจ็’ฐๅขƒใฎ่จบๆ–ญ +skill-seekers sync-config # ่จญๅฎšใฎใƒ‰ใƒชใƒ•ใƒˆๆคœๅ‡บ +skill-seekers stream # ๅคง่ฆๆจกใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใฎใ‚นใƒˆใƒชใƒผใƒŸใƒณใ‚ฐๅ–ใ‚Š่พผใฟ +skill-seekers update output/react/ # ๅข—ๅˆ†ๆ›ดๆ–ฐ +skill-seekers multilang # ๅคš่จ€่ชžใ‚นใ‚ญใƒซ็”Ÿๆˆ +skill-seekers quality output/react/ # ๅ“่ณชใƒฌใƒใƒผใƒˆ๏ผˆ--threshold 7 ใงใ‚ฒใƒผใƒˆๅŒ–: 7/10 ๆœชๆบ€ใชใ‚‰้žใ‚ผใƒญ็ต‚ไบ†๏ผ‰ +``` + +### RAG ใƒใƒฃใƒณใ‚ญใƒณใ‚ฐใ‚ชใƒ—ใ‚ทใƒงใƒณ๏ผˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ๏ผ‰ +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### ใƒžใƒผใ‚ฑใƒƒใƒˆใƒ—ใƒฌใ‚คใ‚นๅ…ฌ้–‹ +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### ่ฟฝๅŠ ใฎใ‚ชใƒ—ใ‚ทใƒงใƒณไพๅญ˜้–ขไฟ‚ +| Extra | ใ‚คใƒณใ‚นใƒˆใƒผใƒซ | ็”จ้€” | +|-------|---------|---------| +| `browser` | `pip install "skill-seekers[browser]"` | SPA ใ‚ตใ‚คใƒˆๅ‘ใ‘ใƒ˜ใƒƒใƒ‰ใƒฌใ‚น Playwright | +| `embedding` | `pip install "skill-seekers[embedding]"` | ใ‚จใƒณใƒ™ใƒ‡ใ‚ฃใƒณใ‚ฐใ‚ตใƒผใƒใƒผใ‚ตใƒใƒผใƒˆ | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` ใชใฉ | ใ‚ฏใƒฉใ‚ฆใƒ‰ใ‚นใƒˆใƒฌใƒผใ‚ธใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | ใƒ™ใ‚ฏใƒˆใƒซ DB ใ‚ขใƒƒใƒ—ใƒญใƒผใƒ‰ไพๅญ˜้–ขไฟ‚ไธ€ๅผ | + +--- + +## ๐Ÿ“š ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆ + +### ใฏใ˜ใ‚ใซ +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **ๅˆใ‚ใฆใฎๆ–นใฏใ“ใกใ‚‰ใ‹ใ‚‰๏ผ** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - ็ตŒ้จ“่€…ๅ‘ใ‘ใ‚ฏใ‚คใƒƒใ‚ฏใ‚นใ‚ฟใƒผใƒˆ +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - ใ‚ˆใใ‚ใ‚‹ๅ•้กŒใจ่งฃๆฑบ็ญ– +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - 1 ใƒšใƒผใ‚ธใƒใƒผใƒˆใ‚ทใƒผใƒˆ + +### ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - 14 ใฎๅ›ณใซใ‚ˆใ‚‹ UML ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃๆฆ‚่ฆ +- **[docs/UML/exports/](docs/UML/exports/)** - PNG ๅ›ณใ‚จใ‚ฏใ‚นใƒใƒผใƒˆ๏ผˆใƒ‘ใƒƒใ‚ฑใƒผใ‚ธๆฆ‚่ฆ + 13 ใฎใ‚ฏใƒฉใ‚นๅ›ณ๏ผ‰ +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - ๅฎŒๅ…จใช HTML API ใƒชใƒ•ใ‚กใƒฌใƒณใ‚น๏ผˆๅ…จใ‚ฏใƒฉใ‚นใ€ๆ“ไฝœใ€ๅฑžๆ€ง๏ผ‰ +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒ•ใ‚กใ‚คใƒซ๏ผˆ[StarUML](https://staruml.io/) ใง้–‹ใ๏ผ‰ + +### ใ‚ฌใ‚คใƒ‰ +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - 10Kใ€œ40K ไปฅไธŠใฎใƒšใƒผใ‚ธใฎๅ‡ฆ็† +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI ๅผทๅŒ–ใƒขใƒผใƒ‰ใ‚ฌใ‚คใƒ‰ +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP ็ตฑๅˆใ‚ปใƒƒใƒˆใ‚ขใƒƒใƒ— +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - ใƒžใƒซใƒใ‚ฝใƒผใ‚นใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐ +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - ๅ‹•็”ปๆŠฝๅ‡บๅฎŒๅ…จใ‚ฌใ‚คใƒ‰ + +### ็ตฑๅˆใ‚ฌใ‚คใƒ‰ +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline๏ผˆVS Code๏ผ‰ +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - ใ™ในใฆใฎ RAG ใƒ‘ใ‚คใƒ—ใƒฉใ‚คใƒณ + +--- + +## ๐Ÿ“ ใƒฉใ‚คใ‚ปใƒณใ‚น + +MIT ใƒฉใ‚คใ‚ปใƒณใ‚น - ่ฉณ็ดฐใฏ [LICENSE](LICENSE) ใƒ•ใ‚กใ‚คใƒซใ‚’ๅ‚็…งใ—ใฆใใ ใ•ใ„ + +--- + +ใ‚นใ‚ญใƒซๆง‹็ฏ‰ใ‚’ใŠๆฅฝใ—ใฟใใ ใ•ใ„๏ผ ๐Ÿš€ + +--- + +## ๐Ÿ”’ ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ + +[![MseeP.ai ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ่ฉ•ไพกใƒใƒƒใ‚ธ](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› ใ‚นใƒใƒณใ‚ตใƒผ + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” ใƒ•ใƒซใƒขใƒผใƒ€ใƒซใง OpenAI ไบ’ๆ›ใฎ AI ๆŽจ่ซ–ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ ใ€‚Skill Seekers ใฏ `--target atlas` ใจ `ATLAS_API_KEY` ใซใ‚ˆใ‚‹ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใƒณใ‚ฐ/ๅผทๅŒ–ใ‚ฟใƒผใ‚ฒใƒƒใƒˆใจใ—ใฆใ‚ตใƒใƒผใƒˆใ—ใฆใ„ใพใ™ใ€‚ diff --git a/README.ko.md b/README.ko.md new file mode 100644 index 0000000..22e255e --- /dev/null +++ b/README.ko.md @@ -0,0 +1,1376 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | ํ•œ๊ตญ์–ด | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **๊ธฐ๊ณ„ ๋ฒˆ์—ญ ์•ˆ๋‚ด** +> +> ์ด ๋ฌธ์„œ๋Š” AI์— ์˜ํ•ด ์ž๋™ ๋ฒˆ์—ญ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฒˆ์—ญ ํ’ˆ์งˆ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์œผ๋‚˜ ๋ถ€์ •ํ™•ํ•œ ํ‘œํ˜„์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. +> +> ๋ฒˆ์—ญ ๊ฐœ์„ ์— ๋„์›€์„ ์ฃผ์‹œ๋ ค๋ฉด [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260)์— ์ฐธ์—ฌํ•ด ์ฃผ์„ธ์š”! ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”ผ๋“œ๋ฐฑ์€ ๋งค์šฐ ์†Œ์ค‘ํ•ฉ๋‹ˆ๋‹ค. + +[![๋ฒ„์ „](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![๋ผ์ด์„ ์Šค: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP ํ†ตํ•ฉ](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![ํ…Œ์ŠคํŠธ ํ†ต๊ณผ](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![ํ”„๋กœ์ ํŠธ ๋ณด๋“œ](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI ๋ฒ„์ „](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ๋‹ค์šด๋กœ๋“œ](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python ๋ฒ„์ „](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![๊ณต์‹ ์›น์‚ฌ์ดํŠธ](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter ํŒ”๋กœ์šฐ](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  AI ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด.** Skill Seekers๋Š” ๋ฌธ์„œ ์‚ฌ์ดํŠธ, GitHub ์ €์žฅ์†Œ, PDF, ๋™์˜์ƒ, ๋…ธํŠธ๋ถ, ์œ„ํ‚ค ๋“ฑ 18๊ฐ€์ง€ ์†Œ์Šค ์œ ํ˜•์„ ๊ตฌ์กฐํ™”๋œ ์ง€์‹ ์ž์‚ฐ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ ๋ช‡ ๋ถ„ ๋งŒ์— AI ์Šคํ‚ฌ(Claude, Gemini, OpenAI), RAG ํŒŒ์ดํ”„๋ผ์ธ(LangChain, LlamaIndex, Pinecone), AI ์ฝ”๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ(Cursor, Windsurf, Cline)์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +> ๐ŸŒ **[SkillSeekersWeb.com ๋ฐฉ๋ฌธํ•˜๊ธฐ](https://skillseekersweb.com/)** - 24๊ฐœ ์ด์ƒ์˜ ํ”„๋ฆฌ์…‹ ์„ค์ •์„ ๋‘˜๋Ÿฌ๋ณด๊ณ , ์„ค์ •์„ ๊ณต์œ ํ•˜๊ณ , ์ „์ฒด ๋ฌธ์„œ์— ์ ‘๊ทผํ•˜์„ธ์š”! + +> ๐Ÿ“‹ **[๊ฐœ๋ฐœ ๋กœ๋“œ๋งต ๋ฐ ์ž‘์—… ๋ณด๊ธฐ](https://github.com/users/yusufkaraaslan/projects/2)** - 10๊ฐœ ์นดํ…Œ๊ณ ๋ฆฌ์— ๊ฑธ์นœ 134๊ฐœ ์ž‘์—…, ์›ํ•˜๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜์—ฌ ๊ธฐ์—ฌํ•˜์„ธ์š”! + +## ๐ŸŒ ์—์ฝ”์‹œ์Šคํ…œ + +Skill Seekers๋Š” ๋‹ค์ค‘ ์ €์žฅ์†Œ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ๊ฐ ์ €์žฅ์†Œ์˜ ์—ญํ• : + +| ์ €์žฅ์†Œ | ์„ค๋ช… | ๋งํฌ | +|--------|------|------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | ํ•ต์‹ฌ CLI & MCP ์„œ๋ฒ„ (์ด ์ €์žฅ์†Œ) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | ์›น์‚ฌ์ดํŠธ & ๋ฌธ์„œ | [์‚ฌ์ดํŠธ](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | ์ปค๋ฎค๋‹ˆํ‹ฐ ์„ค์ • ์ €์žฅ์†Œ | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | macOS Homebrew tap | | + +> **๊ธฐ์—ฌํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”?** ์›น์‚ฌ์ดํŠธ์™€ ์„ค์ • ์ €์žฅ์†Œ๋Š” ์ƒˆ ๊ธฐ์—ฌ์ž์—๊ฒŒ ์ข‹์€ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค! + +## ๐Ÿง  AI ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด + +**Skill Seekers๋Š” ๋ฒ”์šฉ ์ „์ฒ˜๋ฆฌ ๋ ˆ์ด์–ด**๋กœ, ์›์‹œ ๋ฌธ์„œ์™€ ์ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ชจ๋“  AI ์‹œ์Šคํ…œ ์‚ฌ์ด์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. Claude ์Šคํ‚ฌ์„ ๊ตฌ์ถ•ํ•˜๋“ , LangChain RAG ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค๋“ , Cursor `.cursorrules` ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋“  โ€” ๋ฐ์ดํ„ฐ ์ค€๋น„ ์ž‘์—…์€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ชจ๋“  ๋Œ€์ƒ ํ”Œ๋žซํผ์œผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +```bash +# ํ•œ ์ค„ ๋ช…๋ น โ†’ ๊ตฌ์กฐํ™”๋œ ์ง€์‹ ์ž์‚ฐ +skill-seekers create https://docs.react.dev/ +# ๋˜๋Š”: skill-seekers create facebook/react +# ๋˜๋Š”: skill-seekers create ./my-project + +# ๋ชจ๋“  AI ์‹œ์Šคํ…œ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ +skill-seekers package output/react --target claude # โ†’ Claude AI ์Šคํ‚ฌ (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob ์Šคํ‚ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ +``` + +### ์ƒ์„ฑ๋˜๋Š” ์ถœ๋ ฅ๋ฌผ + +| ์ถœ๋ ฅ | ๋Œ€์ƒ | ํ™œ์šฉ ๋ถ„์•ผ | +|------|------|----------| +| **Claude ์Šคํ‚ฌ** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini ์Šคํ‚ฌ** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, ์ปค์Šคํ…€ ์–ด์‹œ์Šคํ„ดํŠธ | +| **LangChain Documents** | `--target langchain` | QA ์ฒด์ธ, ์—์ด์ „ํŠธ, ๋ฆฌํŠธ๋ฆฌ๋ฒ„ | +| **LlamaIndex TextNodes** | `--target llama-index` | ์ฟผ๋ฆฌ ์—”์ง„, ๋Œ€ํ™” ์—”์ง„ | +| **Haystack Documents** | `--target haystack` | ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ RAG ํŒŒ์ดํ”„๋ผ์ธ | +| **Pinecone ์ค€๋น„ ์™„๋ฃŒ** (Markdown) | `--target markdown` | ๋ฒกํ„ฐ ์—…์„œํŠธ | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | ๋กœ์ปฌ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค | +| **IBM Bob ์Šคํ‚ฌ** (๋””๋ ‰ํ„ฐ๋ฆฌ) | `--target ibm-bob` | IBM Bob ํ”„๋กœ์ ํŠธ/์ „์—ญ ์Šคํ‚ฌ | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ SKILL.md ๋ณต์‚ฌ | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ ๋ณต์‚ฌ | VS Code, IntelliJ, Vim | + +### Skill Seekers๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š” ์ด์œ  + +- โšก **99% ๋” ๋น ๋ฆ„** โ€” ์ˆ˜์ผ ๊ฐ„์˜ ์ˆ˜๋™ ๋ฐ์ดํ„ฐ ์ค€๋น„ โ†’ 15โ€“45๋ถ„ +- ๐ŸŽฏ **AI ์Šคํ‚ฌ ํ’ˆ์งˆ** โ€” ์˜ˆ์ œ, ํŒจํ„ด, ๊ฐ€์ด๋“œ๋ฅผ ํฌํ•จํ•œ 500์ค„ ์ด์ƒ์˜ SKILL.md ํŒŒ์ผ +- ๐Ÿ“Š **RAG ์ค€๋น„ ์™„๋ฃŒ ์ฒญํ‚น** โ€” ์ฝ”๋“œ ๋ธ”๋ก์„ ๋ณด์กดํ•˜๊ณ  ์ปจํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์Šค๋งˆํŠธ ์ฒญํ‚น +- ๐ŸŽฌ **๋™์˜์ƒ** โ€” YouTube ๋ฐ ๋กœ์ปฌ ๋™์˜์ƒ์—์„œ ์ฝ”๋“œ, ์ž๋ง‰, ๊ตฌ์กฐํ™”๋œ ์ง€์‹ ์ถ”์ถœ +- ๐Ÿ”„ **๋‹ค์ค‘ ์†Œ์Šค** โ€” 18๊ฐ€์ง€ ์†Œ์Šค ์œ ํ˜•(๋ฌธ์„œ, GitHub, PDF, ๋™์˜์ƒ, ๋…ธํŠธ๋ถ, ์œ„ํ‚ค ๋“ฑ)์„ ํ•˜๋‚˜์˜ ์ง€์‹ ์ž์‚ฐ์œผ๋กœ ๊ฒฐํ•ฉ +- ๐ŸŒ **ํ•œ ๋ฒˆ ์ค€๋น„, ๋ชจ๋“  ๋Œ€์ƒ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ** โ€” ์žฌ์Šคํฌ๋ž˜ํ•‘ ์—†์ด ๋™์ผํ•œ ์ž์‚ฐ์„ 21๊ฐœ ํ”Œ๋žซํผ์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ +- โœ… **์‹ค์ „ ๊ฒ€์ฆ ์™„๋ฃŒ** โ€” 3,700+ ํ…Œ์ŠคํŠธ, 24+ ํ”„๋ ˆ์ž„์›Œํฌ ํ”„๋ฆฌ์…‹, ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์™„๋ฃŒ + +## ๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘ (3๊ฐ€์ง€ ๋ช…๋ น์–ด) + +```bash +# 1. ์„ค์น˜ +pip install skill-seekers + +# 2. ๋ชจ๋“  ์†Œ์Šค์—์„œ ์Šคํ‚ฌ ์ƒ์„ฑ +skill-seekers create https://docs.django.com/ + +# 3. AI ํ”Œ๋žซํผ์šฉ์œผ๋กœ ํŒจํ‚ค์ง• +skill-seekers package output/django --target claude +``` + +**์ด๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค!** ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” `output/django-claude.zip`์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. + +```bash +# ๊ฐ•ํ™”์— ๋‹ค๋ฅธ AI ์—์ด์ „ํŠธ ์‚ฌ์šฉ (๊ธฐ๋ณธ๊ฐ’: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI ๊ธฐ๋ฐ˜ ํ”„๋กœ์ ํŠธ ์Šค์บ” (์‹ ๊ทœ) + +์ž„์˜์˜ ํ”„๋กœ์ ํŠธ์— `scan`์„ ์‹คํ–‰ํ•˜๋ฉด AI ์—์ด์ „ํŠธ๊ฐ€ ๋งค๋‹ˆํŽ˜์ŠคํŠธ, README, Dockerfile/CI, ์ƒ˜ํ”Œ๋ง๋œ ์†Œ์Šค import๋ฅผ ์ฝ๊ณ  โ€” ๊ฐ์ง€๋œ ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ์„ค์ • ํŒŒ์ผ๊ณผ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ `-codebase.json`์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์ง€๋œ ๋ฒ„์ „์„ ๊ณ ์ •ํ•˜๋ฏ€๋กœ ์žฌ์‹คํ–‰ ์‹œ ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# ์ดํ›„ ์›ํ•˜๋Š” ๊ฒƒ์„ ๋นŒ๋“œ +skill-seekers create ./configs/scanned/react.json +``` + +๊ฐ์ง€ ๊ฒฐ๊ณผ์— ๊ธฐ์กด ํ”„๋ฆฌ์…‹์ด ์—†์œผ๋ฉด AI๊ฐ€ ์ƒˆ ์„ค์ •์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ข…๋ฃŒ ์‹œ [์ปค๋ฎค๋‹ˆํ‹ฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ](https://github.com/yusufkaraaslan/skill-seekers-configs)์— ์„ ํƒ์ ์œผ๋กœ ๊ฒŒ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +### ๊ธฐํƒ€ ์†Œ์Šค (18๊ฐ€์ง€ ์ง€์›) + +```bash +# GitHub ์ €์žฅ์†Œ +skill-seekers create facebook/react + +# ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ +skill-seekers create ./my-project + +# PDF ๋ฌธ์„œ +skill-seekers create manual.pdf + +# Word ๋ฌธ์„œ +skill-seekers create report.docx + +# EPUB ์ „์ž์ฑ… +skill-seekers create book.epub + +# Jupyter ๋…ธํŠธ๋ถ +skill-seekers create notebook.ipynb + +# OpenAPI ์ŠคํŽ™ +skill-seekers create openapi.yaml + +# PowerPoint ํ”„๋ ˆ์  ํ…Œ์ด์…˜ +skill-seekers create presentation.pptx + +# AsciiDoc ๋ฌธ์„œ +skill-seekers create guide.adoc + +# ๋กœ์ปฌ HTML ํŒŒ์ผ (ํ™•์žฅ์ž๋กœ ์ž๋™ ๊ฐ์ง€) +skill-seekers create page.html + +# HTML ํŒŒ์ผ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ „์ฒด (HTML ์œ„์ฃผ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ž๋™ ๊ฐ์ง€) +skill-seekers create ./mirror_output/site/ + +# ์ฝ”๋“œ๊ฐ€ ์„ž์ธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ HTML ๋ชจ๋“œ ๊ฐ•์ œ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom ํ”ผ๋“œ +skill-seekers create feed.rss + +# Man ํŽ˜์ด์ง€ +skill-seekers create curl.1 + +# ๋™์˜์ƒ (YouTube, Vimeo ๋˜๋Š” ๋กœ์ปฌ ํŒŒ์ผ โ€” skill-seekers[video] ํ•„์š”) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ์ฒ˜์Œ ์‚ฌ์šฉํ•˜์‹œ๋‚˜์š”? GPU ์ธ์‹ ์‹œ๊ฐ ์ข…์†์„ฑ ์ž๋™ ์„ค์น˜: +skill-seekers create --setup + +# Confluence ์œ„ํ‚ค +skill-seekers create --space-key TEAM --name wiki + +# Notion ํŽ˜์ด์ง€ +skill-seekers create --database-id ... --name docs + +# Slack/Discord ์ฑ„ํŒ… ๋‚ด๋ณด๋‚ด๊ธฐ +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### ์–ด๋””๋กœ๋“  ๋‚ด๋ณด๋‚ด๊ธฐ + +```bash +# ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์šฉ์œผ๋กœ ํŒจํ‚ค์ง• +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Skill Seekers๋ž€? + +Skill Seekers๋Š” **AI ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด**๋กœ, 18๊ฐ€์ง€ ์†Œ์Šค ์œ ํ˜• โ€” ๋ฌธ์„œ ์‚ฌ์ดํŠธ, GitHub ์ €์žฅ์†Œ, PDF, ๋™์˜์ƒ, Jupyter ๋…ธํŠธ๋ถ, Word/EPUB/AsciiDoc ๋ฌธ์„œ, OpenAPI ์ŠคํŽ™, PowerPoint ํ”„๋ ˆ์  ํ…Œ์ด์…˜, RSS ํ”ผ๋“œ, Man ํŽ˜์ด์ง€, Confluence ์œ„ํ‚ค, Notion ํŽ˜์ด์ง€, Slack/Discord ๋‚ด๋ณด๋‚ด๊ธฐ ๋“ฑ โ€” ์„ ๋ชจ๋“  AI ๋Œ€์ƒ์— ์ ํ•ฉํ•œ ๊ตฌ์กฐํ™”๋œ ์ง€์‹ ์ž์‚ฐ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค: + +| ์‚ฌ์šฉ ์‚ฌ๋ก€ | ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ | ์˜ˆ์‹œ | +|----------|---------------|------| +| **AI ์Šคํ‚ฌ** | ์™„์ „ํ•œ SKILL.md + ์ฐธ์กฐ ํŒŒ์ผ | Claude Code, Gemini, GPT | +| **RAG ํŒŒ์ดํ”„๋ผ์ธ** | ํ’๋ถ€ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ์ฒญํฌ ๋ฌธ์„œ | LangChain, LlamaIndex, Haystack | +| **๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค** | ์—…์„œํŠธ ์ค€๋น„ ์™„๋ฃŒ๋œ ์‚ฌ์ „ ํฌ๋งท ๋ฐ์ดํ„ฐ | Pinecone, Chroma, Weaviate, FAISS | +| **AI ์ฝ”๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ** | IDE AI๊ฐ€ ์ž๋™์œผ๋กœ ์ฝ๋Š” ์ปจํ…์ŠคํŠธ ํŒŒ์ผ | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š ๋ฌธ์„œ + +| ์›ํ•˜๋Š” ์ž‘์—… | ์ฝ์„ ๋ฌธ์„œ | +|--------------|-----------| +| **๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๊ธฐ** | [๋น ๋ฅธ ์‹œ์ž‘](docs/getting-started/02-quick-start.md) - 3๊ฐ€์ง€ ๋ช…๋ น์–ด๋กœ ์ฒซ ์Šคํ‚ฌ ๋งŒ๋“ค๊ธฐ | +| **๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ** | [ํ•ต์‹ฌ ๊ฐœ๋…](docs/user-guide/01-core-concepts.md) - ์ž‘๋™ ์›๋ฆฌ | +| **์†Œ์Šค ์Šคํฌ๋ž˜ํ•‘** | [์Šคํฌ๋ž˜ํ•‘ ๊ฐ€์ด๋“œ](docs/user-guide/02-scraping.md) - ๋ชจ๋“  ์†Œ์Šค ์œ ํ˜• | +| **์Šคํ‚ฌ ๊ฐ•ํ™”** | [๊ฐ•ํ™” ๊ฐ€์ด๋“œ](docs/user-guide/03-enhancement.md) - AI ๊ฐ•ํ™” | +| **์Šคํ‚ฌ ๋‚ด๋ณด๋‚ด๊ธฐ** | [ํŒจํ‚ค์ง• ๊ฐ€์ด๋“œ](docs/user-guide/04-packaging.md) - ํ”Œ๋žซํผ ๋‚ด๋ณด๋‚ด๊ธฐ | +| **๋ช…๋ น์–ด ์ฐพ์•„๋ณด๊ธฐ** | [CLI ๋ ˆํผ๋Ÿฐ์Šค](docs/reference/CLI_REFERENCE.md) - ์ „์ฒด 20๊ฐœ ๋ช…๋ น์–ด | +| **์„ค์ •ํ•˜๊ธฐ** | [์„ค์ • ํ˜•์‹](docs/reference/CONFIG_FORMAT.md) - JSON ๋ช…์„ธ | +| **๋ฌธ์ œ ํ•ด๊ฒฐ** | [๋ฌธ์ œ ํ•ด๊ฒฐ](docs/user-guide/06-troubleshooting.md) - ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ | + +**์ „์ฒด ๋ฌธ์„œ:** [docs/README.md](docs/README.md) + +Skill Seekers๋Š” ์ˆ˜์ผ๊ฐ„์˜ ์ˆ˜๋™ ์ „์ฒ˜๋ฆฌ ์ž‘์—…์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค: + +1. **์ˆ˜์ง‘** โ€” ๋ฌธ์„œ, GitHub ์ €์žฅ์†Œ, ๋กœ์ปฌ ์ฝ”๋“œ๋ฒ ์ด์Šค, PDF, ๋™์˜์ƒ, ๋…ธํŠธ๋ถ, ์œ„ํ‚ค ๋“ฑ 10๊ฐ€์ง€ ์ด์ƒ์˜ ์†Œ์Šค ์œ ํ˜• +2. **๋ถ„์„** โ€” ์‹ฌ์ธต AST ํŒŒ์‹ฑ, ํŒจํ„ด ๊ฐ์ง€, API ์ถ”์ถœ +3. **๊ตฌ์กฐํ™”** โ€” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ถ„๋ฅ˜๋œ ์ฐธ์กฐ ํŒŒ์ผ +4. **๊ฐ•ํ™”** โ€” AI ๊ธฐ๋ฐ˜ SKILL.md ์ƒ์„ฑ (Claude, Gemini ๋˜๋Š” ๋กœ์ปฌ) +5. **๋‚ด๋ณด๋‚ด๊ธฐ** โ€” ํ•˜๋‚˜์˜ ์ž์‚ฐ์—์„œ 16๊ฐœ ํ”Œ๋žซํผ ์ „์šฉ ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ + +## ์™œ Skill Seekers๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚˜์š”? + +### AI ์Šคํ‚ฌ ๋นŒ๋”๋ฅผ ์œ„ํ•ด (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **ํ”„๋กœ๋•์…˜๊ธ‰ ์Šคํ‚ฌ** โ€” ์ฝ”๋“œ ์˜ˆ์ œ, ํŒจํ„ด, ๊ฐ€์ด๋“œ๋ฅผ ํฌํ•จํ•œ 500์ค„ ์ด์ƒ์˜ SKILL.md ํŒŒ์ผ +- ๐Ÿ”„ **๊ฐ•ํ™” ์›Œํฌํ”Œ๋กœ** โ€” `security-focus`, `architecture-comprehensive` ๋˜๋Š” ์ปค์Šคํ…€ YAML ํ”„๋ฆฌ์…‹ ์ ์šฉ +- ๐ŸŽฎ **๋ชจ๋“  ๋„๋ฉ”์ธ** โ€” ๊ฒŒ์ž„ ์—”์ง„(Godot, Unity), ํ”„๋ ˆ์ž„์›Œํฌ(React, Django), ๋‚ด๋ถ€ ๋„๊ตฌ +- ๐Ÿ”ง **ํŒ€ ํ˜‘์—…** โ€” ๋‚ด๋ถ€ ๋ฌธ์„œ + ์ฝ”๋“œ๋ฅผ ๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›์œผ๋กœ ํ†ตํ•ฉ +- ๐Ÿ“š **๊ณ ํ’ˆ์งˆ** โ€” ์˜ˆ์ œ, ๋น ๋ฅธ ์ฐธ์กฐ, ๋‚ด๋น„๊ฒŒ์ด์…˜ ๊ฐ€์ด๋“œ๋ฅผ ํฌํ•จํ•œ AI ๊ฐ•ํ™” + +### RAG ๋นŒ๋” ๋ฐ AI ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•ด + +- ๐Ÿค– **RAG ์ค€๋น„ ์™„๋ฃŒ ๋ฐ์ดํ„ฐ** โ€” ์‚ฌ์ „ ์ฒญํ‚น๋œ LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- ๐Ÿš€ **99% ๋” ๋น ๋ฆ„** โ€” ์ˆ˜์ผ๊ฐ„์˜ ์ „์ฒ˜๋ฆฌ โ†’ 15โ€“45๋ถ„ +- ๐Ÿ“Š **์Šค๋งˆํŠธ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ** โ€” ์นดํ…Œ๊ณ ๋ฆฌ, ์†Œ์Šค, ์œ ํ˜• โ†’ ๋” ๋†’์€ ๊ฒ€์ƒ‰ ์ •ํ™•๋„ +- ๐Ÿ”„ **๋‹ค์ค‘ ์†Œ์Šค** โ€” ํ•˜๋‚˜์˜ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๋ฌธ์„œ + GitHub + PDF + ๋™์˜์ƒ ๊ฒฐํ•ฉ +- ๐ŸŒ **ํ”Œ๋žซํผ ๋…๋ฆฝ์ ** โ€” ์žฌ์Šคํฌ๋ž˜ํ•‘ ์—†์ด ๋ชจ๋“  ๋ฒกํ„ฐ DB๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ + +### AI ์ฝ”๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” `.cursorrules` / `.windsurfrules` / `.clinerules` ์ž๋™ ์ƒ์„ฑ +- ๐ŸŽฏ **์˜๊ตฌ์  ์ปจํ…์ŠคํŠธ** โ€” ๋ฐ˜๋ณต ํ”„๋กฌํ”„ํŒ… ์—†์ด AI๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ "์ดํ•ด" +- ๐Ÿ“š **ํ•ญ์ƒ ์ตœ์‹ ** โ€” ๋ฌธ์„œ ๋ณ€๊ฒฝ ์‹œ ๋ช‡ ๋ถ„ ๋งŒ์— ์ปจํ…์ŠคํŠธ ์—…๋ฐ์ดํŠธ + +## ํ•ต์‹ฌ ๊ธฐ๋Šฅ + +### ๐ŸŒ ๋ฌธ์„œ ์Šคํฌ๋ž˜ํ•‘ +- โœ… **์Šค๋งˆํŠธ SPA ๋””์Šค์ปค๋ฒ„๋ฆฌ** - JavaScript SPA ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ 3๊ณ„์ธต ๋””์Šค์ปค๋ฒ„๋ฆฌ (sitemap.xml โ†’ llms.txt โ†’ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง) +- โœ… **llms.txt ์ง€์›** - LLM ์ค€๋น„ ์™„๋ฃŒ ๋ฌธ์„œ ํŒŒ์ผ ์ž๋™ ๊ฐ์ง€ ๋ฐ ์‚ฌ์šฉ (10๋ฐฐ ๋น ๋ฆ„) +- โœ… **๋ฒ”์šฉ ์Šคํฌ๋ž˜ํผ** - ๋ชจ๋“  ๋ฌธ์„œ ์‚ฌ์ดํŠธ์—์„œ ์ž‘๋™ +- โœ… **์Šค๋งˆํŠธ ๋ถ„๋ฅ˜** - ์ฃผ์ œ๋ณ„ ์ž๋™ ์ฝ˜ํ…์ธ  ์ •๋ฆฌ +- โœ… **์ฝ”๋“œ ์–ธ์–ด ๊ฐ์ง€** - Python, JavaScript, C++, GDScript ๋“ฑ ์ธ์‹ +- โœ… **24+ ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ํ”„๋ฆฌ์…‹** - Godot, React, Vue, Django, FastAPI ๋“ฑ + +### ๐Ÿ“„ PDF ์ง€์› +- โœ… **๊ธฐ๋ณธ PDF ์ถ”์ถœ** - PDF์—์„œ ํ…์ŠคํŠธ, ์ฝ”๋“œ, ์ด๋ฏธ์ง€ ์ถ”์ถœ +- โœ… **์Šค์บ” PDF OCR** - ์Šค์บ” ๋ฌธ์„œ์—์„œ ํ…์ŠคํŠธ ์ถ”์ถœ +- โœ… **๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณดํ˜ธ PDF** - ์•”ํ˜ธํ™”๋œ PDF ์ฒ˜๋ฆฌ +- โœ… **ํ‘œ ์ถ”์ถœ** - ๋ณต์žกํ•œ ํ‘œ ์ถ”์ถœ +- โœ… **๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ** - ๋Œ€์šฉ๋Ÿ‰ PDF 3๋ฐฐ ๋น ๋ฅธ ์ฒ˜๋ฆฌ +- โœ… **์ง€๋Šฅํ˜• ์บ์‹ฑ** - ์žฌ์‹คํ–‰ ์‹œ 50% ๋น ๋ฆ„ + +### ๐ŸŽฌ ๋™์˜์ƒ ์ถ”์ถœ +- โœ… **YouTube ๋ฐ ๋กœ์ปฌ ๋™์˜์ƒ** - ๋™์˜์ƒ์—์„œ ์ž๋ง‰, ํ™”๋ฉด ์† ์ฝ”๋“œ, ๊ตฌ์กฐํ™”๋œ ์ง€์‹ ์ถ”์ถœ +- โœ… **์‹œ๊ฐ ํ”„๋ ˆ์ž„ ๋ถ„์„** - ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ, ํ„ฐ๋ฏธ๋„, ์Šฌ๋ผ์ด๋“œ, ๋‹ค์ด์–ด๊ทธ๋žจ์˜ OCR ์ถ”์ถœ +- โœ… **GPU ์ž๋™ ๊ฐ์ง€** - ์˜ฌ๋ฐ”๋ฅธ PyTorch ๋นŒ๋“œ ์ž๋™ ์„ค์น˜ (CUDA/ROCm/MPS/CPU) +- โœ… **AI ๊ฐ•ํ™”** - 2๋‹จ๊ณ„: OCR ์ •๋ฆฌ + ์™„์„ฑ๋„ ๋†’์€ SKILL.md ์ƒ์„ฑ +- โœ… **์‹œ๊ฐ„ ํด๋ฆฌํ•‘** - `--start-time`๊ณผ `--end-time`์œผ๋กœ ํŠน์ • ๊ตฌ๊ฐ„ ์ถ”์ถœ +- โœ… **์žฌ์ƒ ๋ชฉ๋ก ์ง€์›** - YouTube ์žฌ์ƒ ๋ชฉ๋ก์˜ ๋ชจ๋“  ๋™์˜์ƒ ์ผ๊ด„ ์ฒ˜๋ฆฌ +- โœ… **Vision API ํด๋ฐฑ** - ๋‚ฎ์€ ์‹ ๋ขฐ๋„ OCR ํ”„๋ ˆ์ž„์— Claude Vision ์‚ฌ์šฉ + +### ๐Ÿ™ GitHub ์ €์žฅ์†Œ ๋ถ„์„ +- โœ… **์‹ฌ์ธต ์ฝ”๋“œ ๋ถ„์„** - Python, JavaScript, TypeScript, Java, C++, Go AST ํŒŒ์‹ฑ +- โœ… **API ์ถ”์ถœ** - ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ํƒ€์ž… +- โœ… **์ €์žฅ์†Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ** - README, ํŒŒ์ผ ํŠธ๋ฆฌ, ์–ธ์–ด ํ†ต๊ณ„, ์Šคํƒ€/ํฌํฌ ์ˆ˜ +- โœ… **GitHub Issues ๋ฐ PR** - ๋ผ๋ฒจ๊ณผ ๋งˆ์ผ์Šคํ†ค์ด ํฌํ•จ๋œ ์ด์Šˆ ๊ฐ€์ ธ์˜ค๊ธฐ +- โœ… **CHANGELOG ๋ฐ ๋ฆด๋ฆฌ์Šค** - ๋ฒ„์ „ ํžˆ์Šคํ† ๋ฆฌ ์ž๋™ ์ถ”์ถœ +- โœ… **์ถฉ๋Œ ๊ฐ์ง€** - ๋ฌธ์„œํ™”๋œ API์™€ ์‹ค์ œ ์ฝ”๋“œ ๊ตฌํ˜„ ๋น„๊ต +- โœ… **MCP ํ†ตํ•ฉ** - ์ž์—ฐ์–ด: "GitHub ์ €์žฅ์†Œ facebook/react ์Šคํฌ๋ž˜ํ•‘" + +### ๐Ÿ”„ ํ†ตํ•ฉ ๋‹ค์ค‘ ์†Œ์Šค ์Šคํฌ๋ž˜ํ•‘ +- โœ… **๋‹ค์ค‘ ์†Œ์Šค ๊ฒฐํ•ฉ** - ํ•˜๋‚˜์˜ ์Šคํ‚ฌ์—์„œ ๋ฌธ์„œ + GitHub + PDF ํ˜ผํ•ฉ +- โœ… **์ถฉ๋Œ ๊ฐ์ง€** - ๋ฌธ์„œ์™€ ์ฝ”๋“œ ๊ฐ„์˜ ๋ถˆ์ผ์น˜ ์ž๋™ ๋ฐœ๊ฒฌ +- โœ… **์ง€๋Šฅํ˜• ๋ณ‘ํ•ฉ** - ๊ทœ์น™ ๊ธฐ๋ฐ˜ ๋˜๋Š” AI ๊ธฐ๋ฐ˜ ์ถฉ๋Œ ํ•ด๊ฒฐ +- โœ… **ํˆฌ๋ช…ํ•œ ๋ณด๊ณ ** - โš ๏ธ ๊ฒฝ๊ณ ๊ฐ€ ํฌํ•จ๋œ ๋‚˜๋ž€ํžˆ ๋น„๊ต +- โœ… **๋ฌธ์„œ ๊ฐญ ๋ถ„์„** - ์˜ค๋ž˜๋œ ๋ฌธ์„œ์™€ ๋ฏธ๋ฌธ์„œํ™” ๊ธฐ๋Šฅ ์‹๋ณ„ +- โœ… **๋‹จ์ผ ์ง„์‹ค ๊ณต๊ธ‰์›** - ์˜๋„(๋ฌธ์„œ)์™€ ํ˜„์‹ค(์ฝ”๋“œ)์„ ๋™์‹œ์— ๋ณด์—ฌ์ฃผ๋Š” ํ•˜๋‚˜์˜ ์Šคํ‚ฌ +- โœ… **ํ•˜์œ„ ํ˜ธํ™˜** - ๋ ˆ๊ฑฐ์‹œ ๋‹จ์ผ ์†Œ์Šค ์„ค์ • ๊ณ„์† ์ž‘๋™ + +### ๐Ÿค– ๋‹ค์ค‘ LLM ํ”Œ๋žซํผ ์ง€์› +- โœ… **12๊ฐœ LLM ํ”Œ๋žซํผ** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, ๋ฒ”์šฉ Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **๋ฒ”์šฉ ์Šคํฌ๋ž˜ํ•‘** - ๋™์ผํ•œ ๋ฌธ์„œ๊ฐ€ ๋ชจ๋“  ํ”Œ๋žซํผ์— ์ ์šฉ +- โœ… **ํ”Œ๋žซํผ๋ณ„ ํŒจํ‚ค์ง•** - ๊ฐ LLM์— ์ตœ์ ํ™”๋œ ํ˜•์‹ +- โœ… **์›์ปค๋งจ๋“œ ๋‚ด๋ณด๋‚ด๊ธฐ** - `--target` ํ”Œ๋ž˜๊ทธ๋กœ ํ”Œ๋žซํผ ์„ ํƒ +- โœ… **์„ ํƒ์  ์ข…์†์„ฑ** - ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์„ค์น˜ +- โœ… **100% ํ•˜์œ„ ํ˜ธํ™˜** - ๊ธฐ์กด Claude ์›Œํฌํ”Œ๋กœ ๋ณ€๊ฒฝ ๋ถˆํ•„์š” + +| ํ”Œ๋žซํผ | ํ˜•์‹ | ์—…๋กœ๋“œ | ๊ฐ•ํ™” | API Key | ์ปค์Šคํ…€ ์—”๋“œํฌ์ธํŠธ | +|--------|------|--------|------|---------|-----------------| +| **Claude AI** | ZIP + YAML | โœ… ์ž๋™ | โœ… ์˜ˆ | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… ์ž๋™ | โœ… ์˜ˆ | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… ์ž๋™ | โœ… ์˜ˆ | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… ์ž๋™ | โœ… ์˜ˆ | MINIMAX_API_KEY | - | +| **๋ฒ”์šฉ Markdown** | ZIP | โŒ ์ˆ˜๋™ | โŒ ์•„๋‹ˆ์˜ค | - | - | + +```bash +# Claude (๊ธฐ๋ณธ๊ฐ’ - ๋ณ€๊ฒฝ ๋ถˆํ•„์š”!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# ๋ฒ”์šฉ Markdown (๋ฒ”์šฉ ๋‚ด๋ณด๋‚ด๊ธฐ) +skill-seekers package output/react/ --target markdown +# Markdown ํŒŒ์ผ์€ ์–ด๋–ค LLM์—์„œ๋“  ์ง์ ‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ +``` + +
+๐Ÿ”ง ์ž์‹ ๋งŒ์˜ AI ์ œ๊ณต์ž ์‚ฌ์šฉ (OpenAI ํ˜ธํ™˜ ์—”๋“œํฌ์ธํŠธ + ๊ตฌ๋…, Anthropic ํฌ๋ ˆ๋”ง ๋ถˆํ•„์š”) + +์„ ํƒ์  AI **๊ฐ•ํ™”** ๋‹จ๊ณ„(`create`, `scan`, `enhance`์—์„œ ์‚ฌ์šฉ)์—๋Š” Anthropic ํ‚ค๊ฐ€ **ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +**1. ์ด๋ฏธ ๊ฒฐ์ œ ์ค‘์ธ ๊ตฌ๋… ์‚ฌ์šฉ โ€” API ํฌ๋ ˆ๋”ง ์ „ํ˜€ ๋ถˆํ•„์š” (LOCAL ์—์ด์ „ํŠธ ๋ชจ๋“œ)** + +Skill Seekers๋Š” ์ด๋ฏธ ๋กœ๊ทธ์ธ๋˜์–ด ์žˆ๋Š” ์ฝ”๋”ฉ ์—์ด์ „ํŠธ CLI๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์–ด, ์ข…๋Ÿ‰์ œ API ํ† ํฐ ๋Œ€์‹  ๊ธฐ์กด ์š”๊ธˆ์ œ๋กœ ๊ฐ•ํ™”๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ChatGPT Plus ์š”๊ธˆ์ œ +skill-seekers create --agent claude # Claude Code โ†’ Claude Pro/Max ์š”๊ธˆ์ œ +``` + +์ง€์›๋˜๋Š” ์—์ด์ „ํŠธ: `claude`, `codex`, `copilot`, `opencode`, `kimi`, `custom` +(`--agent custom`์„ `--agent-cmd " ..."`์™€ ์กฐํ•ฉํ•˜๋ฉด ๋‹ค๋ฅธ ์–ด๋–ค ๋„๊ตฌ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ). + +**2. ๋ชจ๋“  OpenAI ํ˜ธํ™˜ ์ œ๊ณต์ž (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM ๋“ฑ)** + +์ด๋“ค์€ ๋ชจ๋‘ OpenAI ํ˜ธํ™˜ `/v1` ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ธ ๊ฐœ๋งŒ ์„ค์ •ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค โ€” Skill Seekers๊ฐ€ `OPENAI_API_KEY`๋ฅผ ๊ฐ์ง€ํ•˜๊ณ , OpenAI SDK๋Š” `OPENAI_BASE_URL`์„ ์ž๋™์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # ์ œ๊ณต์ž ์—”๋“œํฌ์ธํŠธ (์•„๋ž˜ ํ‘œ ์ฐธ์กฐ) +export OPENAI_MODEL="" # ํ•„์ˆ˜ โ€” ๊ธฐ๋ณธ๊ฐ’ gpt-4o๋Š” ๋‹ค๋ฅธ ์ œ๊ณต์ž์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค +skill-seekers create +``` + +| ์ œ๊ณต์ž | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> ์ œ๊ณต์ž ๊ฐ์ง€๋Š” **์ฒซ ๋ฒˆ์งธ๋กœ** ๋ฐœ๊ฒฌ๋˜๋Š” API ํ‚ค ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). ํŠน์ • ์ œ๊ณต์ž๋ฅผ ๊ฐ•์ œํ•˜๋ ค๋ฉด `SKILL_SEEKER_PROVIDER`๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜, ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ํ‚ค๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์€์ง€ ํ™•์ธํ•˜์„ธ์š”. + +**3. Claude ํ˜ธํ™˜ ์—”๋“œํฌ์ธํŠธ (์˜ˆ: GLM, ํ”„๋ก์‹œ)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini(`GOOGLE_API_KEY`)์™€ Kimi/Moonshot(`MOONSHOT_API_KEY`)๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ œ๊ณต์ž๋ณ„ ๋ชจ๋ธ ์žฌ์ •์˜๋ฅผ ํฌํ•จํ•œ ์ „์ฒด ๋ชฉ๋ก์€ **[ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ ˆํผ๋Ÿฐ์Šค](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)**๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. + +
+ +**์„ค์น˜:** +```bash +# Gemini ์ง€์› ์„ค์น˜ +pip install skill-seekers[gemini] + +# OpenAI ์ง€์› ์„ค์น˜ +pip install skill-seekers[openai] + +# MiniMax ์ง€์› ์„ค์น˜ +pip install skill-seekers[minimax] + +# ๋ชจ๋“  LLM ํ”Œ๋žซํผ ์„ค์น˜ +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG ํ”„๋ ˆ์ž„์›Œํฌ ํ†ตํ•ฉ + +- โœ… **LangChain Documents** - `page_content` + ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ `Document` ํ˜•์‹์œผ๋กœ ์ง์ ‘ ๋‚ด๋ณด๋‚ด๊ธฐ + - ์ ํ•ฉ: QA ์ฒด์ธ, ๋ฆฌํŠธ๋ฆฌ๋ฒ„, ๋ฒกํ„ฐ ์Šคํ† ์–ด, ์—์ด์ „ํŠธ + - ์˜ˆ์ œ: [LangChain RAG ํŒŒ์ดํ”„๋ผ์ธ](examples/langchain-rag-pipeline/) + - ๊ฐ€์ด๋“œ: [LangChain ํ†ตํ•ฉ](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - ๊ณ ์œ  ID + ์ž„๋ฒ ๋”ฉ์ด ํฌํ•จ๋œ `TextNode` ํ˜•์‹์œผ๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ + - ์ ํ•ฉ: ์ฟผ๋ฆฌ ์—”์ง„, ๋Œ€ํ™” ์—”์ง„, ์Šคํ† ๋ฆฌ์ง€ ์ปจํ…์ŠคํŠธ + - ์˜ˆ์ œ: [LlamaIndex ์ฟผ๋ฆฌ ์—”์ง„](examples/llama-index-query-engine/) + - ๊ฐ€์ด๋“œ: [LlamaIndex ํ†ตํ•ฉ](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone ์ค€๋น„ ์™„๋ฃŒ ํ˜•์‹** - ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…์„œํŠธ์— ์ตœ์ ํ™” + - ์ ํ•ฉ: ํ”„๋กœ๋•์…˜ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰, ์‹œ๋งจํ‹ฑ ๊ฒ€์ƒ‰, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ + - ์˜ˆ์ œ: [Pinecone ์—…์„œํŠธ](examples/pinecone-upsert/) + - ๊ฐ€์ด๋“œ: [Pinecone ํ†ตํ•ฉ](docs/integrations/PINECONE.md) + +**๋น ๋ฅธ ๋‚ด๋ณด๋‚ด๊ธฐ:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (๋ฒ”์šฉ) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**์ „์ฒด RAG ํŒŒ์ดํ”„๋ผ์ธ ๊ฐ€์ด๋“œ:** [RAG ํŒŒ์ดํ”„๋ผ์ธ ๋ฌธ์„œ](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI ์ฝ”๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ ํ†ตํ•ฉ + +๋ชจ๋“  ํ”„๋ ˆ์ž„์›Œํฌ ๋ฌธ์„œ๋ฅผ 4๊ฐœ ์ด์ƒ์˜ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ์œ„ํ•œ ์ „๋ฌธ ์ฝ”๋”ฉ ์ปจํ…์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค: + +- โœ… **Cursor IDE** - AI ๊ธฐ๋ฐ˜ ์ฝ”๋“œ ์ œ์•ˆ์„ ์œ„ํ•œ `.cursorrules` ์ƒ์„ฑ + - ์ ํ•ฉ: ํ”„๋ ˆ์ž„์›Œํฌ๋ณ„ ์ฝ”๋“œ ์ƒ์„ฑ, ์ผ๊ด€๋œ ์ฝ”๋”ฉ ํŒจํ„ด + - ์ง€์› ๋„๊ตฌ: Cursor IDE (VS Code ํฌํฌ) + - ๊ฐ€์ด๋“œ: [Cursor ํ†ตํ•ฉ](docs/integrations/CURSOR.md) + - ์˜ˆ์ œ: [Cursor React ์Šคํ‚ฌ](examples/cursor-react-skill/) + +- โœ… **Windsurf** - `.windsurfrules`๋กœ Windsurf AI ์–ด์‹œ์Šคํ„ดํŠธ ์ปจํ…์ŠคํŠธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• + - ์ ํ•ฉ: IDE ๋„ค์ดํ‹ฐ๋ธŒ AI ์ง€์›, ํ”Œ๋กœ์šฐ ๊ธฐ๋ฐ˜ ์ฝ”๋”ฉ + - ์ง€์› ๋„๊ตฌ: Codeium์˜ Windsurf IDE + - ๊ฐ€์ด๋“œ: [Windsurf ํ†ตํ•ฉ](docs/integrations/WINDSURF.md) + - ์˜ˆ์ œ: [Windsurf FastAPI ์ปจํ…์ŠคํŠธ](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - VS Code ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ + MCP + - ์ ํ•ฉ: VS Code์—์„œ์˜ ์—์ด์ „ํ‹ฑ ์ฝ”๋“œ ์ƒ์„ฑ + - ์ง€์› ๋„๊ตฌ: VS Code์šฉ Cline ํ™•์žฅ + - ๊ฐ€์ด๋“œ: [Cline ํ†ตํ•ฉ](docs/integrations/CLINE.md) + - ์˜ˆ์ œ: [Cline Django ์–ด์‹œ์Šคํ„ดํŠธ](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - IDE์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๋Š” AI ์ปจํ…์ŠคํŠธ ์„œ๋ฒ„ + - ์ ํ•ฉ: ๋ฉ€ํ‹ฐ IDE ํ™˜๊ฒฝ(VS Code, JetBrains, Vim), ์ปค์Šคํ…€ LLM ์ œ๊ณต์ž + - ์ง€์› ๋„๊ตฌ: Continue.dev ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ๋Š” ๋ชจ๋“  IDE + - ๊ฐ€์ด๋“œ: [Continue ํ†ตํ•ฉ](docs/integrations/CONTINUE_DEV.md) + - ์˜ˆ์ œ: [Continue ๋ฒ”์šฉ ์ปจํ…์ŠคํŠธ](examples/continue-dev-universal/) + +**AI ์ฝ”๋”ฉ ๋„๊ตฌ๋ฅผ ์œ„ํ•œ ๋น ๋ฅธ ๋‚ด๋ณด๋‚ด๊ธฐ:** +```bash +# ๋ชจ๋“  AI ์ฝ”๋”ฉ ์–ด์‹œ์Šคํ„ดํŠธ์— ์ ์šฉ (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ๋˜๋Š” --target markdown + +# ํ”„๋กœ์ ํŠธ์— ๋ณต์‚ฌ (Cursor ์˜ˆ์‹œ) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# ๋˜๋Š” Windsurf์šฉ +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# ๋˜๋Š” Cline์šฉ +cp output/django-claude/SKILL.md my-project/.clinerules + +# ๋˜๋Š” Continue.dev์šฉ (HTTP ์„œ๋ฒ„) +python examples/continue-dev-universal/context_server.py +# ~/.continue/config.json์—์„œ ์„ค์ • +``` + +**ํ†ตํ•ฉ ํ—ˆ๋ธŒ:** [๋ชจ๋“  AI ์‹œ์Šคํ…œ ํ†ตํ•ฉ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ 3-์ŠคํŠธ๋ฆผ GitHub ์•„ํ‚คํ…์ฒ˜ +- โœ… **3-์ŠคํŠธ๋ฆผ ๋ถ„์„** - GitHub ์ €์žฅ์†Œ๋ฅผ ์ฝ”๋“œ, ๋ฌธ์„œ, ์ธ์‚ฌ์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ถ„ํ•  +- โœ… **ํ†ตํ•ฉ ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ถ„์„๊ธฐ** - GitHub URL๊ณผ ๋กœ์ปฌ ๊ฒฝ๋กœ ๋ชจ๋‘ ์ง€์› +- โœ… **C3.x ๋ถ„์„ ๊นŠ์ด** - 'basic' (1โ€“2๋ถ„) ๋˜๋Š” 'c3x' (20โ€“60๋ถ„) ๋ถ„์„ ์„ ํƒ +- โœ… **ํ–ฅ์ƒ๋œ ๋ผ์šฐํ„ฐ ์ƒ์„ฑ** - GitHub ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, README ๋น ๋ฅธ ์‹œ์ž‘, ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ +- โœ… **Issue ํ†ตํ•ฉ** - GitHub Issues์˜ ์ฃผ์š” ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ์ฑ… +- โœ… **์Šค๋งˆํŠธ ๋ผ์šฐํŒ… ํ‚ค์›Œ๋“œ** - GitHub ๋ผ๋ฒจ ๊ฐ€์ค‘์น˜ 2๋ฐฐ๋กœ ์ฃผ์ œ ๊ฐ์ง€ ํ–ฅ์ƒ + +**3-์ŠคํŠธ๋ฆผ ์„ค๋ช…:** +- **์ŠคํŠธ๋ฆผ 1: ์ฝ”๋“œ** - ์‹ฌ์ธต C3.x ๋ถ„์„ (ํŒจํ„ด, ์˜ˆ์ œ, ๊ฐ€์ด๋“œ, ์„ค์ •, ์•„ํ‚คํ…์ฒ˜) +- **์ŠคํŠธ๋ฆผ 2: ๋ฌธ์„œ** - ์ €์žฅ์†Œ ๋ฌธ์„œ (README, CONTRIBUTING, docs/*.md) +- **์ŠคํŠธ๋ฆผ 3: ์ธ์‚ฌ์ดํŠธ** - ์ปค๋ฎค๋‹ˆํ‹ฐ ์ง€์‹ (Issues, ๋ผ๋ฒจ, Stars, Forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# 3-์ŠคํŠธ๋ฆผ์œผ๋กœ GitHub ์ €์žฅ์†Œ ๋ถ„์„ +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ๋˜๋Š” "basic"์œผ๋กœ ๋น ๋ฅธ ๋ถ„์„ + fetch_github_metadata=True +) + +# ์ฝ”๋“œ ์ŠคํŠธ๋ฆผ ์ ‘๊ทผ (C3.x ๋ถ„์„) +print(f"๋””์ž์ธ ํŒจํ„ด: {len(result.code_analysis['c3_1_patterns'])}") +print(f"ํ…Œ์ŠคํŠธ ์˜ˆ์ œ: {result.code_analysis['c3_2_examples_count']}") + +# ๋ฌธ์„œ ์ŠคํŠธ๋ฆผ ์ ‘๊ทผ (์ €์žฅ์†Œ ๋ฌธ์„œ) +print(f"README: {result.github_docs['readme'][:100]}") + +# ์ธ์‚ฌ์ดํŠธ ์ŠคํŠธ๋ฆผ ์ ‘๊ทผ (GitHub ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ) +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ: {len(result.github_insights['common_problems'])}") +``` + +**์ „์ฒด ๋ฌธ์„œ**: [3-์ŠคํŠธ๋ฆผ ๊ตฌํ˜„ ์š”์•ฝ](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” ์Šค๋งˆํŠธ ์†๋„ ์ œํ•œ ๊ด€๋ฆฌ ๋ฐ ์„ค์ • +- โœ… **๋‹ค์ค‘ ํ† ํฐ ์„ค์ • ์‹œ์Šคํ…œ** - ์—ฌ๋Ÿฌ GitHub ๊ณ„์ • ๊ด€๋ฆฌ (๊ฐœ์ธ, ์—…๋ฌด, ์˜คํ”ˆ์†Œ์Šค) + - `~/.config/skill-seekers/config.json`์— ๋ณด์•ˆ ์„ค์ • ์ €์žฅ (๊ถŒํ•œ 600) + - ํ”„๋กœํ•„๋ณ„ ์†๋„ ์ œํ•œ ์ „๋žต: `prompt`, `wait`, `switch`, `fail` + - ํ”„๋กœํ•„๋ณ„ ํƒ€์ž„์•„์›ƒ ์„ค์ • (๊ธฐ๋ณธ๊ฐ’: 30๋ถ„, ๋ฌดํ•œ ๋Œ€๊ธฐ ๋ฐฉ์ง€) + - ์Šค๋งˆํŠธ ํด๋ฐฑ ์ฒด์ธ: CLI ์ธ์ž โ†’ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ โ†’ ์„ค์ • ํŒŒ์ผ โ†’ ํ”„๋กฌํ”„ํŠธ + - Claude, Gemini, OpenAI๋ฅผ ์œ„ํ•œ API Key ๊ด€๋ฆฌ +- โœ… **๋Œ€ํ™”ํ˜• ์„ค์ • ๋งˆ๋ฒ•์‚ฌ** - ์•„๋ฆ„๋‹ค์šด ํ„ฐ๋ฏธ๋„ UI๋กœ ์‰ฌ์šด ์„ค์ • + - ํ† ํฐ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ € ํ†ตํ•ฉ (GitHub ๋“ฑ์„ ์ž๋™์œผ๋กœ ์—ด๊ธฐ) + - ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ + - ์ƒ‰์ƒ ์ฝ”๋“œ๊ฐ€ ์ ์šฉ๋œ ์‹œ๊ฐ์  ์ƒํƒœ ํ‘œ์‹œ +- โœ… **์ง€๋Šฅํ˜• ์†๋„ ์ œํ•œ ํ•ธ๋“ค๋Ÿฌ** - ๋” ์ด์ƒ ๋ฌดํ•œ ๋Œ€๊ธฐ ์—†์Œ! + - ์†๋„ ์ œํ•œ(์‹œ๊ฐ„๋‹น 60ํšŒ vs 5000ํšŒ)์— ๋Œ€ํ•œ ์‚ฌ์ „ ๊ฒฝ๊ณ  + - GitHub API ์‘๋‹ต์—์„œ ์‹ค์‹œ๊ฐ„ ๊ฐ์ง€ + - ์ง„ํ–‰ ์ƒํ™ฉ์ด ํ‘œ์‹œ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ์นด์šดํŠธ๋‹ค์šด ํƒ€์ด๋จธ + - ์†๋„ ์ œํ•œ ์‹œ ์ž๋™ ํ”„๋กœํ•„ ์ „ํ™˜ + - 4๊ฐ€์ง€ ์ „๋žต: prompt (์งˆ๋ฌธ), wait (์นด์šดํŠธ๋‹ค์šด), switch (์ „ํ™˜), fail (์ค‘๋‹จ) +- โœ… **์ค‘๋‹จ์  ์žฌ๊ฐœ** - ์ค‘๋‹จ๋œ ์ž‘์—… ๊ณ„์†ํ•˜๊ธฐ + - ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ง„ํ–‰ ์ƒํ™ฉ ์ž๋™ ์ €์žฅ (๊ธฐ๋ณธ๊ฐ’: 60์ดˆ) + - ์žฌ๊ฐœ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ง„ํ–‰ ์ƒํ™ฉ๊ณผ ํ•จ๊ป˜ ๋‚˜์—ด + - ์˜ค๋ž˜๋œ ์ž‘์—… ์ž๋™ ์ •๋ฆฌ (๊ธฐ๋ณธ๊ฐ’: 7์ผ) +- โœ… **CI/CD ์ง€์›** - ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ๋น„๋Œ€ํ™”ํ˜• ๋ชจ๋“œ + - `--non-interactive` ํ”Œ๋ž˜๊ทธ๋กœ ํ”„๋กฌํ”„ํŠธ ์—†์ด ๋น ๋ฅธ ์‹คํŒจ + - `--profile` ํ”Œ๋ž˜๊ทธ๋กœ ํŠน์ • GitHub ๊ณ„์ • ์„ ํƒ + - ํŒŒ์ดํ”„๋ผ์ธ ๋กœ๊ทธ๋ฅผ ์œ„ํ•œ ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ + +**๋น ๋ฅธ ์„ค์ •:** +```bash +# ์ผํšŒ์„ฑ ์„ค์ • (5๋ถ„) +skill-seekers config --github + +# ํ”„๋ผ์ด๋น— ์ €์žฅ์†Œ์— ํŠน์ • ํ”„๋กœํ•„ ์‚ฌ์šฉ +skill-seekers create mycompany/private-repo --profile work + +# CI/CD ๋ชจ๋“œ (์ฆ‰์‹œ ์‹คํŒจ, ํ”„๋กฌํ”„ํŠธ ์—†์Œ) +skill-seekers create owner/repo --non-interactive + +# ์ค‘๋‹จ๋œ ์ž‘์—… ์žฌ๊ฐœ +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**์†๋„ ์ œํ•œ ์ „๋žต ์„ค๋ช…:** +- **prompt** (๊ธฐ๋ณธ๊ฐ’) - ์†๋„ ์ œํ•œ ์‹œ ๋ฌด์—‡์„ ํ• ์ง€ ์งˆ๋ฌธ (๋Œ€๊ธฐ, ์ „ํ™˜, ํ† ํฐ ์„ค์ •, ์ทจ์†Œ) +- **wait** - ์นด์šดํŠธ๋‹ค์šด ํƒ€์ด๋จธ์™€ ํ•จ๊ป˜ ์ž๋™ ๋Œ€๊ธฐ (ํƒ€์ž„์•„์›ƒ ์ค€์ˆ˜) +- **switch** - ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹ค์Œ ํ”„๋กœํ•„ ์ž๋™ ์‹œ๋„ (๋‹ค์ค‘ ๊ณ„์ • ๊ตฌ์„ฑ์šฉ) +- **fail** - ๋ช…ํ™•ํ•œ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ฆ‰์‹œ ์‹คํŒจ (CI/CD์— ์ตœ์ ) + +### ๐ŸŽฏ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ์Šคํ‚ฌ - ์…€ํ”„ ํ˜ธ์ŠคํŒ… + +skill-seekers ์ž์ฒด๋ฅผ ์Šคํ‚ฌ๋กœ ์ƒ์„ฑํ•˜์—ฌ AI ์—์ด์ „ํŠธ(Claude Code, Kimi, Codex ๋“ฑ) ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: + +```bash +# ์Šคํ‚ฌ ์ƒ์„ฑ +./scripts/bootstrap_skill.sh + +# Claude Code์— ์„ค์น˜ +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ:** +- โœ… **์™„์ „ํ•œ ์Šคํ‚ฌ ๋ฌธ์„œ** - ๋ชจ๋“  CLI ๋ช…๋ น์–ด์™€ ์‚ฌ์šฉ ํŒจํ„ด +- โœ… **CLI ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค** - ๋ชจ๋“  ๋„๊ตฌ์™€ ์˜ต์…˜ ๋ฌธ์„œํ™” +- โœ… **๋น ๋ฅธ ์‹œ์ž‘ ์˜ˆ์ œ** - ์ผ๋ฐ˜์ ์ธ ์›Œํฌํ”Œ๋กœ์™€ ๋ชจ๋ฒ” ์‚ฌ๋ก€ +- โœ… **์ž๋™ ์ƒ์„ฑ API ๋ฌธ์„œ** - ์ฝ”๋“œ ๋ถ„์„, ํŒจํ„ด, ์˜ˆ์ œ + +### ๐Ÿ” ํ”„๋ผ์ด๋น— ์„ค์ • ์ €์žฅ์†Œ +- โœ… **Git ๊ธฐ๋ฐ˜ ์„ค์ • ์†Œ์Šค** - ํ”„๋ผ์ด๋น—/ํŒ€ Git ์ €์žฅ์†Œ์—์„œ ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ +- โœ… **๋‹ค์ค‘ ์†Œ์Šค ๊ด€๋ฆฌ** - ๋ฌด์ œํ•œ GitHub, GitLab, Bitbucket ์ €์žฅ์†Œ ๋“ฑ๋ก +- โœ… **ํŒ€ ํ˜‘์—…** - 3โ€“5์ธ ํŒ€ ๊ฐ„ ์ปค์Šคํ…€ ์„ค์ • ๊ณต์œ  +- โœ… **์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ง€์›** - ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ํ•ด์„์œผ๋กœ 500๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž๊นŒ์ง€ ํ™•์žฅ +- โœ… **๋ณด์•ˆ ์ธ์ฆ** - ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํ† ํฐ (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **์ง€๋Šฅํ˜• ์บ์‹ฑ** - ํ•œ ๋ฒˆ ํด๋ก ํ•˜๋ฉด ์—…๋ฐ์ดํŠธ๋Š” ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๊ธฐ +- โœ… **์˜คํ”„๋ผ์ธ ๋ชจ๋“œ** - ์˜คํ”„๋ผ์ธ ์‹œ ์บ์‹œ๋œ ์„ค์ •์œผ๋กœ ์ž‘์—… + +### ๐Ÿค– ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ถ„์„ (C3.x) + +**C3.4: ์„ค์ • ํŒจํ„ด ์ถ”์ถœ (AI ๊ฐ•ํ™” ํฌํ•จ)** +- โœ… **9๊ฐ€์ง€ ์„ค์ • ํ˜•์‹** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7๊ฐ€์ง€ ํŒจํ„ด ์œ ํ˜•** - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, API, ๋กœ๊น…, ์บ์‹œ, ์ด๋ฉ”์ผ, ์ธ์ฆ, ์„œ๋ฒ„ ์„ค์ • +- โœ… **AI ๊ฐ•ํ™”** - ์„ ํƒ์  ๋“€์–ผ ๋ชจ๋“œ AI ๋ถ„์„ (API + LOCAL) + - ๊ฐ ์„ค์ •์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€ ์„ค๋ช… + - ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€ ๊ฐœ์„  ์‚ฌํ•ญ ์ œ์•ˆ + - **๋ณด์•ˆ ๋ถ„์„** - ํ•˜๋“œ์ฝ”๋”ฉ๋œ ์‹œํฌ๋ฆฟ๊ณผ ๋…ธ์ถœ๋œ ์ž๊ฒฉ ์ฆ๋ช… ํƒ์ง€ +- โœ… **์ž๋™ ๋ฌธ์„œํ™”** - ๋ชจ๋“  ์„ค์ •์˜ JSON + Markdown ๋ฌธ์„œ ์ƒ์„ฑ +- โœ… **MCP ํ†ตํ•ฉ** - ๊ฐ•ํ™” ์ง€์›์ด ํฌํ•จ๋œ `extract_config_patterns` ๋„๊ตฌ + +**C3.3: AI ๊ฐ•ํ™” ์‚ฌ์šฉ ๊ฐ€์ด๋“œ** +- โœ… **์ข…ํ•ฉ AI ๊ฐ•ํ™”** - ๊ธฐ๋ณธ ๊ฐ€์ด๋“œ๋ฅผ ์ „๋ฌธ ํŠœํ† ๋ฆฌ์–ผ๋กœ ๋ณ€ํ™˜ +- โœ… **5๊ฐ€์ง€ ์ž๋™ ๊ฐœ์„ ** - ๋‹จ๊ณ„ ์„ค๋ช…, ๋ฌธ์ œ ํ•ด๊ฒฐ, ์ „์ œ ์กฐ๊ฑด, ๋‹ค์Œ ๋‹จ๊ณ„, ์‚ฌ์šฉ ์‚ฌ๋ก€ +- โœ… **๋“€์–ผ ๋ชจ๋“œ ์ง€์›** - API ๋ชจ๋“œ (Claude API) ๋˜๋Š” LOCAL ๋ชจ๋“œ (Claude Code CLI) +- โœ… **LOCAL ๋ชจ๋“œ ๋ฌด๋ฃŒ** - Claude Code Max ํ”Œ๋žœ์œผ๋กœ ๋ฌด๋ฃŒ ๊ฐ•ํ™” +- โœ… **ํ’ˆ์งˆ ๋ณ€ํ™˜** - 75์ค„ ํ…œํ”Œ๋ฆฟ โ†’ 500์ค„ ์ด์ƒ์˜ ์ข…ํ•ฉ ๊ฐ€์ด๋“œ + +**์‚ฌ์šฉ๋ฒ•:** +```bash +# ๋น ๋ฅธ ๋ถ„์„ (1โ€“2๋ถ„, ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋งŒ) +skill-seekers scan tests/ --quick + +# ์ข…ํ•ฉ ๋ถ„์„ (AI ํฌํ•จ, 20โ€“60๋ถ„) +skill-seekers scan tests/ --comprehensive + +# AI ๊ฐ•ํ™” ํฌํ•จ +skill-seekers scan tests/ --enhance +``` + +**์ „์ฒด ๋ฌธ์„œ:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ๊ฐ•ํ™” ์›Œํฌํ”Œ๋กœ ํ”„๋ฆฌ์…‹ + +AI๊ฐ€ ์›์‹œ ๋ฌธ์„œ๋ฅผ ์„ธ๋ จ๋œ ์Šคํ‚ฌ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ YAML ์ •์˜ ๊ฐ•ํ™” ํŒŒ์ดํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค. + +- โœ… **5๊ฐœ ๋‚ด์žฅ ํ”„๋ฆฌ์…‹** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **์‚ฌ์šฉ์ž ์ •์˜ ํ”„๋ฆฌ์…‹** โ€” `~/.config/skill-seekers/workflows/`์— ์ปค์Šคํ…€ ์›Œํฌํ”Œ๋กœ ์ถ”๊ฐ€ +- โœ… **๋‹ค์ค‘ ์›Œํฌํ”Œ๋กœ ์ฒด์ด๋‹** โ€” ํ•˜๋‚˜์˜ ๋ช…๋ น์—์„œ ๋‘ ๊ฐœ ์ด์ƒ์˜ ์›Œํฌํ”Œ๋กœ ์ฒด์ด๋‹ +- โœ… **์™„์ „ํ•œ CLI ๊ด€๋ฆฌ** โ€” ๋ชฉ๋ก, ์กฐํšŒ, ๋ณต์‚ฌ, ์ถ”๊ฐ€, ์‚ญ์ œ, ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ + +```bash +# ๋‹จ์ผ ์›Œํฌํ”Œ๋กœ ์ ์šฉ +skill-seekers create ./my-project --enhance-workflow security-focus + +# ๋‹ค์ค‘ ์›Œํฌํ”Œ๋กœ ์ฒด์ด๋‹ (์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ํ”„๋ฆฌ์…‹ ๊ด€๋ฆฌ +skill-seekers workflows list # ๋ชจ๋“  ํ•ญ๋ชฉ ๋‚˜์—ด (๋‚ด์žฅ + ์‚ฌ์šฉ์ž) +skill-seekers workflows show security-focus # YAML ๋‚ด์šฉ ์ถœ๋ ฅ +skill-seekers workflows copy security-focus # ํŽธ์ง‘์„ ์œ„ํ•ด ์‚ฌ์šฉ์ž ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋ณต์‚ฌ +skill-seekers workflows add ./my-workflow.yaml # ์ปค์Šคํ…€ ํ”„๋ฆฌ์…‹ ์„ค์น˜ +skill-seekers workflows remove my-workflow # ์‚ฌ์šฉ์ž ํ”„๋ฆฌ์…‹ ์‚ญ์ œ +skill-seekers workflows validate security-focus # ํ”„๋ฆฌ์…‹ ๊ตฌ์กฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ + +# ์—ฌ๋Ÿฌ ๊ฐœ ๋™์‹œ ๋ณต์‚ฌ +skill-seekers workflows copy security-focus minimal api-documentation + +# ์—ฌ๋Ÿฌ ํŒŒ์ผ ๋™์‹œ ์ถ”๊ฐ€ +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# ์—ฌ๋Ÿฌ ๊ฐœ ๋™์‹œ ์‚ญ์ œ +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML ํ”„๋ฆฌ์…‹ ํ˜•์‹:** +```yaml +name: security-focus +description: "๋ณด์•ˆ ์ค‘์‹ฌ ๊ฒ€ํ† : ์ทจ์•ฝ์ , ์ธ์ฆ, ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "OWASP Top 10 ๋ฐ ์ผ๋ฐ˜์ ์ธ ๋ณด์•ˆ ์ทจ์•ฝ์  ๊ฒ€ํ† ..." + - name: auth-review + type: custom + prompt: "์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๋ถ€์—ฌ ํŒจํ„ด ๊ฒ€์‚ฌ..." + uses_history: true +``` + +### โšก ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ +- โœ… **๋น„๋™๊ธฐ ๋ชจ๋“œ** - async/await๋กœ 2โ€“3๋ฐฐ ๋น ๋ฅธ ์Šคํฌ๋ž˜ํ•‘ (`--async` ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ) +- โœ… **๋Œ€๊ทœ๋ชจ ๋ฌธ์„œ ์ง€์›** - ์ง€๋Šฅํ˜• ๋ถ„ํ• ๋กœ 10Kโ€“40K+ ํŽ˜์ด์ง€ ๋ฌธ์„œ ์ฒ˜๋ฆฌ +- โœ… **๋ผ์šฐํ„ฐ/ํ—ˆ๋ธŒ ์Šคํ‚ฌ** - ์ „๋ฌธ ์„œ๋ธŒ ์Šคํ‚ฌ๋กœ์˜ ์ง€๋Šฅํ˜• ๋ผ์šฐํŒ… +- โœ… **๋ณ‘๋ ฌ ์Šคํฌ๋ž˜ํ•‘** - ์—ฌ๋Ÿฌ ์Šคํ‚ฌ ๋™์‹œ ์ฒ˜๋ฆฌ +- โœ… **์ฒดํฌํฌ์ธํŠธ/์žฌ๊ฐœ** - ์žฅ์‹œ๊ฐ„ ์Šคํฌ๋ž˜ํ•‘์—์„œ ์ง„ํ–‰ ์ƒํ™ฉ ์†์‹ค ๋ฐฉ์ง€ +- โœ… **์บ์‹ฑ ์‹œ์Šคํ…œ** - ํ•œ ๋ฒˆ ์Šคํฌ๋ž˜ํ•‘, ์ฆ‰์‹œ ์žฌ๊ตฌ์ถ• + +### ๐Ÿค– ์—์ด์ „ํŠธ ๋ฌด๊ด€ ์Šคํ‚ฌ ์ƒ์„ฑ +- โœ… **๋‹ค์ค‘ ์—์ด์ „ํŠธ ์ง€์›** - `--agent` ํ”Œ๋ž˜๊ทธ๋กœ Claude, Kimi, Codex, Copilot, OpenCode ๋˜๋Š” ๋ชจ๋“  ์ปค์Šคํ…€ ์—์ด์ „ํŠธ์šฉ ์Šคํ‚ฌ ์ƒ์„ฑ +- โœ… **์ปค์Šคํ…€ ์—์ด์ „ํŠธ ๋ช…๋ น์–ด** - `--agent-cmd`๋กœ ๊ฐ•ํ™”์— ์‚ฌ์šฉํ•  ์ปค์Šคํ…€ ์—์ด์ „ํŠธ CLI ๋ช…๋ น์–ด ์ง€์ • +- โœ… **๋ฒ”์šฉ ํ”Œ๋ž˜๊ทธ** - `--agent`์™€ `--agent-cmd`๋Š” ๋ชจ๋“  ๋ช…๋ น์–ด(create, scrape, github, pdf ๋“ฑ)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ + +### ๐Ÿ“ฆ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํŒŒ์ดํ”„๋ผ์ธ +- โœ… **๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์— ๊ฒŒ์‹œ** - Claude Code ํ”Œ๋Ÿฌ๊ทธ์ธ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ €์žฅ์†Œ์— ์Šคํ‚ฌ ๊ฒŒ์‹œ +- โœ… **์—”๋“œํˆฌ์—”๋“œ ํŒŒ์ดํ”„๋ผ์ธ** - ๋ฌธ์„œ ์†Œ์Šค์—์„œ ๊ฒŒ์‹œ๋œ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ•ญ๋ชฉ๊นŒ์ง€ + +### โœ… ํ’ˆ์งˆ ๋ณด์ฆ +- โœ… **์™„์ „ํ•œ ํ…Œ์ŠคํŠธ** - 3,700+ ํ…Œ์ŠคํŠธ, ํฌ๊ด„์  ์ปค๋ฒ„๋ฆฌ์ง€ + +--- + +## ๐Ÿ“ฆ ์„ค์น˜ + +```bash +# ๊ธฐ๋ณธ ์„ค์น˜ (๋ฌธ์„œ ์Šคํฌ๋ž˜ํ•‘, GitHub ๋ถ„์„, PDF, ํŒจํ‚ค์ง•) +pip install skill-seekers + +# ๋ชจ๋“  LLM ํ”Œ๋žซํผ ์ง€์› ํฌํ•จ +pip install skill-seekers[all-llms] + +# MCP ์„œ๋ฒ„ ํฌํ•จ +pip install skill-seekers[mcp] + +# ์ „์ฒด ๊ธฐ๋Šฅ +pip install skill-seekers[all] +``` + +**์„ ํƒ์— ๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”?** ์„ค์ • ๋งˆ๋ฒ•์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”: +```bash +skill-seekers-setup +``` + +### ์„ค์น˜ ์˜ต์…˜ + +| ์„ค์น˜ ๋ช…๋ น | ๊ธฐ๋Šฅ | +|----------|------| +| `pip install skill-seekers` | ์Šคํฌ๋ž˜ํ•‘, GitHub ๋ถ„์„, PDF, ๋ชจ๋“  ํ”Œ๋žซํผ | +| `pip install skill-seekers[gemini]` | + Google Gemini ์ง€์› | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT ์ง€์› | +| `pip install skill-seekers[all-llms]` | + ๋ชจ๋“  LLM ํ”Œ๋žซํผ | +| `pip install skill-seekers[mcp]` | + Claude Code, Cursor ๋“ฑ์„ ์œ„ํ•œ MCP ์„œ๋ฒ„ | +| `pip install skill-seekers[video]` | + YouTube/Vimeo ์ž๋ง‰ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ | +| `pip install skill-seekers[video-full]` | + Whisper ์ „์‚ฌ ๋ฐ ์‹œ๊ฐ ํ”„๋ ˆ์ž„ ์ถ”์ถœ | +| `pip install skill-seekers[jupyter]` | + Jupyter ๋…ธํŠธ๋ถ ์ง€์› | +| `pip install skill-seekers[pptx]` | + PowerPoint ์ง€์› | +| `pip install skill-seekers[confluence]` | + Confluence ์œ„ํ‚ค ์ง€์› | +| `pip install skill-seekers[notion]` | + Notion ํŽ˜์ด์ง€ ์ง€์› | +| `pip install skill-seekers[rss]` | + RSS/Atom ํ”ผ๋“œ ์ง€์› | +| `pip install skill-seekers[chat]` | + Slack/Discord ์ฑ„ํŒ… ๋‚ด๋ณด๋‚ด๊ธฐ ์ง€์› | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc ๋ฌธ์„œ ์ง€์› | +| `pip install skill-seekers[all]` | ๋ชจ๋“  ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” | + +> **๋™์˜์ƒ ์‹œ๊ฐ ์ข…์†์„ฑ (GPU ์ธ์‹):** `skill-seekers[video-full]` ์„ค์น˜ ํ›„, +> `skill-seekers create --setup`์„ ์‹คํ–‰ํ•˜์—ฌ GPU๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ PyTorch +> ๋นŒ๋“œ + easyocr์„ ์„ค์น˜ํ•˜์„ธ์š”. ์ด๊ฒƒ์ด ์‹œ๊ฐ ์ถ”์ถœ ์ข…์†์„ฑ ์„ค์น˜์˜ ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. + +--- + +## ๐Ÿš€ ์›์ปค๋งจ๋“œ ์„ค์น˜ ์›Œํฌํ”Œ๋กœ + +**์„ค์ •์—์„œ ์—…๋กœ๋“œ๋œ ์Šคํ‚ฌ๊นŒ์ง€ ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ• โ€” ์™„์ „ ์ž๋™ํ™”:** + +```bash +# ๊ณต์‹ ์„ค์ •์—์„œ React ์Šคํ‚ฌ ์„ค์น˜ (Claude์— ์ž๋™ ์—…๋กœ๋“œ) +skill-seekers install --config react + +# ๋กœ์ปฌ ์„ค์ • ํŒŒ์ผ์—์„œ ์„ค์น˜ +skill-seekers install --config configs/custom.json + +# ์—…๋กœ๋“œ ์—†์ด ์„ค์น˜ (ํŒจํ‚ค์ง•๋งŒ) +skill-seekers install --config django --no-upload + +# ์‹คํ–‰ ์—†์ด ์›Œํฌํ”Œ๋กœ ๋ฏธ๋ฆฌ๋ณด๊ธฐ +skill-seekers install --config react --dry-run +``` + +**์†Œ์š” ์‹œ๊ฐ„:** ์ด 20โ€“45๋ถ„ | **ํ’ˆ์งˆ:** ํ”„๋กœ๋•์…˜ ์ค€๋น„ ์™„๋ฃŒ (9/10) | **๋น„์šฉ:** ๋ฌด๋ฃŒ + +**์‹คํ–‰ ๋‹จ๊ณ„:** +``` +๐Ÿ“ฅ ๋‹จ๊ณ„ 1: ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ (์„ค์ • ์ด๋ฆ„์ด ์ œ๊ณต๋œ ๊ฒฝ์šฐ) +๐Ÿ“– ๋‹จ๊ณ„ 2: ๋ฌธ์„œ ์Šคํฌ๋ž˜ํ•‘ +โœจ ๋‹จ๊ณ„ 3: AI ๊ฐ•ํ™” (ํ•„์ˆ˜ - ๊ฑด๋„ˆ๋›ฐ๊ธฐ ๋ถˆ๊ฐ€) +๐Ÿ“ฆ ๋‹จ๊ณ„ 4: ์Šคํ‚ฌ ํŒจํ‚ค์ง• +โ˜๏ธ ๋‹จ๊ณ„ 5: Claude์— ์—…๋กœ๋“œ (์„ ํƒ์‚ฌํ•ญ, API Key ํ•„์š”) +``` + +**์š”๊ตฌ ์‚ฌํ•ญ:** +- ANTHROPIC_API_KEY ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (์ž๋™ ์—…๋กœ๋“œ์šฉ) +- Claude Code Max ํ”Œ๋žœ (๋กœ์ปฌ AI ๊ฐ•ํ™”์šฉ), ๋˜๋Š” `--agent`๋กœ ๋‹ค๋ฅธ AI ์—์ด์ „ํŠธ ์„ ํƒ + +--- + +## ๐Ÿ“Š ๊ธฐ๋Šฅ ๋งคํŠธ๋ฆญ์Šค + +Skill Seekers๋Š” **12๊ฐœ LLM ํ”Œ๋žซํผ**, **8๊ฐœ RAG/๋ฒกํ„ฐ ๋Œ€์ƒ**, **18๊ฐ€์ง€ ์†Œ์Šค ์œ ํ˜•**์„ ์ง€์›ํ•˜๋ฉฐ ๋ชจ๋“  ๋Œ€์ƒ์—์„œ ์™„์ „ํ•œ ๊ธฐ๋Šฅ ๋™๋“ฑ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + +**ํ”Œ๋žซํผ:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, ๋ฒ”์šฉ Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**์†Œ์Šค ์œ ํ˜•:** ๋ฌธ์„œ ์‚ฌ์ดํŠธ, GitHub ์ €์žฅ์†Œ, PDF, Word (.docx), EPUB, ๋™์˜์ƒ, ๋กœ์ปฌ ์ฝ”๋“œ๋ฒ ์ด์Šค, Jupyter ๋…ธํŠธ๋ถ, ๋กœ์ปฌ HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS/Atom ํ”ผ๋“œ, Man ํŽ˜์ด์ง€, Confluence ์œ„ํ‚ค, Notion ํŽ˜์ด์ง€, Slack/Discord ์ฑ„ํŒ… ๋‚ด๋ณด๋‚ด๊ธฐ + +์ „์ฒด ๋‚ด์šฉ์€ [์ „์ฒด ๊ธฐ๋Šฅ ๋งคํŠธ๋ฆญ์Šค](docs/reference/FEATURE_MATRIX.md)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. + +### ๋น ๋ฅธ ํ”Œ๋žซํผ ๋น„๊ต + +| ๊ธฐ๋Šฅ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|------|--------|--------|--------|---------|----------| +| ํ˜•์‹ | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| ์—…๋กœ๋“œ | โœ… API | โœ… API | โœ… API | โœ… API | โŒ ์ˆ˜๋™ | +| ๊ฐ•ํ™” | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ ์—†์Œ | +| ๋ชจ๋“  ์Šคํ‚ฌ ๋ชจ๋“œ | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## ์‚ฌ์šฉ ์˜ˆ์ œ + +### ๋ฌธ์„œ ์Šคํฌ๋ž˜ํ•‘ + +```bash +# ๋ฌธ์„œ ์‚ฌ์ดํŠธ ์Šคํฌ๋ž˜ํ•‘ +skill-seekers create --config configs/react.json + +# ์„ค์ • ์—†์ด ๋น ๋ฅธ ์Šคํฌ๋ž˜ํ•‘ +skill-seekers create https://react.dev --name react + +# ๋น„๋™๊ธฐ ๋ชจ๋“œ (3๋ฐฐ ๋น ๋ฆ„) +skill-seekers create --config configs/godot.json --async --workers 8 + +# ๊ฐ•ํ™”์— ํŠน์ • AI ์—์ด์ „ํŠธ ์‚ฌ์šฉ +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF ์ถ”์ถœ + +```bash +# ๊ธฐ๋ณธ PDF ์ถ”์ถœ +skill-seekers create --pdf docs/manual.pdf --name myskill + +# ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # ํ‘œ ์ถ”์ถœ + --parallel \ # ๋น ๋ฅธ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ + --workers 8 # 8๊ฐœ CPU ์ฝ”์–ด ์‚ฌ์šฉ + +# ์Šค์บ” PDF (ํ•„์š”: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### ๋™์˜์ƒ ์ถ”์ถœ + +```bash +# ๋™์˜์ƒ ์ง€์› ์„ค์น˜ +pip install skill-seekers[video] # ์ž๋ง‰ + ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ +pip install skill-seekers[video-full] # + Whisper ์ „์‚ฌ + ์‹œ๊ฐ ํ”„๋ ˆ์ž„ ์ถ”์ถœ + +# GPU ์ž๋™ ๊ฐ์ง€ ๋ฐ ์‹œ๊ฐ ์ข…์†์„ฑ ์„ค์น˜ (PyTorch + easyocr) +skill-seekers create --setup + +# YouTube ๋™์˜์ƒ์—์„œ ์ถ”์ถœ +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# YouTube ์žฌ์ƒ ๋ชฉ๋ก์—์„œ ์ถ”์ถœ +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# ๋กœ์ปฌ ๋™์˜์ƒ ํŒŒ์ผ์—์„œ ์ถ”์ถœ +skill-seekers create --video-file recording.mp4 --name myrecording + +# ์‹œ๊ฐ ํ”„๋ ˆ์ž„ ๋ถ„์„์œผ๋กœ ์ถ”์ถœ (video-full ์ข…์†์„ฑ ํ•„์š”) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# AI ๊ฐ•ํ™” ์ ์šฉ (OCR ์ •๋ฆฌ + ์™„์„ฑ๋„ ๋†’์€ SKILL.md ์ƒ์„ฑ) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# ๋™์˜์ƒ์˜ ํŠน์ • ๊ตฌ๊ฐ„ ํด๋ฆฌํ•‘ (์ดˆ, MM:SS, HH:MM:SS ํ˜•์‹ ์ง€์›) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# ๋‚ฎ์€ ์‹ ๋ขฐ๋„ OCR ํ”„๋ ˆ์ž„์— Vision API ์‚ฌ์šฉ (ANTHROPIC_API_KEY ํ•„์š”) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# ์ด์ „์— ์ถ”์ถœ๋œ ๋ฐ์ดํ„ฐ์—์„œ ์Šคํ‚ฌ ์žฌ๊ตฌ์ถ• (๋‹ค์šด๋กœ๋“œ ๊ฑด๋„ˆ๋›ฐ๊ธฐ) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **์ „์ฒด ๊ฐ€์ด๋“œ:** [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)์—์„œ ์ „์ฒด CLI ๋ ˆํผ๋Ÿฐ์Šค, +> ์‹œ๊ฐ ํŒŒ์ดํ”„๋ผ์ธ ์ƒ์„ธ ์ •๋ณด, AI ๊ฐ•ํ™” ์˜ต์…˜, ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ™•์ธํ•˜์„ธ์š”. + +### GitHub ์ €์žฅ์†Œ ๋ถ„์„ + +```bash +# ๊ธฐ๋ณธ ์ €์žฅ์†Œ ์Šคํฌ๋ž˜ํ•‘ +skill-seekers create facebook/react + +# ์ธ์ฆ ์„ค์ • (๋” ๋†’์€ ์†๋„ ์ œํ•œ) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# ํฌํ•จ ๋‚ด์šฉ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• +skill-seekers create django/django \ + --include-issues \ # GitHub Issues ์ถ”์ถœ + --max-issues 100 \ # Issue ์ˆ˜ ์ œํ•œ + --include-changelog # CHANGELOG.md ์ถ”์ถœ +``` + +### ํ†ตํ•ฉ ๋‹ค์ค‘ ์†Œ์Šค ์Šคํฌ๋ž˜ํ•‘ + +**๋ฌธ์„œ + GitHub + PDF๋ฅผ ์ถฉ๋Œ ๊ฐ์ง€๊ฐ€ ํฌํ•จ๋œ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ์Šคํ‚ฌ๋กœ ๊ฒฐํ•ฉ:** + +```bash +# ๊ธฐ์กด ํ†ตํ•ฉ ์„ค์ • ์‚ฌ์šฉ +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# ๋˜๋Š” ํ†ตํ•ฉ ์„ค์ • ์ƒ์„ฑ +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**์ถฉ๋Œ ๊ฐ์ง€๊ฐ€ ์ž๋™์œผ๋กœ ๋ฐœ๊ฒฌํ•˜๋Š” ํ•ญ๋ชฉ:** +- ๐Ÿ”ด **์ฝ”๋“œ์— ๋ˆ„๋ฝ** (๋†’์Œ): ๋ฌธ์„œํ™”๋˜์—ˆ์œผ๋‚˜ ๋ฏธ๊ตฌํ˜„ +- ๐ŸŸก **๋ฌธ์„œ์— ๋ˆ„๋ฝ** (์ค‘๊ฐ„): ๊ตฌํ˜„๋˜์—ˆ์œผ๋‚˜ ๋ฏธ๋ฌธ์„œํ™” +- โš ๏ธ **์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ถˆ์ผ์น˜**: ๋งค๊ฐœ๋ณ€์ˆ˜/ํƒ€์ž… ์ฐจ์ด +- โ„น๏ธ **์„ค๋ช… ๋ถˆ์ผ์น˜**: ์„ค๋ช… ์ฐจ์ด + +**์ „์ฒด ๊ฐ€์ด๋“œ:** [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) ์ฐธ์กฐ. + +### ํ”„๋ผ์ด๋น— ์„ค์ • ์ €์žฅ์†Œ + +**ํ”„๋ผ์ด๋น— Git ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€ ๊ฐ„ ์ปค์Šคํ…€ ์„ค์ • ๊ณต์œ :** + +```bash +# ์˜ต์…˜ 1: MCP ๋„๊ตฌ ์‚ฌ์šฉ (๊ถŒ์žฅ) +# ํŒ€ ํ”„๋ผ์ด๋น— ์ €์žฅ์†Œ ๋“ฑ๋ก +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# ํŒ€ ์ €์žฅ์†Œ์—์„œ ์„ค์ • ๊ฐ€์ ธ์˜ค๊ธฐ +fetch_config(source="team", config_name="internal-api") +``` + +**์ง€์› ํ”Œ๋žซํผ:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**์ „์ฒด ๊ฐ€์ด๋“œ:** [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) ์ฐธ์กฐ. + +## ์ž‘๋™ ์›๋ฆฌ + +```mermaid +graph LR + A[๋ฌธ์„œ ์‚ฌ์ดํŠธ] --> B[Skill Seekers] + B --> C[์Šคํฌ๋ž˜ํผ] + B --> D[AI ๊ฐ•ํ™”] + B --> E[ํŒจํ‚ค์ €] + C --> F[์ •๋ฆฌ๋œ ์ฐธ์กฐ ํŒŒ์ผ] + D --> F + F --> E + E --> G[AI ์Šคํ‚ฌ .zip] + G --> H[AI ํ”Œ๋žซํผ์— ์—…๋กœ๋“œ] +``` + +0. **llms.txt ๊ฐ์ง€** - llms-full.txt, llms.txt, llms-small.txt๋ฅผ ์šฐ์„  ํ™•์ธ (์Šค๋งˆํŠธ SPA ๋””์Šค์ปค๋ฒ„๋ฆฌ์˜ ์ผ๋ถ€) +1. **์Šคํฌ๋ž˜ํ•‘**: ๋ฌธ์„œ์˜ ๋ชจ๋“  ํŽ˜์ด์ง€ ์ถ”์ถœ +2. **๋ถ„๋ฅ˜**: ์ฝ˜ํ…์ธ ๋ฅผ ์ฃผ์ œ๋ณ„๋กœ ์ •๋ฆฌ (API, ๊ฐ€์ด๋“œ, ํŠœํ† ๋ฆฌ์–ผ ๋“ฑ) +3. **๊ฐ•ํ™”**: AI๊ฐ€ ๋ฌธ์„œ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋œ ์ข…ํ•ฉ์ ์ธ SKILL.md ์ƒ์„ฑ (`--agent`๋กœ ์—ฌ๋Ÿฌ ์—์ด์ „ํŠธ ์ง€์›) +4. **ํŒจํ‚ค์ง•**: ๋ชจ๋“  ๋‚ด์šฉ์„ ํ”Œ๋žซํผ ์ค€๋น„ ์™„๋ฃŒ๋œ `.zip` ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง + +## ์•„ํ‚คํ…์ฒ˜ + +์‹œ์Šคํ…œ์€ **8๊ฐœ ํ•ต์‹ฌ ๋ชจ๋“ˆ**๊ณผ **5๊ฐœ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ**(์ด ์•ฝ 200๊ฐœ ํด๋ž˜์Šค)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค: + +![ํŒจํ‚ค์ง€ ๊ฐœ์š”](docs/UML/exports/00_package_overview.png) + +| ๋ชจ๋“ˆ | ๋ชฉ์  | ์ฃผ์š” ํด๋ž˜์Šค | +|------|------|-------------| +| **CLICore** | Git ์Šคํƒ€์ผ ๋ช…๋ น์–ด ๋””์ŠคํŒจ์ฒ˜ | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18๊ฐ€์ง€ ์†Œ์Šค ์œ ํ˜• ์ถ”์ถœ๊ธฐ | `DocToSkillConverter`, `DocumentSkillBuilder` (๊ณต์œ  ๋นŒ๋“œ ๋ ˆ์ด์–ด), `UnifiedScraper` | +| **Adaptors** | 20๊ฐœ ์ด์ƒ์˜ ์ถœ๋ ฅ ํ”Œ๋žซํผ ํ˜•์‹ | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | C3.x ์ฝ”๋“œ๋ฒ ์ด์Šค ๋ถ„์„ ํŒŒ์ดํ”„๋ผ์ธ | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10๊ฐ€์ง€ GoF ๊ฐ์ง€๊ธฐ | +| **Enhancement** | `AgentClient`๋ฅผ ํ†ตํ•œ AI ๊ธฐ๋ฐ˜ ์Šคํ‚ฌ ๊ฐœ์„  | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | ์Šคํ‚ฌ ํŒจํ‚ค์ง•, ์—…๋กœ๋“œ, ์„ค์น˜ | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP ์„œ๋ฒ„ (40๊ฐœ ๋„๊ตฌ) | `SkillSeekerMCPServer`, 10๊ฐœ ๋„๊ตฌ ๋ชจ๋“ˆ | +| **Sync** | ๋ฌธ์„œ ๋ณ€๊ฒฝ ๊ฐ์ง€ | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ชจ๋“ˆ: **Parsers** (28๊ฐœ CLI ํŒŒ์„œ), **Storage** (S3/GCS/Azure), **Embedding** (๋‹ค์ค‘ ์ œ๊ณต์ž ๋ฒกํ„ฐ), **Benchmark** (์„ฑ๋Šฅ), **Utilities** (16๊ฐœ ๊ณต์œ  ํ—ฌํผ). + +์ „์ฒด UML ๋‹ค์ด์–ด๊ทธ๋žจ: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML ํ”„๋กœ์ ํŠธ: `docs/UML/skill_seekers.mdj` | HTML API ๋ ˆํผ๋Ÿฐ์Šค: `docs/UML/html/` + +## ๐Ÿ“‹ ์‚ฌ์ „ ์š”๊ตฌ ์‚ฌํ•ญ + +**์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜์„ธ์š”:** + +1. **Python 3.10 ์ด์ƒ** - [๋‹ค์šด๋กœ๋“œ](https://www.python.org/downloads/) | ํ™•์ธ: `python3 --version` +2. **Git** - [๋‹ค์šด๋กœ๋“œ](https://git-scm.com/) | ํ™•์ธ: `git --version` +3. **15โ€“30๋ถ„** (์ตœ์ดˆ ์„ค์ • ์‹œ๊ฐ„) + +**์ฒ˜์Œ ์‚ฌ์šฉํ•˜์‹œ๋‚˜์š”?** โ†’ **[์—ฌ๊ธฐ์—์„œ ์‹œ์ž‘: ํ™•์‹คํ•œ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Claude์— ์Šคํ‚ฌ ์—…๋กœ๋“œ + +์Šคํ‚ฌ์ด ํŒจํ‚ค์ง•๋œ ํ›„, Claude์— ์—…๋กœ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค: + +### ์˜ต์…˜ 1: ์ž๋™ ์—…๋กœ๋“œ (API ๊ธฐ๋ฐ˜) + +```bash +# API Key ์„ค์ • (์ผํšŒ์„ฑ) +export ANTHROPIC_API_KEY=sk-ant-... + +# ํŒจํ‚ค์ง• ํ›„ ์ž๋™ ์—…๋กœ๋“œ +skill-seekers package output/react/ --upload + +# ๋˜๋Š” ๊ธฐ์กด .zip ์—…๋กœ๋“œ +skill-seekers upload output/react.zip +``` + +### ์˜ต์…˜ 2: ์ˆ˜๋™ ์—…๋กœ๋“œ (API Key ๋ถˆํ•„์š”) + +```bash +# ์Šคํ‚ฌ ํŒจํ‚ค์ง• +skill-seekers package output/react/ +# โ†’ output/react.zip ์ƒ์„ฑ + +# ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ˆ˜๋™์œผ๋กœ ์—…๋กœ๋“œ: +# - https://claude.ai/skills ๋ฐฉ๋ฌธ +# - "์Šคํ‚ฌ ์—…๋กœ๋“œ" ํด๋ฆญ +# - output/react.zip ์„ ํƒ +``` + +### ์˜ต์…˜ 3: MCP (Claude Code) + +``` +Claude Code์—์„œ ์ง์ ‘ ์š”์ฒญ: +"React ์Šคํ‚ฌ์„ ํŒจํ‚ค์ง•ํ•˜๊ณ  ์—…๋กœ๋“œํ•ด ์ค˜" +``` + +--- + +## ๐Ÿค– AI ์—์ด์ „ํŠธ์— ์„ค์น˜ + +Skill Seekers๋Š” 19๊ฐœ์˜ AI ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์— ์Šคํ‚ฌ์„ ์ž๋™์œผ๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. + +```bash +# ํŠน์ • ์—์ด์ „ํŠธ์— ์„ค์น˜ +skill-seekers install-agent output/react/ --agent cursor + +# IBM Bob์— ์„ค์น˜ (ํ”„๋กœ์ ํŠธ ๋กœ์ปฌ .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# ๋ชจ๋“  ์—์ด์ „ํŠธ์— ํ•œ ๋ฒˆ์— ์„ค์น˜ +skill-seekers install-agent output/react/ --agent all + +# ์„ค์น˜ ์—†์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### ์ง€์›๋˜๋Š” ์—์ด์ „ํŠธ + +| ์—์ด์ „ํŠธ | ๊ฒฝ๋กœ | ์œ ํ˜• | +|---------|------|------| +| **Claude Code** | `~/.claude/skills/` | ์ „์—ญ | +| **Cursor** | `.cursor/skills/` | ํ”„๋กœ์ ํŠธ | +| **VS Code / Copilot** | `.github/skills/` | ํ”„๋กœ์ ํŠธ | +| **Amp** | `~/.amp/skills/` | ์ „์—ญ | +| **Goose** | `~/.config/goose/skills/` | ์ „์—ญ | +| **OpenCode** | `~/.opencode/skills/` | ์ „์—ญ | +| **Windsurf** | `~/.windsurf/skills/` | ์ „์—ญ | +| **Roo Code** | `.roo/skills/` | ํ”„๋กœ์ ํŠธ | +| **Cline** | `.cline/skills/` | ํ”„๋กœ์ ํŠธ | +| **Aider** | `~/.aider/skills/` | ์ „์—ญ | +| **Bolt** | `.bolt/skills/` | ํ”„๋กœ์ ํŠธ | +| **Kilo Code** | `.kilo/skills/` | ํ”„๋กœ์ ํŠธ | +| **Continue** | `~/.continue/skills/` | ์ „์—ญ | +| **Kimi Code** | `~/.kimi/skills/` | ์ „์—ญ | +| **IBM Bob** | `.bob/skills/` | ํ”„๋กœ์ ํŠธ | + +--- + +## ๐Ÿ”Œ MCP ํ†ตํ•ฉ (40๊ฐœ ๋„๊ตฌ) + +Skill Seekers๋Š” Claude Code, Cursor, Windsurf, VS Code + Cline ๋˜๋Š” IntelliJ IDEA์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” MCP ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. + +```bash +# stdio ๋ชจ๋“œ (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# HTTP ๋ชจ๋“œ (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# ๋ชจ๋“  ์—์ด์ „ํŠธ ์ผ๊ด„ ์ž๋™ ์„ค์ • +./setup_mcp.sh +``` + +**์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ „์ฒด 40๊ฐœ ๋„๊ตฌ:** +- **ํ•ต์‹ฌ (9๊ฐœ):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **ํ™•์žฅ (10๊ฐœ):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **๋ฒกํ„ฐ DB (4๊ฐœ):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **ํด๋ผ์šฐ๋“œ (3๊ฐœ):** `cloud_upload`, `cloud_download`, `cloud_list` + +**์ „์ฒด ๊ฐ€์ด๋“œ:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ ์„ค์ • + +### ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ”„๋ฆฌ์…‹ (24+) + +```bash +# ๋ชจ๋“  ํ”„๋ฆฌ์…‹ ๋‚˜์—ด +# skill-seekers list-configs # v3.7.0์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ +``` + +| ์นดํ…Œ๊ณ ๋ฆฌ | ํ”„๋ฆฌ์…‹ | +|---------|--------| +| **์›น ํ”„๋ ˆ์ž„์›Œํฌ** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **๊ฒŒ์ž„ ๊ฐœ๋ฐœ** | `godot`, `pygame`, `unity` | +| **๋„๊ตฌ ๋ฐ DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **ํ†ตํ•ฉ (๋ฌธ์„œ + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` ๋“ฑ | + +### ๋‚˜๋งŒ์˜ ์„ค์ • ๋งŒ๋“ค๊ธฐ + +```bash +# ์˜ต์…˜ 1: ๋Œ€ํ™”ํ˜• +skill-seekers create --interactive + +# ์˜ต์…˜ 2: ํ”„๋ฆฌ์…‹ ๋ณต์‚ฌ ํ›„ ํŽธ์ง‘ +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐ + +```json +{ + "name": "myframework", + "description": "์ด ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•  ์‹œ์ ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### ์„ค์ • ์ €์žฅ ์œ„์น˜ + +๋„๊ตฌ๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค: +1. ์ œ๊ณต๋œ ์ •ํ™•ํ•œ ๊ฒฝ๋กœ +2. `./configs/` (ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ) +3. `~/.config/skill-seekers/configs/` (์‚ฌ์šฉ์ž ์„ค์ • ๋””๋ ‰ํ„ฐ๋ฆฌ) +4. SkillSeekersWeb.com API (ํ”„๋ฆฌ์…‹ ์„ค์ •) + +--- + +## ๐Ÿ“Š ์ƒ์„ฑ๋˜๋Š” ๋‚ด์šฉ + +``` +output/ +โ”œโ”€โ”€ godot_data/ # ์Šคํฌ๋ž˜ํ•‘๋œ ์›์‹œ ๋ฐ์ดํ„ฐ +โ”‚ โ”œโ”€โ”€ pages/ # JSON ํŒŒ์ผ (ํŽ˜์ด์ง€๋‹น ํ•˜๋‚˜) +โ”‚ โ””โ”€โ”€ summary.json # ๊ฐœ์š” +โ”‚ +โ””โ”€โ”€ godot/ # ์Šคํ‚ฌ ํŒŒ์ผ + โ”œโ”€โ”€ SKILL.md # ์‹ค์ œ ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋œ ๊ฐ•ํ™” ๋ฒ„์ „ + โ”œโ”€โ”€ references/ # ๋ถ„๋ฅ˜๋œ ๋ฌธ์„œ + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # ๋น„์–ด ์žˆ์Œ (์ง์ ‘ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ) + โ””โ”€โ”€ assets/ # ๋น„์–ด ์žˆ์Œ (์ง์ ‘ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ) +``` + +--- + +## ๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ + +### ์ฝ˜ํ…์ธ ๊ฐ€ ์ถ”์ถœ๋˜์ง€ ์•Š๋‚˜์š”? +- `main_content` ์„ ํƒ์ž๋ฅผ ํ™•์ธํ•˜์„ธ์š” +- ์‹œ๋„ํ•ด ๋ณด์„ธ์š”: `article`, `main`, `div[role="main"]` + +### ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋‚˜์š”? +```bash +# ๊ฐ•์ œ ์žฌ์Šคํฌ๋ž˜ํ•‘ +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ๋ถ„๋ฅ˜๊ฐ€ ์ ์ ˆํ•˜์ง€ ์•Š๋‚˜์š”? +์„ค์ •์˜ `categories` ์„น์…˜์„ ๋” ์ ํ•ฉํ•œ ํ‚ค์›Œ๋“œ๋กœ ํŽธ์ง‘ํ•˜์„ธ์š”. + +### ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? +```bash +# ์ด์ „ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ํ›„ ์žฌ์Šคํฌ๋ž˜ํ•‘ +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ๊ฐ•ํ™”๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋‚˜์š”? +```bash +# API Key๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ +echo $ANTHROPIC_API_KEY + +# LOCAL ๋ชจ๋“œ ์‹œ๋„ (Claude Code Max ์‚ฌ์šฉ, API Key ๋ถˆํ•„์š”) +skill-seekers enhance output/react/ --mode LOCAL + +# ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๊ฐ•ํ™” ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub ์†๋„ ์ œํ•œ ๋ฌธ์ œ? +```bash +# GitHub ํ† ํฐ ์„ค์ • (์‹œ๊ฐ„๋‹น 5000ํšŒ vs ์ต๋ช… 60ํšŒ) +export GITHUB_TOKEN=ghp_your_token_here + +# ๋˜๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœํ•„ ์„ค์ • +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ ์„ฑ๋Šฅ + +| ์ž‘์—… | ์‹œ๊ฐ„ | ์ฐธ๊ณ  | +|------|------|------| +| ์Šคํฌ๋ž˜ํ•‘ (๋™๊ธฐ) | 15โ€“45๋ถ„ | ์ตœ์ดˆ ์‹คํ–‰๋งŒ, ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ | +| ์Šคํฌ๋ž˜ํ•‘ (๋น„๋™๊ธฐ) | 5โ€“15๋ถ„ | `--async` ํ”Œ๋ž˜๊ทธ๋กœ 2โ€“3๋ฐฐ ๋น ๋ฆ„ | +| ๋นŒ๋“œ | 1โ€“3๋ถ„ | ์บ์‹œ์—์„œ ๋น ๋ฅธ ์žฌ๊ตฌ์ถ• | +| ์žฌ๊ตฌ์ถ• | <1๋ถ„ | `--skip-scrape` ์‚ฌ์šฉ | +| ๊ฐ•ํ™” (LOCAL) | 30โ€“60์ดˆ | Claude Code Max ์‚ฌ์šฉ | +| ๊ฐ•ํ™” (API) | 20โ€“40์ดˆ | API Key ํ•„์š” | +| ๋™์˜์ƒ (์ž๋ง‰) | 1โ€“3๋ถ„ | YouTube/๋กœ์ปฌ, ์ž๋ง‰๋งŒ | +| ๋™์˜์ƒ (์‹œ๊ฐ) | 5โ€“15๋ถ„ | + OCR ํ”„๋ ˆ์ž„ ์ถ”์ถœ | +| ํŒจํ‚ค์ง• | 5โ€“10์ดˆ | ์ตœ์ข… .zip ์ƒ์„ฑ | + +--- + +## ๐Ÿ†• v3.6.0 ์‹ ๊ทœ ๊ธฐ๋Šฅ + +### ์›Œํฌํ”Œ๋กœ์šฐ ํ”„๋ฆฌ์…‹ +`--preset`์œผ๋กœ ๋ถ„์„ ๊นŠ์ด ์ œ์–ด: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # ๋น ๋ฆ„, ํ‘œ๋ฉด ์ˆ˜์ค€ +skill-seekers create https://docs.react.dev/ --preset standard # ๊ท ํ˜• (๊ธฐ๋ณธ๊ฐ’) +skill-seekers create https://docs.react.dev/ --preset comprehensive # ์‹ฌ์ธต, ์™„์ „ ๋ถ„์„ +``` + +### ๋ผ์ดํ”„์‚ฌ์ดํด ํ”Œ๋ž˜๊ทธ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # ์Šคํฌ๋ž˜ํ•‘ ์—†์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ +skill-seekers create https://docs.react.dev/ --fresh # ์บ์‹œ ๋ฌด์‹œ, ์ „์ฒด ์žฌ์Šคํฌ๋ž˜ํ•‘ +skill-seekers create https://docs.react.dev/ --resume # ์ค‘๋‹จ๋œ ์ž‘์—… ์žฌ๊ฐœ +skill-seekers create https://docs.react.dev/ --skip-scrape # ๊ธฐ์กด ์ถœ๋ ฅ ์žฌํŒจํ‚ค์ง• +``` + +### ์ƒํƒœ ํ™•์ธ ๋ฐ ์œ ํ‹ธ๋ฆฌํ‹ฐ +```bash +skill-seekers doctor # ์„ค์น˜ ๋ฐ ํ™˜๊ฒฝ ์ง„๋‹จ +skill-seekers sync-config # ์„ค์ • ๋“œ๋ฆฌํ”„ํŠธ ๊ฐ์ง€ +skill-seekers stream # ๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์„œ ์ŠคํŠธ๋ฆฌ๋ฐ ์ˆ˜์ง‘ +skill-seekers update output/react/ # ์ฆ๋ถ„ ์—…๋ฐ์ดํŠธ +skill-seekers multilang # ๋‹ค๊ตญ์–ด ์Šคํ‚ฌ ์ƒ์„ฑ +skill-seekers quality output/react/ # ํ’ˆ์งˆ ๋ฆฌํฌํŠธ (--threshold 7 ์ถ”๊ฐ€๋กœ ๊ฒŒ์ดํŠธ ์ ์šฉ: 7/10 ๋ฏธ๋งŒ์ด๋ฉด 0์ด ์•„๋‹Œ ์ข…๋ฃŒ ์ฝ”๋“œ) +``` + +### RAG ์ฒญํ‚น ์˜ต์…˜ (ํŒจํ‚ค์ง•) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๊ฒŒ์‹œ +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### ์ถ”๊ฐ€ ์„ ํƒ์  ์ข…์†์„ฑ +| Extra | ์„ค์น˜ | ์šฉ๋„ | +|-------|------|------| +| `browser` | `pip install "skill-seekers[browser]"` | SPA ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ํ—ค๋“œ๋ฆฌ์Šค Playwright | +| `embedding` | `pip install "skill-seekers[embedding]"` | ์ž„๋ฒ ๋”ฉ ์„œ๋ฒ„ ์ง€์› | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` ๋“ฑ | ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ์—…๋กœ๋“œ | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | ํ†ตํ•ฉ ๋ฒกํ„ฐ DB ์—…๋กœ๋“œ ์ข…์†์„ฑ | + +--- + +## ๐Ÿ“š ๋ฌธ์„œ + +### ์‹œ์ž‘ ๊ฐ€์ด๋“œ +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **์‹ ๊ทœ ์‚ฌ์šฉ์ž๋Š” ์—ฌ๊ธฐ์—์„œ ์‹œ์ž‘!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - ๊ฒฝํ—˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ๋น ๋ฅธ ์‹œ์ž‘ +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - ํ•œ ํŽ˜์ด์ง€ ์น˜ํŠธ ์‹œํŠธ + +### ์•„ํ‚คํ…์ฒ˜ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - 14๊ฐœ ๋‹ค์ด์–ด๊ทธ๋žจ์ด ํฌํ•จ๋œ UML ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์š” +- **[docs/UML/exports/](docs/UML/exports/)** - PNG ๋‹ค์ด์–ด๊ทธ๋žจ ๋‚ด๋ณด๋‚ด๊ธฐ (ํŒจํ‚ค์ง€ ๊ฐœ์š” + 13๊ฐœ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - ์ „์ฒด HTML API ๋ ˆํผ๋Ÿฐ์Šค (๋ชจ๋“  ํด๋ž˜์Šค, ์—ฐ์‚ฐ, ์†์„ฑ) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML ํ”„๋กœ์ ํŠธ ํŒŒ์ผ ([StarUML](https://staruml.io/)๋กœ ์—ด๊ธฐ) + +### ๊ฐ€์ด๋“œ +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - 10Kโ€“40K+ ํŽ˜์ด์ง€ ๋ฌธ์„œ ์ฒ˜๋ฆฌ +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI ๊ฐ•ํ™” ๋ชจ๋“œ ๊ฐ€์ด๋“œ +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP ํ†ตํ•ฉ ์„ค์ • +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - ๋‹ค์ค‘ ์†Œ์Šค ์Šคํฌ๋ž˜ํ•‘ +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - ๋™์˜์ƒ ์ถ”์ถœ ์ „์ฒด ๊ฐ€์ด๋“œ + +### ํ†ตํ•ฉ ๊ฐ€์ด๋“œ +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - ๋ชจ๋“  RAG ํŒŒ์ดํ”„๋ผ์ธ + +--- + +## ๐Ÿ“ ๋ผ์ด์„ ์Šค + +MIT ๋ผ์ด์„ ์Šค - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](LICENSE) ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š” + +--- + +์ฆ๊ฑฐ์šด ์Šคํ‚ฌ ๋นŒ๋”ฉ ๋˜์„ธ์š”! ๐Ÿš€ + +--- + +## ๐Ÿ”’ ๋ณด์•ˆ + +[![MseeP.ai ๋ณด์•ˆ ํ‰๊ฐ€ ๋ฐฐ์ง€](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› ํ›„์›์‚ฌ + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” ํ’€ ๋ชจ๋‹ฌ, OpenAI ํ˜ธํ™˜ AI ์ถ”๋ก  ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. Skill Seekers๋Š” `--target atlas`์™€ `ATLAS_API_KEY`๋ฅผ ํ†ตํ•ด ํŒจํ‚ค์ง•/๊ฐ•ํ™” ๋Œ€์ƒ์œผ๋กœ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. diff --git a/README.md b/README.md new file mode 100644 index 0000000..056157c --- /dev/null +++ b/README.md @@ -0,0 +1,1375 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +English | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +[![Version](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP Integration](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Tested](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Project Board](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI version](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![Website](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter Follow](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Repo stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) + +yusufkaraaslan%2FSkill_Seekers | Trendshift + +**๐Ÿง  The data layer for AI systems.** Skill Seekers turns documentation sites, GitHub repos, PDFs, videos, notebooks, wikis, and 10+ more source types into structured knowledge assetsโ€”ready to power AI Skills (Claude, Gemini, OpenAI), RAG pipelines (LangChain, LlamaIndex, Pinecone), and AI coding assistants (Cursor, Windsurf, Cline) in minutes, not hours. + +> ๐ŸŒ **[Visit SkillSeekersWeb.com](https://skillseekersweb.com/)** - Browse 24+ preset configs, share your configs, and access complete documentation! + +> ๐Ÿ“‹ **[View Development Roadmap & Tasks](https://github.com/users/yusufkaraaslan/projects/2)** - 134 tasks across 10 categories, pick any to contribute! + +## ๐ŸŒ Ecosystem + +Skill Seekers is a multi-repo project. Here's where everything lives: + +| Repository | Description | Links | +|-----------|-------------|-------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | Core CLI & MCP server (this repo) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Website & documentation | [Live](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Community config repository | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action for CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code plugin | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap for macOS | | + +> **Want to contribute?** The website and configs repos are great starting points for new contributors! + +## ๐Ÿง  The Data Layer for AI Systems + +**Skill Seekers is the universal preprocessing layer** that sits between raw documentation and every AI system that consumes it. Whether you are building Claude skills, a LangChain RAG pipeline, or a Cursor `.cursorrules` file โ€” the data preparation is identical. You do it once, and export to all targets. + +```bash +# One command โ†’ structured knowledge asset +skill-seekers create https://docs.react.dev/ +# or: skill-seekers create facebook/react +# or: skill-seekers create ./my-project + +# Export to any AI system +skill-seekers package output/react --target claude # โ†’ Claude AI Skill (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob skill directory +``` + +### What gets built + +| Output | Target | What it powers | +|--------|--------|---------------| +| **Claude Skill** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini Skill** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, custom assistants | +| **LangChain Documents** | `--target langchain` | QA chains, agents, retrievers | +| **LlamaIndex TextNodes** | `--target llama-index` | Query engines, chat engines | +| **Haystack Documents** | `--target haystack` | Enterprise RAG pipelines | +| **Pinecone-ready** (Markdown) | `--target markdown` | Vector upsert | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Local vector DBs | +| **IBM Bob Skill** (directory) | `--target ibm-bob` | IBM Bob project/global skills | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ copy SKILL.md | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ copy | VS Code, IntelliJ, Vim | + +### Why it matters + +- โšก **99% faster** โ€” Days of manual data prep โ†’ 15โ€“45 minutes +- ๐ŸŽฏ **AI Skill quality** โ€” 500+ line SKILL.md files with examples, patterns, and guides +- ๐Ÿ“Š **RAG-ready chunks** โ€” Smart chunking preserves code blocks and maintains context +- ๐ŸŽฌ **Videos** โ€” Extract code, transcripts, and structured knowledge from YouTube and local videos +- ๐Ÿ”„ **Multi-source** โ€” Combine 18 source types (docs, GitHub, PDFs, videos, notebooks, wikis, and more) into one knowledge asset +- ๐ŸŒ **One prep, every target** โ€” Export the same asset to 21 platforms without re-scraping +- โœ… **Battle-tested** โ€” 3,700+ tests, 24+ framework presets, production-ready + +## ๐Ÿš€ Quick Start (3 Commands) + +```bash +# 1. Install +pip install skill-seekers + +# 2. Create skill from any source +skill-seekers create https://docs.django.com/ + +# 3. Package for your AI platform +skill-seekers package output/django --target claude +``` + +**That's it!** You now have `output/django-claude.zip` ready to use. + +```bash +# Use a different AI agent for enhancement (default: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI-driven project scan (new) + +Point `scan` at any project and an AI agent reads its manifests, README, +Dockerfile/CI and sampled source imports โ€” then emits one config per detected +framework plus a `-codebase.json` for your own code. Pins the +detected version so re-running reports bumps: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# Then build any of them +skill-seekers create ./configs/scanned/react.json +``` + +If a detection has no existing preset, the AI generates a fresh config; on +exit you can optionally publish it back to the [community registry](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### Other Sources (18 Supported) + +```bash +# GitHub repository +skill-seekers create facebook/react + +# Local project +skill-seekers create ./my-project + +# PDF document +skill-seekers create manual.pdf + +# Word document +skill-seekers create report.docx + +# EPUB e-book +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# OpenAPI spec +skill-seekers create openapi.yaml + +# PowerPoint presentation +skill-seekers create presentation.pptx + +# AsciiDoc document +skill-seekers create guide.adoc + +# Local HTML file (auto-detected by extension) +skill-seekers create page.html + +# Whole directory of HTML files (auto-detected for HTML-dominant dirs) +skill-seekers create ./mirror_output/site/ + +# Force HTML mode on a mixed/code-heavy directory +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom feed +skill-seekers create feed.rss + +# Man page +skill-seekers create curl.1 + +# Video (YouTube, Vimeo, or local file โ€” requires skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# First time? Auto-install GPU-aware visual deps: +skill-seekers create --setup + +# Confluence wiki +skill-seekers create --space-key TEAM --name wiki + +# Notion pages +skill-seekers create --database-id ... --name docs + +# Slack/Discord chat export +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### Export Everywhere + +```bash +# Package for multiple platforms +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## What is Skill Seekers? + +Skill Seekers is the **data layer for AI systems**. It transforms 18 source typesโ€”documentation websites, GitHub repositories, PDFs, videos, Jupyter Notebooks, Word/EPUB/AsciiDoc documents, OpenAPI specs, PowerPoint presentations, RSS feeds, man pages, Confluence wikis, Notion pages, Slack/Discord exports, and moreโ€”into structured knowledge assets for every AI target: + +| Use Case | What you get | Examples | +|----------|-------------|---------| +| **AI Skills** | Comprehensive SKILL.md + references | Claude Code, Gemini, GPT | +| **RAG Pipelines** | Chunked documents with rich metadata | LangChain, LlamaIndex, Haystack | +| **Vector Databases** | Pre-formatted data ready for upsert | Pinecone, Chroma, Weaviate, FAISS | +| **AI Coding Assistants** | Context files your IDE AI reads automatically | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š Documentation + +| I want to... | Read this | +|--------------|-----------| +| **Get started quickly** | [Quick Start](docs/getting-started/02-quick-start.md) - 3 commands to first skill | +| **Understand concepts** | [Core Concepts](docs/user-guide/01-core-concepts.md) - How it works | +| **Scrape sources** | [Scraping Guide](docs/user-guide/02-scraping.md) - All source types | +| **Enhance skills** | [Enhancement Guide](docs/user-guide/03-enhancement.md) - AI enhancement | +| **Export skills** | [Packaging Guide](docs/user-guide/04-packaging.md) - Platform export | +| **Look up commands** | [CLI Reference](docs/reference/CLI_REFERENCE.md) - All 20 commands | +| **Configure** | [Config Format](docs/reference/CONFIG_FORMAT.md) - JSON specification | +| **Fix issues** | [Troubleshooting](docs/user-guide/06-troubleshooting.md) - Common problems | + +**Complete documentation:** [docs/README.md](docs/README.md) + +Instead of spending days on manual preprocessing, Skill Seekers: + +1. **Ingests** โ€” docs, GitHub repos, local codebases, PDFs, videos, notebooks, wikis, and 10+ more source types +2. **Analyzes** โ€” deep AST parsing, pattern detection, API extraction +3. **Structures** โ€” categorized reference files with metadata +4. **Enhances** โ€” AI-powered SKILL.md generation (Claude, Gemini, or local) +5. **Exports** โ€” 16 platform-specific formats from one asset + +## Why Use This? + +### For AI Skill Builders (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **Production-grade Skills** โ€” 500+ line SKILL.md files with code examples, patterns, and guides +- ๐Ÿ”„ **Enhancement Workflows** โ€” Apply `security-focus`, `architecture-comprehensive`, or custom YAML presets +- ๐ŸŽฎ **Any Domain** โ€” Game engines (Godot, Unity), frameworks (React, Django), internal tools +- ๐Ÿ”ง **Teams** โ€” Combine internal docs + code into a single source of truth +- ๐Ÿ“š **Quality** โ€” AI-enhanced with examples, quick reference, and navigation guidance + +### For RAG Builders & AI Engineers + +- ๐Ÿค– **RAG-ready data** โ€” Pre-chunked LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- ๐Ÿš€ **99% faster** โ€” Days of preprocessing โ†’ 15โ€“45 minutes +- ๐Ÿ“Š **Smart metadata** โ€” Categories, sources, types โ†’ better retrieval accuracy +- ๐Ÿ”„ **Multi-source** โ€” Combine docs + GitHub + PDFs + videos in one pipeline +- ๐ŸŒ **Platform-agnostic** โ€” Export to any vector DB or framework without re-scraping + +### For AI Coding Assistant Users + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” Generate `.cursorrules` / `.windsurfrules` / `.clinerules` automatically +- ๐ŸŽฏ **Persistent context** โ€” AI "knows" your frameworks without repeated prompting +- ๐Ÿ“š **Always current** โ€” Update context in minutes when docs change + +## Key Features + +### ๐ŸŒ Documentation Scraping +- โœ… **Smart SPA Discovery** - Three-layer discovery for JavaScript SPA sites (sitemap.xml โ†’ llms.txt โ†’ headless browser rendering) +- โœ… **llms.txt Support** - Automatically detects and uses LLM-ready documentation files (10x faster) +- โœ… **Universal Scraper** - Works with ANY documentation website +- โœ… **Smart Categorization** - Automatically organizes content by topic +- โœ… **Code Language Detection** - Recognizes Python, JavaScript, C++, GDScript, etc. +- โœ… **24+ Ready-to-Use Presets** - Godot, React, Vue, Django, FastAPI, and more + +### ๐Ÿ“„ PDF Support +- โœ… **Basic PDF Extraction** - Extract text, code, and images from PDF files +- โœ… **OCR for Scanned PDFs** - Extract text from scanned documents +- โœ… **Password-Protected PDFs** - Handle encrypted PDFs +- โœ… **Table Extraction** - Extract complex tables from PDFs +- โœ… **Parallel Processing** - 3x faster for large PDFs +- โœ… **Intelligent Caching** - 50% faster on re-runs + +### ๐ŸŽฌ Video Extraction +- โœ… **YouTube & Local Videos** - Extract transcripts, on-screen code, and structured knowledge from videos +- โœ… **Visual Frame Analysis** - OCR extraction from code editors, terminals, slides, and diagrams +- โœ… **GPU Auto-Detection** - Automatically installs correct PyTorch build (CUDA/ROCm/MPS/CPU) +- โœ… **AI Enhancement** - Two-pass: clean OCR artifacts + generate polished SKILL.md +- โœ… **Time Clipping** - Extract specific sections with `--start-time` and `--end-time` +- โœ… **Playlist Support** - Batch process all videos in a YouTube playlist +- โœ… **Vision API Fallback** - Use Claude Vision for low-confidence OCR frames + +### ๐Ÿ™ GitHub Repository Analysis +- โœ… **Deep Code Analysis** - AST parsing for Python, JavaScript, TypeScript, Java, C++, Go +- โœ… **API Extraction** - Functions, classes, methods with parameters and types +- โœ… **Repository Metadata** - README, file tree, language breakdown, stars/forks +- โœ… **GitHub Issues & PRs** - Fetch open/closed issues with labels and milestones +- โœ… **CHANGELOG & Releases** - Automatically extract version history +- โœ… **Conflict Detection** - Compare documented APIs vs actual code implementation +- โœ… **MCP Integration** - Natural language: "Scrape GitHub repo facebook/react" + +### ๐Ÿ”„ Unified Multi-Source Scraping +- โœ… **Combine Multiple Sources** - Mix documentation + GitHub + PDF in one skill +- โœ… **Conflict Detection** - Automatically finds discrepancies between docs and code +- โœ… **Intelligent Merging** - Rule-based or AI-powered conflict resolution +- โœ… **Transparent Reporting** - Side-by-side comparison with โš ๏ธ warnings +- โœ… **Documentation Gap Analysis** - Identifies outdated docs and undocumented features +- โœ… **Single Source of Truth** - One skill showing both intent (docs) and reality (code) +- โœ… **Backward Compatible** - Legacy single-source configs still work + +### ๐Ÿค– Multi-LLM Platform Support +- โœ… **12 LLM Platforms** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Generic Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **Universal Scraping** - Same documentation works for all platforms +- โœ… **Platform-Specific Packaging** - Optimized formats for each LLM +- โœ… **One-Command Export** - `--target` flag selects platform +- โœ… **Optional Dependencies** - Install only what you need +- โœ… **100% Backward Compatible** - Existing Claude workflows unchanged + +| Platform | Format | Upload | Enhancement | API Key | Custom Endpoint | +|----------|--------|--------|-------------|---------|-----------------| +| **Claude AI** | ZIP + YAML | โœ… Auto | โœ… Yes | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… Auto | โœ… Yes | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… Auto | โœ… Yes | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… Auto | โœ… Yes | MINIMAX_API_KEY | - | +| **Generic Markdown** | ZIP | โŒ Manual | โŒ No | - | - | + +```bash +# Claude (default - no changes needed!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Generic Markdown (universal export) +skill-seekers package output/react/ --target markdown +# Use the markdown files directly in any LLM +``` + +
+๐Ÿ”ง Use your own AI provider (OpenAI-compatible endpoints + subscriptions, no Anthropic credits needed) + +The optional AI **enhancement** step (used by `create`, `scan`, and `enhance`) does **not** require an Anthropic key. You have three ways to power it: + +**1. Use a subscription you already pay for โ€” no API credits at all (LOCAL agent mode)** + +Skill Seekers can shell out to a coding-agent CLI you're already logged into, so enhancement runs on your existing plan instead of metered API tokens: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ your ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ your Claude Pro/Max +``` + +Supported agents: `claude`, `codex`, `copilot`, `opencode`, `kimi`, and `custom` +(pair `--agent custom` with `--agent-cmd " ..."` to drive any other tool). + +**2. Any OpenAI-compatible provider (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +All of these expose an OpenAI-compatible `/v1` endpoint. Point Skill Seekers at one with three env vars โ€” it detects `OPENAI_API_KEY`, and the OpenAI SDK honors `OPENAI_BASE_URL` automatically: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # provider endpoint (see table) +export OPENAI_MODEL="" # required โ€” default gpt-4o won't exist elsewhere +skill-seekers create +``` + +| Provider | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> Provider detection picks the **first** API-key env var it finds (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Set `SKILL_SEEKER_PROVIDER` to force a specific provider, or make sure the higher-priority keys are unset. + +**3. Claude-compatible endpoints (e.g. GLM, proxies)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) and Kimi/Moonshot (`MOONSHOT_API_KEY`) are also supported natively. See **[Environment Variables Reference](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** for the full list, including per-provider model overrides. + +
+ +**Installation:** +```bash +# Install with Gemini support +pip install skill-seekers[gemini] + +# Install with OpenAI support +pip install skill-seekers[openai] + +# Install with MiniMax support +pip install skill-seekers[minimax] + +# Install with all LLM platforms +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG Framework Integrations + +- โœ… **LangChain Documents** - Direct export to `Document` format with `page_content` + metadata + - Perfect for: QA chains, retrievers, vector stores, agents + - Example: [LangChain RAG Pipeline](examples/langchain-rag-pipeline/) + - Guide: [LangChain Integration](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - Export to `TextNode` format with unique IDs + embeddings + - Perfect for: Query engines, chat engines, storage context + - Example: [LlamaIndex Query Engine](examples/llama-index-query-engine/) + - Guide: [LlamaIndex Integration](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone-Ready Format** - Optimized for vector database upsert + - Perfect for: Production vector search, semantic search, hybrid search + - Example: [Pinecone Upsert](examples/pinecone-upsert/) + - Guide: [Pinecone Integration](docs/integrations/PINECONE.md) + +**Quick Export:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (Universal) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Complete RAG Pipeline Guide:** [RAG Pipelines Documentation](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI Coding Assistant Integrations + +Transform any framework documentation into expert coding context for 4+ AI assistants: + +- โœ… **Cursor IDE** - Generate `.cursorrules` for AI-powered code suggestions + - Perfect for: Framework-specific code generation, consistent patterns + - Works with: Cursor IDE (VS Code fork) + - Guide: [Cursor Integration](docs/integrations/CURSOR.md) + - Example: [Cursor React Skill](examples/cursor-react-skill/) + +- โœ… **Windsurf** - Customize Windsurf's AI assistant context with `.windsurfrules` + - Perfect for: IDE-native AI assistance, flow-based coding + - Works with: Windsurf IDE by Codeium + - Guide: [Windsurf Integration](docs/integrations/WINDSURF.md) + - Example: [Windsurf FastAPI Context](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - System prompts + MCP for VS Code agent + - Perfect for: Agentic code generation in VS Code + - Works with: Cline extension for VS Code + - Guide: [Cline Integration](docs/integrations/CLINE.md) + - Example: [Cline Django Assistant](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - Context servers for IDE-agnostic AI + - Perfect for: Multi-IDE environments (VS Code, JetBrains, Vim), custom LLM providers + - Works with: Any IDE with Continue.dev plugin + - Guide: [Continue Integration](docs/integrations/CONTINUE_DEV.md) + - Example: [Continue Universal Context](examples/continue-dev-universal/) + +**Quick Export for AI Coding Tools:** +```bash +# For any AI coding assistant (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # or --target markdown + +# Copy to your project (example for Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Or for Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Or for Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# Or for Continue.dev (HTTP server) +python examples/continue-dev-universal/context_server.py +# Configure in ~/.continue/config.json +``` + +**Integration Hub:** [All AI System Integrations](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ Three-Stream GitHub Architecture +- โœ… **Triple-Stream Analysis** - Split GitHub repos into Code, Docs, and Insights streams +- โœ… **Unified Codebase Analyzer** - Works with GitHub URLs AND local paths +- โœ… **C3.x as Analysis Depth** - Choose 'basic' (1-2 min) or 'c3x' (20-60 min) analysis +- โœ… **Enhanced Router Generation** - GitHub metadata, README quick start, common issues +- โœ… **Issue Integration** - Top problems and solutions from GitHub issues +- โœ… **Smart Routing Keywords** - GitHub labels weighted 2x for better topic detection + +**Three Streams Explained:** +- **Stream 1: Code** - Deep C3.x analysis (patterns, examples, guides, configs, architecture) +- **Stream 2: Docs** - Repository documentation (README, CONTRIBUTING, docs/*.md) +- **Stream 3: Insights** - Community knowledge (issues, labels, stars, forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# Analyze GitHub repo with all three streams +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # or "basic" for fast analysis + fetch_github_metadata=True +) + +# Access code stream (C3.x analysis) +print(f"Design patterns: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Test examples: {result.code_analysis['c3_2_examples_count']}") + +# Access docs stream (repository docs) +print(f"README: {result.github_docs['readme'][:100]}") + +# Access insights stream (GitHub metadata) +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"Common issues: {len(result.github_insights['common_problems'])}") +``` + +**See complete documentation**: [Three-Stream Implementation Summary](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” Smart Rate Limit Management & Configuration +- โœ… **Multi-Token Configuration System** - Manage multiple GitHub accounts (personal, work, OSS) + - Secure config storage at `~/.config/skill-seekers/config.json` (600 permissions) + - Per-profile rate limit strategies: `prompt`, `wait`, `switch`, `fail` + - Configurable timeout per profile (default: 30 min, prevents indefinite waits) + - Smart fallback chain: CLI arg โ†’ Env var โ†’ Config file โ†’ Prompt + - API key management for Claude, Gemini, OpenAI +- โœ… **Interactive Configuration Wizard** - Beautiful terminal UI for easy setup + - Browser integration for token creation (auto-opens GitHub, etc.) + - Token validation and connection testing + - Visual status display with color coding +- โœ… **Intelligent Rate Limit Handler** - No more indefinite waits! + - Upfront warning about rate limits (60/hour vs 5000/hour) + - Real-time detection from GitHub API responses + - Live countdown timers with progress + - Automatic profile switching when rate limited + - Four strategies: prompt (ask), wait (countdown), switch (try another), fail (abort) +- โœ… **Resume Capability** - Continue interrupted jobs + - Auto-save progress at configurable intervals (default: 60 sec) + - List all resumable jobs with progress details + - Auto-cleanup of old jobs (default: 7 days) +- โœ… **CI/CD Support** - Non-interactive mode for automation + - `--non-interactive` flag fails fast without prompts + - `--profile` flag to select specific GitHub account + - Clear error messages for pipeline logs + +**Quick Setup:** +```bash +# One-time configuration (5 minutes) +skill-seekers config --github + +# Use specific profile for private repos +skill-seekers create mycompany/private-repo --profile work + +# CI/CD mode (fail fast, no prompts) +skill-seekers create owner/repo --non-interactive + +# Resume interrupted job +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Rate Limit Strategies Explained:** +- **prompt** (default) - Ask what to do when rate limited (wait, switch, setup token, cancel) +- **wait** - Automatically wait with countdown timer (respects timeout) +- **switch** - Automatically try next available profile (for multi-account setups) +- **fail** - Fail immediately with clear error (perfect for CI/CD) + +### ๐ŸŽฏ Bootstrap Skill - Self-Hosting + +Generate skill-seekers as a skill to use within your AI agent (Claude Code, Kimi, Codex, etc.): + +```bash +# Generate the skill +./scripts/bootstrap_skill.sh + +# Install to Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**What you get:** +- โœ… **Complete skill documentation** - All CLI commands and usage patterns +- โœ… **CLI command reference** - Every tool and its options documented +- โœ… **Quick start examples** - Common workflows and best practices +- โœ… **Auto-generated API docs** - Code analysis, patterns, and examples + +### ๐Ÿ” Private Config Repositories +- โœ… **Git-Based Config Sources** - Fetch configs from private/team git repositories +- โœ… **Multi-Source Management** - Register unlimited GitHub, GitLab, Bitbucket repos +- โœ… **Team Collaboration** - Share custom configs across 3-5 person teams +- โœ… **Enterprise Support** - Scale to 500+ developers with priority-based resolution +- โœ… **Secure Authentication** - Environment variable tokens (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **Intelligent Caching** - Clone once, pull updates automatically +- โœ… **Offline Mode** - Work with cached configs when offline + +### ๐Ÿค– Codebase Analysis (C3.x) + +**C3.4: Configuration Pattern Extraction with AI Enhancement** +- โœ… **9 Config Formats** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 Pattern Types** - Database, API, logging, cache, email, auth, server configurations +- โœ… **AI Enhancement** - Optional dual-mode AI analysis (API + LOCAL) + - Explains what each config does + - Suggests best practices and improvements + - **Security analysis** - Finds hardcoded secrets, exposed credentials +- โœ… **Auto-Documentation** - Generates JSON + Markdown documentation of all configs +- โœ… **MCP Integration** - `extract_config_patterns` tool with enhancement support + +**C3.3: AI-Enhanced How-To Guides** +- โœ… **Comprehensive AI Enhancement** - Transforms basic guides into professional tutorials +- โœ… **5 Automatic Improvements** - Step descriptions, troubleshooting, prerequisites, next steps, use cases +- โœ… **Dual-Mode Support** - API mode (Claude API) or LOCAL mode (Claude Code CLI) +- โœ… **No API Costs with LOCAL Mode** - FREE enhancement using your Claude Code Max plan +- โœ… **Quality Transformation** - 75-line templates โ†’ 500+ line comprehensive guides + +**Usage:** +```bash +# Quick analysis (1-2 min, basic features only) +skill-seekers scan tests/ --quick + +# Comprehensive analysis with AI (20-60 min, all features) +skill-seekers scan tests/ --comprehensive + +# With AI enhancement +skill-seekers scan tests/ --enhance +``` + +**Full Documentation:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ Enhancement Workflow Presets + +Reusable YAML-defined enhancement pipelines that control how AI transforms your raw documentation into a polished skill. + +- โœ… **5 Bundled Presets** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **User-Defined Presets** โ€” add custom workflows to `~/.config/skill-seekers/workflows/` +- โœ… **Multiple Workflows** โ€” chain two or more workflows in one command +- โœ… **Fully Managed CLI** โ€” list, inspect, copy, add, remove, and validate workflows + +```bash +# Apply a single workflow +skill-seekers create ./my-project --enhance-workflow security-focus + +# Chain multiple workflows (applied in order) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# Manage presets +skill-seekers workflows list # List all (bundled + user) +skill-seekers workflows show security-focus # Print YAML content +skill-seekers workflows copy security-focus # Copy to user dir for editing +skill-seekers workflows add ./my-workflow.yaml # Install a custom preset +skill-seekers workflows remove my-workflow # Remove a user preset +skill-seekers workflows validate security-focus # Validate preset structure + +# Copy multiple at once +skill-seekers workflows copy security-focus minimal api-documentation + +# Add multiple files at once +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Remove multiple at once +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML preset format:** +```yaml +name: security-focus +description: "Security-focused review: vulnerabilities, auth, data handling" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "Review for OWASP top 10 and common security vulnerabilities..." + - name: auth-review + type: custom + prompt: "Examine authentication and authorisation patterns..." + uses_history: true +``` + +### โšก Performance & Scale +- โœ… **Async Mode** - 2-3x faster scraping with async/await (use `--async` flag) +- โœ… **Large Documentation Support** - Handle 10K-40K+ page docs with intelligent splitting +- โœ… **Router/Hub Skills** - Intelligent routing to specialized sub-skills +- โœ… **Parallel Scraping** - Process multiple skills simultaneously +- โœ… **Checkpoint/Resume** - Never lose progress on long scrapes +- โœ… **Caching System** - Scrape once, rebuild instantly + +### ๐Ÿค– Agent-Agnostic Skill Generation +- โœ… **Multi-Agent Support** - Generate skills for Claude, Kimi, Codex, Copilot, OpenCode, or any custom agent via `--agent` flag +- โœ… **Custom Agent Commands** - Use `--agent-cmd` to specify a custom agent CLI command for enhancement +- โœ… **Universal Flags** - `--agent` and `--agent-cmd` available on all commands (create, scrape, github, pdf, etc.) + +### ๐Ÿ“ฆ Marketplace Pipeline +- โœ… **Publish to Marketplace** - Publish skills to Claude Code plugin marketplace repos +- โœ… **End-to-End Pipeline** - From documentation source to published marketplace entry + +### โœ… Quality Assurance +- โœ… **Fully Tested** - 3,700+ tests with comprehensive coverage + +--- + +## ๐Ÿ“ฆ Installation + +```bash +# Basic install (documentation scraping, GitHub analysis, PDF, packaging) +pip install skill-seekers + +# With all LLM platform support +pip install skill-seekers[all-llms] + +# With MCP server +pip install skill-seekers[mcp] + +# Everything +pip install skill-seekers[all] +``` + +**Need help choosing?** Run the setup wizard: +```bash +skill-seekers-setup +``` + +### Installation Options + +| Install | Features | +|---------|----------| +| `pip install skill-seekers` | Scraping, GitHub analysis, PDF, all platforms | +| `pip install skill-seekers[gemini]` | + Google Gemini support | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT support | +| `pip install skill-seekers[all-llms]` | + All LLM platforms | +| `pip install skill-seekers[mcp]` | + MCP server for Claude Code, Cursor, etc. | +| `pip install skill-seekers[video]` | + YouTube/Vimeo transcript & metadata extraction | +| `pip install skill-seekers[video-full]` | + Whisper transcription & visual frame extraction | +| `pip install skill-seekers[jupyter]` | + Jupyter Notebook support | +| `pip install skill-seekers[pptx]` | + PowerPoint support | +| `pip install skill-seekers[confluence]` | + Confluence wiki support | +| `pip install skill-seekers[notion]` | + Notion pages support | +| `pip install skill-seekers[rss]` | + RSS/Atom feed support | +| `pip install skill-seekers[chat]` | + Slack/Discord chat export support | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc document support | +| `pip install skill-seekers[all]` | Everything enabled | + +> **Video visual deps (GPU-aware):** After installing `skill-seekers[video-full]`, run +> `skill-seekers create --setup` to auto-detect your GPU and install the correct PyTorch +> variant + easyocr. This is the recommended way to install visual extraction dependencies. + +--- + +## ๐Ÿš€ One-Command Install Workflow + +**The fastest way to go from config to uploaded skill - complete automation:** + +```bash +# Install React skill from official configs (auto-uploads to Claude) +skill-seekers install --config react + +# Install from local config file +skill-seekers install --config configs/custom.json + +# Install without uploading (package only) +skill-seekers install --config django --no-upload + +# Preview workflow without executing +skill-seekers install --config react --dry-run +``` + +**Time:** 20-45 minutes total | **Quality:** Production-ready (9/10) | **Cost:** Free + +**Phases executed:** +``` +๐Ÿ“ฅ PHASE 1: Fetch Config (if config name provided) +๐Ÿ“– PHASE 2: Scrape Documentation +โœจ PHASE 3: AI Enhancement (MANDATORY - no skip option) +๐Ÿ“ฆ PHASE 4: Package Skill +โ˜๏ธ PHASE 5: Upload to Claude (optional, requires API key) +``` + +**Requirements:** +- ANTHROPIC_API_KEY environment variable (for auto-upload) +- Claude Code Max plan (for local AI enhancement), or use `--agent` to select a different AI agent + +--- + +## ๐Ÿ“Š Feature Matrix + +Skill Seekers supports **12 LLM platforms**, **8 RAG/vector targets**, **18 source types**, and full feature parity across all targets. + +**Platforms:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Generic Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**Source Types:** Documentation websites, GitHub repos, PDFs, Word (.docx), EPUB, Video, Local codebases, Jupyter Notebooks, Local HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS/Atom feeds, Man pages, Confluence wikis, Notion pages, Slack/Discord chat exports + +See [Complete Feature Matrix](docs/reference/FEATURE_MATRIX.md) for detailed platform and feature support. + +### Quick Platform Comparison + +| Feature | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------|--------|--------|--------|--------|----------| +| Format | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Upload | โœ… API | โœ… API | โœ… API | โœ… API | โŒ Manual | +| Enhancement | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ None | +| All Skill Modes | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## Usage Examples + +### Documentation Scraping + +```bash +# Scrape documentation website +skill-seekers create --config configs/react.json + +# Quick scrape without config +skill-seekers create https://react.dev --name react + +# With async mode (3x faster) +skill-seekers create --config configs/godot.json --async --workers 8 + +# Use a specific AI agent for enhancement +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF Extraction + +```bash +# Basic PDF extraction +skill-seekers create --pdf docs/manual.pdf --name myskill + +# Advanced features +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Extract tables + --parallel \ # Fast parallel processing + --workers 8 # Use 8 CPU cores + +# Scanned PDFs (requires: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Video Extraction + +```bash +# Install video support +pip install skill-seekers[video] # Transcripts + metadata +pip install skill-seekers[video-full] # + Whisper + visual frame extraction + +# Auto-detect GPU and install visual deps (PyTorch + easyocr) +skill-seekers create --setup + +# Extract from YouTube video +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# Extract from a YouTube playlist +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Extract from a local video file +skill-seekers create --video-file recording.mp4 --name myrecording + +# Extract with visual frame analysis (requires video-full deps) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# With AI enhancement (cleans OCR + generates polished SKILL.md) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Clip a specific section of a video (supports seconds, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# Use Vision API for low-confidence OCR frames (requires ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Re-build skill from previously extracted data (skip download) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Full guide:** See [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) for complete CLI reference, +> visual pipeline details, AI enhancement options, and troubleshooting. + +### GitHub Repository Analysis + +```bash +# Basic repository scraping +skill-seekers create facebook/react + +# With authentication (higher rate limits) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Customize what to include +skill-seekers create django/django \ + --include-issues \ # Extract GitHub Issues + --max-issues 100 \ # Limit issue count + --include-changelog # Extract CHANGELOG.md +``` + +### Unified Multi-Source Scraping + +**Combine documentation + GitHub + PDF into one unified skill with conflict detection:** + +```bash +# Use existing unified configs +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# Or create unified config +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**Conflict Detection automatically finds:** +- ๐Ÿ”ด **Missing in code** (high): Documented but not implemented +- ๐ŸŸก **Missing in docs** (medium): Implemented but not documented +- โš ๏ธ **Signature mismatch**: Different parameters/types +- โ„น๏ธ **Description mismatch**: Different explanations + +**Full Guide:** See [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) for complete documentation. + +### Private Config Repositories + +**Share custom configs across teams using private git repositories:** + +```bash +# Option 1: Using MCP tools (recommended) +# Register your team's private repo +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Fetch config from team repo +fetch_config(source="team", config_name="internal-api") +``` + +**Supported Platforms:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Full Guide:** See [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) for complete documentation. + +## How It Works + +```mermaid +graph LR + A[Documentation Website] --> B[Skill Seekers] + B --> C[Scraper] + B --> D[AI Enhancement] + B --> E[Packager] + C --> F[Organized References] + D --> F + F --> E + E --> G[AI Skill .zip] + G --> H[Upload to AI Platform] +``` + +0. **Detect llms.txt** - Checks for llms-full.txt, llms.txt, llms-small.txt first (part of Smart SPA Discovery) +1. **Scrape**: Extracts all pages from documentation +2. **Categorize**: Organizes content into topics (API, guides, tutorials, etc.) +3. **Enhance**: AI analyzes docs and creates comprehensive SKILL.md with examples (supports multiple agents via `--agent`) +4. **Package**: Bundles everything into a platform-ready `.zip` file + +## Architecture + +The system is organized into **8 core modules** and **5 utility modules** (~200 classes total): + +![Package Overview](docs/UML/exports/00_package_overview.png) + +| Module | Purpose | Key Classes | +|--------|---------|-------------| +| **CLICore** | Git-style command dispatcher | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 source-type extractors | `DocToSkillConverter`, `DocumentSkillBuilder` (shared build layer), `UnifiedScraper` | +| **Adaptors** | 20+ output platform formats | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | C3.x codebase analysis pipeline | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 GoF detectors | +| **Enhancement** | AI-powered skill improvement via `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Package, upload, install skills | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP server (40 tools) | `SkillSeekerMCPServer`, 10 tool modules | +| **Sync** | Doc change detection | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Utility modules: **Parsers** (28 CLI parsers), **Storage** (S3/GCS/Azure), **Embedding** (multi-provider vectors), **Benchmark** (performance), **Utilities** (16 shared helpers). + +Full UML diagrams: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML project: `docs/UML/skill_seekers.mdj` | HTML API reference: `docs/UML/html/` + +## ๐Ÿ“‹ Prerequisites + +**Before you start, make sure you have:** + +1. **Python 3.10 or higher** - [Download](https://www.python.org/downloads/) | Check: `python3 --version` +2. **Git** - [Download](https://git-scm.com/) | Check: `git --version` +3. **15-30 minutes** for first-time setup + +**First time user?** โ†’ **[Start Here: Bulletproof Quick Start Guide](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Uploading Skills to Claude + +Once your skill is packaged, you need to upload it to Claude: + +### Option 1: Automatic Upload (API-based) + +```bash +# Set your API key (one-time) +export ANTHROPIC_API_KEY=sk-ant-... + +# Package and upload automatically +skill-seekers package output/react/ --upload + +# OR upload existing .zip +skill-seekers upload output/react.zip +``` + +### Option 2: Manual Upload (No API Key) + +```bash +# Package skill +skill-seekers package output/react/ +# โ†’ Creates output/react.zip + +# Then manually upload: +# - Go to https://claude.ai/skills +# - Click "Upload Skill" +# - Select output/react.zip +``` + +### Option 3: MCP (Claude Code) + +``` +In Claude Code, just ask: +"Package and upload the React skill" +``` + +--- + +## ๐Ÿค– Installing to AI Agents + +Skill Seekers can automatically install skills to 19 AI coding agents. + +```bash +# Install to specific agent +skill-seekers install-agent output/react/ --agent cursor + +# Install to IBM Bob (project-local .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Install to all agents at once +skill-seekers install-agent output/react/ --agent all + +# Preview without installing +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Supported Agents + +| Agent | Path | Type | +|-------|------|------| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Project | +| **VS Code / Copilot** | `.github/skills/` | Project | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Project | +| **Cline** | `.cline/skills/` | Project | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Project | +| **Kilo Code** | `.kilo/skills/` | Project | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Project | + +--- + +## ๐Ÿ”Œ MCP Integration (40 Tools) + +Skill Seekers ships an MCP server for use from Claude Code, Cursor, Windsurf, VS Code + Cline, or IntelliJ IDEA. + +```bash +# stdio mode (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# HTTP mode (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Auto-configure all agents at once +./setup_mcp.sh +``` + +**All 40 tools available:** +- **Core (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **Extended (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Vector DB (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Cloud (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**Full Guide:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ Configuration + +### Available Presets (24+) + +```bash +# List all presets +# skill-seekers list-configs # Not available in v3.7.0 +``` + +| Category | Presets | +|----------|---------| +| **Web Frameworks** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Game Development** | `godot`, `pygame`, `unity` | +| **Tools & DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **Unified (Docs + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified`, and more | + +### Creating Your Own Config + +```bash +# Option 1: Interactive +skill-seekers create --interactive + +# Option 2: Copy and edit a preset +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Config File Structure + +```json +{ + "name": "myframework", + "description": "When to use this skill", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Where to Store Configs + +The tool searches in this order: +1. Exact path as provided +2. `./configs/` (current directory) +3. `~/.config/skill-seekers/configs/` (user config directory) +4. SkillSeekersWeb.com API (preset configs) + +--- + +## ๐Ÿ“Š What Gets Created + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Scraped raw data +โ”‚ โ”œโ”€โ”€ pages/ # JSON files (one per page) +โ”‚ โ””โ”€โ”€ summary.json # Overview +โ”‚ +โ””โ”€โ”€ godot/ # The skill + โ”œโ”€โ”€ SKILL.md # Enhanced with real examples + โ”œโ”€โ”€ references/ # Categorized docs + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # Empty (add your own) + โ””โ”€โ”€ assets/ # Empty (add your own) +``` + +--- + +## ๐Ÿ› Troubleshooting + +### No Content Extracted? +- Check your `main_content` selector +- Try: `article`, `main`, `div[role="main"]` + +### Data Exists But Won't Use It? +```bash +# Force re-scrape +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### Categories Not Good? +Edit the config `categories` section with better keywords. + +### Want to Update Docs? +```bash +# Delete old data and re-scrape +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### Enhancement Not Working? +```bash +# Check if API key is set +echo $ANTHROPIC_API_KEY + +# Try LOCAL mode instead (uses Claude Code Max, no API key needed) +skill-seekers enhance output/react/ --mode LOCAL + +# Monitor background enhancement status +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub Rate Limit Issues? +```bash +# Set a GitHub token (5000 req/hour vs 60/hour anonymous) +export GITHUB_TOKEN=ghp_your_token_here + +# Or configure multiple profiles +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ Performance + +| Task | Time | Notes | +|------|------|-------| +| Scraping (sync) | 15-45 min | First time only, thread-based | +| Scraping (async) | 5-15 min | 2-3x faster with `--async` flag | +| Building | 1-3 min | Fast rebuild from cache | +| Re-building | <1 min | With `--skip-scrape` | +| Enhancement (LOCAL) | 30-60 sec | Uses Claude Code Max | +| Enhancement (API) | 20-40 sec | Requires API key | +| Video (transcript) | 1-3 min | YouTube/local, transcript only | +| Video (visual) | 5-15 min | + OCR frame extraction | +| Packaging | 5-10 sec | Final .zip creation | + +--- + +## ๐Ÿ†• New in v3.6.0 + +### Workflow Presets +Control analysis depth with `--preset`: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Fast, surface-level +skill-seekers create https://docs.react.dev/ --preset standard # Balanced (default) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Deep, exhaustive +``` + +### Lifecycle Flags +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Preview without scraping +skill-seekers create https://docs.react.dev/ --fresh # Ignore cache, full re-scrape +skill-seekers create https://docs.react.dev/ --resume # Resume interrupted job +skill-seekers create https://docs.react.dev/ --skip-scrape # Re-package existing output +``` + +### Health Check & Utilities +```bash +skill-seekers doctor # Diagnose installation & environment +skill-seekers sync-config # Detect config drift +skill-seekers stream # Streaming ingestion for large docs +skill-seekers update output/react/ # Incremental update +skill-seekers multilang # Multi-language skill generation +skill-seekers quality output/react/ # Quality report (add --threshold 7 to gate: non-zero exit below 7/10) +``` + +### RAG Chunking Options (package) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Marketplace Publishing +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Additional Optional Dependencies +| Extra | Install | Purpose | +|-------|---------|---------| +| `browser` | `pip install "skill-seekers[browser]"` | Headless Playwright for SPA sites | +| `embedding` | `pip install "skill-seekers[embedding]"` | Embedding server support | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` etc. | Cloud storage upload | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | Combined vector DB upload deps | + +--- + +## ๐Ÿ“š Documentation + +### Getting Started +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **START HERE** if you're new! +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Quick start for experienced users +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Common issues and solutions +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - One-page cheat sheet + +### Architecture +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - UML architecture overview with 14 diagrams +- **[docs/UML/exports/](docs/UML/exports/)** - PNG diagram exports (package overview + 13 class diagrams) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Full HTML API reference (all classes, operations, attributes) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML project file (open with [StarUML](https://staruml.io/)) + +### Guides +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - Handle 10K-40K+ page docs +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI enhancement modes guide +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP integration setup +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - Multi-source scraping +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Video extraction guide + +### Integration Guides +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - All RAG pipelines + +--- + +## ๐Ÿ“ License + +MIT License - see [LICENSE](LICENSE) file for details + +--- + +Happy skill building! ๐Ÿš€ + +--- + +## ๐Ÿ”’ Security + +[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› Sponsors + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” a full-modal, OpenAI-compatible AI inference platform. Skill Seekers supports it as a packaging/enhancement target via `--target atlas` with `ATLAS_API_KEY`. diff --git a/README.pt-BR.md b/README.pt-BR.md new file mode 100644 index 0000000..c801f5a --- /dev/null +++ b/README.pt-BR.md @@ -0,0 +1,1380 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | Portuguรชs | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **Aviso de traduรงรฃo automรกtica** +> +> Este documento foi traduzido automaticamente por IA. Embora nos esforcemos para garantir a qualidade, podem existir expressรตes imprecisas. +> +> Ajude a melhorar a traduรงรฃo atravรฉs do [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260)! Seu feedback รฉ muito valioso para nรณs. + +[![Versรฃo](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![Licenรงa: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![Integraรงรฃo MCP](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Testes Aprovados](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Quadro do Projeto](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![Versรฃo PyPI](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Versรฃo Python](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![Site Oficial](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Seguir no Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  A camada de dados para sistemas de IA.** O Skill Seekers transforma sites de documentaรงรฃo, repositรณrios GitHub, PDFs, vรญdeos, Jupyter Notebooks, wikis e mais de 10 outros tipos de fontes em ativos de conhecimento estruturado โ€” prontos para alimentar AI Skills (Claude, Gemini, OpenAI), pipelines RAG (LangChain, LlamaIndex, Pinecone) e assistentes de programaรงรฃo com IA (Cursor, Windsurf, Cline) em minutos, nรฃo horas. + +> ๐ŸŒ **[Visite SkillSeekersWeb.com](https://skillseekersweb.com/)** - Navegue por mais de 24 configuraรงรตes predefinidas, compartilhe suas configuraรงรตes e acesse a documentaรงรฃo completa! + +> ๐Ÿ“‹ **[Veja o Roteiro de Desenvolvimento e Tarefas](https://github.com/users/yusufkaraaslan/projects/2)** - 134 tarefas em 10 categorias, escolha qualquer uma para contribuir! + +## ๐ŸŒ Ecossistema + +Skill Seekers รฉ um projeto multi-repositรณrio. Aqui estรก onde tudo se encontra: + +| Repositรณrio | Descriรงรฃo | Links | +|------------|-----------|-------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | CLI principal e servidor MCP (este repo) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Website e documentaรงรฃo | [Site](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Repositรณrio de configuraรงรตes da comunidade | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action para CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Plugin Claude Code | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap para macOS | | + +> **Quer contribuir?** Os repos do website e configuraรงรตes sรฃo รณtimos pontos de partida para novos contribuidores! + +## ๐Ÿง  A Camada de Dados para Sistemas de IA + +**Skill Seekers รฉ a camada universal de prรฉ-processamento** que fica entre a documentaรงรฃo bruta e todo sistema de IA que a consome. Seja para construir Claude Skills, um pipeline RAG com LangChain ou um arquivo `.cursorrules` para o Cursor โ€” a preparaรงรฃo dos dados รฉ idรชntica. Faรงa uma vez e exporte para todos os destinos. + +```bash +# Um comando โ†’ ativo de conhecimento estruturado +skill-seekers create https://docs.react.dev/ +# ou: skill-seekers create facebook/react +# ou: skill-seekers create ./my-project + +# Exporte para qualquer sistema de IA +skill-seekers package output/react --target claude # โ†’ Claude AI Skill (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ Diretรณrio de skill IBM Bob +``` + +### O que รฉ gerado + +| Saรญda | Destino | Para que serve | +|-------|---------|----------------| +| **Claude Skill** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini Skill** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, assistentes personalizados | +| **LangChain Documents** | `--target langchain` | Cadeias de QA, agentes, recuperadores | +| **LlamaIndex TextNodes** | `--target llama-index` | Motores de consulta, motores de chat | +| **Haystack Documents** | `--target haystack` | Pipelines RAG empresariais | +| **Pinecone-ready** (Markdown) | `--target markdown` | Upload de vetores | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Bancos de dados vetoriais locais | +| **IBM Bob Skill** (diretรณrio) | `--target ibm-bob` | Skills de projeto/globais do IBM Bob | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ copiar SKILL.md | `.cursorrules` do Cursor IDE | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ copiar | VS Code, IntelliJ, Vim | + +### Por que isso importa + +- โšก **99% mais rรกpido** โ€” Dias de preparaรงรฃo manual de dados โ†’ 15โ€“45 minutos +- ๐ŸŽฏ **Qualidade de AI Skill** โ€” Arquivos SKILL.md com mais de 500 linhas com exemplos, padrรตes e guias +- ๐Ÿ“Š **Chunks prontos para RAG** โ€” Chunking inteligente que preserva blocos de cรณdigo e mantรฉm o contexto +- ๐ŸŽฌ **Vรญdeos** โ€” Extraia cรณdigo, transcriรงรตes e conhecimento estruturado do YouTube e vรญdeos locais +- ๐Ÿ”„ **Multi-fonte** โ€” Combine 18 tipos de fontes (docs, GitHub, PDFs, vรญdeos, notebooks, wikis e mais) em um รบnico ativo de conhecimento +- ๐ŸŒ **Uma preparaรงรฃo, todos os destinos** โ€” Exporte o mesmo ativo para 21 plataformas sem precisar recoletรก-lo +- โœ… **Testado em batalha** โ€” Mais de 3.700 testes, mais de 24 presets de frameworks, pronto para produรงรฃo + +## ๐Ÿš€ Inรญcio Rรกpido (3 Comandos) + +```bash +# 1. Instalar +pip install skill-seekers + +# 2. Criar skill a partir de qualquer fonte +skill-seekers create https://docs.django.com/ + +# 3. Empacotar para sua plataforma de IA +skill-seekers package output/django --target claude +``` + +**Pronto!** Agora vocรช tem `output/django-claude.zip` pronto para usar. + +```bash +# Use um agente de IA diferente para o aprimoramento (padrรฃo: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ Escaneamento de projeto com IA (novo) + +Aponte o `scan` para qualquer projeto e um agente de IA lรช seus manifestos, README, +Dockerfile/CI e imports amostrados do cรณdigo-fonte โ€” entรฃo emite uma configuraรงรฃo por +framework detectado mais um `-codebase.json` para o seu prรณprio cรณdigo. Fixa a +versรฃo detectada, de modo que reexecutar reporta as mudanรงas de versรฃo: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# Depois construa qualquer uma delas +skill-seekers create ./configs/scanned/react.json +``` + +Se uma detecรงรฃo nรฃo tiver um preset existente, a IA gera uma configuraรงรฃo nova; +ao sair, vocรช pode opcionalmente publicรก-la de volta no [registro da comunidade](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### Outras Fontes (18 Suportadas) + +```bash +# Repositรณrio GitHub +skill-seekers create facebook/react + +# Projeto local +skill-seekers create ./my-project + +# Documento PDF +skill-seekers create manual.pdf + +# Documento Word +skill-seekers create report.docx + +# E-book EPUB +skill-seekers create book.epub + +# Jupyter Notebook +skill-seekers create notebook.ipynb + +# Especificaรงรฃo OpenAPI +skill-seekers create openapi.yaml + +# Apresentaรงรฃo PowerPoint +skill-seekers create presentation.pptx + +# Documento AsciiDoc +skill-seekers create guide.adoc + +# Arquivo HTML local (auto-detectado pela extensรฃo) +skill-seekers create page.html + +# Diretรณrio inteiro de arquivos HTML (auto-detectado para diretรณrios predominantemente HTML) +skill-seekers create ./mirror_output/site/ + +# Forรงar modo HTML em um diretรณrio misto/com muito cรณdigo +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# Feed RSS/Atom +skill-seekers create feed.rss + +# Man page +skill-seekers create curl.1 + +# Vรญdeo (YouTube, Vimeo ou arquivo local โ€” requer skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# Primeira vez? Instale automaticamente as dependรชncias visuais com detecรงรฃo de GPU: +skill-seekers create --setup + +# Wiki Confluence +skill-seekers create --space-key TEAM --name wiki + +# Pรกginas Notion +skill-seekers create --database-id ... --name docs + +# Exportaรงรฃo de chat Slack/Discord +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### Exporte para Qualquer Lugar + +```bash +# Empacote para mรบltiplas plataformas +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## O que รฉ o Skill Seekers? + +O Skill Seekers รฉ a **camada de dados para sistemas de IA**. Ele transforma 18 tipos de fontes โ€” sites de documentaรงรฃo, repositรณrios GitHub, PDFs, vรญdeos, Jupyter Notebooks, documentos Word/EPUB/AsciiDoc, especificaรงรตes OpenAPI, apresentaรงรตes PowerPoint, feeds RSS, man pages, wikis Confluence, pรกginas Notion, exportaรงรตes Slack/Discord e mais โ€” em ativos de conhecimento estruturado para qualquer destino de IA: + +| Caso de Uso | O que vocรช obtรฉm | Exemplos | +|-------------|-----------------|----------| +| **AI Skills** | SKILL.md abrangente + referรชncias | Claude Code, Gemini, GPT | +| **Pipelines RAG** | Documentos fragmentados com metadados ricos | LangChain, LlamaIndex, Haystack | +| **Bancos de Dados Vetoriais** | Dados prรฉ-formatados prontos para upload | Pinecone, Chroma, Weaviate, FAISS | +| **Assistentes de Programaรงรฃo com IA** | Arquivos de contexto que sua IDE lรช automaticamente | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š Documentaรงรฃo + +| Quero... | Leia isto | +|----------|-----------| +| **Comeรงar rapidamente** | [Inรญcio Rรกpido](docs/getting-started/02-quick-start.md) - 3 comandos atรฉ a primeira skill | +| **Entender os conceitos** | [Conceitos Fundamentais](docs/user-guide/01-core-concepts.md) - Como funciona | +| **Coletar fontes** | [Guia de Coleta](docs/user-guide/02-scraping.md) - Todos os tipos de fontes | +| **Aprimorar skills** | [Guia de Aprimoramento](docs/user-guide/03-enhancement.md) - Aprimoramento com IA | +| **Exportar skills** | [Guia de Empacotamento](docs/user-guide/04-packaging.md) - Exportaรงรฃo para plataformas | +| **Consultar comandos** | [Referรชncia CLI](docs/reference/CLI_REFERENCE.md) - Todos os 20 comandos | +| **Configurar** | [Formato de Configuraรงรฃo](docs/reference/CONFIG_FORMAT.md) - Especificaรงรฃo JSON | +| **Resolver problemas** | [Soluรงรฃo de Problemas](docs/user-guide/06-troubleshooting.md) - Problemas comuns | + +**Documentaรงรฃo completa:** [docs/README.md](docs/README.md) + +O Skill Seekers substitui dias de prรฉ-processamento manual com os seguintes passos: + +1. **Coleta** โ€” Docs, repositรณrios GitHub, bases de cรณdigo locais, PDFs, vรญdeos, Jupyter Notebooks, wikis e mais de 10 outros tipos de fontes +2. **Anรกlise** โ€” Parsing AST profundo, detecรงรฃo de padrรตes, extraรงรฃo de APIs +3. **Estruturaรงรฃo** โ€” Arquivos de referรชncia categorizados com metadados +4. **Aprimoramento** โ€” Geraรงรฃo de SKILL.md com IA (Claude, Gemini ou local) +5. **Exportaรงรฃo** โ€” 16 formatos especรญficos por plataforma a partir de um รบnico ativo + +## Por que Usar o Skill Seekers? + +### Para Construtores de AI Skills (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **Skills de nรญvel de produรงรฃo** โ€” Arquivos SKILL.md com mais de 500 linhas com exemplos de cรณdigo, padrรตes e guias +- ๐Ÿ”„ **Workflows de aprimoramento** โ€” Aplique `security-focus`, `architecture-comprehensive` ou presets YAML personalizados +- ๐ŸŽฎ **Qualquer domรญnio** โ€” Motores de jogos (Godot, Unity), frameworks (React, Django), ferramentas internas +- ๐Ÿ”ง **Equipes** โ€” Combine documentaรงรฃo interna + cรณdigo em uma รบnica fonte da verdade +- ๐Ÿ“š **Qualidade** โ€” Aprimorado por IA com exemplos, referรชncia rรกpida e orientaรงรฃo de navegaรงรฃo + +### Para Construtores de RAG e Engenheiros de IA + +- ๐Ÿค– **Dados prontos para RAG** โ€” `Documents` LangChain, `TextNodes` LlamaIndex, `Documents` Haystack prรฉ-fragmentados +- ๐Ÿš€ **99% mais rรกpido** โ€” Dias de prรฉ-processamento โ†’ 15โ€“45 minutos +- ๐Ÿ“Š **Metadados inteligentes** โ€” Categorias, fontes, tipos โ†’ melhor precisรฃo de recuperaรงรฃo +- ๐Ÿ”„ **Multi-fonte** โ€” Combine docs + GitHub + PDFs + vรญdeos em um pipeline +- ๐ŸŒ **Agnรณstico de plataforma** โ€” Exporte para qualquer banco vetorial ou framework sem recoleta + +### Para Usuรกrios de Assistentes de Programaรงรฃo com IA + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” Gere `.cursorrules` / `.windsurfrules` / `.clinerules` automaticamente +- ๐ŸŽฏ **Contexto persistente** โ€” A IA "conhece" seus frameworks sem prompts repetidos +- ๐Ÿ“š **Sempre atualizado** โ€” Atualize o contexto em minutos quando a documentaรงรฃo mudar + +## Funcionalidades Principais + +### ๐ŸŒ Coleta de Documentaรงรฃo +- โœ… **Descoberta SPA Inteligente** - Descoberta em trรชs camadas para sites SPA em JavaScript (sitemap.xml โ†’ llms.txt โ†’ renderizaรงรฃo com navegador headless) +- โœ… **Suporte a llms.txt** - Detecta e usa automaticamente arquivos de documentaรงรฃo prontos para LLM (10x mais rรกpido) +- โœ… **Scraper Universal** - Funciona com QUALQUER site de documentaรงรฃo +- โœ… **Categorizaรงรฃo Inteligente** - Organiza conteรบdo automaticamente por tรณpico +- โœ… **Detecรงรฃo de Linguagem de Cรณdigo** - Reconhece Python, JavaScript, C++, GDScript, etc. +- โœ… **Mais de 24 Presets Prontos** - Godot, React, Vue, Django, FastAPI e mais + +### ๐Ÿ“„ Suporte a PDF +- โœ… **Extraรงรฃo Bรกsica de PDF** - Extraia texto, cรณdigo e imagens de arquivos PDF +- โœ… **OCR para PDFs Digitalizados** - Extraia texto de documentos digitalizados +- โœ… **PDFs Protegidos por Senha** - Processe PDFs criptografados +- โœ… **Extraรงรฃo de Tabelas** - Extraia tabelas complexas de PDFs +- โœ… **Processamento Paralelo** - 3x mais rรกpido para PDFs grandes +- โœ… **Cache Inteligente** - 50% mais rรกpido em re-execuรงรตes + +### ๐ŸŽฌ Extraรงรฃo de Vรญdeo +- โœ… **YouTube e Vรญdeos Locais** - Extraia transcriรงรตes, cรณdigo na tela e conhecimento estruturado de vรญdeos +- โœ… **Anรกlise Visual de Frames** - Extraรงรฃo OCR de editores de cรณdigo, terminais, slides e diagramas +- โœ… **Detecรงรฃo Automรกtica de GPU** - Instala automaticamente a versรฃo correta do PyTorch (CUDA/ROCm/MPS/CPU) +- โœ… **Aprimoramento com IA** - Dois passes: limpeza de artefatos OCR + geraรงรฃo de SKILL.md polido +- โœ… **Recorte Temporal** - Extraia seรงรตes especรญficas com `--start-time` e `--end-time` +- โœ… **Suporte a Playlists** - Processe em lote todos os vรญdeos de uma playlist do YouTube +- โœ… **Fallback com Vision API** - Use Claude Vision para frames OCR de baixa confianรงa + +### ๐Ÿ™ Anรกlise de Repositรณrios GitHub +- โœ… **Anรกlise Profunda de Cรณdigo** - Parsing AST para Python, JavaScript, TypeScript, Java, C++, Go +- โœ… **Extraรงรฃo de API** - Funรงรตes, classes, mรฉtodos com parรขmetros e tipos +- โœ… **Metadados do Repositรณrio** - README, รกrvore de arquivos, distribuiรงรฃo de linguagens, stars/forks +- โœ… **GitHub Issues e PRs** - Obtenha issues abertas/fechadas com labels e milestones +- โœ… **CHANGELOG e Releases** - Extraรงรฃo automรกtica do histรณrico de versรตes +- โœ… **Detecรงรฃo de Conflitos** - Compare APIs documentadas vs implementaรงรฃo real do cรณdigo +- โœ… **Integraรงรฃo MCP** - Linguagem natural: "Colete o repositรณrio GitHub facebook/react" + +### ๐Ÿ”„ Coleta Unificada Multi-Fonte +- โœ… **Combine Mรบltiplas Fontes** - Misture documentaรงรฃo + GitHub + PDF em uma skill +- โœ… **Detecรงรฃo de Conflitos** - Encontra automaticamente discrepรขncias entre docs e cรณdigo +- โœ… **Mesclagem Inteligente** - Resoluรงรฃo de conflitos baseada em regras ou com IA +- โœ… **Relatรณrios Transparentes** - Comparaรงรฃo lado a lado com avisos โš ๏ธ +- โœ… **Anรกlise de Lacunas na Documentaรงรฃo** - Identifica docs desatualizadas e funcionalidades nรฃo documentadas +- โœ… **Fonte รšnica da Verdade** - Uma skill mostrando tanto a intenรงรฃo (docs) quanto a realidade (cรณdigo) +- โœ… **Retrocompatรญvel** - Configuraรงรตes legadas de fonte รบnica continuam funcionando + +### ๐Ÿค– Suporte a Mรบltiplas Plataformas LLM +- โœ… **12 Plataformas LLM** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown Genรฉrico, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **Coleta Universal** - A mesma documentaรงรฃo funciona para todas as plataformas +- โœ… **Empacotamento Especรญfico por Plataforma** - Formatos otimizados para cada LLM +- โœ… **Exportaรงรฃo com Um Comando** - Flag `--target` seleciona a plataforma +- โœ… **Dependรชncias Opcionais** - Instale apenas o que precisa +- โœ… **100% Retrocompatรญvel** - Workflows existentes do Claude permanecem inalterados + +| Plataforma | Formato | Upload | Aprimoramento | API Key | Endpoint Personalizado | +|------------|---------|--------|---------------|---------|----------------------| +| **Claude AI** | ZIP + YAML | โœ… Automรกtico | โœ… Sim | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… Automรกtico | โœ… Sim | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… Automรกtico | โœ… Sim | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… Automรกtico | โœ… Sim | MINIMAX_API_KEY | - | +| **Markdown Genรฉrico** | ZIP | โŒ Manual | โŒ Nรฃo | - | - | + +```bash +# Claude (padrรฃo - sem alteraรงรตes necessรกrias!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Markdown Genรฉrico (exportaรงรฃo universal) +skill-seekers package output/react/ --target markdown +# Use os arquivos markdown diretamente em qualquer LLM +``` + +
+๐Ÿ”ง Use seu prรณprio provedor de IA (endpoints compatรญveis com OpenAI + assinaturas, sem necessidade de crรฉditos da Anthropic) + +A etapa opcional de **aprimoramento** com IA (usada por `create`, `scan` e `enhance`) **nรฃo** requer uma chave da Anthropic. Vocรช tem trรชs formas de alimentรก-la: + +**1. Use uma assinatura que vocรช jรก paga โ€” sem crรฉditos de API (modo de agente LOCAL)** + +O Skill Seekers pode delegar para uma CLI de agente de programaรงรฃo na qual vocรช jรก estรก logado, de modo que o aprimoramento roda no seu plano existente em vez de tokens de API cobrados: + +```bash +skill-seekers create --agent codex # CLI OpenAI Codex โ†’ seu ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ seu Claude Pro/Max +``` + +Agentes suportados: `claude`, `codex`, `copilot`, `opencode`, `kimi` e `custom` +(combine `--agent custom` com `--agent-cmd " ..."` para usar qualquer outra ferramenta). + +**2. Qualquer provedor compatรญvel com OpenAI (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +Todos eles expรตem um endpoint `/v1` compatรญvel com OpenAI. Aponte o Skill Seekers para um deles com trรชs variรกveis de ambiente โ€” ele detecta `OPENAI_API_KEY`, e o SDK da OpenAI respeita `OPENAI_BASE_URL` automaticamente: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # endpoint do provedor (veja a tabela) +export OPENAI_MODEL="" # obrigatรณrio โ€” o padrรฃo gpt-4o nรฃo existirรก em outros provedores +skill-seekers create +``` + +| Provedor | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> A detecรงรฃo de provedor escolhe a **primeira** variรกvel de ambiente de API key que encontrar (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Defina `SKILL_SEEKER_PROVIDER` para forรงar um provedor especรญfico, ou garanta que as chaves de prioridade mais alta nรฃo estejam definidas. + +**3. Endpoints compatรญveis com Claude (ex.: GLM, proxies)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) e Kimi/Moonshot (`MOONSHOT_API_KEY`) tambรฉm sรฃo suportados nativamente. Consulte a **[Referรชncia de Variรกveis de Ambiente](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** para a lista completa, incluindo substituiรงรตes de modelo por provedor. + +
+ +**Instalaรงรฃo:** +```bash +# Instalar com suporte ao Gemini +pip install skill-seekers[gemini] + +# Instalar com suporte ao OpenAI +pip install skill-seekers[openai] + +# Instalar com suporte ao MiniMax +pip install skill-seekers[minimax] + +# Instalar com todas as plataformas LLM +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— Integraรงรตes com Frameworks RAG + +- โœ… **LangChain Documents** - Exportaรงรฃo direta para formato `Document` com `page_content` + metadados + - Ideal para: Cadeias de QA, recuperadores, armazenamentos vetoriais, agentes + - Exemplo: [Pipeline RAG LangChain](examples/langchain-rag-pipeline/) + - Guia: [Integraรงรฃo LangChain](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - Exportaรงรฃo para formato `TextNode` com IDs รบnicos + embeddings + - Ideal para: Motores de consulta, motores de chat, contexto de armazenamento + - Exemplo: [Motor de Consulta LlamaIndex](examples/llama-index-query-engine/) + - Guia: [Integraรงรฃo LlamaIndex](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Formato Pinecone-Ready** - Otimizado para upload em bancos de dados vetoriais + - Ideal para: Busca vetorial em produรงรฃo, busca semรขntica, busca hรญbrida + - Exemplo: [Upload Pinecone](examples/pinecone-upsert/) + - Guia: [Integraรงรฃo Pinecone](docs/integrations/PINECONE.md) + +**Exportaรงรฃo Rรกpida:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (Universal) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Guia Completo de Pipeline RAG:** [Documentaรงรฃo de Pipelines RAG](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  Integraรงรตes com Assistentes de Programaรงรฃo com IA + +Transforme qualquer documentaรงรฃo de framework em contexto especializado de programaรงรฃo para mais de 4 assistentes de IA: + +- โœ… **Cursor IDE** - Gere `.cursorrules` para sugestรตes de cรณdigo com IA + - Ideal para: Geraรงรฃo de cรณdigo especรญfica de framework, padrรตes consistentes + - Funciona com: Cursor IDE (fork do VS Code) + - Guia: [Integraรงรฃo Cursor](docs/integrations/CURSOR.md) + - Exemplo: [Cursor React Skill](examples/cursor-react-skill/) + +- โœ… **Windsurf** - Personalize o contexto do assistente de IA do Windsurf com `.windsurfrules` + - Ideal para: Assistรชncia de IA nativa na IDE, programaรงรฃo baseada em fluxo + - Funciona com: Windsurf IDE da Codeium + - Guia: [Integraรงรฃo Windsurf](docs/integrations/WINDSURF.md) + - Exemplo: [Contexto FastAPI Windsurf](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - Prompts de sistema + MCP para agente VS Code + - Ideal para: Geraรงรฃo de cรณdigo agentiva no VS Code + - Funciona com: Extensรฃo Cline para VS Code + - Guia: [Integraรงรฃo Cline](docs/integrations/CLINE.md) + - Exemplo: [Assistente Django Cline](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - Servidores de contexto para IA agnรณstica de IDE + - Ideal para: Ambientes multi-IDE (VS Code, JetBrains, Vim), provedores de LLM personalizados + - Funciona com: Qualquer IDE com plugin Continue.dev + - Guia: [Integraรงรฃo Continue](docs/integrations/CONTINUE_DEV.md) + - Exemplo: [Contexto Universal Continue](examples/continue-dev-universal/) + +**Exportaรงรฃo Rรกpida para Ferramentas de Programaรงรฃo com IA:** +```bash +# Para qualquer assistente de programaรงรฃo com IA (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ou --target markdown + +# Copie para seu projeto (exemplo para Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Ou para Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Ou para Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# Ou para Continue.dev (servidor HTTP) +python examples/continue-dev-universal/context_server.py +# Configure em ~/.continue/config.json +``` + +**Hub de Integraรงรตes:** [Todas as Integraรงรตes com Sistemas de IA](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ Arquitetura GitHub de Trรชs Fluxos +- โœ… **Anรกlise em Trรชs Fluxos** - Divide repositรณrios GitHub em fluxos de Cรณdigo, Docs e Insights +- โœ… **Analisador de Codebase Unificado** - Funciona com URLs do GitHub E caminhos locais +- โœ… **C3.x como Profundidade de Anรกlise** - Escolha 'basic' (1-2 min) ou 'c3x' (20-60 min) +- โœ… **Geraรงรฃo Aprimorada de Router** - Metadados do GitHub, quick start do README, problemas comuns +- โœ… **Integraรงรฃo de Issues** - Principais problemas e soluรงรตes dos GitHub Issues +- โœ… **Keywords de Roteamento Inteligente** - Labels do GitHub com peso 2x para melhor detecรงรฃo de tรณpicos + +**Explicaรงรฃo dos Trรชs Fluxos:** +- **Fluxo 1: Cรณdigo** - Anรกlise profunda C3.x (padrรตes, exemplos, guias, configs, arquitetura) +- **Fluxo 2: Docs** - Documentaรงรฃo do repositรณrio (README, CONTRIBUTING, docs/*.md) +- **Fluxo 3: Insights** - Conhecimento da comunidade (issues, labels, stars, forks) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# Analise repositรณrio GitHub com os trรชs fluxos +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ou "basic" para anรกlise rรกpida + fetch_github_metadata=True +) + +# Acesse o fluxo de cรณdigo (anรกlise C3.x) +print(f"Design patterns: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Test examples: {result.code_analysis['c3_2_examples_count']}") + +# Acesse o fluxo de docs (documentaรงรฃo do repositรณrio) +print(f"README: {result.github_docs['readme'][:100]}") + +# Acesse o fluxo de insights (metadados do GitHub) +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"Common issues: {len(result.github_insights['common_problems'])}") +``` + +**Documentaรงรฃo completa**: [Resumo da Implementaรงรฃo de Trรชs Fluxos](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” Gerenciamento Inteligente de Rate Limit e Configuraรงรฃo +- โœ… **Sistema de Configuraรงรฃo Multi-Token** - Gerencie mรบltiplas contas GitHub (pessoal, trabalho, OSS) + - Armazenamento seguro de configuraรงรตes em `~/.config/skill-seekers/config.json` (permissรตes 600) + - Estratรฉgias de rate limit por perfil: `prompt`, `wait`, `switch`, `fail` + - Timeout configurรกvel por perfil (padrรฃo: 30 min, evita esperas indefinidas) + - Cadeia de fallback inteligente: Argumento CLI โ†’ Variรกvel de ambiente โ†’ Arquivo de configuraรงรฃo โ†’ Prompt + - Gerenciamento de API keys para Claude, Gemini, OpenAI +- โœ… **Assistente de Configuraรงรฃo Interativo** - Interface de terminal elegante para fรกcil configuraรงรฃo + - Integraรงรฃo com navegador para criaรงรฃo de tokens (abre automaticamente GitHub, etc.) + - Validaรงรฃo de tokens e teste de conexรฃo + - Exibiรงรฃo visual de status com cรณdigo de cores +- โœ… **Gerenciador Inteligente de Rate Limit** - Chega de esperas indefinidas! + - Aviso prรฉvio sobre rate limits (60/hora vs 5000/hora) + - Detecรงรฃo em tempo real das respostas da API do GitHub + - Contadores regressivos ao vivo com progresso + - Troca automรกtica de perfil quando limitado + - Quatro estratรฉgias: prompt (perguntar), wait (contagem regressiva), switch (tentar outro), fail (abortar) +- โœ… **Capacidade de Retomada** - Continue trabalhos interrompidos + - Salvamento automรกtico de progresso em intervalos configurรกveis (padrรฃo: 60 seg) + - Liste todos os trabalhos retomรกveis com detalhes de progresso + - Limpeza automรกtica de trabalhos antigos (padrรฃo: 7 dias) +- โœ… **Suporte CI/CD** - Modo nรฃo interativo para automaรงรฃo + - Flag `--non-interactive` falha rapidamente sem prompts + - Flag `--profile` para selecionar conta GitHub especรญfica + - Mensagens de erro claras para logs de pipeline + +**Configuraรงรฃo Rรกpida:** +```bash +# Configuraรงรฃo รบnica (5 minutos) +skill-seekers config --github + +# Use perfil especรญfico para repos privados +skill-seekers create mycompany/private-repo --profile work + +# Modo CI/CD (falha rรกpida, sem prompts) +skill-seekers create owner/repo --non-interactive + +# Retomar trabalho interrompido +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Estratรฉgias de Rate Limit Explicadas:** +- **prompt** (padrรฃo) - Pergunta o que fazer quando limitado (esperar, trocar, configurar token, cancelar) +- **wait** - Espera automaticamente com contador regressivo (respeita timeout) +- **switch** - Tenta automaticamente o prรณximo perfil disponรญvel (para configuraรงรตes multi-conta) +- **fail** - Falha imediatamente com erro claro (ideal para CI/CD) + +### ๐ŸŽฏ Bootstrap Skill - Auto-Hospedagem + +Gere o skill-seekers como uma skill para uso dentro do seu agente de IA (Claude Code, Kimi, Codex, etc.): + +```bash +# Gere a skill +./scripts/bootstrap_skill.sh + +# Instale no Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**O que vocรช obtรฉm:** +- โœ… **Documentaรงรฃo completa da skill** - Todos os comandos CLI e padrรตes de uso +- โœ… **Referรชncia de comandos CLI** - Cada ferramenta e suas opรงรตes documentadas +- โœ… **Exemplos de inรญcio rรกpido** - Workflows comuns e melhores prรกticas +- โœ… **Documentaรงรฃo de API auto-gerada** - Anรกlise de cรณdigo, padrรตes e exemplos + +### ๐Ÿ” Repositรณrios Privados de Configuraรงรฃo +- โœ… **Fontes de Config Baseadas em Git** - Busque configs de repositรณrios Git privados/de equipe +- โœ… **Gerenciamento Multi-Fonte** - Registre repositรณrios ilimitados do GitHub, GitLab, Bitbucket +- โœ… **Colaboraรงรฃo em Equipe** - Compartilhe configs personalizadas entre equipes de 3-5 pessoas +- โœ… **Suporte Empresarial** - Escale para mais de 500 desenvolvedores com resoluรงรฃo baseada em prioridade +- โœ… **Autenticaรงรฃo Segura** - Tokens em variรกveis de ambiente (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **Cache Inteligente** - Clone uma vez, receba atualizaรงรตes automaticamente +- โœ… **Modo Offline** - Trabalhe com configs em cache quando estiver offline + +### ๐Ÿค– Anรกlise de Codebase (C3.x) + +**C3.4: Extraรงรฃo de Padrรตes de Configuraรงรฃo com Aprimoramento por IA** +- โœ… **9 Formatos de Config** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 Tipos de Padrรฃo** - Banco de dados, API, logging, cache, e-mail, autenticaรงรฃo, configuraรงรตes de servidor +- โœ… **Aprimoramento por IA** - Anรกlise de IA opcional em modo duplo (API + LOCAL) + - Explica o que cada config faz + - Sugere melhores prรกticas e melhorias + - **Anรกlise de seguranรงa** - Encontra segredos hardcoded, credenciais expostas +- โœ… **Auto-Documentaรงรฃo** - Gera documentaรงรฃo JSON + Markdown de todas as configs +- โœ… **Integraรงรฃo MCP** - Ferramenta `extract_config_patterns` com suporte a aprimoramento + +**C3.3: Guias How-To Aprimorados por IA** +- โœ… **Aprimoramento Abrangente por IA** - Transforma guias bรกsicos em tutoriais profissionais +- โœ… **5 Melhorias Automรกticas** - Descriรงรตes de etapas, troubleshooting, prรฉ-requisitos, prรณximos passos, casos de uso +- โœ… **Suporte Dual-Mode** - Modo API (Claude API) ou modo LOCAL (Claude Code CLI) +- โœ… **Sem Custo com Modo LOCAL** - Aprimoramento GRATUITO usando seu plano Claude Code Max +- โœ… **Transformaรงรฃo de Qualidade** - Templates de 75 linhas โ†’ guias abrangentes de mais de 500 linhas + +**Uso:** +```bash +# Anรกlise rรกpida (1-2 min, apenas funcionalidades bรกsicas) +skill-seekers scan tests/ --quick + +# Anรกlise abrangente com IA (20-60 min, todas as funcionalidades) +skill-seekers scan tests/ --comprehensive + +# Com aprimoramento por IA +skill-seekers scan tests/ --enhance +``` + +**Documentaรงรฃo Completa:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ Presets de Workflow de Aprimoramento + +Pipelines de aprimoramento reutilizรกveis definidos em YAML que controlam como a IA transforma sua documentaรงรฃo bruta em uma skill polida. + +- โœ… **5 Presets Incluรญdos** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **Presets Definidos pelo Usuรกrio** โ€” Adicione workflows personalizados em `~/.config/skill-seekers/workflows/` +- โœ… **Mรบltiplos Workflows** โ€” Encadeie dois ou mais workflows em um comando +- โœ… **CLI Totalmente Gerenciada** โ€” Liste, inspecione, copie, adicione, remova e valide workflows + +```bash +# Aplique um รบnico workflow +skill-seekers create ./my-project --enhance-workflow security-focus + +# Encadeie mรบltiplos workflows (aplicados em ordem) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# Gerencie presets +skill-seekers workflows list # Liste todos (incluรญdos + usuรกrio) +skill-seekers workflows show security-focus # Exiba conteรบdo YAML +skill-seekers workflows copy security-focus # Copie para diretรณrio do usuรกrio para ediรงรฃo +skill-seekers workflows add ./my-workflow.yaml # Instale um preset personalizado +skill-seekers workflows remove my-workflow # Remova um preset do usuรกrio +skill-seekers workflows validate security-focus # Valide a estrutura do preset + +# Copie mรบltiplos de uma vez +skill-seekers workflows copy security-focus minimal api-documentation + +# Adicione mรบltiplos arquivos de uma vez +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Remova mรบltiplos de uma vez +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**Formato de preset YAML:** +```yaml +name: security-focus +description: "Security-focused review: vulnerabilities, auth, data handling" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "Review for OWASP top 10 and common security vulnerabilities..." + - name: auth-review + type: custom + prompt: "Examine authentication and authorisation patterns..." + uses_history: true +``` + +### โšก Performance e Escalabilidade +- โœ… **Modo Assรญncrono** - Coleta 2-3x mais rรกpida com async/await (use a flag `--async`) +- โœ… **Suporte a Documentaรงรตes Grandes** - Processe docs de 10K-40K+ pรกginas com divisรฃo inteligente +- โœ… **Skills Router/Hub** - Roteamento inteligente para sub-skills especializadas +- โœ… **Coleta Paralela** - Processe mรบltiplas skills simultaneamente +- โœ… **Checkpoint/Retomada** - Nunca perca progresso em coletas longas +- โœ… **Sistema de Cache** - Colete uma vez, reconstrua instantaneamente + +### ๐Ÿค– Geraรงรฃo de Skills Agnรณstica ao Agente +- โœ… **Suporte Multi-Agente** - Gere skills para Claude, Kimi, Codex, Copilot, OpenCode ou qualquer agente personalizado via flag `--agent` +- โœ… **Comandos de Agente Personalizados** - Use `--agent-cmd` para especificar um comando CLI de agente personalizado para o aprimoramento +- โœ… **Flags Universais** - `--agent` e `--agent-cmd` disponรญveis em todos os comandos (create, scrape, github, pdf, etc.) + +### ๐Ÿ“ฆ Pipeline do Marketplace +- โœ… **Publicaรงรฃo no Marketplace** - Publique skills em repositรณrios do marketplace de plugins do Claude Code +- โœ… **Pipeline de Ponta a Ponta** - Da fonte de documentaรงรฃo ร  entrada publicada no marketplace + +### โœ… Garantia de Qualidade +- โœ… **Totalmente Testado** - Mais de 3.700 testes com cobertura abrangente + +--- + +## ๐Ÿ“ฆ Instalaรงรฃo + +```bash +# Instalaรงรฃo bรกsica (coleta de documentaรงรฃo, anรกlise GitHub, PDF, empacotamento) +pip install skill-seekers + +# Com suporte a todas as plataformas LLM +pip install skill-seekers[all-llms] + +# Com servidor MCP +pip install skill-seekers[mcp] + +# Tudo incluรญdo +pip install skill-seekers[all] +``` + +**Precisa de ajuda para escolher?** Execute o assistente de configuraรงรฃo: +```bash +skill-seekers-setup +``` + +### Opรงรตes de Instalaรงรฃo + +| Instalaรงรฃo | Funcionalidades | +|-----------|----------------| +| `pip install skill-seekers` | Coleta, anรกlise GitHub, PDF, todas as plataformas | +| `pip install skill-seekers[gemini]` | + Suporte ao Google Gemini | +| `pip install skill-seekers[openai]` | + Suporte ao OpenAI ChatGPT | +| `pip install skill-seekers[all-llms]` | + Todas as plataformas LLM | +| `pip install skill-seekers[mcp]` | + Servidor MCP para Claude Code, Cursor, etc. | +| `pip install skill-seekers[video]` | + Extraรงรฃo de transcriรงรตes e metadados do YouTube/Vimeo | +| `pip install skill-seekers[video-full]` | + Transcriรงรฃo Whisper e extraรงรฃo visual de frames | +| `pip install skill-seekers[jupyter]` | + Suporte a Jupyter Notebook | +| `pip install skill-seekers[pptx]` | + Suporte a PowerPoint | +| `pip install skill-seekers[confluence]` | + Suporte a wiki Confluence | +| `pip install skill-seekers[notion]` | + Suporte a pรกginas Notion | +| `pip install skill-seekers[rss]` | + Suporte a feeds RSS/Atom | +| `pip install skill-seekers[chat]` | + Suporte a exportaรงรฃo de chat Slack/Discord | +| `pip install skill-seekers[asciidoc]` | + Suporte a documentos AsciiDoc | +| `pip install skill-seekers[all]` | Tudo habilitado | + +> **Dependรชncias visuais de vรญdeo (detecรงรฃo de GPU):** Apรณs instalar `skill-seekers[video-full]`, execute +> `skill-seekers create --setup` para detectar automaticamente sua GPU e instalar a variante +> correta do PyTorch + easyocr. Esta รฉ a forma recomendada de instalar as dependรชncias de extraรงรฃo visual. + +--- + +## ๐Ÿš€ Workflow de Instalaรงรฃo com Um Comando + +**A forma mais rรกpida de ir da configuraรงรฃo ร  skill enviada โ€” automaรงรฃo completa:** + +```bash +# Instale a skill React a partir das configs oficiais (upload automรกtico para o Claude) +skill-seekers install --config react + +# Instale a partir de arquivo de configuraรงรฃo local +skill-seekers install --config configs/custom.json + +# Instale sem fazer upload (apenas empacotar) +skill-seekers install --config django --no-upload + +# Visualize o workflow sem executar +skill-seekers install --config react --dry-run +``` + +**Tempo:** 20-45 minutos no total | **Qualidade:** Pronto para produรงรฃo (9/10) | **Custo:** Gratuito + +**Fases executadas:** +``` +๐Ÿ“ฅ FASE 1: Buscar Configuraรงรฃo (se nome da config for fornecido) +๐Ÿ“– FASE 2: Coletar Documentaรงรฃo +โœจ FASE 3: Aprimoramento com IA (OBRIGATร“RIO - sem opรงรฃo de pular) +๐Ÿ“ฆ FASE 4: Empacotar Skill +โ˜๏ธ FASE 5: Upload para o Claude (opcional, requer API key) +``` + +**Requisitos:** +- Variรกvel de ambiente ANTHROPIC_API_KEY (para upload automรกtico) +- Plano Claude Code Max (para aprimoramento com IA local), ou use `--agent` para selecionar um agente de IA diferente + +--- + +## ๐Ÿ“Š Matriz de Funcionalidades + +O Skill Seekers suporta **12 plataformas LLM**, **8 destinos RAG/vetoriais**, **18 tipos de fontes** e paridade completa de funcionalidades em todos os destinos. + +**Plataformas:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Markdown Genรฉrico, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**Tipos de Fontes:** Sites de documentaรงรฃo, repositรณrios GitHub, PDFs, Word (.docx), EPUB, Vรญdeo, Codebases locais, Jupyter Notebooks, HTML local, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), feeds RSS/Atom, Man pages, wikis Confluence, pรกginas Notion, exportaรงรตes de chat Slack/Discord + +Consulte a [Matriz Completa de Funcionalidades](docs/reference/FEATURE_MATRIX.md) para suporte detalhado por plataforma e funcionalidade. + +### Comparaรงรฃo Rรกpida de Plataformas + +| Funcionalidade | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------------|--------|--------|--------|---------|----------| +| Formato | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Upload | โœ… API | โœ… API | โœ… API | โœ… API | โŒ Manual | +| Aprimoramento | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ Nenhum | +| Todos os Modos de Skill | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## Exemplos de Uso + +### Coleta de Documentaรงรฃo + +```bash +# Coletar site de documentaรงรฃo +skill-seekers create --config configs/react.json + +# Coleta rรกpida sem configuraรงรฃo +skill-seekers create https://react.dev --name react + +# Com modo assรญncrono (3x mais rรกpido) +skill-seekers create --config configs/godot.json --async --workers 8 + +# Use um agente de IA especรญfico para o aprimoramento +skill-seekers create --config configs/react.json --agent kimi +``` + +### Extraรงรฃo de PDF + +```bash +# Extraรงรฃo bรกsica de PDF +skill-seekers create --pdf docs/manual.pdf --name myskill + +# Funcionalidades avanรงadas +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Extrair tabelas + --parallel \ # Processamento paralelo rรกpido + --workers 8 # Usar 8 nรบcleos de CPU + +# PDFs digitalizados (requer: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Extraรงรฃo de Vรญdeo + +```bash +# Instalar suporte a vรญdeo +pip install skill-seekers[video] # Transcriรงรตes + metadados +pip install skill-seekers[video-full] # + Whisper + extraรงรฃo visual de frames + +# Detectar GPU automaticamente e instalar dependรชncias visuais (PyTorch + easyocr) +skill-seekers create --setup + +# Extrair de vรญdeo do YouTube +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# Extrair de uma playlist do YouTube +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Extrair de um arquivo de vรญdeo local +skill-seekers create --video-file recording.mp4 --name myrecording + +# Extrair com anรกlise visual de frames (requer dependรชncias video-full) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# Com aprimoramento por IA (limpa OCR + gera SKILL.md polido) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Recortar seรงรฃo especรญfica de um vรญdeo (suporta segundos, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# Usar Vision API para frames OCR de baixa confianรงa (requer ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Reconstruir skill a partir de dados previamente extraรญdos (pular download) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Guia completo:** Consulte [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) para referรชncia CLI completa, +> detalhes do pipeline visual, opรงรตes de aprimoramento com IA e troubleshooting. + +### Anรกlise de Repositรณrios GitHub + +```bash +# Coleta bรกsica de repositรณrio +skill-seekers create facebook/react + +# Com autenticaรงรฃo (rate limits mais altos) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Personalizar o que incluir +skill-seekers create django/django \ + --include-issues \ # Extrair GitHub Issues + --max-issues 100 \ # Limitar quantidade de issues + --include-changelog # Extrair CHANGELOG.md +``` + +### Coleta Unificada Multi-Fonte + +**Combine documentaรงรฃo + GitHub + PDF em uma skill unificada com detecรงรฃo de conflitos:** + +```bash +# Use configs unificadas existentes +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# Ou crie uma config unificada +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**A Detecรงรฃo de Conflitos encontra automaticamente:** +- ๐Ÿ”ด **Ausente no cรณdigo** (alta): Documentado mas nรฃo implementado +- ๐ŸŸก **Ausente nos docs** (mรฉdia): Implementado mas nรฃo documentado +- โš ๏ธ **Assinatura incompatรญvel**: Parรขmetros/tipos diferentes +- โ„น๏ธ **Descriรงรฃo incompatรญvel**: Explicaรงรตes diferentes + +**Guia Completo:** Consulte [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) para documentaรงรฃo completa. + +### Repositรณrios Privados de Configuraรงรฃo + +**Compartilhe configs personalizadas entre equipes usando repositรณrios Git privados:** + +```bash +# Opรงรฃo 1: Usando ferramentas MCP (recomendado) +# Registre o repositรณrio privado da sua equipe +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Busque config do repositรณrio da equipe +fetch_config(source="team", config_name="internal-api") +``` + +**Plataformas Suportadas:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Guia Completo:** Consulte [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) para documentaรงรฃo completa. + +## Como Funciona + +```mermaid +graph LR + A[Site de Documentaรงรฃo] --> B[Skill Seekers] + B --> C[Coletor] + B --> D[Aprimoramento IA] + B --> E[Empacotador] + C --> F[Referรชncias Organizadas] + D --> F + F --> E + E --> G[AI Skill .zip] + G --> H[Upload para a plataforma de IA] +``` + +0. **Detectar llms.txt** - Verifica primeiro por llms-full.txt, llms.txt, llms-small.txt (parte da Descoberta SPA Inteligente) +1. **Coletar**: Extrai todas as pรกginas da documentaรงรฃo +2. **Categorizar**: Organiza o conteรบdo em tรณpicos (API, guias, tutoriais, etc.) +3. **Aprimorar**: IA analisa os docs e cria SKILL.md abrangente com exemplos (suporta mรบltiplos agentes via `--agent`) +4. **Empacotar**: Empacota tudo em um arquivo `.zip` pronto para a plataforma + +## Arquitetura + +O sistema รฉ organizado em **8 mรณdulos principais** e **5 mรณdulos utilitรกrios** (~200 classes no total): + +![Visรฃo Geral dos Pacotes](docs/UML/exports/00_package_overview.png) + +| Mรณdulo | Propรณsito | Classes principais | +|--------|-----------|--------------------| +| **CLICore** | Despachante de comandos no estilo Git | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 extratores por tipo de fonte | `DocToSkillConverter`, `DocumentSkillBuilder` (camada de construรงรฃo compartilhada), `UnifiedScraper` | +| **Adaptors** | 20+ formatos de plataformas de saรญda | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | Pipeline de anรกlise de codebase C3.x | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 detectores GoF | +| **Enhancement** | Aprimoramento de skills com IA via `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Empacotar, enviar e instalar skills | `PackageSkill`, `InstallAgent` | +| **MCP** | Servidor FastMCP (40 ferramentas) | `SkillSeekerMCPServer`, 10 mรณdulos de ferramentas | +| **Sync** | Detecรงรฃo de mudanรงas na documentaรงรฃo | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Mรณdulos utilitรกrios: **Parsers** (28 parsers CLI), **Storage** (S3/GCS/Azure), **Embedding** (vetores multi-provedor), **Benchmark** (performance), **Utilities** (16 helpers compartilhados). + +Diagramas UML completos: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | Projeto StarUML: `docs/UML/skill_seekers.mdj` | Referรชncia de API em HTML: `docs/UML/html/` + +## ๐Ÿ“‹ Prรฉ-requisitos + +**Antes de comeรงar, certifique-se de ter:** + +1. **Python 3.10 ou superior** - [Download](https://www.python.org/downloads/) | Verificar: `python3 --version` +2. **Git** - [Download](https://git-scm.com/) | Verificar: `git --version` +3. **15-30 minutos** para a configuraรงรฃo inicial + +**Primeira vez?** โ†’ **[Comece Aqui: Guia de Inรญcio Rรกpido Infalรญvel](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Enviando Skills para o Claude + +Depois que sua skill estiver empacotada, vocรช precisa enviรก-la para o Claude: + +### Opรงรฃo 1: Upload Automรกtico (via API) + +```bash +# Configure sua API key (uma รบnica vez) +export ANTHROPIC_API_KEY=sk-ant-... + +# Empacote e faรงa upload automaticamente +skill-seekers package output/react/ --upload + +# OU faรงa upload de um .zip existente +skill-seekers upload output/react.zip +``` + +### Opรงรฃo 2: Upload Manual (Sem API Key) + +```bash +# Empacote a skill +skill-seekers package output/react/ +# โ†’ Cria output/react.zip + +# Depois faรงa upload manualmente: +# - Acesse https://claude.ai/skills +# - Clique em "Upload Skill" +# - Selecione output/react.zip +``` + +### Opรงรฃo 3: MCP (Claude Code) + +``` +No Claude Code, basta pedir: +"Empacote e faรงa upload da skill React" +``` + +--- + +## ๐Ÿค– Instalando em Agentes de IA + +O Skill Seekers pode instalar automaticamente skills em 19 agentes de programaรงรฃo com IA. + +```bash +# Instalar em agente especรญfico +skill-seekers install-agent output/react/ --agent cursor + +# Instalar no IBM Bob (local ao projeto: .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Instalar em todos os agentes de uma vez +skill-seekers install-agent output/react/ --agent all + +# Visualizar sem instalar +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Agentes Suportados + +| Agente | Caminho | Tipo | +|--------|---------|------| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Projeto | +| **VS Code / Copilot** | `.github/skills/` | Projeto | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Projeto | +| **Cline** | `.cline/skills/` | Projeto | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Projeto | +| **Kilo Code** | `.kilo/skills/` | Projeto | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Projeto | + +--- + +## ๐Ÿ”Œ Integraรงรฃo MCP (40 Ferramentas) + +O Skill Seekers inclui um servidor MCP para uso com Claude Code, Cursor, Windsurf, VS Code + Cline ou IntelliJ IDEA. + +```bash +# Modo stdio (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# Modo HTTP (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Configurar automaticamente todos os agentes de uma vez +./setup_mcp.sh +``` + +**Todas as 40 ferramentas disponรญveis:** +- **Nรบcleo (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **Estendidas (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Bancos Vetoriais (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Nuvem (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**Guia Completo:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ Configuraรงรฃo + +### Presets Disponรญveis (24+) + +```bash +# Listar todos os presets +# skill-seekers list-configs # Nรฃo disponรญvel na v3.7.0 +``` + +| Categoria | Presets | +|-----------|---------| +| **Frameworks Web** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Desenvolvimento de Jogos** | `godot`, `pygame`, `unity` | +| **Ferramentas e DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **Unificados (Docs + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` e mais | + +### Criando Sua Prรณpria Configuraรงรฃo + +```bash +# Opรงรฃo 1: Interativo +skill-seekers create --interactive + +# Opรงรฃo 2: Copie e edite um preset +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Estrutura do Arquivo de Configuraรงรฃo + +```json +{ + "name": "myframework", + "description": "When to use this skill", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Onde Armazenar Configuraรงรตes + +A ferramenta busca na seguinte ordem: +1. Caminho exato fornecido +2. `./configs/` (diretรณrio atual) +3. `~/.config/skill-seekers/configs/` (diretรณrio de configuraรงรฃo do usuรกrio) +4. API SkillSeekersWeb.com (configuraรงรตes predefinidas) + +--- + +## ๐Ÿ“Š O que รฉ Criado + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Dados brutos coletados +โ”‚ โ”œโ”€โ”€ pages/ # Arquivos JSON (um por pรกgina) +โ”‚ โ””โ”€โ”€ summary.json # Resumo geral +โ”‚ +โ””โ”€โ”€ godot/ # A skill + โ”œโ”€โ”€ SKILL.md # Aprimorado com exemplos reais + โ”œโ”€โ”€ references/ # Docs categorizados + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # Vazio (adicione os seus) + โ””โ”€โ”€ assets/ # Vazio (adicione os seus) +``` + +--- + +## ๐Ÿ› Soluรงรฃo de Problemas + +### Nenhum Conteรบdo Extraรญdo? +- Verifique seu seletor `main_content` +- Tente: `article`, `main`, `div[role="main"]` + +### Dados Existem Mas Nรฃo Sรฃo Usados? +```bash +# Forรงar re-coleta +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### Categorias Nรฃo Estรฃo Boas? +Edite a seรงรฃo `categories` da configuraรงรฃo com palavras-chave melhores. + +### Quer Atualizar os Docs? +```bash +# Apague dados antigos e recolete +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### Aprimoramento Nรฃo Funciona? +```bash +# Verifique se a API key estรก configurada +echo $ANTHROPIC_API_KEY + +# Tente o modo LOCAL (usa Claude Code Max, sem necessidade de API key) +skill-seekers enhance output/react/ --mode LOCAL + +# Monitore o status do aprimoramento em segundo plano +skill-seekers enhance-status output/react/ --watch +``` + +### Problemas de Rate Limit do GitHub? +```bash +# Configure um token GitHub (5000 req/hora vs 60/hora anรดnimo) +export GITHUB_TOKEN=ghp_your_token_here + +# Ou configure mรบltiplos perfis +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ Performance + +| Tarefa | Tempo | Observaรงรตes | +|--------|-------|-------------| +| Coleta (sรญncrona) | 15-45 min | Apenas na primeira vez, baseada em threads | +| Coleta (assรญncrona) | 5-15 min | 2-3x mais rรกpida com a flag `--async` | +| Construรงรฃo | 1-3 min | Reconstruรงรฃo rรกpida a partir do cache | +| Reconstruรงรฃo | <1 min | Com `--skip-scrape` | +| Aprimoramento (LOCAL) | 30-60 seg | Usa Claude Code Max | +| Aprimoramento (API) | 20-40 seg | Requer API key | +| Vรญdeo (transcriรงรฃo) | 1-3 min | YouTube/local, apenas transcriรงรฃo | +| Vรญdeo (visual) | 5-15 min | + extraรงรฃo OCR de frames | +| Empacotamento | 5-10 seg | Criaรงรฃo final do .zip | + +--- + +## ๐Ÿ†• Novidades na v3.6.0 + +### Presets de Workflow +Controle a profundidade da anรกlise com `--preset`: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Rรกpido, superficial +skill-seekers create https://docs.react.dev/ --preset standard # Equilibrado (padrรฃo) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Profundo, exaustivo +``` + +### Flags de Ciclo de Vida +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Prรฉ-visualizaรงรฃo sem coleta +skill-seekers create https://docs.react.dev/ --fresh # Ignorar cache, recoleta completa +skill-seekers create https://docs.react.dev/ --resume # Retomar trabalho interrompido +skill-seekers create https://docs.react.dev/ --skip-scrape # Reempacotar saรญda existente +``` + +### Health Check e Utilitรกrios +```bash +skill-seekers doctor # Diagnosticar instalaรงรฃo e ambiente +skill-seekers sync-config # Detectar divergรชncia de configuraรงรฃo +skill-seekers stream # Ingestรฃo por streaming para documentaรงรตes grandes +skill-seekers update output/react/ # Atualizaรงรฃo incremental +skill-seekers multilang # Geraรงรฃo de skills multilรญngue +skill-seekers quality output/react/ # Relatรณrio de qualidade (adicione --threshold 7 para bloquear: saรญda diferente de zero abaixo de 7/10) +``` + +### Opรงรตes de RAG Chunking (package) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Publicaรงรฃo no Marketplace +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Dependรชncias Opcionais Adicionais +| Extra | Instalaรงรฃo | Propรณsito | +|-------|------------|-----------| +| `browser` | `pip install "skill-seekers[browser]"` | Playwright headless para sites SPA | +| `embedding` | `pip install "skill-seekers[embedding]"` | Suporte a servidor de embeddings | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` etc. | Upload para armazenamento em nuvem | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | Dependรชncias combinadas de upload para bancos vetoriais | + +--- + +## ๐Ÿ“š Documentaรงรฃo + +### Primeiros Passos +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **COMECE AQUI** se vocรช รฉ novo! +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Inรญcio rรกpido para usuรกrios experientes +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problemas comuns e soluรงรตes +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - Folha de referรชncia rรกpida + +### Arquitetura +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - Visรฃo geral da arquitetura UML com 14 diagramas +- **[docs/UML/exports/](docs/UML/exports/)** - Exportaรงรตes de diagramas em PNG (visรฃo geral dos pacotes + 13 diagramas de classes) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Referรชncia de API completa em HTML (todas as classes, operaรงรตes, atributos) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - Arquivo de projeto StarUML (abra com [StarUML](https://staruml.io/)) + +### Guias +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - Processar docs de 10K-40K+ pรกginas +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - Guia de modos de aprimoramento com IA +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - Configuraรงรฃo da integraรงรฃo MCP +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - Coleta multi-fonte +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Guia de extraรงรฃo de vรญdeo + +### Guias de Integraรงรฃo +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - Todos os pipelines RAG + +--- + +## ๐Ÿ“ Licenรงa + +Licenรงa MIT - consulte o arquivo [LICENSE](LICENSE) para detalhes + +--- + +Bom trabalho construindo skills! ๐Ÿš€ + +--- + +## ๐Ÿ”’ Seguranรงa + +[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› Patrocinadores + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” uma plataforma de inferรชncia de IA full-modal compatรญvel com OpenAI. O Skill Seekers a suporta como destino de empacotamento/aprimoramento via `--target atlas` com `ATLAS_API_KEY`. diff --git a/README.ru.md b/README.ru.md new file mode 100644 index 0000000..446eec8 --- /dev/null +++ b/README.ru.md @@ -0,0 +1,1358 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | ะ ัƒััะบะธะน + +> โš ๏ธ **ะฃะฒะตะดะพะผะปะตะฝะธะต ะพ ะผะฐัˆะธะฝะฝะพะผ ะฟะตั€ะตะฒะพะดะต** +> +> ะญั‚ะพั‚ ะดะพะบัƒะผะตะฝั‚ ะฑั‹ะป ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะฟะตั€ะตะฒะตะดั‘ะฝ ั ะฟะพะผะพั‰ัŒัŽ ะ˜ะ˜. ะะตัะผะพั‚ั€ั ะฝะฐ ะฝะฐัˆะธ ัƒัะธะปะธั ะฟะพ ะพะฑะตัะฟะตั‡ะตะฝะธัŽ ะบะฐั‡ะตัั‚ะฒะฐ, ะฒะพะทะผะพะถะฝั‹ ะฝะตั‚ะพั‡ะฝั‹ะต ะฒั‹ั€ะฐะถะตะฝะธั. + +[![ะ’ะตั€ัะธั](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![ะ›ะธั†ะตะฝะทะธั: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP-ะธะฝั‚ะตะณั€ะฐั†ะธั](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![ะขะตัั‚ั‹ ะฟั€ะพะนะดะตะฝั‹](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![ะ”ะพัะบะฐ ะฟั€ะพะตะบั‚ะฐ](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI ะฒะตั€ัะธั](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ะ—ะฐะณั€ัƒะทะบะธ](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ะ’ะตั€ัะธั Python](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![ะ’ะตะฑ-ัะฐะนั‚](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  ะกะปะพะน ะดะฐะฝะฝั‹ั… ะดะปั ะ˜ะ˜-ัะธัั‚ะตะผ.** Skill Seekers ะฟั€ะตะพะฑั€ะฐะทัƒะตั‚ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ ัะฐะนั‚ะพะฒ, ั€ะตะฟะพะทะธั‚ะพั€ะธะธ GitHub, PDF, ะฒะธะดะตะพ, Jupyter-ะฝะพัƒั‚ะฑัƒะบะธ, ะฒะธะบะธ ะธ ะฑะพะปะตะต 10 ะดั€ัƒะณะธั… ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ ะฒ ัั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝั‹ะต ะฑะฐะทั‹ ะทะฝะฐะฝะธะน โ€” ะณะพั‚ะพะฒั‹ะต ะบ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธัŽ ะฒ ะ˜ะ˜-ะฝะฐะฒั‹ะบะฐั… (Claude, Gemini, OpenAI), RAG-ะบะพะฝะฒะตะนะตั€ะฐั… (LangChain, LlamaIndex, Pinecone) ะธ ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะฐั… ะดะปั ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั (Cursor, Windsurf, Cline) ะทะฐ ัั‡ะธั‚ะฐะฝะฝั‹ะต ะผะธะฝัƒั‚ั‹. + +> ๐ŸŒ **[ะŸะพัะตั‚ะธั‚ะต SkillSeekersWeb.com](https://skillseekersweb.com/)** โ€” ะฟั€ะพัะผะฐั‚ั€ะธะฒะฐะนั‚ะต 24+ ะณะพั‚ะพะฒั‹ั… ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน, ะดะตะปะธั‚ะตััŒ ัะฒะพะธะผะธ ะฝะฐัั‚ั€ะพะนะบะฐะผะธ ะธ ะฟะพะปัƒั‡ะฐะนั‚ะต ะดะพัั‚ัƒะฟ ะบ ะฟะพะปะฝะพะน ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ! + +> ๐Ÿ“‹ **[ะกะผะพั‚ั€ะธั‚ะต ะดะพั€ะพะถะฝัƒัŽ ะบะฐั€ั‚ัƒ ั€ะฐะทั€ะฐะฑะพั‚ะบะธ ะธ ะทะฐะดะฐั‡ะธ](https://github.com/users/yusufkaraaslan/projects/2)** โ€” 134 ะทะฐะดะฐั‡ะธ ะฒ 10 ะบะฐั‚ะตะณะพั€ะธัั…, ะฒั‹ะฑะตั€ะธั‚ะต ะปัŽะฑัƒัŽ ะดะปั ัƒั‡ะฐัั‚ะธั! + +## ๐ŸŒ ะญะบะพัะธัั‚ะตะผะฐ + +Skill Seekers โ€” ัั‚ะพ ะผัƒะปัŒั‚ะธ-ั€ะตะฟะพะทะธั‚ะพั€ะฝั‹ะน ะฟั€ะพะตะบั‚. ะ’ะพั‚ ะณะดะต ะฝะฐั…ะพะดะธั‚ัั ะบะฐะถะดะฐั ั‡ะฐัั‚ัŒ: + +| ะ ะตะฟะพะทะธั‚ะพั€ะธะน | ะžะฟะธัะฐะฝะธะต | ะกัั‹ะปะบะธ | +|------------|----------|--------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | ะžัะฝะพะฒะฝะพะน CLI ะธ MCP ัะตั€ะฒะตั€ (ัั‚ะพั‚ ั€ะตะฟะพะทะธั‚ะพั€ะธะน) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | ะ’ะตะฑ-ัะฐะนั‚ ะธ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั | [ะกะฐะนั‚](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | ะ ะตะฟะพะทะธั‚ะพั€ะธะน ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน ัะพะพะฑั‰ะตัั‚ะฒะฐ | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action ะดะปั CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | ะŸะปะฐะณะธะฝ Claude Code | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | Homebrew tap ะดะปั macOS | | + +> **ะฅะพั‚ะธั‚ะต ะฒะฝะตัั‚ะธ ะฒะบะปะฐะด?** ะ ะตะฟะพะทะธั‚ะพั€ะธะธ ัะฐะนั‚ะฐ ะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน โ€” ะพั‚ะปะธั‡ะฝะฐั ะพั‚ะฟั€ะฐะฒะฝะฐั ั‚ะพั‡ะบะฐ ะดะปั ะฝะพะฒั‹ั… ัƒั‡ะฐัั‚ะฝะธะบะพะฒ! + +## ๐Ÿง  ะกะปะพะน ะดะฐะฝะฝั‹ั… ะดะปั ะ˜ะ˜-ัะธัั‚ะตะผ + +**Skill Seekers โ€” ัั‚ะพ ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน ัะปะพะน ะฟั€ะตะดะพะฑั€ะฐะฑะพั‚ะบะธ**, ั€ะฐัะฟะพะปะพะถะตะฝะฝั‹ะน ะผะตะถะดัƒ ะฝะตะพะฑั€ะฐะฑะพั‚ะฐะฝะฝะพะน ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะตะน ะธ ะฒัะตะผะธ ะ˜ะ˜-ัะธัั‚ะตะผะฐะผะธ, ะบะพั‚ะพั€ั‹ะต ะตั‘ ะฟะพั‚ั€ะตะฑะปััŽั‚. ะะตะทะฐะฒะธัะธะผะพ ะพั‚ ั‚ะพะณะพ, ัะพะทะดะฐั‘ั‚ะต ะปะธ ะฒั‹ ะฝะฐะฒั‹ะบะธ ะดะปั Claude, RAG-ะบะพะฝะฒะตะนะตั€ LangChain ะธะปะธ ั„ะฐะนะป `.cursorrules` ะดะปั Cursor โ€” ะฟะพะดะณะพั‚ะพะฒะบะฐ ะดะฐะฝะฝั‹ั… ะพะดะธะฝะฐะบะพะฒะฐ. ะ’ั‹ะฟะพะปะฝะธั‚ะต ะตั‘ ะพะดะธะฝ ั€ะฐะท ะธ ัะบัะฟะพั€ั‚ะธั€ัƒะนั‚ะต ะฒะพ ะฒัะต ั†ะตะปะตะฒั‹ะต ะฟะปะฐั‚ั„ะพั€ะผั‹. + +```bash +# ะžะดะฝะฐ ะบะพะผะฐะฝะดะฐ โ†’ ัั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝะฐั ะฑะฐะทะฐ ะทะฝะฐะฝะธะน +skill-seekers create https://docs.react.dev/ +# ะธะปะธ: skill-seekers create facebook/react +# ะธะปะธ: skill-seekers create ./my-project + +# ะญะบัะฟะพั€ั‚ ะฒ ะปัŽะฑัƒัŽ ะ˜ะ˜-ัะธัั‚ะตะผัƒ +skill-seekers package output/react --target claude # โ†’ Claude AI ะฝะฐะฒั‹ะบ (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ ะ”ะธั€ะตะบั‚ะพั€ะธั ะฝะฐะฒั‹ะบะฐ IBM Bob +``` + +### ะงั‚ะพ ัะพะทะดะฐั‘ั‚ัั + +| ะ ะตะทัƒะปัŒั‚ะฐั‚ | ะฆะตะปัŒ | ะ“ะดะต ะธัะฟะพะปัŒะทัƒะตั‚ัั | +|-----------|------|-----------------| +| **Claude ะฝะฐะฒั‹ะบ** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini ะฝะฐะฒั‹ะบ** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต ะฐััะธัั‚ะตะฝั‚ั‹ | +| **LangChain Documents** | `--target langchain` | QA-ั†ะตะฟะพั‡ะบะธ, ะฐะณะตะฝั‚ั‹, ั€ะตั‚ั€ะธะฒะตั€ั‹ | +| **LlamaIndex TextNodes** | `--target llama-index` | ะ”ะฒะธะถะบะธ ะทะฐะฟั€ะพัะพะฒ, ะดะฒะธะถะบะธ ะดะธะฐะปะพะณะพะฒ | +| **Haystack Documents** | `--target haystack` | ะšะพั€ะฟะพั€ะฐั‚ะธะฒะฝั‹ะต RAG-ะบะพะฝะฒะตะนะตั€ั‹ | +| **Pinecone-ready** (Markdown) | `--target markdown` | ะ—ะฐะณั€ัƒะทะบะฐ ะฒ ะฒะตะบั‚ะพั€ะฝะพะต ั…ั€ะฐะฝะธะปะธั‰ะต | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | ะ›ะพะบะฐะปัŒะฝั‹ะต ะฒะตะบั‚ะพั€ะฝั‹ะต ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั… | +| **IBM Bob ะฝะฐะฒั‹ะบ** (ะดะธั€ะตะบั‚ะพั€ะธั) | `--target ibm-bob` | ะŸั€ะพะตะบั‚ะฝั‹ะต/ะณะปะพะฑะฐะปัŒะฝั‹ะต ะฝะฐะฒั‹ะบะธ IBM Bob | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ ัะบะพะฟะธั€ะพะฒะฐั‚ัŒ SKILL.md | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ ัะบะพะฟะธั€ะพะฒะฐั‚ัŒ | VS Code, IntelliJ, Vim | + +### ะŸะพั‡ะตะผัƒ ัั‚ะพ ะฒะฐะถะฝะพ + +- โšก **ะะฐ 99% ะฑั‹ัั‚ั€ะตะต** โ€” ะดะฝะธ ั€ัƒั‡ะฝะพะน ะฟะพะดะณะพั‚ะพะฒะบะธ ะดะฐะฝะฝั‹ั… โ†’ 15โ€“45 ะผะธะฝัƒั‚ +- ๐ŸŽฏ **ะšะฐั‡ะตัั‚ะฒะพ ะ˜ะ˜-ะฝะฐะฒั‹ะบะพะฒ** โ€” ั„ะฐะนะปั‹ SKILL.md ะฝะฐ 500+ ัั‚ั€ะพะบ ั ะฟั€ะธะผะตั€ะฐะผะธ, ัˆะฐะฑะปะพะฝะฐะผะธ ะธ ั€ัƒะบะพะฒะพะดัั‚ะฒะฐะผะธ +- ๐Ÿ“Š **ะ“ะพั‚ะพะฒั‹ะต ะบ RAG ะฑะปะพะบะธ** โ€” ัƒะผะฝะฐั ั€ะฐะทะฑะธะฒะบะฐ ัะพั…ั€ะฐะฝัะตั‚ ะฑะปะพะบะธ ะบะพะดะฐ ะธ ะบะพะฝั‚ะตะบัั‚ +- ๐ŸŽฌ **ะ’ะธะดะตะพ** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ะบะพะดะฐ, ััƒะฑั‚ะธั‚ั€ะพะฒ ะธ ัั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝั‹ั… ะทะฝะฐะฝะธะน ะธะท YouTube ะธ ะปะพะบะฐะปัŒะฝั‹ั… ะฒะธะดะตะพ +- ๐Ÿ”„ **ะœะฝะพะถะตัั‚ะฒะพ ะธัั‚ะพั‡ะฝะธะบะพะฒ** โ€” ะพะฑัŠะตะดะธะฝะตะฝะธะต 18 ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ (ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั, GitHub, PDF, ะฒะธะดะตะพ, ะฝะพัƒั‚ะฑัƒะบะธ, ะฒะธะบะธ ะธ ะดั€ัƒะณะธะต) ะฒ ะตะดะธะฝัƒัŽ ะฑะฐะทัƒ ะทะฝะฐะฝะธะน +- ๐ŸŒ **ะžะดะฝะฐ ะฟะพะดะณะพั‚ะพะฒะบะฐ โ€” ะฒัะต ะฟะปะฐั‚ั„ะพั€ะผั‹** โ€” ัะบัะฟะพั€ั‚ ะพะดะฝะพะณะพ ะฐะบั‚ะธะฒะฐ ะฝะฐ 21 ะฟะปะฐั‚ั„ะพั€ะผัƒ ะฑะตะท ะฟะพะฒั‚ะพั€ะฝะพะณะพ ัะบะฐะฝะธั€ะพะฒะฐะฝะธั +- โœ… **ะŸั€ะพะฒะตั€ะตะฝะพ ะฒ ะฑะพัŽ** โ€” 3 700+ ั‚ะตัั‚ะพะฒ, 24+ ะฟั€ะตัะตั‚ะพะฒ ะดะปั ั„ั€ะตะนะผะฒะพั€ะบะพะฒ, ะณะพั‚ะพะฒะพ ะบ ะฟั€ะพะดะฐะบัˆะตะฝัƒ + +## ๐Ÿš€ ะ‘ั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚ (3 ะบะพะผะฐะฝะดั‹) + +```bash +# 1. ะฃัั‚ะฐะฝะพะฒะบะฐ +pip install skill-seekers + +# 2. ะกะพะทะดะฐะฝะธะต ะฝะฐะฒั‹ะบะฐ ะธะท ะปัŽะฑะพะณะพ ะธัั‚ะพั‡ะฝะธะบะฐ +skill-seekers create https://docs.django.com/ + +# 3. ะฃะฟะฐะบะพะฒะบะฐ ะดะปั ะฒะฐัˆะตะน ะ˜ะ˜-ะฟะปะฐั‚ั„ะพั€ะผั‹ +skill-seekers package output/django --target claude +``` + +**ะ’ะพั‚ ะธ ะฒัั‘!** ะขะตะฟะตั€ัŒ ัƒ ะฒะฐั ะตัั‚ัŒ ะณะพั‚ะพะฒั‹ะน ะบ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธัŽ `output/django-claude.zip`. + +```bash +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะดั€ัƒะณะพะณะพ ะ˜ะ˜-ะฐะณะตะฝั‚ะฐ ะดะปั ัƒะปัƒั‡ัˆะตะฝะธั (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะฟั€ะพะตะบั‚ะฐ ั ะฟะพะผะพั‰ัŒัŽ ะ˜ะ˜ (ะฝะพะฒะพะต) + +ะะฐะฟั€ะฐะฒัŒั‚ะต `scan` ะฝะฐ ะปัŽะฑะพะน ะฟั€ะพะตะบั‚ โ€” ะ˜ะ˜-ะฐะณะตะฝั‚ ะฟั€ะพั‡ะธั‚ะฐะตั‚ ะตะณะพ ะผะฐะฝะธั„ะตัั‚ั‹, README, +Dockerfile/CI ะธ ะฒั‹ะฑะพั€ะบัƒ ะธะผะฟะพั€ั‚ะพะฒ ะธัั…ะพะดะฝะพะณะพ ะบะพะดะฐ, ะฐ ะทะฐั‚ะตะผ ัะพะทะดะฐัั‚ ะฟะพ ะพะดะฝะพะน +ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฝะฐ ะบะฐะถะดั‹ะน ะพะฑะฝะฐั€ัƒะถะตะฝะฝั‹ะน ั„ั€ะตะนะผะฒะพั€ะบ ะฟะปัŽั `-codebase.json` +ะดะปั ะฒะฐัˆะตะณะพ ัะพะฑัั‚ะฒะตะฝะฝะพะณะพ ะบะพะดะฐ. ะžะฑะฝะฐั€ัƒะถะตะฝะฝะฐั ะฒะตั€ัะธั ั„ะธะบัะธั€ัƒะตั‚ัั, ะฟะพัั‚ะพะผัƒ +ะฟะพะฒั‚ะพั€ะฝั‹ะต ะทะฐะฟัƒัะบะธ ัะพะพะฑั‰ะฐัŽั‚ ะพะฑ ะพะฑะฝะพะฒะปะตะฝะธัั…: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# ะ—ะฐั‚ะตะผ ัะพะฑะตั€ะธั‚ะต ะปัŽะฑัƒัŽ ะธะท ะฝะธั… +skill-seekers create ./configs/scanned/react.json +``` + +ะ•ัะปะธ ะดะปั ะพะฑะฝะฐั€ัƒะถะตะฝะธั ะฝะตั‚ ะณะพั‚ะพะฒะพะณะพ ะฟั€ะตัะตั‚ะฐ, ะ˜ะ˜ ะณะตะฝะตั€ะธั€ัƒะตั‚ ะฝะพะฒัƒัŽ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธัŽ; +ะฟั€ะธ ะฒั‹ั…ะพะดะต ะตั‘ ะผะพะถะฝะพ ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ ะพะฟัƒะฑะปะธะบะพะฒะฐั‚ัŒ ะฒ [ั€ะตะตัั‚ั€ะต ัะพะพะฑั‰ะตัั‚ะฒะฐ](https://github.com/yusufkaraaslan/skill-seekers-configs). + +### ะ”ั€ัƒะณะธะต ะธัั‚ะพั‡ะฝะธะบะธ (ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ัั 18) + +```bash +# ะ ะตะฟะพะทะธั‚ะพั€ะธะน GitHub +skill-seekers create facebook/react + +# ะ›ะพะบะฐะปัŒะฝั‹ะน ะฟั€ะพะตะบั‚ +skill-seekers create ./my-project + +# PDF-ะดะพะบัƒะผะตะฝั‚ +skill-seekers create manual.pdf + +# ะ”ะพะบัƒะผะตะฝั‚ Word +skill-seekers create report.docx + +# ะญะปะตะบั‚ั€ะพะฝะฝะฐั ะบะฝะธะณะฐ EPUB +skill-seekers create book.epub + +# Jupyter-ะฝะพัƒั‚ะฑัƒะบ +skill-seekers create notebook.ipynb + +# ะกะฟะตั†ะธั„ะธะบะฐั†ะธั OpenAPI +skill-seekers create openapi.yaml + +# ะŸั€ะตะทะตะฝั‚ะฐั†ะธั PowerPoint +skill-seekers create presentation.pptx + +# ะ”ะพะบัƒะผะตะฝั‚ AsciiDoc +skill-seekers create guide.adoc + +# ะ›ะพะบะฐะปัŒะฝั‹ะน HTML-ั„ะฐะนะป (ะฐะฒั‚ะพะพะฟั€ะตะดะตะปะตะฝะธะต ะฟะพ ั€ะฐััˆะธั€ะตะฝะธัŽ) +skill-seekers create page.html + +# ะฆะตะปะฐั ะดะธั€ะตะบั‚ะพั€ะธั HTML-ั„ะฐะนะปะพะฒ (ะฐะฒั‚ะพะพะฟั€ะตะดะตะปะตะฝะธะต ะดะปั ะดะธั€ะตะบั‚ะพั€ะธะน ั ะฟั€ะตะพะฑะปะฐะดะฐะฝะธะตะผ HTML) +skill-seekers create ./mirror_output/site/ + +# ะŸั€ะธะฝัƒะดะธั‚ะตะปัŒะฝั‹ะน HTML-ั€ะตะถะธะผ ะดะปั ัะผะตัˆะฐะฝะฝะพะน ะดะธั€ะตะบั‚ะพั€ะธะธ ั ะฑะพะปัŒัˆะธะผ ะบะพะปะธั‡ะตัั‚ะฒะพะผ ะบะพะดะฐ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom-ะปะตะฝั‚ะฐ +skill-seekers create feed.rss + +# Man-ัั‚ั€ะฐะฝะธั†ะฐ +skill-seekers create curl.1 + +# ะ’ะธะดะตะพ (YouTube, Vimeo ะธะปะธ ะปะพะบะฐะปัŒะฝั‹ะน ั„ะฐะนะป โ€” ั‚ั€ะตะฑัƒะตั‚ัั skill-seekers[video]) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ะŸะตั€ะฒั‹ะน ะทะฐะฟัƒัะบ? ะะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ัƒัั‚ะฐะฝะพะฒะบะฐ ะทะฐะฒะธัะธะผะพัั‚ะตะน ั ะฟะพะดะดะตั€ะถะบะพะน GPU: +skill-seekers create --setup + +# ะ’ะธะบะธ Confluence +skill-seekers create --space-key TEAM --name wiki + +# ะกั‚ั€ะฐะฝะธั†ั‹ Notion +skill-seekers create --database-id ... --name docs + +# ะญะบัะฟะพั€ั‚ ั‡ะฐั‚ะพะฒ Slack/Discord +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### ะญะบัะฟะพั€ั‚ ะบัƒะดะฐ ัƒะณะพะดะฝะพ + +```bash +# ะฃะฟะฐะบะพะฒะบะฐ ะดะปั ะฝะตัะบะพะปัŒะบะธั… ะฟะปะฐั‚ั„ะพั€ะผ +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## ะงั‚ะพ ั‚ะฐะบะพะต Skill Seekers? + +Skill Seekers โ€” ัั‚ะพ **ัะปะพะน ะดะฐะฝะฝั‹ั… ะดะปั ะ˜ะ˜-ัะธัั‚ะตะผ**, ะบะพั‚ะพั€ั‹ะน ะฟั€ะตะพะฑั€ะฐะทัƒะตั‚ 18 ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ โ€” ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ ัะฐะนั‚ะพะฒ, ั€ะตะฟะพะทะธั‚ะพั€ะธะธ GitHub, PDF, ะฒะธะดะตะพ, Jupyter-ะฝะพัƒั‚ะฑัƒะบะธ, ะดะพะบัƒะผะตะฝั‚ั‹ Word/EPUB/AsciiDoc, ัะฟะตั†ะธั„ะธะบะฐั†ะธะธ OpenAPI/Swagger, ะฟั€ะตะทะตะฝั‚ะฐั†ะธะธ PowerPoint, RSS/Atom-ะปะตะฝั‚ั‹, man-ัั‚ั€ะฐะฝะธั†ั‹, ะฒะธะบะธ Confluence, ัั‚ั€ะฐะฝะธั†ั‹ Notion, ัะบัะฟะพั€ั‚ั‹ Slack/Discord ะธ ะดั€ัƒะณะพะต โ€” ะฒ ัั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝั‹ะต ะฑะฐะทั‹ ะทะฝะฐะฝะธะน ะดะปั ะฒัะตั… ะ˜ะ˜-ั†ะตะปะตะน: + +| ะกั†ะตะฝะฐั€ะธะน ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั | ะงั‚ะพ ะฒั‹ ะฟะพะปัƒั‡ะฐะตั‚ะต | ะŸั€ะธะผะตั€ั‹ | +|----------------------|-----------------|---------| +| **ะ˜ะ˜-ะฝะฐะฒั‹ะบะธ** | ะŸะพะปะฝั‹ะน SKILL.md + ัะฟั€ะฐะฒะพั‡ะฝั‹ะต ั„ะฐะนะปั‹ | Claude Code, Gemini, GPT | +| **RAG-ะบะพะฝะฒะตะนะตั€ั‹** | ะ”ะพะบัƒะผะตะฝั‚ั‹, ั€ะฐะทะฑะธั‚ั‹ะต ะฝะฐ ะฑะปะพะบะธ ั ะผะตั‚ะฐะดะฐะฝะฝั‹ะผะธ | LangChain, LlamaIndex, Haystack | +| **ะ’ะตะบั‚ะพั€ะฝั‹ะต ะฑะฐะทั‹ ะดะฐะฝะฝั‹ั…** | ะŸั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะพ ะพั‚ั„ะพั€ะผะฐั‚ะธั€ะพะฒะฐะฝะฝั‹ะต ะดะฐะฝะฝั‹ะต ะดะปั ะทะฐะณั€ัƒะทะบะธ | Pinecone, Chroma, Weaviate, FAISS | +| **ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะธ ะดะปั ะบะพะดะฐ** | ะคะฐะนะปั‹ ะบะพะฝั‚ะตะบัั‚ะฐ, ะบะพั‚ะพั€ั‹ะต IDE-ะ˜ะ˜ ั‡ะธั‚ะฐะตั‚ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ | Cursor, Windsurf, Cline, Continue.dev | + +## ๐Ÿ“š ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั + +| ะฏ ั…ะพั‡ัƒ... | ะงะธั‚ะฐะนั‚ะต ัั‚ะพ | +|-----------|-------------| +| **ะ‘ั‹ัั‚ั€ะพ ะฝะฐั‡ะฐั‚ัŒ** | [ะ‘ั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚](docs/getting-started/02-quick-start.md) โ€” 3 ะบะพะผะฐะฝะดั‹ ะดะพ ะฟะตั€ะฒะพะณะพ ะฝะฐะฒั‹ะบะฐ | +| **ะŸะพะฝัั‚ัŒ ะบะพะฝั†ะตะฟั†ะธะธ** | [ะžัะฝะพะฒะฝั‹ะต ะบะพะฝั†ะตะฟั†ะธะธ](docs/user-guide/01-core-concepts.md) โ€” ะบะฐะบ ัั‚ะพ ั€ะฐะฑะพั‚ะฐะตั‚ | +| **ะกะบะฐะฝะธั€ะพะฒะฐั‚ัŒ ะธัั‚ะพั‡ะฝะธะบะธ** | [ะ ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ ัะบะฐะฝะธั€ะพะฒะฐะฝะธัŽ](docs/user-guide/02-scraping.md) โ€” ะฒัะต ั‚ะธะฟั‹ ะธัั‚ะพั‡ะฝะธะบะพะฒ | +| **ะฃะปัƒั‡ัˆะฐั‚ัŒ ะฝะฐะฒั‹ะบะธ** | [ะ ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ ัƒะปัƒั‡ัˆะตะฝะธัŽ](docs/user-guide/03-enhancement.md) โ€” ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต | +| **ะญะบัะฟะพั€ั‚ะธั€ะพะฒะฐั‚ัŒ ะฝะฐะฒั‹ะบะธ** | [ะ ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ ัƒะฟะฐะบะพะฒะบะต](docs/user-guide/04-packaging.md) โ€” ัะบัะฟะพั€ั‚ ะฝะฐ ะฟะปะฐั‚ั„ะพั€ะผั‹ | +| **ะะฐะนั‚ะธ ะบะพะผะฐะฝะดั‹** | [ะกะฟั€ะฐะฒะบะฐ ะฟะพ CLI](docs/reference/CLI_REFERENCE.md) โ€” ะฒัะต 20 ะบะพะผะฐะฝะด | +| **ะะฐัั‚ั€ะพะธั‚ัŒ** | [ะคะพั€ะผะฐั‚ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ](docs/reference/CONFIG_FORMAT.md) โ€” ัะฟะตั†ะธั„ะธะบะฐั†ะธั JSON | +| **ะ ะตัˆะธั‚ัŒ ะฟั€ะพะฑะปะตะผั‹** | [ะฃัั‚ั€ะฐะฝะตะฝะธะต ะฝะตะฟะพะปะฐะดะพะบ](docs/user-guide/06-troubleshooting.md) โ€” ั‚ะธะฟะธั‡ะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ | + +**ะŸะพะปะฝะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั:** [docs/README.md](docs/README.md) + +Skill Seekers ะทะฐะผะตะฝัะตั‚ ะดะฝะธ ั€ัƒั‡ะฝะพะน ะฟั€ะตะดะพะฑั€ะฐะฑะพั‚ะบะธ ัะปะตะดัƒัŽั‰ะธะผะธ ัˆะฐะณะฐะผะธ: + +1. **ะกะฑะพั€** โ€” ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั, ั€ะตะฟะพะทะธั‚ะพั€ะธะธ GitHub, ะปะพะบะฐะปัŒะฝั‹ะต ะบะพะดะพะฒั‹ะต ะฑะฐะทั‹, PDF, ะฒะธะดะตะพ, Jupyter-ะฝะพัƒั‚ะฑัƒะบะธ, ะฒะธะบะธ ะธ ะฑะพะปะตะต 10 ะดั€ัƒะณะธั… ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ +2. **ะะฝะฐะปะธะท** โ€” ะณะปัƒะฑะพะบะธะน AST-ั€ะฐะทะฑะพั€, ะพะฑะฝะฐั€ัƒะถะตะฝะธะต ะฟะฐั‚ั‚ะตั€ะฝะพะฒ, ะธะทะฒะปะตั‡ะตะฝะธะต API +3. **ะกั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะธะต** โ€” ะบะฐั‚ะตะณะพั€ะธะทะธั€ะพะฒะฐะฝะฝั‹ะต ัะฟั€ะฐะฒะพั‡ะฝั‹ะต ั„ะฐะนะปั‹ ั ะผะตั‚ะฐะดะฐะฝะฝั‹ะผะธ +4. **ะฃะปัƒั‡ัˆะตะฝะธะต** โ€” ะณะตะฝะตั€ะฐั†ะธั SKILL.md ั ะฟะพะผะพั‰ัŒัŽ ะ˜ะ˜ (Claude, Gemini ะธะปะธ ะปะพะบะฐะปัŒะฝะพ) +5. **ะญะบัะฟะพั€ั‚** โ€” 16 ะฟะปะฐั‚ั„ะพั€ะผะพัะฟะตั†ะธั„ะธั‡ะฝั‹ั… ั„ะพั€ะผะฐั‚ะพะฒ ะธะท ะพะดะฝะพะณะพ ะฐะบั‚ะธะฒะฐ + +## ะ—ะฐั‡ะตะผ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ Skill Seekers? + +### ะ”ะปั ัะพะทะดะฐั‚ะตะปะตะน ะ˜ะ˜-ะฝะฐะฒั‹ะบะพะฒ (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **ะะฐะฒั‹ะบะธ ะฟั€ะพะดะฐะบัˆะตะฝ-ัƒั€ะพะฒะฝั** โ€” ั„ะฐะนะปั‹ SKILL.md ะฝะฐ 500+ ัั‚ั€ะพะบ ั ะฟั€ะธะผะตั€ะฐะผะธ ะบะพะดะฐ, ัˆะฐะฑะปะพะฝะฐะผะธ ะธ ั€ัƒะบะพะฒะพะดัั‚ะฒะฐะผะธ +- ๐Ÿ”„ **ะ ะฐะฑะพั‡ะธะต ะฟั€ะพั†ะตััั‹ ัƒะปัƒั‡ัˆะตะฝะธั** โ€” ะฟั€ะธะผะตะฝัะนั‚ะต `security-focus`, `architecture-comprehensive` ะธะปะธ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต YAML-ะฟั€ะตัะตั‚ั‹ +- ๐ŸŽฎ **ะ›ัŽะฑะฐั ะฟั€ะตะดะผะตั‚ะฝะฐั ะพะฑะปะฐัั‚ัŒ** โ€” ะธะณั€ะพะฒั‹ะต ะดะฒะธะถะบะธ (Godot, Unity), ั„ั€ะตะนะผะฒะพั€ะบะธ (React, Django), ะฒะฝัƒั‚ั€ะตะฝะฝะธะต ะธะฝัั‚ั€ัƒะผะตะฝั‚ั‹ +- ๐Ÿ”ง **ะšะพะผะฐะฝะดะฝะฐั ั€ะฐะฑะพั‚ะฐ** โ€” ะพะฑัŠะตะดะธะฝัะนั‚ะต ะฒะฝัƒั‚ั€ะตะฝะฝัŽัŽ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ + ะบะพะด ะฒ ะตะดะธะฝั‹ะน ะธัั‚ะพั‡ะฝะธะบ ะธัั‚ะธะฝั‹ +- ๐Ÿ“š **ะšะฐั‡ะตัั‚ะฒะพ** โ€” ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต ั ะฟั€ะธะผะตั€ะฐะผะธ, ะบั€ะฐั‚ะบะธะผ ัะฟั€ะฐะฒะพั‡ะฝะธะบะพะผ ะธ ะฝะฐะฒะธะณะฐั†ะธะตะน + +### ะ”ะปั RAG-ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะพะฒ ะธ ะ˜ะ˜-ะธะฝะถะตะฝะตั€ะพะฒ + +- ๐Ÿค– **ะ”ะฐะฝะฝั‹ะต, ะณะพั‚ะพะฒั‹ะต ะบ RAG** โ€” ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝะพ ั€ะฐะทะฑะธั‚ั‹ะต LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- ๐Ÿš€ **ะะฐ 99% ะฑั‹ัั‚ั€ะตะต** โ€” ะดะฝะธ ะฟั€ะตะดะพะฑั€ะฐะฑะพั‚ะบะธ โ†’ 15โ€“45 ะผะธะฝัƒั‚ +- ๐Ÿ“Š **ะฃะผะฝั‹ะต ะผะตั‚ะฐะดะฐะฝะฝั‹ะต** โ€” ะบะฐั‚ะตะณะพั€ะธะธ, ะธัั‚ะพั‡ะฝะธะบะธ, ั‚ะธะฟั‹ โ†’ ะฑะพะปะตะต ั‚ะพั‡ะฝั‹ะน ะฟะพะธัะบ +- ๐Ÿ”„ **ะœะฝะพะถะตัั‚ะฒะพ ะธัั‚ะพั‡ะฝะธะบะพะฒ** โ€” ะพะฑัŠะตะดะธะฝัะนั‚ะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ + GitHub + PDF ะฒ ะพะดะฝะพะผ ะบะพะฝะฒะตะนะตั€ะต +- ๐ŸŒ **ะŸะปะฐั‚ั„ะพั€ะผะพะฝะตะทะฐะฒะธัะธะผะพัั‚ัŒ** โ€” ัะบัะฟะพั€ั‚ ะฒ ะปัŽะฑัƒัŽ ะฒะตะบั‚ะพั€ะฝัƒัŽ ะฑะฐะทัƒ ะดะฐะฝะฝั‹ั… ะธะปะธ ั„ั€ะตะนะผะฒะพั€ะบ ะฑะตะท ะฟะพะฒั‚ะพั€ะฝะพะณะพ ัะบะฐะฝะธั€ะพะฒะฐะฝะธั + +### ะ”ะปั ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะพะฒ ะดะปั ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ะณะตะฝะตั€ะฐั†ะธั `.cursorrules` / `.windsurfrules` / `.clinerules` +- ๐ŸŽฏ **ะŸะพัั‚ะพัะฝะฝั‹ะน ะบะพะฝั‚ะตะบัั‚** โ€” ะ˜ะ˜ ยซะทะฝะฐะตั‚ยป ะฒะฐัˆะธ ั„ั€ะตะนะผะฒะพั€ะบะธ ะฑะตะท ะฟะพะฒั‚ะพั€ะฝั‹ั… ะฟะพะดัะบะฐะทะพะบ +- ๐Ÿ“š **ะ’ัะตะณะดะฐ ะฐะบั‚ัƒะฐะปัŒะฝะพ** โ€” ะพะฑะฝะพะฒะปัะนั‚ะต ะบะพะฝั‚ะตะบัั‚ ะทะฐ ะผะธะฝัƒั‚ั‹ ะฟั€ะธ ะธะทะผะตะฝะตะฝะธะธ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ + +## ะšะปัŽั‡ะตะฒั‹ะต ะฒะพะทะผะพะถะฝะพัั‚ะธ + +### ๐ŸŒ ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ +- โœ… **ะฃะผะฝะพะต ะพะฑะฝะฐั€ัƒะถะตะฝะธะต SPA** โ€” ั‚ั€ั‘ั…ัƒั€ะพะฒะฝะตะฒะพะต ะพะฑะฝะฐั€ัƒะถะตะฝะธะต ะดะปั JavaScript SPA-ัะฐะนั‚ะพะฒ (sitemap.xml โ†’ llms.txt โ†’ ั€ะตะฝะดะตั€ะธะฝะณ ะฒ ะฑะตะทะณะพะปะพะฒะพะผ ะฑั€ะฐัƒะทะตั€ะต) +- โœ… **ะŸะพะดะดะตั€ะถะบะฐ llms.txt** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะต ะพะฑะฝะฐั€ัƒะถะตะฝะธะต ะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต LLM-ready ั„ะฐะนะปะพะฒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ (ะฒ 10 ั€ะฐะท ะฑั‹ัั‚ั€ะตะต) +- โœ… **ะฃะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน ัะบะฐะฝะตั€** โ€” ั€ะฐะฑะพั‚ะฐะตั‚ ั ะ›ะฎะ‘ะซะœ ัะฐะนั‚ะพะผ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ +- โœ… **ะฃะผะฝะฐั ะบะฐั‚ะตะณะพั€ะธะทะฐั†ะธั** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ะพั€ะณะฐะฝะธะทะฐั†ะธั ะบะพะฝั‚ะตะฝั‚ะฐ ะฟะพ ั‚ะตะผะฐะผ +- โœ… **ะžะฟั€ะตะดะตะปะตะฝะธะต ัะทั‹ะบะฐ ะบะพะดะฐ** โ€” ั€ะฐัะฟะพะทะฝะฐะฒะฐะฝะธะต Python, JavaScript, C++, GDScript ะธ ะดั€ัƒะณะธั… +- โœ… **24+ ะณะพั‚ะพะฒั‹ั… ะฟั€ะตัะตั‚ะพะฒ** โ€” Godot, React, Vue, Django, FastAPI ะธ ะดั€ัƒะณะธะต + +### ๐Ÿ“„ ะŸะพะดะดะตั€ะถะบะฐ PDF +- โœ… **ะ‘ะฐะทะพะฒะพะต ะธะทะฒะปะตั‡ะตะฝะธะต PDF** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ั‚ะตะบัั‚ะฐ, ะบะพะดะฐ ะธ ะธะทะพะฑั€ะฐะถะตะฝะธะน ะธะท PDF-ั„ะฐะนะปะพะฒ +- โœ… **OCR ะดะปั ัะบะฐะฝะธั€ะพะฒะฐะฝะฝั‹ั… PDF** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ั‚ะตะบัั‚ะฐ ะธะท ัะบะฐะฝะธั€ะพะฒะฐะฝะฝั‹ั… ะดะพะบัƒะผะตะฝั‚ะพะฒ +- โœ… **PDF ั ะฟะฐั€ะพะปะตะผ** โ€” ะพะฑั€ะฐะฑะพั‚ะบะฐ ะทะฐัˆะธั„ั€ะพะฒะฐะฝะฝั‹ั… PDF +- โœ… **ะ˜ะทะฒะปะตั‡ะตะฝะธะต ั‚ะฐะฑะปะธั†** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ัะปะพะถะฝั‹ั… ั‚ะฐะฑะปะธั† ะธะท PDF +- โœ… **ะŸะฐั€ะฐะปะปะตะปัŒะฝะฐั ะพะฑั€ะฐะฑะพั‚ะบะฐ** โ€” ะฒ 3 ั€ะฐะทะฐ ะฑั‹ัั‚ั€ะตะต ะดะปั ะฑะพะปัŒัˆะธั… PDF +- โœ… **ะฃะผะฝะพะต ะบััˆะธั€ะพะฒะฐะฝะธะต** โ€” ะฝะฐ 50% ะฑั‹ัั‚ั€ะตะต ะฟั€ะธ ะฟะพะฒั‚ะพั€ะฝั‹ั… ะทะฐะฟัƒัะบะฐั… + +### ๐ŸŽฌ ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท ะฒะธะดะตะพ +- โœ… **YouTube ะธ ะปะพะบะฐะปัŒะฝั‹ะต ะฒะธะดะตะพ** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ััƒะฑั‚ะธั‚ั€ะพะฒ, ะบะพะดะฐ ะธ ัั‚ั€ัƒะบั‚ัƒั€ะธั€ะพะฒะฐะฝะฝั‹ั… ะทะฝะฐะฝะธะน ะธะท ะฒะธะดะตะพ +- โœ… **ะะฝะฐะปะธะท ะฒะธะทัƒะฐะปัŒะฝั‹ั… ะบะฐะดั€ะพะฒ** โ€” OCR-ะธะทะฒะปะตั‡ะตะฝะธะต ะธะท ั€ะตะดะฐะบั‚ะพั€ะพะฒ ะบะพะดะฐ, ั‚ะตั€ะผะธะฝะฐะปะพะฒ, ัะปะฐะนะดะพะฒ ะธ ะดะธะฐะณั€ะฐะผะผ +- โœ… **ะะฒั‚ะพะพะฟั€ะตะดะตะปะตะฝะธะต GPU** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ัƒัั‚ะฐะฝะพะฒะบะฐ ะฟั€ะฐะฒะธะปัŒะฝะพะน ัะฑะพั€ะบะธ PyTorch (CUDA/ROCm/MPS/CPU) +- โœ… **ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต** โ€” ะดะฒัƒั…ัั‚ะฐะฟะฝะพะต: ะพั‡ะธัั‚ะบะฐ ะฐั€ั‚ะตั„ะฐะบั‚ะพะฒ OCR + ะณะตะฝะตั€ะฐั†ะธั ะพั‚ะฟะพะปะธั€ะพะฒะฐะฝะฝะพะณะพ SKILL.md +- โœ… **ะžะฑั€ะตะทะบะฐ ะฟะพ ะฒั€ะตะผะตะฝะธ** โ€” ะธะทะฒะปะตั‡ะตะฝะธะต ะพะฟั€ะตะดะตะปั‘ะฝะฝั‹ั… ั„ั€ะฐะณะผะตะฝั‚ะพะฒ ั `--start-time` ะธ `--end-time` +- โœ… **ะŸะพะดะดะตั€ะถะบะฐ ะฟะปะตะนะปะธัั‚ะพะฒ** โ€” ะฟะฐะบะตั‚ะฝะฐั ะพะฑั€ะฐะฑะพั‚ะบะฐ ะฒัะตั… ะฒะธะดะตะพ ะฒ ะฟะปะตะนะปะธัั‚ะต YouTube +- โœ… **ะ ะตะทะตั€ะฒะฝั‹ะน Vision API** โ€” ะธัะฟะพะปัŒะทะพะฒะฐะฝะธะต Claude Vision ะดะปั OCR-ะบะฐะดั€ะพะฒ ั ะฝะธะทะบะพะน ะดะพัั‚ะพะฒะตั€ะฝะพัั‚ัŒัŽ + +### ๐Ÿ™ ะะฝะฐะปะธะท ั€ะตะฟะพะทะธั‚ะพั€ะธะตะฒ GitHub +- โœ… **ะ“ะปัƒะฑะพะบะธะน ะฐะฝะฐะปะธะท ะบะพะดะฐ** โ€” AST-ั€ะฐะทะฑะพั€ ะดะปั Python, JavaScript, TypeScript, Java, C++, Go +- โœ… **ะ˜ะทะฒะปะตั‡ะตะฝะธะต API** โ€” ั„ัƒะฝะบั†ะธะธ, ะบะปะฐััั‹, ะผะตั‚ะพะดั‹ ั ะฟะฐั€ะฐะผะตั‚ั€ะฐะผะธ ะธ ั‚ะธะฟะฐะผะธ +- โœ… **ะœะตั‚ะฐะดะฐะฝะฝั‹ะต ั€ะตะฟะพะทะธั‚ะพั€ะธั** โ€” README, ะดะตั€ะตะฒะพ ั„ะฐะนะปะพะฒ, ั€ะฐัะฟั€ะตะดะตะปะตะฝะธะต ัะทั‹ะบะพะฒ, ะทะฒั‘ะทะดั‹/ั„ะพั€ะบะธ +- โœ… **GitHub Issues ะธ PR** โ€” ะฟะพะปัƒั‡ะตะฝะธะต ะพั‚ะบั€ั‹ั‚ั‹ั…/ะทะฐะบั€ั‹ั‚ั‹ั… issues ั ะผะตั‚ะบะฐะผะธ ะธ ะฒะตั…ะฐะผะธ +- โœ… **CHANGELOG ะธ ั€ะตะปะธะทั‹** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะต ะธะทะฒะปะตั‡ะตะฝะธะต ะธัั‚ะพั€ะธะธ ะฒะตั€ัะธะน +- โœ… **ะžะฑะฝะฐั€ัƒะถะตะฝะธะต ะบะพะฝั„ะปะธะบั‚ะพะฒ** โ€” ัั€ะฐะฒะฝะตะฝะธะต ะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะฝั‹ั… API ั ั„ะฐะบั‚ะธั‡ะตัะบะพะน ั€ะตะฐะปะธะทะฐั†ะธะตะน ะบะพะดะฐ +- โœ… **MCP-ะธะฝั‚ะตะณั€ะฐั†ะธั** โ€” ะฝะฐ ะตัั‚ะตัั‚ะฒะตะฝะฝะพะผ ัะทั‹ะบะต: ยซะŸั€ะพัะบะฐะฝะธั€ัƒะน GitHub-ั€ะตะฟะพะทะธั‚ะพั€ะธะน facebook/reactยป + +### ๐Ÿ”„ ะฃะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝะพะต ะผัƒะปัŒั‚ะธะธัั‚ะพั‡ะฝะธะบะพะฒะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต +- โœ… **ะžะฑัŠะตะดะธะฝะตะฝะธะต ะฝะตัะบะพะปัŒะบะธั… ะธัั‚ะพั‡ะฝะธะบะพะฒ** โ€” ัะผะตัˆะธะฒะฐะนั‚ะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ + GitHub + PDF ะฒ ะพะดะฝะพะผ ะฝะฐะฒั‹ะบะต +- โœ… **ะžะฑะฝะฐั€ัƒะถะตะฝะธะต ะบะพะฝั„ะปะธะบั‚ะพะฒ** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะต ะฝะฐั…ะพะถะดะตะฝะธะต ั€ะฐัั…ะพะถะดะตะฝะธะน ะผะตะถะดัƒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะตะน ะธ ะบะพะดะพะผ +- โœ… **ะฃะผะฝะพะต ัะปะธัะฝะธะต** โ€” ะฝะฐ ะพัะฝะพะฒะต ะฟั€ะฐะฒะธะป ะธะปะธ ั ะฟะพะผะพั‰ัŒัŽ ะ˜ะ˜ +- โœ… **ะŸั€ะพะทั€ะฐั‡ะฝะฐั ะพั‚ั‡ั‘ั‚ะฝะพัั‚ัŒ** โ€” ัั€ะฐะฒะฝะตะฝะธะต ะฑะพะบ ะพ ะฑะพะบ ั ะฟั€ะตะดัƒะฟั€ะตะถะดะตะฝะธัะผะธ โš ๏ธ +- โœ… **ะะฝะฐะปะธะท ะฟั€ะพะฑะตะปะพะฒ ะฒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ** โ€” ะฒั‹ัะฒะปะตะฝะธะต ัƒัั‚ะฐั€ะตะฒัˆะตะน ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ะธ ะฝะตะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะฝั‹ั… ั„ัƒะฝะบั†ะธะน +- โœ… **ะ•ะดะธะฝั‹ะน ะธัั‚ะพั‡ะฝะธะบ ะธัั‚ะธะฝั‹** โ€” ะพะดะธะฝ ะฝะฐะฒั‹ะบ ะฟะพะบะฐะทั‹ะฒะฐะตั‚ ะธ ะฝะฐะผะตั€ะตะฝะธะต (ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั), ะธ ั€ะตะฐะปัŒะฝะพัั‚ัŒ (ะบะพะด) +- โœ… **ะžะฑั€ะฐั‚ะฝะฐั ัะพะฒะผะตัั‚ะธะผะพัั‚ัŒ** โ€” ัƒัั‚ะฐั€ะตะฒัˆะธะต ะพะดะฝะพะธัั‚ะพั‡ะฝะธะบะพะฒั‹ะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฟั€ะพะดะพะปะถะฐัŽั‚ ั€ะฐะฑะพั‚ะฐั‚ัŒ + +### ๐Ÿค– ะŸะพะดะดะตั€ะถะบะฐ ะฝะตัะบะพะปัŒะบะธั… LLM-ะฟะปะฐั‚ั„ะพั€ะผ +- โœ… **12 LLM-ะฟะปะฐั‚ั„ะพั€ะผ** โ€” Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **ะฃะฝะธะฒะตั€ัะฐะปัŒะฝะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต** โ€” ะพะดะฝะฐ ะธ ั‚ะฐ ะถะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั ะดะปั ะฒัะตั… ะฟะปะฐั‚ั„ะพั€ะผ +- โœ… **ะŸะปะฐั‚ั„ะพั€ะผะพัะฟะตั†ะธั„ะธั‡ะฝะฐั ัƒะฟะฐะบะพะฒะบะฐ** โ€” ะพะฟั‚ะธะผะธะทะธั€ะพะฒะฐะฝะฝั‹ะต ั„ะพั€ะผะฐั‚ั‹ ะดะปั ะบะฐะถะดะพะน LLM +- โœ… **ะญะบัะฟะพั€ั‚ ะพะดะฝะพะน ะบะพะผะฐะฝะดะพะน** โ€” ั„ะปะฐะณ `--target` ะดะปั ะฒั‹ะฑะพั€ะฐ ะฟะปะฐั‚ั„ะพั€ะผั‹ +- โœ… **ะžะฟั†ะธะพะฝะฐะปัŒะฝั‹ะต ะทะฐะฒะธัะธะผะพัั‚ะธ** โ€” ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐะนั‚ะต ั‚ะพะปัŒะบะพ ั‚ะพ, ั‡ั‚ะพ ะฝัƒะถะฝะพ +- โœ… **100% ะพะฑั€ะฐั‚ะฝะฐั ัะพะฒะผะตัั‚ะธะผะพัั‚ัŒ** โ€” ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธะต ั€ะฐะฑะพั‡ะธะต ะฟั€ะพั†ะตััั‹ Claude ะฑะตะท ะธะทะผะตะฝะตะฝะธะน + +| ะŸะปะฐั‚ั„ะพั€ะผะฐ | ะคะพั€ะผะฐั‚ | ะ—ะฐะณั€ัƒะทะบะฐ | ะฃะปัƒั‡ัˆะตะฝะธะต | API Key | ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะน ัะฝะดะฟะพะธะฝั‚ | +|-----------|--------|----------|-----------|---------|--------------------------| +| **Claude AI** | ZIP + YAML | โœ… ะะฒั‚ะพ | โœ… ะ”ะฐ | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… ะะฒั‚ะพ | โœ… ะ”ะฐ | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… ะะฒั‚ะพ | โœ… ะ”ะฐ | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… ะะฒั‚ะพ | โœ… ะ”ะฐ | MINIMAX_API_KEY | - | +| **ะฃะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน Markdown** | ZIP | โŒ ะ’ั€ัƒั‡ะฝัƒัŽ | โŒ ะะตั‚ | - | - | + +```bash +# Claude (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ โ€” ะฑะตะท ะธะทะผะตะฝะตะฝะธะน!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# ะฃะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน Markdown (ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน ัะบัะฟะพั€ั‚) +skill-seekers package output/react/ --target markdown +# ะ˜ัะฟะพะปัŒะทัƒะนั‚ะต markdown-ั„ะฐะนะปั‹ ะฝะฐะฟั€ัะผัƒัŽ ะฒ ะปัŽะฑะพะน LLM +``` + +
+๐Ÿ”ง ะ˜ัะฟะพะปัŒะทัƒะนั‚ะต ัะพะฑัั‚ะฒะตะฝะฝะพะณะพ ะ˜ะ˜-ะฟั€ะพะฒะฐะนะดะตั€ะฐ (OpenAI-ัะพะฒะผะตัั‚ะธะผั‹ะต ัะฝะดะฟะพะธะฝั‚ั‹ + ะฟะพะดะฟะธัะบะธ, ะบั€ะตะดะธั‚ั‹ Anthropic ะฝะต ะฝัƒะถะฝั‹) + +ะžะฟั†ะธะพะฝะฐะปัŒะฝั‹ะน ัั‚ะฐะฟ ะ˜ะ˜-**ัƒะปัƒั‡ัˆะตะฝะธั** (ะธัะฟะพะปัŒะทัƒะตั‚ัั ะบะพะผะฐะฝะดะฐะผะธ `create`, `scan` ะธ `enhance`) **ะฝะต** ั‚ั€ะตะฑัƒะตั‚ ะบะปัŽั‡ะฐ Anthropic. ะ•ัั‚ัŒ ั‚ั€ะธ ัะฟะพัะพะฑะฐ ะตะณะพ ะทะฐะฟัƒัั‚ะธั‚ัŒ: + +**1. ะ˜ัะฟะพะปัŒะทัƒะนั‚ะต ะฟะพะดะฟะธัะบัƒ, ะทะฐ ะบะพั‚ะพั€ัƒัŽ ะฒั‹ ัƒะถะต ะฟะปะฐั‚ะธั‚ะต โ€” ะฒะพะพะฑั‰ะต ะฑะตะท API-ะบั€ะตะดะธั‚ะพะฒ (LOCAL-ั€ะตะถะธะผ ะฐะณะตะฝั‚ะฐ)** + +Skill Seekers ะผะพะถะตั‚ ะฒั‹ะทั‹ะฒะฐั‚ัŒ CLI ะบะพะดะธะฝะณ-ะฐะณะตะฝั‚ะฐ, ะฒ ะบะพั‚ะพั€ั‹ะน ะฒั‹ ัƒะถะต ะฒะพัˆะปะธ, ะฟะพัั‚ะพะผัƒ ัƒะปัƒั‡ัˆะตะฝะธะต ั€ะฐะฑะพั‚ะฐะตั‚ ะฝะฐ ะฒะฐัˆะตะผ ััƒั‰ะตัั‚ะฒัƒัŽั‰ะตะผ ั‚ะฐั€ะธั„ะต ะฒะผะตัั‚ะพ ะพะฟะปะฐั‡ะธะฒะฐะตะผั‹ั… API-ั‚ะพะบะตะฝะพะฒ: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ะฒะฐัˆ ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ ะฒะฐัˆ Claude Pro/Max +``` + +ะŸะพะดะดะตั€ะถะธะฒะฐะตะผั‹ะต ะฐะณะตะฝั‚ั‹: `claude`, `codex`, `copilot`, `opencode`, `kimi` ะธ `custom` +(ัะพั‡ะตั‚ะฐะนั‚ะต `--agent custom` ั `--agent-cmd " ..."`, ั‡ั‚ะพะฑั‹ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ะปัŽะฑะพะน ะดั€ัƒะณะพะน ะธะฝัั‚ั€ัƒะผะตะฝั‚). + +**2. ะ›ัŽะฑะพะน OpenAI-ัะพะฒะผะตัั‚ะธะผั‹ะน ะฟั€ะพะฒะฐะนะดะตั€ (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +ะ’ัะต ะพะฝะธ ะฟั€ะตะดะพัั‚ะฐะฒะปััŽั‚ OpenAI-ัะพะฒะผะตัั‚ะธะผั‹ะน ัะฝะดะฟะพะธะฝั‚ `/v1`. ะะฐะฟั€ะฐะฒัŒั‚ะต Skill Seekers ะฝะฐ ะพะดะธะฝ ะธะท ะฝะธั… ั ะฟะพะผะพั‰ัŒัŽ ั‚ั€ั‘ั… ะฟะตั€ะตะผะตะฝะฝั‹ั… ะพะบั€ัƒะถะตะฝะธั โ€” ะพะฝ ะพะฑะฝะฐั€ัƒะถะธะฒะฐะตั‚ `OPENAI_API_KEY`, ะฐ OpenAI SDK ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ัƒั‡ะธั‚ั‹ะฒะฐะตั‚ `OPENAI_BASE_URL`: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # ัะฝะดะฟะพะธะฝั‚ ะฟั€ะพะฒะฐะนะดะตั€ะฐ (ัะผ. ั‚ะฐะฑะปะธั†ัƒ) +export OPENAI_MODEL="" # ะพะฑัะทะฐั‚ะตะปัŒะฝะพ โ€” ะผะพะดะตะปัŒ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ gpt-4o ะฒ ะดั€ัƒะณะธั… ะผะตัั‚ะฐั… ะฝะต ััƒั‰ะตัั‚ะฒัƒะตั‚ +skill-seekers create +``` + +| ะŸั€ะพะฒะฐะนะดะตั€ | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> ะžะฟั€ะตะดะตะปะตะฝะธะต ะฟั€ะพะฒะฐะนะดะตั€ะฐ ะฒั‹ะฑะธั€ะฐะตั‚ **ะฟะตั€ะฒัƒัŽ** ะฝะฐะนะดะตะฝะฝัƒัŽ ะฟะตั€ะตะผะตะฝะฝัƒัŽ ะพะบั€ัƒะถะตะฝะธั ั API-ะบะปัŽั‡ะพะผ (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). ะฃัั‚ะฐะฝะพะฒะธั‚ะต `SKILL_SEEKER_PROVIDER`, ั‡ั‚ะพะฑั‹ ะฟั€ะธะฝัƒะดะธั‚ะตะปัŒะฝะพ ะฒั‹ะฑั€ะฐั‚ัŒ ะบะพะฝะบั€ะตั‚ะฝะพะณะพ ะฟั€ะพะฒะฐะนะดะตั€ะฐ, ะธะปะธ ัƒะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ะบะปัŽั‡ะธ ั ะฑะพะปะตะต ะฒั‹ัะพะบะธะผ ะฟั€ะธะพั€ะธั‚ะตั‚ะพะผ ะฝะต ะทะฐะดะฐะฝั‹. + +**3. Claude-ัะพะฒะผะตัั‚ะธะผั‹ะต ัะฝะดะฟะพะธะฝั‚ั‹ (ะฝะฐะฟั€ะธะผะตั€, GLM, ะฟั€ะพะบัะธ)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) ะธ Kimi/Moonshot (`MOONSHOT_API_KEY`) ั‚ะฐะบะถะต ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‚ัั ะฝะฐั‚ะธะฒะฝะพ. ะŸะพะปะฝั‹ะน ัะฟะธัะพะบ, ะฒะบะปัŽั‡ะฐั ะฟะตั€ะตะพะฟั€ะตะดะตะปะตะฝะธะต ะผะพะดะตะปะตะน ะดะปั ะบะฐะถะดะพะณะพ ะฟั€ะพะฒะฐะนะดะตั€ะฐ, ัะผ. ะฒ **[ะกะฟั€ะฐะฒะบะต ะฟะพ ะฟะตั€ะตะผะตะฝะฝั‹ะผ ะพะบั€ัƒะถะตะฝะธั](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)**. + +
+ +**ะฃัั‚ะฐะฝะพะฒะบะฐ:** +```bash +# ะฃัั‚ะฐะฝะพะฒะบะฐ ั ะฟะพะดะดะตั€ะถะบะพะน Gemini +pip install skill-seekers[gemini] + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ั ะฟะพะดะดะตั€ะถะบะพะน OpenAI +pip install skill-seekers[openai] + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ั ะฟะพะดะดะตั€ะถะบะพะน MiniMax +pip install skill-seekers[minimax] + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒัะตั… LLM-ะฟะปะฐั‚ั„ะพั€ะผ +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— ะ˜ะฝั‚ะตะณั€ะฐั†ะธะธ ั RAG-ั„ั€ะตะนะผะฒะพั€ะบะฐะผะธ + +- โœ… **LangChain Documents** โ€” ะฟั€ัะผะพะน ัะบัะฟะพั€ั‚ ะฒ ั„ะพั€ะผะฐั‚ `Document` ั `page_content` + ะผะตั‚ะฐะดะฐะฝะฝั‹ะผะธ + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: QA-ั†ะตะฟะพั‡ะตะบ, ั€ะตั‚ั€ะธะฒะตั€ะพะฒ, ะฒะตะบั‚ะพั€ะฝั‹ั… ั…ั€ะฐะฝะธะปะธั‰, ะฐะณะตะฝั‚ะพะฒ + - ะŸั€ะธะผะตั€: [LangChain RAG-ะบะพะฝะฒะตะนะตั€](examples/langchain-rag-pipeline/) + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั LangChain](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** โ€” ัะบัะฟะพั€ั‚ ะฒ ั„ะพั€ะผะฐั‚ `TextNode` ั ัƒะฝะธะบะฐะปัŒะฝั‹ะผะธ ID + ัะผะฑะตะดะดะธะฝะณะฐะผะธ + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะดะฒะธะถะบะพะฒ ะทะฐะฟั€ะพัะพะฒ, ะดะฒะธะถะบะพะฒ ะดะธะฐะปะพะณะพะฒ, ะบะพะฝั‚ะตะบัั‚ะฐ ั…ั€ะฐะฝะธะปะธั‰ะฐ + - ะŸั€ะธะผะตั€: [LlamaIndex ะดะฒะธะถะพะบ ะทะฐะฟั€ะพัะพะฒ](examples/llama-index-query-engine/) + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั LlamaIndex](docs/integrations/LLAMA_INDEX.md) + +- โœ… **ะคะพั€ะผะฐั‚, ะณะพั‚ะพะฒั‹ะน ะบ Pinecone** โ€” ะพะฟั‚ะธะผะธะทะธั€ะพะฒะฐะฝ ะดะปั ะทะฐะณั€ัƒะทะบะธ ะฒ ะฒะตะบั‚ะพั€ะฝัƒัŽ ะฑะฐะทัƒ ะดะฐะฝะฝั‹ั… + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะฟั€ะพะดะฐะบัˆะตะฝ-ะฟะพะธัะบะฐ ะฟะพ ะฒะตะบั‚ะพั€ะฐะผ, ัะตะผะฐะฝั‚ะธั‡ะตัะบะพะณะพ ะธ ะณะธะฑั€ะธะดะฝะพะณะพ ะฟะพะธัะบะฐ + - ะŸั€ะธะผะตั€: [ะ—ะฐะณั€ัƒะทะบะฐ ะฒ Pinecone](examples/pinecone-upsert/) + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั Pinecone](docs/integrations/PINECONE.md) + +**ะ‘ั‹ัั‚ั€ั‹ะน ัะบัะฟะพั€ั‚:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ RAG-ะบะพะฝะฒะตะนะตั€ะฐะผ:** [ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั ะฟะพ RAG-ะบะพะฝะฒะตะนะตั€ะฐะผ](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  ะ˜ะฝั‚ะตะณั€ะฐั†ะธะธ ั ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะฐะผะธ ะดะปั ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั + +ะŸั€ะตะพะฑั€ะฐะทัƒะนั‚ะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ ะปัŽะฑะพะณะพ ั„ั€ะตะนะผะฒะพั€ะบะฐ ะฒ ัะบัะฟะตั€ั‚ะฝั‹ะน ะบะพะฝั‚ะตะบัั‚ ะดะปั 4+ ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะพะฒ: + +- โœ… **Cursor IDE** โ€” ะณะตะฝะตั€ะฐั†ะธั `.cursorrules` ะดะปั ะ˜ะ˜-ะฟะพะดัะบะฐะทะพะบ ะฟั€ะธ ะฝะฐะฟะธัะฐะฝะธะธ ะบะพะดะฐ + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะณะตะฝะตั€ะฐั†ะธะธ ะบะพะดะฐ ั ัƒั‡ั‘ั‚ะพะผ ั„ั€ะตะนะผะฒะพั€ะบะฐ, ะตะดะธะฝะพะพะฑั€ะฐะทะฝั‹ั… ะฟะฐั‚ั‚ะตั€ะฝะพะฒ + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั Cursor](docs/integrations/CURSOR.md) + - ะŸั€ะธะผะตั€: [Cursor React ะฝะฐะฒั‹ะบ](examples/cursor-react-skill/) + +- โœ… **Windsurf** โ€” ะฝะฐัั‚ั€ะพะนะบะฐ ะบะพะฝั‚ะตะบัั‚ะฐ ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะฐ Windsurf ั‡ะตั€ะตะท `.windsurfrules` + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะฒัั‚ั€ะพะตะฝะฝะพะน ะ˜ะ˜-ะฟะพะผะพั‰ะธ ะฒ IDE, ะฟะพั‚ะพะบะพะฒะพะต ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธะต + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั Windsurf](docs/integrations/WINDSURF.md) + - ะŸั€ะธะผะตั€: [Windsurf FastAPI ะบะพะฝั‚ะตะบัั‚](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** โ€” ัะธัั‚ะตะผะฝั‹ะต ะฟั€ะพะผะฟั‚ั‹ + MCP ะดะปั VS Code-ะฐะณะตะฝั‚ะฐ + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะฐะฒั‚ะพะฝะพะผะฝะพะน ะณะตะฝะตั€ะฐั†ะธะธ ะบะพะดะฐ ะฒ VS Code + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั Cline](docs/integrations/CLINE.md) + - ะŸั€ะธะผะตั€: [Cline Django ะฐััะธัั‚ะตะฝั‚](examples/cline-django-assistant/) + +- โœ… **Continue.dev** โ€” ะบะพะฝั‚ะตะบัั‚ะฝั‹ะต ัะตั€ะฒะตั€ั‹ ะดะปั IDE-ะฝะตะทะฐะฒะธัะธะผะพะณะพ ะ˜ะ˜ + - ะŸะพะดั…ะพะดะธั‚ ะดะปั: ะผัƒะปัŒั‚ะธัั€ะตะดะฝั‹ั… ะพะบั€ัƒะถะตะฝะธะน (VS Code, JetBrains, Vim), ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธั… LLM-ะฟั€ะพะฒะฐะนะดะตั€ะพะฒ + - ะ ัƒะบะพะฒะพะดัั‚ะฒะพ: [ะ˜ะฝั‚ะตะณั€ะฐั†ะธั ั Continue](docs/integrations/CONTINUE_DEV.md) + - ะŸั€ะธะผะตั€: [Continue ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน ะบะพะฝั‚ะตะบัั‚](examples/continue-dev-universal/) + +**ะ‘ั‹ัั‚ั€ั‹ะน ัะบัะฟะพั€ั‚ ะดะปั ะ˜ะ˜-ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั:** +```bash +# ะ”ะปั ะปัŽะฑะพะณะพ ะ˜ะ˜-ะฟะพะผะพั‰ะฝะธะบะฐ (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ะธะปะธ --target markdown + +# ะกะบะพะฟะธั€ัƒะนั‚ะต ะฒ ัะฒะพะน ะฟั€ะพะตะบั‚ (ะฟั€ะธะผะตั€ ะดะปั Cursor) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# ะ˜ะปะธ ะดะปั Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# ะ˜ะปะธ ะดะปั Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# ะ˜ะปะธ ะดะปั Continue.dev (HTTP-ัะตั€ะฒะตั€) +python examples/continue-dev-universal/context_server.py +# ะะฐัั‚ั€ะพะนั‚ะต ะฒ ~/.continue/config.json +``` + +**ะฆะตะฝั‚ั€ ะธะฝั‚ะตะณั€ะฐั†ะธะน:** [ะ’ัะต ะธะฝั‚ะตะณั€ะฐั†ะธะธ ั ะ˜ะ˜-ัะธัั‚ะตะผะฐะผะธ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ ะขั€ั‘ั…ะฟะพั‚ะพั‡ะฝะฐั ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ะฐ GitHub +- โœ… **ะขั€ั‘ั…ะฟะพั‚ะพั‡ะฝั‹ะน ะฐะฝะฐะปะธะท** โ€” ั€ะฐะทะดะตะปะตะฝะธะต GitHub-ั€ะตะฟะพะทะธั‚ะพั€ะธั ะฝะฐ ะฟะพั‚ะพะบะธ ยซะšะพะดยป, ยซะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธัยป ะธ ยซะะฝะฐะปะธั‚ะธะบะฐยป +- โœ… **ะฃะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝั‹ะน ะฐะฝะฐะปะธะทะฐั‚ะพั€ ะบะพะดะพะฒะพะน ะฑะฐะทั‹** โ€” ั€ะฐะฑะพั‚ะฐะตั‚ ะบะฐะบ ั URL GitHub, ั‚ะฐะบ ะธ ั ะปะพะบะฐะปัŒะฝั‹ะผะธ ะฟัƒั‚ัะผะธ +- โœ… **C3.x ะบะฐะบ ะณะปัƒะฑะธะฝะฐ ะฐะฝะฐะปะธะทะฐ** โ€” ะฒั‹ะฑะพั€ ยซbasicยป (1โ€“2 ะผะธะฝ) ะธะปะธ ยซc3xยป (20โ€“60 ะผะธะฝ) +- โœ… **ะ ะฐััˆะธั€ะตะฝะฝะฐั ะณะตะฝะตั€ะฐั†ะธั ะผะฐั€ัˆั€ัƒั‚ะธะทะฐั‚ะพั€ะฐ** โ€” ะผะตั‚ะฐะดะฐะฝะฝั‹ะต GitHub, ะฑั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚ ะธะท README, ั‚ะธะฟะธั‡ะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ +- โœ… **ะ˜ะฝั‚ะตะณั€ะฐั†ะธั Issues** โ€” ั€ะฐัะฟั€ะพัั‚ั€ะฐะฝั‘ะฝะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ ะธ ั€ะตัˆะตะฝะธั ะธะท GitHub Issues +- โœ… **ะฃะผะฝั‹ะต ะบะปัŽั‡ะตะฒั‹ะต ัะปะพะฒะฐ ะผะฐั€ัˆั€ัƒั‚ะธะทะฐั†ะธะธ** โ€” ะผะตั‚ะบะธ GitHub ั ะดะฒะพะนะฝั‹ะผ ะฒะตัะพะผ ะดะปั ะปัƒั‡ัˆะตะณะพ ะพะฟั€ะตะดะตะปะตะฝะธั ั‚ะตะผ + +**ะžะฟะธัะฐะฝะธะต ั‚ั€ั‘ั… ะฟะพั‚ะพะบะพะฒ:** +- **ะŸะพั‚ะพะบ 1: ะšะพะด** โ€” ะณะปัƒะฑะพะบะธะน C3.x-ะฐะฝะฐะปะธะท (ะฟะฐั‚ั‚ะตั€ะฝั‹, ะฟั€ะธะผะตั€ั‹, ั€ัƒะบะพะฒะพะดัั‚ะฒะฐ, ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ, ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ะฐ) +- **ะŸะพั‚ะพะบ 2: ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั** โ€” ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั ั€ะตะฟะพะทะธั‚ะพั€ะธั (README, CONTRIBUTING, docs/*.md) +- **ะŸะพั‚ะพะบ 3: ะะฝะฐะปะธั‚ะธะบะฐ** โ€” ะทะฝะฐะฝะธั ัะพะพะฑั‰ะตัั‚ะฒะฐ (Issues, ะผะตั‚ะบะธ, ะทะฒั‘ะทะดั‹, ั„ะพั€ะบะธ) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# ะะฝะฐะปะธะท GitHub-ั€ะตะฟะพะทะธั‚ะพั€ะธั ัะพ ะฒัะตะผะธ ั‚ั€ะตะผั ะฟะพั‚ะพะบะฐะผะธ +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ะธะปะธ "basic" ะดะปั ะฑั‹ัั‚ั€ะพะณะพ ะฐะฝะฐะปะธะทะฐ + fetch_github_metadata=True +) + +# ะ”ะพัั‚ัƒะฟ ะบ ะฟะพั‚ะพะบัƒ ะบะพะดะฐ (C3.x-ะฐะฝะฐะปะธะท) +print(f"ะŸะฐั‚ั‚ะตั€ะฝั‹ ะฟั€ะพะตะบั‚ะธั€ะพะฒะฐะฝะธั: {len(result.code_analysis['c3_1_patterns'])}") +print(f"ะŸั€ะธะผะตั€ั‹ ะธะท ั‚ะตัั‚ะพะฒ: {result.code_analysis['c3_2_examples_count']}") + +# ะ”ะพัั‚ัƒะฟ ะบ ะฟะพั‚ะพะบัƒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ (ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั ั€ะตะฟะพะทะธั‚ะพั€ะธั) +print(f"README: {result.github_docs['readme'][:100]}") + +# ะ”ะพัั‚ัƒะฟ ะบ ะฟะพั‚ะพะบัƒ ะฐะฝะฐะปะธั‚ะธะบะธ (ะผะตั‚ะฐะดะฐะฝะฝั‹ะต GitHub) +print(f"ะ—ะฒั‘ะทะดั‹: {result.github_insights['metadata']['stars']}") +print(f"ะขะธะฟะธั‡ะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹: {len(result.github_insights['common_problems'])}") +``` + +**ะŸะพะปะฝะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั**: [ะกะฒะพะดะบะฐ ะฟะพ ั€ะตะฐะปะธะทะฐั†ะธะธ ั‚ั€ั‘ั…ะฟะพั‚ะพั‡ะฝะพะน ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” ะฃะผะฝะพะต ัƒะฟั€ะฐะฒะปะตะฝะธะต ะปะธะผะธั‚ะฐะผะธ ะทะฐะฟั€ะพัะพะฒ ะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธั +- โœ… **ะกะธัั‚ะตะผะฐ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ั ะฝะตัะบะพะปัŒะบะธะผะธ ั‚ะพะบะตะฝะฐะผะธ** โ€” ัƒะฟั€ะฐะฒะปะตะฝะธะต ะฝะตัะบะพะปัŒะบะธะผะธ ะฐะบะบะฐัƒะฝั‚ะฐะผะธ GitHub (ะปะธั‡ะฝั‹ะน, ั€ะฐะฑะพั‡ะธะน, open source) + - ะ‘ะตะทะพะฟะฐัะฝะพะต ั…ั€ะฐะฝะตะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะฒ `~/.config/skill-seekers/config.json` (ะฟั€ะฐะฒะฐ 600) + - ะกั‚ั€ะฐั‚ะตะณะธะธ ะปะธะผะธั‚ะฐ ะทะฐะฟั€ะพัะพะฒ ะดะปั ะบะฐะถะดะพะณะพ ะฟั€ะพั„ะธะปั: `prompt`, `wait`, `switch`, `fail` + - ะฃะผะฝะฐั ั†ะตะฟะพั‡ะบะฐ ั€ะตะทะตั€ะฒะธั€ะพะฒะฐะฝะธั: ะฐั€ะณัƒะผะตะฝั‚ CLI โ†’ ะฟะตั€ะตะผะตะฝะฝะฐั ะพะบั€ัƒะถะตะฝะธั โ†’ ั„ะฐะนะป ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ โ†’ ะทะฐะฟั€ะพั +- โœ… **ะ˜ะฝั‚ะตั€ะฐะบั‚ะธะฒะฝั‹ะน ะผะฐัั‚ะตั€ ะฝะฐัั‚ั€ะพะนะบะธ** โ€” ะบั€ะฐัะธะฒั‹ะน ั‚ะตั€ะผะธะฝะฐะปัŒะฝั‹ะน ะธะฝั‚ะตั€ั„ะตะนั ะดะปั ะฟั€ะพัั‚ะพะน ะฝะฐัั‚ั€ะพะนะบะธ +- โœ… **ะฃะผะฝั‹ะน ะพะฑั€ะฐะฑะพั‚ั‡ะธะบ ะปะธะผะธั‚ะพะฒ ะทะฐะฟั€ะพัะพะฒ** โ€” ะฑะพะปัŒัˆะต ะฝะธะบะฐะบะธั… ะฑะตัะบะพะฝะตั‡ะฝั‹ั… ะพะถะธะดะฐะฝะธะน! + - ะžะฑั€ะฐั‚ะฝั‹ะน ะพั‚ัั‡ั‘ั‚ ะฒ ั€ะตะฐะปัŒะฝะพะผ ะฒั€ะตะผะตะฝะธ, ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะพะต ะฟะตั€ะตะบะปัŽั‡ะตะฝะธะต ะฟั€ะพั„ะธะปะตะน + - ะงะตั‚ั‹ั€ะต ัั‚ั€ะฐั‚ะตะณะธะธ: prompt (ัะฟั€ะพัะธั‚ัŒ), wait (ะพะฑั€ะฐั‚ะฝั‹ะน ะพั‚ัั‡ั‘ั‚), switch (ะฟะตั€ะตะบะปัŽั‡ะธั‚ัŒ), fail (ะฟั€ะตั€ะฒะฐั‚ัŒ) +- โœ… **ะ’ะพะทะพะฑะฝะพะฒะปะตะฝะธะต** โ€” ะฟั€ะพะดะพะปะถะตะฝะธะต ะฟั€ะตั€ะฒะฐะฝะฝั‹ั… ะทะฐะดะฐั‡ +- โœ… **ะŸะพะดะดะตั€ะถะบะฐ CI/CD** โ€” ั„ะปะฐะณ `--non-interactive` ะดะปั ะฐะฒั‚ะพะผะฐั‚ะธะทะฐั†ะธะธ + +**ะ‘ั‹ัั‚ั€ะฐั ะฝะฐัั‚ั€ะพะนะบะฐ:** +```bash +# ะžะดะฝะพะบั€ะฐั‚ะฝะฐั ะฝะฐัั‚ั€ะพะนะบะฐ (5 ะผะธะฝัƒั‚) +skill-seekers config --github + +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะพะฟั€ะตะดะตะปั‘ะฝะฝะพะณะพ ะฟั€ะพั„ะธะปั ะดะปั ะฟั€ะธะฒะฐั‚ะฝั‹ั… ั€ะตะฟะพะทะธั‚ะพั€ะธะตะฒ +skill-seekers create mycompany/private-repo --profile work + +# ะ ะตะถะธะผ CI/CD (ะฑั‹ัั‚ั€ั‹ะน ะพั‚ะบะฐะท, ะฑะตะท ะทะฐะฟั€ะพัะพะฒ) +skill-seekers create owner/repo --non-interactive + +# ะ’ะพะทะพะฑะฝะพะฒะปะตะฝะธะต ะฟั€ะตั€ะฒะฐะฝะฝะพะน ะทะฐะดะฐั‡ะธ +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**ะžะฟะธัะฐะฝะธะต ัั‚ั€ะฐั‚ะตะณะธะน ะปะธะผะธั‚ะฐ ะทะฐะฟั€ะพัะพะฒ:** +- **prompt** (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ) โ€” ัะฟั€ะพัะธั‚ัŒ, ั‡ั‚ะพ ะดะตะปะฐั‚ัŒ ะฟั€ะธ ะดะพัั‚ะธะถะตะฝะธะธ ะปะธะผะธั‚ะฐ (ะฟะพะดะพะถะดะฐั‚ัŒ, ะฟะตั€ะตะบะปัŽั‡ะธั‚ัŒัั, ะฝะฐัั‚ั€ะพะธั‚ัŒ ั‚ะพะบะตะฝ, ะพั‚ะผะตะฝะธั‚ัŒ) +- **wait** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะถะดะฐั‚ัŒ ั ะพะฑั€ะฐั‚ะฝั‹ะผ ะพั‚ัั‡ั‘ั‚ะพะผ (ัƒั‡ะธั‚ั‹ะฒะฐะตั‚ ั‚ะฐะนะผ-ะฐัƒั‚) +- **switch** โ€” ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะฟั€ะพะฑะพะฒะฐั‚ัŒ ัะปะตะดัƒัŽั‰ะธะน ะดะพัั‚ัƒะฟะฝั‹ะน ะฟั€ะพั„ะธะปัŒ (ะดะปั ะฝะฐัั‚ั€ะพะตะบ ั ะฝะตัะบะพะปัŒะบะธะผะธ ะฐะบะบะฐัƒะฝั‚ะฐะผะธ) +- **fail** โ€” ะฝะตะผะตะดะปะตะฝะฝะพ ะทะฐะฒะตั€ัˆะธั‚ัŒัั ั ะฟะพะฝัั‚ะฝะพะน ะพัˆะธะฑะบะพะน (ะธะดะตะฐะปัŒะฝะพ ะดะปั CI/CD) + +### ๐ŸŽฏ Bootstrap-ะฝะฐะฒั‹ะบ โ€” ัะฐะผะพั…ะพัั‚ะธะฝะณ + +ะ“ะตะฝะตั€ะฐั†ะธั skill-seekers ะบะฐะบ ะฝะฐะฒั‹ะบะฐ ะดะปั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะฒ ะฒะฐัˆะตะผ ะ˜ะ˜-ะฐะณะตะฝั‚ะต (Claude Code, Kimi, Codex ะธ ั‚. ะด.): + +```bash +# ะ“ะตะฝะตั€ะฐั†ะธั ะฝะฐะฒั‹ะบะฐ +./scripts/bootstrap_skill.sh + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒ Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**ะงั‚ะพ ะฒั‹ ะฟะพะปัƒั‡ะฐะตั‚ะต:** +- โœ… **ะŸะพะปะฝะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั ะฝะฐะฒั‹ะบะฐ** โ€” ะฒัะต CLI-ะบะพะผะฐะฝะดั‹ ะธ ัˆะฐะฑะปะพะฝั‹ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั +- โœ… **ะกะฟั€ะฐะฒะบะฐ ะฟะพ CLI-ะบะพะผะฐะฝะดะฐะผ** โ€” ะบะฐะถะดั‹ะน ะธะฝัั‚ั€ัƒะผะตะฝั‚ ะธ ะตะณะพ ะพะฟั†ะธะธ ะทะฐะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝั‹ +- โœ… **ะŸั€ะธะผะตั€ั‹ ะฑั‹ัั‚ั€ะพะณะพ ัั‚ะฐั€ั‚ะฐ** โ€” ั‚ะธะฟะธั‡ะฝั‹ะต ั€ะฐะฑะพั‡ะธะต ะฟั€ะพั†ะตััั‹ ะธ ะปัƒั‡ัˆะธะต ะฟั€ะฐะบั‚ะธะบะธ +- โœ… **ะะฒั‚ะพะณะตะฝะตั€ะธั€ัƒะตะผะฐั API-ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั** โ€” ะฐะฝะฐะปะธะท ะบะพะดะฐ, ะฟะฐั‚ั‚ะตั€ะฝั‹ ะธ ะฟั€ะธะผะตั€ั‹ + +### ๐Ÿ” ะŸั€ะธะฒะฐั‚ะฝั‹ะต ั€ะตะฟะพะทะธั‚ะพั€ะธะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน +- โœ… **Git-ะธัั‚ะพั‡ะฝะธะบะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน** โ€” ะฟะพะปัƒั‡ะตะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน ะธะท ะฟั€ะธะฒะฐั‚ะฝั‹ั…/ะบะพะผะฐะฝะดะฝั‹ั… Git-ั€ะตะฟะพะทะธั‚ะพั€ะธะตะฒ +- โœ… **ะฃะฟั€ะฐะฒะปะตะฝะธะต ะฝะตัะบะพะปัŒะบะธะผะธ ะธัั‚ะพั‡ะฝะธะบะฐะผะธ** โ€” ั€ะตะณะธัั‚ั€ะฐั†ะธั ะฝะตะพะณั€ะฐะฝะธั‡ะตะฝะฝะพะณะพ ะบะพะปะธั‡ะตัั‚ะฒะฐ ั€ะตะฟะพะทะธั‚ะพั€ะธะตะฒ GitHub, GitLab, Bitbucket +- โœ… **ะšะพะผะฐะฝะดะฝะฐั ั€ะฐะฑะพั‚ะฐ** โ€” ะพะฑะผะตะฝ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะผะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธัะผะธ ะฒ ะบะพะผะฐะฝะดะฐั… ะธะท 3โ€“5 ั‡ะตะปะพะฒะตะบ +- โœ… **ะšะพั€ะฟะพั€ะฐั‚ะธะฒะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ** โ€” ะผะฐััˆั‚ะฐะฑะธั€ะพะฒะฐะฝะธะต ะดะพ 500+ ั€ะฐะทั€ะฐะฑะพั‚ั‡ะธะบะพะฒ +- โœ… **ะ‘ะตะทะพะฟะฐัะฝะฐั ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธั** โ€” ั‚ะพะบะตะฝั‹ ั‡ะตั€ะตะท ะฟะตั€ะตะผะตะฝะฝั‹ะต ะพะบั€ัƒะถะตะฝะธั (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **ะฃะผะฝะพะต ะบััˆะธั€ะพะฒะฐะฝะธะต** โ€” ะบะปะพะฝะธั€ัƒะนั‚ะต ะพะดะธะฝ ั€ะฐะท, ะพะฑะฝะพะฒะปะตะฝะธั ะฟะพะดั‚ัะณะธะฒะฐัŽั‚ัั ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ +- โœ… **ะžั„ะปะฐะนะฝ-ั€ะตะถะธะผ** โ€” ั€ะฐะฑะพั‚ะฐ ั ะบััˆะธั€ะพะฒะฐะฝะฝั‹ะผะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธัะผะธ ะฑะตะท ะฟะพะดะบะปัŽั‡ะตะฝะธั ะบ ัะตั‚ะธ + +### ๐Ÿค– ะะฝะฐะปะธะท ะบะพะดะพะฒะพะน ะฑะฐะทั‹ (C3.x) + +**C3.4: ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะฟะฐั‚ั‚ะตั€ะฝะพะฒ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ั ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะตะผ** +- โœ… **9 ั„ะพั€ะผะฐั‚ะพะฒ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ** โ€” JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 ั‚ะธะฟะพะฒ ะฟะฐั‚ั‚ะตั€ะฝะพะฒ** โ€” ะฑะฐะทะฐ ะดะฐะฝะฝั‹ั…, API, ะปะพะณะธั€ะพะฒะฐะฝะธะต, ะบััˆ, ะฟะพั‡ั‚ะฐ, ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธั, ัะตั€ะฒะตั€ +- โœ… **ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต** โ€” ะพะฟั†ะธะพะฝะฐะปัŒะฝั‹ะน ะดะฒัƒั…ั€ะตะถะธะผะฝั‹ะน ะ˜ะ˜-ะฐะฝะฐะปะธะท (API + LOCAL) +- โœ… **ะะฝะฐะปะธะท ะฑะตะทะพะฟะฐัะฝะพัั‚ะธ** โ€” ะพะฑะฝะฐั€ัƒะถะตะฝะธะต ะถั‘ัั‚ะบะพ ะทะฐะบะพะดะธั€ะพะฒะฐะฝะฝั‹ั… ัะตะบั€ะตั‚ะพะฒ ะธ ะพั‚ะบั€ั‹ั‚ั‹ั… ัƒั‡ั‘ั‚ะฝั‹ั… ะดะฐะฝะฝั‹ั… +- โœ… **ะะฒั‚ะพะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะธะต** โ€” ะณะตะฝะตั€ะฐั†ะธั JSON + Markdown ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ะฒัะตั… ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน +- โœ… **MCP-ะธะฝั‚ะตะณั€ะฐั†ะธั** โ€” ะธะฝัั‚ั€ัƒะผะตะฝั‚ `extract_config_patterns` ั ะฟะพะดะดะตั€ะถะบะพะน ัƒะปัƒั‡ัˆะตะฝะธั + +**C3.3: ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะฝั‹ะต ะฟะพัˆะฐะณะพะฒั‹ะต ั€ัƒะบะพะฒะพะดัั‚ะฒะฐ** +- โœ… **ะŸะพะปะฝะพะต ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต** โ€” ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะต ะฑะฐะทะพะฒั‹ั… ั€ัƒะบะพะฒะพะดัั‚ะฒ ะฒ ะฟั€ะพั„ะตััะธะพะฝะฐะปัŒะฝั‹ะต ัƒั‡ะตะฑะฝะธะบะธ +- โœ… **5 ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธั… ัƒะปัƒั‡ัˆะตะฝะธะน** โ€” ะพะฟะธัะฐะฝะธะต ัˆะฐะณะพะฒ, ัƒัั‚ั€ะฐะฝะตะฝะธะต ะฝะตะฟะพะปะฐะดะพะบ, ะฟั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝั‹ะต ั‚ั€ะตะฑะพะฒะฐะฝะธั, ัะปะตะดัƒัŽั‰ะธะต ัˆะฐะณะธ, ัั†ะตะฝะฐั€ะธะธ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั +- โœ… **ะ”ะฒัƒั…ั€ะตะถะธะผะฝะฐั ะฟะพะดะดะตั€ะถะบะฐ** โ€” API-ั€ะตะถะธะผ (Claude API) ะธะปะธ LOCAL-ั€ะตะถะธะผ (Claude Code CLI) +- โœ… **ะัƒะปะตะฒั‹ะต ะทะฐั‚ั€ะฐั‚ั‹ ะฒ LOCAL-ั€ะตะถะธะผะต** โ€” ะ‘ะ•ะกะŸะ›ะะขะะžะ• ัƒะปัƒั‡ัˆะตะฝะธะต ั ะฒะฐัˆะธะผ ะฟะปะฐะฝะพะผ Claude Code Max +- โœ… **ะšะฐั‡ะตัั‚ะฒะตะฝะฝะพะต ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธะต** โ€” ัˆะฐะฑะปะพะฝั‹ ะฝะฐ 75 ัั‚ั€ะพะบ โ†’ ะฟะพะดั€ะพะฑะฝั‹ะต ั€ัƒะบะพะฒะพะดัั‚ะฒะฐ ะฝะฐ 500+ ัั‚ั€ะพะบ + +**ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต:** +```bash +# ะ‘ั‹ัั‚ั€ั‹ะน ะฐะฝะฐะปะธะท (1โ€“2 ะผะธะฝ, ั‚ะพะปัŒะบะพ ะฑะฐะทะพะฒั‹ะต ั„ัƒะฝะบั†ะธะธ) +skill-seekers scan tests/ --quick + +# ะšะพะผะฟะปะตะบัะฝั‹ะน ะฐะฝะฐะปะธะท (ั ะ˜ะ˜, 20โ€“60 ะผะธะฝ) +skill-seekers scan tests/ --comprehensive + +# ะก ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะตะผ +skill-seekers scan tests/ --enhance +``` + +**ะŸะพะปะฝะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ะŸั€ะตัะตั‚ั‹ ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะพะฒ ัƒะปัƒั‡ัˆะตะฝะธั + +ะœะฝะพะณะพั€ะฐะทะพะฒั‹ะต YAML-ะพะฟั€ะตะดะตะปั‘ะฝะฝั‹ะต ะบะพะฝะฒะตะนะตั€ั‹ ัƒะปัƒั‡ัˆะตะฝะธั, ัƒะฟั€ะฐะฒะปััŽั‰ะธะต ั‚ะตะผ, ะบะฐะบ ะ˜ะ˜ ะฟั€ะตะพะฑั€ะฐะทัƒะตั‚ ะฝะตะพะฑั€ะฐะฑะพั‚ะฐะฝะฝัƒัŽ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ ะฒ ะพั‚ัˆะปะธั„ะพะฒะฐะฝะฝั‹ะน ะฝะฐะฒั‹ะบ. + +- โœ… **5 ะฒัั‚ั€ะพะตะฝะฝั‹ั… ะฟั€ะตัะตั‚ะพะฒ** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต ะฟั€ะตัะตั‚ั‹** โ€” ะดะพะฑะฐะฒะปัะนั‚ะต ัะพะฑัั‚ะฒะตะฝะฝั‹ะต ั€ะฐะฑะพั‡ะธะต ะฟั€ะพั†ะตััั‹ ะฒ `~/.config/skill-seekers/workflows/` +- โœ… **ะฆะตะฟะพั‡ะบะธ ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะพะฒ** โ€” ะพะฑัŠะตะดะธะฝัะนั‚ะต ะดะฒะฐ ะธะปะธ ะฑะพะปะตะต ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะฐ ะฒ ะพะดะฝะพะน ะบะพะผะฐะฝะดะต +- โœ… **ะŸะพะปะฝะพะต ัƒะฟั€ะฐะฒะปะตะฝะธะต ั‡ะตั€ะตะท CLI** โ€” ะฟั€ะพัะผะพั‚ั€, ะบะพะฟะธั€ะพะฒะฐะฝะธะต, ะดะพะฑะฐะฒะปะตะฝะธะต, ัƒะดะฐะปะตะฝะธะต ะธ ะฒะฐะปะธะดะฐั†ะธั ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะพะฒ + +```bash +# ะŸั€ะธะผะตะฝะตะฝะธะต ะพะดะฝะพะณะพ ั€ะฐะฑะพั‡ะตะณะพ ะฟั€ะพั†ะตััะฐ +skill-seekers create ./my-project --enhance-workflow security-focus + +# ะฆะตะฟะพั‡ะบะฐ ะฝะตัะบะพะปัŒะบะธั… ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะพะฒ (ะฟั€ะธะผะตะฝััŽั‚ัั ะฟะพ ะฟะพั€ัะดะบัƒ) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ะฃะฟั€ะฐะฒะปะตะฝะธะต ะฟั€ะตัะตั‚ะฐะผะธ +skill-seekers workflows list # ะกะฟะธัะพะบ ะฒัะตั… (ะฒัั‚ั€ะพะตะฝะฝั‹ะต + ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต) +skill-seekers workflows show security-focus # ะŸะพะบะฐะทะฐั‚ัŒ ัะพะดะตั€ะถะธะผะพะต YAML +skill-seekers workflows copy security-focus # ะกะบะพะฟะธั€ะพะฒะฐั‚ัŒ ะฒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบัƒัŽ ะดะธั€ะตะบั‚ะพั€ะธัŽ ะดะปั ั€ะตะดะฐะบั‚ะธั€ะพะฒะฐะฝะธั +skill-seekers workflows add ./my-workflow.yaml # ะฃัั‚ะฐะฝะพะฒะธั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะน ะฟั€ะตัะตั‚ +skill-seekers workflows remove my-workflow # ะฃะดะฐะปะธั‚ัŒ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะน ะฟั€ะตัะตั‚ +skill-seekers workflows validate security-focus # ะŸั€ะพะฒะตั€ะธั‚ัŒ ัั‚ั€ัƒะบั‚ัƒั€ัƒ ะฟั€ะตัะตั‚ะฐ + +# ะšะพะฟะธั€ะพะฒะฐะฝะธะต ะฝะตัะบะพะปัŒะบะธั… ัั€ะฐะทัƒ +skill-seekers workflows copy security-focus minimal api-documentation + +# ะ”ะพะฑะฐะฒะปะตะฝะธะต ะฝะตัะบะพะปัŒะบะธั… ั„ะฐะนะปะพะฒ ัั€ะฐะทัƒ +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# ะฃะดะฐะปะตะฝะธะต ะฝะตัะบะพะปัŒะบะธั… ัั€ะฐะทัƒ +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**ะคะพั€ะผะฐั‚ YAML-ะฟั€ะตัะตั‚ะฐ:** +```yaml +name: security-focus +description: "ะžะฑะทะพั€ ะฑะตะทะพะฟะฐัะฝะพัั‚ะธ: ัƒัะทะฒะธะผะพัั‚ะธ, ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธั, ะพะฑั€ะฐะฑะพั‚ะบะฐ ะดะฐะฝะฝั‹ั…" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "ะŸั€ะพะฒะตั€ะธั‚ัŒ ะฝะฐ OWASP Top 10 ะธ ั€ะฐัะฟั€ะพัั‚ั€ะฐะฝั‘ะฝะฝั‹ะต ัƒัะทะฒะธะผะพัั‚ะธ..." + - name: auth-review + type: custom + prompt: "ะ˜ััะปะตะดะพะฒะฐั‚ัŒ ะฟะฐั‚ั‚ะตั€ะฝั‹ ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะธ ะธ ะฐะฒั‚ะพั€ะธะทะฐั†ะธะธ..." + uses_history: true +``` + +### โšก ะŸั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ ะธ ะผะฐััˆั‚ะฐะฑ +- โœ… **ะัะธะฝั…ั€ะพะฝะฝั‹ะน ั€ะตะถะธะผ** โ€” ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะฒ 2โ€“3 ั€ะฐะทะฐ ะฑั‹ัั‚ั€ะตะต ั async/await (ั„ะปะฐะณ `--async`) +- โœ… **ะŸะพะดะดะตั€ะถะบะฐ ะฑะพะปัŒัˆะพะน ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ** โ€” ะพะฑั€ะฐะฑะพั‚ะบะฐ ะดะพะบัƒะผะตะฝั‚ะพะฒ ะฝะฐ 10Kโ€“40K+ ัั‚ั€ะฐะฝะธั† ั ัƒะผะฝั‹ะผ ั€ะฐะทะดะตะปะตะฝะธะตะผ +- โœ… **ะœะฐั€ัˆั€ัƒั‚ะธะทะฐั‚ะพั€/Hub-ะฝะฐะฒั‹ะบะธ** โ€” ะธะฝั‚ะตะปะปะตะบั‚ัƒะฐะปัŒะฝะฐั ะผะฐั€ัˆั€ัƒั‚ะธะทะฐั†ะธั ะบ ัะฟะตั†ะธะฐะปะธะทะธั€ะพะฒะฐะฝะฝั‹ะผ ะฟะพะดะฝะฐะฒั‹ะบะฐะผ +- โœ… **ะŸะฐั€ะฐะปะปะตะปัŒะฝะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต** โ€” ะพะดะฝะพะฒั€ะตะผะตะฝะฝะฐั ะพะฑั€ะฐะฑะพั‚ะบะฐ ะฝะตัะบะพะปัŒะบะธั… ะฝะฐะฒั‹ะบะพะฒ +- โœ… **ะšะพะฝั‚ั€ะพะปัŒะฝั‹ะต ั‚ะพั‡ะบะธ/ะ’ะพะทะพะฑะฝะพะฒะปะตะฝะธะต** โ€” ะฟั€ะพะณั€ะตัั ะฝะธะบะพะณะดะฐ ะฝะต ั‚ะตั€ัะตั‚ัั ะฟั€ะธ ะดะปะธั‚ะตะปัŒะฝะพะผ ัะบะฐะฝะธั€ะพะฒะฐะฝะธะธ +- โœ… **ะกะธัั‚ะตะผะฐ ะบััˆะธั€ะพะฒะฐะฝะธั** โ€” ัะบะฐะฝะธั€ัƒะนั‚ะต ะพะดะธะฝ ั€ะฐะท, ะฟะตั€ะตัะพะฑะธั€ะฐะนั‚ะต ะผะณะฝะพะฒะตะฝะฝะพ + +### ๐Ÿค– ะ“ะตะฝะตั€ะฐั†ะธั ะฝะฐะฒั‹ะบะพะฒ, ะฝะตะทะฐะฒะธัะธะผะฐั ะพั‚ ะฐะณะตะฝั‚ะฐ +- โœ… **ะŸะพะดะดะตั€ะถะบะฐ ะฝะตัะบะพะปัŒะบะธั… ะฐะณะตะฝั‚ะพะฒ** โ€” ะณะตะฝะตั€ะฐั†ะธั ะฝะฐะฒั‹ะบะพะฒ ะดะปั Claude, Kimi, Codex, Copilot, OpenCode ะธะปะธ ะปัŽะฑะพะณะพ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะพะณะพ ะฐะณะตะฝั‚ะฐ ั‡ะตั€ะตะท ั„ะปะฐะณ `--agent` +- โœ… **ะŸะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะต ะบะพะผะฐะฝะดั‹ ะฐะณะตะฝั‚ะพะฒ** โ€” ะธัะฟะพะปัŒะทัƒะนั‚ะต `--agent-cmd`, ั‡ั‚ะพะฑั‹ ะทะฐะดะฐั‚ัŒ ัะพะฑัั‚ะฒะตะฝะฝัƒัŽ CLI-ะบะพะผะฐะฝะดัƒ ะฐะณะตะฝั‚ะฐ ะดะปั ัƒะปัƒั‡ัˆะตะฝะธั +- โœ… **ะฃะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะต ั„ะปะฐะณะธ** โ€” `--agent` ะธ `--agent-cmd` ะดะพัั‚ัƒะฟะฝั‹ ะฒะพ ะฒัะตั… ะบะพะผะฐะฝะดะฐั… (create, scrape, github, pdf ะธ ั‚. ะด.) + +### ๐Ÿ“ฆ ะšะพะฝะฒะตะนะตั€ ะผะฐั€ะบะตั‚ะฟะปะตะนัะฐ +- โœ… **ะŸัƒะฑะปะธะบะฐั†ะธั ะฒ ะผะฐั€ะบะตั‚ะฟะปะตะนัะต** โ€” ะฟัƒะฑะปะธะบะฐั†ะธั ะฝะฐะฒั‹ะบะพะฒ ะฒ ั€ะตะฟะพะทะธั‚ะพั€ะธะธ ะผะฐั€ะบะตั‚ะฟะปะตะนัะฐ ะฟะปะฐะณะธะฝะพะฒ Claude Code +- โœ… **ะกะบะฒะพะทะฝะพะน ะบะพะฝะฒะตะนะตั€** โ€” ะพั‚ ะธัั‚ะพั‡ะฝะธะบะฐ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ะดะพ ะพะฟัƒะฑะปะธะบะพะฒะฐะฝะฝะพะน ะทะฐะฟะธัะธ ะฒ ะผะฐั€ะบะตั‚ะฟะปะตะนัะต + +### โœ… ะšะพะฝั‚ั€ะพะปัŒ ะบะฐั‡ะตัั‚ะฒะฐ +- โœ… **ะŸะพะปะฝะพะต ะฟะพะบั€ั‹ั‚ะธะต ั‚ะตัั‚ะฐะผะธ** โ€” 3 700+ ั‚ะตัั‚ะพะฒ ั ะพะฑัˆะธั€ะฝั‹ะผ ะฟะพะบั€ั‹ั‚ะธะตะผ + +--- + +## ๐Ÿ“ฆ ะฃัั‚ะฐะฝะพะฒะบะฐ + +```bash +# ะ‘ะฐะทะพะฒะฐั ัƒัั‚ะฐะฝะพะฒะบะฐ (ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ, ะฐะฝะฐะปะธะท GitHub, PDF, ัƒะฟะฐะบะพะฒะบะฐ) +pip install skill-seekers + +# ะก ะฟะพะดะดะตั€ะถะบะพะน ะฒัะตั… LLM-ะฟะปะฐั‚ั„ะพั€ะผ +pip install skill-seekers[all-llms] + +# ะก MCP-ัะตั€ะฒะตั€ะพะผ +pip install skill-seekers[mcp] + +# ะ’ัั‘ ะฒะบะปัŽั‡ะตะฝะพ +pip install skill-seekers[all] +``` + +**ะัƒะถะฝะฐ ะฟะพะผะพั‰ัŒ ั ะฒั‹ะฑะพั€ะพะผ?** ะ—ะฐะฟัƒัั‚ะธั‚ะต ะผะฐัั‚ะตั€ ะฝะฐัั‚ั€ะพะนะบะธ: +```bash +skill-seekers-setup +``` + +### ะ’ะฐั€ะธะฐะฝั‚ั‹ ัƒัั‚ะฐะฝะพะฒะบะธ + +| ะšะพะผะฐะฝะดะฐ ัƒัั‚ะฐะฝะพะฒะบะธ | ะคัƒะฝะบั†ะธะพะฝะฐะปัŒะฝะพัั‚ัŒ | +|-------------------|-----------------| +| `pip install skill-seekers` | ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต, ะฐะฝะฐะปะธะท GitHub, PDF, ะฒัะต ะฟะปะฐั‚ั„ะพั€ะผั‹ | +| `pip install skill-seekers[gemini]` | + ะŸะพะดะดะตั€ะถะบะฐ Google Gemini | +| `pip install skill-seekers[openai]` | + ะŸะพะดะดะตั€ะถะบะฐ OpenAI ChatGPT | +| `pip install skill-seekers[all-llms]` | + ะ’ัะต LLM-ะฟะปะฐั‚ั„ะพั€ะผั‹ | +| `pip install skill-seekers[mcp]` | + MCP-ัะตั€ะฒะตั€ | +| `pip install skill-seekers[video]` | + ะ˜ะทะฒะปะตั‡ะตะฝะธะต ััƒะฑั‚ะธั‚ั€ะพะฒ ะธ ะผะตั‚ะฐะดะฐะฝะฝั‹ั… YouTube/Vimeo | +| `pip install skill-seekers[video-full]` | + ะขั€ะฐะฝัะบั€ะธะฟั†ะธั Whisper ะธ ะธะทะฒะปะตั‡ะตะฝะธะต ะฒะธะทัƒะฐะปัŒะฝั‹ั… ะบะฐะดั€ะพะฒ | +| `pip install skill-seekers[jupyter]` | + ะŸะพะดะดะตั€ะถะบะฐ Jupyter-ะฝะพัƒั‚ะฑัƒะบะพะฒ | +| `pip install skill-seekers[pptx]` | + ะŸะพะดะดะตั€ะถะบะฐ PowerPoint | +| `pip install skill-seekers[confluence]` | + ะŸะพะดะดะตั€ะถะบะฐ ะฒะธะบะธ Confluence | +| `pip install skill-seekers[notion]` | + ะŸะพะดะดะตั€ะถะบะฐ ัั‚ั€ะฐะฝะธั† Notion | +| `pip install skill-seekers[rss]` | + ะŸะพะดะดะตั€ะถะบะฐ RSS/Atom-ะปะตะฝั‚ | +| `pip install skill-seekers[chat]` | + ะŸะพะดะดะตั€ะถะบะฐ ัะบัะฟะพั€ั‚ะฐ ั‡ะฐั‚ะพะฒ Slack/Discord | +| `pip install skill-seekers[asciidoc]` | + ะŸะพะดะดะตั€ะถะบะฐ ะดะพะบัƒะผะตะฝั‚ะพะฒ AsciiDoc | +| `pip install skill-seekers[all]` | ะ’ัั‘ ะฒะบะปัŽั‡ะตะฝะพ | + +> **ะ’ะธะทัƒะฐะปัŒะฝั‹ะต ะทะฐะฒะธัะธะผะพัั‚ะธ ะดะปั ะฒะธะดะตะพ (ั ะฟะพะดะดะตั€ะถะบะพะน GPU):** ะŸะพัะปะต ัƒัั‚ะฐะฝะพะฒะบะธ `skill-seekers[video-full]` ะทะฐะฟัƒัั‚ะธั‚ะต +> `skill-seekers create --setup` ะดะปั ะฐะฒั‚ะพะพะฟั€ะตะดะตะปะตะฝะธั ะฒะฐัˆะตะณะพ GPU ะธ ัƒัั‚ะฐะฝะพะฒะบะธ ะฟั€ะฐะฒะธะปัŒะฝะพะน ัะฑะพั€ะบะธ PyTorch +> + easyocr. ะญั‚ะพ ั€ะตะบะพะผะตะฝะดัƒะตะผั‹ะน ัะฟะพัะพะฑ ัƒัั‚ะฐะฝะพะฒะบะธ ะทะฐะฒะธัะธะผะพัั‚ะตะน ะดะปั ะฒะธะทัƒะฐะปัŒะฝะพะณะพ ะธะทะฒะปะตั‡ะตะฝะธั. + +--- + +## ๐Ÿš€ ะ ะฐะฑะพั‡ะธะน ะฟั€ะพั†ะตัั ัƒัั‚ะฐะฝะพะฒะบะธ ะพะดะฝะพะน ะบะพะผะฐะฝะดะพะน + +**ะกะฐะผั‹ะน ะฑั‹ัั‚ั€ั‹ะน ัะฟะพัะพะฑ ะพั‚ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะดะพ ะทะฐะณั€ัƒะถะตะฝะฝะพะณะพ ะฝะฐะฒั‹ะบะฐ โ€” ะฟะพะปะฝะฐั ะฐะฒั‚ะพะผะฐั‚ะธะทะฐั†ะธั:** + +```bash +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฝะฐะฒั‹ะบะฐ React ะธะท ะพั„ะธั†ะธะฐะปัŒะฝั‹ั… ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน (ะฐะฒั‚ะพะทะฐะณั€ัƒะทะบะฐ ะฒ Claude) +skill-seekers install --config react + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะธะท ะปะพะบะฐะปัŒะฝะพะณะพ ั„ะฐะนะปะฐ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ +skill-seekers install --config configs/custom.json + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฑะตะท ะทะฐะณั€ัƒะทะบะธ (ั‚ะพะปัŒะบะพ ัƒะฟะฐะบะพะฒะบะฐ) +skill-seekers install --config django --no-upload + +# ะŸั€ะตะดะฟั€ะพัะผะพั‚ั€ ั€ะฐะฑะพั‡ะตะณะพ ะฟั€ะพั†ะตััะฐ ะฑะตะท ะฒั‹ะฟะพะปะฝะตะฝะธั +skill-seekers install --config react --dry-run +``` + +**ะ’ั€ะตะผั:** 20โ€“45 ะผะธะฝัƒั‚ ะฒัะตะณะพ | **ะšะฐั‡ะตัั‚ะฒะพ:** ะ“ะพั‚ะพะฒะพ ะบ ะฟั€ะพะดะฐะบัˆะตะฝัƒ (9/10) | **ะกั‚ะพะธะผะพัั‚ัŒ:** ะ‘ะตัะฟะปะฐั‚ะฝะพ + +**ะ’ั‹ะฟะพะปะฝัะตะผั‹ะต ั„ะฐะทั‹:** +``` +๐Ÿ“ฅ ะคะะ—ะ 1: ะŸะพะปัƒั‡ะตะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ (ะตัะปะธ ัƒะบะฐะทะฐะฝะพ ะธะผั ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ) +๐Ÿ“– ะคะะ—ะ 2: ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ +โœจ ะคะะ—ะ 3: ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต (ะžะ‘ะฏะ—ะะขะ•ะ›ะฌะะž โ€” ะฑะตะท ะฒะพะทะผะพะถะฝะพัั‚ะธ ะฟั€ะพะฟัƒัะบะฐ) +๐Ÿ“ฆ ะคะะ—ะ 4: ะฃะฟะฐะบะพะฒะบะฐ ะฝะฐะฒั‹ะบะฐ +โ˜๏ธ ะคะะ—ะ 5: ะ—ะฐะณั€ัƒะทะบะฐ ะฒ Claude (ะพะฟั†ะธะพะฝะฐะปัŒะฝะพ, ั‚ั€ะตะฑัƒะตั‚ัั API Key) +``` + +**ะขั€ะตะฑะพะฒะฐะฝะธั:** +- ะŸะตั€ะตะผะตะฝะฝะฐั ะพะบั€ัƒะถะตะฝะธั ANTHROPIC_API_KEY (ะดะปั ะฐะฒั‚ะพะทะฐะณั€ัƒะทะบะธ) +- ะŸะปะฐะฝ Claude Code Max (ะดะปั ะปะพะบะฐะปัŒะฝะพะณะพ ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธั) ะธะปะธ ะธัะฟะพะปัŒะทัƒะนั‚ะต `--agent` ะดะปั ะฒั‹ะฑะพั€ะฐ ะดั€ัƒะณะพะณะพ ะ˜ะ˜-ะฐะณะตะฝั‚ะฐ + +--- + +## ๐Ÿ“Š ะœะฐั‚ั€ะธั†ะฐ ั„ัƒะฝะบั†ะธะน + +Skill Seekers ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ **12 LLM-ะฟะปะฐั‚ั„ะพั€ะผ**, **8 RAG/ะฒะตะบั‚ะพั€ะฝั‹ั… ั†ะตะปะตะน**, **18 ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ** ะธ ะฟะพะปะฝั‹ะน ะฟะฐั€ะธั‚ะตั‚ ั„ัƒะฝะบั†ะธะน ะฟะพ ะฒัะตะผ ั†ะตะปะตะฒั‹ะผ ะฟะปะฐั‚ั„ะพั€ะผะฐะผ. + +**ะŸะปะฐั‚ั„ะพั€ะผั‹:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, ัƒะฝะธะฒะตั€ัะฐะปัŒะฝั‹ะน Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +**ะขะธะฟั‹ ะธัั‚ะพั‡ะฝะธะบะพะฒ:** ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั ัะฐะนั‚ะพะฒ, ั€ะตะฟะพะทะธั‚ะพั€ะธะธ GitHub, PDF, Word (.docx), EPUB, ะฒะธะดะตะพ, ะปะพะบะฐะปัŒะฝั‹ะต ะบะพะดะพะฒั‹ะต ะฑะฐะทั‹, Jupyter-ะฝะพัƒั‚ะฑัƒะบะธ, ะปะพะบะฐะปัŒะฝั‹ะน HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS/Atom-ะปะตะฝั‚ั‹, man-ัั‚ั€ะฐะฝะธั†ั‹, ะฒะธะบะธ Confluence, ัั‚ั€ะฐะฝะธั†ั‹ Notion, ัะบัะฟะพั€ั‚ั‹ ั‡ะฐั‚ะพะฒ Slack/Discord + +ะŸะพะดั€ะพะฑะฝะพัั‚ะธ ัะผ. ะฒ [ะŸะพะปะฝะพะน ะผะฐั‚ั€ะธั†ะต ั„ัƒะฝะบั†ะธะน](docs/reference/FEATURE_MATRIX.md). + +### ะ‘ั‹ัั‚ั€ะพะต ัั€ะฐะฒะฝะตะฝะธะต ะฟะปะฐั‚ั„ะพั€ะผ + +| ะคัƒะฝะบั†ะธั | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------|--------|--------|--------|---------|----------| +| ะคะพั€ะผะฐั‚ | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| ะ—ะฐะณั€ัƒะทะบะฐ | โœ… API | โœ… API | โœ… API | โœ… API | โŒ ะ’ั€ัƒั‡ะฝัƒัŽ | +| ะฃะปัƒั‡ัˆะตะฝะธะต | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ ะะตั‚ | +| ะ’ัะต ั€ะตะถะธะผั‹ ะฝะฐะฒั‹ะบะพะฒ | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## ะŸั€ะธะผะตั€ั‹ ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั + +### ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ + +```bash +# ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ ัะฐะนั‚ะฐ +skill-seekers create --config configs/react.json + +# ะ‘ั‹ัั‚ั€ะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต ะฑะตะท ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ +skill-seekers create https://react.dev --name react + +# ะัะธะฝั…ั€ะพะฝะฝั‹ะน ั€ะตะถะธะผ (ะฒ 3 ั€ะฐะทะฐ ะฑั‹ัั‚ั€ะตะต) +skill-seekers create --config configs/godot.json --async --workers 8 + +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะบะพะฝะบั€ะตั‚ะฝะพะณะพ ะ˜ะ˜-ะฐะณะตะฝั‚ะฐ ะดะปั ัƒะปัƒั‡ัˆะตะฝะธั +skill-seekers create --config configs/react.json --agent kimi +``` + +### ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท PDF + +```bash +# ะ‘ะฐะทะพะฒะพะต ะธะทะฒะปะตั‡ะตะฝะธะต ะธะท PDF +skill-seekers create --pdf docs/manual.pdf --name myskill + +# ะ ะฐััˆะธั€ะตะฝะฝั‹ะต ั„ัƒะฝะบั†ะธะธ +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # ะ˜ะทะฒะปะตั‡ะตะฝะธะต ั‚ะฐะฑะปะธั† + --parallel \ # ะ‘ั‹ัั‚ั€ะฐั ะฟะฐั€ะฐะปะปะตะปัŒะฝะฐั ะพะฑั€ะฐะฑะพั‚ะบะฐ + --workers 8 # ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต 8 ัะดะตั€ CPU + +# ะกะบะฐะฝะธั€ะพะฒะฐะฝะฝั‹ะต PDF (ั‚ั€ะตะฑัƒะตั‚ัั: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท ะฒะธะดะตะพ + +```bash +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฟะพะดะดะตั€ะถะบะธ ะฒะธะดะตะพ +pip install skill-seekers[video] # ะกัƒะฑั‚ะธั‚ั€ั‹ + ะผะตั‚ะฐะดะฐะฝะฝั‹ะต +pip install skill-seekers[video-full] # + Whisper ั‚ั€ะฐะฝัะบั€ะธะฟั†ะธั + ะธะทะฒะปะตั‡ะตะฝะธะต ะฒะธะทัƒะฐะปัŒะฝั‹ั… ะบะฐะดั€ะพะฒ + +# ะะฒั‚ะพะพะฟั€ะตะดะตะปะตะฝะธะต GPU ะธ ัƒัั‚ะฐะฝะพะฒะบะฐ ะฒะธะทัƒะฐะปัŒะฝั‹ั… ะทะฐะฒะธัะธะผะพัั‚ะตะน (PyTorch + easyocr) +skill-seekers create --setup + +# ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท ะฒะธะดะตะพ YouTube +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท ะฟะปะตะนะปะธัั‚ะฐ YouTube +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท ะปะพะบะฐะปัŒะฝะพะณะพ ะฒะธะดะตะพั„ะฐะนะปะฐ +skill-seekers create --video-file recording.mp4 --name myrecording + +# ะ˜ะทะฒะปะตั‡ะตะฝะธะต ั ะฐะฝะฐะปะธะทะพะผ ะฒะธะทัƒะฐะปัŒะฝั‹ั… ะบะฐะดั€ะพะฒ (ั‚ั€ะตะฑัƒัŽั‚ัั ะทะฐะฒะธัะธะผะพัั‚ะธ video-full) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# ะก ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะตะผ (ะพั‡ะธัั‚ะบะฐ OCR + ะณะตะฝะตั€ะฐั†ะธั ะพั‚ะฟะพะปะธั€ะพะฒะฐะฝะฝะพะณะพ SKILL.md) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# ะžะฑั€ะตะทะบะฐ ะพะฟั€ะตะดะตะปั‘ะฝะฝะพะณะพ ั„ั€ะฐะณะผะตะฝั‚ะฐ ะฒะธะดะตะพ (ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‚ัั ัะตะบัƒะฝะดั‹, MM:SS, HH:MM:SS) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต Vision API ะดะปั OCR-ะบะฐะดั€ะพะฒ ั ะฝะธะทะบะพะน ะดะพัั‚ะพะฒะตั€ะฝะพัั‚ัŒัŽ (ั‚ั€ะตะฑัƒะตั‚ัั ANTHROPIC_API_KEY) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# ะŸะตั€ะตัะฑะพั€ะบะฐ ะฝะฐะฒั‹ะบะฐ ะธะท ั€ะฐะฝะตะต ะธะทะฒะปะตั‡ั‘ะฝะฝั‹ั… ะดะฐะฝะฝั‹ั… (ะฟั€ะพะฟัƒัะบ ะทะฐะณั€ัƒะทะบะธ) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ:** ัะผ. [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) ะดะปั ะฟะพะปะฝะพะน ัะฟั€ะฐะฒะบะธ ะฟะพ CLI, +> ะดะตั‚ะฐะปะตะน ะฒะธะทัƒะฐะปัŒะฝะพะณะพ ะบะพะฝะฒะตะนะตั€ะฐ, ะพะฟั†ะธะน ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธั ะธ ัƒัั‚ั€ะฐะฝะตะฝะธั ะฝะตะฟะพะปะฐะดะพะบ. + +### ะะฝะฐะปะธะท ั€ะตะฟะพะทะธั‚ะพั€ะธะตะฒ GitHub + +```bash +# ะ‘ะฐะทะพะฒะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต ั€ะตะฟะพะทะธั‚ะพั€ะธั +skill-seekers create facebook/react + +# ะก ะฐัƒั‚ะตะฝั‚ะธั„ะธะบะฐั†ะธะตะน (ะฑะพะปะตะต ะฒั‹ัะพะบะธะต ะปะธะผะธั‚ั‹ ะทะฐะฟั€ะพัะพะฒ) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# ะะฐัั‚ั€ะพะนะบะฐ ัะพะดะตั€ะถะธะผะพะณะพ +skill-seekers create django/django \ + --include-issues \ # ะ˜ะทะฒะปะตั‡ะตะฝะธะต GitHub Issues + --max-issues 100 \ # ะžะณั€ะฐะฝะธั‡ะตะฝะธะต ะบะพะปะธั‡ะตัั‚ะฒะฐ issues + --include-changelog # ะ˜ะทะฒะปะตั‡ะตะฝะธะต CHANGELOG.md +``` + +### ะฃะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝะพะต ะผัƒะปัŒั‚ะธะธัั‚ะพั‡ะฝะธะบะพะฒะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต + +**ะžะฑัŠะตะดะธะฝะตะฝะธะต ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ + GitHub + PDF ะฒ ะพะดะธะฝ ะฝะฐะฒั‹ะบ ั ะพะฑะฝะฐั€ัƒะถะตะฝะธะตะผ ะบะพะฝั„ะปะธะบั‚ะพะฒ:** + +```bash +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต ะณะพั‚ะพะฒั‹ั… ัƒะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝั‹ั… ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# ะ˜ะปะธ ัะพะทะดะฐะฝะธะต ัƒะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝะพะน ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**ะžะฑะฝะฐั€ัƒะถะตะฝะธะต ะบะพะฝั„ะปะธะบั‚ะพะฒ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ะฝะฐั…ะพะดะธั‚:** +- ๐Ÿ”ด **ะžั‚ััƒั‚ัั‚ะฒัƒะตั‚ ะฒ ะบะพะดะต** (ะฒั‹ัะพะบะธะน ะฟั€ะธะพั€ะธั‚ะตั‚): ะทะฐะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะพ, ะฝะพ ะฝะต ั€ะตะฐะปะธะทะพะฒะฐะฝะพ +- ๐ŸŸก **ะžั‚ััƒั‚ัั‚ะฒัƒะตั‚ ะฒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ** (ัั€ะตะดะฝะธะน ะฟั€ะธะพั€ะธั‚ะตั‚): ั€ะตะฐะปะธะทะพะฒะฐะฝะพ, ะฝะพ ะฝะต ะทะฐะดะพะบัƒะผะตะฝั‚ะธั€ะพะฒะฐะฝะพ +- โš ๏ธ **ะะตัะพะฒะฟะฐะดะตะฝะธะต ัะธะณะฝะฐั‚ัƒั€**: ั€ะฐะทะปะธั‡ะฝั‹ะต ะฟะฐั€ะฐะผะตั‚ั€ั‹/ั‚ะธะฟั‹ +- โ„น๏ธ **ะะตัะพะฒะฟะฐะดะตะฝะธะต ะพะฟะธัะฐะฝะธะน**: ั€ะฐะทะปะธั‡ะฝั‹ะต ะฟะพััะฝะตะฝะธั + +**ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ:** ัะผ. [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md). + +### ะŸั€ะธะฒะฐั‚ะฝั‹ะต ั€ะตะฟะพะทะธั‚ะพั€ะธะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะน + +**ะžะฑะผะตะฝ ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะธะผะธ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธัะผะธ ะฒ ะบะพะผะฐะฝะดะต ั‡ะตั€ะตะท ะฟั€ะธะฒะฐั‚ะฝั‹ะต Git-ั€ะตะฟะพะทะธั‚ะพั€ะธะธ:** + +```bash +# ะ˜ัะฟะพะปัŒะทะพะฒะฐะฝะธะต MCP-ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ ะดะปั ั€ะตะณะธัั‚ั€ะฐั†ะธะธ ะฟั€ะธะฒะฐั‚ะฝะพะณะพ ะบะพะผะฐะฝะดะฝะพะณะพ ั€ะตะฟะพะทะธั‚ะพั€ะธั +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# ะŸะพะปัƒั‡ะตะฝะธะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ ะธะท ะบะพะผะฐะฝะดะฝะพะณะพ ั€ะตะฟะพะทะธั‚ะพั€ะธั +fetch_config(source="team", config_name="internal-api") +``` + +**ะŸะพะดะดะตั€ะถะธะฒะฐะตะผั‹ะต ะฟะปะฐั‚ั„ะพั€ะผั‹:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ:** ัะผ. [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md). + +## ะšะฐะบ ัั‚ะพ ั€ะฐะฑะพั‚ะฐะตั‚ + +```mermaid +graph LR + A[ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั ัะฐะนั‚ะฐ] --> B[Skill Seekers] + B --> C[ะกะบะฐะฝะตั€] + B --> D[ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต] + B --> E[ะฃะฟะฐะบะพะฒั‰ะธะบ] + C --> F[ะžั€ะณะฐะฝะธะทะพะฒะฐะฝะฝั‹ะต ัะฟั€ะฐะฒะพั‡ะฝั‹ะต ั„ะฐะนะปั‹] + D --> F + F --> E + E --> G[ะ˜ะ˜-ะฝะฐะฒั‹ะบ .zip] + G --> H[ะ—ะฐะณั€ัƒะทะบะฐ ะฝะฐ ะ˜ะ˜-ะฟะปะฐั‚ั„ะพั€ะผัƒ] +``` + +0. **ะžะฑะฝะฐั€ัƒะถะตะฝะธะต llms.txt** โ€” ะฟั€ะพะฒะตั€ะบะฐ ะฝะฐะปะธั‡ะธั llms-full.txt, llms.txt, llms-small.txt (ั‡ะฐัั‚ัŒ ัƒะผะฝะพะณะพ ะพะฑะฝะฐั€ัƒะถะตะฝะธั SPA) +1. **ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต**: ะธะทะฒะปะตั‡ะตะฝะธะต ะฒัะตั… ัั‚ั€ะฐะฝะธั† ะธะท ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ +2. **ะšะฐั‚ะตะณะพั€ะธะทะฐั†ะธั**: ะพั€ะณะฐะฝะธะทะฐั†ะธั ะบะพะฝั‚ะตะฝั‚ะฐ ะฟะพ ั‚ะตะผะฐะผ (API, ั€ัƒะบะพะฒะพะดัั‚ะฒะฐ, ัƒั‡ะตะฑะฝะธะบะธ ะธ ั‚.ะด.) +3. **ะฃะปัƒั‡ัˆะตะฝะธะต**: ะ˜ะ˜ ะฐะฝะฐะปะธะทะธั€ัƒะตั‚ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ ะธ ัะพะทะดะฐั‘ั‚ ะฒัะตะพะฑัŠะตะผะปัŽั‰ะธะน SKILL.md ั ะฟั€ะธะผะตั€ะฐะผะธ (ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ะฝะตัะบะพะปัŒะบะพ ะฐะณะตะฝั‚ะพะฒ ั‡ะตั€ะตะท `--agent`) +4. **ะฃะฟะฐะบะพะฒะบะฐ**: ะพะฑัŠะตะดะธะฝะตะฝะธะต ะฒัะตะณะพ ะฒ ะณะพั‚ะพะฒั‹ะน ะดะปั ะฟะปะฐั‚ั„ะพั€ะผั‹ `.zip`-ั„ะฐะนะป + +## ะั€ั…ะธั‚ะตะบั‚ัƒั€ะฐ + +ะกะธัั‚ะตะผะฐ ะพั€ะณะฐะฝะธะทะพะฒะฐะฝะฐ ะฒ **8 ะพัะฝะพะฒะฝั‹ั… ะผะพะดัƒะปะตะน** ะธ **5 ะฒัะฟะพะผะพะณะฐั‚ะตะปัŒะฝั‹ั… ะผะพะดัƒะปะตะน** (ะฒัะตะณะพ ~200 ะบะปะฐััะพะฒ): + +![ะžะฑะทะพั€ ะฟะฐะบะตั‚ะพะฒ](docs/UML/exports/00_package_overview.png) + +| ะœะพะดัƒะปัŒ | ะะฐะทะฝะฐั‡ะตะฝะธะต | ะšะปัŽั‡ะตะฒั‹ะต ะบะปะฐััั‹ | +|--------|------------|-----------------| +| **CLICore** | ะ”ะธัะฟะตั‚ั‡ะตั€ ะบะพะผะฐะฝะด ะฒ ัั‚ะธะปะต Git | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | ะ˜ะทะฒะปะตั‡ะตะฝะธะต ะธะท 18 ั‚ะธะฟะพะฒ ะธัั‚ะพั‡ะฝะธะบะพะฒ | `DocToSkillConverter`, `DocumentSkillBuilder` (ะพะฑั‰ะธะน ัะปะพะน ัะฑะพั€ะบะธ), `UnifiedScraper` | +| **Adaptors** | 20+ ั„ะพั€ะผะฐั‚ะพะฒ ะฒั‹ั…ะพะดะฝั‹ั… ะฟะปะฐั‚ั„ะพั€ะผ | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | ะšะพะฝะฒะตะนะตั€ ะฐะฝะฐะปะธะทะฐ ะบะพะดะพะฒะพะน ะฑะฐะทั‹ C3.x | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 ะดะตั‚ะตะบั‚ะพั€ะพะฒ GoF | +| **Enhancement** | ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธะต ะฝะฐะฒั‹ะบะพะฒ ั‡ะตั€ะตะท `AgentClient` | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | ะฃะฟะฐะบะพะฒะบะฐ, ะทะฐะณั€ัƒะทะบะฐ, ัƒัั‚ะฐะฝะพะฒะบะฐ ะฝะฐะฒั‹ะบะพะฒ | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP-ัะตั€ะฒะตั€ (40 ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ) | `SkillSeekerMCPServer`, 10 ะผะพะดัƒะปะตะน ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ | +| **Sync** | ะžะฑะฝะฐั€ัƒะถะตะฝะธะต ะธะทะผะตะฝะตะฝะธะน ะดะพะบัƒะผะตะฝั‚ะฐั†ะธะธ | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +ะ’ัะฟะพะผะพะณะฐั‚ะตะปัŒะฝั‹ะต ะผะพะดัƒะปะธ: **Parsers** (28 CLI-ะฟะฐั€ัะตั€ะพะฒ), **Storage** (S3/GCS/Azure), **Embedding** (ะฒะตะบั‚ะพั€ั‹ ะพั‚ ะฝะตัะบะพะปัŒะบะธั… ะฟั€ะพะฒะฐะนะดะตั€ะพะฒ), **Benchmark** (ะฟั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ), **Utilities** (16 ะพะฑั‰ะธั… ะฟะพะผะพั‰ะฝะธะบะพะฒ). + +ะŸะพะปะฝั‹ะต UML-ะดะธะฐะณั€ะฐะผะผั‹: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | ะŸั€ะพะตะบั‚ StarUML: `docs/UML/skill_seekers.mdj` | HTML-ัะฟั€ะฐะฒะบะฐ ะฟะพ API: `docs/UML/html/` + +## ๐Ÿ“‹ ะŸั€ะตะดะฒะฐั€ะธั‚ะตะปัŒะฝั‹ะต ั‚ั€ะตะฑะพะฒะฐะฝะธั + +**ะŸะตั€ะตะด ะฝะฐั‡ะฐะปะพะผ ัƒะฑะตะดะธั‚ะตััŒ, ั‡ั‚ะพ ัƒ ะฒะฐั ะตัั‚ัŒ:** + +1. **Python 3.10 ะธะปะธ ะฒั‹ัˆะต** โ€” [ะกะบะฐั‡ะฐั‚ัŒ](https://www.python.org/downloads/) | ะŸั€ะพะฒะตั€ะธั‚ัŒ: `python3 --version` +2. **Git** โ€” [ะกะบะฐั‡ะฐั‚ัŒ](https://git-scm.com/) | ะŸั€ะพะฒะตั€ะธั‚ัŒ: `git --version` +3. **15โ€“30 ะผะธะฝัƒั‚** ะดะปั ะฟะตั€ะฒะพะฝะฐั‡ะฐะปัŒะฝะพะน ะฝะฐัั‚ั€ะพะนะบะธ + +**ะ’ะฟะตั€ะฒั‹ะต?** โ†’ **[ะะฐั‡ะฝะธั‚ะต ะทะดะตััŒ: ะ‘ะตะทะพั‚ะบะฐะทะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ ะฑั‹ัั‚ั€ะพะณะพ ัั‚ะฐั€ั‚ะฐ](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค ะ—ะฐะณั€ัƒะทะบะฐ ะฝะฐะฒั‹ะบะพะฒ ะฒ Claude + +ะŸะพัะปะต ัƒะฟะฐะบะพะฒะบะธ ะฝะฐะฒั‹ะบะฐ ะตะณะพ ะฝะตะพะฑั…ะพะดะธะผะพ ะทะฐะณั€ัƒะทะธั‚ัŒ ะฒ Claude: + +### ะ’ะฐั€ะธะฐะฝั‚ 1: ะะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ะทะฐะณั€ัƒะทะบะฐ (ั‡ะตั€ะตะท API) + +```bash +# ะฃัั‚ะฐะฝะพะฒะบะฐ API Key (ะพะดะฝะพะบั€ะฐั‚ะฝะพ) +export ANTHROPIC_API_KEY=sk-ant-... + +# ะฃะฟะฐะบะพะฒะบะฐ ะธ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ะทะฐะณั€ัƒะทะบะฐ +skill-seekers package output/react/ --upload + +# ะ˜ะ›ะ˜ ะทะฐะณั€ัƒะทะบะฐ ััƒั‰ะตัั‚ะฒัƒัŽั‰ะตะณะพ .zip +skill-seekers upload output/react.zip +``` + +### ะ’ะฐั€ะธะฐะฝั‚ 2: ะ ัƒั‡ะฝะฐั ะทะฐะณั€ัƒะทะบะฐ (ะฑะตะท API Key) + +```bash +# ะฃะฟะฐะบะพะฒะบะฐ ะฝะฐะฒั‹ะบะฐ +skill-seekers package output/react/ +# โ†’ ะกะพะทะดะฐั‘ั‚ output/react.zip + +# ะ—ะฐั‚ะตะผ ะทะฐะณั€ัƒะทะธั‚ะต ะฒั€ัƒั‡ะฝัƒัŽ: +# - ะŸะตั€ะตะนะดะธั‚ะต ะฝะฐ https://claude.ai/skills +# - ะะฐะถะผะธั‚ะต ยซUpload Skillยป +# - ะ’ั‹ะฑะตั€ะธั‚ะต output/react.zip +``` + +### ะ’ะฐั€ะธะฐะฝั‚ 3: MCP (Claude Code) + +``` +ะ’ Claude Code ะฟั€ะพัั‚ะพ ะฟะพะฟั€ะพัะธั‚ะต: +"ะฃะฟะฐะบัƒะน ะธ ะทะฐะณั€ัƒะทะธ ะฝะฐะฒั‹ะบ React" +``` + +--- + +## ๐Ÿค– ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒ ะ˜ะ˜-ะฐะณะตะฝั‚ั‹ + +Skill Seekers ะผะพะถะตั‚ ะฐะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะธ ัƒัั‚ะฐะฝะฐะฒะปะธะฒะฐั‚ัŒ ะฝะฐะฒั‹ะบะธ ะฒ 19 ะ˜ะ˜-ะฐะณะตะฝั‚ะพะฒ ะดะปั ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั. + +```bash +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒ ะบะพะฝะบั€ะตั‚ะฝั‹ะน ะฐะณะตะฝั‚ +skill-seekers install-agent output/react/ --agent cursor + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒ IBM Bob (ะฟั€ะพะตะบั‚ะฝะฐั ะดะธั€ะตะบั‚ะพั€ะธั .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# ะฃัั‚ะฐะฝะพะฒะบะฐ ะฒะพ ะฒัะต ะฐะณะตะฝั‚ั‹ ัั€ะฐะทัƒ +skill-seekers install-agent output/react/ --agent all + +# ะŸั€ะตะดะฟั€ะพัะผะพั‚ั€ ะฑะตะท ัƒัั‚ะฐะฝะพะฒะบะธ +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### ะŸะพะดะดะตั€ะถะธะฒะฐะตะผั‹ะต ะฐะณะตะฝั‚ั‹ + +| ะะณะตะฝั‚ | ะŸัƒั‚ัŒ | ะขะธะฟ | +|-------|------|-----| +| **Claude Code** | `~/.claude/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Cursor** | `.cursor/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **VS Code / Copilot** | `.github/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **Amp** | `~/.amp/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Goose** | `~/.config/goose/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **OpenCode** | `~/.opencode/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Windsurf** | `~/.windsurf/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Roo Code** | `.roo/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **Cline** | `.cline/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **Aider** | `~/.aider/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Bolt** | `.bolt/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **Kilo Code** | `.kilo/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | +| **Continue** | `~/.continue/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **Kimi Code** | `~/.kimi/skills/` | ะ“ะปะพะฑะฐะปัŒะฝั‹ะน | +| **IBM Bob** | `.bob/skills/` | ะŸั€ะพะตะบั‚ะฝั‹ะน | + +--- + +## ๐Ÿ”Œ MCP-ะธะฝั‚ะตะณั€ะฐั†ะธั (40 ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ) + +Skill Seekers ะฟะพัั‚ะฐะฒะปัะตั‚ัั ั MCP-ัะตั€ะฒะตั€ะพะผ ะดะปั ะธัะฟะพะปัŒะทะพะฒะฐะฝะธั ะธะท Claude Code, Cursor, Windsurf, VS Code + Cline ะธะปะธ IntelliJ IDEA. + +```bash +# ะ ะตะถะธะผ stdio (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# ะ ะตะถะธะผ HTTP (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# ะะฒั‚ะพะผะฐั‚ะธั‡ะตัะบะฐั ะฝะฐัั‚ั€ะพะนะบะฐ ะฒัะตั… ะฐะณะตะฝั‚ะพะฒ ะทะฐ ั€ะฐะท +./setup_mcp.sh +``` + +**ะ’ัะต 40 ะธะฝัั‚ั€ัƒะผะตะฝั‚ะพะฒ:** +- **ะžัะฝะพะฒะฝั‹ะต (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **ะ ะฐััˆะธั€ะตะฝะฝั‹ะต (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **ะ’ะตะบั‚ะพั€ะฝั‹ะต ะ‘ะ” (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **ะžะฑะปะฐั‡ะฝั‹ะต (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ ะšะพะฝั„ะธะณัƒั€ะฐั†ะธั + +### ะ”ะพัั‚ัƒะฟะฝั‹ะต ะฟั€ะตัะตั‚ั‹ (24+) + +```bash +# ะกะฟะธัะพะบ ะฒัะตั… ะฟั€ะตัะตั‚ะพะฒ +# skill-seekers list-configs # ะะตะดะพัั‚ัƒะฟะฝะพ ะฒ v3.7.0 +``` + +| ะšะฐั‚ะตะณะพั€ะธั | ะŸั€ะตัะตั‚ั‹ | +|-----------|---------| +| **ะ’ะตะฑ-ั„ั€ะตะนะผะฒะพั€ะบะธ** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **ะ ะฐะทั€ะฐะฑะพั‚ะบะฐ ะธะณั€** | `godot`, `pygame`, `unity` | +| **ะ˜ะฝัั‚ั€ัƒะผะตะฝั‚ั‹ ะธ DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **ะฃะฝะธั„ะธั†ะธั€ะพะฒะฐะฝะฝั‹ะต (ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` ะธ ะดั€ัƒะณะธะต | + +### ะกะพะทะดะฐะฝะธะต ัะพะฑัั‚ะฒะตะฝะฝะพะน ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ + +```bash +# ะ’ะฐั€ะธะฐะฝั‚ 1: ะ˜ะฝั‚ะตั€ะฐะบั‚ะธะฒะฝั‹ะน +skill-seekers create --interactive + +# ะ’ะฐั€ะธะฐะฝั‚ 2: ะšะพะฟะธั€ะพะฒะฐะฝะธะต ะธ ั€ะตะดะฐะบั‚ะธั€ะพะฒะฐะฝะธะต ะฟั€ะตัะตั‚ะฐ +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### ะกั‚ั€ัƒะบั‚ัƒั€ะฐ ั„ะฐะนะปะฐ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ + +```json +{ + "name": "myframework", + "description": "ะšะพะณะดะฐ ะธัะฟะพะปัŒะทะพะฒะฐั‚ัŒ ัั‚ะพั‚ ะฝะฐะฒั‹ะบ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### ะ“ะดะต ั…ั€ะฐะฝะธั‚ัŒ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ + +ะ˜ะฝัั‚ั€ัƒะผะตะฝั‚ ะฒั‹ะฟะพะปะฝัะตั‚ ะฟะพะธัะบ ะฒ ัะปะตะดัƒัŽั‰ะตะผ ะฟะพั€ัะดะบะต: +1. ะขะพั‡ะฝั‹ะน ะฟัƒั‚ัŒ, ะบะฐะบ ัƒะบะฐะทะฐะฝ +2. `./configs/` (ั‚ะตะบัƒั‰ะฐั ะดะธั€ะตะบั‚ะพั€ะธั) +3. `~/.config/skill-seekers/configs/` (ะฟะพะปัŒะทะพะฒะฐั‚ะตะปัŒัะบะฐั ะดะธั€ะตะบั‚ะพั€ะธั ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ) +4. SkillSeekersWeb.com API (ะณะพั‚ะพะฒั‹ะต ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ) + +--- + +## ๐Ÿ“Š ะงั‚ะพ ัะพะทะดะฐั‘ั‚ัั + +``` +output/ +โ”œโ”€โ”€ godot_data/ # ะŸะพะปัƒั‡ะตะฝะฝั‹ะต ะฝะตะพะฑั€ะฐะฑะพั‚ะฐะฝะฝั‹ะต ะดะฐะฝะฝั‹ะต +โ”‚ โ”œโ”€โ”€ pages/ # JSON-ั„ะฐะนะปั‹ (ะฟะพ ะพะดะฝะพะผัƒ ะฝะฐ ัั‚ั€ะฐะฝะธั†ัƒ) +โ”‚ โ””โ”€โ”€ summary.json # ะžะฑะทะพั€ +โ”‚ +โ””โ”€โ”€ godot/ # ะะฐะฒั‹ะบ + โ”œโ”€โ”€ SKILL.md # ะฃะปัƒั‡ัˆะตะฝะฝั‹ะน ั ั€ะตะฐะปัŒะฝั‹ะผะธ ะฟั€ะธะผะตั€ะฐะผะธ + โ”œโ”€โ”€ references/ # ะšะฐั‚ะตะณะพั€ะธะทะธั€ะพะฒะฐะฝะฝะฐั ะดะพะบัƒะผะตะฝั‚ะฐั†ะธั + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # ะŸัƒัั‚ะพ (ะดะพะฑะฐะฒัŒั‚ะต ัะฒะพะธ ัะบั€ะธะฟั‚ั‹) + โ””โ”€โ”€ assets/ # ะŸัƒัั‚ะพ (ะดะพะฑะฐะฒัŒั‚ะต ัะฒะพะธ ั€ะตััƒั€ัั‹) +``` + +--- + +## ๐Ÿ› ะฃัั‚ั€ะฐะฝะตะฝะธะต ะฝะตะฟะพะปะฐะดะพะบ + +### ะšะพะฝั‚ะตะฝั‚ ะฝะต ะธะทะฒะปะตั‡ั‘ะฝ? +- ะŸั€ะพะฒะตั€ัŒั‚ะต ัะตะปะตะบั‚ะพั€ `main_content` +- ะŸะพะฟั€ะพะฑัƒะนั‚ะต: `article`, `main`, `div[role="main"]` + +### ะ”ะฐะฝะฝั‹ะต ะตัั‚ัŒ, ะฝะพ ะฝะต ะธัะฟะพะปัŒะทัƒัŽั‚ัั? +```bash +# ะŸั€ะธะฝัƒะดะธั‚ะตะปัŒะฝะพะต ะฟะพะฒั‚ะพั€ะฝะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ะšะฐั‚ะตะณะพั€ะธะทะฐั†ะธั ะฝะต ัƒัั‚ั€ะฐะธะฒะฐะตั‚? +ะžั‚ั€ะตะดะฐะบั‚ะธั€ัƒะนั‚ะต ั€ะฐะทะดะตะป `categories` ะฒ ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ, ะธัะฟะพะปัŒะทัƒั ะฑะพะปะตะต ะฟะพะดั…ะพะดัั‰ะธะต ะบะปัŽั‡ะตะฒั‹ะต ัะปะพะฒะฐ. + +### ะฅะพั‚ะธั‚ะต ะพะฑะฝะพะฒะธั‚ัŒ ะดะพะบัƒะผะตะฝั‚ะฐั†ะธัŽ? +```bash +# ะฃะดะฐะปะธั‚ะต ัั‚ะฐั€ั‹ะต ะดะฐะฝะฝั‹ะต ะธ ะฟั€ะพัะบะฐะฝะธั€ัƒะนั‚ะต ะทะฐะฝะพะฒะพ +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ะฃะปัƒั‡ัˆะตะฝะธะต ะฝะต ั€ะฐะฑะพั‚ะฐะตั‚? +```bash +# ะŸั€ะพะฒะตั€ัŒั‚ะต, ัƒัั‚ะฐะฝะพะฒะปะตะฝ ะปะธ API Key +echo $ANTHROPIC_API_KEY + +# ะŸะพะฟั€ะพะฑัƒะนั‚ะต LOCAL-ั€ะตะถะธะผ (ะธัะฟะพะปัŒะทัƒะตั‚ Claude Code Max, API Key ะฝะต ะฝัƒะถะตะฝ) +skill-seekers enhance output/react/ --mode LOCAL + +# ะœะพะฝะธั‚ะพั€ะธะฝะณ ัั‚ะฐั‚ัƒัะฐ ั„ะพะฝะพะฒะพะณะพ ัƒะปัƒั‡ัˆะตะฝะธั +skill-seekers enhance-status output/react/ --watch +``` + +### ะŸั€ะพะฑะปะตะผั‹ ั ะปะธะผะธั‚ะฐะผะธ GitHub? +```bash +# ะฃัั‚ะฐะฝะพะฒะธั‚ะต GitHub Token (5000 ะทะฐะฟั€ะพัะพะฒ/ั‡ะฐั ะฒะผะตัั‚ะพ 60/ั‡ะฐั ะฐะฝะพะฝะธะผะฝะพ) +export GITHUB_TOKEN=ghp_your_token_here + +# ะ˜ะปะธ ะฝะฐัั‚ั€ะพะนั‚ะต ะฝะตัะบะพะปัŒะบะพ ะฟั€ะพั„ะธะปะตะน +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ ะŸั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ + +| ะ—ะฐะดะฐั‡ะฐ | ะ’ั€ะตะผั | ะŸั€ะธะผะตั‡ะฐะฝะธั | +|--------|-------|-----------| +| ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต (ัะธะฝั…ั€.) | 15โ€“45 ะผะธะฝ | ะขะพะปัŒะบะพ ะฟะตั€ะฒั‹ะน ั€ะฐะท, ะฝะฐ ะพัะฝะพะฒะต ะฟะพั‚ะพะบะพะฒ | +| ะกะบะฐะฝะธั€ะพะฒะฐะฝะธะต (ะฐัะธะฝั…ั€.) | 5โ€“15 ะผะธะฝ | ะ’ 2โ€“3 ั€ะฐะทะฐ ะฑั‹ัั‚ั€ะตะต ั ั„ะปะฐะณะพะผ `--async` | +| ะกะฑะพั€ะบะฐ | 1โ€“3 ะผะธะฝ | ะ‘ั‹ัั‚ั€ะฐั ะฟะตั€ะตัะฑะพั€ะบะฐ ะธะท ะบััˆะฐ | +| ะŸะตั€ะตัะฑะพั€ะบะฐ | <1 ะผะธะฝ | ะก `--skip-scrape` | +| ะฃะปัƒั‡ัˆะตะฝะธะต (LOCAL) | 30โ€“60 ัะตะบ | ะ˜ัะฟะพะปัŒะทัƒะตั‚ Claude Code Max | +| ะฃะปัƒั‡ัˆะตะฝะธะต (API) | 20โ€“40 ัะตะบ | ะขั€ะตะฑัƒะตั‚ัั API Key | +| ะ’ะธะดะตะพ (ััƒะฑั‚ะธั‚ั€ั‹) | 1โ€“3 ะผะธะฝ | YouTube/ะปะพะบะฐะปัŒะฝะพะต, ั‚ะพะปัŒะบะพ ััƒะฑั‚ะธั‚ั€ั‹ | +| ะ’ะธะดะตะพ (ะฒะธะทัƒะฐะปัŒะฝะพะต) | 5โ€“15 ะผะธะฝ | + OCR-ะธะทะฒะปะตั‡ะตะฝะธะต ะบะฐะดั€ะพะฒ | +| ะฃะฟะฐะบะพะฒะบะฐ | 5โ€“10 ัะตะบ | ะกะพะทะดะฐะฝะธะต ะธั‚ะพะณะพะฒะพะณะพ .zip | + +--- + +## ๐Ÿ†• ะะพะฒะพะต ะฒ v3.6.0 + +### ะŸั€ะตะดัƒัั‚ะฐะฝะพะฒะบะธ ั€ะฐะฑะพั‡ะธั… ะฟั€ะพั†ะตััะพะฒ +ะฃะฟั€ะฐะฒะปัะนั‚ะต ะณะปัƒะฑะธะฝะพะน ะฐะฝะฐะปะธะทะฐ ั ะฟะพะผะพั‰ัŒัŽ `--preset`: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # ะ‘ั‹ัั‚ั€ั‹ะน, ะฟะพะฒะตั€ั…ะฝะพัั‚ะฝั‹ะน +skill-seekers create https://docs.react.dev/ --preset standard # ะกะฑะฐะปะฐะฝัะธั€ะพะฒะฐะฝะฝั‹ะน (ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ) +skill-seekers create https://docs.react.dev/ --preset comprehensive # ะ“ะปัƒะฑะพะบะธะน, ะธัั‡ะตั€ะฟั‹ะฒะฐัŽั‰ะธะน +``` + +### ะคะปะฐะณะธ ะถะธะทะฝะตะฝะฝะพะณะพ ั†ะธะบะปะฐ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # ะŸั€ะตะดะฟั€ะพัะผะพั‚ั€ ะฑะตะท ัะบะฐะฝะธั€ะพะฒะฐะฝะธั +skill-seekers create https://docs.react.dev/ --fresh # ะ˜ะณะฝะพั€ะธั€ะพะฒะฐั‚ัŒ ะบััˆ, ะฟะพะปะฝะพะต ะฟะตั€ะตัะบะฐะฝะธั€ะพะฒะฐะฝะธะต +skill-seekers create https://docs.react.dev/ --resume # ะ’ะพะทะพะฑะฝะพะฒะธั‚ัŒ ะฟั€ะตั€ะฒะฐะฝะฝัƒัŽ ะทะฐะดะฐั‡ัƒ +skill-seekers create https://docs.react.dev/ --skip-scrape # ะŸะตั€ะตัƒะฟะฐะบะพะฒะฐั‚ัŒ ััƒั‰ะตัั‚ะฒัƒัŽั‰ะธะน ั€ะตะทัƒะปัŒั‚ะฐั‚ +``` + +### ะŸั€ะพะฒะตั€ะบะฐ ะทะดะพั€ะพะฒัŒั ะธ ัƒั‚ะธะปะธั‚ั‹ +```bash +skill-seekers doctor # ะ”ะธะฐะณะฝะพัั‚ะธะบะฐ ัƒัั‚ะฐะฝะพะฒะบะธ ะธ ะพะบั€ัƒะถะตะฝะธั +skill-seekers sync-config # ะžะฑะฝะฐั€ัƒะถะตะฝะธะต ะพั‚ะบะปะพะฝะตะฝะธะน ะบะพะฝั„ะธะณัƒั€ะฐั†ะธะธ +skill-seekers stream # ะŸะพั‚ะพะบะพะฒะพะต ะฟะพะณะปะพั‰ะตะฝะธะต ะดะปั ะฑะพะปัŒัˆะธั… ะดะพะบัƒะผะตะฝั‚ะพะฒ +skill-seekers update output/react/ # ะ˜ะฝะบั€ะตะผะตะฝั‚ะฐะปัŒะฝะพะต ะพะฑะฝะพะฒะปะตะฝะธะต +skill-seekers multilang # ะ“ะตะฝะตั€ะฐั†ะธั ะฝะฐะฒั‹ะบะพะฒ ะฝะฐ ะฝะตัะบะพะปัŒะบะธั… ัะทั‹ะบะฐั… +skill-seekers quality output/react/ # ะžั‚ั‡ั‘ั‚ ะพ ะบะฐั‡ะตัั‚ะฒะต (ะดะพะฑะฐะฒัŒั‚ะต --threshold 7 ะดะปั ะบะพะฝั‚ั€ะพะปั: ะฝะตะฝัƒะปะตะฒะพะน ะบะพะด ะฒั‹ั…ะพะดะฐ ะฝะธะถะต 7/10) +``` + +### ะžะฟั†ะธะธ RAG-ั„ั€ะฐะณะผะตะฝั‚ะฐั†ะธะธ (ัƒะฟะฐะบะพะฒะบะฐ) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### ะŸัƒะฑะปะธะบะฐั†ะธั ะฒ ะผะฐั€ะบะตั‚ะฟะปะตะนัะต +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### ะ”ะพะฟะพะปะฝะธั‚ะตะปัŒะฝั‹ะต ะพะฟั†ะธะพะฝะฐะปัŒะฝั‹ะต ะทะฐะฒะธัะธะผะพัั‚ะธ +| ะ”ะพะฟะพะปะฝะตะฝะธะต | ะฃัั‚ะฐะฝะพะฒะบะฐ | ะะฐะทะฝะฐั‡ะตะฝะธะต | +|------------|-----------|------------| +| `browser` | `pip install "skill-seekers[browser]"` | ะ‘ะตะทะณะพะปะพะฒั‹ะน Playwright ะดะปั SPA-ัะฐะนั‚ะพะฒ | +| `embedding` | `pip install "skill-seekers[embedding]"` | ะŸะพะดะดะตั€ะถะบะฐ ัะตั€ะฒะตั€ะฐ ัะผะฑะตะดะดะธะฝะณะพะฒ | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` ะธ ั‚. ะด. | ะ—ะฐะณั€ัƒะทะบะฐ ะฒ ะพะฑะปะฐั‡ะฝะพะต ั…ั€ะฐะฝะธะปะธั‰ะต | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | ะšะพะผะฑะธะฝะธั€ะพะฒะฐะฝะฝั‹ะต ะทะฐะฒะธัะธะผะพัั‚ะธ ะทะฐะณั€ัƒะทะบะธ ะฒ ะฒะตะบั‚ะพั€ะฝั‹ะต ะ‘ะ” | + +--- + +## ๐Ÿ“š ะ”ะพะบัƒะผะตะฝั‚ะฐั†ะธั + +### ะะฐั‡ะฐะปะพ ั€ะฐะฑะพั‚ั‹ +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** โ€” ๐ŸŽฏ **ะะะงะะ˜ะขะ• ะ—ะ”ะ•ะกะฌ**, ะตัะปะธ ะฒั‹ ะฝะพะฒะธั‡ะพะบ! +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** โ€” ะ‘ั‹ัั‚ั€ั‹ะน ัั‚ะฐั€ั‚ ะดะปั ะพะฟั‹ั‚ะฝั‹ั… ะฟะพะปัŒะทะพะฒะฐั‚ะตะปะตะน +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** โ€” ะ ะฐัะฟั€ะพัั‚ั€ะฐะฝั‘ะฝะฝั‹ะต ะฟั€ะพะฑะปะตะผั‹ ะธ ั€ะตัˆะตะฝะธั +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** โ€” ะšั€ะฐั‚ะบะฐั ัะฟั€ะฐะฒะบะฐ ะฝะฐ ะพะดะฝัƒ ัั‚ั€ะฐะฝะธั†ัƒ + +### ะั€ั…ะธั‚ะตะบั‚ัƒั€ะฐ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** โ€” ะžะฑะทะพั€ UML-ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹ ั 14 ะดะธะฐะณั€ะฐะผะผะฐะผะธ +- **[docs/UML/exports/](docs/UML/exports/)** โ€” ะญะบัะฟะพั€ั‚ ะดะธะฐะณั€ะฐะผะผ ะฒ PNG (ะพะฑะทะพั€ ะฟะฐะบะตั‚ะพะฒ + 13 ะดะธะฐะณั€ะฐะผะผ ะบะปะฐััะพะฒ) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** โ€” ะŸะพะปะฝะฐั HTML-ัะฟั€ะฐะฒะบะฐ ะฟะพ API (ะฒัะต ะบะปะฐััั‹, ะพะฟะตั€ะฐั†ะธะธ, ะฐั‚ั€ะธะฑัƒั‚ั‹) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** โ€” ะคะฐะนะป ะฟั€ะพะตะบั‚ะฐ StarUML (ะพั‚ะบั€ะพะนั‚ะต ะฒ [StarUML](https://staruml.io/)) + +### ะ ัƒะบะพะฒะพะดัั‚ะฒะฐ +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** โ€” ะ ะฐะฑะพั‚ะฐ ั ะดะพะบัƒะผะตะฝั‚ะฐะผะธ ะฝะฐ 10Kโ€“40K+ ัั‚ั€ะฐะฝะธั† +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** โ€” ะ ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ ั€ะตะถะธะผะฐะผ ะ˜ะ˜-ัƒะปัƒั‡ัˆะตะฝะธั +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** โ€” ะะฐัั‚ั€ะพะนะบะฐ MCP-ะธะฝั‚ะตะณั€ะฐั†ะธะธ +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** โ€” ะœัƒะปัŒั‚ะธะธัั‚ะพั‡ะฝะธะบะพะฒะพะต ัะบะฐะฝะธั€ะพะฒะฐะฝะธะต +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** โ€” ะŸะพะปะฝะพะต ั€ัƒะบะพะฒะพะดัั‚ะฒะพ ะฟะพ ะธะทะฒะปะตั‡ะตะฝะธัŽ ะธะท ะฒะธะดะตะพ + +### ะ ัƒะบะพะฒะพะดัั‚ะฒะฐ ะฟะพ ะธะฝั‚ะตะณั€ะฐั†ะธะธ +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** โ€” LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** โ€” Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** โ€” Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** โ€” Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** โ€” ะ’ัะต RAG-ะบะพะฝะฒะตะนะตั€ั‹ + +--- + +## ๐Ÿ“ ะ›ะธั†ะตะฝะทะธั + +ะ›ะธั†ะตะฝะทะธั MIT โ€” ะฟะพะดั€ะพะฑะฝะพัั‚ะธ ะฒ ั„ะฐะนะปะต [LICENSE](LICENSE) + +--- + +ะฃะดะฐั‡ะฝะพะณะพ ัะพะทะดะฐะฝะธั ะฝะฐะฒั‹ะบะพะฒ! ๐Ÿš€ + +--- + +## ๐Ÿ”’ ะ‘ะตะทะพะฟะฐัะฝะพัั‚ัŒ + +[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› ะกะฟะพะฝัะพั€ั‹ + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” ะฟะพะปะฝะพะผะพะดะฐะปัŒะฝะฐั, OpenAI-ัะพะฒะผะตัั‚ะธะผะฐั ะฟะปะฐั‚ั„ะพั€ะผะฐ ะ˜ะ˜-ะธะฝั„ะตั€ะตะฝัะฐ. Skill Seekers ะฟะพะดะดะตั€ะถะธะฒะฐะตั‚ ะตั‘ ะบะฐะบ ั†ะตะปัŒ ัƒะฟะฐะบะพะฒะบะธ/ัƒะปัƒั‡ัˆะตะฝะธั ั‡ะตั€ะตะท `--target atlas` ั `ATLAS_API_KEY`. diff --git a/README.tr.md b/README.tr.md new file mode 100644 index 0000000..161bb6b --- /dev/null +++ b/README.tr.md @@ -0,0 +1,1381 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | [็ฎ€ไฝ“ไธญๆ–‡](README.zh-CN.md) | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | Tรผrkรงe | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **Makine รงevirisi bildirimi** +> +> Bu belge yapay zeka tarafฤฑndan otomatik olarak รงevrilmiลŸtir. Kaliteyi saฤŸlamak iรงin รงaba gรถstermemize raฤŸmen, hatalฤฑ ifadeler bulunabilir. +> +> ร‡eviriyi iyileลŸtirmemize yardฤฑmcฤฑ olmak iรงin [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) รผzerinden geri bildirimlerinizi paylaลŸabilirsiniz! + +[![Sรผrรผm](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![Lisans: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP Entegrasyonu](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![Test Geรงti](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![Proje Panosu](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI Sรผrรผmรผ](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ฤฐndirmeler](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python Sรผrรผmรผ](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![Web Sitesi](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![Twitter Takip](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Yฤฑldฤฑzlarฤฑ](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  Yapay zeka sistemleri iรงin veri katmanฤฑ.** Skill Seekers; dokรผmantasyon sitelerini, GitHub depolarฤฑnฤฑ, PDF'leri, videolarฤฑ, Jupyter not defterlerini, vikileri ve 10'dan fazla diฤŸer kaynak tรผrรผnรผ yapฤฑlandฤฑrฤฑlmฤฑลŸ bilgi varlฤฑklarฤฑna dรถnรผลŸtรผrรผr โ€” AI Yetenekleri (Claude, Gemini, OpenAI), RAG hatlarฤฑ (LangChain, LlamaIndex, Pinecone) ve AI kodlama asistanlarฤฑ (Cursor, Windsurf, Cline) iรงin saatler deฤŸil dakikalar iรงinde hazฤฑr hale getirir. + +> ๐ŸŒ **[SkillSeekersWeb.com'u Ziyaret Edin](https://skillseekersweb.com/)** - 24'ten fazla hazฤฑr yapฤฑlandฤฑrmayฤฑ inceleyin, kendi yapฤฑlandฤฑrmalarฤฑnฤฑzฤฑ paylaลŸฤฑn ve tam dokรผmantasyona eriลŸin! + +> ๐Ÿ“‹ **[GeliลŸtirme Yol Haritasฤฑ ve Gรถrevleri Gรถrรผntรผleyin](https://github.com/users/yusufkaraaslan/projects/2)** - 10 kategoride 134 gรถrev, istediฤŸinizi seรงip katkฤฑda bulunun! + +## ๐ŸŒ Ekosistem + +Skill Seekers รงoklu depo projesidฤฑr. Her ลŸeyin bulunduฤŸu yerler: + +| Depo | Aรงฤฑklama | BaฤŸlantฤฑlar | +|------|----------|-------------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | Ana CLI ve MCP sunucusu (bu depo) | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | Web sitesi ve belgeler | [Site](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | Topluluk yapฤฑlandฤฑrma deposu | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code eklentisi | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | macOS iรงin Homebrew tap | | + +> **Katkฤฑda bulunmak ister misiniz?** Web sitesi ve yapฤฑlandฤฑrma depolarฤฑ yeni katkฤฑda bulunanlar iรงin harika baลŸlangฤฑรง noktalarฤฑdฤฑr! + +## ๐Ÿง  Yapay Zeka Sistemleri ฤฐรงin Veri Katmanฤฑ + +**Skill Seekers, evrensel bir รถn iลŸleme katmanฤฑdฤฑr** ve ham dokรผmantasyon ile onu tรผketen tรผm yapay zeka sistemleri arasฤฑnda yer alฤฑr. ฤฐster Claude yetenekleri, ister LangChain RAG hattฤฑ, ister Cursor `.cursorrules` dosyasฤฑ oluลŸturuyor olun โ€” veri hazฤฑrlฤฑk sรผreci aynฤฑdฤฑr. Bir kez yaparsฤฑnฤฑz, tรผm hedef platformlara dฤฑลŸa aktarฤฑrsฤฑnฤฑz. + +```bash +# Tek komut โ†’ yapฤฑlandฤฑrฤฑlmฤฑลŸ bilgi varlฤฑฤŸฤฑ +skill-seekers create https://docs.react.dev/ +# veya: skill-seekers create facebook/react +# veya: skill-seekers create ./my-project + +# Herhangi bir AI sistemine dฤฑลŸa aktar +skill-seekers package output/react --target claude # โ†’ Claude AI YeteneฤŸi (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob yetenek dizini +``` + +### OluลŸturulan ร‡ฤฑktฤฑlar + +| ร‡ฤฑktฤฑ | Hedef | Kullanฤฑm Alanฤฑ | +|-------|-------|---------------| +| **Claude YeteneฤŸi** (ZIP + YAML) | `--target claude` | Claude Code, Claude API | +| **Gemini YeteneฤŸi** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4o, รถzel asistanlar | +| **LangChain Documents** | `--target langchain` | QA zincirleri, ajanlar, alฤฑcฤฑlar | +| **LlamaIndex TextNodes** | `--target llama-index` | Sorgu motorlarฤฑ, sohbet motorlarฤฑ | +| **Haystack Documents** | `--target haystack` | Kurumsal RAG hatlarฤฑ | +| **Pinecone-hazฤฑr** (Markdown) | `--target markdown` | Vektรถr yรผkleme | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | Yerel vektรถr veritabanlarฤฑ | +| **IBM Bob YeteneฤŸi** (dizin) | `--target ibm-bob` | IBM Bob proje/global yetenekleri | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ SKILL.md'yi kopyala | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ kopyala | VS Code, IntelliJ, Vim | + +### Neden ร–nemli + +- โšก **%99 daha hฤฑzlฤฑ** โ€” Gรผnlerce sรผren manuel veri hazฤฑrlฤฑฤŸฤฑ โ†’ 15โ€“45 dakika +- ๐ŸŽฏ **AI Yetenek kalitesi** โ€” ร–rnekler, desenler ve kฤฑlavuzlar iรงeren 500+ satฤฑrlฤฑk SKILL.md dosyalarฤฑ +- ๐Ÿ“Š **RAG-hazฤฑr parรงalar** โ€” Kod bloklarฤฑnฤฑ koruyan ve baฤŸlamฤฑ sรผrdรผren akฤฑllฤฑ parรงalama +- ๐ŸŽฌ **Videolar** โ€” YouTube ve yerel videolardan kod, altyazฤฑ ve yapฤฑlandฤฑrฤฑlmฤฑลŸ bilgi รงฤฑkarma +- ๐Ÿ”„ **ร‡oklu kaynak** โ€” 18 kaynak tรผrรผnรผ (dokรผmantasyon, GitHub, PDF, video, not defterleri, vikiler ve daha fazlasฤฑ) tek bir bilgi varlฤฑฤŸฤฑnda birleลŸtirme +- ๐ŸŒ **Bir hazฤฑrlฤฑk, her hedef** โ€” Yeniden tarama yapmadan aynฤฑ varlฤฑฤŸฤฑ 21 platforma dฤฑลŸa aktarma +- โœ… **SavaลŸta test edilmiลŸ** โ€” 3.700+ test, 24+ รงerรงeve รถn ayarฤฑ, รผretime hazฤฑr + +## ๐Ÿš€ Hฤฑzlฤฑ BaลŸlangฤฑรง (3 Komut) + +```bash +# 1. Kurulum +pip install skill-seekers + +# 2. Herhangi bir kaynaktan yetenek oluลŸtur +skill-seekers create https://docs.django.com/ + +# 3. AI platformunuz iรงin paketle +skill-seekers package output/django --target claude +``` + +**ฤฐลŸte bu kadar!** Artฤฑk kullanฤฑma hazฤฑr `output/django-claude.zip` dosyanฤฑz var. + +```bash +# ZenginleลŸtirme iรงin farklฤฑ bir AI ajanฤฑ kullan (varsayฤฑlan: claude) +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI destekli proje taramasฤฑ (yeni) + +`scan` komutunu herhangi bir projeye yรถneltin; bir AI ajanฤฑ projenin manifest +dosyalarฤฑnฤฑ, README'sini, Dockerfile/CI dosyalarฤฑnฤฑ ve รถrneklenmiลŸ kaynak iรงe +aktarฤฑmlarฤฑnฤฑ okur โ€” ardฤฑndan algฤฑlanan her รงerรงeve iรงin bir yapฤฑlandฤฑrma ve +kendi kodunuz iรงin bir `-codebase.json` รผretir. Algฤฑlanan sรผrรผmรผ +sabitler, bรถylece yeniden รงalฤฑลŸtฤฑrmalar sรผrรผm artฤฑลŸlarฤฑnฤฑ raporlar: + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# Ardฤฑndan istediฤŸinizi oluลŸturun +skill-seekers create ./configs/scanned/react.json +``` + +Bir algฤฑlamanฤฑn mevcut รถn ayarฤฑ yoksa AI sฤฑfฤฑrdan bir yapฤฑlandฤฑrma รผretir; +รงฤฑkฤฑลŸta bunu isteฤŸe baฤŸlฤฑ olarak [topluluk kayฤฑt deposuna](https://github.com/yusufkaraaslan/skill-seekers-configs) geri yayฤฑnlayabilirsiniz. + +### DiฤŸer Kaynaklar (18 Desteklenen) + +```bash +# GitHub deposu +skill-seekers create facebook/react + +# Yerel proje +skill-seekers create ./my-project + +# PDF belgesi +skill-seekers create manual.pdf + +# Word belgesi +skill-seekers create report.docx + +# EPUB e-kitap +skill-seekers create book.epub + +# Jupyter Not Defteri +skill-seekers create notebook.ipynb + +# OpenAPI spec +skill-seekers create openapi.yaml + +# PowerPoint sunumu +skill-seekers create presentation.pptx + +# AsciiDoc belgesi +skill-seekers create guide.adoc + +# Yerel HTML dosyasฤฑ (uzantฤฑdan otomatik algฤฑlanฤฑr) +skill-seekers create page.html + +# HTML dosyalarฤฑndan oluลŸan bรผtรผn bir dizin (HTML aฤŸฤฑrlฤฑklฤฑ dizinler iรงin otomatik algฤฑlanฤฑr) +skill-seekers create ./mirror_output/site/ + +# KarฤฑลŸฤฑk/kod aฤŸฤฑrlฤฑklฤฑ bir dizinde HTML modunu zorla +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom beslemesi +skill-seekers create feed.rss + +# Man sayfasฤฑ +skill-seekers create curl.1 + +# Video (YouTube, Vimeo veya yerel dosya โ€” skill-seekers[video] gerektirir) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ฤฐlk kez mi? GPU destekli gรถrsel baฤŸฤฑmlฤฑlฤฑklarฤฑ otomatik kur: +skill-seekers create --setup + +# Confluence vikisi +skill-seekers create --space-key TEAM --name wiki + +# Notion sayfalarฤฑ +skill-seekers create --database-id ... --name docs + +# Slack/Discord sohbet dฤฑลŸa aktarฤฑmฤฑ +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### Her Yere DฤฑลŸa Aktar + +```bash +# Birden fazla platform iรงin paketle +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## Skill Seekers Nedir? + +Skill Seekers, **yapay zeka sistemleri iรงin veri katmanฤฑdฤฑr**. 18 kaynak tรผrรผnรผ โ€” dokรผmantasyon siteleri, GitHub depolarฤฑ, PDF'ler, videolar, Jupyter Not Defterleri, Word/EPUB/AsciiDoc belgeleri, OpenAPI spesifikasyonlarฤฑ, PowerPoint sunumlarฤฑ, RSS beslemeleri, man sayfalarฤฑ, Confluence vikileri, Notion sayfalarฤฑ, Slack/Discord dฤฑลŸa aktarฤฑmlarฤฑ ve daha fazlasฤฑnฤฑ โ€” her AI hedefi iรงin yapฤฑlandฤฑrฤฑlmฤฑลŸ bilgi varlฤฑklarฤฑna dรถnรผลŸtรผrรผr: + +| Kullanฤฑm Alanฤฑ | Elde EttiฤŸiniz | ร–rnekler | +|----------------|---------------|----------| +| **AI Yetenekleri** | Kapsamlฤฑ SKILL.md + referanslar | Claude Code, Gemini, GPT | +| **RAG Hatlarฤฑ** | Zengin meta verili parรงalanmฤฑลŸ belgeler | LangChain, LlamaIndex, Haystack | +| **Vektรถr Veritabanlarฤฑ** | Yรผklemeye hazฤฑr รถnceden biรงimlendirilmiลŸ veri | Pinecone, Chroma, Weaviate, FAISS | +| **AI Kodlama Asistanlarฤฑ** | IDE yapay zekasฤฑnฤฑn otomatik okuduฤŸu baฤŸlam dosyalarฤฑ | Cursor, Windsurf, Cline, Continue.dev | + +Skill Seekers, gรผnlerce sรผren manuel รถn iลŸleme รงalฤฑลŸmasฤฑ yerine ลŸunlarฤฑ yapar: + +1. **Toplama** โ€” Dokรผmantasyon, GitHub depolarฤฑ, yerel kod tabanlarฤฑ, PDF'ler, videolar, Jupyter not defterleri, vikiler ve 10'dan fazla diฤŸer kaynak tรผrรผ +2. **Analiz** โ€” Derin AST ayrฤฑลŸtฤฑrma, desen tespiti, API รงฤฑkarma +3. **Yapฤฑlandฤฑrma** โ€” Meta verili kategorize edilmiลŸ referans dosyalarฤฑ +4. **ZenginleลŸtirme** โ€” AI destekli SKILL.md oluลŸturma (Claude, Gemini veya yerel) +5. **DฤฑลŸa Aktarma** โ€” Tek bir varlฤฑktan 16 platforma รถzel format + +## ๐Ÿ“š Dokรผmantasyon + +| Yapmak istediฤŸim... | Bunu oku | +|---------------------|----------| +| **Hฤฑzlฤฑca baลŸlamak** | [Hฤฑzlฤฑ BaลŸlangฤฑรง](docs/getting-started/02-quick-start.md) - ฤฐlk yetenek iรงin 3 komut | +| **Kavramlarฤฑ anlamak** | [Temel Kavramlar](docs/user-guide/01-core-concepts.md) - Nasฤฑl รงalฤฑลŸฤฑr | +| **Kaynak taramak** | [Tarama Kฤฑlavuzu](docs/user-guide/02-scraping.md) - Tรผm kaynak tรผrleri | +| **Yetenekleri geliลŸtirmek** | [ZenginleลŸtirme Kฤฑlavuzu](docs/user-guide/03-enhancement.md) - AI zenginleลŸtirme | +| **Yetenekleri dฤฑลŸa aktarmak** | [Paketleme Kฤฑlavuzu](docs/user-guide/04-packaging.md) - Platform dฤฑลŸa aktarฤฑmฤฑ | +| **Komutlarฤฑ aramak** | [CLI Referansฤฑ](docs/reference/CLI_REFERENCE.md) - Tรผm 20 komut | +| **Yapฤฑlandฤฑrma yapmak** | [Yapฤฑlandฤฑrma Formatฤฑ](docs/reference/CONFIG_FORMAT.md) - JSON spesifikasyonu | +| **Sorunlarฤฑ รงรถzmek** | [Sorun Giderme](docs/user-guide/06-troubleshooting.md) - Yaygฤฑn sorunlar | + +**Tam dokรผmantasyon:** [docs/README.md](docs/README.md) + +## Neden Kullanmalฤฑsฤฑnฤฑz? + +### AI Yetenek OluลŸturucularฤฑ ฤฐรงin (Claude, Gemini, OpenAI) + +- ๐ŸŽฏ **รœretime hazฤฑr yetenekler** โ€” Kod รถrnekleri, desenler ve kฤฑlavuzlar iรงeren 500+ satฤฑrlฤฑk SKILL.md dosyalarฤฑ +- ๐Ÿ”„ **ZenginleลŸtirme iลŸ akฤฑลŸlarฤฑ** โ€” `security-focus`, `architecture-comprehensive` veya รถzel YAML รถn ayarlarฤฑ uygulayฤฑn +- ๐ŸŽฎ **Her alan** โ€” Oyun motorlarฤฑ (Godot, Unity), รงerรงeveler (React, Django), dahili araรงlar +- ๐Ÿ”ง **Ekipler** โ€” Dahili dokรผmantasyon + kodu tek bir doฤŸruluk kaynaฤŸฤฑnda birleลŸtirin +- ๐Ÿ“š **Kalite** โ€” ร–rnekler, hฤฑzlฤฑ referans ve navigasyon kฤฑlavuzu ile AI zenginleลŸtirilmiลŸ + +### RAG GeliลŸtiricileri ve AI Mรผhendisleri ฤฐรงin + +- ๐Ÿค– **RAG-hazฤฑr veri** โ€” ร–nceden parรงalanmฤฑลŸ LangChain `Documents`, LlamaIndex `TextNodes`, Haystack `Documents` +- ๐Ÿš€ **%99 daha hฤฑzlฤฑ** โ€” Gรผnlerce sรผren รถn iลŸleme โ†’ 15โ€“45 dakika +- ๐Ÿ“Š **Akฤฑllฤฑ meta veri** โ€” Kategoriler, kaynaklar, tรผrler โ†’ daha iyi alma doฤŸruluฤŸu +- ๐Ÿ”„ **ร‡oklu kaynak** โ€” Tek bir hatta dokรผmantasyon + GitHub + PDF + video birleลŸtirme +- ๐ŸŒ **Platform baฤŸฤฑmsฤฑz** โ€” Yeniden tarama yapmadan herhangi bir vektรถr veritabanฤฑna veya รงerรงeveye dฤฑลŸa aktarma + +### AI Kodlama Asistanฤฑ Kullanฤฑcฤฑlarฤฑ ฤฐรงin + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” Otomatik `.cursorrules` / `.windsurfrules` / `.clinerules` oluลŸturma +- ๐ŸŽฏ **Kalฤฑcฤฑ baฤŸlam** โ€” Tekrarlanan yรถnlendirme olmadan AI รงerรงevelerinizi "bilir" +- ๐Ÿ“š **Her zaman gรผncel** โ€” Dokรผmantasyon deฤŸiลŸtiฤŸinde baฤŸlamฤฑ dakikalar iรงinde gรผncelleyin + +## Temel ร–zellikler + +### ๐ŸŒ Dokรผmantasyon Tarama +- โœ… **Akฤฑllฤฑ SPA KeลŸfi** - JavaScript SPA siteleri iรงin รผรง katmanlฤฑ keลŸif (sitemap.xml โ†’ llms.txt โ†’ baลŸsฤฑz tarayฤฑcฤฑ ile iลŸleme) +- โœ… **llms.txt DesteฤŸi** - LLM-hazฤฑr dokรผmantasyon dosyalarฤฑnฤฑ otomatik algฤฑlar ve kullanฤฑr (10 kat daha hฤฑzlฤฑ) +- โœ… **Evrensel Tarayฤฑcฤฑ** - HERHANGฤฐ bir dokรผmantasyon sitesiyle รงalฤฑลŸฤฑr +- โœ… **Akฤฑllฤฑ Kategorileme** - ฤฐรงeriฤŸi konuya gรถre otomatik dรผzenler +- โœ… **Kod Dili Algฤฑlama** - Python, JavaScript, C++, GDScript vb. tanฤฑr +- โœ… **24+ Hazฤฑr ร–n Ayar** - Godot, React, Vue, Django, FastAPI ve daha fazlasฤฑ + +### ๐Ÿ“„ PDF DesteฤŸi +- โœ… **Temel PDF ร‡ฤฑkarma** - PDF dosyalarฤฑndan metin, kod ve resim รงฤฑkarma +- โœ… **TaranmฤฑลŸ PDF'ler ฤฐรงin OCR** - TaranmฤฑลŸ belgelerden metin รงฤฑkarma +- โœ… **Parola Korumalฤฑ PDF'ler** - ลžifrelenmiลŸ PDF'leri iลŸleme +- โœ… **Tablo ร‡ฤฑkarma** - PDF'lerden karmaลŸฤฑk tablolarฤฑ รงฤฑkarma +- โœ… **Paralel ฤฐลŸleme** - Bรผyรผk PDF'ler iรงin 3 kat daha hฤฑzlฤฑ +- โœ… **Akฤฑllฤฑ ร–nbellekleme** - Tekrar รงalฤฑลŸtฤฑrmalarda %50 daha hฤฑzlฤฑ + +### ๐ŸŽฌ Video ร‡ฤฑkarma +- โœ… **YouTube ve Yerel Videolar** - Videolardan altyazฤฑ, kod ve yapฤฑlandฤฑrฤฑlmฤฑลŸ bilgi รงฤฑkarma +- โœ… **Gรถrsel Kare Analizi** - Kod editรถrleri, terminaller, slaytlar ve diyagramlardan OCR รงฤฑkarma +- โœ… **GPU Otomatik Algฤฑlama** - DoฤŸru PyTorch derlemesini otomatik yรผkleme (CUDA/ROCm/MPS/CPU) +- โœ… **AI ZenginleลŸtirme** - ฤฐki aลŸamalฤฑ: OCR yapฤฑtlarฤฑnฤฑ temizleme + gรถsteriลŸli SKILL.md oluลŸturma +- โœ… **Zaman Kฤฑrpma** - `--start-time` ve `--end-time` ile belirli bรถlรผmleri รงฤฑkarma +- โœ… **Oynatma Listesi DesteฤŸi** - YouTube oynatma listesindeki tรผm videolarฤฑ toplu iลŸleme +- โœ… **Vision API Yedekleme** - DรผลŸรผk gรผvenilirlikli OCR kareleri iรงin Claude Vision kullanma + +### ๐Ÿ™ GitHub Deposu Analizi +- โœ… **Derin Kod Analizi** - Python, JavaScript, TypeScript, Java, C++, Go iรงin AST ayrฤฑลŸtฤฑrma +- โœ… **API ร‡ฤฑkarma** - Parametreler ve tรผrlerle fonksiyonlar, sฤฑnฤฑflar, yรถntemler +- โœ… **Depo Meta Verileri** - README, dosya aฤŸacฤฑ, dil daฤŸฤฑlฤฑmฤฑ, yฤฑldฤฑz/รงatal sayฤฑlarฤฑ +- โœ… **GitHub Issues ve PR'ler** - Etiketler ve kilometre taลŸlarฤฑyla aรงฤฑk/kapalฤฑ sorunlarฤฑ getirme +- โœ… **CHANGELOG ve Sรผrรผmler** - Sรผrรผm geรงmiลŸini otomatik รงฤฑkarma +- โœ… **ร‡akฤฑลŸma Tespiti** - BelgelenmiลŸ API'ler ile gerรงek kod uygulamasฤฑnฤฑ karลŸฤฑlaลŸtฤฑrma +- โœ… **MCP Entegrasyonu** - DoฤŸal dil: "GitHub deposu facebook/react'i tara" + +### ๐Ÿ”„ BirleลŸik ร‡oklu Kaynak Tarama +- โœ… **Birden Fazla KaynaฤŸฤฑ BirleลŸtirme** - Tek bir yetenekte dokรผmantasyon + GitHub + PDF karฤฑลŸtฤฑrma +- โœ… **ร‡akฤฑลŸma Tespiti** - Dokรผmantasyon ile kod arasฤฑndaki tutarsฤฑzlฤฑklarฤฑ otomatik bulma +- โœ… **Akฤฑllฤฑ BirleลŸtirme** - Kural tabanlฤฑ veya AI destekli รงakฤฑลŸma รงรถzรผmleme +- โœ… **ลžeffaf Raporlama** - โš ๏ธ uyarฤฑlarฤฑyla yan yana karลŸฤฑlaลŸtฤฑrma +- โœ… **Dokรผmantasyon BoลŸluk Analizi** - GรผncelliฤŸini yitirmiลŸ dokรผmantasyon ve belgelenmemiลŸ รถzellikleri belirleme +- โœ… **Tek DoฤŸruluk KaynaฤŸฤฑ** - Hem niyet (dokรผmantasyon) hem de gerรงeฤŸi (kod) gรถsteren tek yetenek +- โœ… **Geriye Dรถnรผk Uyumluluk** - Eski tek kaynaklฤฑ yapฤฑlandฤฑrmalar รงalฤฑลŸmaya devam eder + +### ๐Ÿค– ร‡oklu LLM Platform DesteฤŸi +- โœ… **12 LLM Platformu** - Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Genel Markdown, OpenCode, Kimi (Moonshot AI), DeepSeek AI, Qwen (Alibaba), OpenRouter, Together AI, Fireworks AI +- โœ… **Evrensel Tarama** - Aynฤฑ dokรผmantasyon tรผm platformlar iรงin รงalฤฑลŸฤฑr +- โœ… **Platforma ร–zel Paketleme** - Her LLM iรงin optimize edilmiลŸ formatlar +- โœ… **Tek Komutla DฤฑลŸa Aktarma** - `--target` bayraฤŸฤฑ ile platform seรงimi +- โœ… **ฤฐsteฤŸe BaฤŸlฤฑ BaฤŸฤฑmlฤฑlฤฑklar** - Yalnฤฑzca ihtiyacฤฑnฤฑz olanฤฑ yรผkleyin +- โœ… **%100 Geriye Dรถnรผk Uyumluluk** - Mevcut Claude iลŸ akฤฑลŸlarฤฑ deฤŸiลŸmez + +| Platform | Format | Yรผkleme | ZenginleลŸtirme | API Key | ร–zel Uรง Nokta | +|----------|--------|---------|----------------|---------|---------------| +| **Claude AI** | ZIP + YAML | โœ… Otomatik | โœ… Evet | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… Otomatik | โœ… Evet | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… Otomatik | โœ… Evet | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… Otomatik | โœ… Evet | MINIMAX_API_KEY | - | +| **Genel Markdown** | ZIP | โŒ Manuel | โŒ Hayฤฑr | - | - | + +```bash +# Claude (varsayฤฑlan - deฤŸiลŸiklik gerekmez!) +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# Genel Markdown (evrensel dฤฑลŸa aktarma) +skill-seekers package output/react/ --target markdown +# Markdown dosyalarฤฑnฤฑ doฤŸrudan herhangi bir LLM'de kullanฤฑn +``` + +
+๐Ÿ”ง Kendi AI saฤŸlayฤฑcฤฑnฤฑzฤฑ kullanฤฑn (OpenAI uyumlu uรง noktalar + abonelikler, Anthropic kredisi gerekmez) + +ฤฐsteฤŸe baฤŸlฤฑ AI **zenginleลŸtirme** adฤฑmฤฑ (`create`, `scan` ve `enhance` tarafฤฑndan kullanฤฑlฤฑr) bir Anthropic anahtarฤฑ **gerektirmez**. Bunu รงalฤฑลŸtฤฑrmanฤฑn รผรง yolu vardฤฑr: + +**1. Zaten รถdediฤŸiniz bir aboneliฤŸi kullanฤฑn โ€” hiรง API kredisi gerekmez (LOCAL ajan modu)** + +Skill Seekers, halihazฤฑrda oturum aรงtฤฑฤŸฤฑnฤฑz bir kodlama ajanฤฑ CLI'sini รงaฤŸฤฑrabilir; bรถylece zenginleลŸtirme, รถlรงรผlen API token'larฤฑ yerine mevcut planฤฑnฤฑz รผzerinden รงalฤฑลŸฤฑr: + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ChatGPT Plus planฤฑnฤฑz +skill-seekers create --agent claude # Claude Code โ†’ Claude Pro/Max planฤฑnฤฑz +``` + +Desteklenen ajanlar: `claude`, `codex`, `copilot`, `opencode`, `kimi` ve `custom` +(baลŸka herhangi bir aracฤฑ kullanmak iรงin `--agent custom` ile `--agent-cmd " ..."` birleลŸtirin). + +**2. Herhangi bir OpenAI uyumlu saฤŸlayฤฑcฤฑ (OpenRouter, Groq, Cerebras, Mistral, NVIDIA NIM, โ€ฆ)** + +Bunlarฤฑn tรผmรผ OpenAI uyumlu bir `/v1` uรง noktasฤฑ sunar. Skill Seekers'ฤฑ รผรง ortam deฤŸiลŸkeniyle birine yรถnlendirin โ€” `OPENAI_API_KEY` algฤฑlanฤฑr ve OpenAI SDK'sฤฑ `OPENAI_BASE_URL` deฤŸiลŸkenini otomatik olarak dikkate alฤฑr: + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # saฤŸlayฤฑcฤฑ uรง noktasฤฑ (tabloya bakฤฑn) +export OPENAI_MODEL="" # zorunlu โ€” varsayฤฑlan gpt-4o baลŸka yerde bulunmaz +skill-seekers create +``` + +| SaฤŸlayฤฑcฤฑ | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> SaฤŸlayฤฑcฤฑ algฤฑlama, bulduฤŸu **ilk** API anahtarฤฑ ortam deฤŸiลŸkenini seรงer (`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`). Belirli bir saฤŸlayฤฑcฤฑyฤฑ zorlamak iรงin `SKILL_SEEKER_PROVIDER` ayarlayฤฑn veya daha yรผksek รถncelikli anahtarlarฤฑn tanฤฑmsฤฑz olduฤŸundan emin olun. + +**3. Claude uyumlu uรง noktalar (รถr. GLM, proxy'ler)** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini (`GOOGLE_API_KEY`) ve Kimi/Moonshot (`MOONSHOT_API_KEY`) da yerel olarak desteklenir. SaฤŸlayฤฑcฤฑ baลŸฤฑna model geรงersiz kฤฑlmalarฤฑ dahil tam liste iรงin **[Ortam DeฤŸiลŸkenleri Referansฤฑ](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)** bรถlรผmรผne bakฤฑn. + +
+ +**Kurulum:** +```bash +# Gemini desteฤŸi ile kur +pip install skill-seekers[gemini] + +# OpenAI desteฤŸi ile kur +pip install skill-seekers[openai] + +# MiniMax desteฤŸi ile kur +pip install skill-seekers[minimax] + +# Tรผm LLM platformlarฤฑnฤฑ kur +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG ร‡erรงeve Entegrasyonlarฤฑ + +- โœ… **LangChain Documents** - `page_content` + meta veri ile doฤŸrudan `Document` formatฤฑna dฤฑลŸa aktarma + - ฤฐรงin uygun: QA zincirleri, alฤฑcฤฑlar, vektรถr depolarฤฑ, ajanlar + - ร–rnek: [LangChain RAG Hattฤฑ](examples/langchain-rag-pipeline/) + - Kฤฑlavuz: [LangChain Entegrasyonu](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - Benzersiz ID'ler + gรถmรผler ile `TextNode` formatฤฑna dฤฑลŸa aktarma + - ฤฐรงin uygun: Sorgu motorlarฤฑ, sohbet motorlarฤฑ, depolama baฤŸlamฤฑ + - ร–rnek: [LlamaIndex Sorgu Motoru](examples/llama-index-query-engine/) + - Kฤฑlavuz: [LlamaIndex Entegrasyonu](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone-Hazฤฑr Format** - Vektรถr veritabanฤฑ yรผklemesi iรงin optimize edilmiลŸ + - ฤฐรงin uygun: รœretim vektรถr aramasฤฑ, anlamsal arama, hibrit arama + - ร–rnek: [Pinecone Yรผkleme](examples/pinecone-upsert/) + - Kฤฑlavuz: [Pinecone Entegrasyonu](docs/integrations/PINECONE.md) + +**Hฤฑzlฤฑ DฤฑลŸa Aktarma:** +```bash +# LangChain Documents (JSON) +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes (JSON) +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown (Evrensel) +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**Tam RAG Hattฤฑ Kฤฑlavuzu:** [RAG Hatlarฤฑ Dokรผmantasyonu](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI Kodlama Asistanฤฑ Entegrasyonlarฤฑ + +Herhangi bir รงerรงeve dokรผmantasyonunu 4+ AI asistanฤฑ iรงin uzman kodlama baฤŸlamฤฑna dรถnรผลŸtรผrรผn: + +- โœ… **Cursor IDE** - AI destekli kod รถnerileri iรงin `.cursorrules` oluลŸturma + - ฤฐรงin uygun: ร‡erรงeveye รถzel kod รผretimi, tutarlฤฑ desenler + - Birlikte รงalฤฑลŸฤฑr: Cursor IDE (VS Code รงatalฤฑ) + - Kฤฑlavuz: [Cursor Entegrasyonu](docs/integrations/CURSOR.md) + - ร–rnek: [Cursor React YeteneฤŸi](examples/cursor-react-skill/) + +- โœ… **Windsurf** - `.windsurfrules` ile Windsurf AI asistanฤฑ baฤŸlamฤฑnฤฑ รถzelleลŸtirme + - ฤฐรงin uygun: IDE-yerel AI yardฤฑmฤฑ, akฤฑลŸ tabanlฤฑ kodlama + - Birlikte รงalฤฑลŸฤฑr: Codeium tarafฤฑndan Windsurf IDE + - Kฤฑlavuz: [Windsurf Entegrasyonu](docs/integrations/WINDSURF.md) + - ร–rnek: [Windsurf FastAPI BaฤŸlamฤฑ](examples/windsurf-fastapi-context/) + +- โœ… **Cline (VS Code)** - VS Code ajanฤฑ iรงin sistem yรถnergeleri + MCP + - ฤฐรงin uygun: VS Code'da ajanlฤฑ kod รผretimi + - Birlikte รงalฤฑลŸฤฑr: VS Code iรงin Cline eklentisi + - Kฤฑlavuz: [Cline Entegrasyonu](docs/integrations/CLINE.md) + - ร–rnek: [Cline Django Asistanฤฑ](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - IDE baฤŸฤฑmsฤฑz AI iรงin baฤŸlam sunucularฤฑ + - ฤฐรงin uygun: ร‡oklu IDE ortamlarฤฑ (VS Code, JetBrains, Vim), รถzel LLM saฤŸlayฤฑcฤฑlarฤฑ + - Birlikte รงalฤฑลŸฤฑr: Continue.dev eklentisi bulunan herhangi bir IDE + - Kฤฑlavuz: [Continue Entegrasyonu](docs/integrations/CONTINUE_DEV.md) + - ร–rnek: [Continue Evrensel BaฤŸlam](examples/continue-dev-universal/) + +**AI Kodlama Araรงlarฤฑ ฤฐรงin Hฤฑzlฤฑ DฤฑลŸa Aktarma:** +```bash +# Herhangi bir AI kodlama asistanฤฑ iรงin (Cursor, Windsurf, Cline, Continue.dev) +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # veya --target markdown + +# Projenize kopyalayฤฑn (Cursor รถrneฤŸi) +cp output/django-claude/SKILL.md my-project/.cursorrules + +# Veya Windsurf iรงin +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# Veya Cline iรงin +cp output/django-claude/SKILL.md my-project/.clinerules + +# Veya Continue.dev iรงin (HTTP sunucusu) +python examples/continue-dev-universal/context_server.py +# ~/.continue/config.json iรงinde yapฤฑlandฤฑrฤฑn +``` + +**Entegrasyon Merkezi:** [Tรผm AI Sistemi Entegrasyonlarฤฑ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ รœรง AkฤฑลŸlฤฑ GitHub Mimarisi +- โœ… **รœรงlรผ AkฤฑลŸ Analizi** - GitHub depolarฤฑnฤฑ Kod, Dokรผmantasyon ve ฤฐรงgรถrรผ akฤฑลŸlarฤฑna ayฤฑrma +- โœ… **BirleลŸik Kod Tabanฤฑ Analizcisi** - GitHub URL'leri VE yerel yollarla รงalฤฑลŸฤฑr +- โœ… **C3.x Analiz DerinliฤŸi** - 'basic' (1-2 dk) veya 'c3x' (20-60 dk) analiz seรงimi +- โœ… **GeliลŸtirilmiลŸ Yรถnlendirici OluลŸturma** - GitHub meta verileri, README hฤฑzlฤฑ baลŸlangฤฑรง, yaygฤฑn sorunlar +- โœ… **Issue Entegrasyonu** - GitHub Issues'dan en yaygฤฑn sorunlar ve รงรถzรผmler +- โœ… **Akฤฑllฤฑ Yรถnlendirme Anahtar Kelimeleri** - Daha iyi konu tespiti iรงin GitHub etiketleri 2 kat aฤŸฤฑrlฤฑklandฤฑrฤฑlmฤฑลŸ + +**รœรง AkฤฑลŸ Aรงฤฑklamasฤฑ:** +- **AkฤฑลŸ 1: Kod** - Derin C3.x analizi (desenler, รถrnekler, kฤฑlavuzlar, yapฤฑlandฤฑrmalar, mimari) +- **AkฤฑลŸ 2: Dokรผmantasyon** - Depo dokรผmantasyonu (README, CONTRIBUTING, docs/*.md) +- **AkฤฑลŸ 3: ฤฐรงgรถrรผler** - Topluluk bilgisi (issues, etiketler, yฤฑldฤฑzlar, รงatallar) + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# GitHub deposunu รผรง akฤฑลŸla analiz et +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # veya hฤฑzlฤฑ analiz iรงin "basic" + fetch_github_metadata=True +) + +# Kod akฤฑลŸฤฑna eriลŸ (C3.x analizi) +print(f"Tasarฤฑm desenleri: {len(result.code_analysis['c3_1_patterns'])}") +print(f"Test รถrnekleri: {result.code_analysis['c3_2_examples_count']}") + +# Dokรผmantasyon akฤฑลŸฤฑna eriลŸ (depo dokรผmantasyonu) +print(f"README: {result.github_docs['readme'][:100]}") + +# ฤฐรงgรถrรผ akฤฑลŸฤฑna eriลŸ (GitHub meta verileri) +print(f"Yฤฑldฤฑzlar: {result.github_insights['metadata']['stars']}") +print(f"Yaygฤฑn sorunlar: {len(result.github_insights['common_problems'])}") +``` + +**Tam dokรผmantasyonu gรถrรผntรผle**: [รœรง AkฤฑลŸlฤฑ Uygulama ร–zeti](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” Akฤฑllฤฑ ฤฐstek Hฤฑzฤฑ Limiti Yรถnetimi ve Yapฤฑlandฤฑrma +- โœ… **ร‡oklu Token Yapฤฑlandฤฑrma Sistemi** - Birden fazla GitHub hesabฤฑnฤฑ yรถnetme (kiลŸisel, iลŸ, aรงฤฑk kaynak) + - `~/.config/skill-seekers/config.json` konumunda gรผvenli yapฤฑlandฤฑrma depolama (600 izinleri) + - Profil baลŸฤฑna hฤฑz limiti stratejileri: `prompt`, `wait`, `switch`, `fail` + - Profil baลŸฤฑna yapฤฑlandฤฑrฤฑlabilir zaman aลŸฤฑmฤฑ (varsayฤฑlan: 30 dk, sรผresiz beklemeyi รถnler) + - Akฤฑllฤฑ yedekleme zinciri: CLI argรผmanฤฑ โ†’ Ortam deฤŸiลŸkeni โ†’ Yapฤฑlandฤฑrma dosyasฤฑ โ†’ ฤฐstem + - Claude, Gemini, OpenAI iรงin API anahtarฤฑ yรถnetimi +- โœ… **EtkileลŸimli Yapฤฑlandฤฑrma Sihirbazฤฑ** - Kolay kurulum iรงin gรผzel terminal arayรผzรผ + - Token oluลŸturma iรงin tarayฤฑcฤฑ entegrasyonu (otomatik olarak GitHub vb. aรงar) + - Token doฤŸrulama ve baฤŸlantฤฑ testi + - Renk kodlamalฤฑ gรถrsel durum gรถstergesi +- โœ… **Akฤฑllฤฑ Hฤฑz Limiti ฤฐลŸleyicisi** - Artฤฑk sรผresiz bekleme yok! + - Hฤฑz limitleri hakkฤฑnda รถnceden uyarฤฑ (60/saat vs 5000/saat) + - GitHub API yanฤฑtlarฤฑndan gerรงek zamanlฤฑ algฤฑlama + - ฤฐlerleme ile canlฤฑ geri sayฤฑm zamanlayฤฑcฤฑlarฤฑ + - Hฤฑz sฤฑnฤฑrฤฑna ulaลŸฤฑldฤฑฤŸฤฑnda otomatik profil deฤŸiลŸtirme + - Dรถrt strateji: prompt (sor), wait (geri sayฤฑm), switch (baลŸkasฤฑnฤฑ dene), fail (iptal et) +- โœ… **Devam Etme YeteneฤŸi** - Kesilen iลŸlere devam etme + - Yapฤฑlandฤฑrฤฑlabilir aralฤฑklarla otomatik ilerleme kaydetme (varsayฤฑlan: 60 sn) + - ฤฐlerleme ayrฤฑntฤฑlarฤฑyla tรผm devam ettirilebilir iลŸleri listeleme + - Eski iลŸleri otomatik temizleme (varsayฤฑlan: 7 gรผn) +- โœ… **CI/CD DesteฤŸi** - Otomasyon iรงin etkileลŸimsiz mod + - `--non-interactive` bayraฤŸฤฑ istemler olmadan hฤฑzlฤฑ baลŸarฤฑsฤฑzlฤฑk + - `--profile` bayraฤŸฤฑ ile belirli GitHub hesabฤฑ seรงimi + - Hat gรผnlรผkleri iรงin aรงฤฑk hata mesajlarฤฑ + +**Hฤฑzlฤฑ Kurulum:** +```bash +# Tek seferlik yapฤฑlandฤฑrma (5 dakika) +skill-seekers config --github + +# ร–zel depolar iรงin belirli profil kullanma +skill-seekers create mycompany/private-repo --profile work + +# CI/CD modu (hฤฑzlฤฑ baลŸarฤฑsฤฑzlฤฑk, istem yok) +skill-seekers create owner/repo --non-interactive + +# Kesilen iลŸe devam etme +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**Hฤฑz Limiti Stratejileri Aรงฤฑklamasฤฑ:** +- **prompt** (varsayฤฑlan) - Hฤฑz sฤฑnฤฑrฤฑna ulaลŸฤฑldฤฑฤŸฤฑnda ne yapฤฑlacaฤŸฤฑnฤฑ sor (bekle, deฤŸiลŸtir, token kur, iptal) +- **wait** - Geri sayฤฑm zamanlayฤฑcฤฑsฤฑyla otomatik bekleme (zaman aลŸฤฑmฤฑna uyar) +- **switch** - Sonraki kullanฤฑlabilir profili otomatik deneme (รงoklu hesap kurulumlarฤฑ iรงin) +- **fail** - Aรงฤฑk hata ile hemen baลŸarฤฑsฤฑz olma (CI/CD iรงin mรผkemmel) + +### ๐ŸŽฏ Bootstrap YeteneฤŸi - Kendi Kendini Barฤฑndฤฑrma + +Skill-seekers'ฤฑ AI ajanฤฑnฤฑz (Claude Code, Kimi, Codex vb.) iรงinde kullanmak รผzere bir yetenek olarak oluลŸturma: + +```bash +# YeteneฤŸi oluลŸtur +./scripts/bootstrap_skill.sh + +# Claude Code'a yรผkle +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**Elde ettikleriniz:** +- โœ… **Tam yetenek dokรผmantasyonu** - Tรผm CLI komutlarฤฑ ve kullanฤฑm desenleri +- โœ… **CLI komut referansฤฑ** - Her araรง ve seรงenekleri belgelenmiลŸ +- โœ… **Hฤฑzlฤฑ baลŸlangฤฑรง รถrnekleri** - Yaygฤฑn iลŸ akฤฑลŸlarฤฑ ve en iyi uygulamalar +- โœ… **Otomatik oluลŸturulan API dokรผmantasyonu** - Kod analizi, desenler ve รถrnekler + +### ๐Ÿ” ร–zel Yapฤฑlandฤฑrma Depolarฤฑ +- โœ… **Git Tabanlฤฑ Yapฤฑlandฤฑrma Kaynaklarฤฑ** - ร–zel/ekip git depolarฤฑndan yapฤฑlandฤฑrma getirme +- โœ… **ร‡oklu Kaynak Yรถnetimi** - Sฤฑnฤฑrsฤฑz GitHub, GitLab, Bitbucket deposu kaydetme +- โœ… **Ekip ฤฐลŸbirliฤŸi** - 3-5 kiลŸilik ekipler arasฤฑnda รถzel yapฤฑlandฤฑrmalarฤฑ paylaลŸma +- โœ… **Kurumsal Destek** - ร–ncelik tabanlฤฑ รงรถzรผmleme ile 500+ geliลŸtiriciye รถlรงekleme +- โœ… **Gรผvenli Kimlik DoฤŸrulama** - Ortam deฤŸiลŸkeni token'larฤฑ (GITHUB_TOKEN, GITLAB_TOKEN) +- โœ… **Akฤฑllฤฑ ร–nbellekleme** - Bir kez klonla, gรผncellemeleri otomatik รงek +- โœ… **ร‡evrimdฤฑลŸฤฑ Mod** - ร‡evrimdฤฑลŸฤฑyken รถnbelleฤŸe alฤฑnmฤฑลŸ yapฤฑlandฤฑrmalarla รงalฤฑลŸma + +### ๐Ÿค– Kod Tabanฤฑ Analizi (C3.x) + +**C3.4: AI ZenginleลŸtirmeli Yapฤฑlandฤฑrma Deseni ร‡ฤฑkarma** +- โœ… **9 Yapฤฑlandฤฑrma Formatฤฑ** - JSON, YAML, TOML, ENV, INI, Python, JavaScript, Dockerfile, Docker Compose +- โœ… **7 Desen Tรผrรผ** - Veritabanฤฑ, API, gรผnlรผkleme, รถnbellek, e-posta, kimlik doฤŸrulama, sunucu yapฤฑlandฤฑrmalarฤฑ +- โœ… **AI ZenginleลŸtirme** - ฤฐsteฤŸe baฤŸlฤฑ รงift modlu AI analizi (API + LOCAL) + - Her yapฤฑlandฤฑrmanฤฑn ne yaptฤฑฤŸฤฑnฤฑ aรงฤฑklar + - En iyi uygulamalarฤฑ ve iyileลŸtirmeleri รถnerir + - **Gรผvenlik analizi** - Sabit kodlanmฤฑลŸ sฤฑrlarฤฑ, aรงฤฑฤŸa รงฤฑkmฤฑลŸ kimlik bilgilerini bulur +- โœ… **Otomatik Belgeleme** - Tรผm yapฤฑlandฤฑrmalarฤฑn JSON + Markdown dokรผmantasyonunu oluลŸturur +- โœ… **MCP Entegrasyonu** - ZenginleลŸtirme destekli `extract_config_patterns` aracฤฑ + +**C3.3: AI ZenginleลŸtirilmiลŸ Nasฤฑl Yapฤฑlฤฑr Kฤฑlavuzlarฤฑ** +- โœ… **Kapsamlฤฑ AI ZenginleลŸtirme** - Temel kฤฑlavuzlarฤฑ profesyonel eฤŸitimlere dรถnรผลŸtรผrme +- โœ… **5 Otomatik ฤฐyileลŸtirme** - Adฤฑm aรงฤฑklamalarฤฑ, sorun giderme, รถn koลŸullar, sonraki adฤฑmlar, kullanฤฑm senaryolarฤฑ +- โœ… **ร‡ift Mod DesteฤŸi** - API modu (Claude API) veya LOCAL modu (Claude Code CLI) +- โœ… **LOCAL Moduyla รœcretsiz** - Claude Code Max planฤฑnฤฑzฤฑ kullanarak รœCRETSฤฐZ zenginleลŸtirme +- โœ… **Kalite DรถnรผลŸรผmรผ** - 75 satฤฑrlฤฑk ลŸablonlar โ†’ 500+ satฤฑrlฤฑk kapsamlฤฑ kฤฑlavuzlar + +**Kullanฤฑm:** +```bash +# Hฤฑzlฤฑ analiz (1-2 dk, yalnฤฑzca temel รถzellikler) +skill-seekers scan tests/ --quick + +# AI ile kapsamlฤฑ analiz (20-60 dk, tรผm รถzellikler) +skill-seekers scan tests/ --comprehensive + +# AI zenginleลŸtirme ile +skill-seekers scan tests/ --enhance +``` + +**Tam Dokรผmantasyon:** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ZenginleลŸtirme ฤฐลŸ AkฤฑลŸฤฑ ร–n Ayarlarฤฑ + +AI'nฤฑn ham dokรผmantasyonunuzu cilalฤฑ bir yeteneฤŸe nasฤฑl dรถnรผลŸtรผreceฤŸini kontrol eden yeniden kullanฤฑlabilir YAML tanฤฑmlฤฑ zenginleลŸtirme hatlarฤฑ. + +- โœ… **5 YerleลŸik ร–n Ayar** โ€” `default`, `minimal`, `security-focus`, `architecture-comprehensive`, `api-documentation` +- โœ… **Kullanฤฑcฤฑ Tanฤฑmlฤฑ ร–n Ayarlar** โ€” `~/.config/skill-seekers/workflows/` dizinine รถzel iลŸ akฤฑลŸlarฤฑ ekleme +- โœ… **ร‡oklu ฤฐลŸ AkฤฑลŸlarฤฑ** โ€” Tek komutta iki veya daha fazla iลŸ akฤฑลŸฤฑnฤฑ zincirleme +- โœ… **Tam CLI Yรถnetimi** โ€” ฤฐลŸ akฤฑลŸlarฤฑnฤฑ listeleme, inceleme, kopyalama, ekleme, kaldฤฑrma ve doฤŸrulama + +```bash +# Tek iลŸ akฤฑลŸฤฑ uygula +skill-seekers create ./my-project --enhance-workflow security-focus + +# Birden fazla iลŸ akฤฑลŸฤฑnฤฑ zincirle (sฤฑrayla uygulanฤฑr) +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ร–n ayarlarฤฑ yรถnet +skill-seekers workflows list # Tรผmรผnรผ listele (yerleลŸik + kullanฤฑcฤฑ) +skill-seekers workflows show security-focus # YAML iรงeriฤŸini yazdฤฑr +skill-seekers workflows copy security-focus # Dรผzenleme iรงin kullanฤฑcฤฑ dizinine kopyala +skill-seekers workflows add ./my-workflow.yaml # ร–zel รถn ayar yรผkle +skill-seekers workflows remove my-workflow # Kullanฤฑcฤฑ รถn ayarฤฑnฤฑ kaldฤฑr +skill-seekers workflows validate security-focus # ร–n ayar yapฤฑsฤฑnฤฑ doฤŸrula + +# Aynฤฑ anda birden fazla kopyala +skill-seekers workflows copy security-focus minimal api-documentation + +# Aynฤฑ anda birden fazla dosya ekle +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# Aynฤฑ anda birden fazla kaldฤฑr +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML รถn ayar formatฤฑ:** +```yaml +name: security-focus +description: "Gรผvenlik odaklฤฑ inceleme: gรผvenlik aรงฤฑklarฤฑ, kimlik doฤŸrulama, veri iลŸleme" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "OWASP ilk 10 ve yaygฤฑn gรผvenlik aรงฤฑklarฤฑnฤฑ inceleyin..." + - name: auth-review + type: custom + prompt: "Kimlik doฤŸrulama ve yetkilendirme desenlerini inceleyin..." + uses_history: true +``` + +### โšก Performans ve ร–lรงek +- โœ… **Asenkron Mod** - async/await ile 2-3 kat daha hฤฑzlฤฑ tarama (`--async` bayraฤŸฤฑnฤฑ kullanฤฑn) +- โœ… **Bรผyรผk Dokรผmantasyon DesteฤŸi** - Akฤฑllฤฑ bรถlme ile 10K-40K+ sayfalฤฑk dokรผmantasyonu iลŸleme +- โœ… **Yรถnlendirici/Hub Yetenekleri** - ร–zelleลŸtirilmiลŸ alt yeteneklere akฤฑllฤฑ yรถnlendirme +- โœ… **Paralel Tarama** - Birden fazla yeteneฤŸi aynฤฑ anda iลŸleme +- โœ… **Kontrol Noktasฤฑ/Devam Etme** - Uzun taramalarda hiรงbir zaman ilerleme kaybetmeyin +- โœ… **ร–nbellekleme Sistemi** - Bir kez tara, anฤฑnda yeniden oluลŸtur + +### ๐Ÿค– Ajan BaฤŸฤฑmsฤฑz Yetenek OluลŸturma +- โœ… **ร‡oklu Ajan DesteฤŸi** - `--agent` bayraฤŸฤฑ ile Claude, Kimi, Codex, Copilot, OpenCode veya herhangi bir รถzel ajan iรงin yetenek oluลŸturma +- โœ… **ร–zel Ajan Komutlarฤฑ** - ZenginleลŸtirme iรงin รถzel bir ajan CLI komutu belirtmek รผzere `--agent-cmd` kullanma +- โœ… **Evrensel Bayraklar** - `--agent` ve `--agent-cmd` tรผm komutlarda kullanฤฑlabilir (create, scrape, github, pdf vb.) + +### ๐Ÿ“ฆ Market Hattฤฑ +- โœ… **Markette Yayฤฑnlama** - Yetenekleri Claude Code eklenti market depolarฤฑnda yayฤฑnlama +- โœ… **Uรงtan Uca Hat** - Dokรผmantasyon kaynaฤŸฤฑndan yayฤฑnlanmฤฑลŸ market girdisine kadar + +### โœ… Kalite Gรผvencesi +- โœ… **Tam Test Kapsamฤฑ** - 3.700+ test ile kapsamlฤฑ kapsam + +--- + +## ๐Ÿ“ฆ Kurulum + +```bash +# Temel kurulum (dokรผmantasyon tarama, GitHub analizi, PDF, paketleme) +pip install skill-seekers + +# Tรผm LLM platform desteฤŸi ile +pip install skill-seekers[all-llms] + +# MCP sunucusu ile +pip install skill-seekers[mcp] + +# Her ลŸey +pip install skill-seekers[all] +``` + +**Seรงim konusunda yardฤฑm mฤฑ lazฤฑm?** Kurulum sihirbazฤฑnฤฑ รงalฤฑลŸtฤฑrฤฑn: +```bash +skill-seekers-setup +``` + +### Kurulum Seรงenekleri + +| Kurulum | ร–zellikler | +|---------|-----------| +| `pip install skill-seekers` | Tarama, GitHub analizi, PDF, tรผm platformlar | +| `pip install skill-seekers[gemini]` | + Google Gemini desteฤŸi | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT desteฤŸi | +| `pip install skill-seekers[all-llms]` | + Tรผm LLM platformlarฤฑ | +| `pip install skill-seekers[mcp]` | + Claude Code, Cursor vb. iรงin MCP sunucusu | +| `pip install skill-seekers[video]` | + YouTube/Vimeo altyazฤฑ ve meta veri รงฤฑkarma | +| `pip install skill-seekers[video-full]` | + Whisper transkripsiyonu ve gรถrsel kare รงฤฑkarma | +| `pip install skill-seekers[jupyter]` | + Jupyter Not Defteri desteฤŸi | +| `pip install skill-seekers[pptx]` | + PowerPoint desteฤŸi | +| `pip install skill-seekers[confluence]` | + Confluence viki desteฤŸi | +| `pip install skill-seekers[notion]` | + Notion sayfalarฤฑ desteฤŸi | +| `pip install skill-seekers[rss]` | + RSS/Atom besleme desteฤŸi | +| `pip install skill-seekers[chat]` | + Slack/Discord sohbet dฤฑลŸa aktarฤฑm desteฤŸi | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc belge desteฤŸi | +| `pip install skill-seekers[all]` | Her ลŸey etkin | + +> **Video gรถrsel baฤŸฤฑmlฤฑlฤฑklarฤฑ (GPU destekli):** `skill-seekers[video-full]` kurulumundan sonra +> `skill-seekers create --setup` komutunu รงalฤฑลŸtฤฑrarak GPU'nuzu otomatik algฤฑlayฤฑn ve doฤŸru PyTorch +> sรผrรผmรผnรผ + easyocr'ฤฑ yรผkleyin. Bu, gรถrsel รงฤฑkarma baฤŸฤฑmlฤฑlฤฑklarฤฑnฤฑ yรผklemenin รถnerilen yoludur. + +--- + +## ๐Ÿš€ Tek Komutla Kurulum ฤฐลŸ AkฤฑลŸฤฑ + +**Yapฤฑlandฤฑrmadan yรผklenen yeteneฤŸe en hฤฑzlฤฑ yol โ€” tam otomasyon:** + +```bash +# Resmi yapฤฑlandฤฑrmalardan React yeteneฤŸini kur (Claude'a otomatik yรผkle) +skill-seekers install --config react + +# Yerel yapฤฑlandฤฑrma dosyasฤฑndan kur +skill-seekers install --config configs/custom.json + +# Yรผklemeden kur (yalnฤฑzca paketle) +skill-seekers install --config django --no-upload + +# ร‡alฤฑลŸtฤฑrmadan iลŸ akฤฑลŸฤฑnฤฑ รถnizle +skill-seekers install --config react --dry-run +``` + +**Sรผre:** Toplamda 20-45 dakika | **Kalite:** รœretime hazฤฑr (9/10) | **Maliyet:** รœcretsiz + +**Yรผrรผtรผlen aลŸamalar:** +``` +๐Ÿ“ฅ AลžAMA 1: Yapฤฑlandฤฑrmayฤฑ Getir (yapฤฑlandฤฑrma adฤฑ verilmiลŸse) +๐Ÿ“– AลžAMA 2: Dokรผmantasyonu Tara +โœจ AลžAMA 3: AI ZenginleลŸtirme (ZORUNLU - atlama seรงeneฤŸi yok) +๐Ÿ“ฆ AลžAMA 4: YeteneฤŸi Paketle +โ˜๏ธ AลžAMA 5: Claude'a Yรผkle (isteฤŸe baฤŸlฤฑ, API anahtarฤฑ gerektirir) +``` + +**Gereksinimler:** +- ANTHROPIC_API_KEY ortam deฤŸiลŸkeni (otomatik yรผkleme iรงin) +- Claude Code Max planฤฑ (yerel AI zenginleลŸtirme iรงin) veya farklฤฑ bir AI ajanฤฑ seรงmek iรงin `--agent` kullanฤฑn + +--- + +## ๐Ÿ“Š ร–zellik Matrisi + +Skill Seekers **12 LLM platformu**, **8 RAG/vektรถr hedefi**, **18 kaynak tรผrรผ** ve tรผm hedeflerde tam รถzellik eลŸitliฤŸini destekler. + +**Platformlar:** Claude AI, Google Gemini, OpenAI ChatGPT, MiniMax AI, Genel Markdown, OpenCode, Kimi, DeepSeek, Qwen, OpenRouter, Together AI, Fireworks AI +**Kaynak Tรผrleri:** Dokรผmantasyon siteleri, GitHub depolarฤฑ, PDF'ler, Word (.docx), EPUB, Video, Yerel kod tabanlarฤฑ, Jupyter Not Defterleri, Yerel HTML, OpenAPI/Swagger, AsciiDoc, PowerPoint (.pptx), RSS/Atom beslemeleri, Man sayfalarฤฑ, Confluence vikileri, Notion sayfalarฤฑ, Slack/Discord sohbet dฤฑลŸa aktarฤฑmlarฤฑ + +Ayrฤฑntฤฑlฤฑ platform ve รถzellik desteฤŸi iรงin [Tam ร–zellik Matrisi](docs/reference/FEATURE_MATRIX.md) bรถlรผmรผne bakฤฑn. + +### Hฤฑzlฤฑ Platform KarลŸฤฑlaลŸtฤฑrmasฤฑ + +| ร–zellik | Claude | Gemini | OpenAI | MiniMax | Markdown | +|---------|--------|--------|--------|---------|----------| +| Format | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| Yรผkleme | โœ… API | โœ… API | โœ… API | โœ… API | โŒ Manuel | +| ZenginleลŸtirme | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ Yok | +| Tรผm Yetenek Modlarฤฑ | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## Kullanฤฑm ร–rnekleri + +### Dokรผmantasyon Tarama + +```bash +# Dokรผmantasyon sitesini tara +skill-seekers create --config configs/react.json + +# Yapฤฑlandฤฑrma olmadan hฤฑzlฤฑ tarama +skill-seekers create https://react.dev --name react + +# Asenkron mod ile (3 kat daha hฤฑzlฤฑ) +skill-seekers create --config configs/godot.json --async --workers 8 + +# ZenginleลŸtirme iรงin belirli bir AI ajanฤฑ kullan +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF ร‡ฤฑkarma + +```bash +# Temel PDF รงฤฑkarma +skill-seekers create --pdf docs/manual.pdf --name myskill + +# GeliลŸmiลŸ รถzellikler +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # Tablolarฤฑ รงฤฑkar + --parallel \ # Hฤฑzlฤฑ paralel iลŸleme + --workers 8 # 8 CPU รงekirdeฤŸi kullan + +# TaranmฤฑลŸ PDF'ler (gerekli: pip install pytesseract Pillow) +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### Video ร‡ฤฑkarma + +```bash +# Video desteฤŸini kur +pip install skill-seekers[video] # Altyazฤฑlar + meta veri +pip install skill-seekers[video-full] # + Whisper transkripsiyonu + gรถrsel kare รงฤฑkarma + +# GPU'yu otomatik algฤฑla ve gรถrsel baฤŸฤฑmlฤฑlฤฑklarฤฑ kur (PyTorch + easyocr) +skill-seekers create --setup + +# YouTube videosundan รงฤฑkar +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# YouTube oynatma listesinden รงฤฑkar +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# Yerel video dosyasฤฑndan รงฤฑkar +skill-seekers create --video-file recording.mp4 --name myrecording + +# Gรถrsel kare analizi ile รงฤฑkar (video-full baฤŸฤฑmlฤฑlฤฑklarฤฑ gerektirir) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# AI zenginleลŸtirme ile (OCR'ฤฑ temizle + cilalฤฑ SKILL.md oluลŸtur) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# Videonun belirli bir bรถlรผmรผnรผ kฤฑrp (saniye, DD:SS, SS:DD:SS destekler) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# DรผลŸรผk gรผvenilirlikli OCR kareleri iรงin Vision API kullan (ANTHROPIC_API_KEY gerektirir) +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# Daha รถnce รงฤฑkarฤฑlmฤฑลŸ verilerden yeteneฤŸi yeniden oluลŸtur (indirmeyi atla) +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **Tam kฤฑlavuz:** Eksiksiz CLI referansฤฑ, gรถrsel hat ayrฤฑntฤฑlarฤฑ, AI zenginleลŸtirme seรงenekleri +> ve sorun giderme iรงin [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) bรถlรผmรผne bakฤฑn. + +### GitHub Deposu Analizi + +```bash +# Temel depo tarama +skill-seekers create facebook/react + +# Kimlik doฤŸrulama ile (daha yรผksek hฤฑz limitleri) +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# Nelerin dahil edileceฤŸini รถzelleลŸtir +skill-seekers create django/django \ + --include-issues \ # GitHub Issues รงฤฑkar + --max-issues 100 \ # Issue sayฤฑsฤฑnฤฑ sฤฑnฤฑrla + --include-changelog # CHANGELOG.md รงฤฑkar +``` + +### BirleลŸik ร‡oklu Kaynak Tarama + +**ร‡akฤฑลŸma tespiti ile dokรผmantasyon + GitHub + PDF'yi tek bir birleลŸik yeteneฤŸe dรถnรผลŸtรผrme:** + +```bash +# Mevcut birleลŸik yapฤฑlandฤฑrmalarฤฑ kullan +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# Veya birleลŸik yapฤฑlandฤฑrma oluลŸtur +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**ร‡akฤฑลŸma Tespiti otomatik olarak ลŸunlarฤฑ bulur:** +- ๐Ÿ”ด **Kodda eksik** (yรผksek): BelgelenmiลŸ ama uygulanmamฤฑลŸ +- ๐ŸŸก **Dokรผmantasyonda eksik** (orta): UygulanmฤฑลŸ ama belgelenmemiลŸ +- โš ๏ธ **ฤฐmza uyuลŸmazlฤฑฤŸฤฑ**: Farklฤฑ parametreler/tรผrler +- โ„น๏ธ **Aรงฤฑklama uyuลŸmazlฤฑฤŸฤฑ**: Farklฤฑ aรงฤฑklamalar + +**Tam Kฤฑlavuz:** Eksiksiz dokรผmantasyon iรงin [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md) bรถlรผmรผne bakฤฑn. + +### ร–zel Yapฤฑlandฤฑrma Depolarฤฑ + +**ร–zel git depolarฤฑ kullanarak ekipler arasฤฑnda รถzel yapฤฑlandฤฑrmalarฤฑ paylaลŸma:** + +```bash +# Seรงenek 1: MCP araรงlarฤฑnฤฑ kullanma (รถnerilen) +# Ekibinizin รถzel deposunu kaydedin +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# Ekip deposundan yapฤฑlandฤฑrma getir +fetch_config(source="team", config_name="internal-api") +``` + +**Desteklenen Platformlar:** +- GitHub (`GITHUB_TOKEN`), GitLab (`GITLAB_TOKEN`), Gitea (`GITEA_TOKEN`), Bitbucket (`BITBUCKET_TOKEN`) + +**Tam Kฤฑlavuz:** Eksiksiz dokรผmantasyon iรงin [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md) bรถlรผmรผne bakฤฑn. + +## Nasฤฑl ร‡alฤฑลŸฤฑr + +```mermaid +graph LR + A[Dokรผmantasyon Sitesi] --> B[Skill Seekers] + B --> C[Tarayฤฑcฤฑ] + B --> D[AI ZenginleลŸtirme] + B --> E[Paketleyici] + C --> F[DรผzenlenmiลŸ Referanslar] + D --> F + F --> E + E --> G[AI YeteneฤŸi .zip] + G --> H[AI Platformuna Yรผkle] +``` + +0. **llms.txt Algฤฑlama** - ร–nce llms-full.txt, llms.txt, llms-small.txt kontrol eder (Akฤฑllฤฑ SPA KeลŸfi'nin bir parรงasฤฑ) +1. **Tarama**: Dokรผmantasyondaki tรผm sayfalarฤฑ รงฤฑkarฤฑr +2. **Kategorileme**: ฤฐรงeriฤŸi konulara gรถre dรผzenler (API, kฤฑlavuzlar, eฤŸitimler vb.) +3. **ZenginleลŸtirme**: AI dokรผmantasyonu analiz eder ve รถrneklerle kapsamlฤฑ SKILL.md oluลŸturur (`--agent` ile birden fazla ajanฤฑ destekler) +4. **Paketleme**: Her ลŸeyi platforma hazฤฑr `.zip` dosyasฤฑna paketler + +## Mimari + +Sistem, **8 รงekirdek modรผl** ve **5 yardฤฑmcฤฑ modรผl** olarak dรผzenlenmiลŸtir (toplam ~200 sฤฑnฤฑf): + +![Paket Genel BakฤฑลŸฤฑ](docs/UML/exports/00_package_overview.png) + +| Modรผl | Amaรง | Anahtar Sฤฑnฤฑflar | +|-------|------|------------------| +| **CLICore** | Git tarzฤฑ komut daฤŸฤฑtฤฑcฤฑsฤฑ | `CLIDispatcher`, `SourceDetector`, `CreateCommand` | +| **Scrapers** | 18 kaynak tรผrรผ รงฤฑkarฤฑcฤฑsฤฑ | `DocToSkillConverter`, `DocumentSkillBuilder` (paylaลŸฤฑlan derleme katmanฤฑ), `UnifiedScraper` | +| **Adaptors** | 20+ รงฤฑktฤฑ platformu formatฤฑ | `SkillAdaptor` (ABC), `ClaudeAdaptor`, `LangChainAdaptor` | +| **Analysis** | C3.x kod tabanฤฑ analiz hattฤฑ | `UnifiedCodebaseAnalyzer`, `PatternRecognizer`, 10 GoF dedektรถrรผ | +| **Enhancement** | `AgentClient` รผzerinden AI destekli yetenek iyileลŸtirme | `AgentClient`, `AIEnhancer`, `UnifiedEnhancer`, `WorkflowEngine` | +| **Packaging** | Yetenekleri paketleme, yรผkleme, kurma | `PackageSkill`, `InstallAgent` | +| **MCP** | FastMCP sunucusu (40 araรง) | `SkillSeekerMCPServer`, 10 araรง modรผlรผ | +| **Sync** | Dokรผmantasyon deฤŸiลŸikliฤŸi algฤฑlama | `ChangeDetector`, `SyncMonitor`, `Notifier` | + +Yardฤฑmcฤฑ modรผller: **Parsers** (28 CLI ayrฤฑลŸtฤฑrฤฑcฤฑsฤฑ), **Storage** (S3/GCS/Azure), **Embedding** (รงoklu saฤŸlayฤฑcฤฑ vektรถrler), **Benchmark** (performans), **Utilities** (16 paylaลŸฤฑlan yardฤฑmcฤฑ). + +Tam UML diyagramlarฤฑ: **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML projesi: `docs/UML/skill_seekers.mdj` | HTML API referansฤฑ: `docs/UML/html/` + +## ๐Ÿ“‹ ร–n KoลŸullar + +**BaลŸlamadan รถnce ลŸunlara sahip olduฤŸunuzdan emin olun:** + +1. **Python 3.10 veya รผstรผ** - [ฤฐndir](https://www.python.org/downloads/) | Kontrol: `python3 --version` +2. **Git** - [ฤฐndir](https://git-scm.com/) | Kontrol: `git --version` +3. **ฤฐlk kurulum iรงin 15-30 dakika** + +**ฤฐlk kez mi kullanฤฑyorsunuz?** โ†’ **[Buradan BaลŸlayฤฑn: KurลŸun Geรงirmez Hฤฑzlฤฑ BaลŸlangฤฑรง Kฤฑlavuzu](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค Yetenekleri Claude'a Yรผkleme + +YeteneฤŸiniz paketlendikten sonra Claude'a yรผklemeniz gerekir: + +### Seรงenek 1: Otomatik Yรผkleme (API tabanlฤฑ) + +```bash +# API anahtarฤฑnฤฑzฤฑ ayarlayฤฑn (tek seferlik) +export ANTHROPIC_API_KEY=sk-ant-... + +# Otomatik olarak paketle ve yรผkle +skill-seekers package output/react/ --upload + +# VEYA mevcut .zip'i yรผkle +skill-seekers upload output/react.zip +``` + +### Seรงenek 2: Manuel Yรผkleme (API Anahtarฤฑ Gerekmez) + +```bash +# YeteneฤŸi paketle +skill-seekers package output/react/ +# โ†’ output/react.zip oluลŸturur + +# Sonra manuel olarak yรผkleyin: +# - https://claude.ai/skills adresine gidin +# - "Upload Skill" dรผฤŸmesine tฤฑklayฤฑn +# - output/react.zip dosyasฤฑnฤฑ seรงin +``` + +### Seรงenek 3: MCP (Claude Code) + +``` +Claude Code'da ลŸunu sorun: +"React yeteneฤŸini paketle ve yรผkle" +``` + +--- + +## ๐Ÿค– AI Ajanlara Yรผkleme + +Skill Seekers, yetenekleri 19 AI kodlama ajanฤฑna otomatik olarak yรผkleyebilir. + +```bash +# Belirli bir ajana yรผkle +skill-seekers install-agent output/react/ --agent cursor + +# IBM Bob'a yรผkle (proje yerelinde .bob/skills/) +skill-seekers install-agent output/react/ --agent bob + +# Tรผm ajanlara aynฤฑ anda yรผkle +skill-seekers install-agent output/react/ --agent all + +# Yรผklemeden รถnizle +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### Desteklenen Ajanlar + +| Ajan | Yol | Tรผr | +|------|-----|-----| +| **Claude Code** | `~/.claude/skills/` | Global | +| **Cursor** | `.cursor/skills/` | Proje | +| **VS Code / Copilot** | `.github/skills/` | Proje | +| **Amp** | `~/.amp/skills/` | Global | +| **Goose** | `~/.config/goose/skills/` | Global | +| **OpenCode** | `~/.opencode/skills/` | Global | +| **Windsurf** | `~/.windsurf/skills/` | Global | +| **Roo Code** | `.roo/skills/` | Proje | +| **Cline** | `.cline/skills/` | Proje | +| **Aider** | `~/.aider/skills/` | Global | +| **Bolt** | `.bolt/skills/` | Proje | +| **Kilo Code** | `.kilo/skills/` | Proje | +| **Continue** | `~/.continue/skills/` | Global | +| **Kimi Code** | `~/.kimi/skills/` | Global | +| **IBM Bob** | `.bob/skills/` | Proje | + +--- + +## ๐Ÿ”Œ MCP Entegrasyonu (40 Araรง) + +Skill Seekers, Claude Code, Cursor, Windsurf, VS Code + Cline veya IntelliJ IDEA'dan kullanฤฑlmak รผzere bir MCP sunucusu saฤŸlar. + +```bash +# stdio modu (Claude Code, VS Code + Cline) +python -m skill_seekers.mcp.server_fastmcp + +# HTTP modu (Cursor, Windsurf, IntelliJ) +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# Tรผm ajanlarฤฑ aynฤฑ anda otomatik yapฤฑlandฤฑr +./setup_mcp.sh +``` + +**Mevcut tรผm 40 araรง:** +- **ร‡ekirdek (9):** `list_configs`, `generate_config`, `validate_config`, `estimate_pages`, `scrape_docs`, `package_skill`, `upload_skill`, `enhance_skill`, `install_skill` +- **GeniลŸletilmiลŸ (10):** `scrape_github`, `scrape_pdf`, `unified_scrape`, `merge_sources`, `detect_conflicts`, `add_config_source`, `fetch_config`, `list_config_sources`, `remove_config_source`, `split_config` +- **Vektรถr Veritabanฤฑ (4):** `export_to_chroma`, `export_to_weaviate`, `export_to_faiss`, `export_to_qdrant` +- **Bulut (3):** `cloud_upload`, `cloud_download`, `cloud_list` + +**Tam Kฤฑlavuz:** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ Yapฤฑlandฤฑrma + +### Mevcut ร–n Ayarlar (24+) + +```bash +# Tรผm รถn ayarlarฤฑ listele +# skill-seekers list-configs # v3.7.0'da mevcut deฤŸil +``` + +| Kategori | ร–n Ayarlar | +|----------|-----------| +| **Web ร‡erรงeveleri** | `react`, `vue`, `angular`, `svelte`, `nextjs` | +| **Python** | `django`, `flask`, `fastapi`, `sqlalchemy`, `pytest` | +| **Oyun GeliลŸtirme** | `godot`, `pygame`, `unity` | +| **Araรงlar ve DevOps** | `docker`, `kubernetes`, `terraform`, `ansible` | +| **BirleลŸik (Dokรผmantasyon + GitHub)** | `react-unified`, `vue-unified`, `nextjs-unified` ve daha fazlasฤฑ | + +### Kendi Yapฤฑlandฤฑrmanฤฑzฤฑ OluลŸturma + +```bash +# Seรงenek 1: EtkileลŸimli +skill-seekers create --interactive + +# Seรงenek 2: Bir รถn ayarฤฑ kopyalayฤฑp dรผzenleme +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### Yapฤฑlandฤฑrma Dosyasฤฑ Yapฤฑsฤฑ + +```json +{ + "name": "myframework", + "description": "Bu yeteneฤŸin ne zaman kullanฤฑlacaฤŸฤฑ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### Yapฤฑlandฤฑrmalarฤฑn Aranma Sฤฑrasฤฑ + +Araรง aลŸaฤŸฤฑdaki sฤฑrayla arar: +1. Belirtilen tam yol +2. `./configs/` (mevcut dizin) +3. `~/.config/skill-seekers/configs/` (kullanฤฑcฤฑ yapฤฑlandฤฑrma dizini) +4. SkillSeekersWeb.com API (รถn ayar yapฤฑlandฤฑrmalarฤฑ) + +--- + +## ๐Ÿ“Š OluลŸturulan ฤฐรงerik + +``` +output/ +โ”œโ”€โ”€ godot_data/ # Taranan ham veriler +โ”‚ โ”œโ”€โ”€ pages/ # JSON dosyalarฤฑ (sayfa baลŸฤฑna bir tane) +โ”‚ โ””โ”€โ”€ summary.json # Genel bakฤฑลŸ +โ”‚ +โ””โ”€โ”€ godot/ # Yetenek + โ”œโ”€โ”€ SKILL.md # Gerรงek รถrneklerle zenginleลŸtirilmiลŸ + โ”œโ”€โ”€ references/ # Kategorize edilmiลŸ dokรผmantasyon + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # BoลŸ (kendinizinkini ekleyin) + โ””โ”€โ”€ assets/ # BoลŸ (kendinizinkini ekleyin) +``` + +--- + +## ๐Ÿ› Sorun Giderme + +### ฤฐรงerik ร‡ฤฑkarฤฑlmadฤฑ mฤฑ? +- `main_content` seรงicinizi kontrol edin +- Deneyin: `article`, `main`, `div[role="main"]` + +### Veri Var Ama Kullanฤฑlmฤฑyor mu? +```bash +# Yeniden taramaya zorla +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### Kategoriler ฤฐyi DeฤŸil mi? +Yapฤฑlandฤฑrmadaki `categories` bรถlรผmรผnรผ daha iyi anahtar kelimelerle dรผzenleyin. + +### Dokรผmantasyonu Gรผncellemek mi ฤฐstiyorsunuz? +```bash +# Eski verileri sil ve yeniden tara +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ZenginleลŸtirme ร‡alฤฑลŸmฤฑyor mu? +```bash +# API anahtarฤฑnฤฑn ayarlanฤฑp ayarlanmadฤฑฤŸฤฑnฤฑ kontrol edin +echo $ANTHROPIC_API_KEY + +# Bunun yerine LOCAL modunu deneyin (Claude Code Max kullanฤฑr, API anahtarฤฑ gerekmez) +skill-seekers enhance output/react/ --mode LOCAL + +# Arka plan zenginleลŸtirme durumunu izleyin +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub Hฤฑz Limiti Sorunlarฤฑ mฤฑ? +```bash +# GitHub token ayarlayฤฑn (anonim 60/saat yerine 5000 istek/saat) +export GITHUB_TOKEN=ghp_your_token_here + +# Veya birden fazla profil yapฤฑlandฤฑrฤฑn +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ Performans + +| Gรถrev | Sรผre | Notlar | +|-------|------|--------| +| Tarama (senkron) | 15-45 dk | Yalnฤฑzca ilk seferinde, iลŸ parรงacฤฑฤŸฤฑ tabanlฤฑ | +| Tarama (asenkron) | 5-15 dk | `--async` bayraฤŸฤฑ ile 2-3 kat daha hฤฑzlฤฑ | +| Derleme | 1-3 dk | ร–nbellekten hฤฑzlฤฑ yeniden derleme | +| Yeniden derleme | <1 dk | `--skip-scrape` ile | +| ZenginleลŸtirme (LOCAL) | 30-60 sn | Claude Code Max kullanฤฑr | +| ZenginleลŸtirme (API) | 20-40 sn | API anahtarฤฑ gerektirir | +| Video (altyazฤฑ) | 1-3 dk | YouTube/yerel, yalnฤฑzca altyazฤฑ | +| Video (gรถrsel) | 5-15 dk | + OCR kare รงฤฑkarma | +| Paketleme | 5-10 sn | Son .zip oluลŸturma | + +--- + +## ๐Ÿ†• v3.6.0'daki Yenilikler + +### ฤฐลŸ AkฤฑลŸฤฑ ร–n Ayarlarฤฑ +Analiz derinliฤŸini `--preset` ile kontrol edin: + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # Hฤฑzlฤฑ, yรผzeysel +skill-seekers create https://docs.react.dev/ --preset standard # Dengeli (varsayฤฑlan) +skill-seekers create https://docs.react.dev/ --preset comprehensive # Derin, kapsamlฤฑ +``` + +### YaลŸam Dรถngรผsรผ Bayraklarฤฑ +```bash +skill-seekers create https://docs.react.dev/ --dry-run # Tarama olmadan รถnizleme +skill-seekers create https://docs.react.dev/ --fresh # ร–nbelleฤŸi yoksay, tam yeniden tarama +skill-seekers create https://docs.react.dev/ --resume # Kesintiye uฤŸrayan iลŸi sรผrdรผr +skill-seekers create https://docs.react.dev/ --skip-scrape # Mevcut รงฤฑktฤฑyฤฑ yeniden paketle +``` + +### SaฤŸlฤฑk Kontrolรผ ve Araรงlar +```bash +skill-seekers doctor # Kurulum ve ortamฤฑ teลŸhis et +skill-seekers sync-config # Yapฤฑlandฤฑrma sapmasฤฑnฤฑ algฤฑla +skill-seekers stream # Bรผyรผk dokรผmanlar iรงin akฤฑลŸ alฤฑmฤฑ +skill-seekers update output/react/ # Artฤฑmlฤฑ gรผncelleme +skill-seekers multilang # ร‡ok dilli yetenek oluลŸturma +skill-seekers quality output/react/ # Kalite raporu (kapฤฑ iรงin --threshold 7 ekleyin: 7/10 altฤฑnda sฤฑfฤฑrdan farklฤฑ รงฤฑkฤฑลŸ kodu) +``` + +### RAG Parรงalama Seรงenekleri (paketleme) +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### Markette Yayฤฑnlama +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### Ek ฤฐsteฤŸe BaฤŸlฤฑ BaฤŸฤฑmlฤฑlฤฑklar +| Ek Paket | Kurulum | Amaรง | +|----------|---------|------| +| `browser` | `pip install "skill-seekers[browser]"` | SPA siteleri iรงin baลŸsฤฑz Playwright | +| `embedding` | `pip install "skill-seekers[embedding]"` | Gรถmme (embedding) sunucu desteฤŸi | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` vb. | Bulut depolama yรผklemesi | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | BirleลŸik vektรถr veritabanฤฑ yรผkleme baฤŸฤฑmlฤฑlฤฑklarฤฑ | + +--- + +## ๐Ÿ“š Dokรผmantasyon + +### BaลŸlarken +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ Yeniyseniz **BURADAN BAลžLAYIN!** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - Deneyimli kullanฤฑcฤฑlar iรงin hฤฑzlฤฑ baลŸlangฤฑรง +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Yaygฤฑn sorunlar ve รงรถzรผmler +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - Tek sayfalฤฑk hฤฑzlฤฑ referans + +### Mimari +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - 14 diyagramlฤฑ UML mimari genel bakฤฑลŸฤฑ +- **[docs/UML/exports/](docs/UML/exports/)** - PNG diyagram dฤฑลŸa aktarฤฑmlarฤฑ (paket genel bakฤฑลŸฤฑ + 13 sฤฑnฤฑf diyagramฤฑ) +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - Tam HTML API referansฤฑ (tรผm sฤฑnฤฑflar, iลŸlemler, รถznitelikler) +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML proje dosyasฤฑ ([StarUML](https://staruml.io/) ile aรงฤฑn) + +### Kฤฑlavuzlar +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - 10K-40K+ sayfalฤฑk dokรผmantasyonu iลŸleme +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI zenginleลŸtirme modlarฤฑ kฤฑlavuzu +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP entegrasyon kurulumu +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - ร‡oklu kaynak tarama +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - Video รงฤฑkarma kฤฑlavuzu + +### Entegrasyon Kฤฑlavuzlarฤฑ +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline (VS Code) +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - Tรผm RAG hatlarฤฑ + +--- + +## ๐Ÿ“ Lisans + +MIT Lisansฤฑ - ayrฤฑntฤฑlar iรงin [LICENSE](LICENSE) dosyasฤฑna bakฤฑn + +--- + +Keyifli yetenek oluลŸturmalar! ๐Ÿš€ + +--- + +## ๐Ÿ”’ Gรผvenlik + +[![MseeP.ai Gรผvenlik DeฤŸerlendirme Rozeti](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› Sponsorlar + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” tam modlu, OpenAI uyumlu bir AI รงฤฑkarฤฑm platformu. Skill Seekers, `ATLAS_API_KEY` ile `--target atlas` รผzerinden paketleme/zenginleลŸtirme hedefi olarak destekler. diff --git a/README.wehub.md b/README.wehub.md new file mode 100644 index 0000000..2dc880a --- /dev/null +++ b/README.wehub.md @@ -0,0 +1,7 @@ +# WeHub ๆฅๆบ่ฏดๆ˜Ž + +- ๅŽŸๅง‹้กน็›ฎ๏ผš`yusufkaraaslan/Skill_Seekers` +- ๅŽŸๅง‹ไป“ๅบ“๏ผšhttps://github.com/yusufkaraaslan/Skill_Seekers +- ๅฏผๅ…ฅๆ–นๅผ๏ผšไธŠๆธธ้ป˜่ฎคๅˆ†ๆ”ฏ็š„ๆœ€ๆ–ฐๅฟซ็…ง +- ๅŽŸไฝœ่€…ใ€็‰ˆๆƒๅ’Œ่ฎธๅฏ่ฏไฟกๆฏไปฅๅŽŸๅง‹ไป“ๅบ“ๅŠๆœฌไป“ๅบ“ LICENSE ไธบๅ‡† +- ๆœฌๆ–‡ไปถไป…็”จไบŽ่ฎฐๅฝ•ๆฅๆบ๏ผŒไธไปฃ่กจ WeHub ๆ˜ฏๅŽŸ้กน็›ฎไฝœ่€… diff --git a/README.zh-CN.md b/README.zh-CN.md new file mode 100644 index 0000000..f3ece28 --- /dev/null +++ b/README.zh-CN.md @@ -0,0 +1,1376 @@ +

+ Skill Seekers +

+ +# Skill Seekers + +[English](README.md) | ็ฎ€ไฝ“ไธญๆ–‡ | [ๆ—ฅๆœฌ่ชž](README.ja.md) | [ํ•œ๊ตญ์–ด](README.ko.md) | [Espaรฑol](README.es.md) | [Franรงais](README.fr.md) | [Deutsch](README.de.md) | [Portuguรชs](README.pt-BR.md) | [Tรผrkรงe](README.tr.md) | [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | [เคนเคฟเคจเฅเคฆเฅ€](README.hi.md) | [ะ ัƒััะบะธะน](README.ru.md) + +> โš ๏ธ **ๆœบๅ™จ็ฟป่ฏ‘ๅฃฐๆ˜Ž** +> +> ๆœฌๆ–‡ๆกฃ็”ฑ AI ่‡ชๅŠจ็ฟป่ฏ‘็”Ÿๆˆใ€‚่™ฝ็„ถๆˆ‘ไปฌๅŠชๅŠ›็กฎไฟ็ฟป่ฏ‘่ดจ้‡๏ผŒไฝ†ๅฏ่ƒฝๅญ˜ๅœจไธๅ‡†็กฎๆˆ–ไธ่‡ช็„ถ็š„่กจ่ฟฐใ€‚ +> +> ๆฌข่ฟŽ้€š่ฟ‡ [GitHub Issue #260](https://github.com/yusufkaraaslan/Skill_Seekers/issues/260) ๅธฎๅŠฉๆ”น่ฟ›็ฟป่ฏ‘๏ผๆ‚จ็š„ๅ้ฆˆๅฏนๆˆ‘ไปฌ้žๅธธๅฎ่ดตใ€‚ + +[![็‰ˆๆœฌ](https://img.shields.io/badge/version-3.7.0-blue.svg)](https://github.com/yusufkaraaslan/Skill_Seekers/releases) +[![่ฎธๅฏ่ฏ: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) +[![MCP ้›†ๆˆ](https://img.shields.io/badge/MCP-40-Tools-blue.svg)](https://modelcontextprotocol.io) +[![ๆต‹่ฏ•้€š่ฟ‡](https://img.shields.io/badge/Tests-3700%2B%20Passing-brightgreen.svg)](tests/) +[![้กน็›ฎ็œ‹ๆฟ](https://img.shields.io/badge/Project-Board-purple.svg)](https://github.com/users/yusufkaraaslan/projects/2) +[![PyPI ็‰ˆๆœฌ](https://badge.fury.io/py/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - ไธ‹่ฝฝ้‡](https://img.shields.io/pypi/dm/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI - Python ็‰ˆๆœฌ](https://img.shields.io/pypi/pyversions/skill-seekers.svg)](https://pypi.org/project/skill-seekers/) +[![PyPI Downloads](https://static.pepy.tech/personalized-badge/skill-seekers?period=total&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=downloads)](https://pepy.tech/projects/skill-seekers) +Trendshift +[![ๅฎ˜ๆ–น็ฝ‘็ซ™](https://img.shields.io/badge/Website-skillseekersweb.com-blue.svg)](https://skillseekersweb.com/) +[![ๅ…ณๆณจ Twitter](https://img.shields.io/twitter/follow/_yUSyUS_?style=social)](https://x.com/_yUSyUS_) +[![GitHub Stars](https://img.shields.io/github/stars/yusufkaraaslan/Skill_Seekers?style=social)](https://github.com/yusufkaraaslan/Skill_Seekers) + +**๐Ÿง  AI ็ณป็ปŸ็š„ๆ•ฐๆฎๅฑ‚ใ€‚** Skill Seekers ๅฐ†ๆ–‡ๆกฃ็ฝ‘็ซ™ใ€GitHub ไป“ๅบ“ใ€PDFใ€่ง†้ข‘ใ€็ฌ”่ฎฐๆœฌใ€Wiki ็ญ‰ 18 ็งๆฅๆบ็ฑปๅž‹่ฝฌๆขไธบ็ป“ๆž„ๅŒ–็Ÿฅ่ฏ†่ต„ไบงโ€”โ€”ๅฏๅœจๅ‡ ๅˆ†้’Ÿ๏ผˆ่€Œ้žๅ‡ ๅฐๆ—ถ๏ผ‰ๅ†…ไธบ AI ๆŠ€่ƒฝ๏ผˆClaudeใ€Geminiใ€OpenAI๏ผ‰ใ€RAG ๆตๆฐด็บฟ๏ผˆLangChainใ€LlamaIndexใ€Pinecone๏ผ‰ๅ’Œ AI ็ผ–็จ‹ๅŠฉๆ‰‹๏ผˆCursorใ€Windsurfใ€Cline๏ผ‰ๆไพ›ๆ”ฏๆŒใ€‚ + +> ๐ŸŒ **[่ฎฟ้—ฎ SkillSeekersWeb.com](https://skillseekersweb.com/)** - ๆต่งˆ 24+ ไธช้ข„่ฎพ้…็ฝฎ๏ผŒๅˆ†ไบซๆ‚จ็š„้…็ฝฎ๏ผŒ่ฎฟ้—ฎๅฎŒๆ•ดๆ–‡ๆกฃ๏ผ + +> ๐Ÿ“‹ **[ๆŸฅ็œ‹ๅผ€ๅ‘่ทฏ็บฟๅ›พๅ’ŒไปปๅŠก](https://github.com/users/yusufkaraaslan/projects/2)** - 10 ไธช็ฑปๅˆซ็š„ 134 ไธชไปปๅŠก๏ผŒ้€‰ๆ‹ฉไปปๆ„ไธ€ไธชๅ‚ไธŽ่ดก็Œฎ๏ผ + +## ๐ŸŒ ็”Ÿๆ€็ณป็ปŸ + +Skill Seekers ๆ˜ฏไธ€ไธชๅคšไป“ๅบ“้กน็›ฎใ€‚ไปฅไธ‹ๆ˜ฏๅ„้ƒจๅˆ†ๆ‰€ๅœจไฝ็ฝฎ๏ผš + +| ไป“ๅบ“ | ๆ่ฟฐ | ้“พๆŽฅ | +|------|------|------| +| **[Skill_Seekers](https://github.com/yusufkaraaslan/Skill_Seekers)** | ๆ ธๅฟƒ CLI ๅ’Œ MCP ๆœๅŠกๅ™จ๏ผˆๆœฌไป“ๅบ“๏ผ‰ | [PyPI](https://pypi.org/project/skill-seekers/) | +| **[skillseekersweb](https://github.com/yusufkaraaslan/skillseekersweb)** | ็ฝ‘็ซ™ๅ’Œๆ–‡ๆกฃ | [ๅœจ็บฟ](https://skillseekersweb.com/) | +| **[skill-seekers-configs](https://github.com/yusufkaraaslan/skill-seekers-configs)** | ็คพๅŒบ้…็ฝฎไป“ๅบ“ | | +| **[skill-seekers-action](https://github.com/yusufkaraaslan/skill-seekers-action)** | GitHub Action CI/CD | | +| **[skill-seekers-plugin](https://github.com/yusufkaraaslan/skill-seekers-plugin)** | Claude Code ๆ’ไปถ | | +| **[homebrew-skill-seekers](https://github.com/yusufkaraaslan/homebrew-skill-seekers)** | macOS Homebrew tap | | + +> **ๆƒณ่ฆ่ดก็Œฎ๏ผŸ** ็ฝ‘็ซ™ๅ’Œ้…็ฝฎไป“ๅบ“ๆ˜ฏๆ–ฐ่ดก็Œฎ่€…็š„ๆœ€ไฝณ่ตท็‚น๏ผ + +## ๐Ÿง  AI ็ณป็ปŸ็š„ๆ•ฐๆฎๅฑ‚ + +**Skill Seekers ๆ˜ฏ้€š็”จ้ข„ๅค„็†ๅฑ‚**๏ผŒไฝไบŽๅŽŸๅง‹ๆ–‡ๆกฃๅ’Œๆ‰€ๆœ‰ไฝฟ็”จๅฎƒ็š„ AI ็ณป็ปŸไน‹้—ดใ€‚ๆ— ่ฎบๆ‚จๆ˜ฏๅœจๆž„ๅปบ Claude ๆŠ€่ƒฝใ€LangChain RAG ๆตๆฐด็บฟ๏ผŒ่ฟ˜ๆ˜ฏ Cursor `.cursorrules` ๆ–‡ไปถโ€”โ€”ๆ•ฐๆฎๅ‡†ๅค‡ๅทฅไฝœๅฎŒๅ…จ็›ธๅŒใ€‚ๅช้œ€ๆ‰ง่กŒไธ€ๆฌก๏ผŒๅณๅฏๅฏผๅ‡บๅˆฐๆ‰€ๆœ‰็›ฎๆ ‡ๅนณๅฐใ€‚ + +```bash +# ไธ€ๆกๅ‘ฝไปค โ†’ ็ป“ๆž„ๅŒ–็Ÿฅ่ฏ†่ต„ไบง +skill-seekers create https://docs.react.dev/ +# ๆˆ–: skill-seekers create facebook/react +# ๆˆ–: skill-seekers create ./my-project + +# ๅฏผๅ‡บๅˆฐไปปๆ„ AI ็ณป็ปŸ +skill-seekers package output/react --target claude # โ†’ Claude AI ๆŠ€่ƒฝ (ZIP) +skill-seekers package output/react --target langchain # โ†’ LangChain Documents +skill-seekers package output/react --target llama-index # โ†’ LlamaIndex TextNodes +skill-seekers package output/react --target cursor # โ†’ .cursorrules +skill-seekers package output/react --target ibm-bob # โ†’ IBM Bob ๆŠ€่ƒฝ็›ฎๅฝ• +``` + +### ๅฏๆž„ๅปบ็š„่พ“ๅ‡บ + +| ่พ“ๅ‡บ | ็›ฎๆ ‡ | ๅบ”็”จๅœบๆ™ฏ | +|------|------|---------| +| **Claude ๆŠ€่ƒฝ** (ZIP + YAML) | `--target claude` | Claude Codeใ€Claude API | +| **Gemini ๆŠ€่ƒฝ** (tar.gz) | `--target gemini` | Google Gemini | +| **OpenAI / Custom GPT** (ZIP) | `--target openai` | GPT-4oใ€่‡ชๅฎšไน‰ๅŠฉๆ‰‹ | +| **LangChain Documents** | `--target langchain` | QA ้“พใ€ๆ™บ่ƒฝไฝ“ใ€ๆฃ€็ดขๅ™จ | +| **LlamaIndex TextNodes** | `--target llama-index` | ๆŸฅ่ฏขๅผ•ๆ“Žใ€ๅฏน่ฏๅผ•ๆ“Ž | +| **Haystack Documents** | `--target haystack` | ไผไธš็บง RAG ๆตๆฐด็บฟ | +| **Pinecone ๅฐฑ็ปช** (Markdown) | `--target markdown` | ๅ‘้‡ไธŠไผ  | +| **ChromaDB / FAISS / Qdrant** | `--target chroma/faiss/qdrant` | ๆœฌๅœฐๅ‘้‡ๆ•ฐๆฎๅบ“ | +| **IBM Bob ๆŠ€่ƒฝ**๏ผˆ็›ฎๅฝ•๏ผ‰ | `--target ibm-bob` | IBM Bob ้กน็›ฎ/ๅ…จๅฑ€ๆŠ€่ƒฝ | +| **Cursor** `.cursorrules` | `--target markdown` โ†’ ๅคๅˆถ SKILL.md | Cursor IDE `.cursorrules` | +| **Windsurf / Cline / Continue** | `--target claude` โ†’ ๅคๅˆถ | VS Codeใ€IntelliJใ€Vim | + +### ไธบไป€ไนˆ้€‰ๆ‹ฉ Skill Seekers + +- โšก **ๅฟซ 99%** โ€” ๆ•ฐๅคฉ็š„ๆ‰‹ๅŠจๆ•ฐๆฎๅ‡†ๅค‡ โ†’ 15โ€“45 ๅˆ†้’Ÿ +- ๐ŸŽฏ **AI ๆŠ€่ƒฝ่ดจ้‡** โ€” 500+ ่กŒ็š„ SKILL.md ๆ–‡ไปถ๏ผŒๅŒ…ๅซ็คบไพ‹ใ€ๆจกๅผๅ’ŒๆŒ‡ๅ— +- ๐Ÿ“Š **RAG ๅฐฑ็ปช็š„ๅˆ†ๅ—** โ€” ๆ™บ่ƒฝๅˆ†ๅ—ไฟ็•™ไปฃ็ ๅ—ๅนถ็ปดๆŠคไธŠไธ‹ๆ–‡ +- ๐ŸŽฌ **่ง†้ข‘** โ€” ไปŽ YouTube ๅ’Œๆœฌๅœฐ่ง†้ข‘ๆๅ–ไปฃ็ ใ€ๅญ—ๅน•ๅ’Œ็ป“ๆž„ๅŒ–็Ÿฅ่ฏ† +- ๐Ÿ”„ **ๅคšๆบๆ”ฏๆŒ** โ€” ๅฐ† 18 ็งๆฅๆบ็ฑปๅž‹๏ผˆๆ–‡ๆกฃใ€GitHubใ€PDFใ€่ง†้ข‘ใ€็ฌ”่ฎฐๆœฌใ€Wiki ็ญ‰๏ผ‰ๅˆๅนถไธบไธ€ไธช็Ÿฅ่ฏ†่ต„ไบง +- ๐ŸŒ **ไธ€ๆฌกๅ‡†ๅค‡๏ผŒๅฏผๅ‡บๆ‰€ๆœ‰็›ฎๆ ‡** โ€” ๆ— ้œ€้‡ๆ–ฐๆŠ“ๅ–ๅณๅฏๅฐ†ๅŒไธ€่ต„ไบงๅฏผๅ‡บๅˆฐ 21 ไธชๅนณๅฐ +- โœ… **ไน…็ป่€ƒ้ชŒ** โ€” 3,700+ ๆต‹่ฏ•๏ผŒ24+ ๆก†ๆžถ้ข„่ฎพ๏ผŒ็”Ÿไบงๅฐฑ็ปช + +## ๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹๏ผˆ3 ๆกๅ‘ฝไปค๏ผ‰ + +```bash +# 1. ๅฎ‰่ฃ… +pip install skill-seekers + +# 2. ไปŽไปปๆ„ๆฅๆบๅˆ›ๅปบๆŠ€่ƒฝ +skill-seekers create https://docs.django.com/ + +# 3. ไธบๆ‚จ็š„ AI ๅนณๅฐๆ‰“ๅŒ… +skill-seekers package output/django --target claude +``` + +**ๅฐฑๆ˜ฏ่ฟ™ไนˆ็ฎ€ๅ•๏ผ** ๆ‚จ็Žฐๅœจๅทฒๆ‹ฅๆœ‰ๅฏ็›ดๆŽฅไฝฟ็”จ็š„ `output/django-claude.zip`ใ€‚ + +```bash +# ไฝฟ็”จๅ…ถไป– AI ไปฃ็†่ฟ›่กŒๅขžๅผบ๏ผˆ้ป˜่ฎค๏ผšclaude๏ผ‰ +skill-seekers create https://docs.django.com/ --agent kimi +skill-seekers create https://docs.django.com/ --agent codex +skill-seekers create https://docs.django.com/ --agent-cmd "my-custom-agent run" +``` + +### ๐Ÿ›ฐ๏ธ AI ้ฉฑๅŠจ็š„้กน็›ฎๆ‰ซๆ๏ผˆๆ–ฐๅŠŸ่ƒฝ๏ผ‰ + +ๅฐ† `scan` ๆŒ‡ๅ‘ไปปๆ„้กน็›ฎ๏ผŒAI ไปฃ็†ไผš่ฏปๅ–ๅ…ถๆธ…ๅ•ๆ–‡ไปถใ€READMEใ€Dockerfile/CI ๅ’Œ้‡‡ๆ ท็š„ๆบ็ ๅฏผๅ…ฅโ€”โ€”็„ถๅŽไธบๆฏไธชๆฃ€ๆต‹ๅˆฐ็š„ๆก†ๆžถ็”Ÿๆˆไธ€ไธช้…็ฝฎๆ–‡ไปถ๏ผŒๅนถไธบๆ‚จ่‡ชๅทฑ็š„ไปฃ็ ็”Ÿๆˆ `-codebase.json`ใ€‚ๅฎƒไผšๅ›บๅฎšๆฃ€ๆต‹ๅˆฐ็š„็‰ˆๆœฌ๏ผŒๅ› ๆญค้‡ๆ–ฐ่ฟ่กŒๆ—ถไผšๆŠฅๅ‘Š็‰ˆๆœฌๅ‡็บง๏ผš + +```bash +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, vite.json, tailwind.json, jest.json, my-react-app-codebase.json + +# ็„ถๅŽๆž„ๅปบๅ…ถไธญไปปๆ„ไธ€ไธช +skill-seekers create ./configs/scanned/react.json +``` + +ๅฆ‚ๆžœๆŸไธชๆฃ€ๆต‹็ป“ๆžœๆฒกๆœ‰็Žฐๆˆ้ข„่ฎพ๏ผŒAI ไผš็”Ÿๆˆๅ…จๆ–ฐ้…็ฝฎ๏ผ›้€€ๅ‡บๆ—ถๆ‚จๅฏไปฅ้€‰ๆ‹ฉๅฐ†ๅ…ถๅ‘ๅธƒๅ›ž [็คพๅŒบๆณจๅ†Œ่กจ](https://github.com/yusufkaraaslan/skill-seekers-configs)ใ€‚ + +### ๅ…ถไป–ๆฅๆบ๏ผˆๆ”ฏๆŒ 18 ็ง๏ผ‰ + +```bash +# GitHub ไป“ๅบ“ +skill-seekers create facebook/react + +# ๆœฌๅœฐ้กน็›ฎ +skill-seekers create ./my-project + +# PDF ๆ–‡ๆกฃ +skill-seekers create manual.pdf + +# Word ๆ–‡ๆกฃ +skill-seekers create report.docx + +# EPUB ็”ตๅญไนฆ +skill-seekers create book.epub + +# Jupyter ็ฌ”่ฎฐๆœฌ +skill-seekers create notebook.ipynb + +# OpenAPI ่ง„่Œƒ +skill-seekers create openapi.yaml + +# PowerPoint ๆผ”็คบๆ–‡็จฟ +skill-seekers create presentation.pptx + +# AsciiDoc ๆ–‡ๆกฃ +skill-seekers create guide.adoc + +# ๆœฌๅœฐ HTML ๆ–‡ไปถ๏ผˆๆ นๆฎๆ‰ฉๅฑ•ๅ่‡ชๅŠจๆฃ€ๆต‹๏ผ‰ +skill-seekers create page.html + +# ๆ•ดไธช HTML ๆ–‡ไปถ็›ฎๅฝ•๏ผˆ่‡ชๅŠจๆฃ€ๆต‹ไปฅ HTML ไธบไธป็š„็›ฎๅฝ•๏ผ‰ +skill-seekers create ./mirror_output/site/ + +# ๅœจไปฃ็ ๆททๆ‚็š„็›ฎๅฝ•ไธŠๅผบๅˆถ HTML ๆจกๅผ +skill-seekers create ./repo/ --html-path ./repo/docs/build/html/ + +# RSS/Atom ่ฎข้˜…ๆบ +skill-seekers create feed.rss + +# Man ๆ‰‹ๅ†Œ้กต +skill-seekers create curl.1 + +# ่ง†้ข‘๏ผˆYouTubeใ€Vimeo ๆˆ–ๆœฌๅœฐๆ–‡ไปถ โ€” ้œ€่ฆ skill-seekers[video]๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial +# ้ฆ–ๆฌกไฝฟ็”จ๏ผŸ่‡ชๅŠจๅฎ‰่ฃ… GPU ๆ„Ÿ็Ÿฅ็š„่ง†่ง‰ไพ่ต–๏ผš +skill-seekers create --setup + +# Confluence ็ปดๅŸบ +skill-seekers create --space-key TEAM --name wiki + +# Notion ้กต้ข +skill-seekers create --database-id ... --name docs + +# Slack/Discord ่Šๅคฉ่ฎฐๅฝ• +skill-seekers create --chat-export-path ./slack-export --name team-chat +``` + +### ๅฏผๅ‡บๅˆฐไปปไฝ•ๅœฐๆ–น + +```bash +# ไธบๅคšไธชๅนณๅฐๆ‰“ๅŒ… +for platform in claude gemini openai langchain; do + skill-seekers package output/django --target $platform +done +``` + +## ไป€ไนˆๆ˜ฏ Skill Seekers๏ผŸ + +Skill Seekers ๆ˜ฏ **AI ็ณป็ปŸ็š„ๆ•ฐๆฎๅฑ‚**๏ผŒๅฐ† 18 ็งๆฅๆบ็ฑปๅž‹โ€”โ€”ๆ–‡ๆกฃ็ฝ‘็ซ™ใ€GitHub ไป“ๅบ“ใ€PDFใ€่ง†้ข‘ใ€Jupyter ็ฌ”่ฎฐๆœฌใ€Word/EPUB/AsciiDoc ๆ–‡ๆกฃใ€OpenAPI ่ง„่Œƒใ€PowerPoint ๆผ”็คบๆ–‡็จฟใ€RSS ่ฎข้˜…ๆบใ€Man ๆ‰‹ๅ†Œ้กตใ€Confluence ็ปดๅŸบใ€Notion ้กต้ขใ€Slack/Discord ่Šๅคฉ่ฎฐๅฝ•็ญ‰โ€”โ€”่ฝฌๆขไธบ้€‚็”จไบŽๆ‰€ๆœ‰ AI ็›ฎๆ ‡็š„็ป“ๆž„ๅŒ–็Ÿฅ่ฏ†่ต„ไบง๏ผš + +| ไฝฟ็”จๅœบๆ™ฏ | ่Žทๅพ—็š„ๅ†…ๅฎน | ็คบไพ‹ | +|---------|-----------|------| +| **AI ๆŠ€่ƒฝ** | ๅฎŒๆ•ด็š„ SKILL.md + ๅ‚่€ƒๆ–‡ไปถ | Claude Codeใ€Geminiใ€GPT | +| **RAG ๆตๆฐด็บฟ** | ๅธฆไธฐๅฏŒๅ…ƒๆ•ฐๆฎ็š„ๅˆ†ๅ—ๆ–‡ๆกฃ | LangChainใ€LlamaIndexใ€Haystack | +| **ๅ‘้‡ๆ•ฐๆฎๅบ“** | ้ข„ๆ ผๅผๅŒ–็š„ๅพ…ไธŠไผ ๆ•ฐๆฎ | Pineconeใ€Chromaใ€Weaviateใ€FAISS | +| **AI ็ผ–็จ‹ๅŠฉๆ‰‹** | IDE AI ่‡ชๅŠจ่ฏปๅ–็š„ไธŠไธ‹ๆ–‡ๆ–‡ไปถ | Cursorใ€Windsurfใ€Clineใ€Continue.dev | + +## ๐Ÿ“š ๆ–‡ๆกฃ + +| ๆˆ‘ๆƒณ่ฆ... | ้˜…่ฏปๆญคๆ–‡ๆกฃ | +|--------------|-----------| +| **ๅฟซ้€ŸไธŠๆ‰‹** | [ๅฟซ้€Ÿๅผ€ๅง‹](docs/getting-started/02-quick-start.md) - 3 ๆกๅ‘ฝไปคๆž„ๅปบ้ฆ–ไธชๆŠ€่ƒฝ | +| **็†่งฃๆฆ‚ๅฟต** | [ๆ ธๅฟƒๆฆ‚ๅฟต](docs/user-guide/01-core-concepts.md) - ๅทฅไฝœๅŽŸ็† | +| **ๆŠ“ๅ–ๆฅๆบ** | [ๆŠ“ๅ–ๆŒ‡ๅ—](docs/user-guide/02-scraping.md) - ๆ‰€ๆœ‰ๆฅๆบ็ฑปๅž‹ | +| **ๅขžๅผบๆŠ€่ƒฝ** | [ๅขžๅผบๆŒ‡ๅ—](docs/user-guide/03-enhancement.md) - AI ๅขžๅผบ | +| **ๅฏผๅ‡บๆŠ€่ƒฝ** | [ๆ‰“ๅŒ…ๆŒ‡ๅ—](docs/user-guide/04-packaging.md) - ๅนณๅฐๅฏผๅ‡บ | +| **ๆŸฅ่ฏขๅ‘ฝไปค** | [CLI ๅ‚่€ƒ](docs/reference/CLI_REFERENCE.md) - ๅ…จ้ƒจ 20 ๆกๅ‘ฝไปค | +| **่ฟ›่กŒ้…็ฝฎ** | [้…็ฝฎๆ ผๅผ](docs/reference/CONFIG_FORMAT.md) - JSON ่ง„่Œƒ | +| **่งฃๅ†ณ้—ฎ้ข˜** | [ๆ•…้šœๆŽ’้™ค](docs/user-guide/06-troubleshooting.md) - ๅธธ่ง้—ฎ้ข˜ | + +**ๅฎŒๆ•ดๆ–‡ๆกฃ๏ผš** [docs/README.md](docs/README.md) + +Skill Seekers ้€š่ฟ‡ไปฅไธ‹ๆญฅ้ชคไปฃๆ›ฟๆ•ฐๅคฉ็š„ๆ‰‹ๅŠจ้ข„ๅค„็†ๅทฅไฝœ๏ผš + +1. **้‡‡้›†** โ€” ๆ–‡ๆกฃใ€GitHub ไป“ๅบ“ใ€ๆœฌๅœฐไปฃ็ ๅบ“ใ€PDFใ€่ง†้ข‘ใ€็ฌ”่ฎฐๆœฌใ€Wiki ็ญ‰ 10 ็งไปฅไธŠๆฅๆบ็ฑปๅž‹ +2. **ๅˆ†ๆž** โ€” ๆทฑๅบฆ AST ่งฃๆžใ€ๆจกๅผๆฃ€ๆต‹ใ€API ๆๅ– +3. **็ป“ๆž„ๅŒ–** โ€” ๅธฆๅ…ƒๆ•ฐๆฎ็š„ๅˆ†็ฑปๅ‚่€ƒๆ–‡ไปถ +4. **ๅขžๅผบ** โ€” AI ้ฉฑๅŠจ็š„ SKILL.md ็”Ÿๆˆ๏ผˆClaudeใ€Gemini ๆˆ–ๆœฌๅœฐ๏ผ‰ +5. **ๅฏผๅ‡บ** โ€” ไปŽไธ€ไธช่ต„ไบงๅฏผๅ‡บๅˆฐ 16 ็งๅนณๅฐไธ“็”จๆ ผๅผ + +## ไธบไป€ไนˆไฝฟ็”จ Skill Seekers๏ผŸ + +### ้ขๅ‘ AI ๆŠ€่ƒฝๆž„ๅปบ่€…๏ผˆClaudeใ€Geminiใ€OpenAI๏ผ‰ + +- ๐ŸŽฏ **็”Ÿไบง็บงๆŠ€่ƒฝ** โ€” 500+ ่กŒ็š„ SKILL.md ๆ–‡ไปถ๏ผŒๅŒ…ๅซไปฃ็ ็คบไพ‹ใ€ๆจกๅผๅ’ŒๆŒ‡ๅ— +- ๐Ÿ”„ **ๅขžๅผบๅทฅไฝœๆต** โ€” ๅบ”็”จ `security-focus`ใ€`architecture-comprehensive` ๆˆ–่‡ชๅฎšไน‰ YAML ้ข„่ฎพ +- ๐ŸŽฎ **ไปปๆ„้ข†ๅŸŸ** โ€” ๆธธๆˆๅผ•ๆ“Ž๏ผˆGodotใ€Unity๏ผ‰ใ€ๆก†ๆžถ๏ผˆReactใ€Django๏ผ‰ใ€ๅ†…้ƒจๅทฅๅ…ท +- ๐Ÿ”ง **ๅ›ข้˜Ÿๅไฝœ** โ€” ๅฐ†ๅ†…้ƒจๆ–‡ๆกฃ + ไปฃ็ ๆ•ดๅˆไธบๅ•ไธ€ไบ‹ๅฎžๆฅๆบ +- ๐Ÿ“š **้ซ˜่ดจ้‡** โ€” AI ๅขžๅผบ๏ผŒๅŒ…ๅซ็คบไพ‹ใ€ๅฟซ้€Ÿๅ‚่€ƒๅ’Œๅฏผ่ˆชๆŒ‡ๅ— + +### ้ขๅ‘ RAG ๆž„ๅปบ่€…ๅ’Œ AI ๅทฅ็จ‹ๅธˆ + +- ๐Ÿค– **RAG ๅฐฑ็ปชๆ•ฐๆฎ** โ€” ้ข„ๅˆ†ๅ—็š„ LangChain `Documents`ใ€LlamaIndex `TextNodes`ใ€Haystack `Documents` +- ๐Ÿš€ **ๅฟซ 99%** โ€” ๆ•ฐๅคฉ็š„้ข„ๅค„็† โ†’ 15โ€“45 ๅˆ†้’Ÿ +- ๐Ÿ“Š **ๆ™บ่ƒฝๅ…ƒๆ•ฐๆฎ** โ€” ็ฑปๅˆซใ€ๆฅๆบใ€็ฑปๅž‹ โ†’ ๆ›ด้ซ˜็š„ๆฃ€็ดข็ฒพๅบฆ +- ๐Ÿ”„ **ๅคšๆบๆ”ฏๆŒ** โ€” ๅœจไธ€ไธชๆตๆฐด็บฟไธญๅˆๅนถๆ–‡ๆกฃ + GitHub + PDF + ่ง†้ข‘ +- ๐ŸŒ **ๅนณๅฐๆ— ๅ…ณ** โ€” ๆ— ้œ€้‡ๆ–ฐๆŠ“ๅ–ๅณๅฏๅฏผๅ‡บๅˆฐไปปๆ„ๅ‘้‡ๆ•ฐๆฎๅบ“ๆˆ–ๆก†ๆžถ + +### ้ขๅ‘ AI ็ผ–็จ‹ๅŠฉๆ‰‹็”จๆˆท + +- ๐Ÿ’ป **Cursor / Windsurf / Cline** โ€” ่‡ชๅŠจ็”Ÿๆˆ `.cursorrules` / `.windsurfrules` / `.clinerules` +- ๐ŸŽฏ **ๆŒไน…ไธŠไธ‹ๆ–‡** โ€” AI "ไบ†่งฃ"ๆ‚จ็š„ๆก†ๆžถ๏ผŒๆ— ้œ€้‡ๅคๆ็คบ +- ๐Ÿ“š **ๅง‹็ปˆๆœ€ๆ–ฐ** โ€” ๆ–‡ๆกฃๆ›ดๆ–ฐๆ—ถๅฏๅœจๅ‡ ๅˆ†้’Ÿๅ†…ๆ›ดๆ–ฐไธŠไธ‹ๆ–‡ + +## ๆ ธๅฟƒๅŠŸ่ƒฝ + +### ๐ŸŒ ๆ–‡ๆกฃๆŠ“ๅ– +- โœ… **ๆ™บ่ƒฝ SPA ๅ‘็Žฐ** - ้’ˆๅฏน JavaScript SPA ็ฝ‘็ซ™็š„ไธ‰ๅฑ‚ๅ‘็Žฐๆœบๅˆถ๏ผˆsitemap.xml โ†’ llms.txt โ†’ ๆ— ๅคดๆต่งˆๅ™จๆธฒๆŸ“๏ผ‰ +- โœ… **llms.txt ๆ”ฏๆŒ** - ่‡ชๅŠจๆฃ€ๆต‹ๅนถไฝฟ็”จ LLM ๅฐฑ็ปชๆ–‡ๆกฃๆ–‡ไปถ๏ผˆๅฟซ 10 ๅ€๏ผ‰ +- โœ… **้€š็”จๆŠ“ๅ–ๅ™จ** - ้€‚็”จไบŽไปปๆ„ๆ–‡ๆกฃ็ฝ‘็ซ™ +- โœ… **ๆ™บ่ƒฝๅˆ†็ฑป** - ๆŒ‰ไธป้ข˜่‡ชๅŠจ็ป„็ป‡ๅ†…ๅฎน +- โœ… **ไปฃ็ ่ฏญ่จ€ๆฃ€ๆต‹** - ่ฏ†ๅˆซ Pythonใ€JavaScriptใ€C++ใ€GDScript ็ญ‰ +- โœ… **24+ ๅณ็”จ้ข„่ฎพ** - Godotใ€Reactใ€Vueใ€Djangoใ€FastAPI ็ญ‰ + +### ๐Ÿ“„ PDF ๆ”ฏๆŒ +- โœ… **ๅŸบ็ก€ PDF ๆๅ–** - ไปŽ PDF ๆๅ–ๆ–‡ๆœฌใ€ไปฃ็ ๅ’Œๅ›พ็‰‡ +- โœ… **ๆ‰ซๆไปถ OCR** - ไปŽๆ‰ซๆๆ–‡ๆกฃๆๅ–ๆ–‡ๆœฌ +- โœ… **ๅฏ†็ ไฟๆŠค PDF** - ๅค„็†ๅŠ ๅฏ† PDF +- โœ… **่กจๆ ผๆๅ–** - ๆๅ–ๅคๆ‚่กจๆ ผ +- โœ… **ๅนถ่กŒๅค„็†** - ๅคงๅž‹ PDF ๅฟซ 3 ๅ€ +- โœ… **ๆ™บ่ƒฝ็ผ“ๅญ˜** - ้‡ๅค่ฟ่กŒๅฟซ 50% + +### ๐ŸŽฌ ่ง†้ข‘ๆๅ– +- โœ… **YouTube ๅ’Œๆœฌๅœฐ่ง†้ข‘** - ไปŽ่ง†้ข‘ๆๅ–ๅญ—ๅน•ใ€ๅฑๅน•ไปฃ็ ๅ’Œ็ป“ๆž„ๅŒ–็Ÿฅ่ฏ† +- โœ… **่ง†่ง‰ๅธงๅˆ†ๆž** - OCR ๆๅ–ไปฃ็ ็ผ–่พ‘ๅ™จใ€็ปˆ็ซฏใ€ๅนป็ฏ็‰‡ๅ’Œๅ›พ่กจๅ†…ๅฎน +- โœ… **GPU ่‡ชๅŠจๆฃ€ๆต‹** - ่‡ชๅŠจๅฎ‰่ฃ…ๆญฃ็กฎ็š„ PyTorch ็‰ˆๆœฌ๏ผˆCUDA/ROCm/MPS/CPU๏ผ‰ +- โœ… **AI ๅขžๅผบ** - ไธค้˜ถๆฎตๅขžๅผบ๏ผšๆธ…็† OCR + ็”Ÿๆˆ็ฒพ็พŽ SKILL.md +- โœ… **ๆ—ถ้—ด่ฃๅ‰ช** - ๆๅ–่ง†้ข‘็š„็‰นๅฎš็‰‡ๆฎต๏ผˆ`--start-time`ใ€`--end-time`๏ผ‰ +- โœ… **ๆ’ญๆ”พๅˆ—่กจๆ”ฏๆŒ** - ๆ‰น้‡ๅค„็† YouTube ๆ’ญๆ”พๅˆ—่กจไธญ็š„ๆ‰€ๆœ‰่ง†้ข‘ +- โœ… **Vision API ๅ›ž้€€** - ๅฏนไฝŽ็ฝฎไฟกๅบฆ OCR ๅธงไฝฟ็”จ Claude Vision + +### ๐Ÿ™ GitHub ไป“ๅบ“ๅˆ†ๆž +- โœ… **ๆทฑๅบฆไปฃ็ ๅˆ†ๆž** - ๆ”ฏๆŒ Pythonใ€JavaScriptใ€TypeScriptใ€Javaใ€C++ใ€Go ็š„ AST ่งฃๆž +- โœ… **API ๆๅ–** - ๅ‡ฝๆ•ฐใ€็ฑปใ€ๆ–นๆณ•ๅŠๅ‚ๆ•ฐๅ’Œ็ฑปๅž‹ +- โœ… **ไป“ๅบ“ๅ…ƒๆ•ฐๆฎ** - READMEใ€ๆ–‡ไปถๆ ‘ใ€่ฏญ่จ€็ปŸ่ฎกใ€ๆ˜Ÿๆ ‡/ๅˆ†ๆ”ฏๆ•ฐ +- โœ… **GitHub Issues ๅ’Œ PR** - ่Žทๅ–ๅธฆๆ ‡็ญพๅ’Œ้‡Œ็จ‹็ข‘็š„ๅผ€ๆ”พ/ๅทฒๅ…ณ้—ญ issues +- โœ… **CHANGELOG ๅ’Œๅ‘ๅธƒ** - ่‡ชๅŠจๆๅ–็‰ˆๆœฌๅކๅฒ +- โœ… **ๅ†ฒ็ชๆฃ€ๆต‹** - ๅฏนๆฏ”ๆ–‡ๆกฃๅŒ– API ไธŽๅฎž้™…ไปฃ็ ๅฎž็Žฐ +- โœ… **MCP ้›†ๆˆ** - ่‡ช็„ถ่ฏญ่จ€๏ผš"ๆŠ“ๅ– GitHub ไป“ๅบ“ facebook/react" + +### ๐Ÿ”„ ็ปŸไธ€ๅคšๆบๆŠ“ๅ– +- โœ… **ๅˆๅนถๅคšไธชๆฅๆบ** - ๅœจไธ€ไธชๆŠ€่ƒฝไธญๆททๅˆๆ–‡ๆกฃ + GitHub + PDF +- โœ… **ๅ†ฒ็ชๆฃ€ๆต‹** - ่‡ชๅŠจๅ‘็Žฐๆ–‡ๆกฃไธŽไปฃ็ ไน‹้—ด็š„ๅทฎๅผ‚ +- โœ… **ๆ™บ่ƒฝๅˆๅนถ** - ๅŸบไบŽ่ง„ๅˆ™ๆˆ– AI ้ฉฑๅŠจ็š„ๅ†ฒ็ช่งฃๅ†ณ +- โœ… **้€ๆ˜ŽๆŠฅๅ‘Š** - ๅธฆ โš ๏ธ ่ญฆๅ‘Š็š„ๅนถๆŽ’ๅฏนๆฏ” +- โœ… **ๆ–‡ๆกฃๅทฎ่ทๅˆ†ๆž** - ่ฏ†ๅˆซ่ฟ‡ๆ—ถๆ–‡ๆกฃๅ’Œๆœชๆ–‡ๆกฃๅŒ–ๅŠŸ่ƒฝ +- โœ… **ๅ•ไธ€ไบ‹ๅฎžๆฅๆบ** - ไธ€ไธชๆŠ€่ƒฝๅŒๆ—ถๅฑ•็คบๆ„ๅ›พ๏ผˆๆ–‡ๆกฃ๏ผ‰ๅ’Œ็Žฐๅฎž๏ผˆไปฃ็ ๏ผ‰ +- โœ… **ๅ‘ๅŽๅ…ผๅฎน** - ้—็•™ๅ•ๆบ้…็ฝฎ็ปง็ปญๆœ‰ๆ•ˆ + +### ๐Ÿค– ๅคš LLM ๅนณๅฐๆ”ฏๆŒ +- โœ… **12 ไธช LLM ๅนณๅฐ** - Claude AIใ€Google Geminiใ€OpenAI ChatGPTใ€MiniMax AIใ€้€š็”จ Markdownใ€OpenCodeใ€Kimi๏ผˆๆœˆไน‹ๆš—้ข๏ผ‰ใ€DeepSeek AIใ€Qwen๏ผˆ้˜ฟ้‡Œๅทดๅทด๏ผ‰ใ€OpenRouterใ€Together AIใ€Fireworks AI +- โœ… **้€š็”จๆŠ“ๅ–** - ็›ธๅŒๆ–‡ๆกฃ้€‚็”จไบŽๆ‰€ๆœ‰ๅนณๅฐ +- โœ… **ๅนณๅฐไธ“็”จๆ‰“ๅŒ…** - ้’ˆๅฏนๆฏไธช LLM ็š„ไผ˜ๅŒ–ๆ ผๅผ +- โœ… **ไธ€้”ฎๅฏผๅ‡บ** - `--target` ๆ ‡ๅฟ—้€‰ๆ‹ฉๅนณๅฐ +- โœ… **ๅฏ้€‰ไพ่ต–** - ไป…ๅฎ‰่ฃ…ๆ‰€้œ€ๅ†…ๅฎน +- โœ… **100% ๅ‘ๅŽๅ…ผๅฎน** - ็Žฐๆœ‰ Claude ๅทฅไฝœๆตๆ— ้œ€ๆ›ดๆ”น + +| ๅนณๅฐ | ๆ ผๅผ | ไธŠไผ  | ๅขžๅผบ | API Key | ่‡ชๅฎšไน‰็ซฏ็‚น | +|------|------|------|------|---------|-----------| +| **Claude AI** | ZIP + YAML | โœ… ่‡ชๅŠจ | โœ… ๆ˜ฏ | ANTHROPIC_API_KEY | ANTHROPIC_BASE_URL | +| **Google Gemini** | tar.gz | โœ… ่‡ชๅŠจ | โœ… ๆ˜ฏ | GOOGLE_API_KEY | - | +| **OpenAI ChatGPT** | ZIP + Vector Store | โœ… ่‡ชๅŠจ | โœ… ๆ˜ฏ | OPENAI_API_KEY | - | +| **MiniMax AI** | ZIP + Knowledge Files | โœ… ่‡ชๅŠจ | โœ… ๆ˜ฏ | MINIMAX_API_KEY | - | +| **้€š็”จ Markdown** | ZIP | โŒ ๆ‰‹ๅŠจ | โŒ ๅฆ | - | - | + +```bash +# Claude๏ผˆ้ป˜่ฎค - ๆ— ้œ€ๆ›ดๆ”น๏ผ๏ผ‰ +skill-seekers package output/react/ +skill-seekers upload react.zip + +# Google Gemini +pip install skill-seekers[gemini] +skill-seekers package output/react/ --target gemini +skill-seekers upload react-gemini.tar.gz --target gemini + +# OpenAI ChatGPT +pip install skill-seekers[openai] +skill-seekers package output/react/ --target openai +skill-seekers upload react-openai.zip --target openai + +# MiniMax AI +pip install skill-seekers[minimax] +skill-seekers package output/react/ --target minimax +skill-seekers upload react-minimax.zip --target minimax + +# ้€š็”จ Markdown๏ผˆ้€š็”จๅฏผๅ‡บ๏ผ‰ +skill-seekers package output/react/ --target markdown +# Markdown ๆ–‡ไปถๅฏ็›ดๆŽฅ็”จไบŽไปปๆ„ LLM +``` + +
+๐Ÿ”ง ไฝฟ็”จๆ‚จ่‡ชๅทฑ็š„ AI ๆไพ›ๅ•†๏ผˆOpenAI ๅ…ผๅฎน็ซฏ็‚น + ่ฎข้˜…่ฎกๅˆ’๏ผŒๆ— ้œ€ Anthropic ้ขๅบฆ๏ผ‰ + +ๅฏ้€‰็š„ AI **ๅขžๅผบ**ๆญฅ้ชค๏ผˆ็”ฑ `create`ใ€`scan` ๅ’Œ `enhance` ไฝฟ็”จ๏ผ‰**ไธ้œ€่ฆ** Anthropic ๅฏ†้’ฅใ€‚ๆ‚จๆœ‰ไธ‰็งๆ–นๅผไธบๅ…ถไพ›่ƒฝ๏ผš + +**1. ไฝฟ็”จๆ‚จๅทฒไป˜่ดน็š„่ฎข้˜… โ€” ๅฎŒๅ…จๆ— ้œ€ API ้ขๅบฆ๏ผˆLOCAL ไปฃ็†ๆจกๅผ๏ผ‰** + +Skill Seekers ๅฏไปฅ่ฐƒ็”จๆ‚จๅทฒ็™ปๅฝ•็š„็ผ–็จ‹ไปฃ็† CLI๏ผŒๅ› ๆญคๅขžๅผบไผšไฝฟ็”จๆ‚จ็Žฐๆœ‰็š„่ฎข้˜…่ฎกๅˆ’่€Œ้žๆŒ‰้‡่ฎก่ดน็š„ API token๏ผš + +```bash +skill-seekers create --agent codex # OpenAI Codex CLI โ†’ ๆ‚จ็š„ ChatGPT Plus +skill-seekers create --agent claude # Claude Code โ†’ ๆ‚จ็š„ Claude Pro/Max +``` + +ๆ”ฏๆŒ็š„ไปฃ็†๏ผš`claude`ใ€`codex`ใ€`copilot`ใ€`opencode`ใ€`kimi` ๅ’Œ `custom` +๏ผˆๅฐ† `--agent custom` ไธŽ `--agent-cmd " ..."` ็ป„ๅˆๅฏ้ฉฑๅŠจไปปๆ„ๅ…ถไป–ๅทฅๅ…ท๏ผ‰ใ€‚ + +**2. ไปปๆ„ OpenAI ๅ…ผๅฎนๆไพ›ๅ•†๏ผˆOpenRouterใ€Groqใ€Cerebrasใ€Mistralใ€NVIDIA NIM ็ญ‰๏ผ‰** + +่ฟ™ไบ›ๆไพ›ๅ•†้ƒฝๆšด้œฒ OpenAI ๅ…ผๅฎน็š„ `/v1` ็ซฏ็‚นใ€‚ๅช้œ€ไธ‰ไธช็Žฏๅขƒๅ˜้‡ๅณๅฏ่ฎฉ Skill Seekers ๆŒ‡ๅ‘ๅ…ถไธญไน‹ไธ€โ€”โ€”ๅฎƒไผšๆฃ€ๆต‹ `OPENAI_API_KEY`๏ผŒ่€Œ OpenAI SDK ไผš่‡ชๅŠจ่ฏ†ๅˆซ `OPENAI_BASE_URL`๏ผš + +```bash +export OPENAI_API_KEY="" +export OPENAI_BASE_URL="https://openrouter.ai/api/v1" # ๆไพ›ๅ•†็ซฏ็‚น๏ผˆ่งไธ‹่กจ๏ผ‰ +export OPENAI_MODEL="" # ๅฟ…ๅกซ โ€” ้ป˜่ฎค็š„ gpt-4o ๅœจๅ…ถไป–ๆไพ›ๅ•†ๅค„ไธๅญ˜ๅœจ +skill-seekers create +``` + +| ๆไพ›ๅ•† | `OPENAI_BASE_URL` | +|--------------|--------------------------------------------| +| OpenRouter | `https://openrouter.ai/api/v1` | +| Groq | `https://api.groq.com/openai/v1` | +| Cerebras | `https://api.cerebras.ai/v1` | +| Mistral | `https://api.mistral.ai/v1` | +| NVIDIA NIM | `https://integrate.api.nvidia.com/v1` | + +> ๆไพ›ๅ•†ๆฃ€ๆต‹ไผš้€‰ๅ–**็ฌฌไธ€ไธช**ๆ‰พๅˆฐ็š„ API ๅฏ†้’ฅ็Žฏๅขƒๅ˜้‡๏ผˆ`ANTHROPIC_API_KEY` โ†’ `GOOGLE_API_KEY` โ†’ `OPENAI_API_KEY` โ†’ `MOONSHOT_API_KEY`๏ผ‰ใ€‚่ฎพ็ฝฎ `SKILL_SEEKER_PROVIDER` ๅฏๅผบๅˆถๆŒ‡ๅฎšๆไพ›ๅ•†๏ผŒๆˆ–็กฎไฟไผ˜ๅ…ˆ็บงๆ›ด้ซ˜็š„ๅฏ†้’ฅๆœช่ขซ่ฎพ็ฝฎใ€‚ + +**3. Claude ๅ…ผๅฎน็ซฏ็‚น๏ผˆๅฆ‚ GLMใ€ไปฃ็†ๆœๅŠก๏ผ‰** + +```bash +export ANTHROPIC_API_KEY="your-key" +export ANTHROPIC_BASE_URL="https://your-claude-compatible-endpoint/v1" +``` + +Google Gemini๏ผˆ`GOOGLE_API_KEY`๏ผ‰ๅ’Œ Kimi/ๆœˆไน‹ๆš—้ข๏ผˆ`MOONSHOT_API_KEY`๏ผ‰ไนŸ่Žทๅพ—ๅŽŸ็”Ÿๆ”ฏๆŒใ€‚ๅฎŒๆ•ดๅˆ—่กจ๏ผˆๅŒ…ๆ‹ฌๆฏไธชๆไพ›ๅ•†็š„ๆจกๅž‹่ฆ†็›–่ฎพ็ฝฎ๏ผ‰่ฏทๅ‚้˜… **[็Žฏๅขƒๅ˜้‡ๅ‚่€ƒ](docs/reference/ENVIRONMENT_VARIABLES.md#llm-provider-selection)**ใ€‚ + +
+ +**ๅฎ‰่ฃ…๏ผš** +```bash +# ๅฎ‰่ฃ… Gemini ๆ”ฏๆŒ +pip install skill-seekers[gemini] + +# ๅฎ‰่ฃ… OpenAI ๆ”ฏๆŒ +pip install skill-seekers[openai] + +# ๅฎ‰่ฃ… MiniMax ๆ”ฏๆŒ +pip install skill-seekers[minimax] + +# ๅฎ‰่ฃ…ๆ‰€ๆœ‰ LLM ๅนณๅฐ +pip install skill-seekers[all-llms] +``` + +### ๐Ÿ”— RAG ๆก†ๆžถ้›†ๆˆ + +- โœ… **LangChain Documents** - ็›ดๆŽฅๅฏผๅ‡บไธบ `Document` ๆ ผๅผ๏ผŒๅŒ…ๅซ `page_content` + ๅ…ƒๆ•ฐๆฎ + - ้€‚็”จไบŽ๏ผšQA ้“พใ€ๆฃ€็ดขๅ™จใ€ๅ‘้‡ๅญ˜ๅ‚จใ€ๆ™บ่ƒฝไฝ“ + - ็คบไพ‹๏ผš[LangChain RAG ๆตๆฐด็บฟ](examples/langchain-rag-pipeline/) + - ๆŒ‡ๅ—๏ผš[LangChain ้›†ๆˆ](docs/integrations/LANGCHAIN.md) + +- โœ… **LlamaIndex TextNodes** - ๅฏผๅ‡บไธบๅธฆๅ”ฏไธ€ ID + ๅตŒๅ…ฅ็š„ `TextNode` ๆ ผๅผ + - ้€‚็”จไบŽ๏ผšๆŸฅ่ฏขๅผ•ๆ“Žใ€ๅฏน่ฏๅผ•ๆ“Žใ€ๅญ˜ๅ‚จไธŠไธ‹ๆ–‡ + - ็คบไพ‹๏ผš[LlamaIndex ๆŸฅ่ฏขๅผ•ๆ“Ž](examples/llama-index-query-engine/) + - ๆŒ‡ๅ—๏ผš[LlamaIndex ้›†ๆˆ](docs/integrations/LLAMA_INDEX.md) + +- โœ… **Pinecone ๅฐฑ็ปชๆ ผๅผ** - ้’ˆๅฏนๅ‘้‡ๆ•ฐๆฎๅบ“ไธŠไผ ่ฟ›่กŒไผ˜ๅŒ– + - ้€‚็”จไบŽ๏ผš็”Ÿไบง็บงๅ‘้‡ๆœ็ดขใ€่ฏญไน‰ๆœ็ดขใ€ๆททๅˆๆœ็ดข + - ็คบไพ‹๏ผš[Pinecone ไธŠไผ ](examples/pinecone-upsert/) + - ๆŒ‡ๅ—๏ผš[Pinecone ้›†ๆˆ](docs/integrations/PINECONE.md) + +**ๅฟซ้€Ÿๅฏผๅ‡บ๏ผš** +```bash +# LangChain Documents๏ผˆJSON๏ผ‰ +skill-seekers package output/django --target langchain +# โ†’ output/django-langchain.json + +# LlamaIndex TextNodes๏ผˆJSON๏ผ‰ +skill-seekers package output/django --target llama-index +# โ†’ output/django-llama-index.json + +# Markdown๏ผˆ้€š็”จ๏ผ‰ +skill-seekers package output/django --target markdown +# โ†’ output/django-markdown/SKILL.md + references/ +``` + +**ๅฎŒๆ•ด RAG ๆตๆฐด็บฟๆŒ‡ๅ—๏ผš** [RAG ๆตๆฐด็บฟๆ–‡ๆกฃ](docs/integrations/RAG_PIPELINES.md) + +--- + +### ๐Ÿง  AI ็ผ–็จ‹ๅŠฉๆ‰‹้›†ๆˆ + +ๅฐ†ไปปๆ„ๆก†ๆžถๆ–‡ๆกฃ่ฝฌๆขไธบ 4+ ็ง AI ๅŠฉๆ‰‹็š„ไธ“ๅฎถ็ผ–็จ‹ไธŠไธ‹ๆ–‡๏ผš + +- โœ… **Cursor IDE** - ไธบ AI ้ฉฑๅŠจ็š„ไปฃ็ ๅปบ่ฎฎ็”Ÿๆˆ `.cursorrules` + - ้€‚็”จไบŽ๏ผšๆก†ๆžถไธ“็”จไปฃ็ ็”Ÿๆˆใ€ไธ€่‡ด็š„็ผ–็ ๆจกๅผ + - ๅ…ผๅฎนๅทฅๅ…ท๏ผšCursor IDE๏ผˆVS Code ๅˆ†ๆ”ฏ๏ผ‰ + - ๆŒ‡ๅ—๏ผš[Cursor ้›†ๆˆ](docs/integrations/CURSOR.md) + - ็คบไพ‹๏ผš[Cursor React ๆŠ€่ƒฝ](examples/cursor-react-skill/) + +- โœ… **Windsurf** - ไฝฟ็”จ `.windsurfrules` ่‡ชๅฎšไน‰ Windsurf AI ๅŠฉๆ‰‹ไธŠไธ‹ๆ–‡ + - ้€‚็”จไบŽ๏ผšIDE ๅŽŸ็”Ÿ AI ่พ…ๅŠฉใ€ๆตๅผ็ผ–็จ‹ + - ๅ…ผๅฎนๅทฅๅ…ท๏ผšCodeium ๅ‡บๅ“็š„ Windsurf IDE + - ๆŒ‡ๅ—๏ผš[Windsurf ้›†ๆˆ](docs/integrations/WINDSURF.md) + - ็คบไพ‹๏ผš[Windsurf FastAPI ไธŠไธ‹ๆ–‡](examples/windsurf-fastapi-context/) + +- โœ… **Cline๏ผˆVS Code๏ผ‰** - VS Code ๆ™บ่ƒฝไฝ“็š„็ณป็ปŸๆ็คบ + MCP + - ้€‚็”จไบŽ๏ผšVS Code ไธญ็š„ๆ™บ่ƒฝไปฃ็ ็”Ÿๆˆ + - ๅ…ผๅฎนๅทฅๅ…ท๏ผšVS Code ็š„ Cline ๆ‰ฉๅฑ• + - ๆŒ‡ๅ—๏ผš[Cline ้›†ๆˆ](docs/integrations/CLINE.md) + - ็คบไพ‹๏ผš[Cline Django ๅŠฉๆ‰‹](examples/cline-django-assistant/) + +- โœ… **Continue.dev** - ไธŽ IDE ๆ— ๅ…ณ็š„ AI ไธŠไธ‹ๆ–‡ๆœๅŠกๅ™จ + - ้€‚็”จไบŽ๏ผšๅคš IDE ็Žฏๅขƒ๏ผˆVS Codeใ€JetBrainsใ€Vim๏ผ‰๏ผŒ่‡ชๅฎšไน‰ LLM ๆไพ›ๅ•† + - ๅ…ผๅฎนๅทฅๅ…ท๏ผšไปปไฝ•ๅธฆๆœ‰ Continue.dev ๆ’ไปถ็š„ IDE + - ๆŒ‡ๅ—๏ผš[Continue ้›†ๆˆ](docs/integrations/CONTINUE_DEV.md) + - ็คบไพ‹๏ผš[Continue ้€š็”จไธŠไธ‹ๆ–‡](examples/continue-dev-universal/) + +**ๅฟซ้€Ÿๅฏผๅ‡บ๏ผˆ้€‚็”จไบŽ AI ็ผ–็จ‹ๅทฅๅ…ท๏ผ‰๏ผš** +```bash +# ้€‚็”จไบŽไปปๆ„ AI ็ผ–็จ‹ๅŠฉๆ‰‹๏ผˆCursorใ€Windsurfใ€Clineใ€Continue.dev๏ผ‰ +skill-seekers create --config configs/django.json +skill-seekers package output/django --target claude # ๆˆ– --target markdown + +# ๅคๅˆถๅˆฐ้กน็›ฎ๏ผˆไปฅ Cursor ไธบไพ‹๏ผ‰ +cp output/django-claude/SKILL.md my-project/.cursorrules + +# ๆˆ–็”จไบŽ Windsurf +cp output/django-claude/SKILL.md my-project/.windsurf/rules/django.md + +# ๆˆ–็”จไบŽ Cline +cp output/django-claude/SKILL.md my-project/.clinerules + +# ๆˆ–็”จไบŽ Continue.dev๏ผˆHTTP ๆœๅŠกๅ™จ๏ผ‰ +python examples/continue-dev-universal/context_server.py +# ๅœจ ~/.continue/config.json ไธญ้…็ฝฎ +``` + +**้›†ๆˆไธญๅฟƒ๏ผš** [ๆ‰€ๆœ‰ AI ็ณป็ปŸ้›†ๆˆ](docs/integrations/INTEGRATIONS.md) + +--- + +### ๐ŸŒŠ ไธ‰ๆต GitHub ๆžถๆž„ +- โœ… **ไธ‰ๆตๅˆ†ๆž** - ๅฐ† GitHub ไป“ๅบ“ๆ‹†ๅˆ†ไธบไปฃ็ ๆตใ€ๆ–‡ๆกฃๆตๅ’ŒๆดžๅฏŸๆต +- โœ… **็ปŸไธ€ไปฃ็ ๅบ“ๅˆ†ๆžๅ™จ** - ๅŒๆ—ถ้€‚็”จไบŽ GitHub URL ๅ’Œๆœฌๅœฐ่ทฏๅพ„ +- โœ… **C3.x ๅˆ†ๆžๆทฑๅบฆ** - ้€‰ๆ‹ฉ"basic"๏ผˆ1โ€“2 ๅˆ†้’Ÿ๏ผ‰ๆˆ–"c3x"๏ผˆ20โ€“60 ๅˆ†้’Ÿ๏ผ‰ๅˆ†ๆž +- โœ… **ๅขžๅผบ่ทฏ็”ฑ็”Ÿๆˆ** - GitHub ๅ…ƒๆ•ฐๆฎใ€README ๅฟซ้€Ÿๅ…ฅ้—จใ€ๅธธ่ง้—ฎ้ข˜ +- โœ… **Issue ้›†ๆˆ** - ๆฅ่‡ช GitHub Issues ็š„ๅธธ่ง้—ฎ้ข˜ๅ’Œ่งฃๅ†ณๆ–นๆกˆ +- โœ… **ๆ™บ่ƒฝ่ทฏ็”ฑๅ…ณ้”ฎ่ฏ** - GitHub ๆ ‡็ญพๆƒ้‡ๅŠ ๅ€๏ผŒๆๅ‡ไธป้ข˜ๆฃ€ๆต‹ๆ•ˆๆžœ + +**ไธ‰ๆต่ฏดๆ˜Ž๏ผš** +- **ๆต 1๏ผšไปฃ็ ** - ๆทฑๅบฆ C3.x ๅˆ†ๆž๏ผˆๆจกๅผใ€็คบไพ‹ใ€ๆŒ‡ๅ—ใ€้…็ฝฎใ€ๆžถๆž„๏ผ‰ +- **ๆต 2๏ผšๆ–‡ๆกฃ** - ไป“ๅบ“ๆ–‡ๆกฃ๏ผˆREADMEใ€CONTRIBUTINGใ€docs/*.md๏ผ‰ +- **ๆต 3๏ผšๆดžๅฏŸ** - ็คพๅŒบ็Ÿฅ่ฏ†๏ผˆIssuesใ€ๆ ‡็ญพใ€Starsใ€Forks๏ผ‰ + +```python +from skill_seekers.cli.unified_codebase_analyzer import UnifiedCodebaseAnalyzer + +# ไฝฟ็”จไธ‰ๆตๅˆ†ๆž GitHub ไป“ๅบ“ +analyzer = UnifiedCodebaseAnalyzer() +result = analyzer.analyze( + source="https://github.com/facebook/react", + depth="c3x", # ๆˆ– "basic" ๅฟซ้€Ÿๅˆ†ๆž + fetch_github_metadata=True +) + +# ่ฎฟ้—ฎไปฃ็ ๆต๏ผˆC3.x ๅˆ†ๆž๏ผ‰ +print(f"่ฎพ่ฎกๆจกๅผ: {len(result.code_analysis['c3_1_patterns'])}") +print(f"ๆต‹่ฏ•็คบไพ‹: {result.code_analysis['c3_2_examples_count']}") + +# ่ฎฟ้—ฎๆ–‡ๆกฃๆต๏ผˆไป“ๅบ“ๆ–‡ๆกฃ๏ผ‰ +print(f"README: {result.github_docs['readme'][:100]}") + +# ่ฎฟ้—ฎๆดžๅฏŸๆต๏ผˆGitHub ๅ…ƒๆ•ฐๆฎ๏ผ‰ +print(f"Stars: {result.github_insights['metadata']['stars']}") +print(f"ๅธธ่ง้—ฎ้ข˜: {len(result.github_insights['common_problems'])}") +``` + +**ๅฎŒๆ•ดๆ–‡ๆกฃ**๏ผš[ไธ‰ๆตๅฎž็Žฐๆ€ป็ป“](docs/archive/historical/IMPLEMENTATION_SUMMARY_THREE_STREAM.md) + +### ๐Ÿ” ๆ™บ่ƒฝ้€Ÿ็އ้™ๅˆถ็ฎก็†ไธŽ้…็ฝฎ +- โœ… **ๅคš Token ้…็ฝฎ็ณป็ปŸ** - ็ฎก็†ๅคšไธช GitHub ่ดฆๅท๏ผˆไธชไบบใ€ๅทฅไฝœใ€ๅผ€ๆบ๏ผ‰ + - ๅฎ‰ๅ…จ้…็ฝฎๅญ˜ๅ‚จๅœจ `~/.config/skill-seekers/config.json`๏ผˆๆƒ้™ 600๏ผ‰ + - ๆฏไธช้…็ฝฎๆ–‡ไปถ็š„้€Ÿ็އ้™ๅˆถ็ญ–็•ฅ๏ผš`prompt`ใ€`wait`ใ€`switch`ใ€`fail` + - ๆฏไธช้…็ฝฎๆ–‡ไปถๅฏ่ฎพ็ฝฎ่ถ…ๆ—ถ๏ผˆ้ป˜่ฎค๏ผš30 ๅˆ†้’Ÿ๏ผŒ้˜ฒๆญขๆ— ้™็ญ‰ๅพ…๏ผ‰ + - ๆ™บ่ƒฝๅ›ž้€€้“พ๏ผšCLI ๅ‚ๆ•ฐ โ†’ ็Žฏๅขƒๅ˜้‡ โ†’ ้…็ฝฎๆ–‡ไปถ โ†’ ๆ็คบ + - Claudeใ€Geminiใ€OpenAI ็š„ API Key ็ฎก็† +- โœ… **ไบคไบ’ๅผ้…็ฝฎๅ‘ๅฏผ** - ็พŽ่ง‚็š„็ปˆ็ซฏ UI๏ผŒ่ฝปๆพ่ฎพ็ฝฎ + - ๆต่งˆๅ™จ้›†ๆˆ่พ…ๅŠฉๅˆ›ๅปบ token๏ผˆ่‡ชๅŠจๆ‰“ๅผ€ GitHub ็ญ‰๏ผ‰ + - Token ้ชŒ่ฏๅ’Œ่ฟžๆŽฅๆต‹่ฏ• + - ๅธฆ้ขœ่‰ฒ็ผ–็ ็š„ๅฏ่ง†ๅŒ–็Šถๆ€ๆ˜พ็คบ +- โœ… **ๆ™บ่ƒฝ้€Ÿ็އ้™ๅˆถๅค„็†ๅ™จ** - ไธๅ†ๆ— ้™็ญ‰ๅพ…๏ผ + - ๅ…ณไบŽ้€Ÿ็އ้™ๅˆถ็š„้ข„ๅ…ˆ่ญฆๅ‘Š๏ผˆ60 ๆฌก/ๅฐๆ—ถ vs 5000 ๆฌก/ๅฐๆ—ถ๏ผ‰ + - ไปŽ GitHub API ๅ“ๅบ”ไธญๅฎžๆ—ถๆฃ€ๆต‹ + - ๅธฆ่ฟ›ๅบฆ็š„ๅฎžๆ—ถๅ€’่ฎกๆ—ถ + - ้€Ÿ็އๅ—้™ๆ—ถ่‡ชๅŠจๅˆ‡ๆข้…็ฝฎๆ–‡ไปถ + - ๅ››็ง็ญ–็•ฅ๏ผšprompt๏ผˆ่ฏข้—ฎ๏ผ‰ใ€wait๏ผˆๅ€’่ฎกๆ—ถ๏ผ‰ใ€switch๏ผˆๅˆ‡ๆข๏ผ‰ใ€fail๏ผˆไธญๆญข๏ผ‰ +- โœ… **ๆ–ญ็‚น็ปญไผ ** - ็ปง็ปญไธญๆ–ญ็š„ไปปๅŠก + - ๆŒ‰ๅฏ้…็ฝฎ้—ด้š”่‡ชๅŠจไฟๅญ˜่ฟ›ๅบฆ๏ผˆ้ป˜่ฎค๏ผš60 ็ง’๏ผ‰ + - ๅˆ—ๅ‡บๆ‰€ๆœ‰ๅฏๆขๅคไปปๅŠกๅŠๅ…ถ่ฟ›ๅบฆ่ฏฆๆƒ… + - ่‡ชๅŠจๆธ…็†ๆ—งไปปๅŠก๏ผˆ้ป˜่ฎค๏ผš7 ๅคฉ๏ผ‰ +- โœ… **CI/CD ๆ”ฏๆŒ** - ้žไบคไบ’ๅผ่‡ชๅŠจๅŒ–ๆจกๅผ + - `--non-interactive` ๆ ‡ๅฟ—ๅฟซ้€Ÿๅคฑ่ดฅใ€ๆ— ๆ็คบ + - `--profile` ๆ ‡ๅฟ—้€‰ๆ‹ฉ็‰นๅฎš GitHub ่ดฆๅท + - ้€‚็”จไบŽๆตๆฐด็บฟๆ—ฅๅฟ—็š„ๆธ…ๆ™ฐ้”™่ฏฏๆถˆๆฏ + +**ๅฟซ้€Ÿ่ฎพ็ฝฎ๏ผš** +```bash +# ไธ€ๆฌกๆ€ง้…็ฝฎ๏ผˆ5 ๅˆ†้’Ÿ๏ผ‰ +skill-seekers config --github + +# ไธบ็งๆœ‰ไป“ๅบ“ไฝฟ็”จ็‰นๅฎš้…็ฝฎๆ–‡ไปถ +skill-seekers create mycompany/private-repo --profile work + +# CI/CD ๆจกๅผ๏ผˆๅฟซ้€Ÿๅคฑ่ดฅ๏ผŒๆ— ๆ็คบ๏ผ‰ +skill-seekers create owner/repo --non-interactive + +# ๆขๅคไธญๆ–ญ็š„ไปปๅŠก +skill-seekers resume --list +skill-seekers resume github_react_20260117_143022 +``` + +**้€Ÿ็އ้™ๅˆถ็ญ–็•ฅ่ฏดๆ˜Ž๏ผš** +- **prompt**๏ผˆ้ป˜่ฎค๏ผ‰- ้€Ÿ็އๅ—้™ๆ—ถ่ฏข้—ฎๆ“ไฝœ๏ผˆ็ญ‰ๅพ…ใ€ๅˆ‡ๆขใ€่ฎพ็ฝฎ tokenใ€ๅ–ๆถˆ๏ผ‰ +- **wait** - ๅธฆๅ€’่ฎกๆ—ถ่‡ชๅŠจ็ญ‰ๅพ…๏ผˆ้ตๅฎˆ่ถ…ๆ—ถ่ฎพ็ฝฎ๏ผ‰ +- **switch** - ่‡ชๅŠจๅฐ่ฏ•ไธ‹ไธ€ไธชๅฏ็”จ้…็ฝฎๆ–‡ไปถ๏ผˆ้€‚็”จไบŽๅคš่ดฆๅทๅœบๆ™ฏ๏ผ‰ +- **fail** - ็ซ‹ๅณๅคฑ่ดฅๅนถ็ป™ๅ‡บๆธ…ๆ™ฐ้”™่ฏฏ๏ผˆ้€‚ๅˆ CI/CD๏ผ‰ + +### ๐ŸŽฏ Bootstrap ๆŠ€่ƒฝ - ่‡ชๆ‰˜็ฎก + +ๅฐ† skill-seekers ่‡ช่บซ็”ŸๆˆไธบๆŠ€่ƒฝ๏ผŒๅœจๆ‚จ็š„ AI ไปฃ็†๏ผˆClaude Codeใ€Kimiใ€Codex ็ญ‰๏ผ‰ไธญไฝฟ็”จ๏ผš + +```bash +# ็”ŸๆˆๆŠ€่ƒฝ +./scripts/bootstrap_skill.sh + +# ๅฎ‰่ฃ…ๅˆฐ Claude Code +cp -r output/skill-seekers ~/.claude/skills/ +``` + +**ๆ‚จๅฐ†่Žทๅพ—๏ผš** +- โœ… **ๅฎŒๆ•ด็š„ๆŠ€่ƒฝๆ–‡ๆกฃ** - ๆ‰€ๆœ‰ CLI ๅ‘ฝไปคๅ’Œไฝฟ็”จๆจกๅผ +- โœ… **CLI ๅ‘ฝไปคๅ‚่€ƒ** - ๆฏไธชๅทฅๅ…ทๅŠๅ…ถ้€‰้กน็š„ๆ–‡ๆกฃ +- โœ… **ๅฟซ้€Ÿๅ…ฅ้—จ็คบไพ‹** - ๅธธ่งๅทฅไฝœๆตๅ’Œๆœ€ไฝณๅฎž่ทต +- โœ… **่‡ชๅŠจ็”Ÿๆˆ็š„ API ๆ–‡ๆกฃ** - ไปฃ็ ๅˆ†ๆžใ€ๆจกๅผๅ’Œ็คบไพ‹ + +### ๐Ÿ” ็งๆœ‰้…็ฝฎไป“ๅบ“ +- โœ… **ๅŸบไบŽ Git ็š„้…็ฝฎๆบ** - ไปŽ็งๆœ‰/ๅ›ข้˜Ÿ Git ไป“ๅบ“่Žทๅ–้…็ฝฎ +- โœ… **ๅคšๆบ็ฎก็†** - ๆณจๅ†Œๆ— ้™ๆ•ฐ้‡็š„ GitHubใ€GitLabใ€Bitbucket ไป“ๅบ“ +- โœ… **ๅ›ข้˜Ÿๅไฝœ** - ๅœจ 3โ€“5 ไบบๅ›ข้˜Ÿ้—ดๅ…ฑไบซ่‡ชๅฎšไน‰้…็ฝฎ +- โœ… **ไผไธšๆ”ฏๆŒ** - ้€š่ฟ‡ๅŸบไบŽไผ˜ๅ…ˆ็บง็š„่งฃๆžๆ‰ฉๅฑ•ๅˆฐ 500+ ๅผ€ๅ‘่€… +- โœ… **ๅฎ‰ๅ…จ่ฎค่ฏ** - ็Žฏๅขƒๅ˜้‡ token๏ผˆGITHUB_TOKENใ€GITLAB_TOKEN๏ผ‰ +- โœ… **ๆ™บ่ƒฝ็ผ“ๅญ˜** - ๅ…‹้š†ไธ€ๆฌก๏ผŒ่‡ชๅŠจๆ‹‰ๅ–ๆ›ดๆ–ฐ +- โœ… **็ฆป็บฟๆจกๅผ** - ็ฆป็บฟๆ—ถไฝฟ็”จ็ผ“ๅญ˜็š„้…็ฝฎๅทฅไฝœ + +### ๐Ÿค– ไปฃ็ ๅบ“ๅˆ†ๆž๏ผˆC3.x๏ผ‰ + +**C3.4๏ผš้…็ฝฎๆจกๅผๆๅ–๏ผˆๅซ AI ๅขžๅผบ๏ผ‰** +- โœ… **9 ็ง้…็ฝฎๆ ผๅผ** - JSONใ€YAMLใ€TOMLใ€ENVใ€INIใ€Pythonใ€JavaScriptใ€Dockerfileใ€Docker Compose +- โœ… **7 ็งๆจกๅผ็ฑปๅž‹** - ๆ•ฐๆฎๅบ“ใ€APIใ€ๆ—ฅๅฟ—ใ€็ผ“ๅญ˜ใ€้‚ฎไปถใ€่ฎค่ฏใ€ๆœๅŠกๅ™จ้…็ฝฎ +- โœ… **AI ๅขžๅผบ** - ๅฏ้€‰ๅŒๆจกๅผ AI ๅˆ†ๆž๏ผˆAPI + LOCAL๏ผ‰ + - ่งฃ้‡Šๆฏ้กน้…็ฝฎ็š„ไฝœ็”จ + - ๅปบ่ฎฎๆœ€ไฝณๅฎž่ทตๅ’Œๆ”น่ฟ›ๆ–นๆกˆ + - **ๅฎ‰ๅ…จๅˆ†ๆž** - ๅ‘็Žฐ็กฌ็ผ–็ ็š„ๅฏ†้’ฅๅ’Œๆšด้œฒ็š„ๅ‡ญ่ฏ +- โœ… **่‡ชๅŠจๆ–‡ๆกฃ็”Ÿๆˆ** - ไธบๆ‰€ๆœ‰้…็ฝฎ็”Ÿๆˆ JSON + Markdown ๆ–‡ๆกฃ +- โœ… **MCP ้›†ๆˆ** - ๆ”ฏๆŒๅขžๅผบ็š„ `extract_config_patterns` ๅทฅๅ…ท + +**C3.3๏ผšAI ๅขžๅผบๆ“ไฝœๆŒ‡ๅ—** +- โœ… **ๅ…จ้ข AI ๅขžๅผบ** - ๅฐ†ๅŸบ็ก€ๆŒ‡ๅ—่ฝฌๆขไธบไธ“ไธšๆ•™็จ‹ +- โœ… **5 ้กน่‡ชๅŠจๆ”น่ฟ›** - ๆญฅ้ชค่ฏดๆ˜Žใ€ๆ•…้šœๆŽ’้™คใ€ๅ‰ๆๆกไปถใ€ๅŽ็ปญๆญฅ้ชคใ€ไฝฟ็”จๅœบๆ™ฏ +- โœ… **ๅŒๆจกๅผๆ”ฏๆŒ** - API ๆจกๅผ๏ผˆClaude API๏ผ‰ๆˆ– LOCAL ๆจกๅผ๏ผˆClaude Code CLI๏ผ‰ +- โœ… **LOCAL ๆจกๅผ้›ถๆˆๆœฌ** - ไฝฟ็”จๆ‚จ็š„ Claude Code Max ่ฎกๅˆ’ๅ…่ดนๅขžๅผบ +- โœ… **่ดจ้‡่œ•ๅ˜** - 75 ่กŒๆจกๆฟ โ†’ 500+ ่กŒ็š„ๅฎŒๆ•ดๆŒ‡ๅ— + +**ไฝฟ็”จๆ–นๆณ•๏ผš** +```bash +# ๅฟซ้€Ÿๅˆ†ๆž๏ผˆ1โ€“2 ๅˆ†้’Ÿ๏ผŒไป…ๅŸบ็ก€ๅŠŸ่ƒฝ๏ผ‰ +skill-seekers scan tests/ --quick + +# ๅ…จ้ขๅˆ†ๆž๏ผˆๅซ AI๏ผŒ20โ€“60 ๅˆ†้’Ÿ๏ผ‰ +skill-seekers scan tests/ --comprehensive + +# ๅซ AI ๅขžๅผบ +skill-seekers scan tests/ --enhance +``` + +**ๅฎŒๆ•ดๆ–‡ๆกฃ๏ผš** [docs/features/HOW_TO_GUIDES.md](docs/features/HOW_TO_GUIDES.md#ai-enhancement-new) + +### ๐Ÿ”„ ๅขžๅผบๅทฅไฝœๆต้ข„่ฎพ + +ๅฏ้‡็”จ็š„ YAML ๅฎšไน‰ๅขžๅผบๆตๆฐด็บฟ๏ผŒๆŽงๅˆถ AI ๅฆ‚ไฝ•ๅฐ†ๅŽŸๅง‹ๆ–‡ๆกฃ่ฝฌๆขไธบ็ฒพๅฟƒๆ‰“็ฃจ็š„ๆŠ€่ƒฝใ€‚ + +- โœ… **5 ไธชๅ†…็ฝฎ้ข„่ฎพ** โ€” `default`ใ€`minimal`ใ€`security-focus`ใ€`architecture-comprehensive`ใ€`api-documentation` +- โœ… **็”จๆˆท่‡ชๅฎšไน‰้ข„่ฎพ** โ€” ๅฐ†่‡ชๅฎšไน‰ๅทฅไฝœๆตๆทปๅŠ ๅˆฐ `~/.config/skill-seekers/workflows/` +- โœ… **ๅคšๅทฅไฝœๆต้“พๅผ** โ€” ๅœจไธ€ๆกๅ‘ฝไปคไธญ้“พๅผไฝฟ็”จไธคไธชๆˆ–ๆ›ดๅคšๅทฅไฝœๆต +- โœ… **ๅฎŒๆ•ด CLI ็ฎก็†** โ€” ๅˆ—ๅ‡บใ€ๆŸฅ็œ‹ใ€ๅคๅˆถใ€ๆทปๅŠ ใ€ๅˆ ้™คๅ’Œ้ชŒ่ฏๅทฅไฝœๆต + +```bash +# ๅบ”็”จๅ•ไธชๅทฅไฝœๆต +skill-seekers create ./my-project --enhance-workflow security-focus + +# ้“พๅผๅคšไธชๅทฅไฝœๆต๏ผˆๆŒ‰้กบๅบๅบ”็”จ๏ผ‰ +skill-seekers create ./my-project \ + --enhance-workflow security-focus \ + --enhance-workflow minimal + +# ็ฎก็†้ข„่ฎพ +skill-seekers workflows list # ๅˆ—ๅ‡บๆ‰€ๆœ‰๏ผˆๅ†…็ฝฎ + ็”จๆˆท๏ผ‰ +skill-seekers workflows show security-focus # ๆ˜พ็คบ YAML ๅ†…ๅฎน +skill-seekers workflows copy security-focus # ๅคๅˆถๅˆฐ็”จๆˆท็›ฎๅฝ•ไปฅไพฟ็ผ–่พ‘ +skill-seekers workflows add ./my-workflow.yaml # ๅฎ‰่ฃ…่‡ชๅฎšไน‰้ข„่ฎพ +skill-seekers workflows remove my-workflow # ๅˆ ้™ค็”จๆˆท้ข„่ฎพ +skill-seekers workflows validate security-focus # ้ชŒ่ฏ้ข„่ฎพ็ป“ๆž„ + +# ๅŒๆ—ถๅคๅˆถๅคšไธช +skill-seekers workflows copy security-focus minimal api-documentation + +# ๅŒๆ—ถๆทปๅŠ ๅคšไธชๆ–‡ไปถ +skill-seekers workflows add ./wf-a.yaml ./wf-b.yaml + +# ๅŒๆ—ถๅˆ ้™คๅคšไธช +skill-seekers workflows remove my-wf-a my-wf-b +``` + +**YAML ้ข„่ฎพๆ ผๅผ๏ผš** +```yaml +name: security-focus +description: "ๅฎ‰ๅ…จ้‡็‚นๅฎกๆŸฅ๏ผšๆผๆดžใ€่ฎค่ฏใ€ๆ•ฐๆฎๅค„็†" +version: "1.0" +stages: + - name: vulnerabilities + type: custom + prompt: "ๅฎกๆŸฅ OWASP Top 10 ๅ’Œๅธธ่งๅฎ‰ๅ…จๆผๆดž..." + - name: auth-review + type: custom + prompt: "ๆฃ€ๆŸฅ่ฎค่ฏๅ’ŒๆŽˆๆƒๆจกๅผ..." + uses_history: true +``` + +### โšก ๆ€ง่ƒฝไธŽ่ง„ๆจก +- โœ… **ๅผ‚ๆญฅๆจกๅผ** - ไฝฟ็”จ async/await ๆŠ“ๅ–้€Ÿๅบฆๅฟซ 2โ€“3 ๅ€๏ผˆไฝฟ็”จ `--async` ๆ ‡ๅฟ—๏ผ‰ +- โœ… **ๅคงๅž‹ๆ–‡ๆกฃๆ”ฏๆŒ** - ้€š่ฟ‡ๆ™บ่ƒฝๆ‹†ๅˆ†ๅค„็† 10Kโ€“40K+ ้กตๆ–‡ๆกฃ +- โœ… **่ทฏ็”ฑๅ™จ/Hub ๆŠ€่ƒฝ** - ๆ™บ่ƒฝ่ทฏ็”ฑๅˆฐไธ“็”จๅญๆŠ€่ƒฝ +- โœ… **ๅนถ่กŒๆŠ“ๅ–** - ๅŒๆ—ถๅค„็†ๅคšไธชๆŠ€่ƒฝ +- โœ… **ๆฃ€ๆŸฅ็‚น/็ปญไผ ** - ้•ฟๆ—ถ้—ดๆŠ“ๅ–ๆฐธไธไธขๅคฑ่ฟ›ๅบฆ +- โœ… **็ผ“ๅญ˜็ณป็ปŸ** - ๆŠ“ๅ–ไธ€ๆฌก๏ผŒๅณๆ—ถ้‡ๅปบ + +### ๐Ÿค– ไธŽไปฃ็†ๆ— ๅ…ณ็š„ๆŠ€่ƒฝ็”Ÿๆˆ +- โœ… **ๅคšไปฃ็†ๆ”ฏๆŒ** - ้€š่ฟ‡ `--agent` ๆ ‡ๅฟ—ไธบ Claudeใ€Kimiใ€Codexใ€Copilotใ€OpenCode ๆˆ–ไปปๆ„่‡ชๅฎšไน‰ไปฃ็†็”ŸๆˆๆŠ€่ƒฝ +- โœ… **่‡ชๅฎšไน‰ไปฃ็†ๅ‘ฝไปค** - ไฝฟ็”จ `--agent-cmd` ๆŒ‡ๅฎš็”จไบŽๅขžๅผบ็š„่‡ชๅฎšไน‰ไปฃ็† CLI ๅ‘ฝไปค +- โœ… **้€š็”จๆ ‡ๅฟ—** - `--agent` ๅ’Œ `--agent-cmd` ๅœจๆ‰€ๆœ‰ๅ‘ฝไปค๏ผˆcreateใ€scrapeใ€githubใ€pdf ็ญ‰๏ผ‰ไธญๅ‡ๅฏ็”จ + +### ๐Ÿ“ฆ ๅธ‚ๅœบๆตๆฐด็บฟ +- โœ… **ๅ‘ๅธƒๅˆฐๅธ‚ๅœบ** - ๅฐ†ๆŠ€่ƒฝๅ‘ๅธƒๅˆฐ Claude Code ๆ’ไปถๅธ‚ๅœบไป“ๅบ“ +- โœ… **็ซฏๅˆฐ็ซฏๆตๆฐด็บฟ** - ไปŽๆ–‡ๆกฃๆฅๆบๅˆฐๅทฒๅ‘ๅธƒ็š„ๅธ‚ๅœบๆก็›ฎ + +### โœ… ่ดจ้‡ไฟ่ฏ +- โœ… **ๅ…จ้ขๆต‹่ฏ•** - 3,700+ ๆต‹่ฏ•๏ผŒๅ…จ้ข่ฆ†็›– + +--- + +## ๐Ÿ“ฆ ๅฎ‰่ฃ… + +```bash +# ๅŸบ็ก€ๅฎ‰่ฃ…๏ผˆๆ–‡ๆกฃๆŠ“ๅ–ใ€GitHub ๅˆ†ๆžใ€PDFใ€ๆ‰“ๅŒ…๏ผ‰ +pip install skill-seekers + +# ๅŒ…ๅซๆ‰€ๆœ‰ LLM ๅนณๅฐๆ”ฏๆŒ +pip install skill-seekers[all-llms] + +# ๅŒ…ๅซ MCP ๆœๅŠกๅ™จ +pip install skill-seekers[mcp] + +# ๅ…จ้ƒจๅŠŸ่ƒฝ +pip install skill-seekers[all] +``` + +**้œ€่ฆๅธฎๅŠฉ้€‰ๆ‹ฉ๏ผŸ** ่ฟ่กŒ่ฎพ็ฝฎๅ‘ๅฏผ๏ผš +```bash +skill-seekers-setup +``` + +### ๅฎ‰่ฃ…้€‰้กน + +| ๅฎ‰่ฃ…ๅ‘ฝไปค | ๅŠŸ่ƒฝ | +|---------|------| +| `pip install skill-seekers` | ๆŠ“ๅ–ใ€GitHub ๅˆ†ๆžใ€PDFใ€ๆ‰€ๆœ‰ๅนณๅฐ | +| `pip install skill-seekers[gemini]` | + Google Gemini ๆ”ฏๆŒ | +| `pip install skill-seekers[openai]` | + OpenAI ChatGPT ๆ”ฏๆŒ | +| `pip install skill-seekers[all-llms]` | + ๆ‰€ๆœ‰ LLM ๅนณๅฐ | +| `pip install skill-seekers[mcp]` | + ้€‚็”จไบŽ Claude Codeใ€Cursor ็ญ‰็š„ MCP ๆœๅŠกๅ™จ | +| `pip install skill-seekers[video]` | + YouTube/Vimeo ๅญ—ๅน•ๅ’Œๅ…ƒๆ•ฐๆฎๆๅ– | +| `pip install skill-seekers[video-full]` | + Whisper ่ฝฌๅฝ•ๅ’Œ่ง†่ง‰ๅธงๆๅ– | +| `pip install skill-seekers[jupyter]` | + Jupyter ็ฌ”่ฎฐๆœฌๆ”ฏๆŒ | +| `pip install skill-seekers[pptx]` | + PowerPoint ๆ”ฏๆŒ | +| `pip install skill-seekers[confluence]` | + Confluence ็ปดๅŸบๆ”ฏๆŒ | +| `pip install skill-seekers[notion]` | + Notion ้กต้ขๆ”ฏๆŒ | +| `pip install skill-seekers[rss]` | + RSS/Atom ่ฎข้˜…ๆบๆ”ฏๆŒ | +| `pip install skill-seekers[chat]` | + Slack/Discord ่Šๅคฉ่ฎฐๅฝ•ๆ”ฏๆŒ | +| `pip install skill-seekers[asciidoc]` | + AsciiDoc ๆ–‡ๆกฃๆ”ฏๆŒ | +| `pip install skill-seekers[all]` | ๅ…จ้ƒจๅŠŸ่ƒฝ | + +> **่ง†้ข‘่ง†่ง‰ไพ่ต–๏ผˆGPU ๆ„Ÿ็Ÿฅ๏ผ‰๏ผš** ๅฎ‰่ฃ… `skill-seekers[video-full]` ๅŽ๏ผŒ่ฟ่กŒ +> `skill-seekers create --setup` ่‡ชๅŠจๆฃ€ๆต‹ๆ‚จ็š„ GPU ๅนถๅฎ‰่ฃ…ๆญฃ็กฎ็š„ PyTorch +> ็‰ˆๆœฌ + easyocrใ€‚่ฟ™ๆ˜ฏๅฎ‰่ฃ…่ง†่ง‰ๆๅ–ไพ่ต–็š„ๆŽจ่ๆ–นๅผใ€‚ + +--- + +## ๐Ÿš€ ไธ€้”ฎๅฎ‰่ฃ…ๅทฅไฝœๆต + +**ไปŽ้…็ฝฎๅˆฐไธŠไผ ๆŠ€่ƒฝ็š„ๆœ€ๅฟซๆ–นๅผโ€”โ€”ๅ…จ่‡ชๅŠจๅŒ–๏ผš** + +```bash +# ไปŽๅฎ˜ๆ–น้…็ฝฎๅฎ‰่ฃ… React ๆŠ€่ƒฝ๏ผˆ่‡ชๅŠจไธŠไผ ๅˆฐ Claude๏ผ‰ +skill-seekers install --config react + +# ไปŽๆœฌๅœฐ้…็ฝฎๆ–‡ไปถๅฎ‰่ฃ… +skill-seekers install --config configs/custom.json + +# ๅฎ‰่ฃ…ไฝ†ไธไธŠไผ ๏ผˆไป…ๆ‰“ๅŒ…๏ผ‰ +skill-seekers install --config django --no-upload + +# ้ข„่งˆๅทฅไฝœๆต่€Œไธๆ‰ง่กŒ +skill-seekers install --config react --dry-run +``` + +**่€—ๆ—ถ๏ผš** ๆ€ป่ฎก 20โ€“45 ๅˆ†้’Ÿ | **่ดจ้‡๏ผš** ็”Ÿไบงๅฐฑ็ปช๏ผˆ9/10๏ผ‰ | **ๆˆๆœฌ๏ผš** ๅ…่ดน + +**ๆ‰ง่กŒ้˜ถๆฎต๏ผš** +``` +๐Ÿ“ฅ ้˜ถๆฎต 1๏ผš่Žทๅ–้…็ฝฎ๏ผˆๅฆ‚ๆžœๆไพ›้…็ฝฎๅ็งฐ๏ผ‰ +๐Ÿ“– ้˜ถๆฎต 2๏ผšๆŠ“ๅ–ๆ–‡ๆกฃ +โœจ ้˜ถๆฎต 3๏ผšAI ๅขžๅผบ๏ผˆๅฟ…้€‰ - ไธๅฏ่ทณ่ฟ‡๏ผ‰ +๐Ÿ“ฆ ้˜ถๆฎต 4๏ผšๆ‰“ๅŒ…ๆŠ€่ƒฝ +โ˜๏ธ ้˜ถๆฎต 5๏ผšไธŠไผ ๅˆฐ Claude๏ผˆๅฏ้€‰๏ผŒ้œ€่ฆ API Key๏ผ‰ +``` + +**่ฆๆฑ‚๏ผš** +- ANTHROPIC_API_KEY ็Žฏๅขƒๅ˜้‡๏ผˆ็”จไบŽ่‡ชๅŠจไธŠไผ ๏ผ‰ +- Claude Code Max ่ฎกๅˆ’๏ผˆ็”จไบŽๆœฌๅœฐ AI ๅขžๅผบ๏ผ‰๏ผŒๆˆ–ไฝฟ็”จ `--agent` ้€‰ๆ‹ฉๅ…ถไป– AI ไปฃ็† + +--- + +## ๐Ÿ“Š ๅŠŸ่ƒฝ็Ÿฉ้˜ต + +Skill Seekers ๆ”ฏๆŒ **12 ไธช LLM ๅนณๅฐ**ใ€**8 ไธช RAG/ๅ‘้‡็›ฎๆ ‡**ใ€**18 ็งๆฅๆบ็ฑปๅž‹**๏ผŒๅนถๅœจๆ‰€ๆœ‰็›ฎๆ ‡ไธŠๅฎž็ŽฐๅฎŒๅ…จ็š„ๅŠŸ่ƒฝๅฏน็ญ‰ใ€‚ + +**ๅนณๅฐ๏ผš** Claude AIใ€Google Geminiใ€OpenAI ChatGPTใ€MiniMax AIใ€้€š็”จ Markdownใ€OpenCodeใ€Kimi๏ผˆๆœˆไน‹ๆš—้ข๏ผ‰ใ€DeepSeek AIใ€Qwen๏ผˆ้˜ฟ้‡Œๅทดๅทด๏ผ‰ใ€OpenRouterใ€Together AIใ€Fireworks AI +**ๆฅๆบ็ฑปๅž‹๏ผš** ๆ–‡ๆกฃ็ฝ‘็ซ™ใ€GitHub ไป“ๅบ“ใ€PDFใ€Word (.docx)ใ€EPUBใ€่ง†้ข‘ใ€ๆœฌๅœฐไปฃ็ ๅบ“ใ€Jupyter ็ฌ”่ฎฐๆœฌใ€ๆœฌๅœฐ HTMLใ€OpenAPI/Swaggerใ€AsciiDocใ€PowerPoint (.pptx)ใ€RSS/Atom ่ฎข้˜…ๆบใ€Man ๆ‰‹ๅ†Œ้กตใ€Confluence ็ปดๅŸบใ€Notion ้กต้ขใ€Slack/Discord ่Šๅคฉ่ฎฐๅฝ• + +ๅฎŒๆ•ดไฟกๆฏ่ฏทๆŸฅ็œ‹ [ๅฎŒๆ•ดๅŠŸ่ƒฝ็Ÿฉ้˜ต](docs/reference/FEATURE_MATRIX.md)ใ€‚ + +### ๅฟซ้€Ÿๅนณๅฐๅฏนๆฏ” + +| ๅŠŸ่ƒฝ | Claude | Gemini | OpenAI | MiniMax | Markdown | +|------|--------|--------|--------|---------|----------| +| ๆ ผๅผ | ZIP + YAML | tar.gz | ZIP + Vector | ZIP + Knowledge | ZIP | +| ไธŠไผ  | โœ… API | โœ… API | โœ… API | โœ… API | โŒ ๆ‰‹ๅŠจ | +| ๅขžๅผบ | โœ… Sonnet 4 | โœ… 2.0 Flash | โœ… GPT-4o | โœ… M3 | โŒ ๆ—  | +| ๆ‰€ๆœ‰ๆŠ€่ƒฝๆจกๅผ | โœ… | โœ… | โœ… | โœ… | โœ… | + +--- + +## ไฝฟ็”จ็คบไพ‹ + +### ๆ–‡ๆกฃๆŠ“ๅ– + +```bash +# ๆŠ“ๅ–ๆ–‡ๆกฃ็ฝ‘็ซ™ +skill-seekers create --config configs/react.json + +# ๅฟซ้€ŸๆŠ“ๅ–๏ผˆๆ— ้œ€้…็ฝฎ๏ผ‰ +skill-seekers create https://react.dev --name react + +# ๅผ‚ๆญฅๆจกๅผ๏ผˆๅฟซ 3 ๅ€๏ผ‰ +skill-seekers create --config configs/godot.json --async --workers 8 + +# ไฝฟ็”จ็‰นๅฎš AI ไปฃ็†่ฟ›่กŒๅขžๅผบ +skill-seekers create --config configs/react.json --agent kimi +``` + +### PDF ๆๅ– + +```bash +# ๅŸบ็ก€ PDF ๆๅ– +skill-seekers create --pdf docs/manual.pdf --name myskill + +# ้ซ˜็บงๅŠŸ่ƒฝ +skill-seekers create --pdf docs/manual.pdf --name myskill \ + --extract-tables \ # ๆๅ–่กจๆ ผ + --parallel \ # ๅฟซ้€Ÿๅนถ่กŒๅค„็† + --workers 8 # ไฝฟ็”จ 8 ไธช CPU ๆ ธๅฟƒ + +# ๆ‰ซๆ PDF๏ผˆ้œ€่ฆ: pip install pytesseract Pillow๏ผ‰ +skill-seekers create --pdf docs/scanned.pdf --name myskill --ocr +``` + +### ่ง†้ข‘ๆๅ– + +```bash +# ๅฎ‰่ฃ…่ง†้ข‘ๆ”ฏๆŒ +pip install skill-seekers[video] # ๅญ—ๅน• + ๅ…ƒๆ•ฐๆฎ +pip install skill-seekers[video-full] # + Whisper ่ฝฌๅฝ• + ่ง†่ง‰ๅธงๆๅ– + +# ่‡ชๅŠจๆฃ€ๆต‹ GPU ๅนถๅฎ‰่ฃ…่ง†่ง‰ไพ่ต–๏ผˆPyTorch + easyocr๏ผ‰ +skill-seekers create --setup + +# ไปŽ YouTube ่ง†้ข‘ๆๅ– +skill-seekers create --video-url https://www.youtube.com/watch?v=dQw4w9WgXcQ --name mytutorial + +# ไปŽ YouTube ๆ’ญๆ”พๅˆ—่กจๆๅ– +skill-seekers create --video-playlist https://www.youtube.com/playlist?list=... --name myplaylist + +# ไปŽๆœฌๅœฐ่ง†้ข‘ๆ–‡ไปถๆๅ– +skill-seekers create --video-file recording.mp4 --name myrecording + +# ไฝฟ็”จ่ง†่ง‰ๅธงๅˆ†ๆžๆๅ–๏ผˆ้œ€่ฆ video-full ไพ่ต–๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --name mytutorial --visual + +# ไฝฟ็”จ AI ๅขžๅผบ๏ผˆๆธ…็† OCR + ็”Ÿๆˆ็ฒพ็พŽ SKILL.md๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --enhance-level 2 + +# ่ฃๅ‰ช่ง†้ข‘็š„็‰นๅฎš็‰‡ๆฎต๏ผˆๆ”ฏๆŒ็ง’ๆ•ฐใ€MM:SSใ€HH:MM:SS ๆ ผๅผ๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --start-time 1:30 --end-time 5:00 + +# ไฝฟ็”จ Vision API ๅค„็†ไฝŽ็ฝฎไฟกๅบฆ OCR ๅธง๏ผˆ้œ€่ฆ ANTHROPIC_API_KEY๏ผ‰ +skill-seekers create --video-url https://www.youtube.com/watch?v=... --visual --vision-ocr + +# ไปŽไน‹ๅ‰ๆๅ–็š„ๆ•ฐๆฎ้‡ๅปบๆŠ€่ƒฝ๏ผˆ่ทณ่ฟ‡ไธ‹่ฝฝ๏ผ‰ +skill-seekers create --from-json output/mytutorial/video_data/extracted_data.json --name mytutorial +``` + +> **ๅฎŒๆ•ดๆŒ‡ๅ—๏ผš** ๅ‚่ง [docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md) ไบ†่งฃๅฎŒๆ•ด CLI ๅ‚่€ƒใ€ +> ่ง†่ง‰ๆตๆฐด็บฟ่ฏฆๆƒ…ใ€AI ๅขžๅผบ้€‰้กนๅ’Œๆ•…้šœๆŽ’้™คใ€‚ + +### GitHub ไป“ๅบ“ๅˆ†ๆž + +```bash +# ๅŸบ็ก€ไป“ๅบ“ๆŠ“ๅ– +skill-seekers create facebook/react + +# ้…็ฝฎ่ฎค่ฏ๏ผˆๆ›ด้ซ˜้€Ÿ็އ้™ๅˆถ๏ผ‰ +export GITHUB_TOKEN=ghp_your_token_here +skill-seekers create facebook/react + +# ่‡ชๅฎšไน‰ๅŒ…ๅซๅ†…ๅฎน +skill-seekers create django/django \ + --include-issues \ # ๆๅ– GitHub Issues + --max-issues 100 \ # ้™ๅˆถ issue ๆ•ฐ้‡ + --include-changelog # ๆๅ– CHANGELOG.md +``` + +### ็ปŸไธ€ๅคšๆบๆŠ“ๅ– + +**ๅฐ†ๆ–‡ๆกฃ + GitHub + PDF ๅˆๅนถไธบไธ€ไธชๅธฆๅ†ฒ็ชๆฃ€ๆต‹็š„็ปŸไธ€ๆŠ€่ƒฝ๏ผš** + +```bash +# ไฝฟ็”จ็Žฐๆœ‰็ปŸไธ€้…็ฝฎ +skill-seekers create --config configs/react_unified.json +skill-seekers create --config configs/django_unified.json + +# ๆˆ–ๅˆ›ๅปบ็ปŸไธ€้…็ฝฎ +cat > configs/myframework_unified.json << 'EOF' +{ + "name": "myframework", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.myframework.com/", + "max_pages": 200 + }, + { + "type": "github", + "repo": "owner/myframework", + "code_analysis_depth": "surface" + } + ] +} +EOF + +skill-seekers create --config configs/myframework_unified.json +``` + +**ๅ†ฒ็ชๆฃ€ๆต‹่‡ชๅŠจๅ‘็Žฐ๏ผš** +- ๐Ÿ”ด **ไปฃ็ ไธญ็ผบๅคฑ**๏ผˆ้ซ˜๏ผ‰๏ผšๅทฒๆ–‡ๆกฃๅŒ–ไฝ†ๆœชๅฎž็Žฐ +- ๐ŸŸก **ๆ–‡ๆกฃไธญ็ผบๅคฑ**๏ผˆไธญ๏ผ‰๏ผšๅทฒๅฎž็Žฐไฝ†ๆœชๆ–‡ๆกฃๅŒ– +- โš ๏ธ **็ญพๅไธๅŒน้…**๏ผšๅ‚ๆ•ฐ/็ฑปๅž‹ไธๅŒ +- โ„น๏ธ **ๆ่ฟฐไธๅŒน้…**๏ผš่งฃ้‡ŠไธๅŒ + +**ๅฎŒๆ•ดๆŒ‡ๅ—๏ผš** ๅ‚่ง [docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)ใ€‚ + +### ็งๆœ‰้…็ฝฎไป“ๅบ“ + +**ไฝฟ็”จ็งๆœ‰ Git ไป“ๅบ“ๅœจๅ›ข้˜Ÿ้—ดๅ…ฑไบซ่‡ชๅฎšไน‰้…็ฝฎ๏ผš** + +```bash +# ้€‰้กน 1๏ผšไฝฟ็”จ MCP ๅทฅๅ…ท๏ผˆๆŽจ่๏ผ‰ +# ๆณจๅ†Œๅ›ข้˜Ÿ็งๆœ‰ไป“ๅบ“ +add_config_source( + name="team", + git_url="https://github.com/mycompany/skill-configs.git", + token_env="GITHUB_TOKEN" +) + +# ไปŽๅ›ข้˜Ÿไป“ๅบ“่Žทๅ–้…็ฝฎ +fetch_config(source="team", config_name="internal-api") +``` + +**ๆ”ฏๆŒ็š„ๅนณๅฐ๏ผš** +- GitHub๏ผˆ`GITHUB_TOKEN`๏ผ‰ใ€GitLab๏ผˆ`GITLAB_TOKEN`๏ผ‰ใ€Gitea๏ผˆ`GITEA_TOKEN`๏ผ‰ใ€Bitbucket๏ผˆ`BITBUCKET_TOKEN`๏ผ‰ + +**ๅฎŒๆ•ดๆŒ‡ๅ—๏ผš** ๅ‚่ง [docs/reference/GIT_CONFIG_SOURCES.md](docs/reference/GIT_CONFIG_SOURCES.md)ใ€‚ + +## ๅทฅไฝœๅŽŸ็† + +```mermaid +graph LR + A[ๆ–‡ๆกฃ็ฝ‘็ซ™] --> B[Skill Seekers] + B --> C[ๆŠ“ๅ–ๅ™จ] + B --> D[AI ๅขžๅผบ] + B --> E[ๆ‰“ๅŒ…ๅ™จ] + C --> F[ๆœ‰ๅบๅ‚่€ƒๆ–‡ไปถ] + D --> F + F --> E + E --> G[AI ๆŠ€่ƒฝ .zip] + G --> H[ไธŠไผ ๅˆฐ AI ๅนณๅฐ] +``` + +0. **ๆฃ€ๆต‹ llms.txt** - ไผ˜ๅ…ˆๆฃ€ๆŸฅ llms-full.txtใ€llms.txtใ€llms-small.txt๏ผˆๆ™บ่ƒฝ SPA ๅ‘็Žฐ็š„ไธ€้ƒจๅˆ†๏ผ‰ +1. **ๆŠ“ๅ–**๏ผšๆๅ–ๆ–‡ๆกฃไธญ็š„ๆ‰€ๆœ‰้กต้ข +2. **ๅˆ†็ฑป**๏ผšๅฐ†ๅ†…ๅฎน็ป„็ป‡ไธบไธป้ข˜๏ผˆAPIใ€ๆŒ‡ๅ—ใ€ๆ•™็จ‹็ญ‰๏ผ‰ +3. **ๅขžๅผบ**๏ผšAI ๅˆ†ๆžๆ–‡ๆกฃๅนถๅˆ›ๅปบๅŒ…ๅซ็คบไพ‹็š„ๅฎŒๆ•ด SKILL.md๏ผˆ้€š่ฟ‡ `--agent` ๆ”ฏๆŒๅคš็งไปฃ็†๏ผ‰ +4. **ๆ‰“ๅŒ…**๏ผšๅฐ†ๆ‰€ๆœ‰ๅ†…ๅฎนๆ‰“ๅŒ…ไธบๅนณๅฐๅฐฑ็ปช็š„ `.zip` ๆ–‡ไปถ + +## ๆžถๆž„ + +็ณป็ปŸ็”ฑ **8 ไธชๆ ธๅฟƒๆจกๅ—**ๅ’Œ **5 ไธชๅทฅๅ…ทๆจกๅ—**็ป„ๆˆ๏ผˆๅ…ฑ็บฆ 200 ไธช็ฑป๏ผ‰๏ผš + +![ๅŒ…ๆฆ‚่งˆ](docs/UML/exports/00_package_overview.png) + +| ๆจกๅ— | ็”จ้€” | ๅ…ณ้”ฎ็ฑป | +|------|------|--------| +| **CLICore** | Git ้ฃŽๆ ผ็š„ๅ‘ฝไปคๅˆ†ๅ‘ๅ™จ | `CLIDispatcher`ใ€`SourceDetector`ใ€`CreateCommand` | +| **Scrapers** | 18 ็งๆฅๆบ็ฑปๅž‹ๆๅ–ๅ™จ | `DocToSkillConverter`ใ€`DocumentSkillBuilder`๏ผˆๅ…ฑไบซๆž„ๅปบๅฑ‚๏ผ‰ใ€`UnifiedScraper` | +| **Adaptors** | 20+ ่พ“ๅ‡บๅนณๅฐๆ ผๅผ | `SkillAdaptor`๏ผˆABC๏ผ‰ใ€`ClaudeAdaptor`ใ€`LangChainAdaptor` | +| **Analysis** | C3.x ไปฃ็ ๅบ“ๅˆ†ๆžๆตๆฐด็บฟ | `UnifiedCodebaseAnalyzer`ใ€`PatternRecognizer`ใ€10 ไธช GoF ๆฃ€ๆต‹ๅ™จ | +| **Enhancement** | ้€š่ฟ‡ `AgentClient` ๅฎž็Žฐ AI ้ฉฑๅŠจ็š„ๆŠ€่ƒฝๆ”น่ฟ› | `AgentClient`ใ€`AIEnhancer`ใ€`UnifiedEnhancer`ใ€`WorkflowEngine` | +| **Packaging** | ๆ‰“ๅŒ…ใ€ไธŠไผ ใ€ๅฎ‰่ฃ…ๆŠ€่ƒฝ | `PackageSkill`ใ€`InstallAgent` | +| **MCP** | FastMCP ๆœๅŠกๅ™จ๏ผˆ40 ไธชๅทฅๅ…ท๏ผ‰ | `SkillSeekerMCPServer`ใ€10 ไธชๅทฅๅ…ทๆจกๅ— | +| **Sync** | ๆ–‡ๆกฃๅ˜ๆ›ดๆฃ€ๆต‹ | `ChangeDetector`ใ€`SyncMonitor`ใ€`Notifier` | + +ๅทฅๅ…ทๆจกๅ—๏ผš**Parsers**๏ผˆ28 ไธช CLI ่งฃๆžๅ™จ๏ผ‰ใ€**Storage**๏ผˆS3/GCS/Azure๏ผ‰ใ€**Embedding**๏ผˆๅคšๆไพ›ๅ•†ๅ‘้‡๏ผ‰ใ€**Benchmark**๏ผˆๆ€ง่ƒฝ๏ผ‰ใ€**Utilities**๏ผˆ16 ไธชๅ…ฑไบซ่พ…ๅŠฉๅทฅๅ…ท๏ผ‰ใ€‚ + +ๅฎŒๆ•ด UML ๅ›พ๏ผš**[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** | StarUML ้กน็›ฎ๏ผš`docs/UML/skill_seekers.mdj` | HTML API ๅ‚่€ƒ๏ผš`docs/UML/html/` + +## ๐Ÿ“‹ ๅ‰ๆๆกไปถ + +**ๅผ€ๅง‹ๅ‰๏ผŒ่ฏท็กฎไฟๆ‚จๅ…ทๅค‡๏ผš** + +1. **Python 3.10 ๆˆ–ๆ›ด้ซ˜็‰ˆๆœฌ** - [ไธ‹่ฝฝ](https://www.python.org/downloads/) | ๆฃ€ๆŸฅ๏ผš`python3 --version` +2. **Git** - [ไธ‹่ฝฝ](https://git-scm.com/) | ๆฃ€ๆŸฅ๏ผš`git --version` +3. **15โ€“30 ๅˆ†้’Ÿ**็”จไบŽ้ฆ–ๆฌก่ฎพ็ฝฎ + +**้ฆ–ๆฌกไฝฟ็”จ๏ผŸ** โ†’ **[ไปŽ่ฟ™้‡Œๅผ€ๅง‹๏ผš้˜ฒๅผนๅฟซ้€Ÿๅ…ฅ้—จๆŒ‡ๅ—](BULLETPROOF_QUICKSTART.md)** ๐ŸŽฏ + +--- + +## ๐Ÿ“ค ไธŠไผ ๆŠ€่ƒฝๅˆฐ Claude + +ๆŠ€่ƒฝๆ‰“ๅŒ…ๅฎŒๆˆๅŽ๏ผŒ้œ€่ฆๅฐ†ๅ…ถไธŠไผ ๅˆฐ Claude๏ผš + +### ้€‰้กน 1๏ผš่‡ชๅŠจไธŠไผ ๏ผˆๅŸบไบŽ API๏ผ‰ + +```bash +# ่ฎพ็ฝฎ API Key๏ผˆไธ€ๆฌกๆ€ง๏ผ‰ +export ANTHROPIC_API_KEY=sk-ant-... + +# ๆ‰“ๅŒ…ๅนถ่‡ชๅŠจไธŠไผ  +skill-seekers package output/react/ --upload + +# ๆˆ–ไธŠไผ ๅทฒๆœ‰็š„ .zip +skill-seekers upload output/react.zip +``` + +### ้€‰้กน 2๏ผšๆ‰‹ๅŠจไธŠไผ ๏ผˆๆ— ้œ€ API Key๏ผ‰ + +```bash +# ๆ‰“ๅŒ…ๆŠ€่ƒฝ +skill-seekers package output/react/ +# โ†’ ๅˆ›ๅปบ output/react.zip + +# ็„ถๅŽๆ‰‹ๅŠจไธŠไผ ๏ผš +# - ่ฎฟ้—ฎ https://claude.ai/skills +# - ็‚นๅ‡ป"ไธŠไผ ๆŠ€่ƒฝ" +# - ้€‰ๆ‹ฉ output/react.zip +``` + +### ้€‰้กน 3๏ผšMCP๏ผˆClaude Code๏ผ‰ + +``` +ๅœจ Claude Code ไธญ๏ผŒ็›ดๆŽฅ่ฏข้—ฎ๏ผš +"ๆ‰“ๅŒ…ๅนถไธŠไผ  React ๆŠ€่ƒฝ" +``` + +--- + +## ๐Ÿค– ๅฎ‰่ฃ…ๅˆฐ AI ไปฃ็† + +Skill Seekers ๅฏ่‡ชๅŠจๅฐ†ๆŠ€่ƒฝๅฎ‰่ฃ…ๅˆฐ 19 ไธช AI ็ผ–็จ‹ไปฃ็†ใ€‚ + +```bash +# ๅฎ‰่ฃ…ๅˆฐ็‰นๅฎšไปฃ็† +skill-seekers install-agent output/react/ --agent cursor + +# ๅฎ‰่ฃ…ๅˆฐ IBM Bob๏ผˆ้กน็›ฎๆœฌๅœฐ .bob/skills/๏ผ‰ +skill-seekers install-agent output/react/ --agent bob + +# ไธ€ๆฌกๆ€งๅฎ‰่ฃ…ๅˆฐๆ‰€ๆœ‰ไปฃ็† +skill-seekers install-agent output/react/ --agent all + +# ้ข„่งˆ่€Œไธๅฎ‰่ฃ… +skill-seekers install-agent output/react/ --agent cursor --dry-run +``` + +### ๆ”ฏๆŒ็š„ไปฃ็† + +| ไปฃ็† | ่ทฏๅพ„ | ็ฑปๅž‹ | +|------|------|------| +| **Claude Code** | `~/.claude/skills/` | ๅ…จๅฑ€ | +| **Cursor** | `.cursor/skills/` | ้กน็›ฎ | +| **VS Code / Copilot** | `.github/skills/` | ้กน็›ฎ | +| **Amp** | `~/.amp/skills/` | ๅ…จๅฑ€ | +| **Goose** | `~/.config/goose/skills/` | ๅ…จๅฑ€ | +| **OpenCode** | `~/.opencode/skills/` | ๅ…จๅฑ€ | +| **Windsurf** | `~/.windsurf/skills/` | ๅ…จๅฑ€ | +| **Roo Code** | `.roo/skills/` | ้กน็›ฎ | +| **Cline** | `.cline/skills/` | ้กน็›ฎ | +| **Aider** | `~/.aider/skills/` | ๅ…จๅฑ€ | +| **Bolt** | `.bolt/skills/` | ้กน็›ฎ | +| **Kilo Code** | `.kilo/skills/` | ้กน็›ฎ | +| **Continue** | `~/.continue/skills/` | ๅ…จๅฑ€ | +| **Kimi Code** | `~/.kimi/skills/` | ๅ…จๅฑ€ | +| **IBM Bob** | `.bob/skills/` | ้กน็›ฎ | + +--- + +## ๐Ÿ”Œ MCP ้›†ๆˆ๏ผˆ40 ไธชๅทฅๅ…ท๏ผ‰ + +Skill Seekers ๆไพ› MCP ๆœๅŠกๅ™จ๏ผŒๅฏๅœจ Claude Codeใ€Cursorใ€Windsurfใ€VS Code + Cline ๆˆ– IntelliJ IDEA ไธญไฝฟ็”จใ€‚ + +```bash +# stdio ๆจกๅผ๏ผˆClaude Codeใ€VS Code + Cline๏ผ‰ +python -m skill_seekers.mcp.server_fastmcp + +# HTTP ๆจกๅผ๏ผˆCursorใ€Windsurfใ€IntelliJ๏ผ‰ +python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 + +# ไธ€ๆฌกๆ€ง่‡ชๅŠจ้…็ฝฎๆ‰€ๆœ‰ไปฃ็† +./setup_mcp.sh +``` + +**ๅ…จ้ƒจ 40 ไธชๅฏ็”จๅทฅๅ…ท๏ผš** +- **ๆ ธๅฟƒ๏ผˆ9 ไธช๏ผ‰๏ผš** `list_configs`ใ€`generate_config`ใ€`validate_config`ใ€`estimate_pages`ใ€`scrape_docs`ใ€`package_skill`ใ€`upload_skill`ใ€`enhance_skill`ใ€`install_skill` +- **ๆ‰ฉๅฑ•๏ผˆ10 ไธช๏ผ‰๏ผš** `scrape_github`ใ€`scrape_pdf`ใ€`unified_scrape`ใ€`merge_sources`ใ€`detect_conflicts`ใ€`add_config_source`ใ€`fetch_config`ใ€`list_config_sources`ใ€`remove_config_source`ใ€`split_config` +- **ๅ‘้‡ๆ•ฐๆฎๅบ“๏ผˆ4 ไธช๏ผ‰๏ผš** `export_to_chroma`ใ€`export_to_weaviate`ใ€`export_to_faiss`ใ€`export_to_qdrant` +- **ไบ‘ๅญ˜ๅ‚จ๏ผˆ3 ไธช๏ผ‰๏ผš** `cloud_upload`ใ€`cloud_download`ใ€`cloud_list` + +**ๅฎŒๆ•ดๆŒ‡ๅ—๏ผš** [docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md) + +--- + +## โš™๏ธ ้…็ฝฎ + +### ๅฏ็”จ้ข„่ฎพ๏ผˆ24+๏ผ‰ + +```bash +# ๅˆ—ๅ‡บๆ‰€ๆœ‰้ข„่ฎพ +# skill-seekers list-configs # v3.7.0 ไธญไธๅฏ็”จ +``` + +| ็ฑปๅˆซ | ้ข„่ฎพ | +|------|------| +| **Web ๆก†ๆžถ** | `react`ใ€`vue`ใ€`angular`ใ€`svelte`ใ€`nextjs` | +| **Python** | `django`ใ€`flask`ใ€`fastapi`ใ€`sqlalchemy`ใ€`pytest` | +| **ๆธธๆˆๅผ€ๅ‘** | `godot`ใ€`pygame`ใ€`unity` | +| **ๅทฅๅ…ทไธŽ DevOps** | `docker`ใ€`kubernetes`ใ€`terraform`ใ€`ansible` | +| **็ปŸไธ€๏ผˆๆ–‡ๆกฃ + GitHub๏ผ‰** | `react-unified`ใ€`vue-unified`ใ€`nextjs-unified` ็ญ‰ | + +### ๅˆ›ๅปบๆ‚จ่‡ชๅทฑ็š„้…็ฝฎ + +```bash +# ้€‰้กน 1๏ผšไบคไบ’ๅผ +skill-seekers create --interactive + +# ้€‰้กน 2๏ผšๅคๅˆถๅนถ็ผ–่พ‘้ข„่ฎพ +cp configs/react.json configs/myframework.json +nano configs/myframework.json +skill-seekers create --config configs/myframework.json +``` + +### ้…็ฝฎๆ–‡ไปถ็ป“ๆž„ + +```json +{ + "name": "myframework", + "description": "ไฝ•ๆ—ถไฝฟ็”จๆญคๆŠ€่ƒฝ", + "base_url": "https://docs.myframework.com/", + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs", "/guide"], + "exclude": ["/blog", "/about"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +### ้…็ฝฎๅญ˜ๅ‚จไฝ็ฝฎ + +ๅทฅๅ…ทๆŒ‰ไปฅไธ‹้กบๅบๆœ็ดข๏ผš +1. ๆไพ›็š„็กฎๅˆ‡่ทฏๅพ„ +2. `./configs/`๏ผˆๅฝ“ๅ‰็›ฎๅฝ•๏ผ‰ +3. `~/.config/skill-seekers/configs/`๏ผˆ็”จๆˆท้…็ฝฎ็›ฎๅฝ•๏ผ‰ +4. SkillSeekersWeb.com API๏ผˆ้ข„่ฎพ้…็ฝฎ๏ผ‰ + +--- + +## ๐Ÿ“Š ๅˆ›ๅปบ็š„ๅ†…ๅฎน + +``` +output/ +โ”œโ”€โ”€ godot_data/ # ๆŠ“ๅ–็š„ๅŽŸๅง‹ๆ•ฐๆฎ +โ”‚ โ”œโ”€โ”€ pages/ # JSON ๆ–‡ไปถ๏ผˆๆฏ้กตไธ€ไธช๏ผ‰ +โ”‚ โ””โ”€โ”€ summary.json # ๆฆ‚่งˆ +โ”‚ +โ””โ”€โ”€ godot/ # ๆŠ€่ƒฝๆ–‡ไปถ + โ”œโ”€โ”€ SKILL.md # ๅซ็œŸๅฎž็คบไพ‹็š„ๅขžๅผบ็‰ˆ + โ”œโ”€โ”€ references/ # ๅˆ†็ฑปๆ–‡ๆกฃ + โ”‚ โ”œโ”€โ”€ index.md + โ”‚ โ”œโ”€โ”€ getting_started.md + โ”‚ โ”œโ”€โ”€ scripting.md + โ”‚ โ””โ”€โ”€ ... + โ”œโ”€โ”€ scripts/ # ็ฉบ๏ผˆๅฏๆทปๅŠ ่‡ชๅทฑ็š„่„šๆœฌ๏ผ‰ + โ””โ”€โ”€ assets/ # ็ฉบ๏ผˆๅฏๆทปๅŠ ่‡ชๅทฑ็š„่ต„ๆบ๏ผ‰ +``` + +--- + +## ๐Ÿ› ๆ•…้šœๆŽ’้™ค + +### ๆœชๆๅ–ๅˆฐๅ†…ๅฎน๏ผŸ +- ๆฃ€ๆŸฅๆ‚จ็š„ `main_content` ้€‰ๆ‹ฉๅ™จ +- ๅฐ่ฏ•๏ผš`article`ใ€`main`ใ€`div[role="main"]` + +### ๆ•ฐๆฎๅญ˜ๅœจไฝ†ไธไฝฟ็”จ๏ผŸ +```bash +# ๅผบๅˆถ้‡ๆ–ฐๆŠ“ๅ– +rm -rf output/myframework_data/ +skill-seekers create --config configs/myframework.json +``` + +### ๅˆ†็ฑปไธ็†ๆƒณ๏ผŸ +็ผ–่พ‘้…็ฝฎไธญ็š„ `categories` ้ƒจๅˆ†๏ผŒไฝฟ็”จๆ›ดๅฅฝ็š„ๅ…ณ้”ฎ่ฏใ€‚ + +### ๆƒณ่ฆๆ›ดๆ–ฐๆ–‡ๆกฃ๏ผŸ +```bash +# ๅˆ ้™คๆ—งๆ•ฐๆฎๅนถ้‡ๆ–ฐๆŠ“ๅ– +rm -rf output/godot_data/ +skill-seekers create --config configs/godot.json +``` + +### ๅขžๅผบไธๅทฅไฝœ๏ผŸ +```bash +# ๆฃ€ๆŸฅ API Key ๆ˜ฏๅฆ่ฎพ็ฝฎ +echo $ANTHROPIC_API_KEY + +# ๅฐ่ฏ• LOCAL ๆจกๅผ๏ผˆไฝฟ็”จ Claude Code Max๏ผŒๆ— ้œ€ API Key๏ผ‰ +skill-seekers enhance output/react/ --mode LOCAL + +# ็›‘ๆŽงๅŽๅฐๅขžๅผบ็Šถๆ€ +skill-seekers enhance-status output/react/ --watch +``` + +### GitHub ้€Ÿ็އ้™ๅˆถ้—ฎ้ข˜๏ผŸ +```bash +# ่ฎพ็ฝฎ GitHub Token๏ผˆ5000 ๆฌก/ๅฐๆ—ถ vs ๅŒฟๅ 60 ๆฌก/ๅฐๆ—ถ๏ผ‰ +export GITHUB_TOKEN=ghp_your_token_here + +# ๆˆ–้…็ฝฎๅคšไธช้…็ฝฎๆ–‡ไปถ +skill-seekers config --github +``` + +--- + +## ๐Ÿ“ˆ ๆ€ง่ƒฝ + +| ไปปๅŠก | ๆ—ถ้—ด | ๅค‡ๆณจ | +|------|------|------| +| ๆŠ“ๅ–๏ผˆๅŒๆญฅ๏ผ‰| 15โ€“45 ๅˆ†้’Ÿ | ไป…้ฆ–ๆฌก๏ผŒๅŸบไบŽ็บฟ็จ‹ | +| ๆŠ“ๅ–๏ผˆๅผ‚ๆญฅ๏ผ‰| 5โ€“15 ๅˆ†้’Ÿ | `--async` ๆ ‡ๅฟ—ๅฟซ 2โ€“3 ๅ€ | +| ๆž„ๅปบ | 1โ€“3 ๅˆ†้’Ÿ | ไปŽ็ผ“ๅญ˜ๅฟซ้€Ÿ้‡ๅปบ | +| ้‡ๅปบ | <1 ๅˆ†้’Ÿ | ไฝฟ็”จ `--skip-scrape` | +| ๅขžๅผบ๏ผˆLOCAL๏ผ‰| 30โ€“60 ็ง’ | ไฝฟ็”จ Claude Code Max | +| ๅขžๅผบ๏ผˆAPI๏ผ‰| 20โ€“40 ็ง’ | ้œ€่ฆ API Key | +| ่ง†้ข‘๏ผˆๅญ—ๅน•๏ผ‰| 1โ€“3 ๅˆ†้’Ÿ | YouTube/ๆœฌๅœฐ๏ผŒไป…ๅญ—ๅน• | +| ่ง†้ข‘๏ผˆ่ง†่ง‰๏ผ‰| 5โ€“15 ๅˆ†้’Ÿ | + OCR ๅธงๆๅ– | +| ๆ‰“ๅŒ… | 5โ€“10 ็ง’ | ๆœ€็ปˆ .zip ๅˆ›ๅปบ | + +--- + +## ๐Ÿ†• v3.6.0 ๆ–ฐๅขžๅŠŸ่ƒฝ + +### ๅทฅไฝœๆต้ข„่ฎพ +ไฝฟ็”จ `--preset` ๆŽงๅˆถๅˆ†ๆžๆทฑๅบฆ๏ผš + +```bash +skill-seekers create https://docs.react.dev/ --preset quick # ๅฟซ้€Ÿ๏ผŒๆต…ๅฑ‚ๅˆ†ๆž +skill-seekers create https://docs.react.dev/ --preset standard # ๅนณ่กก๏ผˆ้ป˜่ฎค๏ผ‰ +skill-seekers create https://docs.react.dev/ --preset comprehensive # ๆทฑๅบฆ๏ผŒ่ฏฆๅฐฝๅˆ†ๆž +``` + +### ็”Ÿๅ‘ฝๅ‘จๆœŸๆ ‡ๅฟ— +```bash +skill-seekers create https://docs.react.dev/ --dry-run # ไธๆŠ“ๅ–้ข„่งˆ +skill-seekers create https://docs.react.dev/ --fresh # ๅฟฝ็•ฅ็ผ“ๅญ˜๏ผŒๅฎŒๆ•ด้‡ๆ–ฐๆŠ“ๅ– +skill-seekers create https://docs.react.dev/ --resume # ๆขๅคไธญๆ–ญ็š„ไปปๅŠก +skill-seekers create https://docs.react.dev/ --skip-scrape # ้‡ๆ–ฐๆ‰“ๅŒ…็Žฐๆœ‰่พ“ๅ‡บ +``` + +### ๅฅๅบทๆฃ€ๆŸฅไธŽๅทฅๅ…ท +```bash +skill-seekers doctor # ่ฏŠๆ–ญๅฎ‰่ฃ…ไธŽ็Žฏๅขƒ +skill-seekers sync-config # ้…็ฝฎๆผ‚็งปๆฃ€ๆต‹ +skill-seekers stream # ๅคงๅž‹ๆ–‡ๆกฃๆตๅผๆ‘„ๅ– +skill-seekers update output/react/ # ๅขž้‡ๆ›ดๆ–ฐ +skill-seekers multilang # ๅคš่ฏญ่จ€ๆŠ€่ƒฝ็”Ÿๆˆ +skill-seekers quality output/react/ # ่ดจ้‡ๆŠฅๅ‘Š๏ผˆๆทปๅŠ  --threshold 7 ่ฎพ็ฝฎ้—จๆง›๏ผšไฝŽไบŽ 7/10 ๆ—ถ้ž้›ถ้€€ๅ‡บ๏ผ‰ +``` + +### RAG ๅˆ†ๅ—้€‰้กน๏ผˆๆ‰“ๅŒ…๏ผ‰ +```bash +skill-seekers package output/react/ --chunk-for-rag --chunk-tokens 512 --chunk-overlap-tokens 50 +``` + +### ๅธ‚ๅœบๅ‘ๅธƒ +```bash +skill-seekers package output/react/ --marketplace --marketplace-category frontend +``` + +### ๅ…ถไป–ๅฏ้€‰ไพ่ต– +| Extra | ๅฎ‰่ฃ… | ็”จ้€” | +|-------|------|------| +| `browser` | `pip install "skill-seekers[browser]"` | ้€‚็”จไบŽ SPA ็ฝ‘็ซ™็š„ๆ— ๅคด Playwright | +| `embedding` | `pip install "skill-seekers[embedding]"` | ๅตŒๅ…ฅๆœๅŠกๅ™จๆ”ฏๆŒ | +| `s3` / `gcs` / `azure` | `pip install "skill-seekers[s3]"` ็ญ‰ | ไบ‘ๅญ˜ๅ‚จไธŠไผ  | +| `rag-upload` | `pip install "skill-seekers[rag-upload]"` | ็ป„ๅˆๅ‘้‡ๆ•ฐๆฎๅบ“ไธŠไผ ไพ่ต– | + +--- + +## ๐Ÿ“š ๆ–‡ๆกฃ + +### ๅ…ฅ้—จๆŒ‡ๅ— +- **[BULLETPROOF_QUICKSTART.md](BULLETPROOF_QUICKSTART.md)** - ๐ŸŽฏ **ๆ–ฐ็”จๆˆทไปŽ่ฟ™้‡Œๅผ€ๅง‹๏ผ** +- **[QUICKSTART.md](docs/archive/legacy/QUICKSTART.md)** - ๆœ‰็ป้ชŒ็”จๆˆท็š„ๅฟซ้€Ÿๅ…ฅ้—จ +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - ๅธธ่ง้—ฎ้ข˜ๅ’Œ่งฃๅ†ณๆ–นๆกˆ +- **[docs/archive/legacy/QUICK_REFERENCE.md](docs/archive/legacy/QUICK_REFERENCE.md)** - ๅ•้กต้€ŸๆŸฅ่กจ + +### ๆžถๆž„ +- **[docs/UML_ARCHITECTURE.md](docs/UML_ARCHITECTURE.md)** - ๅŒ…ๅซ 14 ๅผ ๅ›พ็š„ UML ๆžถๆž„ๆฆ‚่งˆ +- **[docs/UML/exports/](docs/UML/exports/)** - PNG ๅ›พๅฏผๅ‡บ๏ผˆๅŒ…ๆฆ‚่งˆ + 13 ๅผ ็ฑปๅ›พ๏ผ‰ +- **[docs/UML/html/](docs/UML/html/index.html/index.html)** - ๅฎŒๆ•ด HTML API ๅ‚่€ƒ๏ผˆๆ‰€ๆœ‰็ฑปใ€ๆ“ไฝœใ€ๅฑžๆ€ง๏ผ‰ +- **[docs/UML/skill_seekers.mdj](docs/UML/skill_seekers.mdj)** - StarUML ้กน็›ฎๆ–‡ไปถ๏ผˆไฝฟ็”จ [StarUML](https://staruml.io/) ๆ‰“ๅผ€๏ผ‰ + +### ๆŒ‡ๅ— +- **[docs/reference/LARGE_DOCUMENTATION.md](docs/reference/LARGE_DOCUMENTATION.md)** - ๅค„็† 10Kโ€“40K+ ้กตๆ–‡ๆกฃ +- **[docs/features/ENHANCEMENT_MODES.md](docs/features/ENHANCEMENT_MODES.md)** - AI ๅขžๅผบๆจกๅผๆŒ‡ๅ— +- **[docs/guides/MCP_SETUP.md](docs/guides/MCP_SETUP.md)** - MCP ้›†ๆˆ่ฎพ็ฝฎ +- **[docs/features/UNIFIED_SCRAPING.md](docs/features/UNIFIED_SCRAPING.md)** - ๅคšๆบๆŠ“ๅ– +- **[docs/VIDEO_GUIDE.md](docs/VIDEO_GUIDE.md)** - ่ง†้ข‘ๆๅ–ๅฎŒๆ•ดๆŒ‡ๅ— + +### ้›†ๆˆๆŒ‡ๅ— +- **[docs/integrations/LANGCHAIN.md](docs/integrations/LANGCHAIN.md)** - LangChain RAG +- **[docs/integrations/CURSOR.md](docs/integrations/CURSOR.md)** - Cursor IDE +- **[docs/integrations/WINDSURF.md](docs/integrations/WINDSURF.md)** - Windsurf IDE +- **[docs/integrations/CLINE.md](docs/integrations/CLINE.md)** - Cline๏ผˆVS Code๏ผ‰ +- **[docs/integrations/RAG_PIPELINES.md](docs/integrations/RAG_PIPELINES.md)** - ๆ‰€ๆœ‰ RAG ๆตๆฐด็บฟ + +--- + +## ๐Ÿ“ ่ฎธๅฏ่ฏ + +MIT ่ฎธๅฏ่ฏ - ่ฏฆ่ง [LICENSE](LICENSE) ๆ–‡ไปถ + +--- + +็ฅๆ‚จๆž„ๅปบๆŠ€่ƒฝๆ„‰ๅฟซ๏ผ ๐Ÿš€ + +--- + +## ๐Ÿ”’ ๅฎ‰ๅ…จ + +[![MseeP.ai ๅฎ‰ๅ…จ่ฏ„ไผฐๅพฝ็ซ ](https://mseep.net/pr/yusufkaraaslan-skill-seekers-badge.png)](https://mseep.ai/app/yusufkaraaslan-skill-seekers) + +--- + +## ๐Ÿ’› ่ตžๅŠฉๅ•† + +

+ + Atlas Cloud + +

+ +[Atlas Cloud](https://www.atlascloud.ai/?utm_source=github&utm_medium=link&utm_campaign=skill_seekers) โ€” ๅ…จๆจกๆ€ใ€OpenAI ๅ…ผๅฎน็š„ AI ๆŽจ็†ๅนณๅฐใ€‚Skill Seekers ้€š่ฟ‡ `--target atlas`๏ผˆ้…็ฝฎ `ATLAS_API_KEY`๏ผ‰ๆ”ฏๆŒๅฐ†ๅ…ถไฝœไธบๆ‰“ๅŒ…/ๅขžๅผบ็›ฎๆ ‡ใ€‚ diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..9a3a8f7 --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,433 @@ +# Skill Seekers Roadmap + +Transform Skill Seekers into the easiest way to create Claude AI skills from **any knowledge source** - documentation websites, PDFs, codebases, GitHub repos, Office docs, and more - with both CLI and MCP interfaces. + +--- + +## ๐ŸŽฏ Current Status: v3.6.0 โœ… + +**Latest Release:** v3.6.0 (May 2026) + +**What Works:** +- โœ… **18 source types** โ€” documentation, GitHub, PDF, video, Word, EPUB, Jupyter, local HTML, OpenAPI, AsciiDoc, PowerPoint, RSS/Atom, man pages, Confluence, Notion, Slack/Discord, local codebase +- โœ… Unified multi-source scraping with generic merge for any source combination +- โœ… 40 MCP tools fully functional +- โœ… Multi-platform support (21 platforms: Claude, Gemini, OpenAI, DeepSeek, Qwen, Fireworks, Together, OpenRouter, IBM BoB, Kimi, MiniMax, OpenCode, LangChain, LlamaIndex, Haystack, Pinecone, ChromaDB, FAISS, Weaviate, Qdrant, Markdown) +- โœ… Auto-upload to all platforms +- โœ… 12 preset configs (including unified configs) +- โœ… Large docs support (40K+ pages with router skills) +- โœ… C3.x codebase analysis suite (C3.1-C3.10) +- โœ… Bootstrap skill feature - self-hosting capability +- โœ… 3,445+ tests passing +- โœ… Unified `create` command with auto-detection for all 18 source types +- โœ… 68 YAML workflow presets +- โœ… Cloud storage integration (S3, GCS, Azure) +- โœ… Source auto-detection via `source_detector.py` + +**Recent Improvements (v3.2.0):** +- โœ… **10 new source types**: Word, EPUB, video, Jupyter, local HTML, OpenAPI, AsciiDoc, PowerPoint, RSS/Atom, man pages, Confluence, Notion, Slack/Discord +- โœ… **Generic merge system**: `_generic_merge()` in `unified_skill_builder.py` handles arbitrary source combinations +- โœ… **Unified CLI**: `create` command auto-detects all 18 source types +- โœ… **Workflow Presets**: YAML-based enhancement presets with CLI management +- โœ… **Progressive Disclosure**: Default help shows 13 universal flags, detailed help per source +- โœ… **Bug Fixes**: Markdown parser h1 filtering, paragraph length filtering +- โœ… **Docs Cleanup**: Removed 47 stale planning/QA/release markdown files + +--- + +## ๐Ÿงญ Development Philosophy + +**Small tasks โ†’ Pick one โ†’ Complete โ†’ Move on** + +Instead of rigid milestones, we use a **flexible task-based approach**: +- 136 small, independent tasks across 10 categories +- Pick any task, any order +- Start small, ship often +- No deadlines, just continuous progress + +**Philosophy:** Small steps โ†’ Consistent progress โ†’ Compound results + +--- + +## ๐Ÿ“‹ Task-Based Roadmap (136 Tasks, 10 Categories) + +### ๐ŸŒ **Category A: Community & Sharing** +Small tasks that build community features incrementally + +#### A1: Config Sharing (Website Feature) +- [x] **Task A1.1:** Create simple JSON API endpoint to list configs โœ… **COMPLETE** + - **Status:** Live at https://api.skillseekersweb.com + - **Features:** 6 REST endpoints, auto-categorization, auto-tags, filtering, SSL enabled +- [x] **Task A1.2:** Add MCP tool `fetch_config` to download from website โœ… **COMPLETE** + - **Features:** List 24 configs, filter by category, download by name +- [x] **Task A1.3:** Add MCP tool `submit_config` to submit custom configs โœ… **COMPLETE** + - **Purpose:** Allow users to submit custom configs via MCP (creates GitHub issue) + - **Completed:** May 2026 +- [ ] **Task A1.4:** Create static config catalog website (GitHub Pages) + - **Purpose:** Read-only catalog to browse/search configs + - **Time:** 2-3 hours +- [ ] **Task A1.5:** Add config rating/voting system + - **Purpose:** Community feedback on config quality + - **Time:** 3-4 hours +- [ ] **Task A1.6:** Admin review queue for submitted configs + - **Approach:** Use GitHub Issues with labels + - **Time:** 1-2 hours +- [x] **Task A1.7:** Add MCP tool `install_skill` for one-command workflow โœ… **COMPLETE** + - **Features:** fetch โ†’ scrape โ†’ enhance โ†’ package โ†’ upload + - **Completed:** December 21, 2025 +- [ ] **Task A1.8:** Add smart skill detection and auto-install + - **Purpose:** Auto-detect missing skills from user queries + - **Time:** 4-6 hours + +**Start Next:** Pick A1.4 (static config catalog website) + +#### A2: Knowledge Sharing (Website Feature) +- [ ] **Task A2.1:** Design knowledge database schema +- [ ] **Task A2.2:** Create API endpoint to upload knowledge (.zip files) +- [ ] **Task A2.3:** Add MCP tool `fetch_knowledge` to download from site +- [ ] **Task A2.4:** Add knowledge preview/description +- [ ] **Task A2.5:** Add knowledge categorization (by framework/topic) +- [ ] **Task A2.6:** Add knowledge search functionality + +**Start Small:** Pick A2.1 first (schema design, no coding) + +#### A3: Simple Website Foundation +- [ ] **Task A3.1:** Create single-page static site (GitHub Pages) +- [ ] **Task A3.2:** Add config gallery view +- [ ] **Task A3.3:** Add "Submit Config" link +- [ ] **Task A3.4:** Add basic stats +- [ ] **Task A3.5:** Add simple blog using GitHub Issues +- [ ] **Task A3.6:** Add RSS feed for updates + +**Start Small:** Pick A3.1 first (single HTML page) + +--- + +### ๐Ÿ› ๏ธ **Category B: New Input Formats** +Add support for non-HTML documentation sources + +#### B1: PDF Documentation Support โœ… **COMPLETE (v3.0.0)** +- [x] **Task B1.1:** Research PDF parsing libraries โœ… +- [x] **Task B1.2:** Create simple PDF text extractor (POC) โœ… +- [x] **Task B1.3:** Add PDF page detection and chunking โœ… +- [x] **Task B1.4:** Extract code blocks from PDFs โœ… +- [x] **Task B1.5:** Add PDF image extraction โœ… +- [x] **Task B1.6:** Create `pdf_scraper.py` CLI tool โœ… +- [x] **Task B1.7:** Add MCP tool `scrape_pdf` โœ… +- [x] **Task B1.8:** Create PDF config format โœ… + +#### B2: Microsoft Word (.docx) Support โœ… **COMPLETE (v3.2.0)** +- [x] **Task B2.1-B2.7:** Word document parsing and scraping โœ… + +#### B3: Excel/Spreadsheet (.xlsx) Support +- [ ] **Task B3.1-B3.6:** Spreadsheet parsing and API extraction + +#### B4: Markdown Files Support โœ… **COMPLETE (v3.1.0)** +- [x] **Task B4.1-B4.6:** Local markdown directory scraping โœ… + +#### B5: Additional Source Types โœ… **COMPLETE (v3.2.0)** +- [x] **EPUB** - `epub_scraper.py` โœ… +- [x] **Video** - `video_scraper.py` (YouTube, Vimeo, local files) โœ… +- [x] **Jupyter Notebook** - `jupyter_scraper.py` โœ… +- [x] **Local HTML** - `html_scraper.py` โœ… +- [x] **OpenAPI/Swagger** - `openapi_scraper.py` โœ… +- [x] **AsciiDoc** - `asciidoc_scraper.py` โœ… +- [x] **PowerPoint** - `pptx_scraper.py` โœ… +- [x] **RSS/Atom** - `rss_scraper.py` โœ… +- [x] **Man pages** - `manpage_scraper.py` โœ… +- [x] **Confluence** - `confluence_scraper.py` โœ… +- [x] **Notion** - `notion_scraper.py` โœ… +- [x] **Slack/Discord** - `chat_scraper.py` โœ… + +--- + +### ๐Ÿ’ป **Category C: Codebase Knowledge** +Generate skills from actual code repositories + +#### C1: GitHub Repository Scraping +- [ ] **Task C1.1-C1.12:** GitHub API integration and code analysis + +#### C2: Local Codebase Scraping +- [ ] **Task C2.1-C2.8:** Local directory analysis and API extraction + +#### C3: Code Pattern Recognition +- [x] **Task C3.1:** Detect common patterns (singleton, factory, etc.) โœ… **v2.6.0** + - 10 GoF patterns, 9 languages, 87% precision +- [x] **Task C3.2:** Extract usage examples from test files โœ… **v2.6.0** + - 5 categories, 9 languages, 80%+ high-confidence examples +- [x] **Task C3.3:** Build "how to" guides from code โœ… **COMPLETE** +- [x] **Task C3.4:** Extract configuration patterns โœ… **COMPLETE** +- [x] **Task C3.5:** Create architectural overview โœ… **COMPLETE** +- [x] **Task C3.6:** AI Enhancement for Pattern Detection โœ… **v2.6.0** + - Claude API integration for enhanced insights +- [x] **Task C3.7:** Architectural Pattern Detection โœ… **v2.6.0** + - Detects 8 architectural patterns, framework-aware + +**Start Next:** Pick C1.1 (GitHub API client) + +--- + +### ๐Ÿ”Œ **Category D: Context7 Integration** +- [ ] **Task D1.1-D1.4:** Research and planning +- [ ] **Task D2.1-D2.5:** Basic integration + +--- + +### ๐Ÿš€ **Category E: MCP Enhancements** +Small improvements to existing MCP tools + +#### E1: New MCP Tools +- [x] **Task E1.3:** Add `scrape_pdf` MCP tool โœ… +- [x] **Task E1.1:** Add `fetch_config` MCP tool โœ… **COMPLETE** +- [ ] **Task E1.2:** Add `fetch_knowledge` MCP tool +- [ ] **Task E1.4-E1.9:** Additional format scrapers + +#### E2: MCP Quality Improvements +- [ ] **Task E2.1:** Add error handling to all tools +- [ ] **Task E2.2:** Add structured logging +- [ ] **Task E2.3:** Add progress indicators +- [ ] **Task E2.4:** Add validation for all inputs +- [ ] **Task E2.5:** Add helpful error messages +- [x] **Task E2.6:** Add retry logic for network failures โœ… **Utilities ready** + +--- + +### โšก **Category F: Performance & Reliability** +Technical improvements to existing features + +#### F1: Core Scraper Improvements +- [ ] **Task F1.1:** Add URL normalization +- [ ] **Task F1.2:** Add duplicate page detection +- [ ] **Task F1.3:** Add memory-efficient streaming +- [ ] **Task F1.4:** Add HTML parser fallback +- [x] **Task F1.5:** Add network retry with exponential backoff โœ… +- [ ] **Task F1.6:** Fix package path output bug + +#### F2: Incremental Updates +- [ ] **Task F2.1-F2.5:** Track modifications, update only changed content + +--- + +### ๐ŸŽจ **Category G: Tools & Utilities** +Small standalone tools that add value + +#### G1: Config Tools +- [ ] **Task G1.1:** Create `validate_config.py` +- [ ] **Task G1.2:** Create `test_selectors.py` +- [ ] **Task G1.3:** Create `auto_detect_selectors.py` (AI-powered) +- [ ] **Task G1.4:** Create `compare_configs.py` +- [ ] **Task G1.5:** Create `optimize_config.py` + +#### G2: Skill Quality Tools +- [ ] **Task G2.1-G2.5:** Quality analysis and reporting + +--- + +### ๐Ÿ“š **Category H: Community Response** +- [ ] **Task H1.1-H1.5:** Address open GitHub issues + +--- + +### ๐ŸŽ“ **Category I: Content & Documentation** +- [ ] **Task I1.1-I1.6:** Video tutorials +- [ ] **Task I2.1-I2.5:** Written guides + +--- + +### ๐Ÿงช **Category J: Testing & Quality** +- [ ] **Task J1.1-J1.6:** Test expansion and coverage + +--- + +## ๐ŸŽฏ Recommended Starting Tasks + +### Quick Wins (1-2 hours each): +1. **H1.1** - Respond to Issue #8 +2. **J1.1** - Install MCP package +3. **A3.1** - Create GitHub Pages site +4. **B1.1** - Research PDF parsing +5. **F1.1** - Add URL normalization + +### Medium Tasks (3-5 hours each): +6. โœ… **A1.1** - JSON API for configs (COMPLETE) +7. **G1.1** - Config validator script +8. **C1.1** - GitHub API client +9. **I1.1** - Video script writing +10. **E2.1** - Error handling for MCP tools + +--- + +## ๐Ÿ“Š Release History + +### โœ… v2.6.0 - C3.x Codebase Analysis Suite (January 14, 2026) +**Focus:** Complete codebase analysis with multi-platform support + +**Completed Features:** +- C3.x suite (C3.1-C3.8): Pattern detection, test extraction, architecture analysis +- Multi-platform support: Claude, Gemini, OpenAI, Markdown +- Platform adaptor architecture +- 18 MCP tools (up from 9) +- 700+ tests passing +- Unified multi-source scraping maturity + +### โœ… v2.1.0 - Test Coverage & Quality (November 29, 2025) +**Focus:** Test coverage and unified scraping + +**Completed Features:** +- Fixed 12 unified scraping tests +- GitHub repository scraping with unlimited local analysis +- PDF extraction and conversion +- 427 tests passing + +### โœ… v1.0.0 - Production Release (October 19, 2025) +**First stable release** + +**Core Features:** +- Documentation scraping with BFS +- Smart categorization +- Language detection +- Pattern extraction +- 12 preset configurations +- MCP server with 9 tools +- Large documentation support (40K+ pages) +- Auto-upload functionality + +--- + +## ๐Ÿ“… Release Planning + +### Release: v3.7.0 (Estimated: Q3 2026) +**Focus:** Developer Experience & Integrations + +**Planned Features:** +- CI/CD integration examples +- Docker containerization +- Enhanced scraping formats (Sphinx, Docusaurus detection) +- Performance optimizations +- Real-time documentation monitoring + +--- + +## ๐Ÿ”ฎ Long-term Vision (v3.0+) + +### Major Features Under Consideration + +#### Advanced Scraping +- Real-time documentation monitoring +- Automatic skill updates +- Change notifications +- Multi-language documentation support + +#### Collaboration +- Collaborative skill curation +- Shared skill repositories +- Community ratings and reviews +- Skill marketplace + +#### AI & Intelligence +- Enhanced AI analysis +- Better conflict detection algorithms +- Automatic documentation quality scoring +- Semantic understanding and natural language queries + +#### Ecosystem +- VS Code extension +- IntelliJ/PyCharm plugin +- Interactive TUI mode +- Skill diff and merge tools + +--- + +## ๐Ÿ“ˆ Metrics & Goals + +### Current State (v3.6.0) โœ… +- โœ… 18 source types supported (17 + config) +- โœ… 12 preset configs +- โœ… 3,445+ tests (excellent coverage) +- โœ… 40 MCP tools +- โœ… 21 platform adaptors +- โœ… C3.x codebase analysis suite complete +- โœ… Multi-source synthesis with generic merge for any combination + +### Goals for v3.7+ +- ๐ŸŽฏ Professional website live +- ๐ŸŽฏ 50+ preset configs +- ๐ŸŽฏ Video tutorial series (5+ videos) +- ๐ŸŽฏ 100+ GitHub stars +- ๐ŸŽฏ Community contributions flowing + +### Goals for v3.0+ +- ๐ŸŽฏ Auto-detection for 80%+ of sites +- ๐ŸŽฏ <1 minute skill generation +- ๐ŸŽฏ Active community marketplace +- ๐ŸŽฏ Quality scoring system +- ๐ŸŽฏ Real-time monitoring + +--- + +## ๐Ÿค How to Influence the Roadmap + +### Priority System + +Features are prioritized based on: +1. **User impact** - How many users will benefit? +2. **Technical feasibility** - How complex is the implementation? +3. **Community interest** - How many upvotes/requests? +4. **Strategic alignment** - Does it fit our vision? + +### Ways to Contribute + +1. **Vote on Features** - โญ Star feature request issues +2. **Contribute Code** - Pick any task from the 136 available +3. **Share Feedback** - Open issues, share success stories +4. **Help with Documentation** - Write tutorials, improve docs + +See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines. + +--- + +## ๐ŸŽจ Flexibility Rules + +1. **Pick any task, any order** - No rigid dependencies +2. **Start small** - Research tasks before implementation +3. **One task at a time** - Focus, complete, move on +4. **Switch anytime** - Not enjoying it? Pick another! +5. **Document as you go** - Each task should update docs +6. **Test incrementally** - Each task should have a quick test +7. **Ship early** - Don't wait for "complete" features + +--- + +## ๐Ÿ“Š Progress Tracking + +**Completed Tasks:** 15+ (C3.1, C3.2, C3.3, C3.4, C3.5, C3.6, C3.7, A1.1, A1.2, A1.3, A1.7, E1.1, E1.3, E2.6, F1.5) +**In Progress:** v3.7.0 planning +**Total Available Tasks:** 136 + +**No pressure, no deadlines, just progress!** โœจ + +--- + +## ๐Ÿ”— Related Projects + +- [Model Context Protocol](https://modelcontextprotocol.io/) +- [Claude Code](https://claude.ai/code) +- [Anthropic Claude](https://claude.ai) +- Documentation frameworks we support: Docusaurus, GitBook, VuePress, Sphinx, MkDocs + +--- + +## ๐Ÿ“š Learn More + +- **Project Board**: https://github.com/users/yusufkaraaslan/projects/2 +- **Changelog**: [CHANGELOG.md](CHANGELOG.md) +- **Contributing**: [CONTRIBUTING.md](CONTRIBUTING.md) +- **Discussions**: https://github.com/yusufkaraaslan/Skill_Seekers/discussions +- **Issues**: https://github.com/yusufkaraaslan/Skill_Seekers/issues + +--- + +**Last Updated:** May 30, 2026 +**Philosophy:** Small steps โ†’ Consistent progress โ†’ Compound results + +**Together, we're building the future of documentation-to-AI skill conversion!** ๐Ÿš€ diff --git a/TROUBLESHOOTING.md b/TROUBLESHOOTING.md new file mode 100644 index 0000000..1f20426 --- /dev/null +++ b/TROUBLESHOOTING.md @@ -0,0 +1,485 @@ +# Troubleshooting Guide + +Common issues and solutions when using Skill Seeker. + +--- + +## Installation Issues + +### Python Not Found + +**Error:** +``` +python3: command not found +``` + +**Solutions:** +1. **Check if Python is installed:** + ```bash + which python3 + python --version # Try without the 3 + ``` + +2. **Install Python:** + - **macOS:** `brew install python3` + - **Linux:** `sudo apt install python3 python3-pip` + - **Windows:** Download from python.org, check "Add to PATH" + +3. **Use python instead of python3:** + ```bash + python -m skill_seekers --help + ``` + +### Module Not Found + +**Error:** +``` +ModuleNotFoundError: No module named 'requests' +ModuleNotFoundError: No module named 'bs4' +ModuleNotFoundError: No module named 'mcp' +``` + +**Solutions:** +1. **Install the package in editable mode (critical first step):** + ```bash + pip install -e . + ``` + +2. **Install MCP extras if needed:** + ```bash + pip install -e ".[mcp]" + ``` + +3. **Use --user flag if permission denied:** + ```bash + pip install --user -e . + ``` + +4. **Check pip is working:** + ```bash + pip3 --version + ``` + +### Permission Denied + +**Error:** +``` +Permission denied: '/usr/local/lib/python3.x/...' +``` + +**Solutions:** +1. **Use --user flag:** + ```bash + pip3 install --user -e . + ``` + +2. **Use sudo (not recommended):** + ```bash + sudo pip install -e . + ``` + +3. **Use virtual environment (best practice):** + ```bash + python3 -m venv venv + source venv/bin/activate + pip install -e . + ``` + +--- + +## Runtime Issues + +### File Not Found + +**Error:** +``` +FileNotFoundError: [Errno 2] No such file or directory: 'src/skill_seekers/cli/main.py' +``` + +**Solutions:** +1. **Check you're in the Skill_Seekers directory:** + ```bash + pwd + # Should show: .../Skill_Seekers + + ls + # Should show: README.md, src/, configs/, tests/ + ``` + +2. **Change to the correct directory:** + ```bash + cd ~/Projects/Skill_Seekers # Adjust path + ``` + +3. **Ensure the package is installed:** + ```bash + pip install -e . + ``` + +### Config File Not Found + +**Error:** +``` +โŒ Error: Config file not found: configs/myconfig.json +``` + +**Understanding Config Locations:** + +The tool searches for configs in this order: +1. Exact path as provided +2. `./configs/` (current directory) +3. `~/.config/skill-seekers/configs/` (user config directory) +4. SkillSeekersWeb.com API (preset configs) + +**Solutions:** + +1. **Place config in user directory (recommended for custom configs):** + ```bash + mkdir -p ~/.config/skill-seekers/configs + cp myconfig.json ~/.config/skill-seekers/configs/ + + # Now you can use it from anywhere + skill-seekers create --config myconfig.json + ``` + +2. **Place config in current directory (project-specific):** + ```bash + mkdir -p configs + cp myconfig.json configs/ + + skill-seekers create --config configs/myconfig.json + ``` + +3. **Use absolute path:** + ```bash + skill-seekers create --config /full/path/to/myconfig.json + ``` + +4. **Check if it's a preset config (auto-downloads):** + ```bash + # List all available presets + skill-seekers estimate --all + + # Use preset (auto-fetched from API) + skill-seekers create --config react.json + ``` + +5. **Create new config interactively:** + ```bash + skill-seekers create --interactive + ``` + +--- + +## MCP Setup Issues + +### MCP Server Not Loading + +**Symptoms:** +- Tools don't appear in Claude Code +- "List all available configs" doesn't work + +**Solutions:** + +1. **Check configuration file:** + ```bash + cat ~/.config/claude-code/mcp.json + ``` + +2. **Verify paths are ABSOLUTE (not placeholders):** + ```json + { + "mcpServers": { + "skill-seeker": { + "command": "python", + "args": [ + "-m", + "skill_seekers.mcp.server_fastmcp" + ] + } + } + } + ``` + โŒ **Bad:** `$REPO_PATH` or `/path/to/Skill_Seekers` + โœ… **Good:** `/Users/john/Projects/Skill_Seekers` + +3. **Test server manually:** + ```bash + cd ~/Projects/Skill_Seekers + python -m skill_seekers.mcp.server_fastmcp + # Should start without errors (Ctrl+C to stop) + ``` + +4. **Re-run setup script:** + ```bash + ./setup_mcp.sh + # Select "y" for auto-configure + ``` + +5. **RESTART Claude Code completely:** + - Quit (don't just close window) + - Reopen + +### Placeholder Paths in Config + +**Problem:** Config has `$REPO_PATH` or `/Users/username/` instead of real paths + +**Solution:** +```bash +# Get your actual path +cd ~/Projects/Skill_Seekers +pwd +# Copy this path + +# Edit config +nano ~/.config/claude-code/mcp.json + +# Replace ALL instances of placeholders with your actual path +# Save (Ctrl+O, Enter, Ctrl+X) + +# Restart Claude Code +``` + +### Tools Appear But Don't Work + +**Symptoms:** +- Tools listed but commands fail +- "Error executing tool" messages + +**Solutions:** + +1. **Check working directory:** + ```json + { + "cwd": "/FULL/PATH/TO/Skill_Seekers" + } + ``` + +2. **Verify package is installed:** + ```bash + pip list | grep skill-seekers + python -c "import skill_seekers; print(skill_seekers.__version__)" + ``` + +3. **Test CLI tools directly:** + ```bash + skill-seekers create --help + ``` + +--- + +## Scraping Issues + +### Slow or Hanging + +**Solutions:** + +1. **Check network connection:** + ```bash + ping google.com + curl -I https://docs.yoursite.com + ``` + +2. **Use smaller max_pages for testing:** + ```bash + skill-seekers create --config configs/test.json --max-pages 5 + ``` + +3. **Increase rate_limit in config:** + ```json + { + "rate_limit": 1.0 // Increase from 0.5 + } + ``` + +### No Content Extracted + +**Problem:** Pages scraped but content is empty + +**Solutions:** + +1. **Check selector in config:** + ```bash + # Test with browser dev tools + # Look for: article, main, div[role="main"], div.content + ``` + +2. **Verify website is accessible:** + ```bash + curl https://docs.example.com + ``` + +3. **Try different selectors:** + ```json + { + "selectors": { + "main_content": "article" // Try: main, div.content, etc. + } + } + ``` + +### Rate Limiting / 429 Errors + +**Error:** +``` +HTTP Error 429: Too Many Requests +``` + +**Solutions:** + +1. **Increase rate_limit:** + ```json + { + "rate_limit": 2.0 // Wait 2 seconds between requests + } + ``` + +2. **Reduce max_pages:** + ```json + { + "max_pages": 50 // Scrape fewer pages + } + ``` + +3. **Try again later:** + ```bash + # Wait an hour and retry + ``` + +--- + +## Platform-Specific Issues + +### macOS + +**Issue:** Can't run `./setup_mcp.sh` + +**Solution:** +```bash +chmod +x setup_mcp.sh +./setup_mcp.sh +``` + +**Issue:** Homebrew not installed + +**Solution:** +```bash +/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +``` + +### Linux + +**Issue:** pip3 not found + +**Solution:** +```bash +sudo apt update +sudo apt install python3-pip +``` + +**Issue:** Permission errors + +**Solution:** +```bash +# Use --user flag +pip3 install --user -e . +``` + +### Windows (WSL) + +**Issue:** Python not in PATH + +**Solution:** +1. Reinstall Python +2. Check "Add Python to PATH" +3. Or add manually to PATH + +**Issue:** Line ending errors + +**Solution:** +```bash +dos2unix setup_mcp.sh +./setup_mcp.sh +``` + +--- + +## Verification Commands + +Use these to check your setup: + +```bash +# 1. Check Python +python3 --version # Should be 3.10+ + +# 2. Check package is installed +pip list | grep skill-seekers +python -c "import skill_seekers; print(skill_seekers.__version__)" + +# 3. Check source layout +ls src/skill_seekers/cli/ +ls src/skill_seekers/mcp/ +ls configs/ + +# 4. Check MCP config +cat ~/.config/claude-code/mcp.json + +# 5. Test scraper +skill-seekers create --help + +# 6. Test MCP server +timeout 3 python -m skill_seekers.mcp.server_fastmcp || echo "Server OK" + +# 7. Check git repo +git status +git log --oneline -5 +``` + +--- + +## Getting Help + +If none of these solutions work: + +1. **Check existing issues:** + https://github.com/yusufkaraaslan/Skill_Seekers/issues + +2. **Open a new issue with:** + - Your OS (macOS 13, Ubuntu 22.04, etc.) + - Python version (`python3 --version`) + - Full error message + - What command you ran + - Output of verification commands above + +3. **Include this debug info:** + ```bash + # System info + uname -a + python3 --version + pip3 --version + + # Skill Seeker info + cd ~/Projects/Skill_Seekers # Your path + pwd + git log --oneline -1 + ls -la cli/ mcp/ configs/ + + # MCP config (if using MCP) + cat ~/.config/claude-code/mcp.json + ``` + +--- + +## Quick Fixes Checklist + +- [ ] In the Skill_Seekers directory? (`pwd`) +- [ ] Python 3.10+ installed? (`python3 --version`) +- [ ] Package installed? (`pip list | grep skill-seekers`) +- [ ] Config file exists? (`ls configs/yourconfig.json`) +- [ ] Internet connection working? (`ping google.com`) +- [ ] For MCP: Config uses absolute paths? (not `$REPO_PATH`) +- [ ] For MCP: Claude Code restarted? (quit and reopen) + +--- + +**Still stuck?** Open an issue: https://github.com/yusufkaraaslan/Skill_Seekers/issues/new diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000..2e95cc3 --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,2 @@ +# configs_repo is now a git submodule, tracked in .gitmodules +# configs_repo/ diff --git a/api/README.md b/api/README.md new file mode 100644 index 0000000..941efd7 --- /dev/null +++ b/api/README.md @@ -0,0 +1,267 @@ +# Skill Seekers Config API + +FastAPI backend for discovering and downloading Skill Seekers configuration files. + +## ๐Ÿš€ Endpoints + +### Base URL +- **Production**: `https://skillseekersweb.com` +- **Local**: `http://localhost:8000` + +### Available Endpoints + +#### 1. **GET /** - API Information +Returns API metadata and available endpoints. + +```bash +curl https://skillseekersweb.com/ +``` + +**Response:** +```json +{ + "name": "Skill Seekers Config API", + "version": "1.0.0", + "endpoints": { + "/api/configs": "List all available configs", + "/api/configs/{name}": "Get specific config details", + "/api/categories": "List all categories", + "/docs": "API documentation" + }, + "repository": "https://github.com/yusufkaraaslan/Skill_Seekers", + "website": "https://skillseekersweb.com" +} +``` + +--- + +#### 2. **GET /api/configs** - List All Configs +Returns list of all available configs with metadata. + +**Query Parameters:** +- `category` (optional) - Filter by category (e.g., `web-frameworks`) +- `tag` (optional) - Filter by tag (e.g., `javascript`) +- `type` (optional) - Filter by type (`single-source` or `unified`) + +```bash +# Get all configs +curl https://skillseekersweb.com/api/configs + +# Filter by category +curl https://skillseekersweb.com/api/configs?category=web-frameworks + +# Filter by tag +curl https://skillseekersweb.com/api/configs?tag=javascript + +# Filter by type +curl https://skillseekersweb.com/api/configs?type=unified +``` + +**Response:** +```json +{ + "version": "1.0.0", + "total": 24, + "filters": null, + "configs": [ + { + "name": "react", + "description": "React framework for building user interfaces...", + "type": "single-source", + "category": "web-frameworks", + "tags": ["javascript", "frontend", "documentation"], + "primary_source": "https://react.dev/", + "max_pages": 300, + "file_size": 1055, + "last_updated": "2025-11-30T09:26:07+00:00", + "download_url": "https://skillseekersweb.com/api/download/react.json", + "config_file": "react.json" + } + ] +} +``` + +--- + +#### 3. **GET /api/configs/{name}** - Get Specific Config +Returns detailed information about a specific config. + +```bash +curl https://skillseekersweb.com/api/configs/react +``` + +**Response:** +```json +{ + "name": "react", + "description": "React framework for building user interfaces...", + "type": "single-source", + "category": "web-frameworks", + "tags": ["javascript", "frontend", "documentation"], + "primary_source": "https://react.dev/", + "max_pages": 300, + "file_size": 1055, + "last_updated": "2025-11-30T09:26:07+00:00", + "download_url": "https://skillseekersweb.com/api/download/react.json", + "config_file": "react.json" +} +``` + +--- + +#### 4. **GET /api/categories** - List Categories +Returns all available categories with config counts. + +```bash +curl https://skillseekersweb.com/api/categories +``` + +**Response:** +```json +{ + "total_categories": 5, + "categories": { + "web-frameworks": 7, + "game-engines": 2, + "devops": 2, + "css-frameworks": 1, + "uncategorized": 12 + } +} +``` + +--- + +#### 5. **GET /api/download/{config_name}** - Download Config File +Downloads the actual config JSON file. + +```bash +# Download react config +curl -O https://skillseekersweb.com/api/download/react.json + +# Download with just name (auto-adds .json) +curl -O https://skillseekersweb.com/api/download/react +``` + +--- + +#### 6. **GET /health** - Health Check +Health check endpoint for monitoring. + +```bash +curl https://skillseekersweb.com/health +``` + +**Response:** +```json +{ + "status": "healthy", + "service": "skill-seekers-api" +} +``` + +--- + +#### 7. **GET /docs** - API Documentation +Interactive OpenAPI documentation (Swagger UI). + +Visit: `https://skillseekersweb.com/docs` + +--- + +## ๐Ÿ“ฆ Metadata Fields + +Each config includes the following metadata: + +| Field | Type | Description | +|-------|------|-------------| +| `name` | string | Config identifier (e.g., "react") | +| `description` | string | What the config is used for | +| `type` | string | "single-source" or "unified" | +| `category` | string | Auto-categorized (e.g., "web-frameworks") | +| `tags` | array | Relevant tags (e.g., ["javascript", "frontend"]) | +| `primary_source` | string | Main documentation URL or repo | +| `max_pages` | int | Estimated page count for scraping | +| `file_size` | int | Config file size in bytes | +| `last_updated` | string | ISO 8601 date of last update | +| `download_url` | string | Direct download link | +| `config_file` | string | Filename (e.g., "react.json") | + +--- + +## ๐Ÿ—๏ธ Categories + +Configs are auto-categorized into: + +- **web-frameworks** - Web development frameworks (React, Django, FastAPI, etc.) +- **game-engines** - Game development engines (Godot, Unity, etc.) +- **devops** - DevOps tools (Kubernetes, Ansible, etc.) +- **css-frameworks** - CSS frameworks (Tailwind, etc.) +- **development-tools** - Dev tools (Claude Code, etc.) +- **gaming** - Gaming platforms (Steam, etc.) +- **uncategorized** - Other configs + +--- + +## ๐Ÿท๏ธ Tags + +Common tags include: + +- **Language**: `javascript`, `python`, `php` +- **Domain**: `frontend`, `backend`, `devops`, `game-development` +- **Type**: `documentation`, `github`, `pdf`, `multi-source` +- **Tech**: `css`, `testing`, `api` + +--- + +## ๐Ÿš€ Local Development + +### Setup + +```bash +# Install dependencies +cd api +pip install -r requirements.txt + +# Run server +python main.py +``` + +API will be available at `http://localhost:8000` + +### Testing + +```bash +# Test health check +curl http://localhost:8000/health + +# List all configs +curl http://localhost:8000/api/configs + +# Get specific config +curl http://localhost:8000/api/configs/react + +# Download config +curl -O http://localhost:8000/api/download/react.json +``` + +--- + +## ๐Ÿ“ Deployment + +### Render + +This API is configured for Render deployment via `render.yaml`. + +1. Push to GitHub +2. Connect repository to Render +3. Render auto-deploys from `render.yaml` +4. Configure custom domain: `skillseekersweb.com` + +--- + +## ๐Ÿ”— Links + +- **API Documentation**: https://skillseekersweb.com/docs +- **GitHub Repository**: https://github.com/yusufkaraaslan/Skill_Seekers +- **Main Project**: https://github.com/yusufkaraaslan/Skill_Seekers#readme diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..77136ba --- /dev/null +++ b/api/__init__.py @@ -0,0 +1,6 @@ +""" +Skill Seekers Config API +FastAPI backend for discovering and downloading config files +""" + +__version__ = "1.0.0" diff --git a/api/config_analyzer.py b/api/config_analyzer.py new file mode 100644 index 0000000..20c9eb9 --- /dev/null +++ b/api/config_analyzer.py @@ -0,0 +1,366 @@ +#!/usr/bin/env python3 +""" +Config Analyzer - Extract metadata from Skill Seekers config files +""" + +import json +import subprocess +from datetime import datetime +from pathlib import Path +from typing import Any + + +class ConfigAnalyzer: + """Analyzes Skill Seekers config files and extracts metadata""" + + # Category mapping based on config content + CATEGORY_MAPPING = { + "web-frameworks": ["react", "vue", "django", "fastapi", "laravel", "astro", "hono"], + "game-engines": ["godot", "unity", "unreal"], + "devops": ["kubernetes", "ansible", "docker", "terraform"], + "css-frameworks": ["tailwind", "bootstrap", "bulma"], + "development-tools": ["claude-code", "vscode", "git"], + "gaming": ["steam"], + "testing": ["pytest", "jest", "test"], + } + + # Tag extraction keywords + TAG_KEYWORDS = { + "javascript": ["react", "vue", "astro", "hono", "javascript", "js", "node"], + "python": ["django", "fastapi", "ansible", "python", "flask"], + "php": ["laravel", "php"], + "frontend": ["react", "vue", "astro", "tailwind", "frontend", "ui"], + "backend": ["django", "fastapi", "laravel", "backend", "server", "api"], + "css": ["tailwind", "css", "styling"], + "game-development": ["godot", "unity", "unreal", "game"], + "devops": ["kubernetes", "ansible", "docker", "k8s", "devops"], + "documentation": ["docs", "documentation"], + "testing": ["test", "testing", "pytest", "jest"], + } + + def __init__(self, config_dir: Path, base_url: str = "https://api.skillseekersweb.com"): + """ + Initialize config analyzer + + Args: + config_dir: Path to configs directory + base_url: Base URL for download links + """ + self.config_dir = Path(config_dir) + self.base_url = base_url + + if not self.config_dir.exists(): + raise ValueError(f"Config directory not found: {self.config_dir}") + + def analyze_all_configs(self) -> list[dict[str, Any]]: + """ + Analyze all config files and extract metadata + + Returns: + List of config metadata dicts + """ + configs = [] + + # Find all JSON files recursively in configs directory and subdirectories + for config_file in sorted(self.config_dir.rglob("*.json")): + # Skip test/example configs in test-examples directory + if "test-examples" in config_file.parts: + continue + + try: + metadata = self.analyze_config(config_file) + if metadata: # Skip invalid configs + configs.append(metadata) + except Exception as e: + print(f"Warning: Failed to analyze {config_file.name}: {e}") + continue + + return configs + + def analyze_config(self, config_path: Path) -> dict[str, Any] | None: + """ + Analyze a single config file and extract metadata + + Args: + config_path: Path to config JSON file + + Returns: + Config metadata dict or None if invalid + """ + try: + # Read config file + with open(config_path) as f: + config_data = json.load(f) + + # Skip if no name field + if "name" not in config_data: + return None + + name = config_data["name"] + description = config_data.get("description", "") + + # Determine config type + config_type = self._determine_type(config_data) + + # Get primary source (base_url or repo) + primary_source = self._get_primary_source(config_data, config_type) + + # Use directory name as category (official/{category}/{name}.json) + # Fall back to keyword-based categorization if not in a named subdirectory + category = self._categorize_config(name, description, config_data, config_path) + + # Extract tags + tags = self._extract_tags(name, description, config_data) + + # Get file metadata + file_size = config_path.stat().st_size + last_updated = self._get_last_updated(config_path) + + # Generate download URL + download_url = f"{self.base_url}/api/download/{config_path.name}" + + # Get max_pages (for estimation) + max_pages = self._get_max_pages(config_data) + + return { + "name": name, + "description": description, + "type": config_type, + "category": category, + "tags": tags, + "primary_source": primary_source, + "max_pages": max_pages, + "file_size": file_size, + "last_updated": last_updated, + "download_url": download_url, + "config_file": config_path.name, + } + + except json.JSONDecodeError as e: + print(f"Invalid JSON in {config_path.name}: {e}") + return None + except Exception as e: + print(f"Error analyzing {config_path.name}: {e}") + return None + + def get_config_by_name(self, name: str) -> dict[str, Any] | None: + """ + Get config metadata by name + + Args: + name: Config name (e.g., "react", "django") + + Returns: + Config metadata or None if not found + """ + configs = self.analyze_all_configs() + for config in configs: + if config["name"] == name: + return config + return None + + def _determine_type(self, config_data: dict[str, Any]) -> str: + """ + Determine if config is single-source or unified + + Args: + config_data: Config JSON data + + Returns: + "single-source" or "unified" + """ + # Unified configs have "sources" array + if "sources" in config_data: + return "unified" + + # Check for merge_mode (another indicator of unified configs) + if "merge_mode" in config_data: + return "unified" + + return "single-source" + + def _get_primary_source(self, config_data: dict[str, Any], config_type: str) -> str: + """ + Get primary source URL/repo + + Args: + config_data: Config JSON data + config_type: "single-source" or "unified" + + Returns: + Primary source URL or repo name + """ + if config_type == "unified": + # Get first source + sources = config_data.get("sources", []) + if sources: + first_source = sources[0] + if first_source.get("type") == "documentation": + return first_source.get("base_url", "") + elif first_source.get("type") == "github": + return f"github.com/{first_source.get('repo', '')}" + elif first_source.get("type") == "pdf": + return first_source.get("pdf_url", "PDF file") + return "Multiple sources" + + # Single-source configs + if "base_url" in config_data: + return config_data["base_url"] + elif "repo" in config_data: + return f"github.com/{config_data['repo']}" + elif "pdf_url" in config_data or "pdf" in config_data: + return "PDF file" + + return "Unknown" + + def _categorize_config( + self, + name: str, + description: str, + config_data: dict[str, Any], + config_path: Path | None = None, + ) -> str: + """ + Categorize config using directory structure first, then keyword fallback. + + The configs_repo organizes files as official/{category}/{name}.json so the + parent directory name is the authoritative category. + + Args: + name: Config name + description: Config description + config_data: Full config data + config_path: Path to config file (used to read directory-based category) + + Returns: + Category name + """ + # Primary: use directory structure (official/{category}/{name}.json) + if config_path is not None: + parent = config_path.parent.name + # Exclude generic/root directories from being used as categories + if parent not in ("official", "community", "configs", "configs_repo", "."): + return parent + + # Fallback: keyword matching against config name + name_lower = name.lower() + for category, keywords in self.CATEGORY_MAPPING.items(): + if any(keyword in name_lower for keyword in keywords): + return category + + # Fallback: description hints + desc_lower = description.lower() + if "framework" in desc_lower or "library" in desc_lower: + if any(word in desc_lower for word in ["web", "frontend", "backend", "api"]): + return "web-frameworks" + + if "game" in desc_lower or "engine" in desc_lower: + return "game-engines" + + if "devops" in desc_lower or "deployment" in desc_lower or "infrastructure" in desc_lower: + return "devops" + + return "uncategorized" + + def _extract_tags(self, name: str, description: str, config_data: dict[str, Any]) -> list[str]: + """ + Extract relevant tags from config + + Args: + name: Config name + description: Config description + config_data: Full config data + + Returns: + List of tags + """ + tags = set() + name_lower = name.lower() + desc_lower = description.lower() + + # Check against tag keywords + for tag, keywords in self.TAG_KEYWORDS.items(): + if any(keyword in name_lower or keyword in desc_lower for keyword in keywords): + tags.add(tag) + + # Add config type as tag + config_type = self._determine_type(config_data) + if config_type == "unified": + tags.add("multi-source") + + # Add source type tags + if "base_url" in config_data or ( + config_type == "unified" + and any(s.get("type") == "documentation" for s in config_data.get("sources", [])) + ): + tags.add("documentation") + + if "repo" in config_data or ( + config_type == "unified" + and any(s.get("type") == "github" for s in config_data.get("sources", [])) + ): + tags.add("github") + + if ( + "pdf" in config_data + or "pdf_url" in config_data + or ( + config_type == "unified" + and any(s.get("type") == "pdf" for s in config_data.get("sources", [])) + ) + ): + tags.add("pdf") + + return sorted(list(tags)) + + def _get_max_pages(self, config_data: dict[str, Any]) -> int | None: + """ + Get max_pages value from config + + Args: + config_data: Config JSON data + + Returns: + max_pages value or None + """ + # Single-source configs + if "max_pages" in config_data: + return config_data["max_pages"] + + # Unified configs - get from first documentation source + if "sources" in config_data: + for source in config_data["sources"]: + if source.get("type") == "documentation" and "max_pages" in source: + return source["max_pages"] + + return None + + def _get_last_updated(self, config_path: Path) -> str: + """ + Get last updated date from git history + + Args: + config_path: Path to config file + + Returns: + ISO format date string + """ + try: + # Try to get last commit date for this file + result = subprocess.run( + ["git", "log", "-1", "--format=%cI", str(config_path)], + cwd=config_path.parent.parent, + capture_output=True, + text=True, + timeout=5, + ) + + if result.returncode == 0 and result.stdout.strip(): + return result.stdout.strip() + + except Exception: + pass + + # Fallback to file modification time + mtime = config_path.stat().st_mtime + return datetime.fromtimestamp(mtime).isoformat() diff --git a/api/main.py b/api/main.py new file mode 100644 index 0000000..433ef8a --- /dev/null +++ b/api/main.py @@ -0,0 +1,204 @@ +#!/usr/bin/env python3 +""" +Skill Seekers Config API +FastAPI backend for listing available skill configs +""" + +from pathlib import Path +from typing import Any + +from config_analyzer import ConfigAnalyzer +from fastapi import FastAPI, HTTPException +from fastapi.middleware.cors import CORSMiddleware +from fastapi.responses import FileResponse + +app = FastAPI( + title="Skill Seekers Config API", + description="API for discovering and downloading Skill Seekers configuration files", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", +) + +# CORS middleware - allow all origins for public API +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Initialize config analyzer +# Try configs_repo first (production), fallback to configs (local development) +CONFIG_DIR = Path(__file__).parent / "configs_repo" / "official" +if not CONFIG_DIR.exists(): + CONFIG_DIR = Path(__file__).parent.parent / "configs" + +analyzer = ConfigAnalyzer(CONFIG_DIR) + + +@app.get("/") +async def root(): + """Root endpoint - API information""" + return { + "name": "Skill Seekers Config API", + "version": "1.0.0", + "endpoints": { + "/api/configs": "List all available configs", + "/api/configs/{name}": "Get specific config details", + "/api/categories": "List all categories", + "/api/download/{name}": "Download config file", + "/docs": "API documentation", + }, + "repository": "https://github.com/yusufkaraaslan/Skill_Seekers", + "configs_repository": "https://github.com/yusufkaraaslan/skill-seekers-configs", + "website": "https://api.skillseekersweb.com", + } + + +@app.get("/api/configs") +async def list_configs( + category: str | None = None, tag: str | None = None, type: str | None = None +) -> dict[str, Any]: + """ + List all available configs with metadata + + Query Parameters: + - category: Filter by category (e.g., "web-frameworks") + - tag: Filter by tag (e.g., "javascript") + - type: Filter by type ("single-source" or "unified") + + Returns: + - version: API version + - total: Total number of configs + - filters: Applied filters + - configs: List of config metadata + """ + try: + # Get all configs + all_configs = analyzer.analyze_all_configs() + + # Apply filters + configs = all_configs + filters_applied = {} + + if category: + configs = [c for c in configs if c.get("category") == category] + filters_applied["category"] = category + + if tag: + configs = [c for c in configs if tag in c.get("tags", [])] + filters_applied["tag"] = tag + + if type: + configs = [c for c in configs if c.get("type") == type] + filters_applied["type"] = type + + return { + "version": "1.0.0", + "total": len(configs), + "filters": filters_applied if filters_applied else None, + "configs": configs, + } + + except Exception as e: + raise HTTPException(status_code=500, detail=f"Error analyzing configs: {str(e)}") + + +@app.get("/api/configs/{name}") +async def get_config(name: str) -> dict[str, Any]: + """ + Get detailed information about a specific config + + Path Parameters: + - name: Config name (e.g., "react", "django") + + Returns: + - Full config metadata including all fields + """ + try: + config = analyzer.get_config_by_name(name) + + if not config: + raise HTTPException(status_code=404, detail=f"Config '{name}' not found") + + return config + + except HTTPException: + raise + except Exception as e: + raise HTTPException(status_code=500, detail=f"Error loading config: {str(e)}") + + +@app.get("/api/categories") +async def list_categories() -> dict[str, Any]: + """ + List all available categories with config counts + + Returns: + - categories: Dict of category names to config counts + - total_categories: Total number of categories + """ + try: + configs = analyzer.analyze_all_configs() + + # Count configs per category + category_counts = {} + for config in configs: + cat = config.get("category", "uncategorized") + category_counts[cat] = category_counts.get(cat, 0) + 1 + + return {"total_categories": len(category_counts), "categories": category_counts} + + except Exception as e: + raise HTTPException(status_code=500, detail=f"Error analyzing categories: {str(e)}") + + +@app.get("/api/download/{config_name}") +async def download_config(config_name: str): + """ + Download a specific config file + + Path Parameters: + - config_name: Config filename (e.g., "react.json", "django.json") + + Returns: + - JSON file for download + """ + try: + # Validate filename (prevent directory traversal) + if ".." in config_name or "/" in config_name or "\\" in config_name: + raise HTTPException(status_code=400, detail="Invalid config name") + + # Ensure .json extension + if not config_name.endswith(".json"): + config_name = f"{config_name}.json" + + # Search recursively in all subdirectories + config_path = None + for found_path in CONFIG_DIR.rglob(config_name): + config_path = found_path + break + + if not config_path or not config_path.exists(): + raise HTTPException(status_code=404, detail=f"Config file '{config_name}' not found") + + return FileResponse(path=config_path, media_type="application/json", filename=config_name) + + except HTTPException: + raise + except Exception as e: + raise HTTPException(status_code=500, detail=f"Error downloading config: {str(e)}") + + +@app.get("/health") +async def health_check(): + """Health check endpoint for monitoring""" + return {"status": "healthy", "service": "skill-seekers-api"} + + +if __name__ == "__main__": + import uvicorn + + uvicorn.run(app, host="0.0.0.0", port=8000) diff --git a/api/requirements.txt b/api/requirements.txt new file mode 100644 index 0000000..9cdcfa4 --- /dev/null +++ b/api/requirements.txt @@ -0,0 +1,3 @@ +fastapi==0.115.0 +uvicorn[standard]==0.32.0 +python-multipart==0.0.12 diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..80fd778 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,25 @@ +coverage: + status: + project: + default: + target: auto + threshold: 1% + informational: false + patch: + default: + # Patch coverage is informational only โ€” doesn't fail CI. + # Rationale: version bumps, docs, config, and test-only commits have + # naturally low or zero patch coverage and shouldn't block releases. + informational: true + +comment: + layout: "reach, diff, flags, files" + behavior: default + require_changes: false + +# Ignore files that don't need coverage +ignore: + - "tests/**/*" + - "docs/**/*" + - "**/__init__.py" + - "src/skill_seekers/_version.py" diff --git a/configs/astrovalley_unified.json b/configs/astrovalley_unified.json new file mode 100644 index 0000000..c91824f --- /dev/null +++ b/configs/astrovalley_unified.json @@ -0,0 +1,32 @@ +{ + "name": "astrovalley", + "description": "Space farming/automation game with combat and exploration - GitHub repo with deep codebase analysis", + "version": "1.0.0", + "target": "claude", + "sources": [ + { + "type": "github", + "repo": "yusufkaraaslan/AstroValley", + "clone_path": "/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/AstroValley", + "enable_codebase_analysis": true, + "analysis_depth": "deep", + "include_issues": true, + "include_pull_requests": true, + "include_discussions": false, + "max_issues": 100, + "codebase_options": { + "build_api_reference": true, + "build_dependency_graph": true, + "detect_patterns": true, + "extract_test_examples": true, + "extract_config_patterns": true, + "detect_architecture": true + } + } + ], + "synthesis_strategy": "comprehensive", + "ai_enhancement": { + "mode": "auto", + "enable": true + } +} diff --git a/configs/blender-unified.json b/configs/blender-unified.json new file mode 100644 index 0000000..3fd86c3 --- /dev/null +++ b/configs/blender-unified.json @@ -0,0 +1,276 @@ +{ + "name": "blender", + "description": "Complete Blender 3D creation suite knowledge base combining official documentation and source code analysis. Use for comprehensive understanding of 3D modeling, animation, rendering, compositing, video editing, game development, Python scripting, and Blender's internal architecture.", + "merge_mode": "claude-enhanced", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.blender.org/manual/en/latest/", + "extract_api": true, + "selectors": { + "main_content": "article[role='main']", + "title": "h1", + "code_blocks": "pre code, div.highlight pre" + }, + "url_patterns": { + "include": [ + "/getting_started/", + "/interface/", + "/editors/", + "/modeling/", + "/sculpt_paint/", + "/grease_pencil/", + "/animation/", + "/physics/", + "/render/", + "/scene_layout/", + "/compositing/", + "/video_editing/", + "/files/", + "/addons/", + "/advanced/", + "/troubleshooting/" + ], + "exclude": [ + "/_static/", + "/_images/", + "/search.html", + "/genindex.html", + "/glossary.html", + "/index.html$" + ] + }, + "categories": { + "getting_started": [ + "getting_started", + "installing", + "configuration", + "introduction", + "quickstart", + "about" + ], + "interface": [ + "interface", + "window_system", + "keymap", + "controls", + "operators", + "tools", + "ui", + "navigation" + ], + "modeling": [ + "modeling", + "mesh", + "curve", + "surface", + "metaball", + "text", + "volume", + "geometry_nodes", + "modifiers", + "mesh_tools", + "edit_mode" + ], + "sculpting": [ + "sculpt", + "sculpting", + "brush", + "texture_paint", + "vertex_paint", + "weight_paint", + "dynamic_paint" + ], + "grease_pencil": [ + "grease_pencil", + "2d_animation", + "drawing", + "stroke" + ], + "animation": [ + "animation", + "keyframe", + "rigging", + "armature", + "constraints", + "drivers", + "shape_keys", + "motion_paths", + "timeline", + "dope_sheet", + "graph_editor", + "nla" + ], + "physics": [ + "physics", + "simulation", + "particles", + "hair", + "fluid", + "cloth", + "soft_body", + "rigid_body", + "dynamic_paint", + "force_fields" + ], + "shading": [ + "shading", + "shader", + "material", + "texture", + "nodes", + "shader_nodes", + "lighting", + "world" + ], + "rendering": [ + "render", + "eevee", + "cycles", + "workbench", + "freestyle", + "camera", + "output", + "color_management", + "optimization" + ], + "compositing": [ + "compositing", + "compositor", + "nodes", + "color_correction", + "filters", + "matte" + ], + "video_editing": [ + "video_editing", + "vse", + "sequencer", + "strips", + "effects", + "preview" + ], + "scene_layout": [ + "scene", + "object", + "collection", + "properties", + "outliner", + "view_layers" + ], + "files_assets": [ + "files", + "import", + "export", + "asset", + "library", + "data_blocks", + "linking", + "append" + ], + "addons": [ + "addon", + "plugin", + "extension", + "import_export" + ], + "scripting": [ + "scripting", + "python", + "api", + "bpy", + "operator", + "custom", + "automation" + ], + "advanced": [ + "advanced", + "command_line", + "app_templates", + "extensions", + "limits" + ], + "troubleshooting": [ + "troubleshooting", + "crash", + "recover", + "gpu", + "graphics" + ] + }, + "rate_limit": 0.5, + "max_pages": 1500 + }, + { + "type": "github", + "repo": "blender/blender", + "github_token": null, + "code_analysis_depth": "deep", + "include_code": true, + "include_issues": true, + "max_issues": 200, + "include_changelog": true, + "include_releases": true, + "include_wiki": true, + "file_patterns": [ + "source/blender/blenkernel/**/*.h", + "source/blender/blenkernel/**/*.c", + "source/blender/blenkernel/**/*.cc", + "source/blender/blenlib/**/*.h", + "source/blender/blenlib/**/*.c", + "source/blender/blenlib/**/*.cc", + "source/blender/editors/**/*.h", + "source/blender/editors/**/*.c", + "source/blender/editors/**/*.cc", + "source/blender/makesdna/**/*.h", + "source/blender/makesrna/**/*.c", + "source/blender/makesrna/**/*.cc", + "source/blender/render/**/*.h", + "source/blender/render/**/*.c", + "source/blender/render/**/*.cc", + "source/blender/python/**/*.h", + "source/blender/python/**/*.c", + "source/blender/python/**/*.cc", + "source/blender/python/**/*.py", + "source/blender/depsgraph/**/*.h", + "source/blender/depsgraph/**/*.cc", + "source/blender/draw/**/*.h", + "source/blender/draw/**/*.c", + "source/blender/draw/**/*.cc", + "source/blender/gpu/**/*.h", + "source/blender/gpu/**/*.c", + "source/blender/gpu/**/*.cc", + "source/blender/nodes/**/*.h", + "source/blender/nodes/**/*.c", + "source/blender/nodes/**/*.cc", + "source/blender/windowmanager/**/*.h", + "source/blender/windowmanager/**/*.c", + "source/blender/windowmanager/**/*.cc", + "intern/cycles/**/*.h", + "intern/cycles/**/*.cpp", + "scripts/startup/bl_ui/**/*.py", + "scripts/modules/**/*.py", + "release/scripts/startup/**/*.py", + "README.md", + "CONTRIBUTING.md", + "BUILD.md", + "CODE_OF_CONDUCT.md" + ], + "exclude_patterns": [ + "**/tests/**", + "**/__pycache__/**", + "build_files/**", + "doc/**" + ], + "analysis_features": { + "detect_patterns": true, + "extract_tests": true, + "build_guides": true, + "extract_config": true, + "build_api_reference": true, + "analyze_dependencies": true, + "detect_architecture": true + } + } + ] +} diff --git a/configs/claude-code-unified.json b/configs/claude-code-unified.json new file mode 100644 index 0000000..c792b1b --- /dev/null +++ b/configs/claude-code-unified.json @@ -0,0 +1,261 @@ +{ + "name": "claude-code-unified", + "description": "Claude Code CLI - unified knowledge base combining official documentation and leaked source code analysis. Use for understanding Claude Code internals, architecture, tools, commands, IDE integrations, MCP, plugins, skills, and development workflows.", + "merge_mode": "claude-enhanced", + "workflows": [ + "complex-merge", + "cli-tooling", + "architecture-comprehensive", + "api-documentation", + "security-focus", + "ai-assistant-internals" + ], + "workflow_vars": { + "depth": "comprehensive", + "merge_strategy": "priority", + "source_priority_order": "official_docs,code,community" + }, + "sources": [ + { + "type": "documentation", + "base_url": "https://code.claude.com/docs/en/", + "start_urls": [ + "https://code.claude.com/docs/en/overview", + "https://code.claude.com/docs/en/quickstart", + "https://code.claude.com/docs/en/common-workflows", + "https://code.claude.com/docs/en/claude-code-on-the-web", + "https://code.claude.com/docs/en/desktop", + "https://code.claude.com/docs/en/chrome", + "https://code.claude.com/docs/en/vs-code", + "https://code.claude.com/docs/en/jetbrains", + "https://code.claude.com/docs/en/github-actions", + "https://code.claude.com/docs/en/gitlab-ci-cd", + "https://code.claude.com/docs/en/slack", + "https://code.claude.com/docs/en/sub-agents", + "https://code.claude.com/docs/en/plugins", + "https://code.claude.com/docs/en/discover-plugins", + "https://code.claude.com/docs/en/skills", + "https://code.claude.com/docs/en/output-styles", + "https://code.claude.com/docs/en/hooks-guide", + "https://code.claude.com/docs/en/headless", + "https://code.claude.com/docs/en/mcp", + "https://code.claude.com/docs/en/third-party-integrations", + "https://code.claude.com/docs/en/amazon-bedrock", + "https://code.claude.com/docs/en/google-vertex-ai", + "https://code.claude.com/docs/en/microsoft-foundry", + "https://code.claude.com/docs/en/network-config", + "https://code.claude.com/docs/en/llm-gateway", + "https://code.claude.com/docs/en/devcontainer", + "https://code.claude.com/docs/en/sandboxing", + "https://code.claude.com/docs/en/setup", + "https://code.claude.com/docs/en/iam", + "https://code.claude.com/docs/en/security", + "https://code.claude.com/docs/en/data-usage", + "https://code.claude.com/docs/en/monitoring-usage", + "https://code.claude.com/docs/en/costs", + "https://code.claude.com/docs/en/analytics", + "https://code.claude.com/docs/en/plugin-marketplaces", + "https://code.claude.com/docs/en/settings", + "https://code.claude.com/docs/en/terminal-config", + "https://code.claude.com/docs/en/model-config", + "https://code.claude.com/docs/en/memory", + "https://code.claude.com/docs/en/statusline", + "https://code.claude.com/docs/en/cli-reference", + "https://code.claude.com/docs/en/interactive-mode", + "https://code.claude.com/docs/en/slash-commands", + "https://code.claude.com/docs/en/checkpointing", + "https://code.claude.com/docs/en/hooks", + "https://code.claude.com/docs/en/plugins-reference", + "https://code.claude.com/docs/en/troubleshooting", + "https://code.claude.com/docs/en/legal-and-compliance" + ], + "selectors": { + "main_content": "#content-area, #content-container, article, main", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": [ + "/docs/en/" + ], + "exclude": [ + "/docs/fr/", + "/docs/de/", + "/docs/it/", + "/docs/ja/", + "/docs/es/", + "/docs/ko/", + "/docs/zh-CN/", + "/docs/zh-TW/", + "/docs/ru/", + "/docs/id/", + "/docs/pt/", + "/changelog", + "github.com" + ] + }, + "categories": { + "getting_started": [ + "overview", + "quickstart", + "common-workflows" + ], + "ide_integrations": [ + "vs-code", + "jetbrains", + "desktop", + "chrome", + "claude-code-on-the-web", + "slack" + ], + "ci_cd": [ + "github-actions", + "gitlab-ci-cd" + ], + "building": [ + "sub-agents", + "subagent", + "plugins", + "discover-plugins", + "skills", + "output-styles", + "hooks-guide", + "headless", + "programmatic" + ], + "mcp": [ + "mcp", + "model-context-protocol" + ], + "deployment": [ + "third-party-integrations", + "amazon-bedrock", + "google-vertex-ai", + "microsoft-foundry", + "network-config", + "llm-gateway", + "devcontainer", + "sandboxing" + ], + "administration": [ + "setup", + "iam", + "security", + "data-usage", + "monitoring-usage", + "costs", + "analytics", + "plugin-marketplaces" + ], + "configuration": [ + "settings", + "terminal-config", + "model-config", + "memory", + "statusline" + ], + "reference": [ + "cli-reference", + "interactive-mode", + "slash-commands", + "checkpointing", + "hooks", + "plugins-reference" + ], + "troubleshooting": [ + "troubleshooting" + ], + "legal": [ + "legal-and-compliance" + ] + }, + "rate_limit": 0.5, + "max_pages": 250 + }, + { + "type": "local", + "path": "/Users/yusufkaraaslan/Github/cli-template", + "name": "claude-code-source", + "description": "Leaked Claude Code CLI TypeScript source code (main.tsx, tools, commands, components, Ink renderer, bridge, coordinator, plugins, skills, MCP, vim, voice, remote, server, memdir, tasks, state, schemas, entrypoints)", + "weight": 0.6, + "enhance_level": 3, + "include_code": true, + "file_patterns": [ + "*.ts", + "*.tsx", + "*.md", + "*.json" + ], + "skip_patterns": [ + ".git/", + "node_modules/", + "__pycache__/", + "*.map", + "*.js", + "dist/", + "build/" + ], + "categories": { + "core": [ + "main.tsx", + "commands.ts", + "tools.ts", + "Tool.ts", + "QueryEngine.ts", + "context.ts", + "cost-tracker.ts" + ], + "commands": [ + "commands/" + ], + "tools": [ + "tools/" + ], + "ui": [ + "components/", + "hooks/", + "screens/", + "ink/" + ], + "integrations": [ + "bridge/", + "coordinator/", + "remote/", + "server/", + "services/" + ], + "features": [ + "plugins/", + "skills/", + "vim/", + "voice/", + "tasks/", + "memdir/", + "state/", + "buddy/" + ], + "infrastructure": [ + "entrypoints/", + "migrations/", + "schemas/", + "query/", + "upstreamproxy/", + "native-ts/", + "outputStyles/", + "utils/", + "types/", + "constants/" + ] + }, + "analysis_features": { + "detect_patterns": true, + "extract_tests": true, + "build_guides": true, + "extract_config": true, + "build_api_reference": true, + "analyze_dependencies": true, + "detect_architecture": true + } + } + ] +} diff --git a/configs/claude-code.json b/configs/claude-code.json new file mode 100644 index 0000000..e042aa3 --- /dev/null +++ b/configs/claude-code.json @@ -0,0 +1,164 @@ +{ + "name": "claude-code", + "description": "Claude Code CLI and development environment. Use for Claude Code features, tools, workflows, MCP integration, plugins, hooks, configuration, deployment, and AI-assisted development.", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "_migration_note": "TODO: Migrate to external skill-seekers-configs repo. Kept temporarily to preserve PR #244 work.", + "base_url": "https://code.claude.com/docs/en/", + "start_urls": [ + "https://code.claude.com/docs/en/overview", + "https://code.claude.com/docs/en/quickstart", + "https://code.claude.com/docs/en/common-workflows", + "https://code.claude.com/docs/en/claude-code-on-the-web", + "https://code.claude.com/docs/en/desktop", + "https://code.claude.com/docs/en/chrome", + "https://code.claude.com/docs/en/vs-code", + "https://code.claude.com/docs/en/jetbrains", + "https://code.claude.com/docs/en/github-actions", + "https://code.claude.com/docs/en/gitlab-ci-cd", + "https://code.claude.com/docs/en/slack", + "https://code.claude.com/docs/en/sub-agents", + "https://code.claude.com/docs/en/plugins", + "https://code.claude.com/docs/en/discover-plugins", + "https://code.claude.com/docs/en/skills", + "https://code.claude.com/docs/en/output-styles", + "https://code.claude.com/docs/en/hooks-guide", + "https://code.claude.com/docs/en/headless", + "https://code.claude.com/docs/en/mcp", + "https://code.claude.com/docs/en/third-party-integrations", + "https://code.claude.com/docs/en/amazon-bedrock", + "https://code.claude.com/docs/en/google-vertex-ai", + "https://code.claude.com/docs/en/microsoft-foundry", + "https://code.claude.com/docs/en/network-config", + "https://code.claude.com/docs/en/llm-gateway", + "https://code.claude.com/docs/en/devcontainer", + "https://code.claude.com/docs/en/sandboxing", + "https://code.claude.com/docs/en/setup", + "https://code.claude.com/docs/en/iam", + "https://code.claude.com/docs/en/security", + "https://code.claude.com/docs/en/data-usage", + "https://code.claude.com/docs/en/monitoring-usage", + "https://code.claude.com/docs/en/costs", + "https://code.claude.com/docs/en/analytics", + "https://code.claude.com/docs/en/plugin-marketplaces", + "https://code.claude.com/docs/en/settings", + "https://code.claude.com/docs/en/terminal-config", + "https://code.claude.com/docs/en/model-config", + "https://code.claude.com/docs/en/memory", + "https://code.claude.com/docs/en/statusline", + "https://code.claude.com/docs/en/cli-reference", + "https://code.claude.com/docs/en/interactive-mode", + "https://code.claude.com/docs/en/slash-commands", + "https://code.claude.com/docs/en/checkpointing", + "https://code.claude.com/docs/en/hooks", + "https://code.claude.com/docs/en/plugins-reference", + "https://code.claude.com/docs/en/troubleshooting", + "https://code.claude.com/docs/en/legal-and-compliance" + ], + "selectors": { + "main_content": "#content-area, #content-container, article, main", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": [ + "/docs/en/" + ], + "exclude": [ + "/docs/fr/", + "/docs/de/", + "/docs/it/", + "/docs/ja/", + "/docs/es/", + "/docs/ko/", + "/docs/zh-CN/", + "/docs/zh-TW/", + "/docs/ru/", + "/docs/id/", + "/docs/pt/", + "/changelog", + "github.com" + ] + }, + "categories": { + "getting_started": [ + "overview", + "quickstart", + "common-workflows" + ], + "ide_integrations": [ + "vs-code", + "jetbrains", + "desktop", + "chrome", + "claude-code-on-the-web", + "slack" + ], + "ci_cd": [ + "github-actions", + "gitlab-ci-cd" + ], + "building": [ + "sub-agents", + "subagent", + "plugins", + "discover-plugins", + "skills", + "output-styles", + "hooks-guide", + "headless", + "programmatic" + ], + "mcp": [ + "mcp", + "model-context-protocol" + ], + "deployment": [ + "third-party-integrations", + "amazon-bedrock", + "google-vertex-ai", + "microsoft-foundry", + "network-config", + "llm-gateway", + "devcontainer", + "sandboxing" + ], + "administration": [ + "setup", + "iam", + "security", + "data-usage", + "monitoring-usage", + "costs", + "analytics", + "plugin-marketplaces" + ], + "configuration": [ + "settings", + "terminal-config", + "model-config", + "memory", + "statusline" + ], + "reference": [ + "cli-reference", + "interactive-mode", + "slash-commands", + "checkpointing", + "hooks", + "plugins-reference" + ], + "troubleshooting": [ + "troubleshooting" + ], + "legal": [ + "legal-and-compliance" + ] + }, + "rate_limit": 0.5, + "max_pages": 250 + } + ] +} \ No newline at end of file diff --git a/configs/godot.json b/configs/godot.json new file mode 100644 index 0000000..786f22b --- /dev/null +++ b/configs/godot.json @@ -0,0 +1,49 @@ +{ + "name": "godot", + "description": "Complete Godot Engine knowledge base combining official documentation and source code analysis", + "merge_mode": "claude-enhanced", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.godotengine.org/en/stable/", + "extract_api": true, + "selectors": { + "main_content": "div[role='main']", + "title": "title", + "code_blocks": "pre" + }, + "url_patterns": { + "include": [], + "exclude": ["/search.html", "/_static/", "/_images/"] + }, + "categories": { + "getting_started": ["introduction", "getting_started", "step_by_step"], + "scripting": ["scripting", "gdscript", "c_sharp"], + "2d": ["2d", "canvas", "sprite", "animation"], + "3d": ["3d", "spatial", "mesh", "shader"], + "physics": ["physics", "collision", "rigidbody"], + "api": ["api", "class", "reference", "method"] + }, + "rate_limit": 0.5, + "max_pages": 500 + }, + { + "type": "github", + "repo": "godotengine/godot", + "enable_codebase_analysis": true, + "code_analysis_depth": "deep", + "fetch_issues": true, + "max_issues": 100, + "fetch_changelog": true, + "fetch_releases": true, + "file_patterns": [ + "core/**/*.h", + "core/**/*.cpp", + "scene/**/*.h", + "scene/**/*.cpp", + "servers/**/*.h", + "servers/**/*.cpp" + ] + } + ] +} diff --git a/configs/godot_unified.json b/configs/godot_unified.json new file mode 100644 index 0000000..ab863c9 --- /dev/null +++ b/configs/godot_unified.json @@ -0,0 +1,108 @@ +{ + "name": "godot", + "description": "Godot Engine 4.x - Complete open source game engine (documentation + source code + signal flow analysis)", + "output_dir": "output/godot-unified/", + + "sources": [ + { + "type": "local", + "path": "/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/godot-docs", + "name": "documentation", + "description": "Official Godot 4.x documentation (RST + Markdown)", + "weight": 0.4, + "enhance_level": 3, + "file_patterns": ["*.rst", "*.md"], + "skip_patterns": [ + "build/", + "_build/", + ".git/", + "node_modules/", + "__pycache__/" + ], + "categories": { + "getting_started": ["getting_started", "introduction", "tutorial"], + "core_concepts": ["classes", "nodes", "scenes", "signals"], + "api": ["api", "reference", "class_reference"], + "tutorials": ["tutorials", "how_to", "examples"], + "advanced": ["advanced", "performance", "optimization"] + } + }, + { + "type": "local", + "path": "/mnt/1ece809a-2821-4f10-aecb-fcdf34760c0b/Git/godot", + "name": "source_code", + "description": "Godot Engine C++ source code + GDScript core", + "weight": 0.6, + "enhance_level": 3, + "languages": ["C++", "GDScript", "Python", "GodotShader"], + "skip_patterns": [ + ".git/", + "thirdparty/", + "tests/", + "doc/", + "misc/", + "drivers/", + "platform/android/", + "platform/ios/", + "platform/web/", + "*.obj", + "*.o", + "*.a", + "*.so" + ], + "focus_dirs": [ + "core/", + "scene/", + "servers/", + "modules/gdscript/", + "editor/" + ], + "analysis_depth": "full", + "extract_patterns": true, + "extract_tests": true, + "extract_signals": true, + "extract_config": true + } + ], + + "merge_strategy": "unified", + "conflict_resolution": "code_first", + "detect_conflicts": true, + + "analysis_features": { + "pattern_detection": true, + "test_extraction": true, + "how_to_guides": true, + "config_extraction": true, + "architecture_overview": true, + "signal_flow_analysis": true, + "api_reference": true, + "dependency_graph": true + }, + + "enhancement": { + "enabled": true, + "level": 3, + "mode": "LOCAL" + }, + + "chunking": { + "enabled": true, + "chunk_size": 1000, + "chunk_overlap": 200 + }, + + "output_formats": [ + "claude", + "markdown" + ], + + "metadata": { + "version": "4.x", + "framework": "godot", + "language": "cpp+gdscript", + "tags": ["game-engine", "godot", "cpp", "gdscript", "signals", "nodes"], + "documentation_url": "https://docs.godotengine.org/", + "repository_url": "https://github.com/godotengine/godot" + } +} diff --git a/configs/httpx_comprehensive.json b/configs/httpx_comprehensive.json new file mode 100644 index 0000000..422e944 --- /dev/null +++ b/configs/httpx_comprehensive.json @@ -0,0 +1,114 @@ +{ + "name": "httpx", + "description": "Use this skill when working with HTTPX, a fully featured HTTP client for Python 3 with sync and async APIs. HTTPX provides a familiar requests-like interface with support for HTTP/2, connection pooling, and comprehensive middleware capabilities.", + "version": "1.0.0", + "base_url": "https://www.python-httpx.org/", + "sources": [ + { + "type": "documentation", + "base_url": "https://www.python-httpx.org/", + "selectors": { + "main_content": "article.md-content__inner", + "title": "h1", + "code_blocks": "pre code" + } + }, + { + "type": "github", + "repo": "encode/httpx", + "code_analysis_depth": "deep", + "enable_codebase_analysis": true, + "fetch_issues": true, + "fetch_changelog": true, + "fetch_releases": true, + "max_issues": 50 + } + ], + "selectors": { + "main_content": "article.md-content__inner", + "title": "h1", + "code_blocks": "pre code", + "navigation": "nav.md-tabs", + "sidebar": "nav.md-nav--primary" + }, + "url_patterns": { + "include": [ + "/quickstart/", + "/advanced/", + "/api/", + "/async/", + "/http2/", + "/compatibility/" + ], + "exclude": [ + "/changelog/", + "/contributing/", + "/exceptions/" + ] + }, + "categories": { + "getting_started": [ + "quickstart", + "install", + "introduction", + "overview" + ], + "core_concepts": [ + "client", + "request", + "response", + "timeout", + "pool" + ], + "async": [ + "async", + "asyncio", + "trio", + "concurrent" + ], + "http2": [ + "http2", + "http/2", + "multiplexing" + ], + "advanced": [ + "authentication", + "middleware", + "transport", + "proxy", + "ssl", + "streaming" + ], + "api_reference": [ + "api", + "reference", + "client", + "request", + "response" + ], + "compatibility": [ + "requests", + "migration", + "compatibility" + ] + }, + "rate_limit": 0.5, + "max_pages": 100, + "metadata": { + "author": "Encode", + "language": "Python", + "framework_type": "HTTP Client", + "use_cases": [ + "Making HTTP requests", + "REST API clients", + "Async HTTP operations", + "HTTP/2 support", + "Connection pooling" + ], + "related_skills": [ + "requests", + "aiohttp", + "urllib3" + ] + } +} diff --git a/configs/medusa-mercurjs.json b/configs/medusa-mercurjs.json new file mode 100644 index 0000000..e5c31ad --- /dev/null +++ b/configs/medusa-mercurjs.json @@ -0,0 +1,71 @@ +{ + "name": "medusa-mercurjs", + "description": "Complete Medusa v2 + MercurJS multi-vendor e-commerce framework knowledge. Use when building headless commerce applications, implementing multi-vendor marketplaces, or understanding Medusa modules/workflows.", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.medusajs.com", + "llms_txt_url": "https://docs.medusajs.com/llms-full.txt", + "extract_api": true, + "selectors": { + "main_content": "main, article, .content", + "title": "h1", + "code_blocks": "pre" + }, + "url_patterns": { + "include": [ + "/learn", + "/resources" + ], + "exclude": [] + }, + "categories": { + "installation": ["installation", "install", "docker", "update"], + "fundamentals": ["fundamentals", "api-routes", "data-models", "modules", "module-links", "workflows", "events-and-subscribers", "scheduled-jobs", "custom-cli-scripts", "admin", "environment-variables"], + "customization": ["customization", "custom-features", "extend-features", "integrate-systems", "customize-admin"], + "debugging_testing": ["debugging-and-testing", "logging", "testing", "test-tools", "instrumentation", "feature-flags", "debug-workflows"], + "deployment": ["deployment", "production", "deploy", "general"], + "commerce_modules": ["commerce-modules", "product", "cart", "order", "payment", "pricing", "tax", "inventory", "fulfillment", "customer", "promotion", "auth", "region", "currency", "sales-channel", "stock-location", "api-key", "user"], + "infrastructure_modules": ["infrastructure-modules", "caching", "event", "file", "locking", "notification", "workflow-engine", "analytics"], + "storefront": ["storefront-development", "publishable-api-keys", "checkout", "products", "customers", "regions"], + "integrations": ["integrations", "sanity", "contentful", "stripe", "paypal", "shipstation", "sentry"], + "cli_tools": ["medusa-cli", "commands", "build", "develop", "plugin", "db"], + "references": ["references", "medusa-workflows", "helper-steps", "service-factory-reference", "data-model-repository-reference", "test-tools-reference", "fulfillment", "auth", "notification-provider", "file-provider", "locking-service", "caching-service"], + "recipes": ["recipes", "erp", "marketplace", "b2b", "subscriptions", "digital-products", "bundled-products"], + "admin_components": ["admin-components", "widgets", "ui-routes"], + "examples": ["examples", "guides", "how-to-tutorials", "tutorials"] + }, + "rate_limit": 0.3, + "max_pages": 500 + }, + { + "type": "documentation", + "base_url": "https://docs.mercurjs.com/", + "llms_txt_url": "https://docs.mercurjs.com/llms-full.txt", + "extract_api": true, + "selectors": { + "main_content": "main, article", + "title": "h1", + "code_blocks": "pre" + }, + "url_patterns": { + "include": ["/"], + "exclude": [] + }, + "categories": { + "quick_start": ["introduction", "get-started"], + "components": ["components", "backend", "admin-panel", "vendor-panel", "storefront"], + "core_concepts": ["core-concepts", "seller", "commission", "payouts", "order-splitting", "reviews", "requests", "notifications", "marketplace-settings"], + "product": ["product", "core-commerce-modules", "core-infrastructure-modules", "framework"], + "integrations": ["integrations", "algolia", "resend", "stripe"], + "api_admin": ["api-reference/admin", "admin-algolia", "admin-api-keys", "admin-attributes", "admin-auth", "admin-campaigns", "admin-claims", "admin-collections", "admin-commission", "admin-currencies", "admin-customers", "admin-draft-orders", "admin-exchanges", "admin-fulfillment", "admin-inventory", "admin-invites", "admin-notifications", "admin-orders", "admin-payments", "admin-price-lists", "admin-products", "admin-promotions", "admin-regions", "admin-reservations", "admin-returns", "admin-sales-channels", "admin-sellers", "admin-shipping", "admin-stock-locations", "admin-stores", "admin-tax", "admin-uploads", "admin-users"], + "api_store": ["api-reference/store", "store-auth", "store-carts", "store-collections", "store-currencies", "store-customers", "store-fulfillment", "store-orders", "store-payment", "store-products", "store-regions", "store-returns"], + "api_vendor": ["api-reference/vendor", "vendor-auth", "vendor-fulfillment", "vendor-inventory", "vendor-orders", "vendor-payouts", "vendor-products", "vendor-returns", "vendor-sellers", "vendor-shipping", "vendor-stock-locations", "vendor-uploads"], + "help": ["help", "llm", "mcp", "support"] + }, + "rate_limit": 0.3, + "max_pages": 300 + } + ] +} diff --git a/configs/react.json b/configs/react.json new file mode 100644 index 0000000..42edb52 --- /dev/null +++ b/configs/react.json @@ -0,0 +1,69 @@ +{ + "name": "react", + "description": "Complete React knowledge base combining official documentation and React codebase insights. Use when working with React, understanding API changes, or debugging React internals.", + "version": "1.1.0", + "merge_mode": "rule-based", + "sources": [ + { + "type": "documentation", + "base_url": "https://react.dev/", + "extract_api": true, + "selectors": { + "main_content": "article", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": [], + "exclude": [ + "/blog/", + "/community/" + ] + }, + "categories": { + "getting_started": [ + "learn", + "installation", + "quick-start" + ], + "components": [ + "components", + "props", + "state" + ], + "hooks": [ + "hooks", + "usestate", + "useeffect", + "usecontext" + ], + "api": [ + "api", + "reference" + ], + "advanced": [ + "context", + "refs", + "portals", + "suspense" + ] + }, + "rate_limit": 0.5 + }, + { + "type": "github", + "repo": "facebook/react", + "enable_codebase_analysis": true, + "code_analysis_depth": "deep", + "fetch_issues": true, + "max_issues": 100, + "fetch_changelog": true, + "fetch_releases": true, + "file_patterns": [ + "packages/react/src/**/*.js", + "packages/react-dom/src/**/*.js" + ] + } + ], + "base_url": "https://react.dev/" +} \ No newline at end of file diff --git a/configs/unity-addressables.json b/configs/unity-addressables.json new file mode 100644 index 0000000..9b4bce7 --- /dev/null +++ b/configs/unity-addressables.json @@ -0,0 +1,125 @@ +{ + "name": "unity-addressables", + "description": "Unity Addressables asset management system - Use when implementing asset loading, remote content delivery, asset bundles, memory management, or dynamic asset loading in Unity projects.", + "version": "1.0.0", + "merge_mode": "claude-enhanced", + "base_url": "https://docs.unity3d.com/Packages/com.unity.addressables@2.3/manual/index.html", + "sources": [ + { + "type": "documentation", + "base_url": "https://docs.unity3d.com/Packages/com.unity.addressables@2.3/manual/index.html", + "browser": true, + "extract_api": true, + "selectors": { + "main_content": ".content-wrap, .section, article, main", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": [ + "com.unity.addressables" + ], + "exclude": [ + "/changelog/", + "/license/" + ] + }, + "categories": { + "getting_started": [ + "index", + "getting-started", + "installation", + "quickstart", + "AddressableAssetsGettingStarted" + ], + "concepts": [ + "AddressableAssetsDevelopmentCycle", + "AddressableAssetsOverview", + "asset-references", + "labels", + "groups", + "profiles" + ], + "loading": [ + "load-assets", + "LoadingAddressableAssets", + "MemoryManagement", + "AsyncOperationHandle", + "UnloadingAddressableAssets", + "synchronous-addressables" + ], + "api": [ + "api", + "reference", + "Addressables", + "AddressablesAPI" + ], + "building": [ + "Builds", + "BuildLayoutReport", + "ContentUpdateWorkflow", + "AddressableAssetSettings", + "build-scripting" + ], + "advanced": [ + "remote-content-distribution", + "content-catalogs", + "diagnostic-tools", + "CustomOperations", + "TransformInternalId", + "ccd" + ] + }, + "rate_limit": 0.5 + }, + { + "type": "github", + "repo": "Unity-Technologies/Addressables-Sample", + "include_code": true, + "language": "C#", + "enable_codebase_analysis": true, + "code_analysis_depth": "deep", + "fetch_issues": false, + "fetch_changelog": false, + "fetch_releases": false, + "file_patterns": [ + "**/*.cs" + ] + } + ], + "analysis_features": { + "pattern_detection": true, + "test_extraction": true, + "how_to_guides": true, + "config_extraction": true, + "architecture_overview": true, + "api_reference": true, + "dependency_graph": true + }, + + "enhancement": { + "enabled": true, + "level": 3, + "mode": "LOCAL" + }, + + "chunking": { + "enabled": true, + "chunk_size": 1000, + "chunk_overlap": 200 + }, + + "output_formats": [ + "claude", + "markdown" + ], + + "metadata": { + "version": "2.3", + "framework": "unity", + "language": "csharp", + "tags": ["unity", "addressables", "asset-management", "asset-bundles", "content-delivery", "csharp"], + "documentation_url": "https://docs.unity3d.com/Packages/com.unity.addressables@latest/", + "repository_url": "https://github.com/Unity-Technologies/Addressables-Sample" + } +} diff --git a/configs/unity-dotween.json b/configs/unity-dotween.json new file mode 100644 index 0000000..58a15c9 --- /dev/null +++ b/configs/unity-dotween.json @@ -0,0 +1,128 @@ +{ + "name": "dotween", + "description": "DOTween (HOTween v2) animation engine for Unity - Use when implementing tweening animations, sequences, easing, UI animations, or any programmatic animation in Unity C# projects.", + "version": "1.0.0", + "merge_mode": "claude-enhanced", + "base_url": "https://dotween.demigiant.com/documentation.php", + "sources": [ + { + "type": "documentation", + "base_url": "https://dotween.demigiant.com/documentation.php", + "extract_api": true, + "selectors": { + "main_content": "#content, .documentation, article, main", + "title": "h1, h2", + "code_blocks": "pre code, .code" + }, + "url_patterns": { + "include": [ + "/documentation", + "/getstarted", + "/pro", + "/support" + ], + "exclude": [ + "/download", + "/credits" + ] + }, + "categories": { + "getting_started": [ + "getstarted", + "setup", + "installation", + "initialization" + ], + "core_api": [ + "DOTween", + "Tweener", + "Sequence", + "Tween", + "TweenParams", + "DOVirtual" + ], + "shortcuts": [ + "shortcuts", + "transform", + "material", + "rigidbody", + "camera", + "audio", + "light", + "spriterenderer" + ], + "easing": [ + "ease", + "easing", + "animationcurve", + "custom-ease" + ], + "sequences": [ + "sequence", + "append", + "insert", + "join", + "prepend", + "callbacks" + ], + "advanced": [ + "paths", + "blendable", + "DOTweenAnimation", + "DOTweenVisualManager", + "pro" + ] + }, + "rate_limit": 1.0 + }, + { + "type": "github", + "repo": "Demigiant/dotween", + "include_code": true, + "language": "C#", + "enable_codebase_analysis": true, + "code_analysis_depth": "deep", + "fetch_issues": true, + "max_issues": 50, + "fetch_changelog": false, + "fetch_releases": true + } + ], + "analysis_features": { + "pattern_detection": true, + "test_extraction": true, + "how_to_guides": true, + "config_extraction": true, + "architecture_overview": true, + "api_reference": true, + "dependency_graph": true + }, + + "enhancement": { + "enabled": true, + "level": 3, + "mode": "LOCAL", + "agent": "kimi", + "timeout": "unlimited" + }, + + "chunking": { + "enabled": true, + "chunk_size": 1000, + "chunk_overlap": 200 + }, + + "output_formats": [ + "claude", + "markdown" + ], + + "metadata": { + "version": "1.2", + "framework": "unity", + "language": "csharp", + "tags": ["unity", "dotween", "tweening", "animation", "easing", "csharp"], + "documentation_url": "https://dotween.demigiant.com/documentation.php", + "repository_url": "https://github.com/Demigiant/dotween" + } +} diff --git a/configs/unity-spine.json b/configs/unity-spine.json new file mode 100644 index 0000000..c598e42 --- /dev/null +++ b/configs/unity-spine.json @@ -0,0 +1,136 @@ +{ + "name": "spine-unity", + "description": "Spine 2D skeletal animation runtime for Unity - Use when implementing Spine animations, SkeletonAnimation components, skin management, or spine-unity integration in Unity projects.", + "version": "1.0.0", + "merge_mode": "claude-enhanced", + "base_url": "http://en.esotericsoftware.com/spine-unity", + "sources": [ + { + "type": "documentation", + "base_url": "http://en.esotericsoftware.com/spine-unity", + "extract_api": true, + "selectors": { + "main_content": "#wiki_page_content, .wiki-content, article, main", + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": [ + "/spine-unity", + "/spine-runtime", + "/spine-api", + "/spine-applying-animations", + "/spine-attachments", + "/spine-events", + "/spine-skeleton", + "/spine-skins", + "/spine-slots" + ], + "exclude": [ + "/spine-corona", + "/spine-cocos2d", + "/spine-godot", + "/spine-unreal", + "/spine-flutter", + "/spine-sfml", + "/spine-monogame", + "/spine-love", + "/spine-haxe", + "/spine-ts", + "/spine-phaser", + "/spine-pixi", + "/spine-lwjgl", + "/spine-libgdx", + "/spine-changelog" + ] + }, + "categories": { + "getting_started": [ + "Installation", + "Download", + "Assets", + "Runtime Documentation", + "FAQ" + ], + "components": [ + "Main Components", + "Utility Components", + "SkeletonAnimation", + "SkeletonGraphic", + "SkeletonMecanim", + "BoneFollower" + ], + "animation": [ + "Events", + "AnimationState", + "callback", + "Timeline", + "Examples" + ], + "rendering": [ + "Rendering", + "shader", + "material" + ], + "advanced": [ + "On-Demand Loading", + "UPM", + "Packages" + ] + }, + "rate_limit": 1.0 + }, + { + "type": "github", + "repo": "EsotericSoftware/spine-runtimes", + "include_code": true, + "language": "C#", + "enable_codebase_analysis": true, + "code_analysis_depth": "deep", + "fetch_issues": true, + "max_issues": 50, + "fetch_changelog": true, + "fetch_releases": true, + "file_patterns": [ + "spine-unity/Assets/Spine/**/*.cs", + "spine-unity/Assets/Spine Examples/**/*.cs", + "spine-csharp/src/**/*.cs" + ] + } + ], + "analysis_features": { + "pattern_detection": true, + "test_extraction": true, + "how_to_guides": true, + "config_extraction": true, + "architecture_overview": true, + "api_reference": true, + "dependency_graph": true + }, + + "enhancement": { + "enabled": true, + "level": 3, + "mode": "LOCAL" + }, + + "chunking": { + "enabled": true, + "chunk_size": 1000, + "chunk_overlap": 200 + }, + + "output_formats": [ + "claude", + "markdown" + ], + + "metadata": { + "version": "4.2", + "framework": "unity", + "language": "csharp", + "tags": ["unity", "spine", "2d-animation", "skeletal-animation", "csharp"], + "documentation_url": "http://en.esotericsoftware.com/spine-unity", + "repository_url": "https://github.com/EsotericSoftware/spine-runtimes" + } +} diff --git a/distribution/claude-plugin/.claude-plugin/plugin.json b/distribution/claude-plugin/.claude-plugin/plugin.json new file mode 100644 index 0000000..1b3ed69 --- /dev/null +++ b/distribution/claude-plugin/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "skill-seekers", + "description": "Transform 17 source types (docs, GitHub, PDFs, videos, Jupyter, Confluence, Notion, Slack, and more) into AI-ready skills and RAG knowledge for 16+ LLM platforms.", + "version": "3.3.0", + "author": { + "name": "Yusuf Karaaslan" + }, + "homepage": "https://github.com/yusufkaraaslan/Skill_Seekers", + "repository": "https://github.com/yusufkaraaslan/Skill_Seekers", + "license": "MIT" +} diff --git a/distribution/claude-plugin/.mcp.json b/distribution/claude-plugin/.mcp.json new file mode 100644 index 0000000..c0fa9c9 --- /dev/null +++ b/distribution/claude-plugin/.mcp.json @@ -0,0 +1,6 @@ +{ + "skill-seekers": { + "command": "python", + "args": ["-m", "skill_seekers.mcp.server_fastmcp"] + } +} diff --git a/distribution/claude-plugin/README.md b/distribution/claude-plugin/README.md new file mode 100644 index 0000000..7366172 --- /dev/null +++ b/distribution/claude-plugin/README.md @@ -0,0 +1,93 @@ +# Skill Seekers โ€” Claude Code Plugin + +Transform 18 source types into AI-ready skills and RAG knowledge, directly from Claude Code. + +## Installation + +### From the Official Plugin Directory + +``` +/plugin install skill-seekers@claude-plugin-directory +``` + +Or browse for it in `/plugin > Discover`. + +### Local Installation (for development) + +```bash +claude --plugin-dir ./path/to/skill-seekers-plugin +``` + +### Prerequisites + +The plugin requires `skill-seekers` to be installed: + +```bash +pip install skill-seekers[mcp] +``` + +## What's Included + +### MCP Server (40 tools) + +The plugin bundles the Skill Seekers MCP server providing tools for: +- Scraping documentation, GitHub repos, PDFs, videos, and 13 other source types +- Packaging skills for 21+ LLM platforms +- Exporting to vector databases (Weaviate, Chroma, FAISS, Qdrant) +- Managing configs, workflows, and sources + +### Slash Commands + +| Command | Description | +|---------|-------------| +| `/skill-seekers:create-skill ` | Create a skill from any source (auto-detects type) | +| `/skill-seekers:sync-config ` | Sync config URLs against live docs | +| `/skill-seekers:install-skill ` | End-to-end: fetch, scrape, enhance, package, install | + +### Agent Skill + +The **skill-builder** skill is automatically available to Claude. It detects source types and uses the appropriate MCP tools to build skills autonomously. + +## Usage Examples + +``` +# Create a skill from a documentation site +/skill-seekers:create-skill https://react.dev + +# Create from a GitHub repo, targeting LangChain +/skill-seekers:create-skill pallets/flask --target langchain + +# Full install workflow with AI enhancement +/skill-seekers:install-skill https://fastapi.tiangolo.com --enhance + +# Sync an existing config +/skill-seekers:sync-config react +``` + +Or just ask Claude naturally: +> "Create an AI skill from the React documentation" +> "Scrape the Flask GitHub repo and package it for OpenAI" +> "Export my skill to a Chroma vector database" + +The skill-builder agent skill will automatically detect the intent and use the right tools. + +## Remote MCP Alternative + +By default, the plugin runs the MCP server locally via `python -m skill_seekers.mcp.server_fastmcp`. To use a remote server instead, edit `.mcp.json`: + +```json +{ + "skill-seekers": { + "type": "http", + "url": "https://your-hosted-server.com/mcp" + } +} +``` + +## Supported Source Types + +Documentation (web), GitHub repos, PDFs, Word docs, EPUBs, videos, local codebases, Jupyter notebooks, HTML files, OpenAPI specs, AsciiDoc, PowerPoint, RSS/Atom feeds, man pages, Confluence, Notion, Slack/Discord exports. + +## License + +MIT โ€” https://github.com/yusufkaraaslan/Skill_Seekers diff --git a/distribution/claude-plugin/commands/create-skill.md b/distribution/claude-plugin/commands/create-skill.md new file mode 100644 index 0000000..6130871 --- /dev/null +++ b/distribution/claude-plugin/commands/create-skill.md @@ -0,0 +1,62 @@ +--- +description: Create an AI skill from any source (URL, repo, PDF, video, notebook, etc.) +--- + +# Create Skill + +Create an AI-ready skill from a source. The source type is auto-detected. + +## Usage + +``` +/skill-seekers:create-skill [--preset ] [--output ] +``` + +## Instructions + +When the user provides a source via `$ARGUMENTS`, run the `skill-seekers create` command to generate a skill. + +1. Parse the arguments: extract the source (first argument) and any flags. +2. If no `--preset` is specified, default to `quick` for fast results. +3. If no `--output` is specified, default to `./output`. +4. Run the create command: + ```bash + skill-seekers create "$SOURCE" --preset quick --output "$OUTPUT" + ``` +5. After completion, read the generated `SKILL.md` and summarize what was created. +6. If the user wants to target a specific platform (e.g., Claude, OpenAI, LangChain), run the package command after: + ```bash + skill-seekers package "$SKILL_DIR" --target "$PLATFORM" + ``` + +## Presets + +- `-p quick` โ€” 1-2 minutes, basic skill +- `-p standard` โ€” 5-10 minutes, good coverage +- `-p comprehensive` โ€” 20-60 minutes, full analysis + +## Source Types (auto-detected) + +- **URL** (https://...) โ€” Documentation scraping +- **owner/repo** or github.com URL โ€” GitHub repo analysis +- **file.pdf** โ€” PDF extraction +- **file.ipynb** โ€” Jupyter notebook +- **file.docx** โ€” Word document +- **file.epub** โ€” EPUB book +- **YouTube/Vimeo URL** โ€” Video transcript +- **./directory** โ€” Local codebase analysis +- **file.yaml** with OpenAPI โ€” API spec +- **file.pptx** โ€” PowerPoint +- **file.adoc** โ€” AsciiDoc +- **file.html** โ€” HTML page +- **file.rss** โ€” RSS/Atom feed +- **cmd.1** โ€” Man page + +## Examples + +``` +/skill-seekers:create-skill https://react.dev +/skill-seekers:create-skill pallets/flask -p standard +/skill-seekers:create-skill ./docs/api.pdf +/skill-seekers:create-skill https://youtube.com/watch?v=abc123 +``` diff --git a/distribution/claude-plugin/commands/install-skill.md b/distribution/claude-plugin/commands/install-skill.md new file mode 100644 index 0000000..c857ba5 --- /dev/null +++ b/distribution/claude-plugin/commands/install-skill.md @@ -0,0 +1,43 @@ +--- +description: One-command skill creation and packaging for a target platform +--- + +# Install Skill + +End-to-end workflow: create a skill from any source, then package it for a target LLM platform. + +## Usage + +``` +/skill-seekers:install-skill [--target ] [--preset ] +``` + +## Instructions + +When the user provides a source via `$ARGUMENTS`: + +1. Parse the arguments: extract source, `--target` (default: claude), `--preset` (default: quick). +2. Run the create command: + ```bash + skill-seekers create "$SOURCE" --preset "$PRESET" --output ./output + ``` +3. Find the generated skill directory (look for the directory containing SKILL.md in ./output/). +4. Run the package command for the target platform: + ```bash + skill-seekers package "$SKILL_DIR" --target "$TARGET" + ``` +5. Report what was created and where to find the packaged output. + +## Target Platforms + +`claude` (default), `openai`, `gemini`, `langchain`, `llama-index`, `haystack`, `markdown`, `chroma`, `weaviate`, `faiss`, `qdrant`, `pinecone`, `deepseek`, `kimi`, `qwen`, `fireworks`, `openrouter`, `together`, `minimax`, `opencode`, `ibm-bob` + +> **IDE-specific installs** (`cursor`, `windsurf`, `continue`, `cline`) are not standalone `--target` values. Use `skill-seekers install-agent` or manually copy the output from `--target markdown` or `--target claude`. + +## Examples + +``` +/skill-seekers:install-skill https://react.dev --target claude +/skill-seekers:install-skill pallets/flask --target langchain -p standard +/skill-seekers:install-skill ./docs/api.pdf --target openai +``` diff --git a/distribution/claude-plugin/commands/sync-config.md b/distribution/claude-plugin/commands/sync-config.md new file mode 100644 index 0000000..273bd15 --- /dev/null +++ b/distribution/claude-plugin/commands/sync-config.md @@ -0,0 +1,32 @@ +--- +description: Sync a scraping config's URLs against the live documentation site +--- + +# Sync Config + +Synchronize a Skill Seekers config file with the current state of a documentation site. Detects new pages, removed pages, and URL changes. + +## Usage + +``` +/skill-seekers:sync-config +``` + +## Instructions + +When the user provides a config path or preset name via `$ARGUMENTS`: + +1. If it's a preset name (e.g., `react`, `godot`), look for it in the `configs/` directory or fetch from the API. +2. Run the sync command: + ```bash + skill-seekers sync-config "$CONFIG" + ``` +3. Report what changed: new URLs found, removed URLs, and any conflicts. +4. Ask the user if they want to update the config and re-scrape. + +## Examples + +``` +/skill-seekers:sync-config configs/react.json +/skill-seekers:sync-config react +``` diff --git a/distribution/claude-plugin/skills/skill-builder/SKILL.md b/distribution/claude-plugin/skills/skill-builder/SKILL.md new file mode 100644 index 0000000..71b11d5 --- /dev/null +++ b/distribution/claude-plugin/skills/skill-builder/SKILL.md @@ -0,0 +1,69 @@ +--- +name: skill-builder +description: Automatically detect source types and build AI skills using Skill Seekers. Use when the user wants to create skills from documentation, repos, PDFs, videos, or other knowledge sources. +--- + +# Skill Builder + +You have access to the Skill Seekers MCP server which provides 40 tools for converting knowledge sources into AI-ready skills. + +## When to Use This Skill + +Use this skill when the user: +- Wants to create an AI skill from a documentation site, GitHub repo, PDF, video, or other source +- Needs to convert documentation into a format suitable for LLM consumption +- Wants to update or sync existing skills with their source documentation +- Needs to export skills to vector databases (Weaviate, Chroma, FAISS, Qdrant) +- Asks about scraping, converting, or packaging documentation for AI + +## Source Type Detection + +Automatically detect the source type from user input: + +| Input Pattern | Source Type | Tool to Use | +|---------------|-------------|-------------| +| `https://...` (not GitHub/YouTube) | Documentation | `scrape_docs` | +| `owner/repo` or `github.com/...` | GitHub | `scrape_github` | +| `*.pdf` | PDF | `scrape_pdf` | +| YouTube/Vimeo URL or video file | Video | `scrape_video` | +| Local directory path | Codebase | `scrape_codebase` | +| `*.ipynb`, `*.html`, `*.yaml` (OpenAPI), `*.adoc`, `*.pptx`, `*.rss`, `*.1`-`.8` | Various | `scrape_generic` | +| JSON config file | Unified | Use config with `scrape_docs` | + +## Recommended Workflow + +1. **Detect source type** from the user's input +2. **Generate or fetch config** using `generate_config` or `fetch_config` if needed +3. **Estimate scope** with `estimate_pages` for documentation sites +4. **Scrape the source** using the appropriate scraping tool +5. **Enhance** with `enhance_skill` if the user wants AI-powered improvements +6. **Package** with `package_skill` for the target platform +7. **Export to vector DB** if requested using `export_to_*` tools + +## Available MCP Tools + +### Config Management +- `generate_config` โ€” Generate a scraping config from a URL +- `list_configs` โ€” List available preset configs +- `validate_config` โ€” Validate a config file + +### Scraping (use based on source type) +- `scrape_docs` โ€” Documentation sites +- `scrape_github` โ€” GitHub repositories +- `scrape_pdf` โ€” PDF files +- `scrape_video` โ€” Video transcripts +- `scrape_codebase` โ€” Local code analysis +- `scrape_generic` โ€” Jupyter, HTML, OpenAPI, AsciiDoc, PPTX, RSS, manpage, Confluence, Notion, chat + +### Post-processing +- `enhance_skill` โ€” AI-powered skill enhancement +- `package_skill` โ€” Package for target platform +- `upload_skill` โ€” Upload to platform API +- `install_skill` โ€” End-to-end install workflow + +### Advanced +- `detect_patterns` โ€” Design pattern detection in code +- `extract_test_examples` โ€” Extract usage examples from tests +- `build_how_to_guides` โ€” Generate how-to guides from tests +- `split_config` โ€” Split large configs into focused skills +- `export_to_weaviate`, `export_to_chroma`, `export_to_faiss`, `export_to_qdrant` โ€” Vector DB export diff --git a/distribution/github-action/README.md b/distribution/github-action/README.md new file mode 100644 index 0000000..6e942bd --- /dev/null +++ b/distribution/github-action/README.md @@ -0,0 +1,147 @@ +# Skill Seekers GitHub Action + +Transform documentation, GitHub repos, PDFs, videos, and 13 other source types into AI-ready skills and RAG knowledge โ€” directly in your CI/CD pipeline. + +## Quick Start + +```yaml +- uses: yusufkaraaslan/skill-seekers-action@v3 + with: + source: 'https://react.dev' +``` + +## Inputs + +| Input | Required | Default | Description | +|-------|----------|---------|-------------| +| `source` | Yes | โ€” | Source URL, file path, or `owner/repo` | +| `command` | No | `create` | Command: `create`, `scan`, `doctor`, `enhance`, `enhance-status`, `package`, `upload`, `install`, `install-agent`, `estimate`, `extract-test-examples`, `resume`, `quality`, `config`, `workflows`, `sync-config`, `stream`, `update`, `multilang` | +| `target` | No | `claude` | Target platform: `claude`, `openai`, `gemini`, `langchain`, `llama-index`, `markdown` | +| `config` | No | โ€” | Path to JSON config file | +| `output-dir` | No | `output` | Output directory | +| `extra-args` | No | โ€” | Additional CLI arguments | + +## Outputs + +| Output | Description | +|--------|-------------| +| `skill-dir` | Path to the generated skill directory | +| `skill-name` | Name of the generated skill | + +## Examples + +### Auto-update documentation skill weekly + +```yaml +name: Update AI Skills +on: + schedule: + - cron: '0 6 * * 1' # Every Monday 6am UTC + workflow_dispatch: + +jobs: + update-skills: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: yusufkaraaslan/skill-seekers-action@v3 + with: + source: 'https://react.dev' + target: 'langchain' + + - uses: actions/upload-artifact@v4 + with: + name: react-skill + path: output/ +``` + +### Generate skill from GitHub repo + +```yaml +- uses: yusufkaraaslan/skill-seekers-action@v3 + with: + source: 'pallets/flask' + command: 'create' + target: 'claude' +``` + +### Process PDF documentation + +```yaml +- uses: actions/checkout@v4 + +- uses: yusufkaraaslan/skill-seekers-action@v3 + with: + source: 'docs/api-reference.pdf' + command: 'create' +``` + +### Unified multi-source build with config + +```yaml +- uses: actions/checkout@v4 + +- uses: yusufkaraaslan/skill-seekers-action@v3 + with: + config: 'configs/my-project.json' + command: 'create' + target: 'openai' +``` + +### Commit generated skill back to repo + +```yaml +- uses: actions/checkout@v4 + +- uses: yusufkaraaslan/skill-seekers-action@v3 + id: generate + with: + source: 'https://fastapi.tiangolo.com' + +- name: Commit skill + run: | + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + git add output/ + git diff --staged --quiet || git commit -m "Update AI skill: ${{ steps.generate.outputs.skill-name }}" + git push +``` + +## Environment Variables + +Pass API keys as environment variables for AI-enhanced skills: + +```yaml +env: + ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +``` + +## Supported Source Types + +| Type | Example Source | +|------|---------------| +| Documentation (web) | `https://react.dev` | +| GitHub repo | `pallets/flask` or `https://github.com/pallets/flask` | +| PDF | `docs/manual.pdf` | +| Video | `https://youtube.com/watch?v=...` | +| Local codebase | `./src` | +| Jupyter Notebook | `analysis.ipynb` | +| OpenAPI/Swagger | `openapi.yaml` | +| Word (.docx) | `docs/guide.docx` | +| EPUB | `book.epub` | +| PowerPoint | `slides.pptx` | +| AsciiDoc | `docs/guide.adoc` | +| HTML | `page.html` | +| RSS/Atom | `feed.rss` | +| Man pages | `tool.1` | +| Confluence | Via config file | +| Notion | Via config file | +| Chat (Slack/Discord) | Via config file | + +## License + +MIT diff --git a/distribution/github-action/action.yml b/distribution/github-action/action.yml new file mode 100644 index 0000000..529ff7c --- /dev/null +++ b/distribution/github-action/action.yml @@ -0,0 +1,92 @@ +name: 'Skill Seekers - AI Knowledge Builder' +description: 'Transform documentation, repos, PDFs, videos, and 13 other source types into AI skills and RAG knowledge' +author: 'Yusuf Karaaslan' + +branding: + icon: 'book-open' + color: 'blue' + +inputs: + source: + description: 'Source URL, file path, or owner/repo for GitHub repos' + required: true + command: + description: 'Command to run: create (auto-detect), scrape, github, pdf, video, analyze, unified' + required: false + default: 'create' + target: + description: 'Output target platform: claude, openai, gemini, langchain, llama-index, markdown, cursor, windsurf' + required: false + default: 'claude' + config: + description: 'Path to JSON config file (for unified/advanced scraping)' + required: false + output-dir: + description: 'Output directory for generated skills' + required: false + default: 'output' + extra-args: + description: 'Additional CLI arguments to pass to skill-seekers' + required: false + default: '' + +outputs: + skill-dir: + description: 'Path to the generated skill directory' + value: ${{ steps.run.outputs.skill-dir }} + skill-name: + description: 'Name of the generated skill' + value: ${{ steps.run.outputs.skill-name }} + +runs: + using: 'composite' + steps: + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install Skill Seekers + shell: bash + run: pip install skill-seekers + + - name: Run Skill Seekers + id: run + shell: bash + env: + ANTHROPIC_API_KEY: ${{ env.ANTHROPIC_API_KEY }} + OPENAI_API_KEY: ${{ env.OPENAI_API_KEY }} + GOOGLE_API_KEY: ${{ env.GOOGLE_API_KEY }} + GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }} + run: | + set -euo pipefail + + OUTPUT_DIR="${{ inputs.output-dir }}" + mkdir -p "$OUTPUT_DIR" + + CMD="${{ inputs.command }}" + SOURCE="${{ inputs.source }}" + TARGET="${{ inputs.target }}" + CONFIG="${{ inputs.config }}" + EXTRA="${{ inputs.extra-args }}" + + # Build the command + if [ "$CMD" = "create" ]; then + skill-seekers create "$SOURCE" --target "$TARGET" --output "$OUTPUT_DIR" $EXTRA + elif [ -n "$CONFIG" ]; then + skill-seekers "$CMD" --config "$CONFIG" --target "$TARGET" --output "$OUTPUT_DIR" $EXTRA + else + skill-seekers "$CMD" "$SOURCE" --target "$TARGET" --output "$OUTPUT_DIR" $EXTRA + fi + + # Find the generated skill directory + SKILL_DIR=$(find "$OUTPUT_DIR" -name "SKILL.md" -exec dirname {} \; | head -1) + SKILL_NAME=$(basename "$SKILL_DIR" 2>/dev/null || echo "unknown") + + echo "skill-dir=$SKILL_DIR" >> "$GITHUB_OUTPUT" + echo "skill-name=$SKILL_NAME" >> "$GITHUB_OUTPUT" + + echo "### Skill Generated" >> "$GITHUB_STEP_SUMMARY" + echo "- **Name:** $SKILL_NAME" >> "$GITHUB_STEP_SUMMARY" + echo "- **Directory:** $SKILL_DIR" >> "$GITHUB_STEP_SUMMARY" + echo "- **Target:** $TARGET" >> "$GITHUB_STEP_SUMMARY" diff --git a/distribution/smithery/README.md b/distribution/smithery/README.md new file mode 100644 index 0000000..93a6f39 --- /dev/null +++ b/distribution/smithery/README.md @@ -0,0 +1,109 @@ +# Skill Seekers โ€” Smithery MCP Registry + +Publishing guide for the Skill Seekers MCP server on [Smithery](https://smithery.ai). + +## Status + +- **Namespace created:** `yusufkaraaslan` +- **Server created:** `yusufkaraaslan/skill-seekers` +- **Server page:** https://smithery.ai/servers/yusufkaraaslan/skill-seekers +- **Release status:** Needs re-publish (initial release failed โ€” Smithery couldn't scan GitHub URL as MCP endpoint) + +## Publishing + +Smithery requires a live, scannable MCP HTTP endpoint for URL-based publishing. Two options: + +### Option A: Publish via Web UI (Recommended) + +1. Go to https://smithery.ai/servers/yusufkaraaslan/skill-seekers/releases +2. The server already exists โ€” create a new release +3. For the "Local" tab: follow the prompts to publish as a stdio server +4. For the "URL" tab: provide a hosted HTTP endpoint URL + +### Option B: Deploy HTTP endpoint first, then publish via CLI + +1. Deploy the MCP server on Render/Railway/Fly.io: + ```bash + # Using existing Dockerfile.mcp + docker build -f Dockerfile.mcp -t skill-seekers-mcp . + # Deploy to your hosting provider + ``` +2. Publish the live URL: + ```bash + npx @smithery/cli@latest auth login + npx @smithery/cli@latest mcp publish "https://your-deployed-url/mcp" \ + -n yusufkaraaslan/skill-seekers + ``` + +### CLI Authentication (already done) + +```bash +# Install via npx (no global install needed) +npx @smithery/cli@latest auth login +npx @smithery/cli@latest namespace show # Should show: yusufkaraaslan +``` + +### After Publishing + +Update the server page with metadata: + +**Display name:** Skill Seekers โ€” AI Skill & RAG Toolkit + +**Description:** +> Transform 18 source types into AI-ready skills and RAG knowledge. Ingest documentation sites, GitHub repos, PDFs, Jupyter notebooks, videos, Confluence, Notion, Slack/Discord exports, and more. Package for 21+ LLM platforms including Claude, GPT, Gemini, LangChain, LlamaIndex, and vector databases. + +**Tags:** `ai`, `rag`, `documentation`, `skills`, `preprocessing`, `mcp`, `knowledge-base`, `vector-database` + +## User Installation + +Once published, users can add the server to their MCP client: + +```bash +# Via Smithery CLI (adds to Claude Desktop, Cursor, etc.) +smithery mcp add yusufkaraaslan/skill-seekers --client claude + +# Or configure manually โ€” users need skill-seekers installed: +pip install skill-seekers[mcp] +``` + +### Manual MCP Configuration + +For clients that use JSON config (Claude Desktop, Claude Code, Cursor): + +```json +{ + "mcpServers": { + "skill-seekers": { + "command": "python", + "args": ["-m", "skill_seekers.mcp.server_fastmcp"] + } + } +} +``` + +## Available Tools (40) + +| Category | Tools | Description | +|----------|-------|-------------| +| Config | 3 | Generate, list, validate scraping configs | +| Sync | 1 | Sync config URLs against live docs | +| Scraping | 11 | Scrape docs, GitHub, PDF, video, codebase, generic (10 types) | +| Packaging | 4 | Package, upload, enhance, install skills | +| Splitting | 2 | Split large configs, generate routers | +| Sources | 5 | Fetch, submit, manage config sources | +| Vector DB | 4 | Export to Weaviate, Chroma, FAISS, Qdrant | +| Workflows | 5 | List, get, create, update, delete workflows | +| Quality | 3 | Quality checks, estimate scope, resume operations | +| Agent Install | 2 | Install agent, extract test examples | + +## Maintenance + +- Update description/tags on major releases +- No code changes needed โ€” users always get the latest via `pip install` + +## Notes + +- Smithery CLI v4.7.0 removed the `--transport stdio` flag from the docs +- The CLI `publish` command only supports URL-based (external) publishing +- For local/stdio servers, use the web UI at smithery.ai/servers/new +- The namespace and server entity are already created; only the release needs to succeed diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..fd7762e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,111 @@ +# Skill Seekers Docker Compose +# Complete deployment with MCP server and vector databases + +version: '3.8' + +services: + # Main Skill Seekers CLI application + skill-seekers: + build: + context: . + dockerfile: Dockerfile + image: skill-seekers:latest + container_name: skill-seekers + environment: + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} + - GOOGLE_API_KEY=${GOOGLE_API_KEY} + - OPENAI_API_KEY=${OPENAI_API_KEY} + - GITHUB_TOKEN=${GITHUB_TOKEN} + volumes: + - ./data:/data + - ./configs:/configs:ro + - ./output:/output + networks: + - skill-seekers-net + command: ["skill-seekers", "--help"] + + # MCP Server (HTTP mode) + mcp-server: + build: + context: . + dockerfile: Dockerfile.mcp + image: skill-seekers-mcp:latest + container_name: skill-seekers-mcp + ports: + - "8765:8765" + environment: + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} + - GOOGLE_API_KEY=${GOOGLE_API_KEY} + - OPENAI_API_KEY=${OPENAI_API_KEY} + - GITHUB_TOKEN=${GITHUB_TOKEN} + - MCP_TRANSPORT=http + - MCP_PORT=8765 + volumes: + - ./data:/data + - ./configs:/configs:ro + - ./output:/output + networks: + - skill-seekers-net + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8765/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + + # Weaviate Vector Database + weaviate: + image: semitechnologies/weaviate:latest + container_name: weaviate + ports: + - "8080:8080" + environment: + QUERY_DEFAULTS_LIMIT: 25 + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' + PERSISTENCE_DATA_PATH: '/var/lib/weaviate' + DEFAULT_VECTORIZER_MODULE: 'none' + ENABLE_MODULES: '' + CLUSTER_HOSTNAME: 'node1' + volumes: + - weaviate-data:/var/lib/weaviate + networks: + - skill-seekers-net + restart: unless-stopped + + # Qdrant Vector Database + qdrant: + image: qdrant/qdrant:latest + container_name: qdrant + ports: + - "6333:6333" + - "6334:6334" + volumes: + - qdrant-data:/qdrant/storage + networks: + - skill-seekers-net + restart: unless-stopped + + # Chroma Vector Database + chroma: + image: ghcr.io/chroma-core/chroma:latest + container_name: chroma + ports: + - "8000:8000" + environment: + IS_PERSISTENT: 'TRUE' + PERSIST_DIRECTORY: '/chroma/data' + volumes: + - chroma-data:/chroma/data + networks: + - skill-seekers-net + restart: unless-stopped + +networks: + skill-seekers-net: + driver: bridge + +volumes: + weaviate-data: + qdrant-data: + chroma-data: diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md new file mode 100644 index 0000000..39b9dd5 --- /dev/null +++ b/docs/ARCHITECTURE.md @@ -0,0 +1,263 @@ +# Documentation Architecture + +> **How Skill Seekers documentation is organized (v3.6.0 - 18 source types)** + +--- + +## Philosophy + +Our documentation follows these principles: + +1. **Progressive Disclosure** - Start simple, add complexity as needed +2. **Task-Oriented** - Organized by what users want to do +3. **Single Source of Truth** - One authoritative reference per topic +4. **Version Current** - Always reflect the latest release + +--- + +## Directory Structure + +``` +docs/ +โ”œโ”€โ”€ README.md # Entry point - navigation hub +โ”œโ”€โ”€ ARCHITECTURE.md # This file +โ”‚ +โ”œโ”€โ”€ getting-started/ # New users (lowest cognitive load) +โ”‚ โ”œโ”€โ”€ 01-installation.md +โ”‚ โ”œโ”€โ”€ 02-quick-start.md +โ”‚ โ”œโ”€โ”€ 03-your-first-skill.md +โ”‚ โ””โ”€โ”€ 04-next-steps.md +โ”‚ +โ”œโ”€โ”€ user-guide/ # Common tasks (practical focus) +โ”‚ โ”œโ”€โ”€ 01-core-concepts.md +โ”‚ โ”œโ”€โ”€ 02-scraping.md +โ”‚ โ”œโ”€โ”€ 03-enhancement.md +โ”‚ โ”œโ”€โ”€ 04-packaging.md +โ”‚ โ”œโ”€โ”€ 05-workflows.md +โ”‚ โ””โ”€โ”€ 06-troubleshooting.md +โ”‚ +โ”œโ”€โ”€ reference/ # Technical details (comprehensive) +โ”‚ โ”œโ”€โ”€ CLI_REFERENCE.md +โ”‚ โ”œโ”€โ”€ MCP_REFERENCE.md +โ”‚ โ”œโ”€โ”€ CONFIG_FORMAT.md +โ”‚ โ””โ”€โ”€ ENVIRONMENT_VARIABLES.md +โ”‚ +โ””โ”€โ”€ advanced/ # Power users (specialized) + โ”œโ”€โ”€ mcp-server.md + โ”œโ”€โ”€ mcp-tools.md + โ”œโ”€โ”€ custom-workflows.md + โ””โ”€โ”€ multi-source.md +``` + +--- + +## Category Guidelines + +### Getting Started + +**Purpose:** Get new users to their first success quickly + +**Characteristics:** +- Minimal prerequisites +- Step-by-step instructions +- Copy-paste ready commands +- Screenshots/output examples + +**Files:** +- `01-installation.md` - Install the tool +- `02-quick-start.md` - 3 commands to first skill +- `03-your-first-skill.md` - Complete walkthrough +- `04-next-steps.md` - Where to go after first success + +--- + +### User Guide + +**Purpose:** Teach common tasks and concepts + +**Characteristics:** +- Task-oriented +- Practical examples +- Best practices +- Common patterns + +**Files:** +- `01-core-concepts.md` - How it works +- `02-scraping.md` - All 18 source types (docs, GitHub, PDF, video, Word, EPUB, Jupyter, HTML, OpenAPI, AsciiDoc, PPTX, RSS, man pages, Confluence, Notion, Slack/Discord, local codebase) +- `03-enhancement.md` - AI enhancement +- `04-packaging.md` - Platform export +- `05-workflows.md` - Workflow presets +- `06-troubleshooting.md` - Problem solving + +--- + +### Reference + +**Purpose:** Authoritative technical information + +**Characteristics:** +- Comprehensive +- Precise +- Organized for lookup +- Always accurate + +**Files:** +- `CLI_REFERENCE.md` - All CLI commands (including 17 source-type subcommands) +- `MCP_REFERENCE.md` - 40 MCP tools +- `CONFIG_FORMAT.md` - JSON schema (covers all 18 source types) +- `ENVIRONMENT_VARIABLES.md` - All env vars (including Confluence, Notion, Slack tokens) + +--- + +### Advanced + +**Purpose:** Specialized topics for power users + +**Characteristics:** +- Assumes basic knowledge +- Deep dives +- Complex scenarios +- Integration topics + +**Files:** +- `mcp-server.md` - MCP server setup +- `mcp-tools.md` - Advanced MCP usage +- `custom-workflows.md` - Creating workflows +- `multi-source.md` - Unified scraping + +--- + +## Naming Conventions + +### Files + +- **getting-started:** `01-topic.md` (numbered for order) +- **user-guide:** `01-topic.md` (numbered for order) +- **reference:** `TOPIC_REFERENCE.md` (uppercase, descriptive) +- **advanced:** `topic.md` (lowercase, specific) + +### Headers + +- H1: Title with version +- H2: Major sections +- H3: Subsections +- H4: Details + +Example: +```markdown +# Topic Guide + +> **Skill Seekers v3.6.0** + +## Major Section + +### Subsection + +#### Detail +``` + +--- + +## Cross-References + +Link to related docs using relative paths: + +```markdown + +See [Troubleshooting](06-troubleshooting.md) + + +See [CLI Reference](../reference/CLI_REFERENCE.md) + + +See [Contributing](../../CONTRIBUTING.md) +``` + +--- + +## Maintenance + +### Keeping Docs Current + +1. **Update with code changes** - Docs must match implementation +2. **Version in header** - Keep version current +3. **Last updated date** - Track freshness +4. **Deprecate old files** - Don't delete, redirect + +### Review Checklist + +Before committing docs: + +- [ ] Commands actually work (tested) +- [ ] No phantom commands documented +- [ ] Links work +- [ ] Version number correct +- [ ] Date updated + +--- + +## Adding New Documentation + +### New User Guide + +1. Add to `user-guide/` with next number +2. Update `docs/README.md` navigation +3. Add to table of contents +4. Link from related guides + +### New Reference + +1. Add to `reference/` with `_REFERENCE` suffix +2. Update `docs/README.md` navigation +3. Link from user guides +4. Add to troubleshooting if relevant + +### New Advanced Topic + +1. Add to `advanced/` with descriptive name +2. Update `docs/README.md` navigation +3. Link from appropriate user guide + +--- + +## Deprecation Strategy + +When content becomes outdated: + +1. **Don't delete immediately** - Breaks external links +2. **Add deprecation notice**: + ```markdown + > โš ๏ธ **DEPRECATED**: This document is outdated. + > See [New Guide](path/to/new.md) for current information. + ``` +3. **Move to archive** after 6 months: + ``` + docs/archive/legacy/ + ``` +4. **Update navigation** to remove deprecated links + +--- + +## Contributing + +### Doc Changes + +1. Edit relevant file +2. Test all commands +3. Update version/date +4. Submit PR + +### New Doc + +1. Choose appropriate category +2. Follow naming conventions +3. Add to README.md +4. Cross-link related docs + +--- + +## See Also + +- [Docs README](README.md) - Navigation hub +- [Contributing Guide](../CONTRIBUTING.md) - How to contribute +- [Repository README](../README.md) - Project overview diff --git a/docs/BEST_PRACTICES.md b/docs/BEST_PRACTICES.md new file mode 100644 index 0000000..bb6d2fa --- /dev/null +++ b/docs/BEST_PRACTICES.md @@ -0,0 +1,496 @@ +# Best Practices for High-Quality Skills + +**Target Audience:** Anyone creating Claude skills | Already scraped documentation? Make it better! + +**Time:** 5-10 minutes to review | Apply as you build + +**Result:** Skills that Claude understands better and activates more reliably + +--- + +## Quick Checklist + +Before uploading a skill, check: + +- [ ] SKILL.md has clear "When to Use" triggers +- [ ] At least 5 code examples included +- [ ] Prerequisites documented (if any) +- [ ] Troubleshooting section present +- [ ] Quality score 90+ (Grade A) + +```bash +# Check your skill quality +skill-seekers quality output/myskill/ +``` + +--- + +## 1. Structure Your SKILL.md Clearly + +### Use Consistent Sections + +Claude looks for specific sections to understand your skill: + +```markdown +# Skill Name + +## Description +Brief explanation of what this skill enables. + +## When to Use This Skill +- User asks about [specific topic] +- User needs help with [specific task] +- User mentions [keywords] + +## Prerequisites +What needs to be true before using this skill. + +## Quick Reference +Most common commands or patterns. + +## Detailed Guide +Step-by-step instructions with examples. + +## Troubleshooting +Common issues and solutions. +``` + +### Why This Matters + +Claude uses the "When to Use" section to decide if your skill matches the user's question. Vague triggers = skill doesn't activate. + +**Bad Example:** +```markdown +## When to Use This Skill +Use this skill for API-related questions. +``` + +**Good Example:** +```markdown +## When to Use This Skill +- User asks about Steam Inventory API methods +- User needs to implement item drops in a Steam game +- User wants to grant promotional items to players +- User mentions: SteamInventory, GetAllItems, AddPromoItems +``` + +--- + +## 2. Include Real Code Examples + +Skills with 5+ code examples work significantly better. Claude learns patterns from examples. + +### What Works + +**Include a variety:** +- Basic usage (getting started) +- Common patterns (day-to-day use) +- Advanced usage (edge cases) +- Error handling (when things go wrong) + +**Example from a good SKILL.md:** +```markdown +## Quick Reference + +### Get All Items +```cpp +SteamInventoryResult_t resultHandle; +bool success = SteamInventory()->GetAllItems(&resultHandle); +``` + +### Grant Promotional Items +```cpp +void CInventory::GrantPromoItems() +{ + SteamItemDef_t newItems[2]; + newItems[0] = 110; + newItems[1] = 111; + SteamInventory()->AddPromoItems(&s_GenerateRequestResult, newItems, 2); +} +``` + +### Handle Async Results +```cpp +void OnSteamInventoryResult(SteamInventoryResultReady_t *pResult) +{ + if (pResult->m_result == k_EResultOK) { + // Process items + } +} +``` +``` + +### What to Avoid + +**Generic placeholder text:** +```markdown +## Quick Reference + +*Quick reference patterns will be added as you use the skill.* +``` + +**Code without context:** +```markdown +`GetAllItems()` +``` + +--- + +## 3. Document Prerequisites + +Claude can check conditions before proceeding. This prevents errors mid-execution. + +### Good Pattern + +```markdown +## Before You Start + +Make sure you have: +- [ ] Python 3.10+ installed +- [ ] API key set in environment (`export API_KEY=...`) +- [ ] Network access to api.example.com + +### Quick Check +```bash +python3 --version # Should show 3.10+ +echo $API_KEY # Should not be empty +curl api.example.com/health # Should return 200 +``` +``` + +### Why It Matters + +Without prerequisites, Claude might: +1. Start a complex workflow +2. Fail halfway through +3. Leave the user with a broken state + +With prerequisites, Claude can: +1. Check conditions first +2. Report what's missing +3. Guide the user to fix issues before starting + +--- + +## 4. Add Troubleshooting Sections + +Real-world usage hits errors. Document the common ones. + +### Template + +```markdown +## Troubleshooting + +### "Connection refused" error +**Cause:** Service not running or firewall blocking + +**Solution:** +1. Check if the service is running: `systemctl status myservice` +2. Verify firewall settings: `sudo ufw status` +3. Test connectivity: `curl -v https://api.example.com` + +### "Permission denied" error +**Cause:** Insufficient file permissions + +**Solution:** +1. Check file permissions: `ls -la /path/to/file` +2. Fix permissions: `chmod 644 /path/to/file` +3. Verify ownership: `chown user:group /path/to/file` + +### "Rate limited" error +**Cause:** Too many API requests + +**Solution:** +1. Wait 60 seconds before retrying +2. Implement exponential backoff in your code +3. Consider caching responses +``` + +### What to Include + +- Error message (exact text users see) +- Cause (why it happens) +- Solution (step-by-step fix) +- Prevention (how to avoid it) + +--- + +## 5. Organize Reference Files + +The `references/` directory should be easy to navigate. + +### Good Structure + +``` +output/myskill/ +โ”œโ”€โ”€ SKILL.md # Main entry point +โ””โ”€โ”€ references/ + โ”œโ”€โ”€ index.md # Category overview + โ”œโ”€โ”€ getting_started.md # Installation, setup + โ”œโ”€โ”€ api_reference.md # API methods, classes + โ”œโ”€โ”€ guides.md # How-to tutorials + โ””โ”€โ”€ advanced.md # Complex scenarios +``` + +### Category Guidelines + +| Category | Contains | Keywords | +|----------|----------|----------| +| getting_started | Installation, setup, quickstart | intro, install, setup, quickstart | +| api_reference | Methods, classes, parameters | api, method, function, class, reference | +| guides | Step-by-step tutorials | guide, tutorial, how-to, example | +| concepts | Architecture, design patterns | concept, overview, architecture | +| advanced | Complex scenarios, internals | advanced, internal, extend | + +### Navigation Table in SKILL.md + +```markdown +## Navigation + +| Topic | File | Description | +|-------|------|-------------| +| Getting Started | references/getting_started.md | Installation and setup | +| API Reference | references/api_reference.md | Complete API documentation | +| Guides | references/guides.md | Step-by-step tutorials | +| Advanced | references/advanced.md | Complex scenarios | +``` + +--- + +## 6. Run Quality Checks + +Always check quality before uploading: + +```bash +# Check quality score +skill-seekers quality output/myskill/ + +# Expected output: +# โœ… Grade: A (Score: 95) +# โœ… No errors +# โš ๏ธ 1 warning: Consider adding more code examples +``` + +### Quality Targets + +| Grade | Score | Status | +|-------|-------|--------| +| A | 90-100 | Ready to upload | +| B | 80-89 | Good, minor improvements possible | +| C | 70-79 | Review warnings before uploading | +| D | 60-69 | Needs work | +| F | < 60 | Significant issues | + +### Common Issues + +**"Missing SKILL.md"** +- Run the scraper first +- Or create manually + +**"No code examples found"** +- Add code blocks to SKILL.md +- Run enhancement: `skill-seekers enhance output/myskill/` + +**"Generic description"** +- Rewrite "When to Use" section +- Add specific keywords and use cases + +--- + +## 7. Test Your Skill + +Before uploading, test with Claude: + +### Manual Testing + +1. Upload the skill to Claude +2. Ask a question your skill should answer +3. Check if Claude activates the skill +4. Verify the response uses skill content + +### Test Questions + +For a Steam Inventory skill: +``` +"How do I get all items in a player's Steam inventory?" +"What's the API call for granting promotional items?" +"Show me how to handle async inventory results" +``` + +### What to Look For + +**Good activation:** +- Claude references your skill +- Response includes examples from your SKILL.md +- Specific, accurate information + +**Poor activation:** +- Claude gives generic answer +- No skill reference +- Information doesn't match your docs + +--- + +## Real-World Example + +### Before Improvement + +```markdown +# React Skill + +## Description +React documentation. + +## When to Use +For React questions. + +## Quick Reference +See references. +``` + +**Quality Score:** 45 (Grade F) + +### After Improvement + +```markdown +# React Skill + +## Description +Complete React 18+ documentation including hooks, components, and best practices. + +## When to Use This Skill +- User asks about React hooks (useState, useEffect, useContext) +- User needs help with React component lifecycle +- User wants to implement React patterns (render props, HOCs, custom hooks) +- User mentions: React, JSX, virtual DOM, fiber, concurrent mode + +## Prerequisites +- Node.js 16+ for development +- Basic JavaScript/ES6 knowledge + +## Quick Reference + +### useState Hook +```jsx +const [count, setCount] = useState(0); +``` + +### useEffect Hook +```jsx +useEffect(() => { + document.title = `Count: ${count}`; +}, [count]); +``` + +### Custom Hook +```jsx +function useWindowSize() { + const [size, setSize] = useState({ width: 0, height: 0 }); + useEffect(() => { + const handleResize = () => { + setSize({ width: window.innerWidth, height: window.innerHeight }); + }; + window.addEventListener('resize', handleResize); + handleResize(); + return () => window.removeEventListener('resize', handleResize); + }, []); + return size; +} +``` + +## Troubleshooting + +### "Invalid hook call" +**Cause:** Hook called outside component or conditionally + +**Solution:** +1. Only call hooks at top level of function components +2. Don't call hooks inside loops or conditions +3. Check for multiple React copies: `npm ls react` +``` + +**Quality Score:** 94 (Grade A) + +--- + +## Summary + +| Practice | Why It Matters | Quick Check | +|----------|---------------|-------------| +| Clear structure | Claude knows where to look | Has all standard sections? | +| Code examples (5+) | Claude learns patterns | Count code blocks | +| Prerequisites | Prevents mid-task failures | Prerequisites section exists? | +| Troubleshooting | Handles real-world errors | Common errors documented? | +| Organized references | Easy navigation | Categories make sense? | +| Quality check | Catches issues early | Score 90+? | +| Testing | Confirms it works | Claude activates skill? | + +**Final command before upload:** +```bash +skill-seekers quality output/myskill/ +``` + +That's it! Follow these practices and your skills will work better with Claude. + +--- + +## 8. Tips for Specific Source Types + +Skill Seekers supports **18 source types**. Here are tips for getting the best results from each category: + +### Documentation (Web) +- Always test CSS selectors before large scrapes: `skill-seekers create --max-pages 3 --verbose` +- Use `--async` for large sites (2-3x faster) + +### GitHub Repos +- Use `--analysis-depth c3x` for deep analysis (patterns, tests, architecture) +- Set `GITHUB_TOKEN` to avoid rate limits + +### PDFs & Office Documents (PDF, Word, EPUB, PPTX) +- Use `--enable-ocr` for scanned PDFs +- For Word/PPTX, embedded images are extracted automatically; add `--extract-images` for PDFs +- EPUB works best with DRM-free files + +### Video +- Run `skill-seekers create --setup` first to install GPU-optimized dependencies +- YouTube and Vimeo URLs are auto-detected; local video files also work + +### Jupyter Notebooks +- Ensure notebooks are saved (unsaved cell outputs won't be captured) +- Both code cells and markdown cells are extracted + +### OpenAPI/Swagger Specs +- Both YAML and JSON specs are supported (OpenAPI 3.x and Swagger 2.0) +- Endpoints, schemas, and examples are parsed into structured API reference + +### AsciiDoc & Man Pages +- AsciiDoc requires `asciidoctor` (install via your package manager or gem) +- Man pages in sections `.1` through `.8` are supported + +### RSS/Atom Feeds +- Useful for converting blog posts and changelogs into skills +- Set `--max-items` to limit how many entries are extracted + +### Confluence & Notion +- API mode requires authentication tokens (see FAQ for setup) +- Export directory mode works offline with HTML/Markdown exports + +### Slack & Discord +- Use official export tools (Slack Workspace Export, DiscordChatExporter) +- Specify `--platform slack` or `--platform discord` explicitly + +--- + +## See Also + +- [Enhancement Guide](features/ENHANCEMENT.md) - AI-powered SKILL.md improvement +- [Upload Guide](guides/UPLOAD_GUIDE.md) - How to upload skills to Claude +- [CLI Reference](reference/CLI_REFERENCE.md) - Complete command reference + +--- + +## Contributing + +This guide was contributed by the [AI Writing Guide](https://github.com/jmagly/ai-writing-guide) project, which uses Skill Seekers for documentation-to-skill conversion. Best practices here are informed by research on production-grade agentic workflows. + +Found an issue or want to improve this guide? PRs welcome! diff --git a/docs/BUG_AUDIT.md b/docs/BUG_AUDIT.md new file mode 100644 index 0000000..1a4cf65 --- /dev/null +++ b/docs/BUG_AUDIT.md @@ -0,0 +1,704 @@ +# Skill Seekers โ€” Bug Audit + +> **Addendum (2026-06-11):** Follow-up review during the Grand Unification work +> (see [UNIFICATION_PLAN.md](UNIFICATION_PLAN.md)) found that two fixes claimed +> below were no-ops as shipped and have since been fixed properly: +> 1. **MCP-03 (`dry_run` for unified configs)** โ€” the injected flag never +> reached `UnifiedScraper`; it is now genuinely honored (constructor param, +> preview-and-return, no directory creation) for both CLI and MCP paths. +> 2. **ENH timeout fallback** โ€” the raw-config fallbacks for enhancement +> settings (incl. timeout/"unlimited") were dead code because +> `ExecutionContext.get()` never raises; the gate now uses +> `ExecutionContext.is_initialized()`. +> +> The findings below are preserved unchanged as a historical record. + +**Date:** 2026-06-10 +**Scope:** Full audit of `src/skill_seekers/` (~80K LOC): scan/config pipeline, CLI core & dispatch, platform adaptors, MCP server & tools, codebase-analysis engines (AST/pattern/dependency/guide/router), document & media & remote scrapers, enhancement + unified builder, argument/parser system, and infra (embedding, sync, storage, benchmark, presets). + +**Method:** Two-pass. Pass 1 โ€” 10 parallel review agents, one per subsystem, surfaced candidate defects. Pass 2 โ€” a second set of agents (plus manual spot-checks) re-read the actual code behind **every** finding, checked reachability/trigger, marked each `Confirmed` / `Corrected` / `False-Positive`, deepened it, and hunted for additional related bugs. Only `Confirmed` and `Corrected` findings appear in the body; dismissed items are recorded in Appendix A for transparency. + +**Severity rubric** +- **Critical** โ€” silent data loss/corruption of the primary output, or a core feature completely (and silently) non-functional. +- **High** โ€” wrong result / broken feature under common conditions, or a crash on realistic input. +- **Medium** โ€” wrong behaviour under specific conditions, misleading output, or latent correctness hazard with a plausible trigger. +- **Low** โ€” cosmetic, rare trigger, dead code, type-annotation, or defensive gap. + +**No security/RCE findings.** Subprocess calls use argv arrays (no `shell=True`); path-traversal guards in `config_publisher`, `marketplace_publisher`, and `workflow_tools` were verified present and correct. + +--- + +## Summary counts + +| Severity | Count | +|----------|-------| +| Critical | 5 | +| High | 18 | +| Medium | 45 | +| Low | 67 | +| **Total confirmed/corrected** | **135** | +| of which newly found in the verification pass (โ˜…) | 33 | +| Dismissed (false-positive / no-impact) | 7 (Appendix A) | + +IDs are subsystem-prefixed: `SCAN` (scan+config), `CLI` (core/dispatch), `ADP` (adaptors), `MCP`, `CBA` (codebase-analysis: AST/pattern/dependency), `CBB` (codebase-analysis: example/guide/router), `DOC` (document scrapers), `MED` (media/structured/remote scrapers), `ENH` (enhancement + unified builder), `INF` (args/parsers + infra). `โ˜…` marks bugs newly discovered during the verification pass. + +--- + +## Resolution status (this PR) + +Worked through the audit Critical โ†’ Low. Every Critical and High finding is fixed, and the entire Medium tier is fixed except one deferred item. Each fix carries a regression test where behavioral; the rest are covered by existing suites. Lint + format are clean throughout. + +| Tier | Total | Fixed | Remaining | +|------|-------|-------|-----------| +| Critical | 5 | 5 | 0 | +| High | 18 | 18 | 0 | +| Medium | 45* | 44 | 1 (DOC-04) | +| Low | 67* | 0 | 67 (not in scope for this PR) | + +\* Medium/Low counts include sub-findings; the body tables enumerate each fixed ID. + +**Delivered as 8 commits:** +1. Critical + High behavioral bugs (each with a regression test). +2. `--output` honored for every source type + config-file precedence (CLI-01/02, CFG-01/02). +3. `ExecutionContext` made the real single source of truth (RT-01..11): ~12 inert flags wired, 4 bypasses fixed, dead `rag` section removed, `--languages`/`--dry-run` wired. +4. Medium batch 1 โ€” codebase-analysis, enhancement, infra, scan/config, adaptors. +5. Medium batch 2 โ€” guides + document/remote scrapers. +6. DOC-07/MED-04 โ€” SKILL.md nav links fixed across all 7 scrapers. +7. ADP-01 โ€” `--streaming` wired into the 8 RAG/vector adaptors (was dead for every target). +8. CLI-04 โ€” all 15 commands migrated off `_reconstruct_argv` to namespace dispatch (also fixed a pre-existing live bug: `skill-seekers workflows โ€ฆ` was broken). + +**Remaining / out of scope:** +- **DOC-04** (Medium, deferred): `DEFAULT_MAX_PAGES = -1` means a config without `max_pages` crawls unbounded. The fix (a finite default) is a **user-visible behavior change** for existing configs, so it's left for a maintainer product decision rather than changed unilaterally. +- **Low tier (67):** cosmetic / rare-trigger / dead-code / type-annotation items โ€” catalogued in the body, not addressed in this PR. +- **`tests/test_bootstrap_skill*.py`** were hardened (out of band) to guard a fork-bomb: the bootstrap/`create` subprocess tests spawn real `skill-seekers create` runs (and LLM enhance agents). Because of this, the *full* `pytest tests/` is unsafe to run repeatedly; verification used targeted per-module suites + `-m "not slow and not integration"`. + +--- + +## Independent re-review of this PR โ€” 2026-06-10 (second pass) + +After the fixes above, every commit in this PR was re-reviewed independently (one reviewer per commit) to verify the fixes are correct, complete, and don't introduce regressions โ€” i.e. not taking the audit's own self-grade at face value. The reviewers confirmed the large majority of fixes are correct, and surfaced the following issues, **all now resolved in this PR** (each with a regression test unless noted): + +### Regressions this PR had introduced (now fixed) + +| ID | Sev | Fix | +|----|-----|-----| +| **ENH-03-bis** | Blocker | The ENH-03 retry path was mis-indented: when the exit-75 retry failed, `new_mtime` was unbound โ†’ `UnboundLocalError`. Re-nested under the returncode/exists guards. Tests: `test_enhance_skill_local.py::TestHeadlessSuccessGate::{test_failed_retry_returns_false_without_crashing,test_successful_retry_counts_as_success}`. | +| **R1 (CLI-04-bis)** | High | `skill-seekers estimate ` crawled **unlimited** instead of capping at 1000 โ€” the unified `estimate_parser`'s `--max-discovery` had no default (`None`), which `estimate_pages()` treats as unlimited. Added `default=DEFAULT_MAX_DISCOVERY`. Test: `test_estimate_pages.py::TestEstimateParserDefault`. | +| **R2 (CBA-14-bis)** | Medium | The JS method regex required `)` immediately before `{`, silently dropping **TypeScript** class methods with return-type annotations (`greet(): string {`). Made the return type optional in the pattern. Test: `test_code_analyzer.py::...::test_typescript_class_methods_with_return_types_not_dropped`. | +| **R3 (CLI-02-bis)** | Medium | `github_scraper._save_data()` did `os.makedirs("output")` but wrote to a `--output`-derived `data_file`, raising `FileNotFoundError` for `create owner/repo --output `. Now creates `dirname(data_file)`. Test: `test_github_scraper.py::...::test_save_data_creates_nested_output_parent`. | + +### Audit fixes that were incomplete / over-claimed (now corrected) + +| ID | Sev | Resolution | +|----|-----|-----------| +| **I1 (MCP-03)** | High | `skip_scrape` was a no-op (set an attribute no converter read). Now honored at the `SkillConverter.run()` chokepoint for single-source paths and by `UnifiedScraper.run()` for multi-source configs, which reloads each configured source from `.skillseeker-cache`/cached extraction files before conflict detection and build. Tests: `test_skill_converter.py::TestSkipScrape`, `test_unified_scraper_orchestration.py::TestUnifiedSkipScrape`, `test_unified_mcp_integration.py::test_mcp_scrape_docs_unified_skip_scrape_sets_attribute_without_warning`. | +| **I2 (RT-06)** | Medium | Config-file **inline** `stages` never ran โ€” `_build_inline_engine` re-read `args.enhance_stage` (None for config-only) instead of the resolved list. Now takes the resolved `inline_stages`. Test: `test_workflow_runner.py::...::test_inline_stages_from_config_execute`. | +| **I3 (ENH-06)** | Low | The OpenAI branch of `_call_api` still hardcoded `timeout=120`; now forwards the caller's `request_timeout`. Test: `test_agent_client.py::...::test_openai_forwards_caller_timeout`. | +| **I4 (RT-04)** | Low | RT-04 claimed `--timeout` is wired on `create`, but the flag isn't registered there, so the mapping is inert on that path (it only fires for config dicts carrying `timeout`). **Claim corrected here** โ€” no CLI flag added (avoids new surface area for an over-claim). | + +### Low-tier / pre-existing issues fixed opportunistically + +| ID | Area | Fix | +|----|------|-----| +| **CBA-09** | Kotlin | `is_suspend` used a substring test, mis-flagging a function *named* `suspendCoroutine`. Now word-boundary (`\bsuspend\b`). Test in `test_kotlin_support.py`. | +| **P1** | chat | Discord 429 retry was unbounded (hang risk) โ€” the Slack path in the same commit was bounded; Discord now caps consecutive 429s at 3 and stops with partial data. | +| **P2** | doc | `_normalize_url` stripped `?ref=`, which is content-bearing on some sites (GitHub `?ref=branch`, SPA routers) โ†’ could collapse distinct pages. `ref` removed from the strip set (`ref_src` kept). Tests in `test_scraper_features.py::TestNormalizeUrl`. | +| **P3** | doc | `--dry-run` supplied via config still created empty output dirs (the ctor used the param, not `self.dry_run`). Now uses `self.dry_run`/`self.resume`. | +| **P5** | adaptors | `claude.py` enhancement did rename-then-write, leaving only `SKILL.md.backup` if the write failed. Now writes to a temp file, copies the backup, then `os.replace()` (atomic). | +| **P6** | mcp | `submit_config` dedup used GitHub's fuzzy title search (`[CONFIG] react` matched `react-native`). Added an exact-title guard. | +| **P8** | scrapers | asciidoc/jupyter `_generate_index` still had inline filename logic (drift risk vs the nav helper). Both index generators now route through `_ref_filename`, so index links and reference files share one source of truth. | +| **P9** | config | `config status` omitted the Moonshot key row; added it. | + +### Deferred (genuine larger work โ€” not safe to do inline; tracked here) + +- **Streaming adaptor format (ADP-01 follow-up):** all 8 RAG/vector adaptors emit a *generic* streamed format rather than each platform's native shape (only the unregistered example classes override the converter). `--streaming` works; per-platform fidelity is a follow-up. +- **Unified multi-source `skip_scrape` (I1 remainder):** fixed in #405 by rebuilding `scraped_data` from cached per-source files before the unified build, and by forwarding `--skip-scrape` through the config-source `create` path. +- **Kotlin brace-depth / `is_suspend` corpus robustness (CBA-08, CBA-11):** the brace-depth nesting check is fooled by braces inside strings/comments; a robust fix needs a string/comment-aware scan (shared with the still-open CBA-11). +### Low-tier disposition (2026-06-11) + +After fixing the ~12 impactful Low items above, the remaining Low tier was triaged +and batch-fixed. Issues #405โ€“#408 track the 4 larger deferred items. + +**Fixed in this PR (data-loss/crash + minor correctness):** +DOC-11, DOC-13, DOC-14, DOC-15, DOC-17, MED-06, MED-07, MED-08, MED-11, MED-12, +MED-14, MED-17, MED-18, ENH-13, ENH-14, ENH-15, ENH-16, ENH-17, ADP-03, ADP-04, +ADP-05, ADP-06, MCP-11, MCP-15, MCP-16, MCP-17, SCAN-05, SCAN-06, SCAN-07, CLI-08, +CLI-09, INF-06, CBA-12, CBA-16, CBB-09, CBB-10, CBB-11, CBB-14, CBB-15, CBB-16 +(plus the re-review R/I/P items). MED-16 was already fixed in batch 2. + +**Intentionally NOT changed (with reason):** +- **Product decisions (left as-is, like DOC-04):** MCP-10 (sync caps at 500 โ€” a + sensible safety bound), CLI-07 (a failed *optional* enhancement returning a + non-zero exit from `create` is a behavior change โ€” needs a maintainer call). +- **Cosmetic / doc-only (dropped):** ADP-07 (docstring), CLI-05 (a misleading + success-log path), MED-13 (type-annotation lie), MCP-08 (param typing), MED-09, + MED-10 (already corrected/dead per Appendix). +- **Still deferred (genuinely larger work):** MED-15 (OpenAPI external/multi-file + `$ref` bundling โ€” needs a pre-bundle pass; the MED-07 *cycle* guard is fixed), + MCP-09 (a truly structured MCP error channel โ€” the text already carries โœ…/โŒ + markers). + +- The original **DOC-04** decision stands (issue #408): keep `-1` (unbounded). + +--- + +## Fix log โ€” 2026-06-10 + +All 5 Criticals + all 18 High findings fixed with regression tests (lint/format clean; affected suites green). A few mechanical/wide fixes (CLI-01, CLI-02, CBB-02/03/12, MCP-02..05) are covered by the broad suite rather than dedicated new tests. + +### Critical + +| ID | Status | Fix summary | +|----|--------|-------------| +| ENH-01 | โœ… Fixed | `enhance_skill.py`, `agent_client.py`, `adaptors/claude.py` refuse to save/return a `max_tokens`-truncated (or empty) response; unified-scraper path covered via `agent_client`. | +| SCAN-01 | โœ… Fixed | Schema hint `code_analysis_depth` `"standard"` โ†’ `"deep"`; pinned to the validator by a regression test. | +| CBA-13 | โœ… Fixed | GDScript class dict key `"bases"` โ†’ `"base_classes"` (+ `docstring`, `_offset_to_line`). | +| CBB-01 | โœ… Fixed | `guide_enhancer._enhance_via_local` now calls the real `_call_ai`. | +| MCP-01 | โœ… Fixed | `config_publisher` clone/pull/push authenticate via an explicit token URL (origin stays tokenless). | +| โ˜…MCP-12 | โœ… Fixed | `get_source` `KeyError` translated to a helpful `ValueError`. | +| โ˜…MCP-13 | โœ… Fixed | cached-repo re-pull uses the token URL (was tokenless origin). | +| โ˜…MCP-14 | โœ… Fixed | feature branch restored in a `finally` so the cache can't be stranded. | +| MCP-07 | โœ… Fixed | commit `action` uses pre-copy existence (`add` vs `update`). | +| ADP-06 | โœ… Fixed | `adaptors/claude.py` validates non-empty before renaming the original (folded into the ENH-01 fix). | + +### High + +| ID | Status | Fix summary | +|----|--------|-------------| +| SCAN-02 | โœ… Fixed | Guard the non-numeric `confidence` parse so one bad AI entry can't crash the scan. | +| CLI-01 | โœ… Fixed | `_build_config` reads the negative dests (`not no_issues`/`no_changelog`/`no_releases`); `--no-*` opt-outs now work. | +| CLI-02 | โœ… Fixed | `--output` now honored across the whole single-source create path: base `SkillConverter` + all 16 overriding converters read `config["output_dir"]` (incl. 5 type-annotated `skill_dir: str = โ€ฆ` that a first pass missed), and `data_file`/`data_dir`/`checkpoint` are derived from `skill_dir` so intermediate artifacts follow `--output` too (behavior-preserving fallback to `output/`). `_build_config` passes `output_dir` for every branch. The unified/`config` multi-source path also honors `--output`: `unified_scraper`/`unified_skill_builder` derive the final skill from `config["output_dir"]`, and the docs/github sub-converters now write **straight into the `.skillseeker-cache/` cache** (their sub-config gets `output_dir`), removing the `output/{subname}` hardcodes and the move-to-cache dance. (`pdf_extractor_poc.py` keeps an `output/` *default* but already accepts `image_dir` as a constructor arg โ€” standalone PoC, not the config flow.) | +| CBA-01 | โœ… Fixed | Singleton precedence: `(has_instance_method or has_init_control) and confidence >= 0.5`. | +| CBA-02 | โœ… Fixed | `total_emissions` iterates `.values()` (was `.items()` โ†’ always 2ร—#signals). | +| CBA-03 | โœ… Fixed | JS/TS class body delimited by the matching brace (brace-count), not the first `}`. | +| CBA-04 | โœ… Fixed | New `_base_root`/`_matches_base` normalize generic/qualified bases so subclass detection matches. | +| CBB-02 | โœ… Fixed | Removed the positional verification overwrite that misattributed checks to steps. | +| CBB-03 | โœ… Fixed | `_generate_examples_from_github` works on a copy + index set instead of mutating shared insights. | +| CBB-12 | โœ… Fixed | `dependencies=list(imports)` โ€” per-example copy (no shared mutable list). | +| ENH-02 | โœ… Fixed | `SKILL_SEEKER_PROVIDER` override so a Moonshot/Kimi `sk-` key isn't misrouted to OpenAI. | +| ENH-03 | โœ… Fixed | Headless success gates on mtime advance, not file growth (matches background/daemon). | +| ENH-04 | โœ… Fixed | Kimi parser uses `re.DOTALL` + record-boundary anchor (multi-line / apostrophe safe). | +| ENH-05 | โœ… Fixed | Only read the response file when `output_file` was requested; dropped the stray-`.json` glob. | +| MCP-02 | โœ… Fixed | Package-path regex matches `Output:` / `Package created:` (the strings actually printed). | +| MCP-03 | โœ… Fixed | `scrape_docs` honors `skip_scrape` and applies `dry_run` for unified configs too. | +| MCP-04 | โœ… Fixed | `submit_config` searches for an existing open issue before creating (idempotent). | +| MCP-05 | โœ… Fixed | `install_skill` detects failure by the specific `_run_converter` markers, not any `โŒ`. | + +Regression tests added โ€” Critical: `test_agent_client.py::TestCallApiTruncation`, `test_scan_command.py::TestGenerateSchemaHintDepth`, `test_code_analyzer.py::TestGDScriptParsing`, `test_guide_enhancer.py::TestEnhanceViaLocalRegression`, `test_config_publisher.py` (re-pull + KeyError + add/update). High: `test_agent_client.py` (`TestProviderOverride`, `TestKimiOutputParsing`, `TestCallLocalStrayJson`), `test_scan_command.py` (non-numeric confidence), `test_enhance_skill_local.py::TestHeadlessSuccessGate`, `test_pattern_recognizer.py::TestBaseClassMatching`, `test_code_analyzer.py` (JS multi-method), `test_signal_flow_analyzer.py`. (CBB-02/03/12, CLI-01, MCP-02..05 are covered by the broad suite rather than dedicated new tests.) + +### Config-override follow-up (found while auditing "what else is overridden by hardcoded values") + +| ID | Status | Fix summary | +|----|--------|-------------| +| CFG-01 | โœ… Fixed | **Web `--config` `selectors`/`url_patterns` silently ignored.** `_merge_json_config` only fills missing keys, but `_build_config` pre-set the hardcoded `selectors`/`url_patterns` before merging โ†’ the user's config-file values were shadowed. Now applied via `setdefault` **after** the merge, so the file wins. (Verified `doc_scraper` actually reads `config["selectors"]`/`url_patterns`.) | +| CFG-02 | โœ… Fixed | **Web config-file `workers`/`async_mode`/`browser_wait_until`/`browser_extra_wait` dropped.** `ExecutionContext._load_config_file` copied only `max_pages`/`rate_limit`/`browser`; now copies all scraping-tuning keys. Test: `test_execution_context.py::...test_simple_web_config_format`. | +| CFG-03 | โ„น๏ธ Noted | `--config` is only merged for `web`/`github` source types; for `pdf`/`video`/etc. the documented path is the unified `sources` config (which reads per-source keys correctly). Low impact; left as a design note. | + +### Runtime-config (ExecutionContext) audit โ€” is every field wired through argsโ†’contextโ†’consumer, with no bypasses? + +The singleton claims "all components read from this context instead of parsing their own argv." Audit found it was **not** the single source of truth: ~12 registered flags never reached the context, several consumers bypassed it, and two sections were dead. All fixed (regression tests in `test_execution_context.py`). + +| ID | Status | Fix summary | +|----|--------|-------------| +| RT-01 | โœ… Fixed | **5 analysis `--skip-*` flags inert.** `--skip-config-patterns`/`--skip-api-reference`/`--skip-dependency-graph`/`--skip-docs`/`--no-comments` were never mapped in `_args_to_data`, yet `create_command` reads those exact `ctx.analysis.*` fields โ†’ the skipped steps ran anyway. Now mapped. | +| RT-02 | โœ… Fixed | **`--skip-config` orphan dest** now aliased to `skip_config_patterns`. | +| RT-03 | โœ… Fixed | **`--dry-run` dead on `create`.** `ctx.output.dry_run` was set but never put in the converter config; `_build_config` now passes `"dry_run"`, and `doc_scraper` reads `config["dry_run"]` (was only honoring the unused ctor param). | +| RT-04 | โœ… Fixed | **`--timeout` not wired on `create`** โ†’ mapped to `ctx.enhancement.timeout` in `_args_to_data`. | +| RT-05 | โœ… Fixed | **`get_agent_client()` dropped `api_key`** โ†’ a CLI `--api-key` was lost and AgentClient env-detected only. Now forwarded. | +| RT-06 | โœ… Fixed | **Config-file `workflows`/`stages`/`workflow_vars` never ran** โ€” `run_workflows`/`collect_workflow_vars` read only argv. Now fall back to `ctx.enhancement.*` so config-declared workflows execute. | +| RT-07 | โœ… Fixed | **Confluence/Notion `max_pages` bypass** โ€” read `getattr(self.args, โ€ฆ)` (dropping config-file `max_pages`); now read `ctx.scraping.max_pages`. | +| RT-08 | โœ… Fixed | **`unified_scraper` dropped `ctx.enhancement.timeout` and `api_key`** (re-read raw config / built `AgentClient(mode="api")`); now use the context. | +| RT-09 | โœ… Fixed | **`scraping.languages` was a dead field with a name collision** (default `["en"]`, read nowhere; `--languages` is a *code*-filter the local converter read from argv, which would have broken if fed `["en"]`). Repurposed the field as the code-language filter (`default=None`), wired `--languages` into it, and `create_command` now reads `ctx.scraping.languages`. | +| RT-10 | โœ… Fixed (removed) | **`rag.*` section was write-only/dead.** Chunking lives in the separate `package` command, which parses its own (richer) args and runs as its own process โ€” the create/scrape context never chunks and `ctx.rag` was read nowhere. Removed `RAGSettings` from the context. As cleanup, `common.py` now sources `DEFAULT_CHUNK_TOKENS`/`_OVERLAP` from `defaults.json` (was hardcoded `512`/`50`), so `defaults.json`'s `rag` block is the single source of truth for package chunking. *(Deviation: the earlier plan said "wire rag via package"; on inspection that's unsound โ€” `create` and `package` are separate processes, so a create-time context can't reach package. Removal is the honest fix.)* | +| RT-11 | โœ… Kept (not a bug) | **`source.*`** is read nowhere in production (consumers use `create_command.self.source_info`), but it is **tested public API** and legitimately belongs in an execution context. Retained โ€” removing tested API to chase a cosmetic dual-representation would be over-reach. | + +### Medium tier โ€” batch 1 (codebase-analysis + enhancement + infra + scan/config + adaptors) + +All โœ… Fixed; verified by existing suites + new regression tests where behavioral. + +| ID | Fix summary | +|----|-------------| +| CBA-05 / CBA-06 | Parenthesized the `A and B or C` precedence so the `"protocol"`/`"event"` clause no longer boosts *every* pattern type. | +| CBA-07 | `_resolve_import` converts dotted module names โ†’ slash paths + suffix-matches `file_nodes`, so the dependency graph has edges (cycle detection was empty for all dotted-import languages). | +| CBA-08 | Kotlin top-level-fn detection uses brace-depth, not the brittle `indent > 4`. | +| CBA-09 | Kotlin `is_suspend` reads `match.group(0)` (the matched modifiers), not a fixed look-behind window. | +| CBA-10 | `gd_resource` regex ends with `\s*[\]\s]` so `script_class` is captured on compact headers. | +| CBA-14 | JS method extractor requires a trailing `{` (declarations only) + a fuller keyword blocklist, so call-sites like `setTimeout(...)` aren't counted as methods (unmasked by the CBA-03 brace fix). | +| CBA-15 | GDScript signal doc comment = nearest preceding non-blank line (was always `None` for col-0/indented signals). | +| ENH-06 | `_call_api` threads the caller's `timeout` (was hardcoded 120s, killing large prompts). | +| ENH-07 | `scrape_all_sources` reports the count of items scraped (was the bucket count, always ~17) and returns it. | +| ENH-08 | `run()` aborts with non-zero when every source failed (was building an empty skill + exit 0). | +| ENH-09 | "Official Documentation" URL filters `type == "documentation"` (was `sources[0]`). | +| ENH-10 | `DEBUG:` synthesis logs downgraded to `logger.debug`. | +| ENH-11 | Gemini API honors `max_output_tokens`/`timeout` and rejects a truncated reply. | +| ENH-12 | Moonshot/Kimi added to the auto-detect priority in `enhance_command._pick_mode` + `enhance_skill_local._detect_api_target` (Moonshot-only users were dropped to LOCAL). | +| SCAN-03 | `get_api_key`/`set_api_key` include `moonshot` โ†’ `MOONSHOT_API_KEY`. | +| SCAN-04 | `scan --dry-run` resolves with `auto_fetch=False` (no network, no stray `./configs/` write). | +| MCP-06 | `list_configs` falls back to `sources[].base_url` for unified configs. | +| ADP-02 | `chroma`/`pinecone` split `except ImportError` from `except Exception` (don't misreport a broken-but-installed package as "not installed"). | +| CLI-03 | `CreateCommand.execute` calls `ExecutionContext.reset()` first so a 2nd in-process create rebuilds the context. | +| INF-01 | Embedding cache key includes `normalize` (`{model}:{int(normalize)}:{text}`); threaded through `server.py`. | +| INF-02 | `cleanup_old` strips the full `_YYYYMMDD_HHMMSS` timestamp via regex (retention was per-name-per-day). | +| INF-03 | `memory()` samples RSS on a background thread to capture the true peak. | +| INF-04 | `compare()` guards division by zero on instant ops. | +| INF-05 | `check_header_changes` returns `True` when the server provides no `Last-Modified`/`ETag` validators. | + +### Medium tier โ€” batch 2 (guides + document scrapers + remote scrapers) + +All โœ… Fixed; verified by the guide/scraper suites + new regression tests where behavioral. + +| ID | Fix summary | +|----|-------------| +| CBB-04 | `_extract_steps_python` descends one level into the test-function wrapper (else module body) instead of `ast.walk`, which flattened nested control flow out of context. | +| CBB-05 | `ai_enhancer` batch analysis maps back by an echoed `index` (was positional โ†’ a dropped/reordered entry shifted every later example's analysis). | +| CBB-06 | `_is_test_class` matches a base that *is* a `TestCase` (bare/`*TestCase`), not the `"Test" in base.id` substring that matched `LatestConfig`/`TestableMixin`. | +| CBB-07 | Index TOC sorts by a difficulty rank map (was alphabetical โ†’ advanced/beginner/intermediate). | +| CBB-08 | c3x failure returns `analysis_type="c3x_failed"` (distinct from empty) and the temp dir is removed in `finally` (was leaked every run). | +| CBB-13 | `guide_enhancer` step-enhancements map by the model's explicit `step_index`; positional fallback only when none are indexed (extracted to `_parse_step_enhancements`). | +| DOC-02 | `smart_categorize` assigns to the highest-scoring category (was the first over threshold โ†’ config-order dependent). | +| DOC-03 | Link extraction strips tracking params (`utm_*`/`fbclid`/โ€ฆ) + sorts the query before dedup, so tracking variants don't re-crawl the same page (preserves `?lang=`). | +| DOC-05 | PDF cross-page code merge requires a real continuation token / unbalanced bracket / block-opener colon (was `any([...])` โ‰ˆ always true) and keeps both pages' `code_blocks_count` consistent. | +| DOC-06 | Async `--dry-run` caps the preview at 20 even for unlimited configs (matches sync; was previewing the whole site). | +| MED-01 | `github_fetcher` follows `Link: rel="next"` pagination (was a single โ‰ค100 page). Regression test added. | +| MED-02 | Slack: per-channel try/except so one channel can't abort all; `conversations_history` retries on 429 with `Retry-After`. | +| MED-03 | Discord: `ClientTimeout(30)`, 429 `Retry-After` retry, and a guarded `before` cursor (`.get("id")`). | + +### Medium tier โ€” batch 3 (systemic nav-link fix) + +| ID | Status | Fix summary | +|----|--------|-------------| +| DOC-07 + MED-04 | โœ… Fixed | **Broken SKILL.md nav links across all 7 scrapers** (pdf/html/word/epub/jupyter/asciidoc/pptx). Each scraper now routes its SKILL.md nav, `index.md`, and reference-file writer through ONE filename helper (`_reference_filename`, or the pre-existing `_ref_filename` for asciidoc/jupyter), so nav links match the actual range/basename filenames instead of pointing at nonexistent `sanitize(title).md`. Regression test: `test_pdf_scraper.py::...test_reference_filename_matches_nav_and_index`. | +| ADP-01 | โœ… Fixed | **`--streaming` was dead for every target.** `StreamingAdaptorMixin` was never inherited, so `hasattr(adaptor, "package_streaming")` was always False. Fixed the mixin's fragile `sys.path` import (now `from skill_seekers.cli.streaming_ingest import โ€ฆ`) and made all 8 RAG/vector adaptors (langchain, llama-index, chroma, haystack, weaviate, qdrant, faiss, pinecone) inherit it. `--streaming` now produces a real streamed package; non-streaming targets (claude/markdown) still fall back with the announced message. Regression + end-to-end test in `test_adaptors/test_langchain_adaptor.py`. | + +| CLI-04 | โœ… Fixed | **`_reconstruct_argv` argv round-trip removed; all 15 legacy commands migrated to namespace dispatch.** Each command's `main(args=None)` now accepts the central parsed namespace (re-parses only when invoked standalone via the `skill-seekers-` entry points). The dispatcher calls `module.main(args=args)` directly and `_reconstruct_argv` is deleted. Fixed the drift the round-trip had been masking: aligned 4 central positional dests to the modules (`skill_directory`โ†’`skill_dir`, `input_file`โ†’`input` via `metavar`), added `--welcome` to the config parser, and backfill module-parser defaults for options the central parser doesn't expose. **This also fixed a pre-existing live bug: `skill-seekers workflows โ€ฆ` was broken** (`unrecognized arguments: --workflows-action`) and now works. Verified: 345 command-suite tests + all 16 commands dispatch cleanly. | + +Deferred (Medium): +- **DOC-04** โ€” `DEFAULT_MAX_PAGES = -1` (unbounded default crawl). Changing the default to finite is a user-visible behavior change; left for an explicit decision (not selected for fixing). + +> **Test-harness note:** the *full* `pytest tests/` run is unsafe to execute repeatedly โ€” `@pytest.mark.slow` tests like `test_bootstrap_skill::test_bootstrap_script_runs` and the `test_create_integration_basic` subprocess tests invoke the real `create` pipeline, which spawns live LLM agents (a fork-bomb). Verify with targeted per-module test files and `-m "not slow and not integration"`. + +--- + +## Triage index โ€” Critical & High + +| ID | Sev | Title | File | +|----|-----|-------|------| +| ENH-01 | Critical | Truncated SKILL.md silently overwrites the original | `enhance_skill.py` / `agent_client.py` / `adaptors/claude.py` | +| SCAN-01 | Critical | Scan AI github-config generation always rejected by validator | `scan_command.py:426` | +| CBB-01 | Critical | LOCAL-mode guide enhancement calls a non-existent method (silent no-op) | `guide_enhancer.py:307` | +| MCP-01 | Critical | `push_config` strips its own token โ†’ broken for private repos | `mcp/config_publisher.py:170,210` | +| CBA-13 โ˜… | Critical | GDScript class dicts use `"bases"`; consumer reads `"base_classes"` | `code_analyzer.py:1986` | +| SCAN-02 | High | Non-numeric AI `confidence` crashes the whole scan | `scan_command.py:394` | +| CLI-01 | High | `--no-issues/--no-changelog/--no-releases` are dead on `create` | `create_command.py:270` | +| CLI-02 | High | `--output` ignored for all non-local sources; enhancement targets wrong dir | `create_command.py:215` | +| CBA-01 | High | Singleton precedence bug bypasses the confidence gate | `pattern_recognizer.py:453` | +| CBA-02 | High | `total_emissions` iterates `.items()` โ†’ always 2ร—#signals | `signal_flow_analyzer.py:172` | +| CBA-03 | High | JS/TS class body truncated at first `}` โ†’ later methods dropped | `code_analyzer.py:301` | +| CBA-04 | High | Subclass detection misses generic/qualified bases | `pattern_recognizer.py:819` | +| CBB-02 | High | Verification points overwritten/misattributed across steps | `how_to_guide_builder.py:185` | +| MCP-02 | High | `install_skill` package-path regex never matches real output | `tools/packaging_tools.py:602` | +| MCP-03 | High | `scrape_docs` drops `skip_scrape` and `dry_run` (unified) | `tools/scraping_tools.py:144` | +| MCP-04 | High | `submit_config` has no idempotency guard โ†’ duplicate issues | `tools/source_tools.py:570` | +| MCP-05 | High | `install_skill` infers failure from `"โŒ"` substring | `tools/packaging_tools.py:523` | +| ENH-02 | High | Direct Moonshot key misrouted to OpenAI | `agent_client.py:202` | +| ENH-03 | High | Headless "success" requires the file to *grow* | `enhance_skill_local.py:900` | +| ENH-04 | High | Kimi stdout parser drops all multi-line responses | `agent_client.py:467` | +| ENH-05 | High | Stray `.json` in agent cwd returned as the LLM response | `agent_client.py:419` | +| CBB-03 | High | `common_problems.remove()` mutates shared insights | `generate_router.py:421` | +| CBB-12 โ˜… | High | `dependencies=imports` shares one mutable list across examples | `test_example_extractor.py:394` | + +--- + +# Critical + +## ENH-01 โ€” Truncated SKILL.md silently overwrites the original `Confirmed ยท High` +**Location:** `cli/enhance_skill.py:75-94`; `cli/agent_client.py:286-301`; reachable save path `cli/adaptors/claude.py:384-405`; unified path `cli/unified_scraper.py:2079`. +**Trigger:** Enhancement output exceeds `max_tokens` (4096 in `enhance_skill.py`/`agent_client.py`; 8192 in the unified path), or the model otherwise stops with `stop_reason="max_tokens"`. +**Mechanism:** All call sites read `message.content[0].text` / iterate for `block.text` with **no** check of `message.stop_reason` (Anthropic) or `choices[0].finish_reason` (OpenAI). The reachable save path renames the original to `SKILL.md.backup` **first** (claude.py:400), then writes the new content (claude.py:404). So a truncated body overwrites the live file; the only intact copy is the backup. +**Impact:** Any non-trivial skill gets silently chopped to ~4k output tokens (broken frontmatter/fences) and saved as "complete." Silent data loss of the primary deliverable; the run reports success. +```python +message = client.messages.create(model=..., max_tokens=4096, ...) +enhanced_content = message.content[0].text # no stop_reason check +if skill_md_path.exists(): + skill_md_path.rename(skill_md_path.with_suffix(".md.backup")) # original moved away first +skill_md_path.write_text(enhanced_content, ...) # truncated body wins +``` +**Fix:** Check the stop reason before touching the original; abort on truncation. Also write to a temp file and `os.replace` only after a successful, complete write (so failure can never leave the dir without a `SKILL.md`). +```python +if getattr(message, "stop_reason", None) == "max_tokens": + print("โŒ Response truncated (max_tokens); leaving original SKILL.md intact.") + return False +``` + +## SCAN-01 โ€” Scan AI github-config generation always rejected by the validator `Confirmed ยท High` +**Location:** `cli/scan_command.py:426` (`_GENERATE_SCHEMA_HINT`); validated at `scan_command.py:555` via `UniSkillConfigValidator(data).validate()`; rejection at `cli/config_validator.py:266-272` against `VALID_DEPTH_LEVELS` (`config_validator.py:71`). +**Trigger:** Any unmapped detection that falls through to `generate_config_with_ai`. The hint sits inside the `"type": "github"` source block, and `"standard"` is a plain literal, so a prompt-compliant model copies it verbatim. +**Mechanism:** The schema hint tells the AI to emit `"code_analysis_depth": "standard"`, but the validator's github-source branch only accepts `{surface, deep, full}`. `generate_config_with_ai` validates AI output and rejects on raise; the retry reuses the same hint, so attempt 2 reproduces the same invalid value. After `max_attempts` the detection lands in `result.failed`. +**Impact:** The headline `scan` feature โ€” "generate a config for an unmapped framework" โ€” systematically produces nothing for any library with a github source. Two wasted AI calls per detection, zero output. +```python +"code_analysis_depth": "standard", # scan_command.py:426 โ€” not a valid level +# config_validator.py:71 +VALID_DEPTH_LEVELS = {"surface", "deep", "full"} +``` +**Fix:** `"code_analysis_depth": "deep",` (or `"surface"`). + +## CBB-01 โ€” LOCAL-mode guide enhancement calls a non-existent method `Confirmed ยท High` +**Location:** `cli/guide_enhancer.py:307`. +**Trigger:** `build-how-to-guides` runs with AI enhancement when no API key is set (`auto` โ†’ `AgentClient.mode == "local"`) or `ai_mode="local"`. +**Mechanism:** `_enhance_via_local` calls `self._call_claude_local(prompt)`, which is defined nowhere (only `_call_ai` at :263 exists; every other call site uses it). The `AttributeError` is swallowed by the broad `except Exception` in `enhance_guide` (:106-109), which logs and returns the original `guide_data`. +**Impact:** Every LOCAL-mode (no-API-key) guide build silently returns **unenhanced** guides while logging a generic "AI enhancement failed." Local-mode guide enhancement has never worked. +```python +def _enhance_via_local(self, guide_data: dict) -> dict: + prompt = self._create_enhancement_prompt(guide_data) + response = self._call_claude_local(prompt) # NameError: no such method +``` +**Fix:** `response = self._call_ai(prompt)`. + +## MCP-01 โ€” `push_config` strips its own auth token โ†’ broken for private repos `Confirmed ยท High` +**Location:** `mcp/config_publisher.py:170,210` (compounded by โ˜…MCP-12 / โ˜…MCP-13). +**Trigger:** Any `push_config` to a private/authenticated source repo. +**Mechanism:** The clone uses a token-injected URL, but line 170 immediately runs `origin.set_url(git_url)` (tokenless) "to scrub the token," and the push at line 210 goes through that tokenless `origin`. `marketplace_publisher.py:160` does it correctly โ€” it pushes to a freshly token-injected URL. +**Impact:** The push fails with an auth error *after* the commit, leaving the cache repo with an orphan commit. `push_config` to the primary (private) config source is effectively non-functional. โ˜…MCP-12 and โ˜…MCP-13 (below) make the second run fail at pull and leave the cache on a stranded branch โ€” together they fully break the feature and corrupt the cache. +```python +repo_obj.remotes.origin.set_url(git_url) # :170 scrubs token from origin +... +repo.remotes.origin.push(target_branch) # :210 pushes via tokenless origin +``` +**Fix:** `repo.git.push(self.git_repo.inject_token(git_url, token), target_branch)`. + +## CBA-13 โ˜… โ€” GDScript class dicts use key `"bases"`; consumer reads `"base_classes"` `Confirmed ยท High` +**Location:** `cli/code_analyzer.py:1986` vs `cli/pattern_recognizer.py:367`. +**Trigger:** Any GDScript file with `class_name Foo extends Bar` run through `PatternRecognizer`. +**Mechanism:** `_analyze_gdscript` emits class dicts with the key `"bases"` โ€” the only one of 11 analyzers to do so (the other 10 use `"base_classes"`). `_convert_to_signatures` reads `cls.get("base_classes", [])`, so for GDScript the base list is always `[]`. +**Impact:** All inheritance-based pattern detection (Strategy/Template-Method `subclasses`, Observer/Chain families โ€” every `name in cls.base_classes` check) is silently dead for GDScript, a first-class target (C3.10 signal-flow pipeline). +```python +classes.append({ + "name": class_name, + "bases": [extends] if extends else [], # wrong key + ... +}) +``` +**Fix:** rename to `"base_classes"`. + +--- + +# High + +## SCAN-02 โ€” Non-numeric AI `confidence` crashes the whole scan `Confirmed ยท High` +**Location:** `cli/scan_command.py:394`; propagates through `run_scan` โ†’ `_amain` (only catches `KeyboardInterrupt`/`RuntimeError`). +**Trigger:** AI returns `"confidence": "high"` / a list / explicit `null` (LLMs do this despite the "0-1" instruction). Missing key is safe (defaults to `0.0`). +**Mechanism:** `float(entry.get("confidence", 0.0))` is inside the per-entry loop, which is **not** wrapped in try/except (only `client.call` is). `float("high")` raises `ValueError`; it unwinds out of `asyncio.run`. +**Impact:** One malformed entry aborts the entire command with a traceback, discarding all valid detections. +```python +confidence = float(entry.get("confidence", 0.0)) # unguarded +``` +**Fix:** wrap in `try/except (TypeError, ValueError): continue`. + +## CLI-01 โ€” `--no-issues/--no-changelog/--no-releases` are dead on `create` `Confirmed ยท High` +**Location:** `cli/create_command.py:270-283`; dests in `arguments/create.py:298-318` & `arguments/github.py:49-69`; consumer `github_scraper.py:257-266`. +**Trigger:** `skill-seekers create owner/repo --no-issues` (or `--no-changelog`/`--no-releases`). +**Mechanism:** The parser defines the **negative** dests `no_issues/no_changelog/no_releases`, but `_build_config` reads the never-defined positive keys `include_issues/include_changelog/include_releases` via `getattr(..., True)`, so they're always `True`. No `no_*โ†’include_*` translation exists anywhere. `include_code` has no flag at all. +**Impact:** `--no-issues` still fetches every issue (potential rate-limit exhaustion); the three opt-out flags are no-ops on the only entry point that exists. +```python +"include_issues": getattr(self.args, "include_issues", True), # attr never exists +``` +**Fix:** `"include_issues": not getattr(self.args, "no_issues", False)` (and the others). + +## CLI-02 โ€” `--output` ignored for all non-local sources; enhancement targets the wrong dir `Confirmed ยท High` +**Location:** `cli/create_command.py:215-430` (`_build_config`) & `:450-457` (`_run_enhancement`); scrapers `doc_scraper.py:209`, `notion_scraper.py:99`, `pdf_scraper.py:79`, `unified_scraper.py:120`. +**Trigger:** `create --output /tmp/x` (anything but `output/{name}`), especially with `--enhance-level > 0`. +**Mechanism:** `_build_config` only forwards `output_dir` for the `local` branch; the other scrapers hardcode `self.skill_dir = f"output/{name}"`. But `_run_enhancement` computes `skill_dir = ctx.output.output_dir`, which *does* honor `--output`. +**Impact:** Output always lands in `output/{name}` (flag silently ignored); enhancement then runs against the empty `--output` dir and fails โ€” and since `_run_enhancement` swallows exceptions (โ˜…CLI-06), the run still exits 0 with an un-enhanced skill in the wrong place. +**Fix:** have every converter read `config.get("output_dir") or f"output/{self.name}"`, and set `config["output_dir"]` in every `_build_config` branch. + +## CBA-01 โ€” Singleton precedence bug bypasses the confidence gate `Confirmed ยท High` +**Location:** `cli/pattern_recognizer.py:453`. +**Mechanism:** `if has_instance_method or has_init_control and confidence >= 0.5:` parses as `has_instance_method or (...)`. Any class with a method named `instance`/`getInstance` is flagged Singleton at confidence 0.4, bypassing the 0.5 gate. +**Impact:** False-positive Singletons for any class exposing an `instance`-style accessor (e.g. ORM models). +**Fix:** `if (has_instance_method or has_init_control) and confidence >= 0.5:`. + +## CBA-02 โ€” `total_emissions` iterates `.items()` โ†’ always 2ร— signal count `Confirmed ยท High` +**Location:** `cli/signal_flow_analyzer.py:172` (line 171 correctly uses `.values()`). +**Mechanism:** `sum(len(emits) for emits in self.signal_emissions.items())` โ€” each `emits` is a `(key, list)` 2-tuple, so `len` is always 2. Result = `2 ร— (#emitting signals)`, decoupled from real emission count. +**Impact:** "Total Emissions" in every Godot signal-flow report (`signal_flow.json`, `signal_reference.md`) is meaningless. +**Fix:** `.values()`. + +## CBA-03 โ€” JS/TS class body truncated at first `}` `Confirmed ยท High` +**Location:** `cli/code_analyzer.py:301`. +**Mechanism:** `class_block_end = content.find("}", class_block_start)` finds the **first** brace, not the matching one (C#/Java/Kotlin brace-count; JS doesn't). For any real JS class, the body ends at the first method's closing brace. +**Impact:** All methods after the first are dropped from JS/TS classes, breaking method-count pattern heuristics (Builder/Observer/Strategy). (Fixing this surfaces โ˜…CBA-14.) +**Fix:** use the brace-counting loop already used in `_analyze_csharp`/`_analyze_java`. + +## CBA-04 โ€” Subclass detection misses generic/qualified bases `Confirmed ยท High` +**Location:** `cli/pattern_recognizer.py:819` (also 805/926/1297/1324/1476). +**Mechanism:** `class_sig.name in cls.base_classes` is exact-match, but C# bases are stored verbatim (`BaseStrategy`), so `"BaseStrategy" in ["BaseStrategy"]` is False. (Java strips generics, so Java works; C#/qualified `Namespace.Base` fail.) +**Impact:** Strategy/Template-Method built on C# generic bases are missed entirely; sibling/family evidence lost. +**Fix:** normalize bases before compare: `b.split("<",1)[0].split(".")[-1].strip()`. + +## CBB-02 โ€” Verification points overwritten / misattributed across steps `Confirmed ยท High` +**Location:** `cli/how_to_guide_builder.py:185-187`. +**Mechanism:** `_extract_steps_python` (:222-226) already pairs each step with its following assertion. Then `analyze_workflow` does `step.verification = verifications[i]` positionally, but `steps` (non-assert statements) and `verifications` (assert lines) are different filtered lists with divergent lengths/order. +**Impact:** Guides show verification code under the wrong step (e.g. step 1 shows a check that validates step 4's result), and the correct pairing is thrown away. +**Fix:** remove the positional overwrite loop; rely on the per-step pairing already done. + +## CBB-03 โ€” `common_problems.remove()` mutates shared insights `Confirmed ยท High` +**Location:** `cli/generate_router.py:421,436` (readers at :865, :1022). +**Mechanism:** `common_problems = self.github_issues.get("common_problems", [])` is the shared list (no copy); `.remove(issue)` deletes from it in place for up to 3 skills, **before** the "Common Issues" section and the issues-reference file read it. +**Impact:** Up to 3 of the most label-relevant issues vanish from the summary and `github_issues.md`; output is order-dependent and non-idempotent. +**Fix:** iterate `list(...)` copy and track used issues by id; never `.remove()` the shared list. + +## CBB-12 โ˜… โ€” `dependencies=imports` shares one mutable list across all examples `Corrected ยท Highโ†’Medium (latent)` +**Location:** `cli/test_example_extractor.py:394,446,490,532` (list built once at :191). +**Mechanism:** The same `imports` list object is assigned as `dependencies` to every `TestExample` from a file, and `how_to_guide_builder._detect_prerequisites` aliases it again into `metadata["required_imports"]`. Aliasing is real, **but** all current consumers only read the list โ€” none mutate it โ€” so there is no observable corruption today. +**Impact:** Latent: any future `.append`/`.sort` on one example's `dependencies` would silently affect all siblings (and the guide prerequisites). Reclassified **Medium** (latent) after verification. +**Fix:** `dependencies=list(imports)` at each call site. + +## MCP-02 โ€” `install_skill` package-path regex never matches real output `Confirmed ยท High` +**Location:** `mcp/tools/packaging_tools.py:602` vs `cli/package_skill.py:177`. +**Mechanism:** The regex matches `"saved to:"`, but `package_skill.py` prints `"Output: "` and `"โœ… Package created: "`. The match always fails, so `zip_path` falls back to a constructed name (`{name}.zip`) that differs from real adaptor names (`{dir}-gemini.tar.gz`, etc.). +**Impact:** The upload phase receives a guessed/non-existent path while the workflow reports success. +**Fix:** match what is actually printed: `r"(?im)^\s*(?:Output|โœ… Package created):\s*(.+\.(?:zip|tar\.gz))\s*$"` (better: return the path structurally). + +## MCP-03 โ€” `scrape_docs` drops `skip_scrape` entirely and `dry_run` for unified configs `Confirmed ยท High` +**Location:** `mcp/tools/scraping_tools.py:144-216` (wrapper `server_fastmcp.py:353-381`). +**Mechanism:** The FastMCP wrapper declares `skip_scrape`, `dry_run`, `enhance_local` and forwards them, but the impl never reads `skip_scrape`/`enhance_local`, and only sets `converter.dry_run` in the non-unified branch. `server_legacy.py` honored all three. +**Impact:** `skip_scrape=True` re-scrapes from the network (20-45 min wasted, ignores cache); `dry_run=True` performs a full scrape for unified configs. Real server_fastmcp โ†” server_legacy drift. +**Fix:** read `skip_scrape`, set `converter.dry_run = dry_run` and `converter.skip_scrape = skip_scrape` in both branches. + +## MCP-04 โ€” `submit_config` has no idempotency guard `Confirmed ยท High` +**Location:** `mcp/tools/source_tools.py:529-574`. +**Mechanism:** Calls `repo.create_issue(title=f"[CONFIG] {name}", ...)` unconditionally; unlike scan's `maybe_publish` (`_find_existing_issue`), it never searches for an existing open issue. +**Impact:** Re-runs create duplicate `[CONFIG] {name}` issues, polluting the review queue. +**Fix:** query `is:issue is:open in:title "{name}"` before creating; return the existing URL if found. + +## MCP-05 โ€” `install_skill` infers scrape failure from `"โŒ"` substring `Confirmed ยท Medium-High` +**Location:** `mcp/tools/packaging_tools.py:523`. +**Mechanism:** `if "โŒ" in scrape_output:` discards the structured returncode that `_run_converter` already provides. +**Impact:** A single skipped page logging `โŒ` aborts the workflow; a real failure without that emoji proceeds to package an empty skill and reports success. (โ˜…MCP-15 is the identical issue for the packaging phase, which has no check at all.) +**Fix:** return a status flag from `scrape_docs_tool`/`_run_converter` and branch on it. + +## ENH-02 โ€” Direct Moonshot/Kimi key misrouted to OpenAI `Confirmed ยท High` +**Location:** `cli/agent_client.py:202-217`. +**Mechanism:** `_detect_provider_from_key` returns `"moonshot"` for an `sk-` key only if `MOONSHOT_API_KEY` env equals it; otherwise any `sk-` key โ†’ `"openai"`. Moonshot keys are `sk-`-prefixed, so a key passed via `--api-key` without the env var builds an `OpenAI` client with `gpt-4o`. +**Impact:** Direct Moonshot-key usage fails auth (hits `api.openai.com`) or routes to the wrong provider, surfacing as a misleading OpenAI error. +**Fix:** accept an explicit provider hint (e.g. `SKILL_SEEKER_PROVIDER`) before defaulting to OpenAI. + +## ENH-03 โ€” Headless "success" requires the file to *grow* `Confirmed ยท High` +**Location:** `cli/enhance_skill_local.py:900` (headless), `:1087` (background), `:1213` (daemon). +**Mechanism:** Headless gates success on `new_mtime > initial_mtime and new_size > initial_size`; background/daemon gate only on `returncode == 0`. The three modes disagree. +**Impact:** A legitimate condensing/same-size rewrite is reported as failure in the default headless mode ("SKILL.md was not updated"), so CI/automation treats valid runs as errors. +**Fix:** gate on `new_mtime > initial_mtime` (file changed), not strictly larger size; share one predicate across modes. + +## ENH-04 โ€” Kimi stdout parser drops all multi-line responses `Confirmed ยท High` +**Location:** `cli/agent_client.py:467`. +**Mechanism:** `re.findall(r"TextPart\(type='text', text='(.+?)'\)", raw_output)` has no `re.DOTALL`, so `.` doesn't match newlines; every multi-line SKILL.md matches nothing and the function returns the raw `TurnBegin(...)/StepBegin(...)` debug dump. The non-greedy `'` also splits on embedded apostrophes. +**Impact:** With `--agent kimi`, SKILL.md is replaced by Kimi's raw debug log (or fragmented at apostrophes). +**Fix:** add `re.DOTALL` and anchor the terminator to the next record boundary. + +## ENH-05 โ€” Stray `.json` in agent cwd returned as the LLM response `Confirmed ยท High (conditional)` +**Location:** `cli/agent_client.py:385-393, 419-435` *(downgraded from Critical โ€” conditional trigger)*. +**Mechanism:** When `output_file` is None, the prompt is `prompt.md` and no "write response" instruction is added, yet the code returns `temp/response.json` if present, else **any** `*.json` in the temp dir. The guard `!= "prompt.json"` is dead (the file is `prompt.md`). The subprocess cwd is `temp_path`, so any incidental `.json` the agent writes becomes the "response," shadowing stdout. +**Impact:** Non-deterministic: enhancement can return an unrelated JSON file's contents instead of the model's actual output. Conditional on the agent writing a stray `.json`, hence High not Critical. +**Fix:** only consult the response file when `output_file` was explicitly requested (and match exactly that file); otherwise return stdout. + +--- + +# Medium + +## Scan + config +- **SCAN-03 โ€” `get_api_key("moonshot")` env fallback dead.** `config_manager.py:314` โ€” `env_map` omits `moonshot`, so a user who exports `MOONSHOT_API_KEY` (no config-file key) gets `None`, while `config_command.py:329` shows "(from environment)". `set_api_key`'s error text also omits moonshot. *Fix:* add `"moonshot": "MOONSHOT_API_KEY"`. `Confirmed` +- **โ˜…SCAN-04 โ€” `--dry-run` writes `./configs/` and hits the network.** `scan_command.py:1162` calls `resolve_config_path(lookup, auto_fetch=allow_network)` (default True) in the dry-run branch; on an API hit `fetch_config_from_api` performs HTTP GETs and writes `./configs/.json`, contradicting the "DRY RUN โ€” no files written" promise (`:1287`). *Fix:* pass `auto_fetch=False` in dry-run. `Confirmed` + +## CLI core +- **CLI-03 โ€” `ExecutionContext.reset()` never called in production.** `execution_context.py:207-228` โ€” the singleton guard returns the existing instance; `reset()` exists but only tests call it. A 2nd in-process `create` reuses the 1st's name/output/settings. Latent today (MCP runs scrapes in subprocesses; CLI is one-shot). *Fix:* call `reset()` at the top of `CreateCommand.execute()`. `Confirmed` +- **โ˜…CLI-04 โ€” Legacy `_reconstruct_argv` round-trips the full namespace.** `main.py:179-186` re-serializes every namespace attribute to argv for ~14 legacy commands; attributes unknown to a sub-parser are emitted as `--unknown-flag value`, which the sub-parser can reject. Brittle; the documented migration to `COMMAND_CLASSES` is the fix. `Confirmed` + +## Adaptors +- **ADP-01 โ€” `--streaming` is dead for every adaptor.** `streaming_adaptor.py:21` + `package_skill.py:149` โ€” `StreamingAdaptorMixin` is never imported or inherited by any registered adaptor, so `hasattr(adaptor,"package_streaming")` is always False. *Corrected:* the fallback **announces** "Streaming not supportedโ€ฆ using standard packaging" (not silent), but the feature is fully dead. *Fix:* have RAG adaptors inherit the mixin or register the streaming variants. `Corrected` +- **ADP-02 โ€” `except (ImportError, Exception)` masks all import errors.** `chroma.py:236`, `pinecone_adaptor.py:328` โ€” `Exception` subsumes `ImportError`, so a broken-but-installed package (e.g. chromadb/py3.14 pydantic-v1) is misreported as "not installed." *Fix:* split the handlers. `Confirmed` + +## MCP +- **MCP-06 โ€” `list_configs` reads top-level `base_url`; unified configs store it under `sources[0]`.** `tools/config_tools.py:136` โ€” every config `generate_config` produces lists a blank URL. *Fix:* fall back to `sources[].base_url`. `Confirmed` +- **โ˜…MCP-12 โ€” `config_publisher` `get_source` raises `KeyError`; the `if not source:` branch is dead.** `config_publisher.py:140-143` โ€” an unknown source name raises a raw `KeyError` (quoted message) instead of the curated "Available sources" error. *Fix:* wrap in `try/except KeyError`. `Confirmed` +- **โ˜…MCP-13 โ€” `config_publisher` tokenless re-pull on the 2nd run.** `config_publisher.py:161-172` โ€” on a cached repo it pulls via `origin` (scrubbed tokenless by the prior run's :170) before re-injecting the token, so a 2nd push to a private repo fails at pull. Compounds MCP-01. *Fix:* `origin.set_url(clone_url)` before pulling. `Confirmed` + +## Codebase analysis (AST / pattern / dependency) +- **CBA-05 โ€” "protocol" boosts ANY pattern.** `pattern_recognizer.py:1538-1542` โ€” `type=="Strategy" and "duck typing" in s or "protocol" in s` precedence โ†’ the `"protocol"` clause fires for any Python pattern. *Fix:* parenthesize the OR group. `Confirmed` +- **CBA-06 โ€” "event" boosts ANY pattern (+ false "EventEmitter detected").** `pattern_recognizer.py:1559-1563` โ€” same precedence flaw for JS/TS. `Confirmed` +- **CBA-07 โ€” `_resolve_import` never maps dotted module โ†’ file path.** `dependency_analyzer.py:784-814` โ€” `file_nodes` keys are file paths (`src/pkg/mod.py`) while `imported_module` is `pkg.mod`; no dotโ†’slash conversion. The dependency graph is essentially edgeless and cycle detection returns empty for **all dotted-import languages** (Python/Java/C#/Kotlin/Go/Rust/Ruby/PHP). *Corrected:* Godot resource graphs (slash paths) **do** resolve. *Fix:* convert dots to slashes + suffix-match against `file_nodes`. `Confirmed` +- **CBA-08 โ€” Kotlin top-level-fn `indent > 4` heuristic.** `code_analyzer.py:1379-1383` โ€” tab/2-space-indented methods are misclassified as top-level, and indented top-level fns are dropped. *Fix:* track brace depth instead of indentation. `Confirmed` +- **CBA-09 โ€” Kotlin `is_suspend` look-behind reads before the modifier.** `code_analyzer.py:1385` โ€” the 50-char window precedes the match (which already includes `suspend`), so real `suspend fun` reads False and a neighboring `suspend` reads True. *Fix:* `"suspend" in match.group(0)`. `Confirmed` +- **CBA-10 โ€” `gd_resource` regex drops `script_class` on compact headers.** `code_analyzer.py:1875` โ€” trailing `\s+` can't match `]`, so `[gd_resource type="X" script_class="Y"]` yields `script_class=None`. *Fix:* end with `\s*[\]\s]`. `Confirmed` +- **โ˜…CBA-14 โ€” JS method extractor matches call-sites and keywords.** `code_analyzer.py:391-419` โ€” `(\w+)\s*\(...\)` matches any `ident(args)`; only 4 keywords are blocklisted, so `this.helper(b)`, `setTimeout(...)` become "methods." Masked today by CBA-03 (truncation); surfaces once CBA-03 is fixed. *Fix:* anchor to `\s*\{` declarations and exclude the full JS keyword set. `Confirmed` +- **โ˜…CBA-15 โ€” GDScript signal doc comment read from the wrong line.** `code_analyzer.py:2043-2047` โ€” for a signal at column 0, `content[:start].split("\n")[-1]` is the empty pre-`signal` text; the doc comment is `lines[-2]`. So `## doc \n signal x` always yields `documentation=None`. *Fix:* use `lines[-2]`. `Confirmed` + +## Codebase analysis (example / guide / router) +- **CBB-04 โ€” `ast.walk` flattens nested statements.** `how_to_guide_builder.py:204-206` โ€” statements inside `if`/`for`/`with`/`try` are hoisted into the flat step list, losing control-flow context. *Fix:* iterate top-level body only. `Confirmed` +- **CBB-05 โ€” AI `ai_analysis` aligned by position, not `example_id`.** Real site `ai_enhancer.py:360-362` (the extractor re-merge at `test_example_extractor.py:1088` is actually order-safe). If the model drops/reorders an entry, every later example gets another's analysis (and `tutorial_group`, which drives guide grouping). *Fix:* key by `example_id`. `Confirmed` +- **CBB-06 โ€” `_is_test_class` `"Test" in base.id` over-matches.** `test_example_extractor.py:218-225` โ€” any base whose name *contains* "Test" (`LatestConfig`, `TestableMixin`) flags the class as a test. *Fix:* `endswith("TestCase")` / explicit bases. `Confirmed` +- **CBB-07 โ€” Index TOC sorts complexity alphabetically.** `how_to_guide_builder.py:789` โ€” `sorted(..., key=g.complexity_level)` โ†’ `advanced, beginner, intermediate`. *Fix:* explicit rank map. `Confirmed` +- **CBB-08 โ€” c3x failures look like empty results; temp dir leaks.** `unified_codebase_analyzer.py:288-305` โ€” broad `except` returns `analysis_type:"c3x"` with empty arrays + an easily-ignored `error` key; `tempfile.mkdtemp` (:255) is never cleaned. *Fix:* mark a distinct failure type and `shutil.rmtree` in `finally`. `Confirmed` +- **โ˜…CBB-13 โ€” Guide step-description index trust.** `guide_enhancer.py:552-560` + `how_to_guide_builder.py:1050-1055` โ€” step explanations routed by AI-supplied `step_index` with an enumerate fallback; a dropped entry shifts every subsequent explanation onto the wrong step. *Fix:* require an explicit in-range `step_index`; skip otherwise. `Confirmed` + +## Document scrapers +- **DOC-02 โ€” `smart_categorize` assigns to first category over threshold, not max.** `doc_scraper.py:1837-1840` โ€” `break`s on the first category reaching score 2 (config-order dependent); siblings use `max(scores,...)`. *Corrected severity Highโ†’Medium.* *Fix:* collect all scores, assign to `max`. `Confirmed` +- **DOC-03 โ€” Link extraction keeps query strings.** `doc_scraper.py:432-437` โ€” only `#fragment` is stripped, so `?lang=`/`?utm=` variants are distinct pages (crawler-trap risk in unlimited mode). *Fix:* drop tracking params / normalize query before dedup. `Confirmed` +- **DOC-04 โ€” `DEFAULT_MAX_PAGES = -1` โ‡’ unbounded default crawl.** `doc_scraper.py:1443-1450`; `defaults.json:7` โ€” a config without `max_pages` enters unlimited mode. *Fix:* finite default (e.g. 1000); require explicit `-1` for unlimited. `Confirmed (by-design footgun)` +- **DOC-05 โ€” PDF cross-page code merge heuristic is ~always true; count drift.** `pdf_extractor_poc.py:606-623` โ€” `any([not endswith("}"), not endswith(";"), ...])` merges unrelated adjacent blocks; `code_blocks_count` decremented on next page but not incremented on current. *Fix:* require a real continuation token; recompute counts from `len(code_samples)`. `Confirmed` +- **DOC-06 โ€” Async unlimited dry-run doesn't cap at 20.** `doc_scraper.py:1613-1620` โ€” sets `preview_limit=inf` before checking `dry_run` (sync caps at 20 unconditionally), so async `--dry-run` on a default config previews the entire site. *Fix:* set `preview_limit=20` when `dry_run` first. `Confirmed` +- **DOC-07 โ€” Broken SKILL.md nav links (pdf/html/word/epub).** `pdf_scraper.py:530`, `html_scraper.py:1562`, `word_scraper.py:631`, `epub_scraper.py:800` โ€” nav links to `references/{sanitize(title)}.md` but files are written with range/basename names (`_pX-pY`, `_sX-sY`, raw basename). Dead links for any multi-section/multi-category source. (Same root cause as MED-04 โ€” see systemic pattern S2.) *Fix:* derive nav names from the same filename helper that writes the files. `Confirmed` + +## Media / structured / remote scrapers +- **MED-01 โ€” GitHub issues capped at 100 (no Link pagination).** `github_fetcher.py:299-345` โ€” single page, `per_page=min(max,100)`, no `rel="next"`; PR filtering reduces further. *Corrected severity Highโ†’Medium.* *Fix:* loop on the `next` link. `Confirmed` +- **MED-02 โ€” Slack 429 aborts all channels.** `chat_scraper.py:648-722` โ€” `conversations_history` has no 429/retry, and the per-channel loop is in one try whose `except SlackApiError` raises a fatal `RuntimeError`, losing already-fetched channels. *Fix:* per-channel try/except + `Retry-After` backoff. `Confirmed` +- **MED-03 โ€” Discord session has no timeout; 429 silently breaks.** `chat_scraper.py:827-878` โ€” no `ClientTimeout`; a 429 is treated as a generic non-200 โ†’ silent `break`. *Fix:* add timeout + honor `Retry-After`. `Confirmed` +- **MED-04 โ€” Broken SKILL.md nav links (jupyter/asciidoc/pptx).** `jupyter_scraper.py:966`, `asciidoc_scraper.py:841`, `pptx_scraper.py:1467` โ€” same nav vs file naming mismatch as DOC-07. *Verified:* Confluence/RSS are consistent (not affected). *Fix:* shared filename helper. `Confirmed` + +## Enhancement + unified builder +- **ENH-06 โ€” `_call_api` ignores the caller's `timeout`.** `agent_client.py:295-309` โ€” `call()` computes a timeout (default 45 min) but `_call_api` hardcodes `timeout=120`. Large prompts fail at 2 min with a misleading "connection error." *Fix:* thread `timeout` through. `Confirmed` +- **ENH-07 โ€” `scrape_all_sources` reports the bucket count, not sources scraped.** `unified_scraper.py:256` โ€” `len(self.scraped_data)` is always ~17. *Fix:* `sum(len(v) for v in ...)`. `Confirmed` +- **ENH-08 โ€” All-sources-fail still builds and returns 0.** `unified_scraper.py:252-254` โ€” per-source exceptions swallowed; `run()` proceeds to `build_skill` on empty data and exits 0. *Fix:* count scraped sources; return non-zero on zero. `Confirmed` +- **ENH-09 โ€” "Official Documentation" reads `sources[0]` regardless of type.** `unified_skill_builder.py:280` โ€” prints `N/A` (or a non-docs URL) if github is listed first. *Fix:* filter `type == "documentation"`. `Confirmed` +- **ENH-10 โ€” `DEBUG:` log lines left in production synthesis.** `unified_skill_builder.py:327-332` โ€” `logger.info("DEBUG: ...")` and `logger.warning("DEBUG: ... NOT FOUND!")` fire on every docs+github synthesis. *Fix:* `logger.debug`, drop the alarm wording. `Confirmed` +- **โ˜…ENH-11 โ€” Gemini API mode ignores `timeout` and `max_tokens`.** `agent_client.py:312-315` โ€” `generate_content(prompt)` with no `generation_config`/timeout; output capped at the model default, request unbounded. With ENH-01 the truncation is doubly invisible. *Fix:* pass `max_output_tokens`/`request_options` and check `finish_reason`. `Confirmed` +- **โ˜…ENH-12 โ€” Provider-priority lists are inconsistent; Moonshot dropped in `_pick_mode`.** `agent_client.py:84-90` honors `MOONSHOT_API_KEY`, but `enhance_command._pick_mode` and `enhance_skill_local._detect_api_target` only check claude/gemini/openai. A Moonshot-only user is silently dropped to LOCAL mode by the `enhance` command. *Fix:* add a moonshot/kimi branch; share one priority order. `Confirmed` + +## Args / infra +- **INF-01 โ€” Embedding cache key omits `normalize`.** `embedding/generator.py:414-418`; `server.py:138,182,209` โ€” cache keyed `(model,text)` only; a `normalize=False` request after a cached `normalize=True` returns the wrong (normalized) vector. *Fix:* include `int(normalize)` in the key. `Confirmed` +- **INF-02 โ€” `cleanup_old` folds the date into the group key.** `benchmark/runner.py:293-295` โ€” filename is `{name}_{%Y%m%d_%H%M%S}`; `"_".join(parts[:-1])` leaves `{name}_{date}`, so retention is per-name-per-day โ†’ old files never pruned. *Fix:* `parts[:-2]`. `Confirmed` +- **INF-03 โ€” `peak_mb` never samples during the op.** `benchmark/framework.py:184-192` โ€” only `max(before, after)`; transient spikes invisible, so leak/memory recommendations under-report. *Fix:* sample RSS on a background thread during `yield`. `Confirmed` +- **INF-04 โ€” `compare()` divides by zero on instant ops.** `benchmark/runner.py:160,195` โ€” no guard on `current.duration == 0`. *Fix:* guard with `float("inf")`. `Confirmed` +- **INF-05 โ€” Header change-detection misses validator-less servers.** `sync/detector.py:270-277` โ€” returns `False` (unchanged) when neither `Last-Modified` nor `ETag` is present, so `batch_check_headers` silently drops genuinely-changed pages (the `except` branch returns `True`, inconsistently). *Fix:* return `True` when no validators are available. `Confirmed` + +--- + +# Low + +## Scan + config +- **SCAN-05 โ€” API-fetched configs written to `./configs/` regardless of `--out`.** `config_fetcher.py:196` โ€” hardcoded `destination="configs"` pollutes CWD (scan re-writes to out_dir anyway). *Fix:* thread the out dir / temp dir through. `Confirmed` +- **SCAN-06 โ€” Module-level `logging.basicConfig` in a library.** `config_validator.py:33` โ€” can win over scan's `--verbose` depending on import order. *Fix:* remove from the library module. `Confirmed` +- **SCAN-07 โ€” Duplicate-slug detections double-count.** `scan_command.py:1149-1199` โ€” the diff dedups by slug, but the main loop double-writes/double-counts duplicate-slug detections. *Fix:* dedup detections by `_config_filename_for`. `Confirmed` + +## CLI core +- **CLI-05 โ€” `run()` success log prints `output/{name}` for local builds.** `skill_converter.py:46` + `codebase_scraper.py:2154` โ€” artifacts go to `output_dir` (honors `--output`) but the base log shows `skill_dir`. *Fix:* set `self.skill_dir = str(self.output_dir)`. `Confirmed` +- **CLI-06 โ€” confluence/notion `max_pages` dead `DEFAULTS` fallback.** `create_command.py:404,415` โ€” `getattr(..., DEFAULTS[...])` fallback is unreachable (`max_pages` always present as `None`); harmless because `None` is treated as unlimited like `-1`. *Corrected (no behavioral impact).* `Corrected` +- **โ˜…CLI-07 โ€” `_run_enhancement`/`_run_workflows` swallow all exceptions; exit 0.** `create_command.py:504-516` โ€” enhancement/workflow failure never affects the exit code (CI can't detect it). Compounds CLI-02. *Fix:* track success, return non-zero or emit a clear failure summary. `Confirmed` +- **โ˜…CLI-08 โ€” `merge_sources(mode="ai-enhanced")` not recognized.** `merge_sources.py:766-769` โ€” only `"claude-enhanced"` is special-cased, so the canonical `"ai-enhanced"` falls through to rule-based merging for direct callers. *Fix:* accept both spellings. `Confirmed` +- **โ˜…CLI-09 โ€” Module-level `logging.basicConfig` in `merge_sources.py:36`.** Same library-logging hazard as SCAN-06 (imported transitively via `generate_router`). *Fix:* remove. `Confirmed` + +## Adaptors +- **ADP-03 โ€” Weaviate adaptor uses v3-only API; pin allows v4.** `weaviate.py:341-379`; pin `weaviate-client>=3.25.0` โ€” `weaviate.Client`, `schema.create_class`, `client.batch` all raise `AttributeError` on v4. *Fix:* cap `<4` or port to the v4 API. `Confirmed` +- **ADP-04 โ€” OpenAI upload uses `client.beta.vector_stores`.** `openai.py:260-280`; pin `openai>=1.0.0` โ€” promoted to `client.vector_stores` in newer SDKs; deprecated path may raise. *Fix:* prefer top-level with fallback; pin a known-good range. `Confirmed (Conf: Low)` +- **ADP-05 โ€” Unquoted YAML name/description in Claude frontmatter.** `claude.py:76-80` โ€” colon-space / leading-quote in `description` produces invalid YAML (OpenCode/IBM-Bob quote; Claude doesn't). *Fix:* quote/escape the values. `Confirmed` +- **ADP-06 โ€” Enhance renames SKILL.md to `.backup` before writing; empty response loses it.** `openai_compatible.py:349-357` (+ openai/gemini/claude) โ€” a successful-but-empty/None response leaves the dir with no `SKILL.md`. *Fix:* validate non-empty before renaming; write-temp-then-swap. `Confirmed` +- **ADP-07 โ€” LlamaIndex uses `format="hex"` while base docstring claims uuid5.** `llama_index.py:43` vs `base.py:481` โ€” doc/behavior mismatch only (hex ids are valid). *Fix:* correct the docstring. `Confirmed` +- *Verified correct:* the thin OpenAI-compatible subclasses (kimi/deepseek/qwen/openrouter/together/fireworks/minimax) have correct, distinct model ids / endpoints / env vars / registry keys; vector-DB dimensions/metrics are consistent. + +## MCP +- **MCP-07 โ€” `config_publisher` commit `action` term is meaningless.** `config_publisher.py:204` โ€” `target_file.exists()` is always True post-copy. *Fix:* capture existence before copy, or use `"update" if force else "add"`. `Confirmed` +- **MCP-08 โ€” Three tool params typed `str` but default `None`.** `server_fastmcp.py:1342,1403,1404` โ€” should be `str | None`; schema advertises non-nullable. `Confirmed` +- **MCP-09 โ€” `enhance_skill` returns identical shape on success/failure.** `tools/packaging_tools.py:329-344` โ€” callers can't distinguish without substring scanning. *Fix:* structured error signal. `Confirmed` +- **MCP-10 โ€” `sync_config` wrapper hardcodes `max_pages=500`.** `server_fastmcp.py:279` vs `tools/sync_config_tools.py:40` โ€” the impl's `DEFAULTS` (-1/unlimited) default is dead; MCP path silently caps at 500. *Fix:* default to `None`, forward only if set. `Confirmed` +- **MCP-11 โ€” Unlimited temp path is non-unique and uses `str.replace`.** `tools/scraping_tools.py:169` โ€” `config_path.replace(".json", "_unlimited_temp.json")` collides on concurrency and rewrites any `.json` substring. *Fix:* `tempfile.mkstemp`. `Confirmed` +- **โ˜…MCP-14 โ€” `config_publisher` left on the feature branch after a mid-flow exception.** `config_publisher.py:198-219` โ€” no try/finally to restore `branch`; a push failure strands the cache on `config/`. *Fix:* restore branch in `finally`. `Confirmed` +- **โ˜…MCP-15 โ€” `package_skill_tool` returncode swallowed in `install_skill`.** `tools/packaging_tools.py:85-143` โ€” no success check after packaging; a failed package still yields a fabricated `zip_path`. *Fix:* structured success signal; abort on failure. `Confirmed` +- **โ˜…MCP-16 โ€” `generate_config` silently overwrites an existing config.** `tools/config_tools.py:80-84` โ€” no `exists()`/`force` guard; clobbers hand-edited configs. *Fix:* add a `force` arg and guard. `Confirmed` +- **โ˜…MCP-17 โ€” `_run_converter` attaches a handler to the shared `skill_seekers` logger.** `tools/scraping_tools.py:41-70` โ€” concurrent converter tools cross-contaminate captured logs. *Fix:* per-call scoped capture. `Confirmed` + +## Codebase analysis +- **CBA-11 โ€” Comment extractors match `//` / `/* */` inside string literals.** `code_analyzer.py:581,588` โ€” URLs in strings yield phantom comments. *Fix:* strip string literals first. `Confirmed` +- **CBA-12 โ€” Single-letter CSS classes `c`/`r` matched as C/R.** `language_detector.py:688,708` โ€” bare-name branch returns confidence 1.0 for ambiguous tokens. *Fix:* require a prefix for `c`/`r`. `Confirmed` +- **โ˜…CBA-16 โ€” Go grouped-import line numbers off by one.** `dependency_analyzer.py:495` โ€” uses `match.start()` (at `import`) instead of `match.start(1)` (after `import (\n`). *Fix:* `block_start = match.start(1)`. `Confirmed` + +## Codebase analysis (guides) +- **CBB-09 โ€” Duplicate `LANGUAGE_ALIASES`; `c++โ†’cpp` but no `cpp` in `PATTERNS`.** `test_example_extractor.py:731-743` โ€” C++ test files silently yield nothing. *Fix:* remove the dup; add `cpp` patterns or drop the alias. `Confirmed` +- **CBB-10 โ€” Space-form `ENV KEY VALUE` dropped; `_infer_purpose` substring-matches.** `config_extractor.py:601-611,350` โ€” legacy ENV skipped; `"db" in "dbeaver"`. *Fix:* handle space form; token-boundary match. `Confirmed` +- **CBB-11 โ€” Step code fences hardcoded ```python```.** `how_to_guide_builder.py:650,663,679` โ€” wrong highlighting for non-Python guides despite `guide.language`. *Fix:* `f"```{guide.language}"`. `Confirmed` +- **โ˜…CBB-14 โ€” Basic-mode maps best_practices onto step explanations by index.** `how_to_guide_builder.py:1098-1101` โ€” unrelated best-practice strings attached to steps positionally. *Fix:* render as a separate list. `Confirmed` +- **โ˜…CBB-15 โ€” `ast.unparse(node.body)` on a statement list for `setUp`.** `test_example_extractor.py:266-271` โ€” relies on undocumented unparse-of-list behavior. *Fix:* `"\n".join(ast.unparse(s) for s in node.body)`. `Confirmed` +- **โ˜…CBB-16 โ€” Regex `group(1)` assumption โ†’ `Test: None` for Kotlin/GDScript/C#.** `test_example_extractor.py:762-769` โ€” alternation patterns put the name in group 2/3; `group(1)` is None, and the body-slice re-search can land inside the current body. *Fix:* `next((g for g in match.groups() if g), match.group(0))`. `Confirmed` +- **โ˜…CBB-17 โ€” Redundant triple-fetch of `ai_analysis` with divergent null handling.** `how_to_guide_builder.py:957-961, 995, 1004-1012` โ€” maintenance hazard. *Fix:* fetch once, reuse. `Confirmed` + +## Document scrapers +- **DOC-08 โ€” llms.txt sections with identical titles overwrite each other.** `doc_scraper.py:867-875` โ€” same title โ†’ same URL โ†’ same `{safe_title}_{url_hash}` filename. *Corrected:* narrow (identical-title sections only), not the general case. *Fix:* add a section index/counter. `Corrected` +- **DOC-09 โ€” Parallel/async submit guard off-by-one (`<=` vs `<`).** `doc_scraper.py:1523,1647` vs `1457` โ€” parallel mode over-scrapes `max_pages` by โ‰ฅ1. *Fix:* use `<`. `Confirmed` +- **DOC-10 โ€” `is_valid_url` rejects the exact base page.** `doc_scraper.py:301-303` โ€” trailing-slash `base_dir` drops the slashless base URL. *Corrected:* negligible โ€” the start page is enqueued directly via `start_urls`. *Fix:* also accept `url == base_url`. `Corrected (negligible)` +- **DOC-11 โ€” EPUB section images written as 0-byte files with broken links.** `epub_scraper.py:984-994` + `598-613` โ€” `data=b""` passes the `isinstance(bytes)` check โ†’ 0-byte PNG + `![Image]` link. *Fix:* `if isinstance(...) and len(data) > 0`. `Confirmed` +- **DOC-12 โ€” `_extract_html_as_markdown` returns `links=[]` โ†’ BFS dead-ends.** `doc_scraper.py:509-510,667-711` โ€” a `.md` URL serving HTML contributes no further links. *Fix:* extract same-prefix links. `Confirmed` +- **DOC-13 โ€” `_extract_tables` drops body rows equal to the header.** `html_scraper.py:868-872` (+ shared helper, confluence) โ€” `cells != headers` drops legitimate data rows. *Fix:* skip the first row only when it came from ``. `Confirmed` +- **DOC-14 โ€” Non-atomic checkpoint/page writes corrupt on interrupt.** `doc_scraper.py:334, 874` (the earlier-cited :771 is unrelated) โ€” direct `open(...,'w')`; a second Ctrl-C truncates the checkpoint, and `load_checkpoint` silently starts fresh, losing progress. *Fix:* temp-file + `os.replace`. `Confirmed` +- **DOC-15 โ€” `int(img.get("width") or 0)` crashes on `"100%"`/`"50px"`.** `html_scraper.py:911-912` (crash), `word_scraper.py:826` (silently drops image), `epub_scraper.py:991` (crash). *Fix:* parse leading digits defensively. `Confirmed` +- **โ˜…DOC-16 โ€” Async dry-run discovered links bypass the cap.** `doc_scraper.py:1647-1664` โ€” combined with DOC-06, async `--dry-run` issues real GETs across the whole site. *Fix:* the DOC-06 fix bounds this. `Confirmed` +- **โ˜…DOC-17 โ€” pdf legacy image branch writes raw `img["data"]` with no guard.** `pdf_scraper.py:341-356` โ€” `b""` โ†’ 0-byte file; missing/non-bytes โ†’ `KeyError`/`TypeError` aborts the reference-file write. *Fix:* `isinstance`/non-empty guard + `.get`. `Confirmed` +- **โ˜…DOC-18 โ€” `smart_categorize` output is config-order-dependent.** `doc_scraper.py:1809-1846` โ€” corollary of DOC-02; identical configs differing only in key order produce different groupings. *Fix:* same as DOC-02 (pick max, stable tiebreak). `Confirmed` + +## Media / structured / remote scrapers +- **MED-05 โ€” `VideoScraperResult.to_dict()` drops `config`.** `video_models.py:827-848` โ€” `--from-json` reload loses clip range/languages/whisper model. *Corrected:* latent โ€” no current reader of `result.config`. *Fix:* serialize/restore `config`. `Corrected (latent)` +- **MED-06 โ€” `.man` files dropped when `--sections` is set.** `man_scraper.py:317-353` โ€” section-less `.man` pages have `section_num=None`, never in the list. *Fix:* only filter when `section_num is not None`. `Confirmed` +- **MED-07 โ€” OpenAPI `$ref` has no cycle set.** `openapi_scraper.py:775-855` โ€” self-referential schemas expand to the depth-10 cap (bounded โ€” no hang). *Fix:* track visited ref names; emit a stub on cycle. `Confirmed` +- **MED-08 โ€” RSS link-following has no global time budget.** `rss_scraper.py:191-206,484-489` โ€” serial, 15s/req + 1s sleep; ~13 min on a 50-entry feed with slow hosts. *Fix:* time budget or concurrency. `Confirmed` +- **MED-09 โ€” Confluence pagination compares against constant `limit`.** `confluence_scraper.py:455-528` โ€” `if len(batch) < limit` uses 50, not the requested `min(...)`. *Corrected:* sloppy but not a reachable premature-stop (outer `while` already bounds it). *Fix:* compare against the requested size. `Corrected` +- **MED-10 โ€” OCR keyframe temp JPEGs never deleted.** `video_visual.py:702-715` โ€” `delete=False`, never unlinked. *Corrected:* `extract_keyframes` is dead code (no production caller); the active pipeline writes intended output frames and cleans stale ones. *Fix:* delete the dead function or have it clean up. `Corrected (dead code)` +- **MED-11 โ€” Confluence `created` only set for version-1 pages.** `confluence_scraper.py:494-498` โ€” empty for all edited pages. *Fix:* use `history.createdDate`. `Confirmed` +- **MED-12 โ€” `get_releases()` / file-tree walk uncapped.** `github_scraper.py:686-708, 939-968` โ€” unlike issues' `islice`, can exhaust the rate-limit quota on large repos. *Fix:* `islice` / depth cap. `Confirmed` +- **MED-13 โ€” `max_pages: int` assigned `float("inf")`.** `notion_scraper.py:96-98`, `confluence_scraper.py:241-243` โ€” type-annotation lie; works only because comparisons accept inf. *Fix:* `sys.maxsize` or annotate `float`. `Confirmed` +- **MED-14 โ€” Video AI ref cleaning accepts any response >50% of input.** `video_scraper.py:299-312` โ€” no `stop_reason` check; a truncated (>50%) response overwrites the reference file. *Fix:* require `stop_reason == "end_turn"`. `Confirmed` +- **โ˜…MED-15 โ€” OpenAPI external/relative `$ref` left as an unresolved stub.** `openapi_scraper.py:916-943` โ€” only `#/`-refs resolve; multi-file bundles emit stubs with a debug-only log. *Fix:* pre-bundle, or warn + mark `_ref_unresolved`. `Confirmed` +- **โ˜…MED-16 โ€” Discord `before = batch[-1]["id"]` `KeyError` on malformed message.** `chat_scraper.py:875` โ€” aborts the whole fetch. *Fix:* `.get("id")` + break. `Confirmed` +- **โ˜…MED-17 โ€” Slack `conversations_list` is single-page.** `chat_scraper.py:654-662` โ€” no `next_cursor`; >200 channels truncated. *Fix:* paginate via `response_metadata.next_cursor`. `Confirmed` +- **โ˜…MED-18 โ€” GitHub "all" mode `//2` quota split under-fetches.** `github_fetcher.py:289-297` โ€” rigid open/closed split never reallocates unused quota; magnifies MED-01. *Fix:* fetch open then request `max - len(open)` closed. `Confirmed` + +## Enhancement + builder +- **ENH-13 โ€” Unknown provider โ†’ `_init_api_client` returns None, mode stays "api".** `agent_client.py:219-254` โ€” `_call_api` then silently returns None (no fallback to LOCAL). *Fix:* `else:` raise or set `self.mode = "local"`. `Confirmed` +- **ENH-14 โ€” `quality_metrics --threshold` parsed but never used.** `quality_metrics.py:542` โ€” `main()` always returns 0, so quality gating is a no-op (also a 0-10 vs percentage scale mismatch). *Fix:* compare the score and return non-zero. `Confirmed` +- **ENH-15 โ€” `prompt_file.write_text` missing `encoding="utf-8"`.** `agent_client.py:393` โ€” `UnicodeEncodeError` on non-UTF-8 locales for emoji/CJK prompts (every read uses utf-8). *Fix:* add `encoding="utf-8"`. `Confirmed` +- **โ˜…ENH-16 โ€” `_call_api` error classification by name substring.** `agent_client.py:317-353` โ€” `"auth"/"rate" in type-name` misfires; a 429 whose class lacks "rate" gets a generic message. *Fix:* branch on HTTP status / typed SDK exceptions. `Confirmed (diagnostic)` +- **โ˜…ENH-17 โ€” PDF content dropped when base SKILL.md lacks a Reference heading.** `unified_skill_builder.py:619-623, 659-663` โ€” `insertion_index == -1` โ†’ assembled PDF lines silently discarded (no append-at-end fallback, unlike the docs+github+pdf path). *Fix:* append at end when no heading found. `Confirmed` + +## Args / infra +- **INF-06 โ€” `--skip-config` is an orphan flag.** `arguments/create.py:427-433` โ€” dest `skip_config` read nowhere (the real flag is `--skip-config-patterns`). *Fix:* remove or alias. `Confirmed` +- **INF-07 โ€” Azure server-side copy uses an unauthenticated source URL.** `storage/azure_storage.py:223` โ€” `start_copy_from_url(source_blob.url)` (no SAS) โ†’ 403 on private containers (S3/GCS are fine). *Fix:* append a short-lived read SAS. `Confirmed` +- **INF-08 โ€” `presets/` package is dead code.** `presets/manager.py`, `presets/analyze_presets.py` โ€” imported by no command (analyze parser not registered). Latent: `resolve_enhance_level` assumes `enhance_level` defaults to `None`, but the analyze parser forces `0`, so `--enhance` would be dead if revived. *Fix:* delete, or set the default back to `None`. `Confirmed` +- **โ˜…INF-09 โ€” `create --no-preserve-code-blocks` / `--no-preserve-paragraphs` inert.** `arguments/create.py:810-822` โ€” registered for `create` but read nowhere in `_args_to_data`/`_build_config` (only the `package` command consumes them). *Fix:* wire into the RAG config or drop from `create`. `Confirmed` +- **โ˜…INF-10 โ€” `create --preset/-p` consumed nowhere.** `arguments/create.py:75-82` โ€” the only reader lives in the dead `presets` package; `--preset comprehensive` is parsed and discarded. *Fix:* wire to analysis depth/features or remove. `Confirmed` + +--- + +# Appendix A โ€” Investigated and dismissed / corrected severity + +These were checked against the source and are **not** defects (or were materially downgraded). Recorded for coverage. + +- **C6 โ†’ DOC-01 (pdf `next(iter(...))` StopIteration).** *Downgraded Critical โ†’ Low (not in body).* The `elif self.categories:` guard means a plain dict is non-empty there, so `next(iter(values()))` cannot raise; it is only a defensive inconsistency vs the siblings (which pass `, None`). Low-priority robustness fix: add the `, None` default at `pdf_scraper.py:192`. +- **CLI `_validate_arguments` false "not applicable" warnings โ€” FALSE POSITIVE.** `create_command.py:111-136`. Verified every argument dict key equals its argparse dest, so the compatible-set membership check aligns; warnings only fire for genuinely-incompatible args. +- **CBA GDScript `class_name` line via `.count("\n")` โ€” FALSE POSITIVE (correctness).** `code_analyzer.py:1988`. Produces the identical line number as `_offset_to_line`; only a style/perf nit. +- **CBB JS/TS config extraction duplicate settings โ€” FALSE POSITIVE.** `config_extractor.py:584-586`. The three regexes are mutually exclusive per declaration; tested, no duplicate emissions. (A separate `version = 1.5` โ†’ `1` truncation defect exists but was not the claim.) +- **DOC PDF chapter-boundary chunk inverts start/end โ€” FALSE POSITIVE.** `pdf_extractor_poc.py:660-669`. The non-empty-`current_chunk` guard guarantees `end_page โ‰ฅ start_page`. +- **ENH `enhance --model` dropped โ€” CORRECTED (dead path).** `enhance_skill_local.py:1312-1340` does drop `--model`, but it's an unreachable legacy `main()`; the shipped `enhance` command routes through `enhance_command.py`, which forwards `--model` correctly to `enhance_skill.py` (which accepts it). +- **Scan archive/diff ordering & `set_api_key` display name โ€” FALSE POSITIVE.** `scan_command.py:1137-1143` ordering is correct by design; `config_manager.py` `capitalize()` is display-only (the real defect is the env_map omission, SCAN-03). + +--- + +# Appendix B โ€” Systemic patterns + +Cross-cutting root causes worth fixing once rather than per-site: + +- **S1 โ€” Truncated/empty LLM output accepted as complete.** No `stop_reason`/`finish_reason` check: ENH-01 (`enhance_skill`/`agent_client`), ENH-11 (Gemini), MED-14 (video), ADP-06 (rename-before-write). Add a single "complete and non-empty?" gate before any overwrite, and always write-temp-then-swap. +- **S2 โ€” SKILL.md nav links derived differently from reference filenames.** DOC-07 (pdf/html/word/epub) + MED-04 (jupyter/asciidoc/pptx): 7 scrapers link to `sanitize(title).md` while files use range/basename names. Extract one `_ref_filename()` helper per scraper and use it for both writing and nav. (โ˜…MED-N5: PPTX duplicates the naming logic in 3 places.) +- **S3 โ€” Success/failure inferred from emoji/text substrings.** MCP-05 (`"โŒ"`), MCP-09/โ˜…MCP-15 (enhance/package), ENH-04 (Kimi regex). Return structured status/returncodes; never scan stdout for `โŒ`. +- **S4 โ€” `A or B and C` precedence bugs.** CBA-01, CBA-05, CBA-06, CBB-06. Audit every multi-clause boolean for missing parentheses. +- **S5 โ€” Shared-mutable-list aliasing.** CBB-03 (`common_problems.remove`), CBB-12 (`dependencies=imports`). Copy lists at construction (`list(...)`). +- **S6 โ€” Pagination / `max_pages` inconsistency.** MED-01/โ˜…MED-18 (github), MED-02/โ˜…MED-17 (slack), MED-03/โ˜…MED-16 (discord), MED-09 (confluence), DOC-04/DOC-09 (doc_scraper), MED-13 (`inf`-as-`int`). Standardize a cursor-following helper with explicit caps. +- **S7 โ€” Negativeโ†’positive flag translation gaps & inert flags.** CLI-01 (`--no-*`), INF-06/INF-09/INF-10 (`--skip-config`, `--no-preserve-*`, `--preset`). Add a registration test asserting every declared arg's dest is read somewhere. +- **S8 โ€” Library modules calling `logging.basicConfig`.** SCAN-06, โ˜…CLI-09. Only the entry point should configure logging. +- **S9 โ€” Provider/model/timeout plumbing not threaded to the SDK call.** ENH-02, ENH-06, ENH-11, ENH-12. Centralize provider detection and request-option passing in one place. + +--- + +# Suggested fix order + +1. **S1 + ENH-01** (silent data loss of the primary artifact) โ€” highest blast radius, low risk. +2. **SCAN-01, CBB-01, MCP-01(+โ˜…MCP-12/13/14), CBA-13** (core features silently broken) โ€” small, surgical fixes. +3. **CLI-01, CLI-02(+โ˜…CLI-07), SCAN-02** (user-visible flag/crash bugs on the main `create`/`scan` paths). +4. **S3 + S6** (MCP install/upload reliability; scraper pagination correctness). +5. **CBA-01..04 + โ˜…CBA-13..16** (pattern/dependency-analysis correctness โ€” many share the precedence/regex root causes in S4). +6. Medium/Low by subsystem as code is touched. diff --git a/docs/DOCKER_DEPLOYMENT.md b/docs/DOCKER_DEPLOYMENT.md new file mode 100644 index 0000000..c9b8072 --- /dev/null +++ b/docs/DOCKER_DEPLOYMENT.md @@ -0,0 +1,762 @@ +# Docker Deployment Guide + +Complete guide for deploying Skill Seekers using Docker. + +## Table of Contents + +- [Quick Start](#quick-start) +- [Building Images](#building-images) +- [Running Containers](#running-containers) +- [Docker Compose](#docker-compose) +- [Configuration](#configuration) +- [Data Persistence](#data-persistence) +- [Networking](#networking) +- [Monitoring](#monitoring) +- [Troubleshooting](#troubleshooting) + +## Quick Start + +### Single Container Deployment + +```bash +# Pull pre-built image (when available) +docker pull skillseekers/skillseekers:latest + +# Or build locally +docker build -t skillseekers:latest . + +# Run MCP server +docker run -d \ + --name skillseekers-mcp \ + -p 8765:8765 \ + -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ + -e GITHUB_TOKEN=$GITHUB_TOKEN \ + -v skillseekers-data:/app/data \ + --restart unless-stopped \ + skillseekers:latest +``` + +### Multi-Service Deployment + +```bash +# Start all services +docker-compose up -d + +# Check status +docker-compose ps + +# View logs +docker-compose logs -f +``` + +## Building Images + +### 1. Production Image + +The Dockerfile uses multi-stage builds for optimization: + +```dockerfile +# Build stage +FROM python:3.12-slim as builder +WORKDIR /build +COPY requirements.txt . +RUN pip install --user --no-cache-dir -r requirements.txt + +# Runtime stage +FROM python:3.12-slim +WORKDIR /app +COPY --from=builder /root/.local /root/.local +COPY . . +ENV PATH=/root/.local/bin:$PATH +CMD ["python", "-m", "skill_seekers.mcp.server_fastmcp"] +``` + +**Build the image:** + +```bash +# Standard build +docker build -t skillseekers:latest . + +# Build with specific features +docker build \ + --build-arg INSTALL_EXTRAS="all-llms,embedding" \ + -t skillseekers:full \ + . + +# Build with cache +docker build \ + --cache-from skillseekers:latest \ + -t skillseekers:v3.6.0 \ + . +``` + +### 2. Development Image + +```dockerfile +# Dockerfile.dev +FROM python:3.12 +WORKDIR /app +RUN pip install -e ".[dev]" +COPY . . +CMD ["python", "-m", "skill_seekers.mcp.server_fastmcp", "--reload"] +``` + +**Build and run:** + +```bash +docker build -f Dockerfile.dev -t skillseekers:dev . + +docker run -it \ + --name skillseekers-dev \ + -p 8765:8765 \ + -v $(pwd):/app \ + skillseekers:dev +``` + +### 3. Image Optimization + +**Reduce image size:** + +```bash +# Multi-stage build +FROM python:3.12-slim as builder +... +FROM python:3.12-alpine # Smaller base + +# Remove build dependencies +RUN pip install --no-cache-dir ... && \ + rm -rf /root/.cache + +# Use .dockerignore +echo ".git" >> .dockerignore +echo "tests/" >> .dockerignore +echo "*.pyc" >> .dockerignore +``` + +**Layer caching:** + +```dockerfile +# Copy requirements first (changes less frequently) +COPY requirements.txt . +RUN pip install -r requirements.txt + +# Copy code later (changes more frequently) +COPY . . +``` + +## Running Containers + +### 1. MCP Server + +```bash +# HTTP transport (recommended for production) +docker run -d \ + --name skillseekers-mcp \ + -p 8765:8765 \ + -e MCP_TRANSPORT=http \ + -e MCP_PORT=8765 \ + -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ + -v skillseekers-data:/app/data \ + --restart unless-stopped \ + skillseekers:latest + +# stdio transport (for local tools) +docker run -it \ + --name skillseekers-stdio \ + -e MCP_TRANSPORT=stdio \ + skillseekers:latest +``` + +### 2. Embedding Server + +```bash +docker run -d \ + --name skillseekers-embed \ + -p 8000:8000 \ + -e OPENAI_API_KEY=$OPENAI_API_KEY \ + -e VOYAGE_API_KEY=$VOYAGE_API_KEY \ + -v skillseekers-cache:/app/cache \ + --restart unless-stopped \ + skillseekers:latest \ + python -m skill_seekers.embedding.server --host 0.0.0.0 --port 8000 +``` + +### 3. Sync Monitor + +```bash +docker run -d \ + --name skillseekers-sync \ + -e SYNC_WEBHOOK_URL=$SYNC_WEBHOOK_URL \ + -v skillseekers-configs:/app/configs \ + --restart unless-stopped \ + skillseekers:latest \ + skill-seekers-sync start --config configs/react.json +``` + +### 4. Interactive Commands + +```bash +# Run scraping +docker run --rm \ + -e GITHUB_TOKEN=$GITHUB_TOKEN \ + -v $(pwd)/output:/app/output \ + skillseekers:latest \ + skill-seekers create --config configs/react.json + +# Generate skill +docker run --rm \ + -v $(pwd)/output:/app/output \ + skillseekers:latest \ + skill-seekers package output/react/ + +# Interactive shell +docker run --rm -it \ + skillseekers:latest \ + /bin/bash +``` + +## Docker Compose + +### 1. Basic Setup + +**docker-compose.yml:** + +```yaml +version: '3.8' + +services: + mcp-server: + image: skillseekers:latest + container_name: skillseekers-mcp + ports: + - "8765:8765" + environment: + - MCP_TRANSPORT=http + - MCP_PORT=8765 + - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} + - GITHUB_TOKEN=${GITHUB_TOKEN} + - LOG_LEVEL=INFO + volumes: + - skillseekers-data:/app/data + - skillseekers-logs:/app/logs + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8765/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + embedding-server: + image: skillseekers:latest + container_name: skillseekers-embed + ports: + - "8000:8000" + environment: + - OPENAI_API_KEY=${OPENAI_API_KEY} + - VOYAGE_API_KEY=${VOYAGE_API_KEY} + volumes: + - skillseekers-cache:/app/cache + command: ["python", "-m", "skill_seekers.embedding.server", "--host", "0.0.0.0"] + restart: unless-stopped + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000/health"] + interval: 30s + + nginx: + image: nginx:alpine + container_name: skillseekers-nginx + ports: + - "80:80" + - "443:443" + volumes: + - ./nginx.conf:/etc/nginx/nginx.conf:ro + - ./certs:/etc/nginx/certs:ro + depends_on: + - mcp-server + - embedding-server + restart: unless-stopped + +volumes: + skillseekers-data: + skillseekers-logs: + skillseekers-cache: +``` + +### 2. With Monitoring Stack + +**docker-compose.monitoring.yml:** + +```yaml +version: '3.8' + +services: + # ... (previous services) + + prometheus: + image: prom/prometheus:latest + container_name: skillseekers-prometheus + ports: + - "9090:9090" + volumes: + - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro + - prometheus-data:/prometheus + command: + - '--config.file=/etc/prometheus/prometheus.yml' + - '--storage.tsdb.path=/prometheus' + restart: unless-stopped + + grafana: + image: grafana/grafana:latest + container_name: skillseekers-grafana + ports: + - "3000:3000" + environment: + - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} + volumes: + - grafana-data:/var/lib/grafana + - ./grafana/dashboards:/etc/grafana/provisioning/dashboards:ro + restart: unless-stopped + + loki: + image: grafana/loki:latest + container_name: skillseekers-loki + ports: + - "3100:3100" + volumes: + - loki-data:/loki + restart: unless-stopped + +volumes: + prometheus-data: + grafana-data: + loki-data: +``` + +### 3. Commands + +```bash +# Start services +docker-compose up -d + +# Start with monitoring +docker-compose -f docker-compose.yml -f docker-compose.monitoring.yml up -d + +# Check status +docker-compose ps + +# View logs +docker-compose logs -f mcp-server + +# Scale services +docker-compose up -d --scale mcp-server=3 + +# Stop services +docker-compose down + +# Stop and remove volumes +docker-compose down -v +``` + +## Configuration + +### 1. Environment Variables + +**Using .env file:** + +```bash +# .env +ANTHROPIC_API_KEY=sk-ant-... +GITHUB_TOKEN=ghp_... +OPENAI_API_KEY=sk-... +VOYAGE_API_KEY=... +LOG_LEVEL=INFO +MCP_PORT=8765 +``` + +**Load in docker-compose:** + +```yaml +services: + mcp-server: + env_file: + - .env +``` + +### 2. Config Files + +**Mount configuration:** + +```bash +docker run -d \ + -v $(pwd)/configs:/app/configs:ro \ + skillseekers:latest +``` + +**docker-compose.yml:** + +```yaml +services: + mcp-server: + volumes: + - ./configs:/app/configs:ro +``` + +### 3. Secrets Management + +**Docker Secrets (Swarm mode):** + +```bash +# Create secrets +echo $ANTHROPIC_API_KEY | docker secret create anthropic_key - +echo $GITHUB_TOKEN | docker secret create github_token - + +# Use in service +docker service create \ + --name skillseekers-mcp \ + --secret anthropic_key \ + --secret github_token \ + skillseekers:latest +``` + +**docker-compose.yml (Swarm):** + +```yaml +version: '3.8' + +secrets: + anthropic_key: + external: true + github_token: + external: true + +services: + mcp-server: + secrets: + - anthropic_key + - github_token + environment: + - ANTHROPIC_API_KEY_FILE=/run/secrets/anthropic_key +``` + +## Data Persistence + +### 1. Named Volumes + +```bash +# Create volume +docker volume create skillseekers-data + +# Use in container +docker run -v skillseekers-data:/app/data skillseekers:latest + +# Backup volume +docker run --rm \ + -v skillseekers-data:/data \ + -v $(pwd):/backup \ + alpine \ + tar czf /backup/backup.tar.gz /data + +# Restore volume +docker run --rm \ + -v skillseekers-data:/data \ + -v $(pwd):/backup \ + alpine \ + sh -c "cd /data && tar xzf /backup/backup.tar.gz --strip 1" +``` + +### 2. Bind Mounts + +```bash +# Mount host directory +docker run -v /opt/skillseekers/output:/app/output skillseekers:latest + +# Read-only mount +docker run -v $(pwd)/configs:/app/configs:ro skillseekers:latest +``` + +### 3. Data Migration + +```bash +# Export from container +docker cp skillseekers-mcp:/app/data ./data-backup + +# Import to new container +docker cp ./data-backup new-container:/app/data +``` + +## Networking + +### 1. Bridge Network (Default) + +```bash +# Containers can communicate by name +docker network create skillseekers-net + +docker run --network skillseekers-net skillseekers:latest +``` + +### 2. Host Network + +```bash +# Use host network stack +docker run --network host skillseekers:latest +``` + +### 3. Custom Network + +**docker-compose.yml:** + +```yaml +networks: + frontend: + driver: bridge + backend: + driver: bridge + internal: true # No external access + +services: + nginx: + networks: + - frontend + + mcp-server: + networks: + - frontend + - backend + + database: + networks: + - backend +``` + +## Monitoring + +### 1. Health Checks + +```yaml +services: + mcp-server: + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8765/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s +``` + +### 2. Resource Limits + +```yaml +services: + mcp-server: + deploy: + resources: + limits: + cpus: '2.0' + memory: 4G + reservations: + cpus: '1.0' + memory: 2G +``` + +### 3. Logging + +```yaml +services: + mcp-server: + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + labels: "service=mcp" + + # Or use syslog + logging: + driver: "syslog" + options: + syslog-address: "udp://192.168.1.100:514" +``` + +### 4. Metrics + +```bash +# Docker stats +docker stats skillseekers-mcp + +# cAdvisor for metrics +docker run -d \ + --name cadvisor \ + -p 8080:8080 \ + -v /:/rootfs:ro \ + -v /var/run:/var/run:ro \ + -v /sys:/sys:ro \ + -v /var/lib/docker:/var/lib/docker:ro \ + gcr.io/cadvisor/cadvisor:latest +``` + +## Troubleshooting + +### Common Issues + +#### 1. Container Won't Start + +```bash +# Check logs +docker logs skillseekers-mcp + +# Inspect container +docker inspect skillseekers-mcp + +# Run with interactive shell +docker run -it --entrypoint /bin/bash skillseekers:latest +``` + +#### 2. Port Already in Use + +```bash +# Find process using port +sudo lsof -i :8765 + +# Kill process +kill -9 + +# Or use different port +docker run -p 8766:8765 skillseekers:latest +``` + +#### 3. Volume Permission Issues + +```bash +# Run as specific user +docker run --user $(id -u):$(id -g) skillseekers:latest + +# Fix permissions +docker run --rm \ + -v skillseekers-data:/data \ + alpine chown -R 1000:1000 /data +``` + +#### 4. Network Connectivity + +```bash +# Test connectivity +docker exec skillseekers-mcp ping google.com + +# Check DNS +docker exec skillseekers-mcp cat /etc/resolv.conf + +# Use custom DNS +docker run --dns 8.8.8.8 skillseekers:latest +``` + +#### 5. High Memory Usage + +```bash +# Set memory limit +docker run --memory=4g skillseekers:latest + +# Check memory usage +docker stats skillseekers-mcp + +# Enable memory swappiness +docker run --memory=4g --memory-swap=8g skillseekers:latest +``` + +### Debug Commands + +```bash +# Enter running container +docker exec -it skillseekers-mcp /bin/bash + +# View environment variables +docker exec skillseekers-mcp env + +# Check processes +docker exec skillseekers-mcp ps aux + +# View logs in real-time +docker logs -f --tail 100 skillseekers-mcp + +# Inspect container details +docker inspect skillseekers-mcp | jq '.[]' + +# Export container filesystem +docker export skillseekers-mcp > container.tar +``` + +## Production Best Practices + +### 1. Image Management + +```bash +# Tag images with versions +docker build -t skillseekers:2.9.0 . +docker tag skillseekers:2.9.0 skillseekers:latest + +# Use private registry +docker tag skillseekers:latest registry.example.com/skillseekers:latest +docker push registry.example.com/skillseekers:latest + +# Scan for vulnerabilities +docker scan skillseekers:latest +``` + +### 2. Security + +```bash +# Run as non-root user +RUN useradd -m -s /bin/bash skillseekers +USER skillseekers + +# Read-only root filesystem +docker run --read-only --tmpfs /tmp skillseekers:latest + +# Drop capabilities +docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE skillseekers:latest + +# Use security scanning +trivy image skillseekers:latest +``` + +### 3. Resource Management + +```yaml +services: + mcp-server: + # CPU limits + cpus: 2.0 + cpu_shares: 1024 + + # Memory limits + mem_limit: 4g + memswap_limit: 8g + mem_reservation: 2g + + # Process limits + pids_limit: 200 +``` + +### 4. Backup & Recovery + +```bash +# Backup script +#!/bin/bash +docker-compose down +tar czf backup-$(date +%Y%m%d).tar.gz volumes/ +docker-compose up -d + +# Automated backups +0 2 * * * /opt/skillseekers/backup.sh +``` + +## Next Steps + +- See [KUBERNETES_DEPLOYMENT.md](./KUBERNETES_DEPLOYMENT.md) for Kubernetes deployment +- Review [PRODUCTION_DEPLOYMENT.md](./PRODUCTION_DEPLOYMENT.md) for general production guidelines +- Check [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for common issues + +--- + +**Need help?** Open an issue on [GitHub](https://github.com/yusufkaraaslan/Skill_Seekers/issues). diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000..962c174 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,863 @@ +# Frequently Asked Questions (FAQ) + +**Version:** 3.6.0 +**Last Updated:** 2026-03-15 + +--- + +## General Questions + +### What is Skill Seekers? + +Skill Seekers is a Python tool that converts 18 source types โ€” documentation websites, GitHub repos, PDFs, videos, Word docs, EPUB books, Jupyter notebooks, local HTML files, OpenAPI specs, AsciiDoc, PowerPoint, RSS/Atom feeds, man pages, Confluence wikis, Notion pages, Slack/Discord exports, and local codebases โ€” into AI-ready formats for 21+ platforms: LLM platforms (Claude, Gemini, OpenAI, MiniMax, OpenCode, Kimi, DeepSeek, Qwen, OpenRouter, Together AI, Fireworks AI, Markdown), RAG frameworks (LangChain, LlamaIndex, Haystack), vector databases (ChromaDB, FAISS, Weaviate, Qdrant, Pinecone), and AI coding assistants (Cursor, Windsurf, Cline, Continue.dev, Roo, Aider, Bolt, Kilo, Kimi Code). + +**Use Cases:** +- Create custom documentation skills for your favorite frameworks +- Analyze GitHub repositories and extract code patterns +- Convert PDF manuals into searchable AI skills +- Import knowledge from Confluence, Notion, or Slack/Discord +- Extract content from videos (YouTube, Vimeo, local files) +- Convert Jupyter notebooks, EPUB books, or PowerPoint slides into skills +- Parse OpenAPI/Swagger specs into API reference skills +- Combine multiple sources (docs + code + PDFs + more) into unified skills + +### Which platforms are supported? + +**Supported Platforms (30+):** + +*LLM Platforms (12):* +1. **Claude AI** - ZIP format with YAML frontmatter +2. **Google Gemini** - tar.gz format for Grounded Generation +3. **OpenAI ChatGPT** - ZIP format for Vector Stores +4. **MiniMax** - ZIP format +5. **OpenCode** - ZIP format +6. **Kimi** - ZIP format +7. **DeepSeek** - ZIP format +8. **Qwen** - ZIP format +9. **OpenRouter** - ZIP format for multi-model routing +10. **Together AI** - ZIP format for open-source models +11. **Fireworks AI** - ZIP format for fast inference +12. **Generic Markdown** - ZIP format with markdown files + +*RAG Frameworks:* +13. **LangChain** - Document objects for QA chains and agents +14. **LlamaIndex** - TextNodes for query engines +15. **Haystack** - Document objects for enterprise RAG + +*Vector Databases:* +16. **ChromaDB** - Direct collection upload +17. **FAISS** - Index files for local similarity search +18. **Weaviate** - Vector objects with schema creation +19. **Qdrant** - Points with payload indexing +20. **Pinecone** - Ready-to-upsert format + +*AI Coding Assistants (9):* +21. **Cursor** - .cursorrules persistent context +22. **Windsurf** - .windsurfrules AI coding rules +23. **Cline** - .clinerules + MCP integration +24. **Continue.dev** - HTTP context server (all IDEs) +25. **Roo** - .roorules AI coding rules +26. **Aider** - Terminal AI coding assistant +27. **Bolt** - Web IDE AI context +28. **Kilo** - IDE AI context +29. **Kimi Code** - IDE AI context + +Each platform has a dedicated adaptor for optimal formatting and upload. + +### Is it free to use? + +**Tool:** Yes, Skill Seekers is 100% free and open-source (MIT license). + +**API Costs:** +- **Scraping:** Free (just bandwidth) +- **AI Enhancement (API mode):** ~$0.15-0.30 per skill (Claude API) +- **AI Enhancement (LOCAL mode):** Free! (uses your Claude Code Max plan) +- **Upload:** Free (platform storage limits apply) + +**Recommendation:** Use LOCAL mode for free AI enhancement or skip enhancement entirely. + +### How do I set up video extraction? + +**Quick setup:** +```bash +# 1. Install video support +pip install skill-seekers[video-full] + +# 2. Auto-detect GPU and install visual deps +skill-seekers create --setup +``` + +The `--setup` command auto-detects your GPU vendor (NVIDIA CUDA, AMD ROCm, or CPU-only) and installs the correct PyTorch variant along with easyocr and other visual extraction dependencies. This avoids the ~2GB NVIDIA CUDA download that would happen if easyocr were installed via pip on non-NVIDIA systems. + +**What it detects:** +- **NVIDIA:** Uses `nvidia-smi` to find CUDA version โ†’ installs matching `cu124`/`cu121`/`cu118` PyTorch +- **AMD:** Uses `rocminfo` to find ROCm version โ†’ installs matching ROCm PyTorch +- **CPU-only:** Installs lightweight CPU-only PyTorch + +### What source types are supported? + +Skill Seekers supports **18 source types**: + +| # | Source Type | CLI Command | Auto-Detection | +|---|------------|-------------|----------------| +| 1 | Documentation (web) | `scrape` / `create ` | HTTP/HTTPS URLs | +| 2 | GitHub repo | `github` / `create owner/repo` | `owner/repo` or github.com URLs | +| 3 | PDF | `pdf` / `create file.pdf` | `.pdf` extension | +| 4 | Word (.docx) | `word` / `create file.docx` | `.docx` extension | +| 5 | EPUB | `epub` / `create file.epub` | `.epub` extension | +| 6 | Video | `video` / `create ` | YouTube/Vimeo URLs, video extensions | +| 7 | Local codebase | `analyze` / `create ./path` | Directory paths | +| 8 | Jupyter Notebook | `jupyter` / `create file.ipynb` | `.ipynb` extension | +| 9 | Local HTML | `html` / `create file.html` | `.html`/`.htm` extensions | +| 10 | OpenAPI/Swagger | `openapi` / `create spec.yaml` | `.yaml`/`.yml` with OpenAPI content | +| 11 | AsciiDoc | `asciidoc` / `create file.adoc` | `.adoc`/`.asciidoc` extensions | +| 12 | PowerPoint | `pptx` / `create file.pptx` | `.pptx` extension | +| 13 | RSS/Atom | `rss` / `create feed.rss` | `.rss`/`.atom` extensions | +| 14 | Man pages | `manpage` / `create cmd.1` | `.1`-`.8`/`.man` extensions | +| 15 | Confluence | `confluence` | API or export directory | +| 16 | Notion | `notion` | API or export directory | +| 17 | Slack/Discord | `chat` | Export directory or API | + +The `create` command auto-detects the source type from your input, so you often don't need to specify a subcommand. + +### How long does it take to create a skill? + +**Typical Times:** +- Documentation scraping: 5-45 minutes (depends on size) +- GitHub analysis: 1-5 minutes (basic) or 20-60 minutes (C3.x deep analysis) +- PDF extraction: 30 seconds - 5 minutes +- Video extraction: 2-10 minutes (depends on length and visual analysis) +- Word/EPUB/PPTX: 10-60 seconds +- Jupyter notebook: 10-30 seconds +- OpenAPI spec: 5-15 seconds +- Confluence/Notion import: 1-5 minutes (depends on space size) +- AI enhancement: 30-60 seconds (LOCAL or API mode) +- Total workflow: 10-60 minutes + +**Speed Tips:** +- Use `--async` for 2-3x faster scraping +- Use `--skip-scrape` to rebuild without re-scraping +- Skip AI enhancement for faster workflow + +--- + +## Installation & Setup + +### How do I install Skill Seekers? + +```bash +# Basic installation +pip install skill-seekers + +# With all platform support +pip install skill-seekers[all-llms] + +# Development installation +git clone https://github.com/yusufkaraaslan/Skill_Seekers.git +cd Skill_Seekers +pip install -e ".[all-llms,dev]" +``` + +### What Python version do I need? + +**Required:** Python 3.10 or higher +**Tested on:** Python 3.10, 3.11, 3.12, 3.13 +**OS Support:** Linux, macOS, Windows (WSL recommended) + +**Check your version:** +```bash +python --version # Should be 3.10+ +``` + +### Why do I get "No module named 'skill_seekers'" error? + +**Common Causes:** +1. Package not installed +2. Wrong Python environment + +**Solutions:** +```bash +# Install package +pip install skill-seekers + +# Or for development +pip install -e . + +# Verify installation +skill-seekers --version +``` + +### How do I set up API keys? + +```bash +# Claude AI (for enhancement and upload) +export ANTHROPIC_API_KEY=sk-ant-... + +# Google Gemini (for upload) +export GOOGLE_API_KEY=AIza... + +# OpenAI ChatGPT (for upload) +export OPENAI_API_KEY=sk-... + +# GitHub (for higher rate limits) +export GITHUB_TOKEN=ghp_... + +# Make permanent (add to ~/.bashrc or ~/.zshrc) +echo 'export ANTHROPIC_API_KEY=sk-ant-...' >> ~/.bashrc +``` + +--- + +## Usage Questions + +### How do I scrape documentation? + +**Using preset config:** +```bash +skill-seekers create --config react +``` + +**Using custom URL:** +```bash +skill-seekers create https://docs.example.com --name my-framework +``` + +**From custom config file:** +```bash +skill-seekers create --config configs/my-framework.json +``` + +### How do I create skills for an entire project at once? + +Use `skill-seekers scan` โ€” an AI agent inspects the project's manifests, README, Dockerfile/CI, and source imports, then emits one config per detected framework plus a `-codebase.json` for your own code: + +```bash +# AI-detect frameworks and emit configs +skill-seekers scan ./my-react-app --out ./configs/scanned/ +# โ†’ react.json, typescript.json, vite.json, my-react-app-codebase.json + +# Then build any of them +skill-seekers create ./configs/scanned/react.json +``` + +Re-running `scan` against the same output directory reports diffs (added / version-bumped / removed) so you can keep skills in sync with your real dependencies. See [CLI Reference: scan](reference/CLI_REFERENCE.md#scan) for all flags. + +### Can I analyze GitHub repositories? + +Yes! Skill Seekers has powerful GitHub analysis: + +```bash +# Basic analysis (fast) +skill-seekers create https://github.com/facebook/react + +# Deep C3.x analysis (includes patterns, tests, guides) +skill-seekers create https://github.com/vercel/next.js --depth full +``` + +**C3.x Features:** +- Design pattern detection (10 GoF patterns) +- Test example extraction +- How-to guide generation +- Configuration pattern extraction +- Architectural overview +- API reference generation + +### Can I extract content from PDFs? + +Yes! PDF extraction with OCR support: + +```bash +# Basic PDF extraction +skill-seekers create --pdf manual.pdf --name product-manual + +# With OCR (for scanned PDFs) +skill-seekers create --pdf scanned.pdf --ocr + +# Images and tables are extracted automatically +skill-seekers create --pdf document.pdf +``` + +### How do I scrape a Jupyter Notebook? + +```bash +# Extract cells, outputs, and markdown from a notebook +skill-seekers create analysis.ipynb --name data-analysis + +# Or use auto-detection +skill-seekers create analysis.ipynb +``` + +Jupyter extraction preserves code cells, markdown cells, and cell outputs. It works with `.ipynb` files from JupyterLab, Google Colab, and other notebook environments. + +### How do I import from Confluence or Notion? + +**Confluence:** +```bash +# From Confluence Cloud API +export CONFLUENCE_URL=https://yourorg.atlassian.net +export CONFLUENCE_TOKEN=your-api-token +export CONFLUENCE_EMAIL=your-email@example.com +skill-seekers create --space-key MYSPACE --name my-wiki + +# From a Confluence HTML/XML export directory +skill-seekers create --conf-export-path ./confluence-export --name my-wiki +``` + +**Notion:** +```bash +# From Notion API +export NOTION_TOKEN=secret_... +skill-seekers create --database-id DATABASE_ID --name my-notes + +# From a Notion HTML/Markdown export directory +skill-seekers create --notion-export-path ./notion-export --name my-notes +``` + +### How do I convert Word, EPUB, or PowerPoint files? + +```bash +# Word document +skill-seekers create report.docx --name quarterly-report + +# EPUB book +skill-seekers create handbook.epub --name dev-handbook + +# PowerPoint presentation +skill-seekers create slides.pptx --name training-deck + +# Or use auto-detection for any of them +skill-seekers create report.docx +skill-seekers create handbook.epub +skill-seekers create slides.pptx +``` + +### How do I parse an OpenAPI/Swagger spec? + +```bash +# From a local YAML/JSON file +skill-seekers create api-spec.yaml --name my-api + +# Auto-detection works too +skill-seekers create api-spec.yaml +``` + +OpenAPI extraction parses endpoints, schemas, parameters, and examples into a structured API reference skill. + +### How do I extract content from RSS feeds or man pages? + +```bash +# RSS/Atom feed +skill-seekers create https://blog.example.com/feed.xml --name blog-feed + +# Man page +skill-seekers create grep.1 --name grep-manual +``` + +### How do I import from Slack or Discord? + +```bash +# From a Slack export directory +skill-seekers create --chat-export-path ./slack-export --platform slack --name team-knowledge + +# From a Discord export directory +skill-seekers create --chat-export-path ./discord-export --platform discord --name server-archive +``` + +### Can I combine multiple sources? + +Yes! Unified multi-source scraping: + +**Create unified config** (`configs/unified/my-framework.json`): +```json +{ + "name": "my-framework", + "sources": { + "documentation": { + "type": "docs", + "base_url": "https://docs.example.com" + }, + "github": { + "type": "github", + "repo_url": "https://github.com/org/repo" + }, + "pdf": { + "type": "pdf", + "pdf_path": "manual.pdf" + } + } +} +``` + +**Run unified scraping:** +```bash +skill-seekers create --config configs/unified/my-framework.json +``` + +### How do I upload skills to platforms? + +```bash +# Upload to Claude AI +export ANTHROPIC_API_KEY=sk-ant-... +skill-seekers upload output/react-claude.zip --target claude + +# Upload to Google Gemini +export GOOGLE_API_KEY=AIza... +skill-seekers upload output/react-gemini.tar.gz --target gemini + +# Upload to OpenAI ChatGPT +export OPENAI_API_KEY=sk-... +skill-seekers upload output/react-openai.zip --target openai +``` + +**Or use complete workflow (uploads by default):** +```bash +skill-seekers install --config react --target claude +``` + +--- + +## Platform-Specific Questions + +### What's the difference between platforms? + +| Feature | Claude AI | Google Gemini | OpenAI ChatGPT | Markdown | +|---------|-----------|---------------|----------------|----------| +| Format | ZIP + YAML | tar.gz | ZIP | ZIP | +| Upload API | Projects API | Corpora API | Vector Stores | N/A | +| Model | Sonnet 4.5 | Gemini 2.0 Flash | GPT-4o | N/A | +| Max Size | 32MB | 10MB | 512MB | N/A | +| Use Case | Claude Code | Grounded Gen | ChatGPT Custom | Export | + +**Choose based on:** +- Claude AI: Best for Claude Code integration +- Google Gemini: Best for Grounded Generation in Gemini +- OpenAI ChatGPT: Best for ChatGPT Custom GPTs +- MiniMax/Kimi/DeepSeek/Qwen: Best for Chinese LLM ecosystem +- OpenRouter/Together/Fireworks: Best for multi-model routing or open-source model access +- Markdown: Generic export for other tools + +### Can I use multiple platforms at once? + +Yes! Package and upload to all platforms: + +```bash +# Package for all platforms +for platform in claude gemini openai minimax kimi deepseek qwen openrouter together fireworks markdown; do + skill-seekers package output/react/ --target $platform +done + +# Install + upload per platform (one --target per run) +for platform in claude gemini openai; do + skill-seekers install --config react --target $platform +done +``` + +### How do I use skills in Claude Code? + +1. **Install skill to Claude Code directory:** +```bash +skill-seekers install-agent output/react/ --agent claude +``` + +2. **Use in Claude Code:** +``` +Use the react skill to explain React hooks +``` + +3. **Or upload to Claude AI:** +```bash +skill-seekers upload output/react-claude.zip --target claude +``` + +--- + +## Features & Capabilities + +### What is AI enhancement? + +AI enhancement transforms basic skills (2-3/10 quality) into production-ready skills (8-9/10 quality) using LLMs. + +**Two Modes (via AgentClient):** +1. **API Mode:** Multi-provider AI API calls -- Anthropic, Moonshot/Kimi, Gemini, OpenAI (fast, costs ~$0.15-0.30) +2. **LOCAL Mode:** Any supported coding agent -- Claude Code, Kimi, Codex, Copilot, OpenCode, or custom (free with agent subscription) + +**What it improves:** +- Better organization and structure +- Clearer explanations +- More examples and use cases +- Better cross-references +- Improved searchability + +**Usage:** +```bash +# API mode (if ANTHROPIC_API_KEY is set) +skill-seekers enhance output/react/ + +# LOCAL mode (free! โ€” auto-selected when no API key is set; pick the agent) +skill-seekers enhance output/react/ --agent claude + +# Background mode +skill-seekers enhance output/react/ --background +skill-seekers enhance-status output/react/ --watch +``` + +### What are C3.x features? + +C3.x features are advanced codebase analysis capabilities: + +- **C3.1:** Design pattern detection (Singleton, Factory, Strategy, etc.) +- **C3.2:** Test example extraction (real usage examples from tests) +- **C3.3:** How-to guide generation (educational guides from test workflows) +- **C3.4:** Configuration pattern extraction (env vars, config files) +- **C3.5:** Architectural overview (system architecture analysis) +- **C3.6:** AI enhancement (Claude API integration for insights) +- **C3.7:** Architectural pattern detection (MVC, MVVM, Repository, etc.) +- **C3.8:** Standalone codebase scraping (300+ line SKILL.md from code alone) + +**Enable C3.x:** +```bash +# All C3.x features enabled by default +skill-seekers create --directory /path/to/repo + +# Skip specific features +skill-seekers create --directory . --skip-patterns --skip-how-to-guides +``` + +### What are router skills? + +Router skills help Claude navigate large documentation (>500 pages) by providing a table of contents and keyword index. + +**When to use:** +- Documentation with 500+ pages +- Complex multi-section docs +- Large API references + +**Generate router (from split sub-skill configs):** +```bash +python -m skill_seekers.cli.generate_router configs/godot_*.json --name godot +``` +(Also available as the `generate_router` MCP tool.) + +### What preset configurations are available? + +**24 preset configs:** +- Web: react, vue, angular, svelte, nextjs +- Python: django, flask, fastapi, sqlalchemy, pytest +- Game Dev: godot, pygame, unity +- DevOps: docker, kubernetes, terraform, ansible +- Unified: react-unified, vue-unified, nextjs-unified, etc. + +**List all:** +```bash +skill-seekers estimate --all +``` + +--- + +## Troubleshooting + +### Scraping is very slow, how can I speed it up? + +**Solutions:** +1. **Use async mode** (2-3x faster): +```bash +skill-seekers create --config react --async +``` + +2. **Increase rate limit** (faster requests): +```json +{ + "rate_limit": 0.1 // Faster (but may hit rate limits) +} +``` + +3. **Limit pages**: +```json +{ + "max_pages": 100 // Stop after 100 pages +} +``` + +### Why are some pages missing? + +**Common Causes:** +1. **URL patterns exclude them** +2. **Max pages limit reached** +3. **BFS didn't reach them** + +**Solutions:** +```bash +# Check URL patterns in config +{ + "url_patterns": { + "include": ["/docs/"], // Make sure your pages match + "exclude": [] // Remove overly broad exclusions + } +} + +# Increase max pages +{ + "max_pages": 1000 // Default is 500 +} + +# Use verbose mode to see what's being scraped +skill-seekers create --config react --verbose +``` + +### How do I fix "NetworkError: Connection failed"? + +**Solutions:** +1. **Check internet connection** +2. **Verify URL is accessible**: +```bash +curl -I https://docs.example.com +``` + +3. **Increase timeout**: +```json +{ + "timeout": 30 // 30 seconds +} +``` + +4. **Check rate limiting**: +```json +{ + "rate_limit": 1.0 // Slower requests +} +``` + +### Tests are failing, what should I do? + +**Quick fixes:** +```bash +# Ensure package is installed +pip install -e ".[all-llms,dev]" + +# Clear caches +rm -rf .pytest_cache/ **/__pycache__/ + +# Run specific failing test +pytest tests/test_file.py::test_name -vv + +# Check for missing dependencies +pip install -e ".[all-llms,dev]" +``` + +**If still failing:** +1. Check [Troubleshooting Guide](../TROUBLESHOOTING.md) +2. Report issue on [GitHub](https://github.com/yusufkaraaslan/Skill_Seekers/issues) + +--- + +## MCP Server Questions + +### How do I start the MCP server? + +```bash +# stdio mode (Claude Code, VS Code + Cline) +skill-seekers-mcp + +# HTTP mode (Cursor, Windsurf, IntelliJ) +skill-seekers-mcp --transport http --port 8765 +``` + +### What MCP tools are available? + +**40 MCP tools:** + +*Core Tools (9):* +1. `list_configs` - List preset configurations +2. `generate_config` - Generate config from docs URL +3. `validate_config` - Validate config structure +4. `estimate_pages` - Estimate page count +5. `scrape_docs` - Scrape documentation +6. `package_skill` - Package to .zip (supports `--format` and `--target`) +7. `upload_skill` - Upload to platform (supports `--target`) +8. `enhance_skill` - AI enhancement +9. `install_skill` - Complete workflow + +*Extended Tools (10):* +10. `scrape_github` - GitHub analysis +11. `scrape_pdf` - PDF extraction +12. `unified_scrape` - Multi-source scraping +13. `merge_sources` - Merge docs + code +14. `detect_conflicts` - Find discrepancies +15. `split_config` - Split large configs +16. `generate_router` - Generate router skills +17. `add_config_source` - Register git repos +18. `fetch_config` - Fetch configs from git +19. `list_config_sources` - List registered sources +20. `remove_config_source` - Remove config source + +*Vector DB Tools (4):* +21. `export_to_chroma` - Export to ChromaDB +22. `export_to_weaviate` - Export to Weaviate +23. `export_to_faiss` - Export to FAISS +24. `export_to_qdrant` - Export to Qdrant + +*Cloud Tools (3):* +25. `cloud_upload` - Upload to S3/GCS/Azure +26. `cloud_download` - Download from cloud storage + +### How do I configure MCP for Claude Code? + +**Add to `claude_desktop_config.json`:** +```json +{ + "mcpServers": { + "skill-seekers": { + "command": "skill-seekers-mcp" + } + } +} +``` + +**Restart Claude Code**, then use: +``` +Use skill-seekers MCP tools to scrape React documentation +``` + +--- + +## Advanced Questions + +### Can I use Skill Seekers programmatically? + +Yes! Full API for Python integration: + +```python +from skill_seekers.cli.doc_scraper import scrape_all, build_skill +from skill_seekers.cli.adaptors import get_adaptor + +# Scrape documentation +pages = scrape_all( + base_url='https://docs.example.com', + selectors={'main_content': 'article'}, + config={'name': 'example'} +) + +# Build skill +skill_path = build_skill( + config_name='example', + output_dir='output/example' +) + +# Package for platform +adaptor = get_adaptor('claude') +package_path = adaptor.package(skill_path, 'output/') +``` + +**See:** [API Reference](reference/API_REFERENCE.md) + +### How do I create custom configurations? + +**Create config file** (`configs/my-framework.json`): +```json +{ + "name": "my-framework", + "description": "My custom framework documentation", + "base_url": "https://docs.example.com/", + "selectors": { + "main_content": "article", // CSS selector + "title": "h1", + "code_blocks": "pre code" + }, + "url_patterns": { + "include": ["/docs/", "/api/"], + "exclude": ["/blog/", "/changelog/"] + }, + "categories": { + "getting_started": ["intro", "quickstart"], + "api": ["api", "reference"] + }, + "rate_limit": 0.5, + "max_pages": 500 +} +``` + +**Use config:** +```bash +skill-seekers create --config configs/my-framework.json +``` + +### Can I contribute preset configs? + +Yes! We welcome config contributions: + +1. **Create config** in `configs/` directory +2. **Test it** thoroughly: +```bash +skill-seekers create --config configs/your-framework.json +``` +3. **Submit PR** on [GitHub](https://github.com/yusufkaraaslan/Skill_Seekers) + +**Guidelines:** +- Name: `{framework-name}.json` +- Include all required fields +- Add to appropriate category +- Test with real documentation + +### How do I debug scraping issues? + +```bash +# Verbose output +skill-seekers create --config react --verbose + +# Dry run (no actual scraping) +skill-seekers create --config react --dry-run + +# Single page test +skill-seekers create https://docs.example.com/intro --max-pages 1 + +# Check config (also available as the validate_config MCP tool) +python -m skill_seekers.cli.config_validator configs/react.json +``` + +--- + +## Getting More Help + +### Where can I find documentation? + +**Main Documentation:** +- [README](../README.md) - Project overview +- [Usage Guide](guides/USAGE.md) - Detailed usage +- [API Reference](reference/API_REFERENCE.md) - Programmatic usage +- [Troubleshooting](../TROUBLESHOOTING.md) - Common issues + +**Guides:** +- [MCP Setup](guides/MCP_SETUP.md) +- [Testing Guide](guides/TESTING_GUIDE.md) +- [Migration Guide](guides/MIGRATION_GUIDE.md) +- [Quick Reference](QUICK_REFERENCE.md) + +### How do I report bugs? + +1. **Check existing issues:** https://github.com/yusufkaraaslan/Skill_Seekers/issues +2. **Create new issue** with: + - Skill Seekers version (`skill-seekers --version`) + - Python version (`python --version`) + - Operating system + - Config file (if relevant) + - Error message and stack trace + - Steps to reproduce + +### How do I request features? + +1. **Check roadmap:** [ROADMAP.md](../ROADMAP.md) +2. **Create feature request:** https://github.com/yusufkaraaslan/Skill_Seekers/issues +3. **Join discussions:** https://github.com/yusufkaraaslan/Skill_Seekers/discussions + +### Is there a community? + +Yes! +- **GitHub Discussions:** https://github.com/yusufkaraaslan/Skill_Seekers/discussions +- **Issue Tracker:** https://github.com/yusufkaraaslan/Skill_Seekers/issues +- **Project Board:** https://github.com/users/yusufkaraaslan/projects/2 + +--- + +**Version:** 3.6.0 +**Last Updated:** 2026-03-15 +**Questions? Ask on [GitHub Discussions](https://github.com/yusufkaraaslan/Skill_Seekers/discussions)** diff --git a/docs/KUBERNETES_DEPLOYMENT.md b/docs/KUBERNETES_DEPLOYMENT.md new file mode 100644 index 0000000..1e5431b --- /dev/null +++ b/docs/KUBERNETES_DEPLOYMENT.md @@ -0,0 +1,933 @@ +# Kubernetes Deployment Guide + +Complete guide for deploying Skill Seekers on Kubernetes. + +## Table of Contents + +- [Prerequisites](#prerequisites) +- [Quick Start with Helm](#quick-start-with-helm) +- [Manual Deployment](#manual-deployment) +- [Configuration](#configuration) +- [Scaling](#scaling) +- [High Availability](#high-availability) +- [Monitoring](#monitoring) +- [Ingress & Load Balancing](#ingress--load-balancing) +- [Storage](#storage) +- [Security](#security) +- [Troubleshooting](#troubleshooting) + +## Prerequisites + +### 1. Kubernetes Cluster + +**Minimum requirements:** +- Kubernetes v1.21+ +- kubectl configured +- 2 nodes (minimum) +- 4 CPU cores total +- 8 GB RAM total + +**Cloud providers:** +- **AWS:** EKS (Elastic Kubernetes Service) +- **GCP:** GKE (Google Kubernetes Engine) +- **Azure:** AKS (Azure Kubernetes Service) +- **Local:** Minikube, kind, k3s + +### 2. Required Tools + +```bash +# kubectl +curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" +sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl + +# Helm 3 +curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash + +# Verify installations +kubectl version --client +helm version +``` + +### 3. Cluster Access + +```bash +# Verify cluster connection +kubectl cluster-info +kubectl get nodes + +# Create namespace +kubectl create namespace skillseekers +kubectl config set-context --current --namespace=skillseekers +``` + +## Quick Start with Helm + +### 1. Install with Default Values + +```bash +# Add Helm repository (when available) +helm repo add skillseekers https://charts.skillseekers.io +helm repo update + +# Install release +helm install skillseekers skillseekers/skillseekers \ + --namespace skillseekers \ + --create-namespace + +# Or install from local chart +helm install skillseekers ./helm/skillseekers \ + --namespace skillseekers \ + --create-namespace +``` + +### 2. Install with Custom Values + +```bash +# Create values file +cat > values-prod.yaml < + @type tail + path /var/log/containers/skillseekers*.log + pos_file /var/log/fluentd-skillseekers.pos + tag kubernetes.* + format json + + + @type elasticsearch + host elasticsearch + port 9200 + +``` + +## Ingress & Load Balancing + +### 1. Nginx Ingress + +```yaml +# ingress.yaml +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: skillseekers + namespace: skillseekers + annotations: + kubernetes.io/ingress.class: nginx + cert-manager.io/cluster-issuer: letsencrypt-prod + nginx.ingress.kubernetes.io/rate-limit: "100" + nginx.ingress.kubernetes.io/ssl-redirect: "true" +spec: + tls: + - hosts: + - api.skillseekers.example.com + secretName: skillseekers-tls + rules: + - host: api.skillseekers.example.com + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: skillseekers-mcp + port: + number: 8765 +``` + +### 2. TLS with cert-manager + +```bash +# Install cert-manager +kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.0/cert-manager.yaml + +# Create ClusterIssuer +cat < -n skillseekers + +# Check events +kubectl get events -n skillseekers --sort-by='.lastTimestamp' + +# Check logs +kubectl logs -n skillseekers +``` + +#### 2. Image Pull Errors + +```bash +# Check image pull secrets +kubectl get secrets -n skillseekers + +# Create image pull secret +kubectl create secret docker-registry regcred \ + --docker-server=registry.example.com \ + --docker-username=user \ + --docker-password=password \ + -n skillseekers + +# Use in pod spec +spec: + imagePullSecrets: + - name: regcred +``` + +#### 3. Resource Constraints + +```bash +# Check node resources +kubectl top nodes + +# Check pod resources +kubectl top pods -n skillseekers + +# Increase resources +kubectl edit deployment skillseekers-mcp -n skillseekers +``` + +#### 4. Service Not Accessible + +```bash +# Check service +kubectl get svc -n skillseekers +kubectl describe svc skillseekers-mcp -n skillseekers + +# Check endpoints +kubectl get endpoints -n skillseekers + +# Port forward +kubectl port-forward svc/skillseekers-mcp 8765:8765 -n skillseekers +``` + +### Debug Commands + +```bash +# Execute command in pod +kubectl exec -it -n skillseekers -- /bin/bash + +# Copy files from pod +kubectl cp skillseekers/:/app/data ./data + +# Check pod networking +kubectl exec -n skillseekers -- nslookup google.com + +# View full pod spec +kubectl get pod -n skillseekers -o yaml + +# Restart deployment +kubectl rollout restart deployment skillseekers-mcp -n skillseekers +``` + +## Best Practices + +1. **Always set resource requests and limits** +2. **Use namespaces for environment separation** +3. **Enable autoscaling for variable workloads** +4. **Implement health checks (liveness & readiness)** +5. **Use Secrets for sensitive data** +6. **Enable monitoring and logging** +7. **Implement Pod Disruption Budgets for HA** +8. **Use RBAC for access control** +9. **Enable Network Policies** +10. **Regular backup of persistent volumes** + +## Next Steps + +- Review [PRODUCTION_DEPLOYMENT.md](./PRODUCTION_DEPLOYMENT.md) for general guidelines +- See [DOCKER_DEPLOYMENT.md](./DOCKER_DEPLOYMENT.md) for container-specific details +- Check [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) for common issues + +--- + +**Need help?** Open an issue on [GitHub](https://github.com/yusufkaraaslan/Skill_Seekers/issues). diff --git a/docs/PRODUCTION_DEPLOYMENT.md b/docs/PRODUCTION_DEPLOYMENT.md new file mode 100644 index 0000000..7762e92 --- /dev/null +++ b/docs/PRODUCTION_DEPLOYMENT.md @@ -0,0 +1,827 @@ +# Production Deployment Guide + +Complete guide for deploying Skill Seekers in production environments. + +## Table of Contents + +- [Prerequisites](#prerequisites) +- [Installation](#installation) +- [Configuration](#configuration) +- [Deployment Options](#deployment-options) +- [Monitoring & Observability](#monitoring--observability) +- [Security](#security) +- [Scaling](#scaling) +- [Backup & Disaster Recovery](#backup--disaster-recovery) +- [Troubleshooting](#troubleshooting) + +## Prerequisites + +### System Requirements + +**Minimum:** +- CPU: 2 cores +- RAM: 4 GB +- Disk: 10 GB +- Python: 3.10+ + +**Recommended (for production):** +- CPU: 4+ cores +- RAM: 8+ GB +- Disk: 50+ GB SSD +- Python: 3.12+ + +### Dependencies + +**Required:** +```bash +# System packages (Ubuntu/Debian) +sudo apt update +sudo apt install -y python3.12 python3.12-venv python3-pip \ + git curl wget build-essential libssl-dev + +# System packages (RHEL/CentOS) +sudo yum install -y python312 python312-devel git curl wget \ + gcc gcc-c++ openssl-devel +``` + +**Optional (for specific features):** +```bash +# OCR support (PDF scraping) +sudo apt install -y tesseract-ocr + +# Cloud storage +# (Install provider-specific SDKs via pip) + +# Embedding generation +# (GPU support requires CUDA) +``` + +## Installation + +### 1. Production Installation + +```bash +# Create dedicated user +sudo useradd -m -s /bin/bash skillseekers +sudo su - skillseekers + +# Create virtual environment +python3.12 -m venv /opt/skillseekers/venv +source /opt/skillseekers/venv/bin/activate + +# Install package +pip install --upgrade pip +pip install skill-seekers[all] + +# Verify installation +skill-seekers --version +``` + +### 2. Configuration Directory + +```bash +# Create config directory +mkdir -p ~/.config/skill-seekers/{configs,output,logs,cache} + +# Set permissions +chmod 700 ~/.config/skill-seekers +``` + +### 3. Environment Variables + +Create `/opt/skillseekers/.env`: + +```bash +# API Keys +ANTHROPIC_API_KEY=sk-ant-... +GOOGLE_API_KEY=AIza... +OPENAI_API_KEY=sk-... +VOYAGE_API_KEY=... + +# GitHub Tokens (use skill-seekers config --github for multiple) +GITHUB_TOKEN=ghp_... + +# Cloud Storage (optional) +AWS_ACCESS_KEY_ID=... +AWS_SECRET_ACCESS_KEY=... +GOOGLE_APPLICATION_CREDENTIALS=/path/to/gcs-key.json +AZURE_STORAGE_CONNECTION_STRING=... + +# MCP Server +MCP_TRANSPORT=http +MCP_PORT=8765 + +# Sync Monitoring (optional) +SYNC_WEBHOOK_URL=https://... +SLACK_WEBHOOK_URL=https://hooks.slack.com/... + +# Logging +LOG_LEVEL=INFO +LOG_FILE=/var/log/skillseekers/app.log +``` + +**Security Note:** Never commit `.env` files to version control! + +```bash +# Secure the env file +chmod 600 /opt/skillseekers/.env +``` + +## Configuration + +### 1. GitHub Configuration + +Use the interactive configuration wizard: + +```bash +skill-seekers config --github +``` + +This will: +- Add GitHub personal access tokens +- Configure rate limit strategies +- Test token validity +- Support multiple profiles (work, personal, etc.) + +### 2. API Keys Configuration + +```bash +skill-seekers config --api-keys +``` + +Configure: +- Claude API (Anthropic) +- Gemini API (Google) +- OpenAI API +- Voyage AI (embeddings) + +### 3. Connection Testing + +```bash +skill-seekers config --test +``` + +Verifies: +- โœ… GitHub token(s) validity and rate limits +- โœ… Claude API connectivity +- โœ… Gemini API connectivity +- โœ… OpenAI API connectivity +- โœ… Cloud storage access (if configured) + +## Deployment Options + +### Option 1: Systemd Service (Recommended) + +Create `/etc/systemd/system/skillseekers-mcp.service`: + +```ini +[Unit] +Description=Skill Seekers MCP Server +After=network.target + +[Service] +Type=simple +User=skillseekers +Group=skillseekers +WorkingDirectory=/opt/skillseekers +EnvironmentFile=/opt/skillseekers/.env +ExecStart=/opt/skillseekers/venv/bin/python -m skill_seekers.mcp.server_fastmcp --transport http --port 8765 +Restart=always +RestartSec=10 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=skillseekers-mcp + +# Security +NoNewPrivileges=true +PrivateTmp=true +ProtectSystem=strict +ProtectHome=true +ReadWritePaths=/opt/skillseekers /var/log/skillseekers + +[Install] +WantedBy=multi-user.target +``` + +**Enable and start:** + +```bash +sudo systemctl daemon-reload +sudo systemctl enable skillseekers-mcp +sudo systemctl start skillseekers-mcp +sudo systemctl status skillseekers-mcp +``` + +### Option 2: Docker Deployment + +See [Docker Deployment Guide](./DOCKER_DEPLOYMENT.md) for detailed instructions. + +**Quick Start:** + +```bash +# Build image +docker build -t skillseekers:latest . + +# Run container +docker run -d \ + --name skillseekers-mcp \ + -p 8765:8765 \ + -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ + -e GITHUB_TOKEN=$GITHUB_TOKEN \ + -v /opt/skillseekers/data:/app/data \ + --restart unless-stopped \ + skillseekers:latest +``` + +### Option 3: Kubernetes Deployment + +See [Kubernetes Deployment Guide](./KUBERNETES_DEPLOYMENT.md) for detailed instructions. + +**Quick Start:** + +```bash +# Install with Helm +helm install skillseekers ./helm/skillseekers \ + --namespace skillseekers \ + --create-namespace \ + --set secrets.anthropicApiKey=$ANTHROPIC_API_KEY \ + --set secrets.githubToken=$GITHUB_TOKEN +``` + +### Option 4: Docker Compose + +See [Docker Compose Guide](./DOCKER_COMPOSE.md) for multi-service deployment. + +```bash +# Start all services +docker-compose up -d + +# Check status +docker-compose ps + +# View logs +docker-compose logs -f +``` + +## Monitoring & Observability + +### 1. Health Checks + +**MCP Server Health:** + +```bash +# HTTP transport +curl http://localhost:8765/health + +# Expected response: +{ + "status": "healthy", + "version": "2.9.0", + "uptime": 3600, + "tools": 25 +} +``` + +### 2. Logging + +**Configure structured logging:** + +```python +# config/logging.yaml +version: 1 +formatters: + json: + format: '{"time":"%(asctime)s","level":"%(levelname)s","msg":"%(message)s"}' +handlers: + file: + class: logging.handlers.RotatingFileHandler + filename: /var/log/skillseekers/app.log + maxBytes: 10485760 # 10MB + backupCount: 5 + formatter: json +loggers: + skill_seekers: + level: INFO + handlers: [file] +``` + +**Log aggregation options:** +- **ELK Stack:** Elasticsearch + Logstash + Kibana +- **Grafana Loki:** Lightweight log aggregation +- **CloudWatch Logs:** For AWS deployments +- **Stackdriver:** For GCP deployments + +### 3. Metrics + +**Prometheus metrics endpoint:** + +```bash +# Add to MCP server +from prometheus_client import start_http_server, Counter, Histogram + +# Metrics +scraping_requests = Counter('scraping_requests_total', 'Total scraping requests') +scraping_duration = Histogram('scraping_duration_seconds', 'Scraping duration') + +# Start metrics server +start_http_server(9090) +``` + +**Key metrics to monitor:** +- Request rate +- Response time (p50, p95, p99) +- Error rate +- Memory usage +- CPU usage +- Disk I/O +- GitHub API rate limit remaining +- Claude API token usage + +### 4. Alerting + +**Example Prometheus alert rules:** + +```yaml +groups: + - name: skillseekers + rules: + - alert: HighErrorRate + expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05 + for: 5m + annotations: + summary: "High error rate detected" + + - alert: HighMemoryUsage + expr: process_resident_memory_bytes > 2e9 # 2GB + for: 10m + annotations: + summary: "Memory usage above 2GB" + + - alert: GitHubRateLimitLow + expr: github_rate_limit_remaining < 100 + for: 1m + annotations: + summary: "GitHub rate limit low" +``` + +## Security + +### 1. API Key Management + +**Best Practices:** + +โœ… **DO:** +- Store keys in environment variables or secret managers +- Use different keys for dev/staging/prod +- Rotate keys regularly (quarterly minimum) +- Use least-privilege IAM roles for cloud services +- Monitor key usage for anomalies + +โŒ **DON'T:** +- Commit keys to version control +- Share keys via email/Slack +- Use production keys in development +- Grant overly broad permissions + +**Recommended Secret Managers:** +- **Kubernetes Secrets** (for K8s deployments) +- **AWS Secrets Manager** (for AWS) +- **Google Secret Manager** (for GCP) +- **Azure Key Vault** (for Azure) +- **HashiCorp Vault** (cloud-agnostic) + +### 2. Network Security + +**Firewall Rules:** + +```bash +# Allow only necessary ports +sudo ufw enable +sudo ufw allow 22/tcp # SSH +sudo ufw allow 8765/tcp # MCP server (if public) +sudo ufw deny incoming +sudo ufw allow outgoing +``` + +**Reverse Proxy (Nginx):** + +```nginx +# /etc/nginx/sites-available/skillseekers +server { + listen 80; + server_name api.skillseekers.example.com; + + # Redirect to HTTPS + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + server_name api.skillseekers.example.com; + + ssl_certificate /etc/letsencrypt/live/api.skillseekers.example.com/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/api.skillseekers.example.com/privkey.pem; + + # Security headers + add_header Strict-Transport-Security "max-age=31536000" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + + # Rate limiting + limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; + limit_req zone=api burst=20 nodelay; + + location / { + proxy_pass http://localhost:8765; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + + # Timeouts + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + } +} +``` + +### 3. TLS/SSL + +**Let's Encrypt (free certificates):** + +```bash +# Install certbot +sudo apt install certbot python3-certbot-nginx + +# Obtain certificate +sudo certbot --nginx -d api.skillseekers.example.com + +# Auto-renewal (cron) +0 12 * * * /usr/bin/certbot renew --quiet +``` + +### 4. Authentication & Authorization + +**API Key Authentication (optional):** + +```python +# Add to MCP server +from fastapi import Security, HTTPException +from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials + +security = HTTPBearer() + +async def verify_token(credentials: HTTPAuthorizationCredentials = Security(security)): + token = credentials.credentials + if token != os.getenv("API_SECRET_KEY"): + raise HTTPException(status_code=401, detail="Invalid token") + return token +``` + +## Scaling + +### 1. Vertical Scaling + +**Increase resources:** + +```yaml +# Kubernetes resource limits +resources: + requests: + cpu: "2" + memory: "4Gi" + limits: + cpu: "4" + memory: "8Gi" +``` + +### 2. Horizontal Scaling + +**Deploy multiple instances:** + +```bash +# Kubernetes HPA (Horizontal Pod Autoscaler) +kubectl autoscale deployment skillseekers-mcp \ + --cpu-percent=70 \ + --min=2 \ + --max=10 +``` + +**Load Balancing:** + +```nginx +# Nginx load balancer +upstream skillseekers { + least_conn; + server 10.0.0.1:8765; + server 10.0.0.2:8765; + server 10.0.0.3:8765; +} + +server { + listen 80; + location / { + proxy_pass http://skillseekers; + } +} +``` + +### 3. Database/Storage Scaling + +**Distributed caching:** + +```python +# Redis for distributed cache +import redis + +cache = redis.Redis(host='redis.example.com', port=6379, db=0) +``` + +**Object storage:** +- Use S3/GCS/Azure Blob for skill packages +- Enable CDN for static assets +- Use read replicas for databases + +### 4. Rate Limit Management + +**Multiple GitHub tokens:** + +```bash +# Configure multiple profiles +skill-seekers config --github + +# Automatic token rotation on rate limit +# (handled by rate_limit_handler.py) +``` + +## Backup & Disaster Recovery + +### 1. Data Backup + +**What to backup:** +- Configuration files (`~/.config/skill-seekers/`) +- Generated skills (`output/`) +- Database/cache (if applicable) +- Logs (for forensics) + +**Backup script:** + +```bash +#!/bin/bash +# /opt/skillseekers/scripts/backup.sh + +BACKUP_DIR="/backups/skillseekers" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) + +# Create backup +tar -czf "$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" \ + ~/.config/skill-seekers \ + /opt/skillseekers/output \ + /opt/skillseekers/.env + +# Retain last 30 days +find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +30 -delete + +# Upload to S3 (optional) +aws s3 cp "$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" \ + s3://backups/skillseekers/ +``` + +**Schedule backups:** + +```bash +# Crontab +0 2 * * * /opt/skillseekers/scripts/backup.sh +``` + +### 2. Disaster Recovery Plan + +**Recovery steps:** + +1. **Provision new infrastructure** + ```bash + # Deploy from backup + terraform apply + ``` + +2. **Restore configuration** + ```bash + tar -xzf backup_20250207.tar.gz -C / + ``` + +3. **Verify services** + ```bash + skill-seekers config --test + systemctl status skillseekers-mcp + ``` + +4. **Test functionality** + ```bash + skill-seekers create --config configs/test.json --max-pages 10 + ``` + +**RTO/RPO targets:** +- **RTO (Recovery Time Objective):** < 2 hours +- **RPO (Recovery Point Objective):** < 24 hours + +## Troubleshooting + +### Common Issues + +#### 1. High Memory Usage + +**Symptoms:** +- OOM kills +- Slow performance +- Swapping + +**Solutions:** + +```bash +# Check memory usage +ps aux --sort=-%mem | head -10 + +# Reduce parallel workers +skill-seekers create --config config.json --workers 2 + +# Enable memory limits +docker run --memory=4g skillseekers:latest +``` + +#### 2. GitHub Rate Limits + +**Symptoms:** +- `403 Forbidden` errors +- "API rate limit exceeded" messages + +**Solutions:** + +```bash +# Check rate limit +curl -H "Authorization: token $GITHUB_TOKEN" \ + https://api.github.com/rate_limit + +# Add more tokens +skill-seekers config --github + +# Use rate limit strategy +# (automatic with multi-token config) +``` + +#### 3. Slow Scraping + +**Symptoms:** +- Long scraping times +- Timeouts + +**Solutions:** + +```bash +# Enable async scraping (2-3x faster) +skill-seekers create --config config.json --async + +# Increase concurrency +# (adjust in config: "concurrency": 10) + +# Re-runs reuse cached data automatically (use --fresh to discard) +skill-seekers create --config config.json +``` + +#### 4. API Errors + +**Symptoms:** +- `401 Unauthorized` +- `429 Too Many Requests` + +**Solutions:** + +```bash +# Verify API keys +skill-seekers config --test + +# Check API key validity +# Claude API: https://console.anthropic.com/ +# OpenAI: https://platform.openai.com/api-keys +# Google: https://console.cloud.google.com/apis/credentials + +# Rotate keys if compromised +``` + +#### 5. Service Won't Start + +**Symptoms:** +- systemd service fails +- Container exits immediately + +**Solutions:** + +```bash +# Check logs +journalctl -u skillseekers-mcp -n 100 + +# Or for Docker +docker logs skillseekers-mcp + +# Common causes: +# - Missing environment variables +# - Port already in use +# - Permission issues + +# Verify config +skill-seekers config --show +``` + +### Debug Mode + +Enable detailed logging: + +```bash +# Set debug level +export LOG_LEVEL=DEBUG + +# Run with verbose output +skill-seekers create --config config.json --verbose +``` + +### Getting Help + +**Community Support:** +- GitHub Issues: https://github.com/yusufkaraaslan/Skill_Seekers/issues +- Documentation: https://skillseekersweb.com/ + +**Log Collection:** + +```bash +# Collect diagnostic info +tar -czf skillseekers-debug.tar.gz \ + /var/log/skillseekers/ \ + ~/.config/skill-seekers/configs/ \ + /opt/skillseekers/.env +``` + +## Performance Tuning + +### 1. Scraping Performance + +**Optimization techniques:** + +```python +# Enable async scraping +"async_scraping": true, +"concurrency": 20, # Adjust based on resources + +# Optimize selectors +"selectors": { + "main_content": "article", # More specific = faster + "code_blocks": "pre code" +} + +# Enable caching +"use_cache": true, +"cache_ttl": 86400 # 24 hours +``` + +### 2. Embedding Performance + +**GPU acceleration (if available):** + +```python +# Use GPU for sentence-transformers +pip install sentence-transformers[gpu] + +# Configure +export CUDA_VISIBLE_DEVICES=0 +``` + +**Batch processing:** + +```python +# Generate embeddings in batches +generator.generate_batch(texts, batch_size=32) +``` + +### 3. Storage Performance + +**Use SSD for:** +- SQLite databases +- Cache directories +- Log files + +**Use object storage for:** +- Skill packages +- Backup archives +- Large datasets + +## Next Steps + +1. **Review** deployment option that fits your infrastructure +2. **Configure** monitoring and alerting +3. **Set up** backups and disaster recovery +4. **Test** failover procedures +5. **Document** your specific deployment +6. **Train** your team on operations + +--- + +**Need help?** See [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) or open an issue on GitHub. diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..a535653 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,231 @@ +# Skill Seekers Documentation + +> **Complete documentation for Skill Seekers v3.7.0** + +--- + +## Welcome! + +This is the official documentation for **Skill Seekers** - the universal tool for converting **18 source types** (documentation sites, GitHub repos, PDFs, videos, Word docs, EPUB books, Jupyter notebooks, local HTML, OpenAPI specs, AsciiDoc, PowerPoint, RSS/Atom feeds, man pages, Confluence, Notion, Slack/Discord, and local codebases) into AI-ready skills for 21+ platforms. + +--- + +## Where Should I Start? + +### ๐Ÿš€ I'm New Here + +Start with our **Getting Started** guides: + +1. [Installation](getting-started/01-installation.md) - Install Skill Seekers +2. [Quick Start](getting-started/02-quick-start.md) - Create your first skill in 3 commands +3. [Your First Skill](getting-started/03-your-first-skill.md) - Complete walkthrough +4. [Next Steps](getting-started/04-next-steps.md) - Where to go from here +5. [Scan a Project](getting-started/05-scan-a-project.md) - Bootstrap configs from a codebase + +### ๐Ÿ“– I Want to Learn + +Explore our **User Guides**: + +- [Core Concepts](user-guide/01-core-concepts.md) - How Skill Seekers works +- [Scraping Guide](user-guide/02-scraping.md) - All scraping options +- [Enhancement Guide](user-guide/03-enhancement.md) - AI enhancement explained +- [Packaging Guide](user-guide/04-packaging.md) - Export to platforms +- [Workflows Guide](user-guide/05-workflows.md) - Enhancement workflows +- [Troubleshooting](user-guide/06-troubleshooting.md) - Common issues + +### ๐Ÿ“š I Need Reference + +Look up specific information: + +- [CLI Reference](reference/CLI_REFERENCE.md) - All 19 commands +- [MCP Reference](reference/MCP_REFERENCE.md) - 40 MCP tools +- [Config Format](reference/CONFIG_FORMAT.md) - JSON specification +- [Environment Variables](reference/ENVIRONMENT_VARIABLES.md) - All env vars +- [FAQ](FAQ.md) - Frequently asked questions +- [Troubleshooting](TROUBLESHOOTING.md) - Full troubleshooting reference + +### ๐Ÿš€ I'm Ready for Advanced Topics + +Power user features: + +- [MCP Server Setup](advanced/mcp-server.md) - MCP integration +- [MCP Tools Deep Dive](advanced/mcp-server.md) - Advanced MCP usage +- [Custom Workflows](advanced/custom-workflows.md) - Create workflows +- [Multi-Source Scraping](advanced/multi-source.md) - Combine sources + +--- + +## Quick Reference + +### The 3 Commands + +```bash +# 1. Install +pip install skill-seekers + +# 2. Create skill +skill-seekers create https://docs.django.com/ + +# 3. Package for Claude +skill-seekers package output/django --target claude +``` + +### Common Commands + +```bash +# Create from any source (auto-detects type) +skill-seekers create https://docs.django.com/ +skill-seekers create facebook/react +skill-seekers create manual.pdf +skill-seekers create notebook.ipynb + +# Scan a project for tech stack โ€” emits one config per framework +skill-seekers scan ./my-react-app --out ./configs/scanned/ + +# Enhance skill +skill-seekers enhance output/my-skill/ + +# Package for platform +skill-seekers package output/my-skill/ --target claude + +# Upload +skill-seekers upload output/my-skill-claude.zip + +# Install complete workflow +skill-seekers install --config react --target claude + +# Doctor / diagnostics +skill-seekers doctor +``` + +--- + +## Documentation Structure + +``` +docs/ +โ”œโ”€โ”€ README.md # This file - start here +โ”œโ”€โ”€ ARCHITECTURE.md # How docs are organized +โ”œโ”€โ”€ UML_ARCHITECTURE.md # Software architecture (UML diagrams) +โ”œโ”€โ”€ UNIFICATION_PLAN.md # Grand Unification refactor plan + phase results +โ”œโ”€โ”€ BUG_AUDIT.md # Full-codebase bug audit (historical record) +โ”‚ +โ”œโ”€โ”€ getting-started/ # For new users +โ”‚ โ”œโ”€โ”€ 01-installation.md +โ”‚ โ”œโ”€โ”€ 02-quick-start.md +โ”‚ โ”œโ”€โ”€ 03-your-first-skill.md +โ”‚ โ”œโ”€โ”€ 04-next-steps.md +โ”‚ โ””โ”€โ”€ 05-scan-a-project.md +โ”‚ +โ”œโ”€โ”€ user-guide/ # Common tasks +โ”‚ โ”œโ”€โ”€ 01-core-concepts.md +โ”‚ โ”œโ”€โ”€ 02-scraping.md +โ”‚ โ”œโ”€โ”€ 03-enhancement.md +โ”‚ โ”œโ”€โ”€ 04-packaging.md +โ”‚ โ”œโ”€โ”€ 05-workflows.md +โ”‚ โ””โ”€โ”€ 06-troubleshooting.md +โ”‚ +โ”œโ”€โ”€ guides/ # How-to guides +โ”‚ โ”œโ”€โ”€ MCP_SETUP.md +โ”‚ โ”œโ”€โ”€ MIGRATION_GUIDE.md +โ”‚ โ”œโ”€โ”€ TESTING_GUIDE.md +โ”‚ โ””โ”€โ”€ UPLOAD_GUIDE.md +โ”‚ +โ”œโ”€โ”€ integrations/ # Platform integrations +โ”‚ โ”œโ”€โ”€ LANGCHAIN.md +โ”‚ โ”œโ”€โ”€ LLAMA_INDEX.md +โ”‚ โ”œโ”€โ”€ CURSOR.md +โ”‚ โ””โ”€โ”€ ... +โ”‚ +โ”œโ”€โ”€ features/ # Feature deep-dives +โ”‚ โ”œโ”€โ”€ BOOTSTRAP_SKILL.md +โ”‚ โ”œโ”€โ”€ UNIFIED_SCRAPING.md +โ”‚ โ””โ”€โ”€ ENHANCEMENT.md +โ”‚ +โ”œโ”€โ”€ reference/ # Technical reference +โ”‚ โ”œโ”€โ”€ CLI_REFERENCE.md # 19 commands +โ”‚ โ”œโ”€โ”€ MCP_REFERENCE.md # 40 MCP tools +โ”‚ โ”œโ”€โ”€ CONFIG_FORMAT.md # JSON spec +โ”‚ โ””โ”€โ”€ ENVIRONMENT_VARIABLES.md +โ”‚ +โ”œโ”€โ”€ advanced/ # Power user topics +โ”‚ โ”œโ”€โ”€ mcp-server.md +โ”‚ โ”œโ”€โ”€ custom-workflows.md +โ”‚ โ””โ”€โ”€ multi-source.md +โ”‚ +โ”œโ”€โ”€ archive/ # Legacy docs +โ”œโ”€โ”€ blog/ # Blog posts +โ”œโ”€โ”€ case-studies/ # Case studies +โ”œโ”€โ”€ plans/ # Feature plans +โ”œโ”€โ”€ roadmap/ # Roadmap +โ”œโ”€โ”€ strategy/ # Strategy docs +โ””โ”€โ”€ zh-CN/ # Chinese translations +``` + +--- + +## By Use Case + +### I Want to Build AI Skills + +For Claude, Gemini, ChatGPT: + +1. [Quick Start](getting-started/02-quick-start.md) +2. [Enhancement Guide](user-guide/03-enhancement.md) +3. [Workflows Guide](user-guide/05-workflows.md) + +### I Want to Build RAG Pipelines + +For LangChain, LlamaIndex, vector DBs: + +1. [Core Concepts](user-guide/01-core-concepts.md) +2. [Packaging Guide](user-guide/04-packaging.md) +3. [MCP Reference](reference/MCP_REFERENCE.md) + +### I Want AI Coding Assistance + +For Cursor, Windsurf, Cline, Roo, Aider, Bolt, Kilo, Continue, Kimi Code: + +1. [Your First Skill](getting-started/03-your-first-skill.md) +2. [Local Codebase Analysis](user-guide/02-scraping.md#local-codebase-analysis) +3. `skill-seekers install-agent --agent cursor` + +--- + +## Version Information + +- **Current Version:** 3.7.0 +- **Last Updated:** 2026-06-11 +- **Source Types:** 18 +- **Python Required:** 3.10+ + +--- + +## Contributing to Documentation + +Found an issue? Want to improve docs? + +1. Edit files in the `docs/` directory +2. Follow the existing structure +3. Submit a PR + +See [Contributing Guide](../CONTRIBUTING.md) for details. + +--- + +## External Links + +- **Main Repository:** https://github.com/yusufkaraaslan/Skill_Seekers +- **Website:** https://skillseekersweb.com/ +- **PyPI:** https://pypi.org/project/skill-seekers/ +- **Issues:** https://github.com/yusufkaraaslan/Skill_Seekers/issues + +--- + +## License + +MIT License - see [LICENSE](../LICENSE) file. + +--- + +*Happy skill building! ๐Ÿš€* diff --git a/docs/TROUBLESHOOTING.md b/docs/TROUBLESHOOTING.md new file mode 100644 index 0000000..dc0a36c --- /dev/null +++ b/docs/TROUBLESHOOTING.md @@ -0,0 +1,1102 @@ +# Troubleshooting Guide + +Comprehensive guide for diagnosing and resolving common issues with Skill Seekers. + +## Quick Fixes + +| Issue | Quick Fix | +|-------|-----------| +| `command not found` | `export PATH="$HOME/.local/bin:$PATH"` | +| `ImportError` | `pip install -e .` | +| `Rate limit` | Add `--rate-limit 2.0` | +| `No content` | Check selectors in config | +| `Enhancement fails` | Set `ANTHROPIC_API_KEY` | +| `Out of memory` | Use `--streaming` mode | + +## Table of Contents + +- [Installation Issues](#installation-issues) +- [Configuration Issues](#configuration-issues) +- [Scraping Issues](#scraping-issues) +- [GitHub API Issues](#github-api-issues) +- [API & Enhancement Issues](#api--enhancement-issues) +- [Docker & Kubernetes Issues](#docker--kubernetes-issues) +- [Performance Issues](#performance-issues) +- [Storage Issues](#storage-issues) +- [Network Issues](#network-issues) +- [General Debug Techniques](#general-debug-techniques) +- [Source-Type-Specific Issues](#source-type-specific-issues) + +## Installation Issues + +### Issue: Package Installation Fails + +**Symptoms:** +``` +ERROR: Could not build wheels for... +ERROR: Failed building wheel for... +``` + +**Solutions:** + +```bash +# Update pip and setuptools +python -m pip install --upgrade pip setuptools wheel + +# Install build dependencies (Ubuntu/Debian) +sudo apt install python3-dev build-essential libssl-dev + +# Install build dependencies (RHEL/CentOS) +sudo yum install python3-devel gcc gcc-c++ openssl-devel + +# Retry installation +pip install skill-seekers +``` + +### Issue: Command Not Found After Installation + +**Symptoms:** +```bash +$ skill-seekers --version +bash: skill-seekers: command not found +``` + +**Solutions:** + +```bash +# Check if installed +pip show skill-seekers + +# Add to PATH +export PATH="$HOME/.local/bin:$PATH" + +# Or reinstall with --user flag +pip install --user skill-seekers + +# Verify +which skill-seekers +``` + +### Issue: Python Version Mismatch + +**Symptoms:** +``` +ERROR: Package requires Python >=3.10 but you are running 3.9 +``` + +**Solutions:** + +```bash +# Check Python version +python --version +python3 --version + +# Use specific Python version +python3.12 -m pip install skill-seekers + +# Create alias +alias python=python3.12 + +# Or use pyenv +pyenv install 3.12 +pyenv global 3.12 +``` + +### Issue: Video Visual Dependencies Missing + +**Symptoms:** +``` +Missing video dependencies: easyocr +RuntimeError: Required video visual dependencies not installed +``` + +**Solutions:** + +```bash +# Run the GPU-aware setup command +skill-seekers create --setup + +# This auto-detects your GPU and installs: +# - PyTorch (correct CUDA/ROCm/CPU variant) +# - easyocr, opencv, pytesseract, scenedetect, faster-whisper +# - yt-dlp, youtube-transcript-api + +# Verify installation +python -c "import torch; print(f'PyTorch: {torch.__version__}, CUDA: {torch.cuda.is_available()}')" +python -c "import easyocr; print('easyocr OK')" +``` + +**Common issues:** +- Running outside a virtual environment โ†’ `--setup` will warn you; create a venv first +- Missing system packages โ†’ Install `tesseract-ocr` and `ffmpeg` for your OS +- AMD GPU without ROCm โ†’ Install ROCm first, then re-run `--setup` + +## Configuration Issues + +### Issue: API Keys Not Recognized + +**Symptoms:** +``` +Error: ANTHROPIC_API_KEY not found +401 Unauthorized +``` + +**Solutions:** + +```bash +# Check environment variables +env | grep API_KEY + +# Set in current session +export ANTHROPIC_API_KEY=sk-ant-... + +# Set permanently (~/.bashrc or ~/.zshrc) +echo 'export ANTHROPIC_API_KEY=sk-ant-...' >> ~/.bashrc +source ~/.bashrc + +# Or use .env file +cat > .env < configs/test.json < + +# Check system resources +htop +df -h +``` + +### Issue: API Cost Concerns + +**Symptoms:** +``` +Worried about API costs for enhancement +Need free alternative +``` + +**Solutions:** + +```bash +# Use LOCAL mode (free! โ€” auto-selected when no API key is set) +skill-seekers enhance output/react/ --agent claude + +# Skip enhancement entirely +skill-seekers create --config config.json --enhance-level 0 + +# Estimate cost before enhancing +# Claude API: ~$0.15-$0.30 per skill +# Check usage: https://console.anthropic.com/ + +# Use batch processing +for dir in output/*/; do + skill-seekers enhance "$dir" --mode LOCAL --background +done +``` + +## Docker & Kubernetes Issues + +### Issue: Container Won't Start + +**Symptoms:** +``` +Error response from daemon: Container ... is not running +Container exits immediately +``` + +**Solutions:** + +```bash +# Check logs +docker logs skillseekers-mcp + +# Common issues: +# 1. Missing environment variables +docker run -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY ... + +# 2. Port already in use +sudo lsof -i :8765 +docker run -p 8766:8765 ... + +# 3. Permission issues +docker run --user $(id -u):$(id -g) ... + +# Run interactively to debug +docker run -it --entrypoint /bin/bash skillseekers:latest +``` + +### Issue: Kubernetes Pod CrashLoopBackOff + +**Symptoms:** +``` +NAME READY STATUS RESTARTS +skillseekers-mcp-xxx 0/1 CrashLoopBackOff 5 +``` + +**Solutions:** + +```bash +# Check pod logs +kubectl logs -n skillseekers skillseekers-mcp-xxx + +# Describe pod +kubectl describe pod -n skillseekers skillseekers-mcp-xxx + +# Check events +kubectl get events -n skillseekers --sort-by='.lastTimestamp' + +# Common issues: +# 1. Missing secrets +kubectl get secrets -n skillseekers + +# 2. Resource constraints +kubectl top nodes +kubectl edit deployment skillseekers-mcp -n skillseekers + +# 3. Liveness probe failing +# Increase initialDelaySeconds in deployment +``` + +### Issue: Image Pull Errors + +**Symptoms:** +``` +ErrImagePull +ImagePullBackOff +Failed to pull image +``` + +**Solutions:** + +```bash +# Check image exists +docker pull skillseekers:latest + +# Create image pull secret +kubectl create secret docker-registry regcred \ + --docker-server=registry.example.com \ + --docker-username=user \ + --docker-password=pass \ + -n skillseekers + +# Add to deployment +spec: + imagePullSecrets: + - name: regcred + +# Use public image (if available) +image: docker.io/skillseekers/skillseekers:latest +``` + +## Performance Issues + +### Issue: High Memory Usage + +**Symptoms:** +``` +Process killed (OOM) +Memory usage: 8GB+ +System swapping +``` + +**Solutions:** + +```bash +# Check memory usage +ps aux --sort=-%mem | head -10 +htop + +# Reduce parallel workers +skill-seekers create --config config.json --workers 2 + +# Enable memory limits +# Docker: +docker run --memory=4g skillseekers:latest + +# Kubernetes: +resources: + limits: + memory: 4Gi + +# Clear cache +rm -rf ~/.cache/skill-seekers/ + +# Use streaming for large files +# (automatically handled by library) +``` + +### Issue: Slow Performance + +**Symptoms:** +``` +Operations taking much longer than expected +High CPU usage +Disk I/O bottleneck +``` + +**Solutions:** + +```bash +# Enable async operations +skill-seekers create --config config.json --async + +# Increase concurrency +{ + "concurrency": 20 # Adjust based on resources +} + +# Use SSD for storage +# Move output to SSD: +mv output/ /mnt/ssd/output/ + +# Monitor performance +# CPU: +mpstat 1 +# Disk I/O: +iostat -x 1 +# Network: +iftop + +# Profile code +python -m cProfile -o profile.stats \ + -m skill_seekers.cli.doc_scraper --config config.json +``` + +### Issue: Disk Space Issues + +**Symptoms:** +``` +No space left on device +Disk full +Cannot create file +``` + +**Solutions:** + +```bash +# Check disk usage +df -h +du -sh output/* + +# Clean up old skills +find output/ -type d -mtime +30 -exec rm -rf {} \; + +# Compress old benchmarks +tar czf benchmarks-archive.tar.gz benchmarks/ +rm -rf benchmarks/*.json + +# Push outputs to cloud storage (S3/GCS/Azure) +skill-seekers-cloud --provider s3 --bucket my-skills-bucket upload output/react/ + +# Clear cached scrape data for a skill +skill-seekers create --config config.json --fresh +``` + +## Storage Issues + +### Issue: S3 Upload Fails + +**Symptoms:** +``` +botocore.exceptions.NoCredentialsError +AccessDenied +``` + +**Solutions:** + +```bash +# Check credentials +aws sts get-caller-identity + +# Configure AWS CLI +aws configure + +# Set environment variables +export AWS_ACCESS_KEY_ID=... +export AWS_SECRET_ACCESS_KEY=... +export AWS_DEFAULT_REGION=us-east-1 + +# Check bucket permissions +aws s3 ls s3://my-bucket/ + +# Test upload +echo "test" > test.txt +aws s3 cp test.txt s3://my-bucket/ +``` + +### Issue: GCS Authentication Failed + +**Symptoms:** +``` +google.auth.exceptions.DefaultCredentialsError +Permission denied +``` + +**Solutions:** + +```bash +# Set credentials file +export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json + +# Or use gcloud auth +gcloud auth application-default login + +# Verify permissions +gsutil ls gs://my-bucket/ + +# Test upload +echo "test" > test.txt +gsutil cp test.txt gs://my-bucket/ +``` + +## Network Issues + +### Issue: Connection Timeouts + +**Symptoms:** +``` +requests.exceptions.ConnectionError +ReadTimeout +Connection refused +``` + +**Solutions:** + +```bash +# Check network connectivity +ping google.com +curl https://docs.example.com/ + +# Increase timeout +{ + "timeout": 60 # seconds +} + +# Use proxy if behind firewall +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 + +# Check DNS resolution +nslookup docs.example.com +dig docs.example.com + +# Test with curl +curl -v https://docs.example.com/ +``` + +### Issue: SSL/TLS Errors + +**Symptoms:** +``` +ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] +SSLCertVerificationError +``` + +**Solutions:** + +```bash +# Update certificates +# Ubuntu/Debian: +sudo apt update && sudo apt install --reinstall ca-certificates + +# RHEL/CentOS: +sudo yum reinstall ca-certificates + +# As last resort (not recommended for production): +export PYTHONHTTPSVERIFY=0 +skill-seekers create --config config.json +``` + +## General Debug Techniques + +### Enable Debug Logging + +```bash +# Set debug level +export LOG_LEVEL=DEBUG + +# Run with verbose output +skill-seekers create --config config.json --verbose + +# Save logs to file +skill-seekers create --config config.json 2>&1 | tee debug.log +``` + +### Collect Diagnostic Information + +```bash +# System info +uname -a +python --version +pip --version + +# Package info +pip show skill-seekers +pip list | grep skill + +# Environment +env | grep -E '(API_KEY|TOKEN|PATH)' + +# Recent errors +grep -i error /var/log/skillseekers/*.log | tail -20 + +# Package all diagnostics +tar czf diagnostics.tar.gz \ + debug.log \ + ~/.config/skill-seekers/ \ + /var/log/skillseekers/ +``` + +### Test Individual Components + +```bash +# Test scraper +python -c " +from skill_seekers.cli.doc_scraper import scrape_all +pages = scrape_all('configs/test.json') +print(f'Scraped {len(pages)} pages') +" + +# Test GitHub API +python -c " +from skill_seekers.cli.github_fetcher import GitHubFetcher +fetcher = GitHubFetcher() +repo = fetcher.fetch('facebook/react') +print(repo['full_name']) +" + +# Test embeddings +python -c " +from skill_seekers.embedding.generator import EmbeddingGenerator +gen = EmbeddingGenerator() +emb = gen.generate('test', model='text-embedding-3-small') +print(f'Embedding dimension: {len(emb)}') +" +``` + +### Interactive Debugging + +```python +# Add breakpoint +import pdb; pdb.set_trace() + +# Or use ipdb +import ipdb; ipdb.set_trace() + +# Debug with IPython +ipython -i script.py +``` + +## Getting More Help + +If you're still experiencing issues: + +1. **Search existing issues:** https://github.com/yusufkaraaslan/Skill_Seekers/issues +2. **Check documentation:** https://skillseekersweb.com/ +3. **Ask on GitHub Discussions:** https://github.com/yusufkaraaslan/Skill_Seekers/discussions +4. **Open a new issue:** Include: + - Skill Seekers version (`skill-seekers --version`) + - Python version (`python --version`) + - Operating system + - Complete error message + - Steps to reproduce + - Diagnostic information (see above) + +## Source-Type-Specific Issues + +### Issue: Missing Optional Dependencies for New Source Types + +**Symptoms:** +``` +ModuleNotFoundError: No module named 'ebooklib' +ModuleNotFoundError: No module named 'python-docx' +ModuleNotFoundError: No module named 'python-pptx' +ImportError: Missing dependency for jupyter extraction +``` + +**Solutions:** + +```bash +# Install all optional dependencies at once +pip install skill-seekers[all] + +# Or install per source type +pip install python-docx # Word (.docx) support +pip install ebooklib # EPUB support +pip install python-pptx # PowerPoint (.pptx) support +pip install nbformat nbconvert # Jupyter Notebook support +pip install pyyaml jsonschema # OpenAPI/Swagger support +pip install asciidoctor # AsciiDoc support (or install system asciidoctor) +pip install feedparser # RSS/Atom feed support +pip install groff # Man page support (system package) + +# Video support (GPU-aware) +skill-seekers create --setup +``` + +### Issue: Confluence API Authentication Fails + +**Symptoms:** +``` +401 Unauthorized: Confluence API rejected credentials +Error: CONFLUENCE_TOKEN not found +``` + +**Solutions:** + +```bash +# Set Confluence Cloud credentials +export CONFLUENCE_URL=https://yourorg.atlassian.net +export CONFLUENCE_EMAIL=your-email@example.com +export CONFLUENCE_TOKEN=your-api-token + +# Generate API token at: +# https://id.atlassian.com/manage-profile/security/api-tokens + +# Test connection +skill-seekers create --space-key MYSPACE --dry-run + +# For Confluence Server/Data Center, use personal access token: +export CONFLUENCE_TOKEN=your-pat +``` + +### Issue: Notion API Authentication Fails + +**Symptoms:** +``` +401 Unauthorized: Notion API rejected credentials +Error: NOTION_TOKEN not found +``` + +**Solutions:** + +```bash +# Set Notion integration token +export NOTION_TOKEN=secret_... + +# Create an integration at: +# https://www.notion.so/my-integrations + +# IMPORTANT: Share the target database/page with your integration +# (click "..." menu on page โ†’ "Add connections" โ†’ select your integration) + +# Test connection +skill-seekers create --database-id DATABASE_ID --dry-run +``` + +### Issue: Jupyter Notebook Extraction Fails + +**Symptoms:** +``` +Error: Cannot read notebook format +nbformat.reader.NotJSONError +``` + +**Solutions:** + +```bash +# Ensure notebook is valid JSON +python -c "import json; json.load(open('notebook.ipynb'))" + +# Install required deps +pip install nbformat nbconvert + +# Re-run with verbose output to see the parse error +skill-seekers create notebook.ipynb --verbose +``` + +### Issue: OpenAPI Spec Parsing Fails + +**Symptoms:** +``` +Error: Not a valid OpenAPI specification +Error: Missing 'openapi' or 'swagger' field +``` + +**Solutions:** + +```bash +# Validate your spec first +pip install openapi-spec-validator +python -c " +from openapi_spec_validator import validate +validate({'openapi': '3.0.0', ...}) +" + +# Ensure the file has the 'openapi' or 'swagger' top-level key +# Supported: OpenAPI 3.x and Swagger 2.0 + +# For remote specs +skill-seekers create https://api.example.com/openapi.json --name my-api +``` + +### Issue: EPUB Extraction Produces Empty Output + +**Symptoms:** +``` +Warning: No content found in EPUB +0 chapters extracted +``` + +**Solutions:** + +```bash +# Check EPUB is valid +pip install epubcheck +epubcheck book.epub + +# Re-run with verbose output (images are extracted automatically) +skill-seekers create book.epub --verbose + +# Some DRM-protected EPUBs cannot be extracted +# Ensure your EPUB is DRM-free +``` + +### Issue: Slack/Discord Export Not Recognized + +**Symptoms:** +``` +Error: Cannot detect chat platform from export directory +Error: No messages found in export +``` + +**Solutions:** + +```bash +# Specify platform explicitly +skill-seekers create --chat-export-path ./slack-export --platform slack +skill-seekers create --chat-export-path ./discord-export --platform discord + +# For Slack: Export from Workspace Settings โ†’ Import/Export +# For Discord: Use DiscordChatExporter or similar tool + +# Check export directory structure +ls ./slack-export/ +# Should contain: channels/, users.json, etc. +``` + +--- + +## Common Error Messages Reference + +| Error | Cause | Solution | +|-------|-------|----------| +| `ModuleNotFoundError` | Package not installed | `pip install skill-seekers` | +| `401 Unauthorized` | Invalid API key | Check API key format | +| `403 Forbidden` | Rate limit exceeded | Add more GitHub tokens | +| `404 Not Found` | Invalid URL/repo | Verify URL is correct | +| `429 Too Many Requests` | API rate limit | Wait or use multiple keys | +| `ConnectionError` | Network issue | Check internet connection | +| `TimeoutError` | Request too slow | Increase timeout | +| `MemoryError` | Out of memory | Reduce batch size | +| `PermissionError` | Access denied | Check file permissions | +| `FileNotFoundError` | Missing file | Verify file path | +| `No module named 'ebooklib'` | EPUB dep missing | `pip install ebooklib` | +| `No module named 'python-docx'` | Word dep missing | `pip install python-docx` | +| `No module named 'python-pptx'` | PPTX dep missing | `pip install python-pptx` | +| `CONFLUENCE_TOKEN not found` | Confluence auth missing | Set env vars (see above) | +| `NOTION_TOKEN not found` | Notion auth missing | Set env vars (see above) | + +--- + +**Still stuck?** Open an issue with the "help wanted" label and we'll assist you! diff --git a/docs/UML/exports/00_package_overview.png b/docs/UML/exports/00_package_overview.png new file mode 100644 index 0000000..a842061 Binary files /dev/null and b/docs/UML/exports/00_package_overview.png differ diff --git a/docs/UML/exports/01_cli_core.png b/docs/UML/exports/01_cli_core.png new file mode 100644 index 0000000..fed05c8 Binary files /dev/null and b/docs/UML/exports/01_cli_core.png differ diff --git a/docs/UML/exports/02_scrapers.png b/docs/UML/exports/02_scrapers.png new file mode 100644 index 0000000..3efd62f Binary files /dev/null and b/docs/UML/exports/02_scrapers.png differ diff --git a/docs/UML/exports/03_adaptors.png b/docs/UML/exports/03_adaptors.png new file mode 100644 index 0000000..3c04052 Binary files /dev/null and b/docs/UML/exports/03_adaptors.png differ diff --git a/docs/UML/exports/04_analysis.png b/docs/UML/exports/04_analysis.png new file mode 100644 index 0000000..93a732e Binary files /dev/null and b/docs/UML/exports/04_analysis.png differ diff --git a/docs/UML/exports/05_enhancement.png b/docs/UML/exports/05_enhancement.png new file mode 100644 index 0000000..6f594ab Binary files /dev/null and b/docs/UML/exports/05_enhancement.png differ diff --git a/docs/UML/exports/06_packaging.png b/docs/UML/exports/06_packaging.png new file mode 100644 index 0000000..db644b7 Binary files /dev/null and b/docs/UML/exports/06_packaging.png differ diff --git a/docs/UML/exports/07_mcp_server.png b/docs/UML/exports/07_mcp_server.png new file mode 100644 index 0000000..b61c1ca Binary files /dev/null and b/docs/UML/exports/07_mcp_server.png differ diff --git a/docs/UML/exports/08_sync.png b/docs/UML/exports/08_sync.png new file mode 100644 index 0000000..b82fa64 Binary files /dev/null and b/docs/UML/exports/08_sync.png differ diff --git a/docs/UML/exports/09_parsers.png b/docs/UML/exports/09_parsers.png new file mode 100644 index 0000000..bd574f4 Binary files /dev/null and b/docs/UML/exports/09_parsers.png differ diff --git a/docs/UML/exports/10_storage.png b/docs/UML/exports/10_storage.png new file mode 100644 index 0000000..d8db2a0 Binary files /dev/null and b/docs/UML/exports/10_storage.png differ diff --git a/docs/UML/exports/11_embedding.png b/docs/UML/exports/11_embedding.png new file mode 100644 index 0000000..0a1deb1 Binary files /dev/null and b/docs/UML/exports/11_embedding.png differ diff --git a/docs/UML/exports/12_benchmark.png b/docs/UML/exports/12_benchmark.png new file mode 100644 index 0000000..80a59f6 Binary files /dev/null and b/docs/UML/exports/12_benchmark.png differ diff --git a/docs/UML/exports/13_utilities.png b/docs/UML/exports/13_utilities.png new file mode 100644 index 0000000..623975a Binary files /dev/null and b/docs/UML/exports/13_utilities.png differ diff --git a/docs/UML/exports/14_create_pipeline_sequence.png b/docs/UML/exports/14_create_pipeline_sequence.png new file mode 100644 index 0000000..9157acc Binary files /dev/null and b/docs/UML/exports/14_create_pipeline_sequence.png differ diff --git a/docs/UML/exports/15_github_unified_sequence.png b/docs/UML/exports/15_github_unified_sequence.png new file mode 100644 index 0000000..7717038 Binary files /dev/null and b/docs/UML/exports/15_github_unified_sequence.png differ diff --git a/docs/UML/exports/16_source_detection_activity.png b/docs/UML/exports/16_source_detection_activity.png new file mode 100644 index 0000000..1cbf2e9 Binary files /dev/null and b/docs/UML/exports/16_source_detection_activity.png differ diff --git a/docs/UML/exports/17_mcp_invocation_sequence.png b/docs/UML/exports/17_mcp_invocation_sequence.png new file mode 100644 index 0000000..528f34a Binary files /dev/null and b/docs/UML/exports/17_mcp_invocation_sequence.png differ diff --git a/docs/UML/exports/18_enhancement_activity.png b/docs/UML/exports/18_enhancement_activity.png new file mode 100644 index 0000000..095d574 Binary files /dev/null and b/docs/UML/exports/18_enhancement_activity.png differ diff --git a/docs/UML/exports/19_runtime_components.png b/docs/UML/exports/19_runtime_components.png new file mode 100644 index 0000000..b917c99 Binary files /dev/null and b/docs/UML/exports/19_runtime_components.png differ diff --git a/docs/UML/exports/20_browser_rendering_sequence.png b/docs/UML/exports/20_browser_rendering_sequence.png new file mode 100644 index 0000000..b49860c Binary files /dev/null and b/docs/UML/exports/20_browser_rendering_sequence.png differ diff --git a/docs/UML/html/index.html/assets/css/bootstrap.css b/docs/UML/html/index.html/assets/css/bootstrap.css new file mode 100755 index 0000000..fa26e3c --- /dev/null +++ b/docs/UML/html/index.html/assets/css/bootstrap.css @@ -0,0 +1,6158 @@ +/*! + * Bootstrap v2.3.1 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +body { + margin: 0; + font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover, +a:focus { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover, +a.muted:focus { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover, +a.text-warning:focus { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover, +a.text-error:focus { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover, +a.text-info:focus { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover, +a.text-success:focus { + color: #356635; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-center { + text-align: center; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + *display: inline; + padding-right: 5px; + padding-left: 5px; + *zoom: 1; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 17.5px; + font-weight: 300; + line-height: 1.25; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: source-sans-pro, Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + display: inline-block; + margin-bottom: 10px; + font-size: 0; + white-space: nowrap; + vertical-align: middle; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu, +.input-append .popover, +.input-prepend .popover { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child, +.table-bordered tbody:first-child tr:first-child > th:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child, +.table-bordered tbody:first-child tr:first-child > th:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tbody:last-child tr:last-child > th:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > th:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tbody:last-child tr:last-child > th:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > th:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover > td, +.table-hover tbody tr:hover > th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success > td { + background-color: #dff0d8; +} + +.table tbody tr.error > td { + background-color: #f2dede; +} + +.table tbody tr.warning > td { + background-color: #fcf8e3; +} + +.table tbody tr.info > td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover > td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover > td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover > td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover > td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/focus/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:focus > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > li > a:focus > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:focus > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"], +.dropdown-submenu:focus > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + width: 16px; + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus, +.dropdown-submenu:hover > a, +.dropdown-submenu:focus > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #999999; +} + +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover, +.close:focus { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #cccccc; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #b3b3b3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:focus, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:focus, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:focus, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover, +.btn-link:focus { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover, +.btn-link[disabled]:focus { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.btn-mini .caret, +.btn-small .caret { + margin-top: 8px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover, +.nav-list > .active > a:focus { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover, +.nav-tabs > .active > a:focus { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover, +.nav-pills > .active > a:focus { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover, +.nav-tabs.nav-stacked > li > a:focus { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret, +.nav .dropdown-toggle:focus .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover, +.nav > .dropdown.active > a:focus { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover, +.nav > li.dropdown.open.active > a:focus { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret, +.nav li.dropdown.open a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover, +.tabs-stacked .open > a:focus { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover, +.tabs-below > .nav-tabs > li > a:focus { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover, +.tabs-below > .nav-tabs > .active > a:focus { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover, +.tabs-left > .nav-tabs > li > a:focus { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover, +.tabs-left > .nav-tabs .active > a:focus { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover, +.tabs-right > .nav-tabs > li > a:focus { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover, +.tabs-right > .nav-tabs .active > a:focus { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover, +.nav > .disabled > a:focus { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover, +.navbar .brand:focus { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover, +.navbar-link:focus { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn, +.navbar .input-prepend .btn-group, +.navbar .input-append .btn-group { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: source-sans-pro, Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:focus, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret, +.navbar .nav li.dropdown > a:focus .caret { + border-top-color: #333333; + border-bottom-color: #333333; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret, +.navbar-inverse .nav li.dropdown > a:focus .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:focus, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > li > a:focus, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover, +.pagination ul > .disabled > a:focus { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + font-size: 11px; + line-height: 1.4; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} + +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} + +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} + +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + max-width: 276px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-title:empty { + display: none; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media > .pull-left { + margin-right: 10px; +} + +.media > .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.label:focus, +a.badge:hover, +a.badge:focus { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover, +.carousel-control:focus { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-indicators { + position: absolute; + top: 15px; + right: 15px; + z-index: 5; + margin: 0; + list-style: none; +} + +.carousel-indicators li { + display: block; + float: left; + width: 10px; + height: 10px; + margin-left: 5px; + text-indent: -999px; + background-color: #ccc; + background-color: rgba(255, 255, 255, 0.25); + border-radius: 5px; +} + +.carousel-indicators .active { + background-color: #fff; +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/docs/UML/html/index.html/assets/css/jquery.bonsai.css b/docs/UML/html/index.html/assets/css/jquery.bonsai.css new file mode 100755 index 0000000..9cd9214 --- /dev/null +++ b/docs/UML/html/index.html/assets/css/jquery.bonsai.css @@ -0,0 +1,36 @@ +.bonsai, +.bonsai li { + margin: 0; + padding: 0; + list-style: none; + overflow: hidden; +} + +.bonsai li { + position: relative; + padding-left: 1.3em; /* padding for the thumb */ +} + +li .thumb { + margin: -1px 0 0 -1em; /* negative margin into the padding of the li */ + position: absolute; + cursor: pointer; +} + +li.has-children > .thumb:after { + content: 'โ–ธ'; +} + +li.has-children.expanded > .thumb:after { + content: 'โ–พ'; +} + +li.collapsed > ol.bonsai { + height: 0; + overflow: hidden; +} + +.bonsai .all, +.bonsai .none { + cursor: pointer; +} diff --git a/docs/UML/html/index.html/assets/css/main.css b/docs/UML/html/index.html/assets/css/main.css new file mode 100755 index 0000000..8ad3ecb --- /dev/null +++ b/docs/UML/html/index.html/assets/css/main.css @@ -0,0 +1,812 @@ +/* bootstrap.css override +---------------------------------------------------------*/ + +body { + margin: 0; + font-family: source-sans-pro, Helvetica, Arial, sans-serif !imporant; + font-size: 14px; + font-weight: 400; + color: #555; + background-color: #F8F8F8; + -webkit-font-smoothing: antialiased; +} + +.module, .left-section { + overflow-y: auto; + height: calc(100vh - 95px); +} + +a { + color: #137cd4; +} + +a:focus { + outline: none; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 2px #6fb5f1; +} + +p { + margin-bottom: 20px; +} + +code, +pre { + padding: 20px; + font-family: source-code-pro, Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #454545; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +p code, +p pre, +li code, +li pre { + border-radius: 2px; + padding: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0 0; + font-weight: 300; + line-height: 20px; + color: #000; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + color: #888; +} + +h1, +h2, +h3 { + line-height: 1.3em; +} + +h1 { + font-size: 40px; + font-weight: 400; + margin-top: 30px; +} + +h2 { + font-size: 30px; +} + +h3 { + font-size: 27px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +dl { + margin-bottom: 0; +} + +dt, +dd { + line-height: 20px; +} + +dt { + color: #000; + font-weight: 400; + margin-bottom: 5px; + -webkit-font-smoothing: subpixel-antialiased; /* this makes it slightly bolder */ +} + +dd { + display: inline-block; + margin-bottom: 20px; +} + +input, +button, +select, +textarea { + font-family: source-sans-pro, Helvetica, Arial, sans-serif; +} + +table p { + margin-bottom: 0px; +} + +.btn { + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #454545; + text-align: center; + text-shadow: none; + background-color: #e5e9e9; + *background-color: #e5e9e9; + background-image: none; + + border: 1px solid #cdcdcd; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn:hover, +.btn:focus, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #454545; + background-color: #e5e9e9; + *background-color: #e5e9e9; +} + +.btn:active, +.btn.active { + background-color: #d3d7d7; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover, +.btn:focus { + color: #454545; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + border: 1px solid #2893ef; + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: 0 0 0 1px #94ceff; + -moz-box-shadow: 0 0 0 1px #94ceff; + box-shadow: 0 0 0 1px #94ceff; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.15); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + color: #454545; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: #2893ef; + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 0 1px #94ceff; +} + +.nav > li > a:hover, +.nav > li > a:focus { + background-color: #e0f0fa; + border-radius: 3px; + color: #137cd4; + text-decoration: none; +} + +.navbar .nav > li > a { + padding: 10px 15px 10px; + color: #000; + font-weight: 300; + text-shadow: none; +} + +.nav-list { + margin-left: 15px; +} + +.package-list.nav-list { + margin-left: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + text-shadow: none; +} + +.nav-header a, +.nav-header a:hover { + color: #000 !important; +} + +.navbar .brand { + font-weight: 500; + color: #000; + text-shadow: none; +} + +.navbar-inner { + min-height: 40px; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-inverse .navbar-inner { + background-image: none; + background: #fff; + border-bottom: 1px solid rgba(0, 0, 0, 0.12); + + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06); + -moz-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #000; + text-shadow: none; +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover, +.navbar-inverse .brand:focus, +.navbar-inverse .nav > li > a:focus { + color: #000; +} + +.navbar-inverse .brand { + color: #000; + margin-left: -10px; +} + +.navbar-inverse .navbar-text { + color: #454545; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #000; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #000; + background-color: transparent; +} + +.navbar-inverse .navbar-link { + color: #000; +} + +.navbar-inverse .navbar-link:hover, +.navbar-inverse .navbar-link:focus { + color: #000; +} + +.nav-header { + padding: 3px 15px; + font-size: 11px; + font-weight: 400; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: none; + letter-spacing: 1px; +} + +.page-header { + padding-bottom: 0; + margin: 10px 0 40px; + border-bottom: 1px solid #d7d7d7; +} + + +.page-header h1 { + background: #F8F8F8; + display: inline-block; + position: relative; + bottom: -19px; +} + +.alert { + padding: 4px 7px; +} + +.alert-info { + color: #000; + background-color: #e0f0fa; + border-color: #d9eaf4; + border-radius: 3px; + font-size: 12px; + text-shadow: none; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -15px; +} + +.label, +badge { + padding: 4px 7px; + font-weight: 400; + color: #ffffff; + text-shadow: none; +} + +.label-non-nullable, +.label-nullable, +.label-optional, +.label-info, +.badge-info { + background-color: #eee; + color: #222; + text-shadow: none; +} + +.well { + padding: 19px 19px 0; +} + +.table { + background-color: #fff; +} + +/* non-bootstrap css +---------------------------------------------------------*/ + +[class^="icon-"], [class*=" icon-"] { + background: none; +} +body{ + padding-left: 1.5em; + padding-right: 1.5em; +} + +.number-of-modules { + font-size: 14px; + font-weight: 400; + line-height: 1.5em; + margin: 10px 0 0 15px; +} + +#other-module{ + display: none; + overflow: scroll; +} +#toggle-other-modules i{ + font-size: 28px; +} +.nav-header{ +} + +#description { + font-size: 14px; + line-height: 22px; +} +section > h2, +section > h3{ + font-size: 30px; + line-height: 30px; + margin-bottom: 10px; + margin-top: 25px; + text-indent: 2px; +} +.properties > h3 { + font-size: 20px; + line-height: 20px; + margin-bottom: 15px; + margin-top: 30px; + text-indent: 2px; +} +.methods > h3 { + font-size: 20px; + line-height: 20px; + margin-bottom: 15px; + margin-top: 30px; + text-indent: 2px; +} +h3 .checkbox{ + display: inline-block; + font-weight: 300; + margin-left: 10px; + vertical-align: middle; + width: auto; +} +.element-list ul{ + margin: 0; + padding: 0; +} +.element-list ul li { + display: inline-block; + padding: 3px 8px; + margin-bottom: 10px; + margin-right: 5px; + font-size: 14px; + line-height: 20px; + color: #454545; + text-align: center; + background-color: #e0f0fa; + *background-color: #e0f0fa; + border: 1px solid #d9eaf4; + background-image: none; + + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.element-list ul li a { + padding-top:0; + padding-bottom:0; +} +.element-list ul li a:hover { + background: transparent; +} +.member{ + background: #fff; + color: #454545; + margin-bottom: 20px; + overflow: hidden; /* clearfix */ + padding: 20px 17px; + border-radius: 4px; + border: 1px solid #dedede; + border-top: 1px solid #eee; +} +/*.member:last-of-type{*/ + /*margin-bottom: 0;*/ +/*}*/ +.member h4{ + border-bottom: 1px solid #e7e7e7; + font-weight: 400; + padding-bottom: 10px; + margin-top: -10px; + margin-bottom: 10px; +} +.member .code, +.member .code { + background: #f9f9f9; + border: 1px solid #eee; + border-top: 1px solid #e7e7e7; + display: none; + margin-top: 0; + margin-bottom: 0; +} + +.member .example { + display: block; + margin-bottom: 15px; + position: relative; +} + +.member .example:before { + color: #888; + content: 'Example'; + font-style: italic; + position: absolute; + right: 10px; + top: 10px; +} + +.member.private{ + display: none; + background: #fff; +} +.show-private .member.private{ + display: block; +} +.member .scope{ + color: #888; + font-style: italic; + padding-bottom: 10px; + margin-top: -10px; +} + +.member .anchor { + color: inherit; + visibility: hidden +} + +.member .anchor:hover { + text-decoration: none; +} + +.member .anchor:focus { + box-shadow: none; +} + +.member .anchor .icon-link { + line-height: 24px; +} + +.member:hover .anchor { + visibility: visible; +} + +.deprecated { + background: #EBEBEB; + background-image: repeating-linear-gradient(135deg, transparent, transparent 35px, rgba(255,255,255,.5) 35px, rgba(255,255,255,.5) 70px); +} + +.deprecated .label-deprecated { + margin-right: 10px; +} + +.deprecated .scope { + text-decoration: line-through; +} + +.show-code { + float: right; +} + +/* Typeahead styles (Bootstrap conflicts) */ + +.twitter-typeahead .tt-query, +.twitter-typeahead .tt-hint { + margin-bottom: 0; +} + +.tt-dropdown-menu { + min-width: 160px; + margin-top: 0; + padding: 5px 0; + background-color: #fff; + border: 1px solid #d7d7d7; + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.12); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.tt-suggestion { + display: block; + font-family: source-sans-pro, Helvetica, Arial, sans-serif; + font-size: 14px; + padding: 3px 10px; +} + +.tt-suggestion.tt-is-under-cursor { + color: #000; + background-color: #e0f0fa; + background-image: none; +} + +.tt-suggestion.tt-is-under-cursor a { + color: #fff; +} + +.tt-suggestion p { + margin: 0; +} + +.navbar-fixed-top .container { + margin: 5px; + width: auto; +} + +span.twitter-typeahead { + float: right; + margin: 5px; +} + +input.typeahead, input.tt-hint { + margin: 0; +} + +input.tt-hint { + color: #999; +} + +dl .label { + margin-bottom: 7px; +} + +/* --------------- Appended ---------------- */ + +.node-icon { + width: 16px; + height: 16px; + display: inline-block; +} diff --git a/docs/UML/html/index.html/assets/icon-font/icons.css b/docs/UML/html/index.html/assets/icon-font/icons.css new file mode 100755 index 0000000..7350e86 --- /dev/null +++ b/docs/UML/html/index.html/assets/icon-font/icons.css @@ -0,0 +1,3117 @@ +/* Generated by grunt-webfont */ + + + +@font-face { + font-family:"icons"; + src:url("icons.eot?4e9eb228d42455658e5c5d119e628bf2"); + src:url("icons.eot?4e9eb228d42455658e5c5d119e628bf2#iefix") format("embedded-opentype"), + url("icons.woff?4e9eb228d42455658e5c5d119e628bf2") format("woff"), + url("icons.ttf?4e9eb228d42455658e5c5d119e628bf2") format("truetype"); + font-weight:normal; + font-style:normal; +} + +.staruml-icon { + + font-family:"icons"; + + display:inline-block; + line-height:1; + font-weight:normal; + font-style:normal; + speak:none; + text-decoration:inherit; + text-transform:none; + text-rendering:auto; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale; +} + + +/* Icons */ + + +.icon-AWSArrow:before { + content:"\f101"; +} + + +.icon-AWSAvailabilityZone:before { + content:"\f102"; +} + + +.icon-AWSCallout:before { + content:"\f103"; +} + + +.icon-AWSDiagram:before { + content:"\f104"; +} + + +.icon-AWSGeneralResource:before { + content:"\f105"; +} + + +.icon-AWSGenericGroup:before { + content:"\f106"; +} + + +.icon-AWSGroup:before { + content:"\f107"; +} + + +.icon-AWSModel:before { + content:"\f108"; +} + + +.icon-AWSResource:before { + content:"\f109"; +} + + +.icon-AWSSecurityGroup:before { + content:"\f10a"; +} + + +.icon-AWSService:before { + content:"\f10b"; +} + + +.icon-AzureCallout:before { + content:"\f10c"; +} + + +.icon-AzureConnector:before { + content:"\f10d"; +} + + +.icon-AzureDiagram:before { + content:"\f10e"; +} + + +.icon-AzureGroup:before { + content:"\f10f"; +} + + +.icon-AzureModel:before { + content:"\f110"; +} + + +.icon-AzureService:before { + content:"\f111"; +} + + +.icon-BPMNAdHocSubProcess:before { + content:"\f112"; +} + + +.icon-BPMNAssociation:before { + content:"\f113"; +} + + +.icon-BPMNBoundaryEvent:before { + content:"\f114"; +} + + +.icon-BPMNBusinessRuleTask:before { + content:"\f115"; +} + + +.icon-BPMNCallActivity:before { + content:"\f116"; +} + + +.icon-BPMNCallConversation:before { + content:"\f117"; +} + + +.icon-BPMNCancelEventDefinition:before { + content:"\f118"; +} + + +.icon-BPMNChoreography:before { + content:"\f119"; +} + + +.icon-BPMNChoreographyTask:before { + content:"\f11a"; +} + + +.icon-BPMNCollaboration:before { + content:"\f11b"; +} + + +.icon-BPMNCompensateEventDefinition:before { + content:"\f11c"; +} + + +.icon-BPMNComplexGateway:before { + content:"\f11d"; +} + + +.icon-BPMNConditionalEventDefinition:before { + content:"\f11e"; +} + + +.icon-BPMNConversation:before { + content:"\f11f"; +} + + +.icon-BPMNConversationLink:before { + content:"\f120"; +} + + +.icon-BPMNDataAssociation:before { + content:"\f121"; +} + + +.icon-BPMNDataInput:before { + content:"\f122"; +} + + +.icon-BPMNDataObject:before { + content:"\f123"; +} + + +.icon-BPMNDataOutput:before { + content:"\f124"; +} + + +.icon-BPMNDataStore:before { + content:"\f125"; +} + + +.icon-BPMNDiagram:before { + content:"\f126"; +} + + +.icon-BPMNEndEvent:before { + content:"\f127"; +} + + +.icon-BPMNErrorEventDefinition:before { + content:"\f128"; +} + + +.icon-BPMNEscalationEventDefinition:before { + content:"\f129"; +} + + +.icon-BPMNEvent:before { + content:"\f12a"; +} + + +.icon-BPMNEventBasedGateway:before { + content:"\f12b"; +} + + +.icon-BPMNExclusiveGateway:before { + content:"\f12c"; +} + + +.icon-BPMNGateway:before { + content:"\f12d"; +} + + +.icon-BPMNGlobalConversation:before { + content:"\f12e"; +} + + +.icon-BPMNGroup:before { + content:"\f12f"; +} + + +.icon-BPMNInclusiveGateway:before { + content:"\f130"; +} + + +.icon-BPMNIntermediateCatchEvent:before { + content:"\f131"; +} + + +.icon-BPMNIntermediateEvent:before { + content:"\f132"; +} + + +.icon-BPMNIntermediateThrowEvent:before { + content:"\f133"; +} + + +.icon-BPMNLane:before { + content:"\f134"; +} + + +.icon-BPMNLaneVert:before { + content:"\f135"; +} + + +.icon-BPMNLinkEventDefinition:before { + content:"\f136"; +} + + +.icon-BPMNManualTask:before { + content:"\f137"; +} + + +.icon-BPMNMessage:before { + content:"\f138"; +} + + +.icon-BPMNMessageEventDefinition:before { + content:"\f139"; +} + + +.icon-BPMNMessageFlow:before { + content:"\f13a"; +} + + +.icon-BPMNMessageLink:before { + content:"\f13b"; +} + + +.icon-BPMNParallelGateway:before { + content:"\f13c"; +} + + +.icon-BPMNParticipant:before { + content:"\f13d"; +} + + +.icon-BPMNParticipantVert:before { + content:"\f13e"; +} + + +.icon-BPMNProcess:before { + content:"\f13f"; +} + + +.icon-BPMNReceiveTask:before { + content:"\f140"; +} + + +.icon-BPMNScriptTask:before { + content:"\f141"; +} + + +.icon-BPMNSendTask:before { + content:"\f142"; +} + + +.icon-BPMNSequenceFlow:before { + content:"\f143"; +} + + +.icon-BPMNServiceTask:before { + content:"\f144"; +} + + +.icon-BPMNSignalEventDefinition:before { + content:"\f145"; +} + + +.icon-BPMNStartEvent:before { + content:"\f146"; +} + + +.icon-BPMNSubChoreography:before { + content:"\f147"; +} + + +.icon-BPMNSubConversation:before { + content:"\f148"; +} + + +.icon-BPMNSubProcess:before { + content:"\f149"; +} + + +.icon-BPMNTask:before { + content:"\f14a"; +} + + +.icon-BPMNTerminateEventDefinition:before { + content:"\f14b"; +} + + +.icon-BPMNTextAnnotation:before { + content:"\f14c"; +} + + +.icon-BPMNTimerEventDefinition:before { + content:"\f14d"; +} + + +.icon-BPMNTransaction:before { + content:"\f14e"; +} + + +.icon-BPMNUserTask:before { + content:"\f14f"; +} + + +.icon-C4Component:before { + content:"\f150"; +} + + +.icon-C4Container:before { + content:"\f151"; +} + + +.icon-C4Diagram:before { + content:"\f152"; +} + + +.icon-C4Element:before { + content:"\f153"; +} + + +.icon-C4Model:before { + content:"\f154"; +} + + +.icon-C4Person:before { + content:"\f155"; +} + + +.icon-C4Relationship:before { + content:"\f156"; +} + + +.icon-C4SoftwareSystem:before { + content:"\f157"; +} + + +.icon-DFDDataFlow:before { + content:"\f158"; +} + + +.icon-DFDDataFlowModel:before { + content:"\f159"; +} + + +.icon-DFDDataStore:before { + content:"\f15a"; +} + + +.icon-DFDDiagram:before { + content:"\f15b"; +} + + +.icon-DFDExternalEntity:before { + content:"\f15c"; +} + + +.icon-DFDProcess:before { + content:"\f15d"; +} + + +.icon-Ellipse:before { + content:"\f15e"; +} + + +.icon-ERDColumn:before { + content:"\f15f"; +} + + +.icon-ERDDataModel:before { + content:"\f160"; +} + + +.icon-ERDDiagram:before { + content:"\f161"; +} + + +.icon-ERDEntity:before { + content:"\f162"; +} + + +.icon-ERDManyToMany:before { + content:"\f163"; +} + + +.icon-ERDOneToMany:before { + content:"\f164"; +} + + +.icon-ERDOneToOne:before { + content:"\f165"; +} + + +.icon-ERDRelationship:before { + content:"\f166"; +} + + +.icon-ERDRelationshipEnd:before { + content:"\f167"; +} + + +.icon-FCAlternateProcess:before { + content:"\f168"; +} + + +.icon-FCCard:before { + content:"\f169"; +} + + +.icon-FCCollate:before { + content:"\f16a"; +} + + +.icon-FCConnector:before { + content:"\f16b"; +} + + +.icon-FCData:before { + content:"\f16c"; +} + + +.icon-FCDatabase:before { + content:"\f16d"; +} + + +.icon-FCDecision:before { + content:"\f16e"; +} + + +.icon-FCDelay:before { + content:"\f16f"; +} + + +.icon-FCDirectAccessStorage:before { + content:"\f170"; +} + + +.icon-FCDisplay:before { + content:"\f171"; +} + + +.icon-FCDocument:before { + content:"\f172"; +} + + +.icon-FCExtract:before { + content:"\f173"; +} + + +.icon-FCFlow:before { + content:"\f174"; +} + + +.icon-FCFlowchart:before { + content:"\f175"; +} + + +.icon-FCFlowchartDiagram:before { + content:"\f176"; +} + + +.icon-FCInternalStorage:before { + content:"\f177"; +} + + +.icon-FCManualInput:before { + content:"\f178"; +} + + +.icon-FCManualOperation:before { + content:"\f179"; +} + + +.icon-FCMerge:before { + content:"\f17a"; +} + + +.icon-FCMultiDocument:before { + content:"\f17b"; +} + + +.icon-FCOffPageConnector:before { + content:"\f17c"; +} + + +.icon-FCOr:before { + content:"\f17d"; +} + + +.icon-FCPredefinedProcess:before { + content:"\f17e"; +} + + +.icon-FCPreparation:before { + content:"\f17f"; +} + + +.icon-FCProcess:before { + content:"\f180"; +} + + +.icon-FCPunchedTape:before { + content:"\f181"; +} + + +.icon-FCSort:before { + content:"\f182"; +} + + +.icon-FCStoredData:before { + content:"\f183"; +} + + +.icon-FCSummingJunction:before { + content:"\f184"; +} + + +.icon-FCTerminator:before { + content:"\f185"; +} + + +.icon-FreeLine:before { + content:"\f186"; +} + + +.icon-GCPDiagram:before { + content:"\f187"; +} + + +.icon-GCPModel:before { + content:"\f188"; +} + + +.icon-GCPPath:before { + content:"\f189"; +} + + +.icon-GCPProduct:before { + content:"\f18a"; +} + + +.icon-GCPService:before { + content:"\f18b"; +} + + +.icon-GCPUser:before { + content:"\f18c"; +} + + +.icon-GCPZone:before { + content:"\f18d"; +} + + +.icon-Hyperlink:before { + content:"\f18e"; +} + + +.icon-Image:before { + content:"\f18f"; +} + + +.icon-MMEdge:before { + content:"\f190"; +} + + +.icon-MMMindmap:before { + content:"\f191"; +} + + +.icon-MMMindmapDiagram:before { + content:"\f192"; +} + + +.icon-MMNode:before { + content:"\f193"; +} + + +.icon-Project:before { + content:"\f194"; +} + + +.icon-Rectangle:before { + content:"\f195"; +} + + +.icon-RoundedRectangle:before { + content:"\f196"; +} + + +.icon-SysMLBlock:before { + content:"\f197"; +} + + +.icon-SysMLBlockDefinitionDiagram:before { + content:"\f198"; +} + + +.icon-SysMLConnector:before { + content:"\f199"; +} + + +.icon-SysMLConstraintBlock:before { + content:"\f19a"; +} + + +.icon-SysMLConstraintParameter:before { + content:"\f19b"; +} + + +.icon-SysMLConstraintProperty:before { + content:"\f19c"; +} + + +.icon-SysMLFlowProperty:before { + content:"\f19d"; +} + + +.icon-SysMLInterfaceBlock:before { + content:"\f19e"; +} + + +.icon-SysMLInternalBlockDiagram:before { + content:"\f19f"; +} + + +.icon-SysMLItemFlow:before { + content:"\f1a0"; +} + + +.icon-SysMLParametricDiagram:before { + content:"\f1a1"; +} + + +.icon-SysMLPart:before { + content:"\f1a2"; +} + + +.icon-SysMLPort:before { + content:"\f1a3"; +} + + +.icon-SysMLProperty:before { + content:"\f1a4"; +} + + +.icon-SysMLReference:before { + content:"\f1a5"; +} + + +.icon-SysMLRequirement:before { + content:"\f1a6"; +} + + +.icon-SysMLRequirementDiagram:before { + content:"\f1a7"; +} + + +.icon-SysMLValue:before { + content:"\f1a8"; +} + + +.icon-SysMLValueType:before { + content:"\f1a9"; +} + + +.icon-Tag:before { + content:"\f1aa"; +} + + +.icon-tool-add-sub-requirement:before { + content:"\f1ab"; +} + + +.icon-tool-add:before { + content:"\f1ac"; +} + + +.icon-tool-aggregation:before { + content:"\f1ad"; +} + + +.icon-tool-align-bottom:before { + content:"\f1ae"; +} + + +.icon-tool-align-center:before { + content:"\f1af"; +} + + +.icon-tool-align-left:before { + content:"\f1b0"; +} + + +.icon-tool-align-middle:before { + content:"\f1b1"; +} + + +.icon-tool-align-right:before { + content:"\f1b2"; +} + + +.icon-tool-align-space-even-horz:before { + content:"\f1b3"; +} + + +.icon-tool-align-space-even-vert:before { + content:"\f1b4"; +} + + +.icon-tool-align-top:before { + content:"\f1b5"; +} + + +.icon-tool-associate:before { + content:"\f1b6"; +} + + +.icon-tool-associated-actor:before { + content:"\f1b7"; +} + + +.icon-tool-associated-usecase:before { + content:"\f1b8"; +} + + +.icon-tool-association:before { + content:"\f1b9"; +} + + +.icon-tool-asynch-call:before { + content:"\f1ba"; +} + + +.icon-tool-asynch-signal:before { + content:"\f1bb"; +} + + +.icon-tool-attribute:before { + content:"\f1bc"; +} + + +.icon-tool-auto-resize:before { + content:"\f1bd"; +} + + +.icon-tool-aws-icon:before { + content:"\f1be"; +} + + +.icon-tool-azure-dashed:before { + content:"\f1bf"; +} + + +.icon-tool-azure-icon:before { + content:"\f1c0"; +} + + +.icon-tool-azure-rect:before { + content:"\f1c1"; +} + + +.icon-tool-azure-rounded:before { + content:"\f1c2"; +} + + +.icon-tool-azure-solid:before { + content:"\f1c3"; +} + + +.icon-tool-bpmn-add-annotation:before { + content:"\f1c4"; +} + + +.icon-tool-bpmn-choreography-add-initiating-message:before { + content:"\f1c5"; +} + + +.icon-tool-bpmn-choreography-add-participant-lower:before { + content:"\f1c6"; +} + + +.icon-tool-bpmn-choreography-add-participant-upper:before { + content:"\f1c7"; +} + + +.icon-tool-bpmn-choreography-add-return-message:before { + content:"\f1c8"; +} + + +.icon-tool-bpmn-choreography-create-participant-lower:before { + content:"\f1c9"; +} + + +.icon-tool-bpmn-choreography-create-participant-upper:before { + content:"\f1ca"; +} + + +.icon-tool-bpmn-choreography-initiating-participant:before { + content:"\f1cb"; +} + + +.icon-tool-BPMNBoundaryEvent:before { + content:"\f1cc"; +} + + +.icon-tool-BPMNCancelEventDefinition:before { + content:"\f1cd"; +} + + +.icon-tool-BPMNCompensateEventDefinition:before { + content:"\f1ce"; +} + + +.icon-tool-BPMNConditionalEventDefinition:before { + content:"\f1cf"; +} + + +.icon-tool-BPMNErrorEventDefinition:before { + content:"\f1d0"; +} + + +.icon-tool-BPMNEscalationEventDefinition:before { + content:"\f1d1"; +} + + +.icon-tool-BPMNLane:before { + content:"\f1d2"; +} + + +.icon-tool-BPMNLinkEventDefinition:before { + content:"\f1d3"; +} + + +.icon-tool-BPMNMessageEventDefinition:before { + content:"\f1d4"; +} + + +.icon-tool-BPMNSignalEventDefinition:before { + content:"\f1d5"; +} + + +.icon-tool-BPMNTerminateEventDefinition:before { + content:"\f1d6"; +} + + +.icon-tool-BPMNTimerEventDefinition:before { + content:"\f1d7"; +} + + +.icon-tool-bring-to-front:before { + content:"\f1d8"; +} + + +.icon-tool-choice:before { + content:"\f1d9"; +} + + +.icon-tool-communicating-node:before { + content:"\f1da"; +} + + +.icon-tool-composite:before { + content:"\f1db"; +} + + +.icon-tool-composition:before { + content:"\f1dc"; +} + + +.icon-tool-connected-lifeline:before { + content:"\f1dd"; +} + + +.icon-tool-connected-part:before { + content:"\f1de"; +} + + +.icon-tool-connection-point-reference:before { + content:"\f1df"; +} + + +.icon-tool-constraint-parameter:before { + content:"\f1e0"; +} + + +.icon-tool-constraint-property:before { + content:"\f1e1"; +} + + +.icon-tool-constraint:before { + content:"\f1e2"; +} + + +.icon-tool-create-block:before { + content:"\f1e3"; +} + + +.icon-tool-create-constraint-block:before { + content:"\f1e4"; +} + + +.icon-tool-create-item-flow:before { + content:"\f1e5"; +} + + +.icon-tool-create-message-lifeline:before { + content:"\f1e6"; +} + + +.icon-tool-create-message:before { + content:"\f1e7"; +} + + +.icon-tool-create-operation:before { + content:"\f1e8"; +} + + +.icon-tool-create-signal:before { + content:"\f1e9"; +} + + +.icon-tool-create-state-condition:before { + content:"\f1ea"; +} + + +.icon-tool-create-type:before { + content:"\f1eb"; +} + + +.icon-tool-create-value-type:before { + content:"\f1ec"; +} + + +.icon-tool-curve:before { + content:"\f1ed"; +} + + +.icon-tool-decision:before { + content:"\f1ee"; +} + + +.icon-tool-delete-item-flow:before { + content:"\f1ef"; +} + + +.icon-tool-delete-message:before { + content:"\f1f0"; +} + + +.icon-tool-delete:before { + content:"\f1f1"; +} + + +.icon-tool-dependant-package:before { + content:"\f1f2"; +} + + +.icon-tool-depending-package:before { + content:"\f1f3"; +} + + +.icon-tool-deployed-artifact:before { + content:"\f1f4"; +} + + +.icon-tool-deployed-component:before { + content:"\f1f5"; +} + + +.icon-tool-do-activity:before { + content:"\f1f6"; +} + + +.icon-tool-edit:before { + content:"\f1f7"; +} + + +.icon-tool-effect:before { + content:"\f1f8"; +} + + +.icon-tool-end-order-backward:before { + content:"\f1f9"; +} + + +.icon-tool-end-order-forward:before { + content:"\f1fa"; +} + + +.icon-tool-end-order-hide:before { + content:"\f1fb"; +} + + +.icon-tool-entry-activity:before { + content:"\f1fc"; +} + + +.icon-tool-enumeration-literal:before { + content:"\f1fd"; +} + + +.icon-tool-erd-column-key:before { + content:"\f1fe"; +} + + +.icon-tool-erd-column-non-key:before { + content:"\f1ff"; +} + + +.icon-tool-erd-column:before { + content:"\f200"; +} + + +.icon-tool-erd-identifying:before { + content:"\f201"; +} + + +.icon-tool-erd-many-to-many:before { + content:"\f202"; +} + + +.icon-tool-erd-many:before { + content:"\f203"; +} + + +.icon-tool-erd-non-identifying:before { + content:"\f204"; +} + + +.icon-tool-erd-one-to-many:before { + content:"\f205"; +} + + +.icon-tool-erd-one-to-one:before { + content:"\f206"; +} + + +.icon-tool-erd-one:before { + content:"\f207"; +} + + +.icon-tool-erd-zero-many:before { + content:"\f208"; +} + + +.icon-tool-erd-zero-one:before { + content:"\f209"; +} + + +.icon-tool-event:before { + content:"\f20a"; +} + + +.icon-tool-exit-activity:before { + content:"\f20b"; +} + + +.icon-tool-extended-usecase:before { + content:"\f20c"; +} + + +.icon-tool-extension-point:before { + content:"\f20d"; +} + + +.icon-tool-fc-incoming-decision:before { + content:"\f20e"; +} + + +.icon-tool-fc-incoming-process:before { + content:"\f20f"; +} + + +.icon-tool-fc-outgoing-decision:before { + content:"\f210"; +} + + +.icon-tool-fc-outgoing-process:before { + content:"\f211"; +} + + +.icon-tool-fill-color:before { + content:"\f212"; +} + + +.icon-tool-final-node:before { + content:"\f213"; +} + + +.icon-tool-final-state:before { + content:"\f214"; +} + + +.icon-tool-flow-property:before { + content:"\f215"; +} + + +.icon-tool-font-color:before { + content:"\f216"; +} + + +.icon-tool-fork:before { + content:"\f217"; +} + + +.icon-tool-forward-message:before { + content:"\f218"; +} + + +.icon-tool-found-message:before { + content:"\f219"; +} + + +.icon-tool-gcp-icon-zone-account:before { + content:"\f21a"; +} + + +.icon-tool-gcp-icon-zone-external-data-sources:before { + content:"\f21b"; +} + + +.icon-tool-gcp-icon-zone-external-firstparty-infrastructure:before { + content:"\f21c"; +} + + +.icon-tool-gcp-icon-zone-external-saas-providers:before { + content:"\f21d"; +} + + +.icon-tool-gcp-icon-zone-external-thirdparty-infrastructure:before { + content:"\f21e"; +} + + +.icon-tool-gcp-icon-zone-firewall:before { + content:"\f21f"; +} + + +.icon-tool-gcp-icon-zone-infrastructure-system:before { + content:"\f220"; +} + + +.icon-tool-gcp-icon-zone-instance-group:before { + content:"\f221"; +} + + +.icon-tool-gcp-icon-zone-kubernetes-cluster:before { + content:"\f222"; +} + + +.icon-tool-gcp-icon-zone-logical-group:before { + content:"\f223"; +} + + +.icon-tool-gcp-icon-zone-on-premises:before { + content:"\f224"; +} + + +.icon-tool-gcp-icon-zone-optional:before { + content:"\f225"; +} + + +.icon-tool-gcp-icon-zone-pod:before { + content:"\f226"; +} + + +.icon-tool-gcp-icon-zone-project:before { + content:"\f227"; +} + + +.icon-tool-gcp-icon-zone-region:before { + content:"\f228"; +} + + +.icon-tool-gcp-icon-zone-replica-pool:before { + content:"\f229"; +} + + +.icon-tool-gcp-icon-zone-sub-network:before { + content:"\f22a"; +} + + +.icon-tool-gcp-icon-zone-system:before { + content:"\f22b"; +} + + +.icon-tool-gcp-icon-zone-user:before { + content:"\f22c"; +} + + +.icon-tool-gcp-icon-zone-zone:before { + content:"\f22d"; +} + + +.icon-tool-gcp-icon:before { + content:"\f22e"; +} + + +.icon-tool-head-end-style-flat:before { + content:"\f22f"; +} + + +.icon-tool-head-end-style-solid:before { + content:"\f230"; +} + + +.icon-tool-head-end-style-stick:before { + content:"\f231"; +} + + +.icon-tool-included-usecase:before { + content:"\f232"; +} + + +.icon-tool-incoming-control-flow:before { + content:"\f233"; +} + + +.icon-tool-incoming-external-entity:before { + content:"\f234"; +} + + +.icon-tool-incoming-object-flow:before { + content:"\f235"; +} + + +.icon-tool-incoming-process:before { + content:"\f236"; +} + + +.icon-tool-incoming-transition:before { + content:"\f237"; +} + + +.icon-tool-initial-node:before { + content:"\f238"; +} + + +.icon-tool-initial-state:before { + content:"\f239"; +} + + +.icon-tool-input-pin:before { + content:"\f23a"; +} + + +.icon-tool-interface:before { + content:"\f23b"; +} + + +.icon-tool-internal-transition:before { + content:"\f23c"; +} + + +.icon-tool-join:before { + content:"\f23d"; +} + + +.icon-tool-line-color:before { + content:"\f23e"; +} + + +.icon-tool-linemode-dashed:before { + content:"\f23f"; +} + + +.icon-tool-linemode-dotted:before { + content:"\f240"; +} + + +.icon-tool-linemode-solid:before { + content:"\f241"; +} + + +.icon-tool-linked-object:before { + content:"\f242"; +} + + +.icon-tool-lock:before { + content:"\f243"; +} + + +.icon-tool-lost-message:before { + content:"\f244"; +} + + +.icon-tool-merge:before { + content:"\f245"; +} + + +.icon-tool-message-from-gate:before { + content:"\f246"; +} + + +.icon-tool-message-lifeline:before { + content:"\f247"; +} + + +.icon-tool-message-to-gate:before { + content:"\f248"; +} + + +.icon-tool-MMAddNodeLeft:before { + content:"\f249"; +} + + +.icon-tool-MMAddNodeRight:before { + content:"\f24a"; +} + + +.icon-tool-movedown:before { + content:"\f24b"; +} + + +.icon-tool-moveup:before { + content:"\f24c"; +} + + +.icon-tool-navigable:before { + content:"\f24d"; +} + + +.icon-tool-not-navigable:before { + content:"\f24e"; +} + + +.icon-tool-note:before { + content:"\f24f"; +} + + +.icon-tool-oblique:before { + content:"\f250"; +} + + +.icon-tool-operand:before { + content:"\f251"; +} + + +.icon-tool-operation:before { + content:"\f252"; +} + + +.icon-tool-outgoing-control-flow:before { + content:"\f253"; +} + + +.icon-tool-outgoing-datastore:before { + content:"\f254"; +} + + +.icon-tool-outgoing-object-flow:before { + content:"\f255"; +} + + +.icon-tool-outgoing-process:before { + content:"\f256"; +} + + +.icon-tool-outgoing-transition:before { + content:"\f257"; +} + + +.icon-tool-output-pin:before { + content:"\f258"; +} + + +.icon-tool-package:before { + content:"\f259"; +} + + +.icon-tool-parameter-property:before { + content:"\f25a"; +} + + +.icon-tool-part-property:before { + content:"\f25b"; +} + + +.icon-tool-part:before { + content:"\f25c"; +} + + +.icon-tool-port:before { + content:"\f25d"; +} + + +.icon-tool-private:before { + content:"\f25e"; +} + + +.icon-tool-property:before { + content:"\f25f"; +} + + +.icon-tool-protected:before { + content:"\f260"; +} + + +.icon-tool-public:before { + content:"\f261"; +} + + +.icon-tool-realizing-class:before { + content:"\f262"; +} + + +.icon-tool-reception:before { + content:"\f263"; +} + + +.icon-tool-rectilinear:before { + content:"\f264"; +} + + +.icon-tool-reference-property:before { + content:"\f265"; +} + + +.icon-tool-region:before { + content:"\f266"; +} + + +.icon-tool-reply-message:before { + content:"\f267"; +} + + +.icon-tool-reply:before { + content:"\f268"; +} + + +.icon-tool-required-interface:before { + content:"\f269"; +} + + +.icon-tool-reverse-message:before { + content:"\f26a"; +} + + +.icon-tool-rounded-rectilinear:before { + content:"\f26b"; +} + + +.icon-tool-search:before { + content:"\f26c"; +} + + +.icon-tool-select-block:before { + content:"\f26d"; +} + + +.icon-tool-select-constraint-block:before { + content:"\f26e"; +} + + +.icon-tool-select-item-flow:before { + content:"\f26f"; +} + + +.icon-tool-select-operation:before { + content:"\f270"; +} + + +.icon-tool-select-owner-attribute:before { + content:"\f271"; +} + + +.icon-tool-select-signal:before { + content:"\f272"; +} + + +.icon-tool-select-type:before { + content:"\f273"; +} + + +.icon-tool-select-value-type:before { + content:"\f274"; +} + + +.icon-tool-select:before { + content:"\f275"; +} + + +.icon-tool-self-connector:before { + content:"\f276"; +} + + +.icon-tool-self-message:before { + content:"\f277"; +} + + +.icon-tool-send-to-back:before { + content:"\f278"; +} + + +.icon-tool-set-height-equal:before { + content:"\f279"; +} + + +.icon-tool-set-size-equal:before { + content:"\f27a"; +} + + +.icon-tool-set-width-equal:before { + content:"\f27b"; +} + + +.icon-tool-shared:before { + content:"\f27c"; +} + + +.icon-tool-show-namespace:before { + content:"\f27d"; +} + + +.icon-tool-show-property:before { + content:"\f27e"; +} + + +.icon-tool-show-shadow:before { + content:"\f27f"; +} + + +.icon-tool-show-type:before { + content:"\f280"; +} + + +.icon-tool-show-visibility:before { + content:"\f281"; +} + + +.icon-tool-slot:before { + content:"\f282"; +} + + +.icon-tool-stereotype:before { + content:"\f283"; +} + + +.icon-tool-subactor:before { + content:"\f284"; +} + + +.icon-tool-subclass:before { + content:"\f285"; +} + + +.icon-tool-subinterface:before { + content:"\f286"; +} + + +.icon-tool-subpackage:before { + content:"\f287"; +} + + +.icon-tool-substereotype:before { + content:"\f288"; +} + + +.icon-tool-superactor:before { + content:"\f289"; +} + + +.icon-tool-superclass:before { + content:"\f28a"; +} + + +.icon-tool-superinterface:before { + content:"\f28b"; +} + + +.icon-tool-superstereotype:before { + content:"\f28c"; +} + + +.icon-tool-suppress-attributes:before { + content:"\f28d"; +} + + +.icon-tool-suppress-columns:before { + content:"\f28e"; +} + + +.icon-tool-suppress-literals:before { + content:"\f28f"; +} + + +.icon-tool-suppress-operations:before { + content:"\f290"; +} + + +.icon-tool-suppress-receptions:before { + content:"\f291"; +} + + +.icon-tool-synch-call:before { + content:"\f292"; +} + + +.icon-tool-tail-end-style-flat:before { + content:"\f293"; +} + + +.icon-tool-tail-end-style-solid:before { + content:"\f294"; +} + + +.icon-tool-tail-end-style-stick:before { + content:"\f295"; +} + + +.icon-tool-template-parameter-substitution:before { + content:"\f296"; +} + + +.icon-tool-template-parameter:before { + content:"\f297"; +} + + +.icon-tool-text-align-bottom:before { + content:"\f298"; +} + + +.icon-tool-text-align-center:before { + content:"\f299"; +} + + +.icon-tool-text-align-left:before { + content:"\f29a"; +} + + +.icon-tool-text-align-middle:before { + content:"\f29b"; +} + + +.icon-tool-text-align-right:before { + content:"\f29c"; +} + + +.icon-tool-text-align-top:before { + content:"\f29d"; +} + + +.icon-tool-time-segment:before { + content:"\f29e"; +} + + +.icon-tool-unspecified:before { + content:"\f29f"; +} + + +.icon-tool-validation-error:before { + content:"\f2a0"; +} + + +.icon-tool-validation-ok:before { + content:"\f2a1"; +} + + +.icon-tool-value-property:before { + content:"\f2a2"; +} + + +.icon-tool-WFAddTab:before { + content:"\f2a3"; +} + + +.icon-tool-wordwrap:before { + content:"\f2a4"; +} + + +.icon-UMLAcceptSignal:before { + content:"\f2a5"; +} + + +.icon-UMLAcceptTimeEvent:before { + content:"\f2a6"; +} + + +.icon-UMLAction:before { + content:"\f2a7"; +} + + +.icon-UMLActivity:before { + content:"\f2a8"; +} + + +.icon-UMLActivityDiagram:before { + content:"\f2a9"; +} + + +.icon-UMLActivityEdgeConnector:before { + content:"\f2aa"; +} + + +.icon-UMLActivityFinalNode:before { + content:"\f2ab"; +} + + +.icon-UMLActivityInterrupt:before { + content:"\f2ac"; +} + + +.icon-UMLActivityParameterNode:before { + content:"\f2ad"; +} + + +.icon-UMLActor:before { + content:"\f2ae"; +} + + +.icon-UMLAggregation:before { + content:"\f2af"; +} + + +.icon-UMLArtifact:before { + content:"\f2b0"; +} + + +.icon-UMLArtifactInstance:before { + content:"\f2b1"; +} + + +.icon-UMLAssociation:before { + content:"\f2b2"; +} + + +.icon-UMLAssociationClassLink:before { + content:"\f2b3"; +} + + +.icon-UMLAssociationEnd:before { + content:"\f2b4"; +} + + +.icon-UMLAsyncMessage:before { + content:"\f2b5"; +} + + +.icon-UMLAsyncSignalMessage:before { + content:"\f2b6"; +} + + +.icon-UMLAttribute:before { + content:"\f2b7"; +} + + +.icon-UMLBoundary:before { + content:"\f2b8"; +} + + +.icon-UMLCentralBufferNode:before { + content:"\f2b9"; +} + + +.icon-UMLChoice:before { + content:"\f2ba"; +} + + +.icon-UMLClass:before { + content:"\f2bb"; +} + + +.icon-UMLClassDiagram:before { + content:"\f2bc"; +} + + +.icon-UMLCollaboration:before { + content:"\f2bd"; +} + + +.icon-UMLCollaborationUse:before { + content:"\f2be"; +} + + +.icon-UMLCombinedFragment:before { + content:"\f2bf"; +} + + +.icon-UMLCommunicationDiagram:before { + content:"\f2c0"; +} + + +.icon-UMLCommunicationPath:before { + content:"\f2c1"; +} + + +.icon-UMLComponent:before { + content:"\f2c2"; +} + + +.icon-UMLComponentDiagram:before { + content:"\f2c3"; +} + + +.icon-UMLComponentInstance:before { + content:"\f2c4"; +} + + +.icon-UMLComponentRealization:before { + content:"\f2c5"; +} + + +.icon-UMLCompositeState:before { + content:"\f2c6"; +} + + +.icon-UMLCompositeStructureDiagram:before { + content:"\f2c7"; +} + + +.icon-UMLComposition:before { + content:"\f2c8"; +} + + +.icon-UMLConnectionPointReference:before { + content:"\f2c9"; +} + + +.icon-UMLConnector:before { + content:"\f2ca"; +} + + +.icon-UMLConnectorEnd:before { + content:"\f2cb"; +} + + +.icon-UMLConstraint:before { + content:"\f2cc"; +} + + +.icon-UMLContainment:before { + content:"\f2cd"; +} + + +.icon-UMLContinuation:before { + content:"\f2ce"; +} + + +.icon-UMLControl:before { + content:"\f2cf"; +} + + +.icon-UMLControlFlow:before { + content:"\f2d0"; +} + + +.icon-UMLCreateMessage:before { + content:"\f2d1"; +} + + +.icon-UMLDataStoreNode:before { + content:"\f2d2"; +} + + +.icon-UMLDataType:before { + content:"\f2d3"; +} + + +.icon-UMLDecisionNode:before { + content:"\f2d4"; +} + + +.icon-UMLDeepHistory:before { + content:"\f2d5"; +} + + +.icon-UMLDeleteMessage:before { + content:"\f2d6"; +} + + +.icon-UMLDependency:before { + content:"\f2d7"; +} + + +.icon-UMLDeployment:before { + content:"\f2d8"; +} + + +.icon-UMLDeploymentDiagram:before { + content:"\f2d9"; +} + + +.icon-UMLDirectedAssociation:before { + content:"\f2da"; +} + + +.icon-UMLDirectedLink:before { + content:"\f2db"; +} + + +.icon-UMLDoActivity:before { + content:"\f2dc"; +} + + +.icon-UMLDurationConstraint:before { + content:"\f2dd"; +} + + +.icon-UMLEffect:before { + content:"\f2de"; +} + + +.icon-UMLEndpoint:before { + content:"\f2df"; +} + + +.icon-UMLEntity:before { + content:"\f2e0"; +} + + +.icon-UMLEntryActivity:before { + content:"\f2e1"; +} + + +.icon-UMLEntryPoint:before { + content:"\f2e2"; +} + + +.icon-UMLEnumeration:before { + content:"\f2e3"; +} + + +.icon-UMLEnumerationLiteral:before { + content:"\f2e4"; +} + + +.icon-UMLEvent:before { + content:"\f2e5"; +} + + +.icon-UMLExceptionHandler:before { + content:"\f2e6"; +} + + +.icon-UMLExitActivity:before { + content:"\f2e7"; +} + + +.icon-UMLExitPoint:before { + content:"\f2e8"; +} + + +.icon-UMLExpansionNode:before { + content:"\f2e9"; +} + + +.icon-UMLExpansionRegion:before { + content:"\f2ea"; +} + + +.icon-UMLExtend:before { + content:"\f2eb"; +} + + +.icon-UMLExtension:before { + content:"\f2ec"; +} + + +.icon-UMLExtensionPoint:before { + content:"\f2ed"; +} + + +.icon-UMLFinalState:before { + content:"\f2ee"; +} + + +.icon-UMLFlowFinalNode:before { + content:"\f2ef"; +} + + +.icon-UMLFork:before { + content:"\f2f0"; +} + + +.icon-UMLForkNode:before { + content:"\f2f1"; +} + + +.icon-UMLForwardMessage:before { + content:"\f2f2"; +} + + +.icon-UMLFoundMessage:before { + content:"\f2f3"; +} + + +.icon-UMLFrame:before { + content:"\f2f4"; +} + + +.icon-UMLGate:before { + content:"\f2f5"; +} + + +.icon-UMLGeneralization:before { + content:"\f2f6"; +} + + +.icon-UMLImage:before { + content:"\f2f7"; +} + + +.icon-UMLInclude:before { + content:"\f2f8"; +} + + +.icon-UMLInformationFlow:before { + content:"\f2f9"; +} + + +.icon-UMLInformationFlowDiagram:before { + content:"\f2fa"; +} + + +.icon-UMLInformationItem:before { + content:"\f2fb"; +} + + +.icon-UMLInitialNode:before { + content:"\f2fc"; +} + + +.icon-UMLInitialState:before { + content:"\f2fd"; +} + + +.icon-UMLInputExpansionNode:before { + content:"\f2fe"; +} + + +.icon-UMLInputPin:before { + content:"\f2ff"; +} + + +.icon-UMLInteraction:before { + content:"\f300"; +} + + +.icon-UMLInteractionOperand:before { + content:"\f301"; +} + + +.icon-UMLInteractionOverviewDiagram:before { + content:"\f302"; +} + + +.icon-UMLInteractionUse:before { + content:"\f303"; +} + + +.icon-UMLInterface:before { + content:"\f304"; +} + + +.icon-UMLInterfaceRealization:before { + content:"\f305"; +} + + +.icon-UMLInterruptibleActivityRegion:before { + content:"\f306"; +} + + +.icon-UMLJoin:before { + content:"\f307"; +} + + +.icon-UMLJoinNode:before { + content:"\f308"; +} + + +.icon-UMLJunction:before { + content:"\f309"; +} + + +.icon-UMLLifeline:before { + content:"\f30a"; +} + + +.icon-UMLLink:before { + content:"\f30b"; +} + + +.icon-UMLLinkEnd:before { + content:"\f30c"; +} + + +.icon-UMLLinkObjectLink:before { + content:"\f30d"; +} + + +.icon-UMLLostMessage:before { + content:"\f30e"; +} + + +.icon-UMLMergeNode:before { + content:"\f30f"; +} + + +.icon-UMLMessage:before { + content:"\f310"; +} + + +.icon-UMLMetaClass:before { + content:"\f311"; +} + + +.icon-UMLModel:before { + content:"\f312"; +} + + +.icon-UMLNaryAssociationNode:before { + content:"\f313"; +} + + +.icon-UMLNode:before { + content:"\f314"; +} + + +.icon-UMLNodeInstance:before { + content:"\f315"; +} + + +.icon-UMLNote:before { + content:"\f316"; +} + + +.icon-UMLNoteLink:before { + content:"\f317"; +} + + +.icon-UMLObject:before { + content:"\f318"; +} + + +.icon-UMLObjectDiagram:before { + content:"\f319"; +} + + +.icon-UMLObjectFlow:before { + content:"\f31a"; +} + + +.icon-UMLObjectNode:before { + content:"\f31b"; +} + + +.icon-UMLOpaqueBehavior:before { + content:"\f31c"; +} + + +.icon-UMLOperation:before { + content:"\f31d"; +} + + +.icon-UMLOrthogonalState:before { + content:"\f31e"; +} + + +.icon-UMLOutputExpansionNode:before { + content:"\f31f"; +} + + +.icon-UMLOutputPin:before { + content:"\f320"; +} + + +.icon-UMLPackage:before { + content:"\f321"; +} + + +.icon-UMLPackageDiagram:before { + content:"\f322"; +} + + +.icon-UMLParameter:before { + content:"\f323"; +} + + +.icon-UMLPart:before { + content:"\f324"; +} + + +.icon-UMLPort:before { + content:"\f325"; +} + + +.icon-UMLPrimitiveType:before { + content:"\f326"; +} + + +.icon-UMLProfile:before { + content:"\f327"; +} + + +.icon-UMLProfileDiagram:before { + content:"\f328"; +} + + +.icon-UMLRealization:before { + content:"\f329"; +} + + +.icon-UMLReception:before { + content:"\f32a"; +} + + +.icon-UMLRegion:before { + content:"\f32b"; +} + + +.icon-UMLReplyMessage:before { + content:"\f32c"; +} + + +.icon-UMLReverseMessage:before { + content:"\f32d"; +} + + +.icon-UMLRoleBinding:before { + content:"\f32e"; +} + + +.icon-UMLSelfConnector:before { + content:"\f32f"; +} + + +.icon-UMLSelfLink:before { + content:"\f330"; +} + + +.icon-UMLSelfMessage:before { + content:"\f331"; +} + + +.icon-UMLSelfTransition:before { + content:"\f332"; +} + + +.icon-UMLSendSignal:before { + content:"\f333"; +} + + +.icon-UMLSequenceDiagram:before { + content:"\f334"; +} + + +.icon-UMLShallowHistory:before { + content:"\f335"; +} + + +.icon-UMLSignal:before { + content:"\f336"; +} + + +.icon-UMLSlot:before { + content:"\f337"; +} + + +.icon-UMLStandardProfile-boundary:before { + content:"\f338"; +} + + +.icon-UMLStandardProfile-control:before { + content:"\f339"; +} + + +.icon-UMLStandardProfile-entity:before { + content:"\f33a"; +} + + +.icon-UMLState:before { + content:"\f33b"; +} + + +.icon-UMLStatechartDiagram:before { + content:"\f33c"; +} + + +.icon-UMLStateCondition:before { + content:"\f33d"; +} + + +.icon-UMLStateInvariant:before { + content:"\f33e"; +} + + +.icon-UMLStateMachine:before { + content:"\f33f"; +} + + +.icon-UMLStereotype:before { + content:"\f340"; +} + + +.icon-UMLStructuredActivityNode:before { + content:"\f341"; +} + + +.icon-UMLSubmachineState:before { + content:"\f342"; +} + + +.icon-UMLSubsystem:before { + content:"\f343"; +} + + +.icon-UMLSwimlaneHorz:before { + content:"\f344"; +} + + +.icon-UMLSwimlaneVert:before { + content:"\f345"; +} + + +.icon-UMLTemplateBinding:before { + content:"\f346"; +} + + +.icon-UMLTemplateParameter:before { + content:"\f347"; +} + + +.icon-UMLTemplateParameterSubstitution:before { + content:"\f348"; +} + + +.icon-UMLTerminate:before { + content:"\f349"; +} + + +.icon-UMLText:before { + content:"\f34a"; +} + + +.icon-UMLTextBox:before { + content:"\f34b"; +} + + +.icon-UMLTimeConstraint:before { + content:"\f34c"; +} + + +.icon-UMLTimeSegment:before { + content:"\f34d"; +} + + +.icon-UMLTimeTick:before { + content:"\f34e"; +} + + +.icon-UMLTimingDiagram:before { + content:"\f34f"; +} + + +.icon-UMLTimingLifeline:before { + content:"\f350"; +} + + +.icon-UMLTransition:before { + content:"\f351"; +} + + +.icon-UMLUseCase:before { + content:"\f352"; +} + + +.icon-UMLUseCaseDiagram:before { + content:"\f353"; +} + + +.icon-UMLUseCaseSubject:before { + content:"\f354"; +} + + +.icon-WFAvatar:before { + content:"\f355"; +} + + +.icon-WFButton:before { + content:"\f356"; +} + + +.icon-WFCheckbox:before { + content:"\f357"; +} + + +.icon-WFDesktopFrame:before { + content:"\f358"; +} + + +.icon-WFDropdown:before { + content:"\f359"; +} + + +.icon-WFFrame:before { + content:"\f35a"; +} + + +.icon-WFImage:before { + content:"\f35b"; +} + + +.icon-WFInput:before { + content:"\f35c"; +} + + +.icon-WFLink:before { + content:"\f35d"; +} + + +.icon-WFMobileFrame:before { + content:"\f35e"; +} + + +.icon-WFPanel:before { + content:"\f35f"; +} + + +.icon-WFRadio:before { + content:"\f360"; +} + + +.icon-WFSeparator:before { + content:"\f361"; +} + + +.icon-WFSlider:before { + content:"\f362"; +} + + +.icon-WFSwitch:before { + content:"\f363"; +} + + +.icon-WFTab:before { + content:"\f364"; +} + + +.icon-WFTabList:before { + content:"\f365"; +} + + +.icon-WFText:before { + content:"\f366"; +} + + +.icon-WFWebFrame:before { + content:"\f367"; +} + + +.icon-WFWireframe:before { + content:"\f368"; +} + + +.icon-WFWireframeDiagram:before { + content:"\f369"; +} diff --git a/docs/UML/html/index.html/assets/icon-font/icons.eot b/docs/UML/html/index.html/assets/icon-font/icons.eot new file mode 100755 index 0000000..a0b84d1 Binary files /dev/null and b/docs/UML/html/index.html/assets/icon-font/icons.eot differ diff --git a/docs/UML/html/index.html/assets/icon-font/icons.html b/docs/UML/html/index.html/assets/icon-font/icons.html new file mode 100755 index 0000000..e095e29 --- /dev/null +++ b/docs/UML/html/index.html/assets/icon-font/icons.html @@ -0,0 +1,4438 @@ + + + + + icons + + + +

icons

+ +
+ +
icon-AWSArrow
+ +
icon-AWSAvailabilityZone
+ +
icon-AWSCallout
+ +
icon-AWSDiagram
+ +
icon-AWSGeneralResource
+ +
icon-AWSGenericGroup
+ +
icon-AWSGroup
+ +
icon-AWSModel
+ +
icon-AWSResource
+ +
icon-AWSSecurityGroup
+ +
icon-AWSService
+ +
icon-AzureCallout
+ +
icon-AzureConnector
+ +
icon-AzureDiagram
+ +
icon-AzureGroup
+ +
icon-AzureModel
+ +
icon-AzureService
+ +
icon-BPMNAdHocSubProcess
+ +
icon-BPMNAssociation
+ +
icon-BPMNBoundaryEvent
+ +
icon-BPMNBusinessRuleTask
+ +
icon-BPMNCallActivity
+ +
icon-BPMNCallConversation
+ +
icon-BPMNCancelEventDefinition
+ +
icon-BPMNChoreography
+ +
icon-BPMNChoreographyTask
+ +
icon-BPMNCollaboration
+ +
icon-BPMNCompensateEventDefinition
+ +
icon-BPMNComplexGateway
+ +
icon-BPMNConditionalEventDefinition
+ +
icon-BPMNConversation
+ +
icon-BPMNConversationLink
+ +
icon-BPMNDataAssociation
+ +
icon-BPMNDataInput
+ +
icon-BPMNDataObject
+ +
icon-BPMNDataOutput
+ +
icon-BPMNDataStore
+ +
icon-BPMNDiagram
+ +
icon-BPMNEndEvent
+ +
icon-BPMNErrorEventDefinition
+ +
icon-BPMNEscalationEventDefinition
+ +
icon-BPMNEvent
+ +
icon-BPMNEventBasedGateway
+ +
icon-BPMNExclusiveGateway
+ +
icon-BPMNGateway
+ +
icon-BPMNGlobalConversation
+ +
icon-BPMNGroup
+ +
icon-BPMNInclusiveGateway
+ +
icon-BPMNIntermediateCatchEvent
+ +
icon-BPMNIntermediateEvent
+ +
icon-BPMNIntermediateThrowEvent
+ +
icon-BPMNLane
+ +
icon-BPMNLaneVert
+ +
icon-BPMNLinkEventDefinition
+ +
icon-BPMNManualTask
+ +
icon-BPMNMessage
+ +
icon-BPMNMessageEventDefinition
+ +
icon-BPMNMessageFlow
+ +
icon-BPMNMessageLink
+ +
icon-BPMNParallelGateway
+ +
icon-BPMNParticipant
+ +
icon-BPMNParticipantVert
+ +
icon-BPMNProcess
+ +
icon-BPMNReceiveTask
+ +
icon-BPMNScriptTask
+ +
icon-BPMNSendTask
+ +
icon-BPMNSequenceFlow
+ +
icon-BPMNServiceTask
+ +
icon-BPMNSignalEventDefinition
+ +
icon-BPMNStartEvent
+ +
icon-BPMNSubChoreography
+ +
icon-BPMNSubConversation
+ +
icon-BPMNSubProcess
+ +
icon-BPMNTask
+ +
icon-BPMNTerminateEventDefinition
+ +
icon-BPMNTextAnnotation
+ +
icon-BPMNTimerEventDefinition
+ +
icon-BPMNTransaction
+ +
icon-BPMNUserTask
+ +
icon-C4Component
+ +
icon-C4Container
+ +
icon-C4Diagram
+ +
icon-C4Element
+ +
icon-C4Model
+ +
icon-C4Person
+ +
icon-C4Relationship
+ +
icon-C4SoftwareSystem
+ +
icon-DFDDataFlow
+ +
icon-DFDDataFlowModel
+ +
icon-DFDDataStore
+ +
icon-DFDDiagram
+ +
icon-DFDExternalEntity
+ +
icon-DFDProcess
+ +
icon-Ellipse
+ +
icon-ERDColumn
+ +
icon-ERDDataModel
+ +
icon-ERDDiagram
+ +
icon-ERDEntity
+ +
icon-ERDManyToMany
+ +
icon-ERDOneToMany
+ +
icon-ERDOneToOne
+ +
icon-ERDRelationship
+ +
icon-ERDRelationshipEnd
+ +
icon-FCAlternateProcess
+ +
icon-FCCard
+ +
icon-FCCollate
+ +
icon-FCConnector
+ +
icon-FCData
+ +
icon-FCDatabase
+ +
icon-FCDecision
+ +
icon-FCDelay
+ +
icon-FCDirectAccessStorage
+ +
icon-FCDisplay
+ +
icon-FCDocument
+ +
icon-FCExtract
+ +
icon-FCFlow
+ +
icon-FCFlowchart
+ +
icon-FCFlowchartDiagram
+ +
icon-FCInternalStorage
+ +
icon-FCManualInput
+ +
icon-FCManualOperation
+ +
icon-FCMerge
+ +
icon-FCMultiDocument
+ +
icon-FCOffPageConnector
+ +
icon-FCOr
+ +
icon-FCPredefinedProcess
+ +
icon-FCPreparation
+ +
icon-FCProcess
+ +
icon-FCPunchedTape
+ +
icon-FCSort
+ +
icon-FCStoredData
+ +
icon-FCSummingJunction
+ +
icon-FCTerminator
+ +
icon-FreeLine
+ +
icon-GCPDiagram
+ +
icon-GCPModel
+ +
icon-GCPPath
+ +
icon-GCPProduct
+ +
icon-GCPService
+ +
icon-GCPUser
+ +
icon-GCPZone
+ +
icon-Hyperlink
+ +
icon-Image
+ +
icon-MMEdge
+ +
icon-MMMindmap
+ +
icon-MMMindmapDiagram
+ +
icon-MMNode
+ +
icon-Project
+ +
icon-Rectangle
+ +
icon-RoundedRectangle
+ +
icon-SysMLBlock
+ +
icon-SysMLBlockDefinitionDiagram
+ +
icon-SysMLConnector
+ +
icon-SysMLConstraintBlock
+ +
icon-SysMLConstraintParameter
+ +
icon-SysMLConstraintProperty
+ +
icon-SysMLFlowProperty
+ +
icon-SysMLInterfaceBlock
+ +
icon-SysMLInternalBlockDiagram
+ +
icon-SysMLItemFlow
+ +
icon-SysMLParametricDiagram
+ +
icon-SysMLPart
+ +
icon-SysMLPort
+ +
icon-SysMLProperty
+ +
icon-SysMLReference
+ +
icon-SysMLRequirement
+ +
icon-SysMLRequirementDiagram
+ +
icon-SysMLValue
+ +
icon-SysMLValueType
+ +
icon-Tag
+ +
icon-tool-add-sub-requirement
+ +
icon-tool-add
+ +
icon-tool-aggregation
+ +
icon-tool-align-bottom
+ +
icon-tool-align-center
+ +
icon-tool-align-left
+ +
icon-tool-align-middle
+ +
icon-tool-align-right
+ +
icon-tool-align-space-even-horz
+ +
icon-tool-align-space-even-vert
+ +
icon-tool-align-top
+ +
icon-tool-associate
+ +
icon-tool-associated-actor
+ +
icon-tool-associated-usecase
+ +
icon-tool-association
+ +
icon-tool-asynch-call
+ +
icon-tool-asynch-signal
+ +
icon-tool-attribute
+ +
icon-tool-auto-resize
+ +
icon-tool-aws-icon
+ +
icon-tool-azure-dashed
+ +
icon-tool-azure-icon
+ +
icon-tool-azure-rect
+ +
icon-tool-azure-rounded
+ +
icon-tool-azure-solid
+ +
icon-tool-bpmn-add-annotation
+ +
icon-tool-bpmn-choreography-add-initiating-message
+ +
icon-tool-bpmn-choreography-add-participant-lower
+ +
icon-tool-bpmn-choreography-add-participant-upper
+ +
icon-tool-bpmn-choreography-add-return-message
+ +
icon-tool-bpmn-choreography-create-participant-lower
+ +
icon-tool-bpmn-choreography-create-participant-upper
+ +
icon-tool-bpmn-choreography-initiating-participant
+ +
icon-tool-BPMNBoundaryEvent
+ +
icon-tool-BPMNCancelEventDefinition
+ +
icon-tool-BPMNCompensateEventDefinition
+ +
icon-tool-BPMNConditionalEventDefinition
+ +
icon-tool-BPMNErrorEventDefinition
+ +
icon-tool-BPMNEscalationEventDefinition
+ +
icon-tool-BPMNLane
+ +
icon-tool-BPMNLinkEventDefinition
+ +
icon-tool-BPMNMessageEventDefinition
+ +
icon-tool-BPMNSignalEventDefinition
+ +
icon-tool-BPMNTerminateEventDefinition
+ +
icon-tool-BPMNTimerEventDefinition
+ +
icon-tool-bring-to-front
+ +
icon-tool-choice
+ +
icon-tool-communicating-node
+ +
icon-tool-composite
+ +
icon-tool-composition
+ +
icon-tool-connected-lifeline
+ +
icon-tool-connected-part
+ +
icon-tool-connection-point-reference
+ +
icon-tool-constraint-parameter
+ +
icon-tool-constraint-property
+ +
icon-tool-constraint
+ +
icon-tool-create-block
+ +
icon-tool-create-constraint-block
+ +
icon-tool-create-item-flow
+ +
icon-tool-create-message-lifeline
+ +
icon-tool-create-message
+ +
icon-tool-create-operation
+ +
icon-tool-create-signal
+ +
icon-tool-create-state-condition
+ +
icon-tool-create-type
+ +
icon-tool-create-value-type
+ +
icon-tool-curve
+ +
icon-tool-decision
+ +
icon-tool-delete-item-flow
+ +
icon-tool-delete-message
+ +
icon-tool-delete
+ +
icon-tool-dependant-package
+ +
icon-tool-depending-package
+ +
icon-tool-deployed-artifact
+ +
icon-tool-deployed-component
+ +
icon-tool-do-activity
+ +
icon-tool-edit
+ +
icon-tool-effect
+ +
icon-tool-end-order-backward
+ +
icon-tool-end-order-forward
+ +
icon-tool-end-order-hide
+ +
icon-tool-entry-activity
+ +
icon-tool-enumeration-literal
+ +
icon-tool-erd-column-key
+ +
icon-tool-erd-column-non-key
+ +
icon-tool-erd-column
+ +
icon-tool-erd-identifying
+ +
icon-tool-erd-many-to-many
+ +
icon-tool-erd-many
+ +
icon-tool-erd-non-identifying
+ +
icon-tool-erd-one-to-many
+ +
icon-tool-erd-one-to-one
+ +
icon-tool-erd-one
+ +
icon-tool-erd-zero-many
+ +
icon-tool-erd-zero-one
+ +
icon-tool-event
+ +
icon-tool-exit-activity
+ +
icon-tool-extended-usecase
+ +
icon-tool-extension-point
+ +
icon-tool-fc-incoming-decision
+ +
icon-tool-fc-incoming-process
+ +
icon-tool-fc-outgoing-decision
+ +
icon-tool-fc-outgoing-process
+ +
icon-tool-fill-color
+ +
icon-tool-final-node
+ +
icon-tool-final-state
+ +
icon-tool-flow-property
+ +
icon-tool-font-color
+ +
icon-tool-fork
+ +
icon-tool-forward-message
+ +
icon-tool-found-message
+ +
icon-tool-gcp-icon-zone-account
+ +
icon-tool-gcp-icon-zone-external-data-sources
+ +
icon-tool-gcp-icon-zone-external-firstparty-infrastructure
+ +
icon-tool-gcp-icon-zone-external-saas-providers
+ +
icon-tool-gcp-icon-zone-external-thirdparty-infrastructure
+ +
icon-tool-gcp-icon-zone-firewall
+ +
icon-tool-gcp-icon-zone-infrastructure-system
+ +
icon-tool-gcp-icon-zone-instance-group
+ +
icon-tool-gcp-icon-zone-kubernetes-cluster
+ +
icon-tool-gcp-icon-zone-logical-group
+ +
icon-tool-gcp-icon-zone-on-premises
+ +
icon-tool-gcp-icon-zone-optional
+ +
icon-tool-gcp-icon-zone-pod
+ +
icon-tool-gcp-icon-zone-project
+ +
icon-tool-gcp-icon-zone-region
+ +
icon-tool-gcp-icon-zone-replica-pool
+ +
icon-tool-gcp-icon-zone-sub-network
+ +
icon-tool-gcp-icon-zone-system
+ +
icon-tool-gcp-icon-zone-user
+ +
icon-tool-gcp-icon-zone-zone
+ +
icon-tool-gcp-icon
+ +
icon-tool-head-end-style-flat
+ +
icon-tool-head-end-style-solid
+ +
icon-tool-head-end-style-stick
+ +
icon-tool-included-usecase
+ +
icon-tool-incoming-control-flow
+ +
icon-tool-incoming-external-entity
+ +
icon-tool-incoming-object-flow
+ +
icon-tool-incoming-process
+ +
icon-tool-incoming-transition
+ +
icon-tool-initial-node
+ +
icon-tool-initial-state
+ +
icon-tool-input-pin
+ +
icon-tool-interface
+ +
icon-tool-internal-transition
+ +
icon-tool-join
+ +
icon-tool-line-color
+ +
icon-tool-linemode-dashed
+ +
icon-tool-linemode-dotted
+ +
icon-tool-linemode-solid
+ +
icon-tool-linked-object
+ +
icon-tool-lock
+ +
icon-tool-lost-message
+ +
icon-tool-merge
+ +
icon-tool-message-from-gate
+ +
icon-tool-message-lifeline
+ +
icon-tool-message-to-gate
+ +
icon-tool-MMAddNodeLeft
+ +
icon-tool-MMAddNodeRight
+ +
icon-tool-movedown
+ +
icon-tool-moveup
+ +
icon-tool-navigable
+ +
icon-tool-not-navigable
+ +
icon-tool-note
+ +
icon-tool-oblique
+ +
icon-tool-operand
+ +
icon-tool-operation
+ +
icon-tool-outgoing-control-flow
+ +
icon-tool-outgoing-datastore
+ +
icon-tool-outgoing-object-flow
+ +
icon-tool-outgoing-process
+ +
icon-tool-outgoing-transition
+ +
icon-tool-output-pin
+ +
icon-tool-package
+ +
icon-tool-parameter-property
+ +
icon-tool-part-property
+ +
icon-tool-part
+ +
icon-tool-port
+ +
icon-tool-private
+ +
icon-tool-property
+ +
icon-tool-protected
+ +
icon-tool-public
+ +
icon-tool-realizing-class
+ +
icon-tool-reception
+ +
icon-tool-rectilinear
+ +
icon-tool-reference-property
+ +
icon-tool-region
+ +
icon-tool-reply-message
+ +
icon-tool-reply
+ +
icon-tool-required-interface
+ +
icon-tool-reverse-message
+ +
icon-tool-rounded-rectilinear
+ +
icon-tool-search
+ +
icon-tool-select-block
+ +
icon-tool-select-constraint-block
+ +
icon-tool-select-item-flow
+ +
icon-tool-select-operation
+ +
icon-tool-select-owner-attribute
+ +
icon-tool-select-signal
+ +
icon-tool-select-type
+ +
icon-tool-select-value-type
+ +
icon-tool-select
+ +
icon-tool-self-connector
+ +
icon-tool-self-message
+ +
icon-tool-send-to-back
+ +
icon-tool-set-height-equal
+ +
icon-tool-set-size-equal
+ +
icon-tool-set-width-equal
+ +
icon-tool-shared
+ +
icon-tool-show-namespace
+ +
icon-tool-show-property
+ +
icon-tool-show-shadow
+ +
icon-tool-show-type
+ +
icon-tool-show-visibility
+ +
icon-tool-slot
+ +
icon-tool-stereotype
+ +
icon-tool-subactor
+ +
icon-tool-subclass
+ +
icon-tool-subinterface
+ +
icon-tool-subpackage
+ +
icon-tool-substereotype
+ +
icon-tool-superactor
+ +
icon-tool-superclass
+ +
icon-tool-superinterface
+ +
icon-tool-superstereotype
+ +
icon-tool-suppress-attributes
+ +
icon-tool-suppress-columns
+ +
icon-tool-suppress-literals
+ +
icon-tool-suppress-operations
+ +
icon-tool-suppress-receptions
+ +
icon-tool-synch-call
+ +
icon-tool-tail-end-style-flat
+ +
icon-tool-tail-end-style-solid
+ +
icon-tool-tail-end-style-stick
+ +
icon-tool-template-parameter-substitution
+ +
icon-tool-template-parameter
+ +
icon-tool-text-align-bottom
+ +
icon-tool-text-align-center
+ +
icon-tool-text-align-left
+ +
icon-tool-text-align-middle
+ +
icon-tool-text-align-right
+ +
icon-tool-text-align-top
+ +
icon-tool-time-segment
+ +
icon-tool-unspecified
+ +
icon-tool-validation-error
+ +
icon-tool-validation-ok
+ +
icon-tool-value-property
+ +
icon-tool-WFAddTab
+ +
icon-tool-wordwrap
+ +
icon-UMLAcceptSignal
+ +
icon-UMLAcceptTimeEvent
+ +
icon-UMLAction
+ +
icon-UMLActivity
+ +
icon-UMLActivityDiagram
+ +
icon-UMLActivityEdgeConnector
+ +
icon-UMLActivityFinalNode
+ +
icon-UMLActivityInterrupt
+ +
icon-UMLActivityParameterNode
+ +
icon-UMLActor
+ +
icon-UMLAggregation
+ +
icon-UMLArtifact
+ +
icon-UMLArtifactInstance
+ +
icon-UMLAssociation
+ +
icon-UMLAssociationClassLink
+ +
icon-UMLAssociationEnd
+ +
icon-UMLAsyncMessage
+ +
icon-UMLAsyncSignalMessage
+ +
icon-UMLAttribute
+ +
icon-UMLBoundary
+ +
icon-UMLCentralBufferNode
+ +
icon-UMLChoice
+ +
icon-UMLClass
+ +
icon-UMLClassDiagram
+ +
icon-UMLCollaboration
+ +
icon-UMLCollaborationUse
+ +
icon-UMLCombinedFragment
+ +
icon-UMLCommunicationDiagram
+ +
icon-UMLCommunicationPath
+ +
icon-UMLComponent
+ +
icon-UMLComponentDiagram
+ +
icon-UMLComponentInstance
+ +
icon-UMLComponentRealization
+ +
icon-UMLCompositeState
+ +
icon-UMLCompositeStructureDiagram
+ +
icon-UMLComposition
+ +
icon-UMLConnectionPointReference
+ +
icon-UMLConnector
+ +
icon-UMLConnectorEnd
+ +
icon-UMLConstraint
+ +
icon-UMLContainment
+ +
icon-UMLContinuation
+ +
icon-UMLControl
+ +
icon-UMLControlFlow
+ +
icon-UMLCreateMessage
+ +
icon-UMLDataStoreNode
+ +
icon-UMLDataType
+ +
icon-UMLDecisionNode
+ +
icon-UMLDeepHistory
+ +
icon-UMLDeleteMessage
+ +
icon-UMLDependency
+ +
icon-UMLDeployment
+ +
icon-UMLDeploymentDiagram
+ +
icon-UMLDirectedAssociation
+ +
icon-UMLDirectedLink
+ +
icon-UMLDoActivity
+ +
icon-UMLDurationConstraint
+ +
icon-UMLEffect
+ +
icon-UMLEndpoint
+ +
icon-UMLEntity
+ +
icon-UMLEntryActivity
+ +
icon-UMLEntryPoint
+ +
icon-UMLEnumeration
+ +
icon-UMLEnumerationLiteral
+ +
icon-UMLEvent
+ +
icon-UMLExceptionHandler
+ +
icon-UMLExitActivity
+ +
icon-UMLExitPoint
+ +
icon-UMLExpansionNode
+ +
icon-UMLExpansionRegion
+ +
icon-UMLExtend
+ +
icon-UMLExtension
+ +
icon-UMLExtensionPoint
+ +
icon-UMLFinalState
+ +
icon-UMLFlowFinalNode
+ +
icon-UMLFork
+ +
icon-UMLForkNode
+ +
icon-UMLForwardMessage
+ +
icon-UMLFoundMessage
+ +
icon-UMLFrame
+ +
icon-UMLGate
+ +
icon-UMLGeneralization
+ +
icon-UMLImage
+ +
icon-UMLInclude
+ +
icon-UMLInformationFlow
+ +
icon-UMLInformationFlowDiagram
+ +
icon-UMLInformationItem
+ +
icon-UMLInitialNode
+ +
icon-UMLInitialState
+ +
icon-UMLInputExpansionNode
+ +
icon-UMLInputPin
+ +
icon-UMLInteraction
+ +
icon-UMLInteractionOperand
+ +
icon-UMLInteractionOverviewDiagram
+ +
icon-UMLInteractionUse
+ +
icon-UMLInterface
+ +
icon-UMLInterfaceRealization
+ +
icon-UMLInterruptibleActivityRegion
+ +
icon-UMLJoin
+ +
icon-UMLJoinNode
+ +
icon-UMLJunction
+ +
icon-UMLLifeline
+ +
icon-UMLLink
+ +
icon-UMLLinkEnd
+ +
icon-UMLLinkObjectLink
+ +
icon-UMLLostMessage
+ +
icon-UMLMergeNode
+ +
icon-UMLMessage
+ +
icon-UMLMetaClass
+ +
icon-UMLModel
+ +
icon-UMLNaryAssociationNode
+ +
icon-UMLNode
+ +
icon-UMLNodeInstance
+ +
icon-UMLNote
+ +
icon-UMLNoteLink
+ +
icon-UMLObject
+ +
icon-UMLObjectDiagram
+ +
icon-UMLObjectFlow
+ +
icon-UMLObjectNode
+ +
icon-UMLOpaqueBehavior
+ +
icon-UMLOperation
+ +
icon-UMLOrthogonalState
+ +
icon-UMLOutputExpansionNode
+ +
icon-UMLOutputPin
+ +
icon-UMLPackage
+ +
icon-UMLPackageDiagram
+ +
icon-UMLParameter
+ +
icon-UMLPart
+ +
icon-UMLPort
+ +
icon-UMLPrimitiveType
+ +
icon-UMLProfile
+ +
icon-UMLProfileDiagram
+ +
icon-UMLRealization
+ +
icon-UMLReception
+ +
icon-UMLRegion
+ +
icon-UMLReplyMessage
+ +
icon-UMLReverseMessage
+ +
icon-UMLRoleBinding
+ +
icon-UMLSelfConnector
+ +
icon-UMLSelfLink
+ +
icon-UMLSelfMessage
+ +
icon-UMLSelfTransition
+ +
icon-UMLSendSignal
+ +
icon-UMLSequenceDiagram
+ +
icon-UMLShallowHistory
+ +
icon-UMLSignal
+ +
icon-UMLSlot
+ +
icon-UMLStandardProfile-boundary
+ +
icon-UMLStandardProfile-control
+ +
icon-UMLStandardProfile-entity
+ +
icon-UMLState
+ +
icon-UMLStatechartDiagram
+ +
icon-UMLStateCondition
+ +
icon-UMLStateInvariant
+ +
icon-UMLStateMachine
+ +
icon-UMLStereotype
+ +
icon-UMLStructuredActivityNode
+ +
icon-UMLSubmachineState
+ +
icon-UMLSubsystem
+ +
icon-UMLSwimlaneHorz
+ +
icon-UMLSwimlaneVert
+ +
icon-UMLTemplateBinding
+ +
icon-UMLTemplateParameter
+ +
icon-UMLTemplateParameterSubstitution
+ +
icon-UMLTerminate
+ +
icon-UMLText
+ +
icon-UMLTextBox
+ +
icon-UMLTimeConstraint
+ +
icon-UMLTimeSegment
+ +
icon-UMLTimeTick
+ +
icon-UMLTimingDiagram
+ +
icon-UMLTimingLifeline
+ +
icon-UMLTransition
+ +
icon-UMLUseCase
+ +
icon-UMLUseCaseDiagram
+ +
icon-UMLUseCaseSubject
+ +
icon-WFAvatar
+ +
icon-WFButton
+ +
icon-WFCheckbox
+ +
icon-WFDesktopFrame
+ +
icon-WFDropdown
+ +
icon-WFFrame
+ +
icon-WFImage
+ +
icon-WFInput
+ +
icon-WFLink
+ +
icon-WFMobileFrame
+ +
icon-WFPanel
+ +
icon-WFRadio
+ +
icon-WFSeparator
+ +
icon-WFSlider
+ +
icon-WFSwitch
+ +
icon-WFTab
+ +
icon-WFTabList
+ +
icon-WFText
+ +
icon-WFWebFrame
+ +
icon-WFWireframe
+ +
icon-WFWireframeDiagram
+ +
+ + + +

Usage

+
<i class="staruml-icon icon-name"></i>
+ + + + + + + diff --git a/docs/UML/html/index.html/assets/icon-font/icons.ttf b/docs/UML/html/index.html/assets/icon-font/icons.ttf new file mode 100755 index 0000000..00198f0 Binary files /dev/null and b/docs/UML/html/index.html/assets/icon-font/icons.ttf differ diff --git a/docs/UML/html/index.html/assets/icon-font/icons.woff b/docs/UML/html/index.html/assets/icon-font/icons.woff new file mode 100755 index 0000000..f42f5ea Binary files /dev/null and b/docs/UML/html/index.html/assets/icon-font/icons.woff differ diff --git a/docs/UML/html/index.html/assets/img/glyphicons-halflings-white.png b/docs/UML/html/index.html/assets/img/glyphicons-halflings-white.png new file mode 100755 index 0000000..3bf6484 Binary files /dev/null and b/docs/UML/html/index.html/assets/img/glyphicons-halflings-white.png differ diff --git a/docs/UML/html/index.html/assets/img/glyphicons-halflings.png b/docs/UML/html/index.html/assets/img/glyphicons-halflings.png new file mode 100755 index 0000000..a996999 Binary files /dev/null and b/docs/UML/html/index.html/assets/img/glyphicons-halflings.png differ diff --git a/docs/UML/html/index.html/assets/js/bootstrap.js b/docs/UML/html/index.html/assets/js/bootstrap.js new file mode 100755 index 0000000..c298ee4 --- /dev/null +++ b/docs/UML/html/index.html/assets/js/bootstrap.js @@ -0,0 +1,2276 @@ +/* =================================================== + * bootstrap-transition.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + if (this.interval) clearInterval(this.interval); + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , getActiveIndex: function () { + this.$active = this.$element.find('.item.active') + this.$items = this.$active.parent().children() + return this.$items.index(this.$active) + } + + , to: function (pos) { + var activeIndex = this.getActiveIndex() + , that = this + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activeIndex == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + , direction: direction + }) + + if ($next.hasClass('active')) return + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + this.$element.one('slid', function () { + var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) + $nextIndicator && $nextIndicator.addClass('active') + }) + } + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + , slideIndex + + $target.carousel(options) + + if (slideIndex = $this.attr('data-slide-to')) { + $target.data('carousel').pause().to(slideIndex).cycle() + } + + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning || this.$element.hasClass('in')) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning || !this.$element.hasClass('in')) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) { + if (e.which == 27) $parent.find(toggle).focus() + return $this.click() + } + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = selector && $(selector) + + if (!$parent || !$parent.length) $parent = $this.parent() + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api', clearMenus) + .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.dropdown-menu', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery); +/* ========================================================= + * bootstrap-modal.js v2.3.1 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element.show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.removeBackdrop() + that.$element.trigger('hidden') + }) + } + + , removeBackdrop: function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('