codesyntax/plone-expert-developer
Overview
This skill provides expert guidance for Plone 6 backend and Volto (React) frontend development. It focuses on practical, reproducible workflows: generators, plone.api, plone.restapi, Volto blocks, and deployment patterns. Advice follows community standards and enforces Plone 6+ conventions.
How this skill works
I inspect your goal and map it to the appropriate generator workflow (uvx cookieplone, plonecli create/add) using mrbob.ini files to ensure non-interactive, repeatable scaffolding. For frontend work I default to Volto: create add-ons, blocks, schema, and schema enhancers, and wire services to plone.restapi. I enforce best practices like using plone.api, code formatters, behavior-first schema decisions, and clean git state before generation.
When to use it
- Starting a new Plone 6 project or add-on and you want a reproducible scaffold.
- Building or extending backend features: content types, behaviors, services, control panels, upgrade steps.
- Creating Volto add-ons, custom blocks, block variations, or schema enhancers.
- Exposing REST endpoints for Volto instead of browser views.
- Preparing deployment or CI for a Plone + Volto stack.
Best practices
- Always assume Plone 6+ with Python 3.x and default to Volto for the frontend.
- Use uvx cookieplone for new projects and plonecli with mrbob.ini for non-interactive generation.
- Keep git clean: commit or stash changes before running any plonecli add commands.
- Prefer existing behaviors over adding new schema fields; consult the Behavior Catalog first.
- Use plone.api for backend operations and run black, flake8, prettier, and eslint for code quality.
Example use cases
- Generate a new Volto-first Plone project with uvx cookieplone and automated options for CI and Ansible.
- Add a new Dexterity container type using plonecli add content_type with mrbob.ini variables and default to Container base class.
- Create a plone.restapi service via plonecli add restapi_service and consume it from a Volto add-on service.
- Build a Volto block with schema, View, and optional Edit + sidebar, then register it via applyConfig in the add-on index.
- Implement a behavior using plonecli add behavior and enable it on a content type instead of modifying schema directly.
FAQ
Yes, but Volto is the default. If you explicitly request Classic UI, I will provide Classic-specific generators and guidance (Diazo themes, browser views, viewlets, portlets).
Can I create generators interactively?
No. I require non-interactive generation using mrbob.ini files to ensure reproducibility and allow automation.