Skip to content

Author the agent skills and publish them to virtuoso-dev/skills #111

Author the agent skills and publish them to virtuoso-dev/skills

Author the agent skills and publish them to virtuoso-dev/skills #111

Workflow file for this run

name: PR Checks
on:
pull_request:
types: [opened, synchronize, reopened]
merge_group:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
lint-markdown:
name: Lint Markdown
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint markdown
run: pnpm lint:md
format:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Check formatting
run: pnpm format:check
typecheck:
name: Type Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build prerequisites
run: pnpm --filter '!@virtuoso.dev/virtuoso.dev' build
- name: Type check
run: pnpm typecheck
lint:
name: Lint Code
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build prerequisites
run: |
pnpm --filter '!@virtuoso.dev/virtuoso.dev' build
pnpm --filter @virtuoso.dev/virtuoso.dev astro sync
- name: Lint
run: pnpm lint
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm --filter '!@virtuoso.dev/virtuoso.dev' build
- name: Install Playwright browsers for gurx
run: pnpm --filter @virtuoso.dev/gurx exec playwright install --with-deps chromium
- name: Run tests
run: pnpm test
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Build
run: pnpm build
env:
PADDLE_ENVIRONMENT: sandbox
PADDLE_TOKEN: test_5
PADDLE_STANDARD_PRICE_ID: pri_01
PADDLE_PRO_PRICE_ID: pri_01
validate-skills:
name: Validate Skills
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
- name: Validate Claude marketplace
run: claude plugin validate . --strict
- name: Validate Claude plugin
run: claude plugin validate ./packages/virtuoso-skills --strict
- name: Validate Codex plugin
run: pnpm --filter @virtuoso.dev/virtuoso-skills validate:codex
- name: Regenerate skill output
run: pnpm build:skills
- name: Check generated skill output drift
run: git diff --exit-code packages/virtuoso-skills/skills skills plugins/virtuoso-skills/skills
- name: Check Agent Skills source discovery
run: |
tmpdir="$(mktemp -d)"
repo="$(pwd)"
trap 'rm -rf "$tmpdir"' EXIT
(
cd "$tmpdir"
npx skills add "$repo" --list
)
- name: Check Agent Skills target installs
run: |
tmpdir="$(mktemp -d)"
repo="$(pwd)"
trap 'rm -rf "$tmpdir"' EXIT
git -C "$tmpdir" init
(
cd "$tmpdir"
npx skills add "$repo" --skill react-virtuoso --skill message-list --skill data-table --skill reactive-engine -a codex -a opencode -a cursor --copy -y
)
test -f "$tmpdir/.agents/skills/react-virtuoso/SKILL.md"
test -f "$tmpdir/.agents/skills/message-list/SKILL.md"
test -f "$tmpdir/.agents/skills/data-table/SKILL.md"
test -f "$tmpdir/.agents/skills/reactive-engine/SKILL.md"
e2e:
name: E2E Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup pnpm
uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8
with:
version: 10.24.0
- name: Setup Node
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version: 24.x
cache: pnpm
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Install Playwright browsers
run: pnpm --filter react-virtuoso exec playwright install --with-deps chromium
- name: Run E2E tests
run: pnpm e2e
- name: Upload Playwright report
if: failure()
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
with:
name: playwright-report
path: packages/react-virtuoso/playwright-report/
retention-days: 7