Implements custom Kirby routes and content representations (.json/.xml/.rss), including redirects, sitemap endpoints, and URL pattern filtering. Use when building endpoints, redirects, or representation templates that change how URLs resolve.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add bnomei/kirby-mcp --skill kirby-routing-and-representations --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Kirby Routing And Representations?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/bnomei-kirby-routing-and-representations)More formats (shields.io, HTML) on the badges page.
---
name: kirby-routing-and-representations
description: Implements custom Kirby routes and content representations (.json/.xml/.rss), including redirects, sitemap endpoints, and URL pattern filtering. Use when building endpoints, redirects, or representation templates that change how URLs resolve.
---
# Kirby Routing and Representations
## KB entry points
- `kirby://kb/scenarios/13-custom-routes`
- `kirby://kb/scenarios/21-filtering-via-routes`
- `kirby://kb/scenarios/49-sitemap-xml-route`
- `kirby://kb/scenarios/78-trailing-slash-and-canonical-urls`
- `kirby://kb/scenarios/02-json-content-representation-ajax-load-more`
## Required inputs
- URL pattern and HTTP methods.
- Response type and content language behavior.
- Redirect or canonicalization rules.
## Decision guide
- Use content representations for page-backed JSON/XML/RSS.
- Use routes for non-page endpoints, redirects, or custom logic.
- Avoid greedy patterns that shadow representations.
## Pattern hint
- Put specific routes before catch-alls; avoid top-level `(:all)` when using representations.
## Canonical redirect example
```php
[
'pattern' => '(:any)/',
'action' => function ($path) {
return go('/' . trim($path, '/'), 301);
}
]
```
## Common pitfalls
- Route patterns that shadow `.json` or `.rss` representations.
- Expecting `kirby:kirby_render_page` to execute route logic.
## Workflow
1. Clarify the URL pattern, HTTP methods, response type, and language behavior.
2. Call `kirby:kirby_init` and read `kirby://roots` to locate config and template roots.
3. Read `kirby://config/routes` to understand current route configuration.
4. If runtime is available, call `kirby:kirby_routes_index` to see registered patterns; otherwise run `kirby:kirby_runtime_status` and `kirby:kirby_runtime_install` first.
5. Inspect existing templates/controllers to avoid collisions:
- `kirby:kirby_templates_index`
- `kirby:kirby_controllers_index`
6. For content representations, add `site/templates/<template>.<type>.php` and optional `site/controllers/<template>.<type>.php`.
7. For routes, add or adjust `routes` in `site/config/config.php` or a plugin. Avoid greedy patterns that shadow `.json`/`.rss` representations.
8. Validate output:
- use `kirby:kirby_render_page(contentType: json|xml|rss)` for representations
- manually hit route URLs for router behavior (render does not execute the router)
9. Search the KB with `kirby:kirby_search` (examples: "custom routes", "json content representation", "filtering via routes", "sitemap.xml", "trailing slash").
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!