Skip to content

Add skill staleness reminder workflow - #69

Open
ams-thakkar wants to merge 2 commits into
mainfrom
feature/skill-staleness-reminder
Open

Add skill staleness reminder workflow#69
ams-thakkar wants to merge 2 commits into
mainfrom
feature/skill-staleness-reminder

Conversation

@ams-thakkar

Copy link
Copy Markdown
Contributor

Description

Adds a scheduled GitHub Actions workflow that reminds the team to verify skills are still current, so skill content doesn't silently drift out of date.

How it works

  • A Python script (.github/scripts/check_skill_staleness.py) measures freshness from the last git commit touching each skills/<name>/ directory and flags any skill untouched for >= 60 days. (Git history is a reliable signal; CHANGELOG dates in this repo are inconsistent.)
  • The workflow (.github/workflows/skill-staleness-reminder.yml) runs on the 1st of every other month (cron: "0 15 1 */2 *") plus manual dispatch.
  • For each stale skill it opens a deduplicated skill-freshness issue (reused across runs; a commit to the skill dir resets the clock) and assigns a random repository maintainer (admin or maintain permission) to triage.

Why assign a maintainer instead of the author
The SKILL.md frontmatter author field is an internal alias, not a GitHub login (e.g. hokang → GitHub user howard-m-k; redshift-support-specialist lists aws-samples). @-mentioning or assigning it would silently notify no one or the wrong account. So the workflow assigns a maintainer to triage and surfaces the listed author as plain text in the issue body for the maintainer to route to.

Type of change

  • CI / tooling

Testing

Verified locally:

  • Script runs against the repo and flags eks-operation-review (82d) and enrich-with-aws-security-agent (74d) at the 60-day threshold; author parsing handles single and comma-separated values.
  • Rendered issue body is correct (no @-mention, author as plain text, clean markdown).
  • Dedup logic routes existing→comment, new→create; random maintainer pick spreads across the pool (Python random.choice, no shuf dependency).
  • Live collaborator API returns the expected admin/maintain pool.
  • Workflow YAML parses; script compiles.

Not yet verified at runtime (and how to close the gap):

  • The workflow has not run on a runner end-to-end (the real gh api/gh issue create --assignee calls, cron trigger). Scheduled triggers only fire from the default branch, so this can't be exercised pre-merge via schedule.
  • To validate safely, a dry_run input (default true) was added: a manual workflow_dispatch on this branch logs what it would do (detected skills, chosen assignee, create-vs-comment) without creating or commenting on any issues. Recommend running that dry-run before/after merge, then confirming a real run.

Notes

  • Also documented the process in CONTRIBUTING.md ("Keeping a Skill Fresh").
  • Separately noticed redshift-support-specialist's frontmatter author is aws-samples (org name, not a person) — out of scope here; flagging for that skill's owner.

Amrish Thakkar added 2 commits August 28, 2026 12:49
Add a scheduled GitHub Actions workflow that reminds the team to verify
skills are still current. A Python script measures freshness from the last
git commit touching each skills/<name>/ directory and flags any skill
untouched for >= 60 days.

The workflow runs on the 1st of every other month (cron "0 15 1 */2 *")
plus manual dispatch. For each stale skill it opens a deduplicated
skill-freshness issue and assigns a random repository maintainer (admin or
maintain permission) to triage. The frontmatter author is surfaced as plain
text in the body for the maintainer to route to, since in this repo that
field is an internal alias, not a GitHub login, so it cannot be mentioned or
assigned directly.

The script renders issue title/body files so the workflow avoids fragile
shell heredocs, and exits 0 so a stale skill is a reminder, not a build
failure. Documented the process in CONTRIBUTING.md.
Add a dry_run workflow_dispatch input (default true) so a manual run on a
branch logs what it would do without creating or commenting on issues.
Scheduled runs act for real; manual runs are safe to trigger for validation.
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.

1 participant