The bridge between the realms. Canonical, multi-runtime marketplace for stark bundles — one source of truth (catalog/) renders into per-runtime trees for Claude Code, Codex, and Gemini CLI, plus a signed web registry served at marketplace.21stark.com. GitHub slug: 21StarkCom/bifrost.
The repo is also a native Claude Code marketplace: .claude-plugin/marketplace.json at the repo root is the manifest CC reads directly — no custom client.
| Bundle | Purpose |
|---|---|
stark-constitution |
Project setup & session priming (spec-kit constitution phase). |
stark-plan |
Plan-time guidance (spec-kit plan phase). |
stark-analyze |
Multi-domain review + adversarial red-team of designs/plans/PRs. |
stark-implement |
Implementation-time guidance (spec-kit implement phase). |
stark-gh |
GitHub workflow commands + MCP. |
stark-ops |
Ops/runtime utilities. |
/plugin marketplace add 21StarkCom/bifrost
/plugin install stark-gh@stark-marketplace
Each plugin is self-contained — its supporting tool scripts, prompts, and config are vendored into the bundle, so /plugin install works with no install.sh and no stark-skills checkout on your machine. Only prerequisite: Node ≥ 22.6 (skills run node --experimental-strip-types; stark doctor checks it).
Other runtimes go through the engine CLI:
cd engine
go run ./cmd/stark install stark-gh --runtime codex # or geminiSee docs/native-install-loop.md for the full install loop.
Source of truth is the stark-skills repo, not this one. The catalog's skills/ + commands/ and the vendor/stark-skills/ snapshot are generated from a stark-skills checkout — never hand-edit them, dist/, index.json, or bundles/*.json. What you DO edit here: each catalog/<bundle>/bundle.yaml (metadata + the skills:/commands: membership manifest) and curated catalog/<bundle>/mcp/ artifacts.
Standard loop:
cd engine
# 1. regenerate catalog skills/commands + vendor/ from a stark-skills checkout
go run ./cmd/stark sync --from ../../stark-skills ../catalog
# 2. render dist/ (vendors vendor/stark-skills into each bundle) + manifests
go run ./cmd/stark build ../catalog
# 3. gates — all must be clean before pushing
go run ./cmd/stark validate ../catalog
go run ./cmd/stark sync --from ../../stark-skills --check ../catalog # catalog/vendor drift
go run ./cmd/stark build --check ../catalog # dist drift
go run ./cmd/stark check-bumps ../catalog # bump bundle version on content change
go test ./... -count=1To publish a skill change: edit it in stark-skills, bump the affected bundle's version in its bundle.yaml here, then run the loop. CI does this automatically — a push to stark-skills main regenerates and opens a PR here (.github/workflows/marketplace-sync.yml in stark-skills). This repo's .github/workflows/ci.yml then gates the PR: validate → build --check → check-bumps → lint → tests → gitleaks. All blocking except lint.
Web SPA (web/):
cd web
npm install
npm run dev # local
npm run build # tsc --noEmit && vite build
npm testStatic origin (server/) is the Cloud Run image fronting the registry behind the
ev-infra-group platform load balancer.
internal/load parses catalog/ into a model.Catalog. Per-runtime adapters in internal/adapter/{claude,codex,gemini} render bundles into runtime-specific file trees. internal/build drives a full render; internal/install consumes one per-runtime render and writes it into a user's config. cmd/stark wires these. Determinism is load-bearing: build --check is the drift gate and check-bumps enforces version-bump immutability. Only dist/claude/ is committed (CC consumes it at-rest); dist/codex/ and dist/gemini/ are produced by stark install on the user's machine.
More detail in CLAUDE.md.
This distributes code that runs inside developer agents and, for mcp/ entries, spawns commands on developer machines. Integrity rests on:
- Protected, linear
main(no force-push, no bypass). - CI-signed build manifest (GitHub OIDC → sigstore/cosign keyless, signer
repo:21StarkCom/bifrost@refs/heads/main). - Commit SHA, which the manifest binds digests to.
stark verify-manifest checks all three. Self-computed digests alone are only an anti-drift signal.
MCP command values and agent.tools must be on positive allowlists (engine/internal/validate/{allowlist,toolsallow}.go). Adding an entry requires a CODEOWNERS-gated PR with maintainer + @aryeh-stark approval.
Full threat model and controls: docs/SECURITY.md.
CLAUDE.md— orientation for Claude Code / agentic contributors.AGENTS.md— same orientation for Codex / Gemini.CONTRIBUTING.md— how to add or change a bundle/artifact.docs/native-install-loop.md— end-to-end install via CC native marketplace.docs/SECURITY.md— trust model, signing, allowlist process, branch protection.docs/web-hosting.md— Cloud Run + LB wiring formarketplace.21stark.com.web/README.md— SPA-specific dev notes.
Internal 21 Stark AI project. See CODEOWNERS for review gates.