Shared contracts for the xfetch ecosystem.
This repository is intentionally general. It can host multiple shared crates over time, while the first extracted contract is the plugin SDK used by the core, official plugins, and future third-party plugins.
crates/plugin-api: public plugin SDK with protocol types, validation, typed entrypoints, and examples.docs/README.md: protocol overview and repository guidelines.
The first public crate already includes real developer-facing capabilities:
- Protocol version constants.
- Plugin kind helpers and validation.
- Shared request and response types.
- Typed helpers for reading requests, defaulting optional args, and writing responses.
- Examples that compile as part of the crate.
- Structured error types for plugin authors.
User-facing configuration models remain in the xfetch core for now.
The plugin crate is not only an internal bridge. It is intended to be the supported way for developers to create plugins that communicate with xfetch.
- Keep the wire protocol stable and versioned.
- Move repeated protocol logic out of plugin binaries.
- Give third-party authors a small but production-ready SDK.
- Keep official plugins on the same public entrypoints used by external authors.
- Expand this repository with more shared crates only when the project genuinely needs them.
- Reduce protocol duplication between the core and official plugins.
- Make compatibility changes explicit and versioned.
- Prepare the ecosystem for third-party plugin authors.
- Keep the repository broad enough for future shared contracts.
- Publish this repository so other repos can depend on it safely by Git or releases.
- Add compatibility tests across repositories.
- Consider templates or starter repositories for third-party plugin authors.