Metadata-Version: 2.4
Name: xyberos-plugin-validator
Version: 0.1.0
Summary: Static + live-kernel validation for Xyberos plugins (structure, contract, config, tests, docs, compatibility).
Author: Xyberos Contributors
License: Apache-2.0
Keywords: xyberos,ai,plugin,validator,ci
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: xyberos>=1.0
Requires-Dist: xyberos-plugin-sdk>=0.1
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"

# xyberos-plugin-validator

Static + **live-kernel** validation for Xyberos plugins.

`xyberos plugin validate` (from `xyberos-cli`) reports, per check:
`structure`, `contract`, `configuration`, `testing`, `documentation`,
`compatibility` — then ends with `Result: PASS` or `Result: FAIL`.

## Checks

- **structure** — the expected files exist (`pyproject.toml`, package dir, tests)
- **contract** — the exported plugin is a `Plugin`, has a name, is concrete,
  and implements the abstract members of its contract
- **configuration** — a `xyberos.plugins` entry point is declared
- **testing** — test files exist (and can run, when invoked with `--run-tests`)
- **documentation** — a `README.md` exists
- **compatibility** — the plugin imports and **registers/unregisters against a
  real `create_app()` in an isolated subprocess** (live-kernel check)

The live check runs in a `subprocess` so validation never mutates the caller's
kernel or process state.

```python
from xyberos_plugin_validator import validate_plugin

report = validate_plugin(".")
print(report.render())
print("PASS" if report.passed else "FAIL")
```
