From redaxo-core
Explains REDAXO PHP CMS architecture including directory layout, request lifecycle, core classes like rex_addon, rex_path, rex_request, and addon conventions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/redaxo-core:redaxo-architectureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
REDAXO is a PHP CMS organized around a small core plus addons. Almost every feature lives in an addon – including `structure` (articles/categories), `mediapool` (media management), `users`, and `cronjob`.
REDAXO is a PHP CMS organized around a small core plus addons. Almost every feature lives in an addon – including structure (articles/categories), mediapool (media management), users, and cronjob.
redaxo/
├── src/
│ ├── core/ # Core classes (rex_*, never edit)
│ └── addons/
│ ├── structure/ # Articles & categories
│ ├── mediapool/ # Media library
│ ├── users/ # Backend user management
│ └── <your-addon>/ # Custom addons live here
├── data/
│ ├── addons/ # Addon-managed runtime data
│ ├── core/ # Core runtime data (config.yml lives here)
│ └── log/ # System logs
└── cache/ # Generated files; safe to delete
The user's project root usually contains redaxo/ plus assets/ (public mirror of addon assets) and a frontend directory (often public/ or root).
index.php boots rex (frontend) or redaxo/index.php boots the backend.config.yml and the package.yml of every installed addon.boot.php runs – this is where extension points get registered.OUTPUT_FILTER runs on the final HTML before it's sent.rex_addon::get('addon_name') – access addon instance, config, paths, versionrex_config::get('namespace', 'key', $default) / set() – persistent key-value configrex_path::addon('addon_name', 'sub/path') – absolute filesystem pathsrex_path::frontend('relative/path') – paths in the public frontendrex_url::backendController(['page' => 'addon/section']) – backend URLsrex_url::frontendController(['article_id' => 5]) – frontend URLs (use yrewrite if installed)rex_clang::getCurrentId() / rex_clang::getAll() – language handlingrex_request::get('key', 'string', '') / post() – type-safe inputrex_response::sendJson($data) – JSON responses for AJAXrex_logger::factory()->log('error', $msg) – write to system logrex::isBackend() / rex::isFrontend() / rex::getUser() – contextredaxo/src/addons/<name>/ during development; published addons get distributed via the REDAXO Installer or redaxo.org.assets/ folder. They're symlinked/copied to assets/addons/<name>/ on install.rex_path::* instead of hardcoding __DIR__ . '/../...'.rex_url::* so the system stays portable across installations and subdirectory deployments.rex::isBackend() checks in boot.php – many extension points fire in both contexts.$_GET / $_POST directly instead of rex_request – loses type safety and the built-in CSRF token handling.1 = German). Use rex_clang::getCurrent() and rex_clang::getCurrentId().Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub friendsofredaxo/claude-marketplace --plugin redaxo-core