Phase 1 - OpenCode Integration: - Add OpenCodeAdaptor with directory-based packaging and dual-format YAML frontmatter - Kebab-case name validation matching OpenCode's regex spec Phase 2 - OpenAI-Compatible LLM Platforms: - Extract OpenAICompatibleAdaptor base class from MiniMax (shared format/package/upload/enhance) - Refactor MiniMax to ~20 lines of constants inheriting from base - Add 6 new LLM adaptors: Kimi, DeepSeek, Qwen, OpenRouter, Together AI, Fireworks AI - All use OpenAI-compatible API with platform-specific constants Phase 3 - CLI Agent Expansion: - Add 7 new install-agent paths: roo, cline, aider, bolt, kilo, continue, kimi-code - Total agents: 11 -> 18 Phase 4 - Advanced Features: - OpenCode skill splitter (auto-split large docs into focused sub-skills with router) - Bi-directional skill format converter (import/export between OpenCode and any platform) - GitHub Actions template for automated skill updates Totals: 12 --target platforms, 18 --agent paths, 2915 tests passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
154 lines
4.6 KiB
YAML
154 lines
4.6 KiB
YAML
# 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
|