# Plugin SDKs

- [Plugins configuration](https://docs-lunar.earthly.dev/plugin-sdks/plugins.md): Overview of the three Lunar plugin types — catalogers, collectors, and policies — that extend the platform's capabilities.
- [lunar-cataloger.yml](https://docs-lunar.earthly.dev/plugin-sdks/plugins/cataloger-plugins.md): Reference for lunar-cataloger.yml, the manifest that defines a cataloger plugin used to sync software catalog information from external systems.
- [lunar-collector.yml](https://docs-lunar.earthly.dev/plugin-sdks/plugins/collector-plugins.md): Reference for lunar-collector.yml, the manifest that defines a collector plugin used to gather live information about components from various sources.
- [lunar-policy.yml](https://docs-lunar.earthly.dev/plugin-sdks/plugins/policy-plugins.md): Reference for lunar-policy.yml, the manifest that defines a policy plugin used to evaluate the health of components against rules.
- [Bash SDK](https://docs-lunar.earthly.dev/plugin-sdks/bash-sdk.md): Overview of the Lunar Bash SDK for building custom catalogers and collectors with shell scripts.
- [Installing dependencies](https://docs-lunar.earthly.dev/plugin-sdks/bash-sdk/dependencies.md): How to install dependencies for Bash collectors and catalogers using a custom Docker image or an install.sh script.
- [Cataloger](https://docs-lunar.earthly.dev/plugin-sdks/bash-sdk/cataloger.md): Write Lunar catalogers in Bash — environment variables and the lunar catalog CLI commands for saving catalog data.
- [Collector](https://docs-lunar.earthly.dev/plugin-sdks/bash-sdk/collector.md): Write Lunar collectors in Bash — environment variables and lunar CLI subcommands for emitting SDLC metadata from a collector script.
- [Python SDK](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk.md): Overview of Lunar's Python SDK for writing custom Lunar policies (with collector support coming soon).
- [Installing dependencies](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/dependencies.md): How to install Python dependencies for Lunar policies, using a custom Docker image or native runtime execution.
- [Collector](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/collector.md): Placeholder for the upcoming Python Collector SDK used to gather component metadata in Lunar.
- [Policy](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy.md): Write Lunar policies in Python with the lunar\_policy package — load component metadata, make assertions, and handle pending data.
- [Check](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy/check.md): Reference for the Check class in Lunar's Python Policy SDK — the fluent API for asserting on component metadata and tracking results.
- [CheckStatus](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy/check-status.md): Reference for the CheckStatus enum used to mark Lunar policy outcomes as PASS, FAIL, PENDING, ERROR, or SKIPPED.
- [Node](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy/node.md): Reference for the Node class in Lunar's Python Policy SDK — used to navigate, query, and iterate over component JSON data.
- [NoDataError](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy/no-data-error.md): Reference for the NoDataError exception that signals required component data is not yet collected, marking a Lunar check as pending.
- [SkippedError](https://docs-lunar.earthly.dev/plugin-sdks/python-sdk/policy/skipped-error.md): Reference for the SkippedError exception used to skip a Lunar check when it does not apply to the current component.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs-lunar.earthly.dev/plugin-sdks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
