Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 39 additions & 4 deletions .github/workflows/skill-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ on:
# cross-link or a deleted reference reaches main unchecked.
- "skills/**/references/**"
- "skills/**/scripts/**"
- "docs/specs/git-tidy/**"
- "site/src/content/skills/**"
- "site/public/images/**"
- "site/package.json"
Expand Down Expand Up @@ -98,9 +99,18 @@ jobs:
# but is missing here selects no skill, so the job runs and lints
# nothing while still reporting success.
CHANGED=$(git diff --name-only "$BASE_SHA" HEAD)
DIRS=$(printf '%s\n' "$CHANGED" \
| grep -E '^skills/[^/]+/(SKILL\.md|package\.json|.*\.ya?ml|evals/|test/|references/|scripts/)' \
| sed 's|^\(skills/[^/]*\)/.*|\1|' | sort -u || true)
if printf '%s\n' "$CHANGED" \
| grep -Eq '^(README\.md|marketplace\.json|plugin\.json)$'; then
DIRS=$(find skills -maxdepth 2 -name "SKILL.md" -printf '%h\n' | sort -u)
else
DIRS=$(printf '%s\n' "$CHANGED" \
| grep -E '^skills/[^/]+/(SKILL\.md|package\.json|.*\.ya?ml|evals/|test/|references/|scripts/)' \
| sed 's|^\(skills/[^/]*\)/.*|\1|' | sort -u || true)
if printf '%s\n' "$CHANGED" | grep -Eq '^docs/specs/git-tidy/'; then
DIRS=$(printf '%s\n%s\n' "$DIRS" "skills/git-tidy" \
| sed '/^$/d' | sort -u)
fi
fi
else
# Push to main or manual dispatch: lint all skills
DIRS=$(find skills -maxdepth 2 -name "SKILL.md" -printf '%h\n' | sort -u)
Expand Down Expand Up @@ -160,7 +170,9 @@ jobs:
run: |
while IFS= read -r dir; do
if [ -f "$dir/package.json" ] && npm pkg get scripts.test --prefix "$dir" | grep -qv '{}'; then
npm ci --prefix "$dir" --ignore-scripts
if [ "$(npm pkg get dependencies --prefix "$dir")" != '{}' ]; then
npm ci --prefix "$dir" --omit=dev --ignore-scripts --no-audit --no-fund
fi
npm test --prefix "$dir"
fi
done <<< "$SKILL_DIRS"
Expand Down Expand Up @@ -202,3 +214,26 @@ jobs:
- name: Run tests and enforce coverage
working-directory: skills/dns-doctor
run: npm run test:coverage

git-tidy-tests:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "24"
cache: npm
cache-dependency-path: skills/git-tidy/package-lock.json
- name: Install dependencies
working-directory: skills/git-tidy
run: npm ci --ignore-scripts
- name: Run tests and enforce coverage
working-directory: skills/git-tidy
run: npm run test:coverage
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ general-purpose monorepo: each skill lives in its own folder under
| [`eli5`](skills/eli5/) | Explain the code, error, design, or idea already in context using plain language, a useful analogy, the proper grown-up terms, and an honest note about where the analogy stops working. |
| [`dns-doctor`](skills/dns-doctor/) | Audit DNS delegation, records, DNSSEC, CAA, web routing, TLS, CDN behavior, mail authentication, takeover exposure, and zone hygiene, then apply exact provider changes only after explicit user approval. |
| [`deps-doctor`](skills/deps-doctor/) | Audit, update, and secure dependencies across npm, pnpm, Yarn, pip, Poetry, uv, Go, Cargo, Bundler, Composer, NuGet, Maven, Gradle, Swift, pub, and Hex, plus Docker base images, GitHub Actions, Terraform, and dev container features. Ranks vulnerabilities by exploitation evidence, withholds releases too new to have been vetted, fixes breaking changes forward instead of rolling back, and never opens an empty dependency pull request. |
| [`git-tidy`](skills/git-tidy/) | Comprehensive git repo hygiene in one pass: branches, worktrees, stashes, tags, remotes, merge artifacts, ignored-but-tracked files, large history blobs, and maintenance health. Classifies every finding by confidence (safe, review, keep) and deletes nothing without explicit approval. |
| [`git-tidy`](skills/git-tidy/) | Content-aware Git work triage across branches, worktrees, stashes, remote refs, tags, remotes, artifacts, ignored tracking, large blobs, and maintenance. Leads with plain decisions and concrete actions while exact proof stays available on demand; analysis is read-only and every action requires separate approval. |

A skill is invoked straight from the Copilot composer &mdash; here `create-canvas-app`
turns a one-line prompt into a working canvas:
Expand Down
Loading