Claude-skill-registry kirby-collections-and-navigation
Builds Kirby listings, pagination, search, filtering/sorting/grouping, and navigation menus. Use when implementing collection logic in templates/controllers/snippets.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/kirby-collections-and-navigation" ~/.claude/skills/majiayu000-claude-skill-registry-kirby-collections-and-navigation && rm -rf "$T"
manifest:
skills/data/kirby-collections-and-navigation/SKILL.mdsource content
Kirby Collections and Navigation
KB entry points
kirby://kb/scenarios/07-paginationkirby://kb/scenarios/08-search-pagekirby://kb/scenarios/09-filtering-with-tagskirby://kb/scenarios/11-navigation-menuskirby://kb/scenarios/23-collections-filtering
Required inputs
- Collection source (page/section/template or ids).
- Filters, sort order, and pagination size.
- Target templates/snippets and UI expectations.
Default pattern
- Keep collection building in the controller; return a single
collection anditems
.pagination - Render items via a snippet to avoid repeated template logic.
- Provide empty-state and active-navigation UI.
- Default sort: use
when the field exists; otherwise fall back todate desc
.title asc
Example
Controller:
return function ($page) { $items = $page->children()->listed()->sortBy('date', 'desc')->paginate(10); return [ 'items' => $items, 'pagination' => $items->pagination(), ]; };
Snippet:
<?php if ($items->isEmpty()): ?> <p>No items yet.</p> <?php else: ?> <?php foreach ($items as $item): ?> <!-- render item --> <?php endforeach ?> <?php snippet('pagination', ['pagination' => $pagination]) ?> <?php endif ?>
Output checklist
- Ensure pagination URLs preserve filters and tags.
- Render empty states without PHP notices.
- Confirm active navigation matches the current page.
Common pitfalls
- Dropping query params or tag filters on pagination links.
- Implementing heavy collection logic in templates instead of controllers.
Workflow
- Clarify collection scope (site vs section), filters, sort order, and UI (pagination, tag filters, menu style).
- Call
and readkirby:kirby_init
.kirby://roots - Inspect existing templates/controllers/snippets to reuse patterns:
kirby:kirby_templates_indexkirby:kirby_controllers_indexkirby:kirby_snippets_index
- Prefer controllers for collection logic; keep templates thin.
- Search the KB with
for task playbooks (examples: "pagination", "search page", "filtering with tags", "navigation menus", "collections filtering").kirby:kirby_search - Implement or adjust collection queries; add snippets for repeated UI.
- Verify rendering and pagination URLs with
.kirby:kirby_render_page(noCache=true)