fork-fleet
Installation
SKILL.md
${var} — Divergence scope selector; space-separated tokens, order-independent, all optional:
- scope (
code|config|both, defaultboth) — which divergence dimension to run.repo=owner/name— override the parent repo whose forks are scanned (else auto-resolved).fork=owner/name— drill into a single fork (forcescodescope; config math needs a fleet).Empty ⇒ both dimensions over the auto-resolved parent. Examples: `` (both, all forks) ·
code·config·config repo=octo/aeon·fork=alice/aeon.
Today is ${today}. This is the fleet's divergence monitor. It answers two questions the popularity/liveness skills don't:
- Code divergence — which active forks are building real work (unique commits, new/modified skills) that's worth pulling back upstream?
- Config divergence — where does the configured fleet systematically disagree with upstream's
enabled/var/model/scheduledefaults, so the operator can flip a default the fleet has already voted on?
skill-gap ranks what's popular (top 15 by enabled count). This skill's code branch surfaces per-fork unique work; its config branch surfaces where operators disagree with defaults. If 6 of 8 configured forks enable a skill upstream defaults off, upstream is shipping the wrong default; if 5 of 8 disable a skill upstream defaults on, that skill is noise. Both are peer-learning signals.
Operating principles
- Verdict first, catalog second. The operator reads one line and knows if action is needed.
- Silent when nothing changed. Weekly cadence + a dormant/undivergent fleet = a read-once habit to kill. A clean run notifies nothing.
- Per-fork compare is one call, not three.
/compare/{owner}:main...{fork_owner}:mainreturns ahead/behind/unique commits/files in a single round-trip; the recursive git-tree returns the fork's whole file list in one call. - Substance ≠ noise. A new
skills/*/SKILL.mdis worth 100 cron-time edits inaeon.yml. Score accordingly. On the config side, an untouched template fork is not a "vote" — exclude it from divergence math.