If you want to create a new package first, see Getting Started:
registry/
├── incoming/
│ └── ... # Optional staging area (drop package.json here first)
├── packages/
│ ├── coi/
│ │ └── supabase.json # Scoped package file (coi/supabase)
│ └── ...
└── schema/
└── package.schema.json # Schema for package files
packages/<scope>/<name>.json— individual package files (discovered automatically)
Simplest workflow:
- Copy your
package.jsonintoincoming/(any subfolder works, e.g.incoming/my-pkg/package.json) - Set
nameto just the package name (e.g.my-pkg) - Set the
repositoryfield to your GitHub repo URL - Run promotion:
python3 scripts/validate_registry.py --promote-incoming --offlineThat's it! The script will:
- Auto-set only the scope from repository owner/org (
github.com/alice/my-pkg→ scopealice) - Keep your package name unchanged (e.g.
my-lib→alice/my-lib) - Move the file to
packages/<owner>/<package-name>.json
Then validate:
python3 scripts/validate_registry.py --offline| Placeholder | Filled from | When |
|---|---|---|
__COMMIT_SHA__ |
GitHub API (latest commit) | Online mode only |
__TARBALL_SHA256__ |
Downloaded tarball hash | Online mode only |
Schema: schema/package.schema.json
Each package file contains:
name: package id inscope/nameformat (must matchpackages/<scope>/<name>.jsonpath)schema-version: package entry format versionrepository: GitHub URLreleases: array of version releases (newest first)createdAt: when package was first added
Each release contains:
version: semver (e.g.1.0.0,0.2.1-beta)compiler.pond: compiler contract versioncompiler.min-drop: optimistic minimum supported compiler drop within that pondsource.commit: pinned git commit SHA (required)source.sha256: SHA256 hash of that commit tarball (required)releasedAt: release date
Pond vs Drop:
- Pond: the contract. If this number changes, syntax/core compatibility is broken.
- Drop: the velocity. Features/fixes/platform support are poured into the current pond.
Offline (no GitHub API calls):
python3 scripts/validate_registry.py --offlineOnline (same as CI):
python3 scripts/validate_registry.py