Every wpTruss marketplace block ships in a two-folder package. The runtime/ folder contains the deployable block files that go to user sites. The registry/ folder contains one file: manifest.json. This file is read by the marketplace indexer and is never deployed to user sites.

{block-slug}/
    registry/
        manifest.json     Marketplace only. Never ships to users.
    runtime/
        block.json
        index.js
        index.asset.php
        style.css
        render.php

The manifest declares everything the marketplace needs to categorise, search, display, and compose blocks, without loading the block itself. It is the block’s machine-readable identity card.


manifest.json vs block.json – What Goes Where

Data Where it lives Reason
Block name (wptruss/my-block) block.json name AND manifest.json id WordPress needs it; marketplace indexes it
WordPress title, description, icon block.json only WordPress editor UI
editorScript, style, render block.json only WordPress asset registration
Block attributes and defaults block.json only WordPress block runtime
Marketplace category, archetype manifest.json only Never shipped to user sites
Intent, funnelStage, sectionRole manifest.json only Never shipped to user sites
AI fill permissions manifest.json only Never shipped to user sites
Composition canFollow/canPrecede manifest.json only Never shipped to user sites
Schema support declaration manifest.json only Actual schema output lives in render.php
wptPanels (Panel Registry config) block.json only WordPress block registration

The id in manifest.json must match name in block.json exactly. This is the only field that appears in both files.