← knowledge.oriz.in

Dynamic family-data registry: @chirag127/astro-shell/family-data + auto-discovery cron

decision decisionfamily-dataregistrydynamicauto-discoverysingle-source

Dynamic family-data registry

Decision

@chirag127/astro-shell/family-data.ts is the single dynamic registry for every entity in the chirag127/oriz family. Apps import + render from this module; never hardcode the list.

Entity types tracked:

Auto-discovery cron

scripts/discover-family.mjs (in astro-shell-npm-pkg repo OR master repo) runs on schedule:

  1. GH Action workflow daily at 06:00 IST OR on repository_dispatch from any chirag127/* repo's create-trigger
  2. Calls gh api 'users/chirag127/repos?per_page=100' --paginate to enumerate all chirag127 repos
  3. Classifies each repo by slug suffix:
    • -app ? FAMILY_APPS
    • -npm-pkg ? FAMILY_PACKAGES
    • -api ? FAMILY_APIS
    • -book ? FAMILY_BOOKS
    • -ext / -vsc-ext / -mcp ? FAMILY_EXTENSIONS
    • -skill ? FAMILY_SKILLS
    • -cli ? FAMILY_CLIS
  4. Extracts metadata from each repo's package.json (or README frontmatter): name, tagline, version, last-publish
  5. Regenerates family-data.ts if diff vs current
  6. If changed: bumps astro-shell minor version + commits + publishes to npm
  7. Renovate Bot then opens a PR in every consuming app to bump astro-shell dep

Surfaces consuming the registry

Future-proofing

When you create a new repo:

  1. gh repo create chirag127/<slug>-<suffix> (already in the scaffolding scripts)
  2. Discovery cron picks it up within 24h
  3. astro-shell bumps + Renovate cascades dep updates
  4. Every app's footer/sidebar/index pages show the new entity

ZERO manual edits to update the family list anywhere.

Apply-everywhere principle

User mandate: "Apply this concept everywhere wherever many things are same across many apps and keep on changing."

Other dynamic registries that follow this same pattern:

If a value changes frequently AND lives in multiple apps ? it goes in family-data.ts (or its respective shared package).

Cross-refs