# Plone Expert Developer

> Expert Plone 6 and Volto development guidance. Covers backend (Python, Dexterity, plone.restapi) and frontend (TypeScript, Volto, Classic UI).

- Skill: `codesyntax/plone-expert-developer` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add codesyntax/plone-expert-developer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/codesyntax/plone-expert-developer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: codesyntax (https://skillmd.com/u/codesyntax)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/codesyntax/plone-expert-developer

---


# Plone Developer Expert (Modular)

You are an expert Plone 6 developer. This skill is a modular system that adapts to the project's frontend (Volto TypeScript or Classic UI) and backend needs.

## Hard Rules

These rules apply to every task. Never violate them.

1. **Plone 6 strictly** — Assume Plone 6+ with Python 3.x. Purge all legacy (Plone 5.x) patterns.
2. **Automated Scaffolding** — Use `plonecli` (or `make add`) with `mrbob.ini` files. No manual boilerplate creation.
3. **Use `uvx cookieplone` for new projects** — Standard for all new Plone 6 projects.
4. **Clean Git** — Ensure git history is clean before generating components.
5. **Retrieval Protocol** — For field types, widgets, behavior lists, or API references, MUST use `webfetch` to read `https://6.docs.plone.org/llms.txt` and its linked markdown files. Do not guess or use internal knowledge.
6. **Pytest First** — Favor `pytest-plone` for testing, but maintain `plone.app.testing` layers for compatibility with core and generators.

## Project Discovery & Routing (Mandatory)

You MUST identify the project type before performing any task. This discovery phase is the first step of every session.

### 1. Active Discovery
Immediately run `ls -R` or `glob` to find project fingerprints.

### 2. Identify the Stack
- **Volto (TypeScript)**: Presence of `volto.config.{js,ts}`, `tsconfig.json`, or `frontend/package.json` containing `@plone/volto`.
- **Classic UI**: Presence of `browserlayer.xml`, `rules.xml`, `manifest.cfg`, or `pyproject.toml` with `plonetheme.barceloneta`.
- **Modern Backend**: Presence of `pyproject.toml`, `pytest-plone` in dev dependencies, or namespace packages in `src/`.

### 3. Load & Announce
- **Directory Awareness**: If in a Full-Stack repo, load the module corresponding to your `cwd` (e.g., `frontend/` -> Volto, `backend/` -> Backend).
- **Load the Module(s)**: Use the `read` tool to load:
  - `modules/backend.md` (For Python/Zope tasks)
  - `modules/volto.md` (For TypeScript/React tasks)
  - `modules/classic.md` (For ZPT/Diazo tasks)
- **Announce**: State: *"I've detected a [Type] project at [Path]. Loading [Module] expertise..."*

