# GitHub Actions template for auto-updating Skill Seekers skills # # This workflow periodically re-scrapes documentation sources and updates # the generated skills in your repository. # # Usage: # 1. Copy this file to .github/workflows/update-skills.yml # 2. Configure the SKILLS matrix below with your documentation sources # 3. Set ANTHROPIC_API_KEY secret (optional, for AI enhancement) # 4. Commit and push # # The workflow runs weekly by default (configurable via cron schedule). name: Update AI Skills on: schedule: # Run weekly on Monday at 6:00 AM UTC - cron: '0 6 * * 1' workflow_dispatch: inputs: skill_name: description: 'Specific skill to update (leave empty for all)' required: false type: string target: description: 'Target platform' required: false default: 'claude' type: choice options: - claude - opencode - gemini - openai - markdown - kimi - deepseek - qwen - openrouter - together - fireworks agent: description: 'Install to agent (leave empty to skip install)' required: false type: choice options: - '' - claude - cursor - opencode - all env: PYTHON_VERSION: '3.12' jobs: update-skills: runs-on: ubuntu-latest strategy: fail-fast: false matrix: # ============================================================ # CONFIGURE YOUR SKILLS HERE # Each entry defines a documentation source to scrape. # ============================================================ skill: # Example: Web documentation # - name: react # source: https://react.dev/reference # target: claude # Example: GitHub repository # - name: fastapi # source: tiangolo/fastapi # target: opencode # Example: PDF documentation # - name: rfc-http # source: ./docs/rfc9110.pdf # target: markdown # Placeholder - replace with your skills - name: placeholder source: https://example.com/docs target: claude steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: ${{ env.PYTHON_VERSION }} - name: Install Skill Seekers run: pip install skill-seekers - name: Check if specific skill requested id: check run: | if [ -n "${{ github.event.inputs.skill_name }}" ]; then if [ "${{ matrix.skill.name }}" != "${{ github.event.inputs.skill_name }}" ]; then echo "skip=true" >> $GITHUB_OUTPUT fi fi - name: Generate skill if: steps.check.outputs.skip != 'true' env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | TARGET="${{ github.event.inputs.target || matrix.skill.target || 'claude' }}" skill-seekers create "${{ matrix.skill.source }}" \ --name "${{ matrix.skill.name }}" \ --target "$TARGET" \ --output-dir "output/${{ matrix.skill.name }}" - name: Install to agent if: > steps.check.outputs.skip != 'true' && github.event.inputs.agent != '' run: | skill-seekers install-agent \ "output/${{ matrix.skill.name }}" \ --agent "${{ github.event.inputs.agent }}" \ --force - name: Check for changes if: steps.check.outputs.skip != 'true' id: changes run: | if [ -n "$(git status --porcelain output/)" ]; then echo "has_changes=true" >> $GITHUB_OUTPUT fi - name: Create PR with updated skills if: steps.changes.outputs.has_changes == 'true' uses: peter-evans/create-pull-request@v6 with: commit-message: "chore: update ${{ matrix.skill.name }} skill" title: "Update ${{ matrix.skill.name }} skill" body: | Automated skill update for **${{ matrix.skill.name }}**. Source: `${{ matrix.skill.source }}` Target: `${{ github.event.inputs.target || matrix.skill.target || 'claude' }}` Generated by [Skill Seekers](https://github.com/yusufkaraaslan/Skill_Seekers) branch: "skill-update/${{ matrix.skill.name }}" delete-branch: true