GitHub Action to install and initialize skillshare CLI β the universal skill manager for AI coding agents.
Skillshare syncs your AI coding skills (Claude, Cursor, Codex, Gemini, and 50+ more) from a single source of truth. This action sets up skillshare in CI so you can automate skill syncing, installation, and security auditing.
name: Sync Skills
on: push
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
- run: skillshare syncYour team maintains a skills repo. CI checks it out and syncs to all AI CLI targets.
jobs:
sync-skills:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
- run: skillshare syncOnly sync to Claude and Cursor, using copy mode (real files instead of symlinks).
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
targets: claude,cursor
mode: copy
- run: skillshare syncInstall an organization's shared skills repo with --track for future updates.
- uses: runkids/setup-skillshare@v1
- run: skillshare install your-org/skills --track
- run: skillshare syncCherry-pick individual skills by name.
- uses: runkids/setup-skillshare@v1
- run: skillshare install your-org/skills --skill pdf,commit
- run: skillshare syncSet up a git remote so skills can be pushed/pulled across machines.
- uses: runkids/setup-skillshare@v1
with:
remote: git@github.com:your-org/skills.git
- run: skillshare syncCreate a fresh source directory with git initialized (useful for new setups).
- uses: runkids/setup-skillshare@v1
with:
git: trueUse project-level skills from .skillshare/ in the current directory.
- uses: actions/checkout@v4
- uses: runkids/setup-skillshare@v1
with:
project: true
targets: claude,cursor
- run: skillshare sync -p- uses: runkids/setup-skillshare@v1
with:
version: "0.18.3"
source: ./skillsjobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
- run: skillshare sync- uses: runkids/setup-skillshare@v1
- run: skillshare install git@github.com:your-org/private-skills.git --track
- run: skillshare sync- uses: runkids/setup-skillshare@v1
- run: skillshare install https://github.com/your-org/private-skills.git --track
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- run: skillshare syncSkillshare has a built-in security scanner that detects prompt injection, credential theft, obfuscation, and 100+ threat patterns in AI skills.
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
audit: true
audit-threshold: high- uses: runkids/setup-skillshare@v1
with:
source: ./skills
audit: true
audit-format: sarif
audit-output: skillshare-audit.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: skillshare-audit.sarif
category: skillshare-audit- uses: runkids/setup-skillshare@v1
with:
source: ./skills
audit: true
audit-threshold: medium
audit-profile: strict
audit-format: json
audit-output: audit-results.jsonname: Skill Validation
on:
pull_request:
paths: ['skills/**']
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: runkids/setup-skillshare@v1
with:
source: ./skills
audit: true
audit-threshold: high
audit-format: sarif
audit-output: skillshare-audit.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: skillshare-audit.sarif
category: skillshare-audit
- run: skillshare sync --dry-run| Input | Description | Default |
|---|---|---|
version |
Skillshare version to install (without v prefix) |
latest |
source |
Path to skills source directory | β |
targets |
Comma-separated target names (e.g. claude,cursor) |
all detected |
mode |
Sync mode: merge, copy, or symlink |
merge |
git |
Initialize git in source directory | false |
remote |
Git remote URL for cross-machine sync (implies git: true) |
β |
project |
Use project-level skills (.skillshare/) |
false |
github-token |
GitHub token for API requests to avoid rate limits | ${{ github.token }} |
| Input | Description | Default |
|---|---|---|
audit |
Run security audit after setup | false |
audit-threshold |
Severity threshold: critical, high, medium, low, info |
high |
audit-format |
Output format: text, json, sarif, markdown |
text |
audit-profile |
Audit profile: default, strict, permissive |
β |
audit-output |
File path to save audit results | β |
| Output | Description |
|---|---|
version |
The installed skillshare version |
audit-exit-code |
Audit exit code: 0 = clean, 1 = findings |
- uses: runkids/setup-skillshare@v1
id: skillshare
with:
source: ./skills
audit: true
audit-output: audit.sarif
- run: echo "Installed ${{ steps.skillshare.outputs.version }}"
- run: echo "Audit result: ${{ steps.skillshare.outputs.audit-exit-code }}"- Download skillshare binary (with retry, cached in
$RUNNER_TOOL_CACHE) - Initialize via
skillshare initwith CI-friendly defaults - Audit (optional) with configurable threshold and output format
The action always runs skillshare init to create config.yaml β this is required before any skillshare operation. After setup, run skillshare sync, skillshare install, or any other command in subsequent steps.
skillshare init --no-copy --no-skill --all-targets --no-git [--source] [--targets] [--mode] [--git] [--remote]
--no-copyβ skip interactive copy-from prompt--no-skillβ skip built-in skill installation--no-gitβ by default (override withgit: trueorremote)--all-targetsβ by default (override withtargets)
skillshare init -p [--targets] [--mode]
Project mode only accepts --targets and --mode. Flags like --source, --git, --remote are not applicable β project skills live in .skillshare/ of the current directory.
- No
ghCLI dependency β version resolution uses HTTP redirect, falls back togh apiif available. Works on self-hosted runners. - Download retry β
curl --retry 3for transient network failures - Same-run cache β binary cached in
$RUNNER_TOOL_CACHE, skipped if already downloaded - Shell safety β all inputs passed through
env:vars, never expanded directly in shell
ubuntu-latest(linux/amd64)macos-latest(darwin/arm64)macos-13(darwin/amd64)
You can also install skillshare without this action:
- run: curl -fsSL https://raw.githubusercontent.com/runkids/skillshare/main/install.sh | bash
- run: skillshare init --no-copy --all-targets --no-git --no-skill