Repo Policy
Plugin Repository Policy
This document defines publish requirements for the website-hosted plugin repo.
Required release artifacts
Every published release must include:
- immutable ZIP package at
/repo/packages/<pluginId>/<version>.zip - immutable scan report at
/repo/reports/<pluginId>/<version>.json - manifest entry in
/repo/plugins.jsonwith:
- sha256
- entry signature
- status (active or revoked)
Required metadata
pluginId(lowercase slug)version(semver)tierminPBVersionchangelog
Required package files
manifest.jsonat package root
- id must match pluginId
- version must match release version
- lockfile required (
package-lock.json,pnpm-lock.yaml, oryarn.lock) package.jsonwithscripts.buildandscripts.test
Security scan gates (fail closed)
Publish is blocked unless all checks pass:
1. ZIP safety check (zip-slip, blocked extensions)
2. ClamAV malware scan
3. Policy scan (forbidden APIs / high-risk patterns)
4. Dependency/build/test checks in isolated temp workspace:
- npm ci
- npm audit --audit-level=high
- npm run build
- npm test
Any scanner error blocks publication.
Immutability and yanking
(pluginId, version)is immutable and cannot be overwritten.- Releases cannot be deleted from package/report storage.
- Yanking is supported by changing manifest entry status to
revoked.
Signing model
- Repository uses ed25519 signing keys generated server-side.
- Private key never leaves server storage.
/repo/plugins.jsonincludes signed metadata and a manifest signature.- Each release entry is signed.