• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
kamalnrf

kamalnrf

claude-plugins-registry

A lightweight registry for Claude Skills and Plugins
Public
Like
3
claude-plugins-registry
Home
Code
11
api
4
clients
1
cron
11
database
3
.vtignore
AGENTS.md
API.md
README.md
deno.json
H
main.ts
utils.ts
Branches
6
Pull requests
Remixes
7
History
Environment variables
8
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
cron
/
SKILL-HEALTH-MIGRATION.md
Code
/
cron
/
SKILL-HEALTH-MIGRATION.md
Search
…
Viewing readonly version of main branch: v610
View latest version
SKILL-HEALTH-MIGRATION.md

Unified Skill Health - Migration Notes

What This Branch Does

Consolidates three separate cron jobs into one efficient skill-health.ts job:

Old JobPurposeStatus
refresh-skills.tsMarks deleted skillsDEPRECATED - merged into skill-health
deduplicate.tsRe-hashes and marks duplicatesDEPRECATED - trust indexer's hash
track-change-history.tsBackfills firstCommitAtDEPRECATED - merged into skill-health

Key Changes

1. New skill-health.ts cron job

  • Only checks originals (non-duplicate skills) - ~47K instead of ~94K
  • Checks if skill still exists via HEAD request
  • When original is deleted, promotes oldest duplicate to become new original
  • Backfills firstCommitAt if missing
  • Tracks lastCheckedAt to skip recently-checked skills

2. New lastCheckedAt column

  • Added to skills table
  • Indexed for efficient queries
  • Run migration before deploying: database/run-migrations.ts

3. Smarter batching

  • Only processes skills not checked in last 24 hours
  • Orders by oldest-checked-first
  • 500 skills per run

Expected Impact

MetricBeforeAfter
GitHub API calls/cycle~280K (3 jobs × 94K)~47K
Jobs to maintain42 (indexer + health)
Duplicate re-validationEvery cycleNever

Migration Steps

  1. Run migration: database/run-migrations.ts
  2. Deploy skill-health.ts
  3. Set interval (recommended: every 15 minutes)
  4. Monitor for 24-48 hours
  5. Disable old jobs:
    • cron/refresh-skills.ts
    • cron/deduplicate.ts
    • cron/track-change-history.ts

Duplicate Promotion Logic

When an original skill is deleted:

Original (deleted) ──┬── Duplicate A (firstCommit: Jan 5)  ← promoted to original
                     ├── Duplicate B (firstCommit: Jan 8)  ← stays duplicate of A
                     └── Duplicate C (firstCommit: Jan 10) ← stays duplicate of A

The oldest duplicate by firstCommitAt becomes the new original. Other duplicates remain duplicates (now of the promoted skill).

Future Considerations

  1. Content change detection: Currently we don't detect if skill content changed. Could add If-Modified-Since headers to detect updates.

  2. Duplicate chain cleanup: When original is deleted and promoted, the "duplicate of" relationship isn't explicitly stored. All duplicates with same contentHash are treated as peers.

  3. Verified skill priority: Could prioritize verified skills when promoting instead of oldest.

FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
© 2026 Val Town, Inc.