- JavaScript 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| baseline | ||
| docs | ||
| mappings | ||
| schemes | ||
| src | ||
| test | ||
| tools | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| naddrs.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| vitest.config.mjs | ||
edufeed vocabs
Single source of truth for everything the edufeed vocabulary publisher
(d2689e2f…a612) publishes on Nostr: concept schemes (kind 39737),
concepts (39738), concordances (39741) and mappings (39740).
pnpm install
pnpm test
pnpm plan # diff the repo against relay.edufeed.org (read-only)
pnpm apply # sign + publish only the diff (needs EDUFEED_PUBLISHER_NSEC)
pnpm baseline # snapshot all publisher events into baseline/
pnpm usage # which kind-30142 resources reference concepts touched by the plan
pnpm sync:skohub # refresh vendored SkoHub snapshots
Configuration (apply only)
pnpm apply reads two variables from the environment or from .env
(copy .env.example; .env is git-ignored):
EDUFEED_PUBLISHER_NSEC— the publisher secret key as 64-char hex (notnsec1…).applyrefuses any key whose pubkey is notd2689e2f…a612.EDUFEED_PUBLISH_RELAYS— comma-separated relaysapplyplans against and publishes to when--relaysis not given (e.g.wss://relay.edufeed.org).--relays a,boverrides it.naddrs.jsonis written only when the publish relay set is exactlywss://relay.edufeed.org, however it was given.
Before signing, apply checks the relay fetch against the newest
baseline/*.jsonl: it refuses if a planned create already exists in the
baseline or if fewer managed events were fetched than the baseline holds
(re-run pnpm plan, or refresh with pnpm baseline if the relay really
changed). Without a baseline file it refuses unless --no-baseline-check
is passed (e.g. for a throwaway local staging relay).
See docs/superpowers/specs/2026-10-08-vocabs-repo-design.md.