Structure
The forge block is a single top-level key added to your existing manifest. It has four sub-objects, two of which are implemented in v0.1 and two that are planned.
forge.versionrequiredSpec version — must be "0.1"forge.publisherlivePublisher identity — set on claimforge.securityliveSecurity scan results — set by Forgeforge.evalsplannedPerformance attestationsforge.composeplannedRuntime composability hintsforge.versionrequired
The version of this spec the block conforms to. Must be "0.1" for this version.
forge.publisherlive — v0.1
Publisher identity, populated automatically by Forge when you claim your listing. You can include it manually — Forge compares it against its verification records.
| Field | Type | Description |
|---|---|---|
verified | boolean | true if Forge has verified this publisher |
verification_method | string | "github-owner" · "github-collaborator-api" · "manual" |
github_login | string | GitHub username of the verified publisher |
verified_at | datetime | ISO 8601 — when verification occurred |
forge.securitylive — v0.1
Security scan results written by Forge — not self-reported. Forge queries the OSV vulnerability database for known CVEs against the exact published version, and runs static analysis on npm lifecycle scripts for suspicious patterns.
| Field | Type | Description |
|---|---|---|
scanned | boolean | Whether a scan has run |
scan_level | string | "base" or "verified" |
last_scan | datetime | ISO 8601 of last scan |
scanner_version | string | Forge scanner version |
vulnerabilities | integer | Total CVEs (all severities) |
critical / high / moderate / low | integer | CVEs by severity |
suspicious_scripts | boolean | Flagged lifecycle script patterns |
status | string | "clean" · "warnings" · "critical" · "failed" |
forge.evalsplanned — v0.2
Performance evaluation attestations. Structured, versioned test results. Self-reported scores are displayed with a “self-reported” label; Forge-verified scores require running a standard eval suite.
forge.composeplanned — v0.2
Composability hints that let Forge build a dependency graph and run supply chain security checks across agent pipelines.
Usage by format
MCP server
Add forge as a top-level key in package.json:
A2A Agent Card
Add forge as an extension key in agent.json:
Skill (SKILL.md)
Add a forge key in the YAML frontmatter:
Claiming your listing
You don't need to write the forge.publisher block yourself — Forge writes it automatically when you claim your listing.
- Find your package in the registry
- Click “Claim this listing” on the package profile
- Sign in with GitHub — Forge checks repo access automatically
- Submit the claim — most are verified instantly via the GitHub collaborator API
After verification, Forge writes the forge.publisher block and displays your GitHub identity on the listing. Security scanning runs automatically on every claimed package.
Versioning
This spec follows semantic versioning:
| Bump | When |
|---|---|
| Patch (0.1.x) | Clarifications, no schema changes |
| Minor (0.x.0) | New optional fields — backwards-compatible |
| Major (x.0.0) | Breaking changes to required fields or removed fields |
The forge.version field in the block records which version of this spec the block conforms to. Clients should treat unrecognised fields as unknown and ignore them.
RFC process
This spec evolves through an open RFC process on GitHub.
- Open an issue describing the problem you're solving with concrete JSON examples
- Discussion period: 7 days for minor changes, 14 days for significant, 30 days for breaking
- Open a PR updating SPEC.md and forge.schema.json, referencing the issue
- Merge after discussion period with no unresolved objections
JSON Schema
A machine-readable JSON Schema is available for validation:
Use it with any JSON Schema validator. Example with ajv: