feat: expand platform coverage with 8 new adaptors, 7 new CLI agents, and OpenCode skill tools
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>
This commit is contained in:
153
templates/github-actions/update-skills.yml
Normal file
153
templates/github-actions/update-skills.yml
Normal file
@@ -0,0 +1,153 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user