Add an Engine compressor
Implement the compressor underengine/compressors and register it only after selection behavior is defined. See Compression Engine for how detection and safety classes work.
Required properties:
- Bounded parser and deterministic output
- Declared safety class
- Explicit automatic or forced-only selection
- Original-byte fallback for malformed or unsupported input
- Smaller-output gate
- CCR integration for lossy output (see Context recovery)
- Tests for recovery, boundary, failure, and non-winning input
- Fixture-backed performance claim, if one is published
Add a provider adapter
A provider adapter belongs in the local proxy provider package. Keep transport shape, authentication, streaming, usage parsing, and capability rules inside the adapter instead of scattering provider-name branches through the runtime.1
Routes
Document routes and the default public endpoint.
2
Credentials
Define credential precedence without secret logging.
3
Streaming and errors
Add streaming and error pass-through tests.
4
SSRF
Apply SSRF validation for configurable endpoints.
5
Usage
Parse provider usage with unknown-field tolerance.
6
Capabilities
Declare explicit cache, count, image, and tool capability data.
7
Pricing
Fall back to zero plus
unpriced for unknown pricing.8
Record mode
Add a record-mode byte-equivalence test.
Add an agent profile
Profiles live underagents and compile into CLI artifacts. Choose one supported wire protocol and injection method, then declare the executable, endpoint templates, extensions, and tested upstream version. The compiler rejects unsafe paths and unknown fields; reserved commands and unapproved environment templates are also rejected. See Agent wrapping.
Profile proof should include:
- Compiled artifact matches source
- CLI launches the exact executable and preserves arguments
- Record mode request bytes match the unwrapped request
- Configured provider route receives the expected protocol
- Hook or plugin install and removal are reversible
- Unsupported upstream version produces a useful error
Add an SDK recipe
Recipes live underintegrations. Keep them small and executable. A recipe should show the endpoint, provider credential behavior, recovery integration where available, and the record-mode escape hatch.
Do not copy SDK source into a recipe. Link public SDK documentation for provider semantics that change frequently.
Add a schema or SDK field
Contract changes begin inpackages/shared/contracts. Regenerate derived artifacts, then update the TypeScript and Python SDKs together. Add round-trip and rejection tests for both languages. See SDKs and packages.
Use additive fields when compatible. Do not make clients accept an unknown enum as a successful state when safe behavior is rejection.
Add a grader
Add the type, schema, TypeScript implementation, fixtures, and fail-closed unknown handling. Output must identify the method and reproducible inputs; a grader pass is scoped evidence rather than a savings label. See Accounting and evidence.Update the provider catalog
A catalog change needs an authoritative public source, effective date, unit normalization, generator run, and fixture updates. Preserve old dated records when needed for historical calculations. Never infer a missing price from a nearby model name.Add a skill, hook, or plugin
- Skill: state behavior in plain language; avoid unsupported reduction or quality claims.
- Hook: document the event, changed files, permissions, failure behavior, and removal.
- Plugin: minimize host permissions and pin the tested host version.
Documentation required with code
Update:- The nearest package README
- The relevant page in this manual
- CLI help for public commands
- The configuration reference for new keys
- The security or evidence page when a trust boundary changes
- The changelog or release note according to the package process