Skip to content

feat(infra-standards): add self-hosted-runners skill for RunsOn migration#308

Merged
JacobPEvans merged 2 commits into
mainfrom
feat/runs-on-skill
May 15, 2026
Merged

feat(infra-standards): add self-hosted-runners skill for RunsOn migration#308
JacobPEvans merged 2 commits into
mainfrom
feat/runs-on-skill

Conversation

@JacobPEvans
Copy link
Copy Markdown
Owner

Summary

  • New skill `/self-hosted-runners` under the `infra-standards` plugin that auto-triggers when editing `.github/workflows/*.yml` files.
  • Documents when to target RunsOn vs github-hosted runners, the v3 label catalog used across the org, the required `github.run_id` segment, and the GitHub App allowlist prereq.
  • Authoring-time companion to `terraform-runs-on/docs/migration-guide.md` (the deployment-time playbook).
  • Plugin manifest and README updated to register the skill.

Test plan

  • markdownlint passes on README and SKILL.md
  • `agentskills.io` validation passes
  • plugin.json validates against schema
  • Trigger phrasing in `description:` is specific enough that the skill activates on workflow file edits but not on unrelated work

…tion

Activates on .github/workflows/*.yml file edits to document when a
workflow should target self-hosted RunsOn runners vs github-hosted ones,
the v3 label catalog used across JacobPEvans repos, and the prereq that
the RunsOn GitHub App must have the repo in its allowlist.

This is the authoring-time companion to terraform-runs-on/docs/migration-guide.md
(the deployment-time playbook). The skill covers what reusable workflows
in JacobPEvans/.github do with the runner_label input, how to identify
whether a run actually landed on RunsOn (RUNS_ON_VERSION env var), and
which workloads explicitly do NOT migrate (macOS, gh-aw lock files,
disabled-schedule workflows).

Assisted-by: Claude <noreply@anthropic.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new infra-standards skill for guiding GitHub Actions workflow migrations to self-hosted RunsOn runners.

Changes:

  • Adds /self-hosted-runners skill documentation.
  • Registers the new skill in the infra-standards plugin manifest.
  • Updates the infra-standards README usage list.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
infra-standards/skills/self-hosted-runners/SKILL.md New RunsOn migration guidance skill.
infra-standards/README.md Documents the new skill in plugin usage.
infra-standards/.claude-plugin/plugin.json Registers the new skill and keywords.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread infra-standards/skills/self-hosted-runners/SKILL.md Outdated
Comment thread infra-standards/skills/self-hosted-runners/SKILL.md Outdated
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the self-hosted-runners skill to the infra-standards plugin, providing documentation for using RunsOn runners in GitHub Actions. The additions include a decision matrix for runner selection, a label catalog, and YAML implementation patterns. Feedback focuses on improving documentation consistency by aligning text references with table titles and suggests avoiding hardcoded pricing to prevent the information from becoming outdated.

Comment thread infra-standards/skills/self-hosted-runners/SKILL.md Outdated
Comment thread infra-standards/skills/self-hosted-runners/SKILL.md Outdated
Three corrections caught in review of #308:

1. **YAML frontmatter description** was 306 chars on one line, exceeding
   the repo's markdownlint MD013 line-length limit (160). Wrapped onto
   multiple lines with the `>-` folded scalar form. The skill still
   triggers on the same content; only the line breaks change.

2. **"Silent fallback" diagnostic was wrong.** GitHub does NOT silently
   route a job back to github-hosted compute when a custom `runs-on=...`
   label is unmatched — the job hangs in `queued` state waiting for a
   matching runner. Rewrote the "identifying RunsOn vs github-hosted"
   section to describe the actual failure mode (queue stall) and point
   at the `_ci-gate.yml` watchdog as the safety net.

3. **Hardcoded $3.50/month estimate** would rot as App Runner /
   CloudWatch pricing changes. Replaced with a link to
   terraform-runs-on/README.md (where the canonical estimate lives).
   Also reworded the "do not migrate list below" reference to point at
   the decision table rather than a nonexistent named list.

Assisted-by: Claude <noreply@anthropic.com>
@JacobPEvans JacobPEvans merged commit 050aebb into main May 15, 2026
8 checks passed
@JacobPEvans JacobPEvans deleted the feat/runs-on-skill branch May 15, 2026 13:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants