Skip to content

chore(deps): update dependency node to v24 (#7) #15

chore(deps): update dependency node to v24 (#7)

chore(deps): update dependency node to v24 (#7) #15

name: Validate skills
on:
pull_request:
push:
branches: [main]
jobs:
# Squash merges use the PR title as the commit message, and release-please builds
# CHANGELOG.md from those messages — so a malformed title quietly corrupts the changelog.
# Mirrors the house commitlint header pattern; see the commit-and-release skill.
pr-title:
name: PR title
# Bots do not follow our commit convention: Renovate opens "Configure Renovate" and
# "Update dependency x", release-please opens "chore(main): release x.y.z". Both are
# their conventions, not ours.
if: >-
github.event_name == 'pull_request' &&
github.event.pull_request.user.type != 'Bot' &&
!startsWith(github.head_ref, 'release-please--')
runs-on: ubuntu-latest
steps:
- name: Check conventional commit format
env:
TITLE: ${{ github.event.pull_request.title }}
run: |
PATTERN='^(improve|build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test|update)\((([A-Z]+-[0-9]+)|NO-TASK|#[0-9]+|main)\)!?: .+'
if echo "$TITLE" | grep -Eq "$PATTERN"; then
echo "OK: $TITLE"
else
echo "::error::PR title does not match the commit convention: $TITLE"
echo "Expected: type(LINCHPIN-1234|NO-TASK|#12): Subject in sentence case"
echo "Types: improve build chore ci docs feat fix perf refactor revert style test update"
echo "The scope is required — it carries the ClickUp key. See the commit-and-release skill."
exit 1
fi
validate:
name: Skill standard
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 24
# Enforces skills/write-a-linchpin-skill/SKILL.md: frontmatter, required sections,
# portability, referenced files, and the README catalog.
- name: Validate skill packages
run: node scripts/validate-skills.mjs
# The installer is the only executable in the package; a syntax error there breaks
# every `npx @linchpinagency/skills` run.
- name: Smoke-test the installer
run: |
node bin/install.mjs --list
mkdir -p /tmp/install-smoke
cd /tmp/install-smoke
node "$GITHUB_WORKSPACE/bin/install.mjs" --skip-upstream --agent all
test -d .claude/skills/task-tracking
test -d .codex/skills/task-tracking
test -d .cursor/skills/task-tracking
test -d .agents/skills/task-tracking