name: Update Agent Skills on: schedule: - cron: '17 6 * * 1' workflow_dispatch: permissions: {} concurrency: group: update-agent-skills cancel-in-progress: false jobs: update: runs-on: ubuntu-latest timeout-minutes: 10 permissions: contents: write pull-requests: write steps: - uses: actions/checkout@v7 with: ref: main persist-credentials: false - id: update uses: devantler-tech/actions/update-agent-skills@v13.10.3 with: dir: .agents/skills - name: Copiar skills a .claude/skills id: mirror run: | set -euo pipefail mkdir -p .claude/skills rsync -a --delete --exclude .DS_Store --exclude .venv .agents/skills/ .claude/skills/ if ! git diff --quiet -- .claude/skills || [ -n "$(git ls-files --others --exclude-standard -- .claude/skills)" ]; then echo "changed=true" >> "$GITHUB_OUTPUT" else echo "changed=false" >> "$GITHUB_OUTPUT" fi - name: Open pull request if: steps.update.outputs.changed == 'true' || steps.mirror.outputs.changed == 'true' uses: peter-evans/create-pull-request@v8 with: base: main branch: feature/update-agent-skills delete-branch: true add-paths: | .agents/skills/** .claude/skills/** commit-message: 'chore(deps): update agent skills' title: 'chore(deps): update agent skills' body: | Updates installed skills with `gh skills update --all`. Review upstream instructions and provenance before merging. Local skills without GitHub provenance are skipped by the updater. `.claude/skills/` is a full copy of `.agents/skills/` (no symlinks). Default-token PRs do not trigger CI automatically.