Runtime provides an API
Propose a capability.
First check the merged and proposed NAPs. Extend an existing domain when it already owns the operation. For a distinct runtime capability, start a NAP proposal.
NAP interface template ↗Contribute / Start with the boundary
A new NAP makes sense when napplets need a runtime-provided API that the existing capability contracts do not cover.
The decision guide below is editorial guidance inferred from the upstream boundary rule. The repository’s current guidance takes precedence.
Runtime provides an API
First check the merged and proposed NAPs. Extend an existing domain when it already owns the operation. For a distinct runtime capability, start a NAP proposal.
NAP interface template ↗Napplets agree on a payload
If the idea describes what napplets say to one another rather than a runtime API, use a convention. A shared message shape does not by itself need a new NAP.
Convention template ↗A role needs a name
If the idea names what kind of napplet this is and where its responsibility ends, it belongs in the NAAT registry. An archetype owns neither an API nor a payload.
Archetype template ↗A host carries the contract
Transport and host bindings belong to a projection. Keep the capability contract separate from how a browser or another host delivers it.
Web projection ↗Search the directory and open PRs for overlap. Describe the missing capability, which napplets need it, and what the runtime would provide.
Fork napplet/naps, make a branch for the spec, and add naps/NAP-WORD.md using the current interface template. Keep one spec concern in the PR.
Describe operations, schemas, errors, dependencies, runtime behavior, and security boundaries. Follow the template’s language-neutral tables and link to the living projection specifications. Read the contributor guide for the current dependency and changelog rules.
Use a title such as NAP-WORD: Add a focused capability. Explain the motivation and concrete changes. Keep the registry entry and related docs consistent, and link an implementation when available.
Discuss the proposal in PR comments, respond to interoperability concerns, and update the spec as the design stabilizes. Maintainers decide when to merge; an open PR is not acceptance.
Based on upstream governance and the contributor guide. Names and acceptance are maintained by that repository.
Refreshed from upstream
These are the headings in the current interface template. Open it for the latest instructions and examples.
Use the NAP template ↗A NAP is runtime-provided AND defines an API surface. A convention is napplet-agreed AND defines message semantics. Only runtime-provided API surfaces are NAPs.