refactor(skills)!: convert to curated index of upstream skills#16
Conversation
Stop re-hosting upstream skills in this repo. With `gh skill install` natively recording upstream provenance in each installed SKILL.md's `metadata.github-*` frontmatter, a curator re-publishing copies would strip the very metadata `gh skill update --all` relies on. - Delete all 19 vendored skill directories. - Delete skills-lock.yaml and the bespoke upstream-sync bot (.github/scripts/update-skill.sh, .github/workflows/update-skills.yaml). - Guard .github/workflows/ci.yaml so both the publish dry-run and the skills-ref validate matrix cleanly no-op on an empty repo, keeping the publish pipeline scaffolded for future in-house skills. - Rewrite README.md as a curated index with per-category tables of Skill | Upstream | Install snippets, and a migration notice pointing pinned v0.2.5/earlier consumers at the still-working release tags. BREAKING CHANGE: `gh skill install devantler-tech/skills <skill>` no longer resolves against main. Install directly from each skill's upstream repo (see README for the full table) or keep pinning to an existing release tag (v0.2.5 and earlier). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Refactors the repository from re-hosting upstream skills to acting as a curated index, removing vendored skill content and upstream-sync automation, and adjusting CI to handle an empty repo gracefully.
Changes:
- Removed vendored skill directories and their associated docs/schemas/evals.
- Removed the upstream-sync bot workflow and script.
- Updated CI to skip
gh skill publish --dry-runand the validation matrix when no skills are present.
Reviewed changes
Copilot reviewed 62 out of 144 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| gitops-knowledge/assets/schemas/artifactgenerator-source-v1beta1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-knowledge/assets/schemas/alert-notification-v1beta3.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-knowledge/assets/schemas/alert-notification-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/references/troubleshooting.md | Removes re-hosted skill reference documentation. |
| gitops-cluster-debug/references/flux-crds.md | Removes re-hosted skill reference documentation. |
| gitops-cluster-debug/evals/evals.json | Removes re-hosted skill eval documentation. |
| gitops-cluster-debug/assets/schemas/receiver-notification-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/receiver-notification-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/provider-notification-v1beta3.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/provider-notification-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/imagerepository-image-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/imagerepository-image-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/imagepolicy-image-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/imagepolicy-image-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/helmrepository-source-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/helmchart-source-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/fluxreport-fluxcd-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/externalartifact-source-v1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/artifactgenerator-source-v1beta1.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/alert-notification-v1beta3.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/assets/schemas/alert-notification-v1beta2.json | Removes vendored schema content as part of dropping re-hosted skill assets. |
| gitops-cluster-debug/SKILL.md | Removes the vendored skill definition/documentation. |
| github-issues/references/templates.md | Removes re-hosted skill reference documentation. |
| github-issues/references/sub-issues.md | Removes re-hosted skill reference documentation. |
| github-issues/references/search.md | Removes re-hosted skill reference documentation. |
| github-issues/references/projects.md | Removes re-hosted skill reference documentation. |
| github-issues/references/issue-types.md | Removes re-hosted skill reference documentation. |
| github-issues/references/issue-fields.md | Removes re-hosted skill reference documentation. |
| github-issues/references/images.md | Removes re-hosted skill reference documentation. |
| github-issues/references/dependencies.md | Removes re-hosted skill reference documentation. |
| github-issues/SKILL.md | Removes the vendored skill definition/documentation. |
| github-actions-docs/references/topic-map.md | Removes re-hosted skill reference documentation. |
| github-actions-docs/SKILL.md | Removes the vendored skill definition/documentation. |
| git-commit/SKILL.md | Removes the vendored skill definition/documentation. |
| frontend-design/SKILL.md | Removes the vendored skill definition/documentation. |
| frontend-design/LICENSE.txt | Removes vendored skill licensing file as part of dropping the skill. |
| find-skills/SKILL.md | Removes the vendored skill definition/documentation. |
| copilot-instructions-blueprint-generator/SKILL.md | Removes the vendored skill definition/documentation. |
| bubbletea/references/emoji-width-fix.md | Removes re-hosted skill reference documentation. |
| bubbletea/SKILL.md | Removes the vendored skill definition/documentation. |
| astro/SKILL.md | Removes the vendored skill definition/documentation. |
| .github/workflows/update-skills.yaml | Removes the bespoke upstream-sync workflow. |
| .github/workflows/ci.yaml | Adds guards so CI cleanly no-ops when no skills exist. |
| .github/scripts/update-skill.sh | Removes the bespoke upstream-sync script. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| validate-spec: | ||
| name: Validate spec (${{ matrix.skill }}) | ||
| needs: discover-skills | ||
| if: needs.discover-skills.outputs.skills != '[]' |
There was a problem hiding this comment.
Using a job-level if to skip validate-spec when there are no skills will mark the job as skipped, not successful. If branch protection rules require this check, merges can be blocked even though the empty-repo case is expected. Consider keeping the job running and short-circuiting inside a first step (exit 0) when the skills list is empty, or introduce a separate always-running 'validate-spec' wrapper job that succeeds for empty repos while only running the matrix when non-empty.
| if ! jq -e 'type == "array" and length > 0' >/dev/null 2>&1 <<<"$skills"; then | ||
| echo "::error::Skill discovery output was empty or invalid. Ensure skill directories contain SKILL.md at the expected path and that discovery logic is working." | ||
| if ! jq -e 'type == "array"' >/dev/null 2>&1 <<<"$skills"; then | ||
| echo "::error::Skill discovery produced invalid output." |
There was a problem hiding this comment.
The updated error message is much less actionable than before (it no longer hints at the expected SKILL.md path or the discovery logic). Consider including the expected directory layout and/or the exact discovery command assumptions (e.g., ./<skill>/SKILL.md at depth 2) to make CI failures easier to debug.
| echo "::error::Skill discovery produced invalid output." | |
| echo "::error::Skill discovery produced invalid output. Expected skills to be discovered from manifests at './<skill>/SKILL.md' using 'find . -mindepth 2 -maxdepth 2 -name SKILL.md', and for the result to be converted into a JSON array of skill directories." |
Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json` + remove its mega-linter exclusions. - Reinstall 15 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. Tooling that reads it must now discover skills under `.agents/skills/` instead. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json`. - Reinstall 11 of 12 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - `siderolabs/docs` is not re-installed: the upstream ships `public/skill.md` (lowercase) which `gh skill install` rejects (it only recognises `SKILL.md`). Tracking upstream for a fix — until then, manage that skill out-of-band or drop it. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. The `siderolabs` skill is temporarily unavailable pending an upstream rename to `SKILL.md`. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * refactor(skills)!: reinstall from upstreams, drop skills-lock.json Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json`. - Reinstall 11 of 12 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - `siderolabs/docs` is not re-installed: the upstream ships `public/skill.md` (lowercase) which `gh skill install` rejects (it only recognises `SKILL.md`). Tracking upstream for a fix — until then, manage that skill out-of-band or drop it. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. The `siderolabs` skill is temporarily unavailable pending an upstream rename to `SKILL.md`. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(update-skills): pin to merged reusable-workflows commit on main The previous PR-head SHA was unreachable from the default branch after reusable-workflows#207 squash-merged, triggering zizmor's "commit with no history in referenced repository" alert. Repoint at the merge commit on `main`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * refactor(skills)!: reinstall from upstreams, drop skills-lock.json Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json` + remove its mega-linter exclusions. - Reinstall 15 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. Tooling that reads it must now discover skills under `.agents/skills/` instead. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(update-skills): pin to merged reusable-workflows commit on main The previous PR-head SHA was unreachable from the default branch after reusable-workflows#207 squash-merged, triggering zizmor's "commit with no history in referenced repository" alert. Repoint at the merge commit on `main`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * refactor(skills)!: reinstall from upstreams, drop skills-lock.json Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json` + remove its mega-linter exclusions. - Reinstall 15 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. Tooling that reads it must now discover skills under `.agents/skills/` instead. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(update-skills): pin to merged reusable-workflows commit on main The previous PR-head SHA was unreachable from the default branch after reusable-workflows#207 squash-merged, triggering zizmor's "commit with no history in referenced repository" alert. Repoint at the merge commit on `main`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * refactor(skills)!: reinstall from upstreams, drop skills-lock.json Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json` + remove its mega-linter exclusions. - Reinstall 15 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. Tooling that reads it must now discover skills under `.agents/skills/` instead. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(update-skills): pin to merged reusable-workflows commit on main The previous PR-head SHA was unreachable from the default branch after reusable-workflows#207 squash-merged, triggering zizmor's "commit with no history in referenced repository" alert. Repoint at the merge commit on `main`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
) * refactor(skills)!: reinstall from upstreams, drop skills-lock.json Re-install each agent skill from its original upstream repo via `gh skill install`, so every installed SKILL.md now carries `metadata.github-*` frontmatter pointing at the true origin instead of `devantler-tech/skills`. `gh skill update --all` reads that metadata directly, making the sidecar `skills-lock.json` redundant. - Delete `skills-lock.json` + remove its mega-linter exclusions. - Reinstall 15 skills from upstream via `gh skill install <owner/repo> <path> --agent github-copilot --scope project --dir .agents/skills`. - Bump `update-skills.yaml` to pin the refreshed reusable workflow and swap `skills-lock` for the new `dir` input. BREAKING CHANGE: `skills-lock.json` is removed. Tooling that reads it must now discover skills under `.agents/skills/` instead. Refs: devantler-tech/skills#16, devantler-tech/actions#95, devantler-tech/reusable-workflows#207 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(update-skills): pin to merged reusable-workflows commit on main The previous PR-head SHA was unreachable from the default branch after reusable-workflows#207 squash-merged, triggering zizmor's "commit with no history in referenced repository" alert. Repoint at the merge commit on `main`. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Stop re-hosting upstream skills in this repo. With
gh skill installnatively recording upstream provenance in each installedSKILL.md'smetadata.github-*frontmatter, a curator re-publishing copies would strip the very metadatagh skill update --allrelies on — so this repo becomes a curated index instead.Type of change
What changed
skills-lock.yaml,.github/scripts/update-skill.sh, and.github/workflows/update-skills.yaml— the bespoke upstream-sync bot is no longer needed;gh skill update --allhandles drift natively from thegithub-*metadata each installed skill already carries..github/workflows/ci.yamlso bothgh skill publish --dry-runand theskills-ref validatematrix cleanly no-op on an empty repo. The publish pipeline (cd.yaml,release.yaml,.releaserc) stays scaffolded for future in-house skills.README.mdas a curated index — per-category tables withSkill | Upstream | Installcolumns showing literalgh skill install <upstream> <skill>snippets, plus a migration notice for anyone currently pinningdevantler-tech/skills@v0.2.5or earlier (those tags still work).Breaking change
gh skill install devantler-tech/skills <skill>againstmainno longer resolves — install from each skill's true upstream (one-line snippets in the README) or keep pinning to an existing release tag. Companion PRs indevantler-tech/actions,devantler-tech/reusable-workflows,devantler-tech/ksail, anddevantler-tech/platformmigrate the automation + downstream consumers accordingly.