Marketplace

The SPLENT marketplace is built on one rule: the index is a regenerable cache, never a second source of truth. Everything the marketplace knows about a feature derives from the feature’s own pyproject.toml — the auto-generated [tool.splent.contract] — read at its latest released tag, plus the SPL catalog (splent_catalog) for variability.

The model

  • Publishing is releasing. splent feature:release bumps the version, regenerates the contract, tags the repo and uploads to GitHub/PyPI. The tag IS the publication — there is no separate upload to the marketplace, no login, and no publish API.
  • The index is derived. splent marketplace:index scans the configured GitHub organisations (and any explicitly registered third-party repos), reads each feature’s contract at its latest tag, and emits a single index.json. If the index is ever stale, wrong or lost: rebuild it. Nothing is edited in place.
  • Third parties are curated, not uploaded. External authors release their feature on their own GitHub org, then get listed by adding their org/repo to the registry file consumed by marketplace:index --registry (a reviewed pull request — the Homebrew-tap model). The indexer validates contracts at build time; authors never push data into the marketplace.
  • CLI and web share the same index. feature:search and feature:info read the same index.json the marketplace web app serves. Set SPLENT_INDEX_URL to consume a published index; without it, commands use the locally built copy in .splent_cache/marketplace/index.json.

What the index contains

Per feature: the full contract (provides / requires / extensible / docker), the derived archetype, presentation metadata (description, category, tags), distribution state (latest Git tag, PyPI presence), reverse dependencies (used_by) and the source repo. Per SPL: the parsed UVL structure — mandatory/optional features, alternative groups, and constraints. Plus computed collisions: features that provide the same route/service/model and therefore can only coexist behind an alternative group.

Commands

Command Purpose
marketplace:index Build index.json from GitHub orgs, a registry file, or the workspace (--local).
feature:search Search the index (query + filters by category/archetype/tag/provides/requires).
feature:info Full contract card of a feature without cloning it.
check:contracts Verify contracts and SPL UVL constraints tell the same dependency story.

Table of contents


Back to top

splent. Distributed by an LGPL license v3. Contact us: drorganvidez@us.es