Skill pattern freshness audit
Skill esaldgut/ai-native-engineering-workspace/global-skills/meta/skill-pattern-freshness-audit
Detect (don't repair) drift between a published technical skill and the current state of the official SDK/framework/spec it documents. Reads the skill's freshness frontmatter, re-verifies each cited API against live vendor docs, and sets each skill's status to current / needs-recheck / stale / superseded with the citation that proves it. Use quarterly per domain, after a major platform release (new iOS / Compose BOM / AWS SDK major / Claude Code minor), or before relying on a skill past its recheck date. Repair of a flagged skill is handled by dossier-driven-skill-update.From its SKILL.md
npx -y skills add esaldgut/ai-native-engineering-workspace --skill skill-pattern-freshness-auditAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.9 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it
Skill Pattern Freshness Audit
Technical patterns for fast-moving platforms rot in months. This skill turns rot into a
queryable signal: it walks a directory of skills, reads each one's freshness block (see
global-skills/FRESHNESS_SPEC.md), re-verifies the cited APIs against current official
documentation, and reports drift with citations — so a stale recommendation is caught here,
not in someone's production code.
When to invoke
Auto-invoke when any of these triggers fire:
- A major platform release lands for a domain you publish skills in: a new iOS major (post-WWDC), a new Compose BOM major (post-Google I/O), an AWS SDK Go v2 major or CDK CLI major, a Claude Code minor release.
- A skill's
freshness.recheck_after.or_datehas passed (run/skill-pattern-freshness-audit <domain>). - Before quoting or relying on a skill whose
freshness.statusisneeds-recheck,stale, orsuperseded. - Quarterly housekeeping per domain, even with no release — the cheapest insurance against silent deprecations.
Announce on invoke: "Using skill-pattern-freshness-audit to re-verify <domain> skills against current docs."
Why this is necessary
global-skills/FRESHNESS_SPEC.md documents five real drift cases found in a single verification
pass — cdk drift superseding a manual idiom, EncryptedSharedPreferences deprecated,
hiltViewModel() artifact renamed, runBlockingTest → runTest, and the mythical
CryptoKit.timingSafeEqual. Each is the kind of silent rot this audit exists to catch as a
status flag before a reader copies it into production. (See the spec's table for the cited
sources; this skill doesn't restate it.)
Inputs
/skill-pattern-freshness-audit <domain> [--fix] [--strict]
<domain>— one ofapple,apple-auth,aws-go,android,claude-code-workflow,meta, orall. Maps toglobal-skills/<domain>/. (At this repo's current stage onlymeta/is populated; the other domains are populated by the skill-extraction phase. Auditing an empty domain returns an empty report, which is correct.)--fix— after reporting, update each skill'sfreshness.statusfield in place, and append a dated audit line to the body footer. It never rewrites the body's instructions — that's the job ofdossier-driven-skill-update. So this skill writes status + a footer line only; it is not a body editor.--strict— treat any unresolvable citation URL as a failure (default: warn).
Methodology
Step 0 — Lint the freshness block (fast, no network)
For each SKILL.md in the domain, validate the block against FRESHNESS_SPEC.md rules 1–6:
≥2 verified_against entries, ≥1 primary vendor source, resolving URLs, or_date > verified_on, valid enums, and ≥1 concrete public API string in the body (anti-sterilization).
A skill that fails the lint is reported INVALID and skipped from drift detection (you can't
audit a pattern with no provenance).
Step 1 — Window check (no network)
Compare today's date and any known platform releases against each skill's recheck_after:
- Past
or_date→ markneeds-recheck. triggerkeyword matches a release you know happened (e.g., trigger says "WWDC26" and it's July 2026) → markneeds-recheck.- Otherwise → eligible to stay
current, pending drift detection.
Step 2 — Drift detection (network; this is the core)
For each skill flagged needs-recheck (or all, if a release just dropped), re-verify the
concrete API strings the body names. For each one:
- Fetch the cited
verified_against[].url(WebFetch). If it 404s or redirects to a "this has moved / deprecated" page → strong drift signal. - Search the vendor's current docs for the literal API string (WebSearch:
site:developer.apple.com "<API>",site:developer.android.com "<artifact>",site:docs.aws.amazon.com "<command>",site:code.claude.com "<feature>"). - Classify the result:
| Finding | Status to set |
|---|---|
| API still documented at cited version or later, no deprecation banner | current |
| API documented but with a deprecation/renamed notice, or a newer canonical tool exists | stale |
| API absent / replaced / never existed | superseded |
Cross-check against the platform's release notes for the window between verified_on and
today (Apple "what's new", Android "AndroidX releases", AWS SDK Go v2 CHANGELOG, Claude Code
release notes). A rename in release notes that the skill body doesn't mention = stale.
Step 3 — Report
Emit a table, one row per skill (the skill names below are illustrative of an android domain
once populated):
DOMAIN: android (audited 2026-09-15)
skill status evidence
─────────────────────────────────────────────────────────────────────────────
compose-clean-architecture-module current collectAsStateWithLifecycle still canonical
compose-feature-scaffold stale hilt-navigation-compose → hilt-lifecycle-viewmodel-compose (Hilt 1.3.0)
android-security-checklist superseded EncryptedSharedPreferences deprecated (Jetpack Security 1.1.0 terminal)
android-testing-patterns stale runBlockingTest → runTest (kotlinx 1.6+); Turbine API unchanged
kmp-shared-extraction current CMP iOS Stable since 1.8.0; expect/actual unchanged
─────────────────────────────────────────────────────────────────────────────
2 current · 2 stale · 1 superseded · 0 invalid
Next action: run /dossier-driven-skill-update android for the 3 non-current skills.
For each non-current skill, include: the exact API that drifted, the replacement, and the
citation URL proving it. That citation is what makes the report actionable instead of alarmist.
Step 4 — Optionally update status (--fix)
With --fix, write the new status value back into each skill's freshness frontmatter and
append a dated line to the body footer (e.g., Audit 2026-09-15: hiltViewModel artifact renamed — see issue). Never touch the body's instructions; that is a separate, gated step
(dossier-driven-skill-update), because rewriting guidance needs a fresh research dossier.
Rules
- Read frontmatter + body, fetch live docs — never trust the skill's own claim. The whole point is to catch the skill being wrong.
- Every status change carries a citation. A
stale/supersededflag without a URL is a bug; downgrade toneeds-recheckand ask a human. - Primary sources outrank blogs. A Medium post saying "X is deprecated" is a lead, not a
verdict; confirm on the vendor's docs or release notes before flagging
superseded. - Don't rewrite bodies here. This skill detects;
dossier-driven-skill-updaterepairs. Keeping them separate means detection can run cheaply and often. - Asynchronous-friendly. Drift detection over a whole repo is slow (many fetches); run it per domain, and schedule it (see below) rather than blocking interactive work.
Automation (recommended)
Schedule the audit per domain on the cadence in FRESHNESS_SPEC.md (Apple/Android twice a
year post-conference, AWS quarterly, Claude Code monthly). In Claude Code this can be a
schedule routine or a cron-driven headless run:
# Quarterly AWS audit, monthly Claude Code audit
/skill-pattern-freshness-audit aws-go --fix
/skill-pattern-freshness-audit claude-code-workflow --fix
The --fix keeps status honest automatically; a human reviews the report and decides which
stale/superseded skills warrant a full body refresh.
Related skills
global-skills/FRESHNESS_SPEC.md— the frontmatter contract this skill reads and lints.global-skills/meta/dossier-driven-skill-update/SKILL.md— repairs the skills this audit flags (re-researches + rewrites the body, then resetsstatustocurrent).global-skills/meta/skill-extraction-pattern/SKILL.md— the methodology that produced the audited skills in the first place; freshness is its maintenance counterpart.
Last verified: 2026-06-03 against Anthropic Agent Skills best practices + the AWS cdk drift
docs (the canonical example of a documented pattern superseded by a new first-class command).
Re-check after: any Claude Code skill-frontmatter schema change, or by 2026-12-03. Decay risk: low.
Found a drift in this skill itself? Open an issue or re-run the audit on meta.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.