# Developer guide — extending Dorfteich _Deutsche Fassung: [docs/de/developer/extending.md](../de/developer/extending.md)_ Two ways to make Dorfteich do more: write a **plugin** (no fork, no redeploy, safe by construction) or contribute to the **core**. Start with a plugin unless you need to change how the product itself works. ## Writing a plugin Read [`docs/architecture/plugin-architecture.md`](../architecture/plugin-architecture.md) once — it is the contract. The short version: A plugin is a ZIP with a `manifest.json`, a single ES-module bundle `plugin.js`, optional `styles.css`, `i18n/*.json`, and `assets/…`. It contributes one or more **extension points**: | Type | You build | Example | | -------------- | ------------------------------------------------------ | ---------------------- | | `sectionStyle` | named CSS styles for content sections (no code at all) | `section-styles-basic` | | `pageTool` | a read-only widget in the page-tools panel | `toc`, `page-index` | | `block` | a custom editor block with its own data and edit UI | `mermaid`, `drawio` | ### The sandbox — what your code can and cannot do Your `plugin.js` runs in an `