Skip to content

docs: major documentation overhaul - leaderboard-first homepage and streamlined user guide #200

docs: major documentation overhaul - leaderboard-first homepage and streamlined user guide

docs: major documentation overhaul - leaderboard-first homepage and streamlined user guide #200

name: Continuous Learning - Extract Skills
on:
# Manual trigger
workflow_dispatch:
inputs:
output_format:
description: 'Output format for skills'
required: true
default: 'github-issues'
type: choice
options:
- github-issues
- skill-files
- both
# Automatic on new releases
release:
types: [published]
# Weekly analysis on Sundays at midnight UTC
schedule:
- cron: '0 0 * * 0'
jobs:
extract-skills:
runs-on: ubuntu-latest
permissions:
contents: write
issues: write
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install uv
uses: astral-sh/setup-uv@v3
- name: Install AgentReady
run: |
uv venv
uv pip install -e .
- name: Run self-assessment
run: |
uv run agentready assess . --output-dir .agentready
- name: Extract learnings
id: learn
run: |
uv run agentready learn . --output-format json > .skills-proposals/discovered-skills.json
echo "skill_count=$(jq '.skill_count' .skills-proposals/discovered-skills.json)" >> $GITHUB_OUTPUT
- name: Generate skill proposals
if: steps.learn.outputs.skill_count > 0
run: |
uv run agentready learn . --output-format all --output-dir .skills-proposals
- name: Create GitHub issues for each skill
if: (inputs.output_format == 'github-issues' || inputs.output_format == 'both') && steps.learn.outputs.skill_count > 0
env:
GH_TOKEN: ${{ github.token }}
run: |
for skill_file in .skills-proposals/skill-*.md; do
if [ -f "$skill_file" ]; then
# Extract skill name from filename
skill_name=$(basename "$skill_file" .md | sed 's/^skill-//' | sed 's/-/ /g')
# Create issue with skill proposal
gh issue create \
--title "Skill Proposal: ${skill_name}" \
--label "skill-proposal,enhancement,ai-agent" \
--body-file "$skill_file"
echo "Created issue for: $skill_name"
fi
done
- name: Create PR with skill files
if: (inputs.output_format == 'skill-files' || inputs.output_format == 'both') && steps.learn.outputs.skill_count > 0
run: |
# Configure git
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
# Create new branch
BRANCH_NAME="skills/auto-$(date +%Y%m%d-%H%M%S)"
git checkout -b "$BRANCH_NAME"
# Copy SKILL.md files to .claude/skills
mkdir -p .claude/skills
for skill_dir in .skills-proposals/*/; do
if [ -d "$skill_dir" ] && [ -f "${skill_dir}SKILL.md" ]; then
skill_id=$(basename "$skill_dir")
mkdir -p ".claude/skills/$skill_id"
cp "${skill_dir}SKILL.md" ".claude/skills/$skill_id/"
echo "Copied skill: $skill_id"
fi
done
# Commit and push
git add .claude/skills
git commit -m "feat: add discovered skills from continuous learning
Automatically extracted skills from latest assessment.

Check failure on line 111 in .github/workflows/continuous-learning.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/continuous-learning.yml

Invalid workflow file

You have an error in your yaml syntax on line 111
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>"
git push origin "$BRANCH_NAME"
# Create PR
gh pr create \
--title "Add discovered skills from continuous learning" \
--body "Automatically discovered new Claude Code skills from AgentReady assessment. Review and merge to make available."
- name: Upload skill proposals as artifacts
if: steps.learn.outputs.skill_count > 0
uses: actions/upload-artifact@v4
with:
name: skill-proposals-${{ github.run_number }}
path: .skills-proposals/
retention-days: 90
- name: Summary
if: steps.learn.outputs.skill_count > 0
run: |
echo "✅ Discovered ${{ steps.learn.outputs.skill_count }} skills with confidence ≥70%"
echo "📁 Artifacts uploaded for review"