-
Notifications
You must be signed in to change notification settings - Fork 1
68 lines (54 loc) · 2.3 KB
/
sync-agent-skills.yml
File metadata and controls
68 lines (54 loc) · 2.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
name: Sync Supabase agent skills from supabase/agent-skills releases
on:
workflow_dispatch:
inputs:
release_tag:
description: Release tag from supabase/agent-skills (e.g. v0.1.0).
required: true
permissions:
contents: write
pull-requests: write
jobs:
sync:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4
- name: Sync skills
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mkdir -p "$RUNNER_TEMP/agent-skills-release"
gh release download "${{ inputs.release_tag }}" \
--repo supabase/agent-skills \
--dir "$RUNNER_TEMP/agent-skills-release" \
--pattern "index.json"
INDEX="$RUNNER_TEMP/agent-skills-release/index.json"
rm -rf skills/*/
for name in $(jq -r '.skills[].name' "${INDEX}"); do
url=$(jq -r --arg n "${name}" '.skills[] | select(.name == $n) | .url' "${INDEX}")
expected_hex=$(jq -r --arg n "${name}" '.skills[] | select(.name == $n) | .digest' "${INDEX}")
expected_hex="${expected_hex#sha256:}"
curl -fsSL "${url}" -o "$RUNNER_TEMP/agent-skills-release/${name}.tar.gz"
actual_hex=$(sha256sum "$RUNNER_TEMP/agent-skills-release/${name}.tar.gz" | awk '{print $1}')
if [ "${actual_hex}" != "${expected_hex}" ]; then
echo "Digest mismatch for ${name}: expected ${expected_hex}, got ${actual_hex}"
exit 1
fi
mkdir -p "skills/${name}"
tar -xzf "$RUNNER_TEMP/agent-skills-release/${name}.tar.gz" -C "skills/${name}"
done
- name: Create pull request
uses: peter-evans/create-pull-request@v7
with:
branch: feat/sync-agent-skills-v${{ inputs.release_tag }}
delete-branch: true
commit-message: "feat: sync skills from supabase/agent-skills ${{ inputs.release_tag }}"
title: "feat: sync skills from supabase/agent-skills ${{ inputs.release_tag }}"
body: |
## Summary
- sync Supabase agent skills from `supabase/agent-skills`
## Source
- release tag: `${{ inputs.release_tag }}`
## Notes
- generated by the `sync-agent-skills` workflow