RegistryCollection

Collection

{% collection %} queries the entity registry for many entities and projects them into a layout. It's the plural counterpart to {% ref %} (one entity → a link) and {% expand %} (one entity → inlined content): where those consume a single entity, collection selects a set — by type, with a field:value filter, sorted/grouped/limited — and renders each item.

It's generic over entity type. Anything in the registry works the same way — plan work items, page entities, and any type a plugin registers — so a hand-maintained list that mirrors structured data becomes a live query instead.

{% collection type="work" filter="status:ready" sort="priority" limit=5 /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="work">
  <meta data-field="collection-filter" content="status:ready">
  <meta data-field="collection-sort" content="priority">
  <meta data-field="collection-group" content="">
  <meta data-field="collection-limit" content="5">
  <meta data-field="collection-fields" content="">
  <meta data-field="collection-layout" content="list">
  <meta data-field="collection-group-display" content="headings">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <div data-name="items"></div>
</section>
Learning Package Pipeline Hooks
Create @refrakt-md/vite plugin — Level 1 static transform
<section class="rf-collection" data-type="work" data-layout="list" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <div class="rf-collection__item" data-entity-id="WORK-101">
      <a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
    </div>
    <div class="rf-collection__item" data-entity-id="WORK-102">
      <a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
    </div>
    <div class="rf-collection__item" data-entity-id="RF-142">
      <a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
    </div>
    <div class="rf-collection__item" data-entity-id="WORK-055">
      <span class="rf-collection__title">Learning Package Pipeline Hooks</span>
    </div>
    <div class="rf-collection__item" data-entity-id="WORK-094">
      <span class="rf-collection__title">Create @refrakt-md/vite plugin — Level 1 static transform</span>
    </div>
  </div>
</section>

That renders every registered work entity whose status is ready, highest priority first (capped at five for this preview).

Selecting entities — type + filter

type is the entity type (comma-separated for several: type="work,bug"). filter narrows the set with space-separated field:value clauses.

{% collection type="work" filter="status:ready priority:high priority:critical" /%}

The field-match grammar

This is the canonical reference for the field:value syntax — the same grammar and parser used by collection's filter, backlog's filter, and entityRoutes. The operator is chosen by the shape of the value, so the same string works in a markdoc attribute and in JSON config:

FormExampleMatches
exactstatus:readythe field equals ready
globurl:/blog/** is any run of characters, anchored full-match (prefix, suffix, or infix)
regexid:/^SPEC-\d+$/a value wrapped in slashes (optional trailing flags); not auto-anchored

Rules:

  • Same field repeated → OR, different fields → AND: status:ready status:review priority:high means (ready or review) and high.
  • Quote values with spaces: title:"Getting Started".
  • Matching is case-sensitive.
  • A field resolves top-level first (id, type, sourceFile) then from the entity's data; url is an alias for the entity's resolved URL (sourceUrl, falling back to data.url). That's why url:/blog/* works — folder membership is just a URL prefix match, no special "folder" concept.
  • Array-valued fields (e.g. tags) match on membership — any element matching the clause counts.
  • A malformed clause (no colon, empty field) is ignored with a build warning. An empty filter matches everything.

Sort, group, limit

{% collection type="work" sort="priority" group="status" limit=20 /%}
  • sort — a field name. Prefix - (or suffix -desc) for descending: sort="-date" or sort="date-desc". Numeric values sort numerically, otherwise lexically (ISO dates sort chronologically as strings).
  • group — a field name; items are grouped under a heading per distinct value (empty values group under (none)).
  • group-display — how groups are presented: headings (default) or accordion. See Group display.
  • limit — a positive integer cap, applied after sort. With group, the cap is on the total item count.

Group display — headings or accordion

By default each group is a heading followed by its items. Set group-display="accordion" to render groups as collapsible native <details> panels instead — styled identically to the accordion rune, collapsed by default, with the group's item count beside its label:

{% collection type="work" group="status" group-display="accordion" /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="work">
  <meta data-field="collection-filter" content="">
  <meta data-field="collection-sort" content="">
  <meta data-field="collection-group" content="status">
  <meta data-field="collection-limit" content="">
  <meta data-field="collection-fields" content="">
  <meta data-field="collection-layout" content="list">
  <meta data-field="collection-group-display" content="accordion">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <div data-name="items"></div>
</section>
blocked1
in-progress4
Editor Package Awareness
Create @refrakt-md/astro adapter package
review4
Ship the client behaviors bundle in the html scaffold
Rune compositions docs category
Surface-model showcase gallery
ready30
Create-Refrakt Project Type Defaults
CSS Fallback Resolution for Third-Party Packages
Learning Package Pipeline Hooks
Editor Background Entity Registry
Editor Registry-Powered Autocomplete
Pipeline Incremental Build Optimization
Create @refrakt-md/vite plugin — Level 1 static transform
Vite plugin — virtual CSS module and tree-shaking
Vite plugin — dev server HMR
Vite plugin — Level 2 cross-page pipeline
Vite plugin — behavior init helper export
Migrate community package postTransform uses to declarative config
Update inspect and contracts tooling for structure slots features
CSS tree-shake: include deferred-body rune contents in the usage analyzer
Remove the legacy data-field engine machinery (Tier 2)
Rebuild index composability section as a bento showcase
group-order attribute on collection, aggregate, relationships
Multi-site support in refrakt edit
Registry-aware block preview in the editor
Close editHints coverage gaps across rune packages
Surface pipeline warnings in the editor
Relocate bento and bento-cell from marketing to core runes
data rune preprocessor + CSV/JSON adapters
elevation depth-ladder axis
prominence axis (page-section family)
Lumina: map the axes + retire the static surface groups
pending17
Build stat Rune
Build math Rune
Build concept Rune
Build exercise Rune
Build quiz Rune
Build glossary Rune
Build prerequisite Rune
Build objective Rune
Build partner Rune
Build job Rune
Build album Rune
Build artist Rune
Build video Rune
Visual-regression harness
Skeleton/skin split — spike
Migration + docs for the surface axes
Demonstrate the axes: full-bleed hero recipe / playlist
draft5
Chart renderer provider selection and additional providers
Schema-declared achieved status for open-world rollups
Responsive per-cell bento spans
Generate theme scheme stylesheet from tokens.ts (retire hand-authored dark.css + tint.css palette copies)
done368
Official Rune Packages — Breakout Plan
Batch 3: Convert Runes Using sections Resolver
Editor Visual Polish Plan
Build gallery Rune
Build track and playlist Runes
Build audio Rune
Add Entity Registration to @refrakt-md/plan
Update Plan Documents to Use Xref Syntax
Build backlog Rune
Build decision-log Rune
Add knownSections to Plan Rune Content Models
Milestone Auto-Backlog and Checklist Progress
Add ref as Alias for xref
CLI Plugin Discovery Architecture
Plan File Scanner Library
plan init and plan create Commands
plan update Command
plan next Command
plan status Command
plan validate Command
Plan Dashboard Theme
plan serve and plan build Commands
Update CLAUDE.md files for plan CLI usage
Define planLayout in @refrakt-md/transform
Build nav region builder for plan site
Refactor plan render pipeline to use @refrakt-md/html
Add syntax highlighting to plan site
Add client behaviors to plan site
Config-aware theme resolution for plan site
Token bridging — update plan CSS to use --rf-* tokens
Collapsible status groups in plan sidebar
Sidebar search and filter bar for plan site
Enhanced plan dashboard with progress and milestone scoping
Tag-based cross-cutting view pages for plan site
Keyboard navigation for plan site
Dependency visualization for plan site
Converge plan site renderer with shared layout engine
Storytelling Package Pipeline Hooks
Metadata Dimensions on StructureEntry
Annotate Rune Configs with Metadata Dimensions
Lumina Generic Metadata CSS
Inspector Metadata Audit
Density Dimension
Section Anatomy Dimension
Interactive State Dimension
Media Slots Dimension
Lumina Universal Dimension CSS
Inspector Dimensions Audit
Universal Checklist Styling
Universal Sequential Item Styling
Lumina Per-Rune Redundant CSS Cleanup
Add --resolve and --resolve-file flags to plan update
Add resolution validation checks to plan validate
Display resolution metadata in plan status and plan serve
Update plan init CLAUDE.md template with resolution guidance
Extract Shared Layout Meta Tag Utility
Extract Shared Media Image Unwrap Utility
BEM Modifier Hygiene for Storytelling Runes
Align Playlist Transform to Standard Structure
Refactor Realm and Faction Transforms to Use Shared Utilities
Consolidate Character Transform to Single Code Path
Shared Split Layout CSS with Two-Mode Mobile Collapse
Create Shared Git Timestamp Utility
Inject $file.created and $file.modified Variables into Content Pipeline
Add Timestamp Attributes to Plan Rune Schemas
Consolidate Plan Scanner with Shared Git Timestamp Utility
Add Sitemap lastmod Support Using File Timestamps
Extract shared utilities from @refrakt-md/svelte to @refrakt-md/transform
Create @refrakt-md/nuxt adapter package
Create @refrakt-md/next adapter package
Create @refrakt-md/eleventy adapter package
Add multi-framework support to create-refrakt
Migrate simple core runes from Model to createContentModelSchema
Migrate simple community runes from Model to createContentModelSchema
Remove Type system — delete schema classes, registries, and old signature
Add value mapping to modifier config
Replace hardcoded density contexts with configurable childDensity
Implement named slots with ordering for structure entries
Add repeated element generation to structure entries
Implement element projection (hide, group, relocate)
Implement framework-agnostic extraction logic for component interface
Validate property and ref name uniqueness in createComponentRenderable
Update Svelte renderer to pass props and snippets to component overrides
Export generic type interfaces for rune component overrides
Add component interface view to refrakt inspect
Document framework-native component override interface
Create @refrakt-md/react renderer with ADR-008 component interface
Create @refrakt-md/vue renderer with ADR-008 component interface
Add Astro native component override support with ADR-008 named slots
Parse Resolution sections in the plan scanner
Fix plan schema bugs: pending status, severity mismatch, tag filtering
Add source, milestone, and complexity validation to plan validate
knownSections scanner integration: section-scoped refs and validation
Support attribute clearing in plan CLI update command
Update site docs and plan CLAUDE.md for plan package hardening changes
Convert plan content to machine-readable refs and adopt knownSections conventions
Mobile plan section navigation and desktop TOC filtering
Event model types and per-entity git history extraction
Batch extraction and history caching
CLI plan history single-entity mode
CLI plan history global mode and filters
plan-history site rune — tag definition and pipeline hooks
plan-history CSS rendering
Tab layout for plan entity pages
Split plan entity header into primary badges, title, secondary badges
Make plan init tool-agnostic
Rename plan directories to plural form
Extract pure scanner functions into scanner-core module
Extract pure diffing functions into diff module
Extract relationship builder into relationships module
Extract entity card builder and sentiments into cards module
Add edge-safe entry points to package.json exports
Promote shared rune-reference infrastructure to packages/runes
Add content-model renderer for agent-facing rune docs
Add attribute preset registry for tier-aware reference output
Migrate legacy Model-class runes and audit custom-pattern descriptions
Rename RuneInfo.prompt → authoringHints and surface in reference output
Drop the reinterprets field entirely
Build refrakt reference CLI commands
Generate AGENTS.md during create-refrakt scaffolding
Add --type plan to create-refrakt
Adopt {ID}-{slug}.md filename convention for plan items
Unified RefraktConfig types, loader, and JSON Schema
Add discoverPlugins() helper to @refrakt-md/cli
Extend CliPluginCommand with inputSchema/outputSchema/mcpHandler
Refactor runPlugin dispatch to use discoverPlugins
refrakt --help lists installed plugins + new refrakt plugins list command
Add --site flag to site-scoped CLI commands
Lint cli-plugin shape in refrakt package validate
Framework adapters accept site option
Add inputSchema + mcpHandler to plan commands
Plan package consumes unified config (init scaffolds, serve/build read paths)
Scaffold @refrakt-md/mcp package with stdio entry, auto-detect, and core tools
MCP plugin tools (via discovery) and resources
Add refrakt config migrate command
Migrate this repo's site config to the unified root config
Update create-refrakt scaffolds for the unified config shape
Site docs — configuration section
Site docs — MCP + plugin authoring update + CLAUDE.md pointer
v0.11.0 config follow-ups
Security policy for transform pipeline (sandbox hardening)
Nav layout foundations — header menubar and footer columns
Collapsible sidebar nav with URL-aware auto-open
Cards nav layout with frontmatter enrichment
Menubar interactive behavior — dropdowns, hamburger, keyboard
Pagination rune for sequential page navigation
Site reference docs for new nav layouts and the pagination rune
Adopt new nav layouts and pagination across refrakt.md
Typed token contract in @refrakt-md/types
Highlighter token rename: --shiki-* → --rf-syntax-*
Config-driven token stylesheet generation
Dark mode as PartialTokenContract overlay
theme.colorScheme initial state field
Preset loading and merge order
Migrate existing Lumina tokens to the new contract
Author the canonical prism SVG asset
Favicon and app icon set
Replace brand mark on the refrakt site
Update TintTokens / TintDefinition types
mergeThemeConfig extends support + remove deprecated RefraktConfig.tints
Engine + tint.css rename to new --tint-* property names
Migrate Lumina and plugin tint configs
Document the tint migration recipe
Neutral default body palette (light + dark)
Syntax highlighting palette (five hues + comment + punctuation)
Status palette (4 sentiments × 3 tokens × 2 modes)
Configure Google Fonts loading
Tideline preset module
Niwaki preset module
Refrakt site adopts presets: ["niwaki"]
create-refrakt template + post-init preset surfaces
Preset documentation pages with design-plugin runes
Site screenshots refreshed against new appearance
v0.14.0 migration note for palette and fonts
Add theme toggle to Lumina
Cascade resolution function in @refrakt-md/content
Frontmatter schema extension (tint, tint-mode, tint-lock)
Renderer integration + pre-paint script
Refrakt site adopts the tint cascade
/docs/themes/tint-cascade documentation page
Extend SyntaxTokens interface with optional roles
Extended Shiki css-variables theme in @refrakt-md/highlight
CSS generator fallback chains for optional syntax roles
Nord preset module
Nord preset documentation page
Cross-reference SPEC-056 from SPEC-048
Scoped tint projection from preset modules
Dracula preset module + doc page
Solarized preset module + doc page
Catppuccin preset module + doc page
Tokyo Night preset module + doc page
One Dark preset module + doc page
Gruvbox preset module + doc page
Themes catalog wrap-up
Build-time slug resolution + error system
Build-time active state + Lumina CSS
Site nav migration + authoring docs
{% badge %} core inline rune
Description / icon enrichment generalised across auto layouts
Menubar enrichment, column flow, and strip layout — engine + CSS + behavior
Rich-dropdown authoring docs + site demo
Docs IA split: separate author handbook from developer ("extend") handbook
Extract composeSiteTokensCss into @refrakt-md/transform/node
Wire site-tokens CSS through the Astro adapter
Wire site-tokens CSS through the Nuxt adapter
Surface site-tokens CSS in Eleventy, Next.js, and HTML adapters
Thread SeoToHtmlOptions through every adapter's SEO surface
Replace template-astro/src/setup.ts with createRefraktLoader
CSS tree-shaking across non-SvelteKit adapters
Shared pipeline-stats output across adapters
Surface security and variables options on non-SvelteKit adapters
Content HMR for non-SvelteKit Vite adapters and Eleventy
Page variables and $file.path
File-roots mechanism
Plan plugin: unconditional scan, entity registration, fileRoots opt-in
XrefPattern config types, compilation, and validation
Decoupled entity-lookup/URL-resolution chain; per-segment encoding; data-target-type propagation
Shared lang-map module in @refrakt-md/runes
Snippet rune
EntityRegistration.scope: 'page' | 'site' field
Drawer rune (schema, transform, CSS)
Drawer behaviors (progressive enhancement, <dialog>, shortcut, URL hash sync)
Generic data-outline-scope walkers (TOC isolation + heading-ID namespacing)
Expand rune (resolver, extraction, level= demotion, canonical-link affordance)
Shared field-match parser
Deferred-body capture for per-entity templates
Collection rune: query engine and built-in layouts
Collection heading-delimited table columns
Shared markdoc formatter functions
card rune (generic content card)
contributePages pipeline phase
entityRoutes config-rules adapter
embed() embeddability contract
Plan entity embeddability (sourceFile + extract)
create-refrakt plan-site scaffold
refrakt plan site dogfood
Deprecate plan build and serve commands
Extract shared collection render and sort/group helpers
Relationship graph in the entity registry
Domain-aware (type, field) ordering for collection sort and group
Promote humanize to a public shared formatter
Generic relationships rune
Plan plugin: contribute edges and ordering, remove duplicated graph and sort/group
Plan-site entity render templates: expand + relationships + plan-history
Milestone page via collection; render progress via the generic progress rune
Remove plan postProcess injection (milestone backlog + entity tabs)
Thread plan ordering override into collection; delete filter.ts sort/group
Collapse backlog, decision-log, and plan-activity onto collection (thin sugar)
Generic progress rune
Collection/relationships body zones (preamble/template/fallback) and empty state
Theme-toggle layout chrome + behavior
Lumina theme-toggle styling (identical look)
SvelteKit adapter no-flash theme plumbing
Remove the Svelte-only ThemeToggle component path
Extend theme plumbing + toggle to the remaining adapters
Aggregate rune — schema, post-process resolver, tests
Lumina styling for the aggregate rune
Decompose plan-progress as sugar over aggregate
Document the aggregate rune on the site
Drawer enhancements — footer slot, always-visible chrome
Site config — repoUrl + repoBranch for GitHub source links
Drawer hoist mechanism for the shared preview attribute
file-ref rune — path-based file references with optional drawer preview
xref preview="drawer" — mention an entity in prose, expand on demand
Document file-ref, the shared preview attribute, and the drawer footer slot
Fence-level annotations: line numbers, line highlight, and source-based labels for codegroup/diff
Engine + layout primitives + composable runes + Lumina chip-universal
Plan plugin migration to metaFields + zones
Storytelling plugin migration to metaFields + zones
Learning plugin migration to metaFields + zones
Docs plugin migration to metaFields + zones
Places plugin migration to metaFields + zones
Media plugin migration to metaFields + zones
Core Budget rune migration to metaFields + zones
Remove legacy slots + structure shim from engine
Engine: block-and-layout projection model
bar layout, intrinsic field shape, code metaType
Migrate plan package to blocks/layout
Migrate learning package to blocks/layout
Migrate docs package to blocks/layout (api proof)
Migrate remaining rune packages to blocks/layout
Remove legacy placement fields; finalize contract + docs
Reserved fields attribute + schema dual-emit
Engine reads the fields attribute (dual-read)
Drop data-field metas; delete the side-channel cruft
Recursive layout assembly engine
Flatten rune transforms to flat-emit + declarative grouping
Move semantic derivation out of postTransform (budget totals)
Surface grouped skeleton in contracts; deprecate projection.group/relocate
Migrate pre-engine field consumers to the fields bag
Untangle schema.org SEO metas from the data channel
Stabilize the plan-site dogfood test under parallel load
Drop dual-emitted data-field metas from rune output (Tier 1)
Chart seam: semantic table IR + rf-chart web component (svg only)
Move structural building out of postTransform into rune transforms (embed/diagram/sandbox/mockup/comparison)
Audit and rationalize rune context modifiers
Enforce parent nesting at build time
Composability authoring contract + CLI coverage audit
Media-zone guest adaptation (any visual rune sits cleanly in a media zone)
Token hygiene: phantom-token reconciliation + vocabulary cleanup
Dark-mode token parity audit
Modernize plan card-sugars to compose with the bar rune
Expose group metadata in collection item templates
Bento cell adopts card's zone contract; bento becomes a grid primitive
Explicit bento-cell authoring
Bento sizing model, size-derived media placement, and link tiles
Aggregate chart layout
Theme-aware global chrome: selection, scrollbars, color-scheme
Focus-visible and reduced-motion consistency
Chart theming contract and SVG reference implementation
Bento levels — heading→footprint ladder
Per-group sentiment projection in aggregate (colour plan-progress badges)
Engine config variants: RuneConfig.variants type + axis validation
Per-instance variant resolution and merge over base config
Per-variant structure contracts and inspect variant selection
Migrate card/bento-cell to flat-slot model; feature grid/stack + cover variants
Universal elevation attribute backed by a --rf-shadow-* token scale
frames preset registry + frame attribute and inline facet overrides
frameTarget routing + host-owned clip + shared frame CSS layer
Collapse showcase into the frame model with deprecated aliases + docs
Tint-tracking inset surface: --rf-surface-inset-shift token + use-site color-mix
substrate pattern attribute: engine enum + shared base gradient stylesheet
substrateTarget routing + build validation + surfaces theme-authoring docs
bg gradient fill: inline facets + structured BgPresetDefinition.gradient
Formalize the bg raw-CSS escape hatch + project-config backgrounds merge
Structured overlay/scrim facets + raw-string overlay deprecation path
Soft-lint raw CSS covered by structured facets + bg reference docs
media-position=cover layout + height authority (as a config variant)
content-place 2-axis logical overlay anchor + orientation-adaptive auto
Default cover scrim bound to content-place
Card intrinsic height/aspect knob for bg-only cards + card docs
Media-guest interaction model: presentational default + capability flag + fallbacks
href demotion of media guests + cover backdrop pointer-events
Interaction-posture build warnings + posture reference docs
Sandbox lazy/poster activation
three.js sandbox composition — a live program as a media guest
Frontmatter indexing on the page entity
Typed page entities
Rune-page metadata backfill
Generated rune catalogue + index stats
Rune-doc drift guardrail
Data-bound sandbox core
3D sitemap showcase
Plan relationship-graph showcase
Generic section rune (eyebrow/headline/blurb preamble + body)
Hero as a cover host
Cover guest fill and sandbox fill height mode
Build warning for non-eager sandbox in a cover media zone
Prism scene — the niwaki-refraction hero backdrop
Docs — hero cover reference and animated prism background showcase
Nested-density title sizing — full-density runes in compact hosts
Typography token contract
Lumina typography refactor onto tokens
Generate Lumina token CSS from tokens.ts
Gallery generator — rune subject
Gallery generator — layout fixtures
Fixture format, loader & generated manifest
Complete the standardised fixture corpus
AI write mode draws fixtures as few-shot exemplars
Fixture validation in CI
Fixture-authoring docs
Gallery: bundle behaviors so interactive/lifecycle runes render
Image-src scheme registry + resolver hook
icon: image-src resolver
placeholder: image-src resolver
Migrate fixtures to placeholder: (drop the base64-PNG interim)
Image-scheme authoring docs
<section class="rf-collection" data-type="work" data-layout="list" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <div class="rf-accordion">
      <details class="rf-accordion-item" data-group="blocked">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">blocked</span>
          <span class="rf-accordion-item__count">1</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="RF-215">
            <a class="rf-collection__title" href="/runes/plan/work">Alignment system migration</a>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="in-progress">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">in-progress</span>
          <span class="rf-accordion-item__count">4</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-104">
            <a class="rf-collection__title" href="/runes/plan/examples">Heading level auto-detection for nested runes</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-105">
            <a class="rf-collection__title" href="/runes/plan/examples">Snapshot tests for identity transform output</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-051">
            <span class="rf-collection__title">Editor Package Awareness</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-089">
            <span class="rf-collection__title">Create @refrakt-md/astro adapter package</span>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="review">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">review</span>
          <span class="rf-accordion-item__count">4</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-108">
            <a class="rf-collection__title" href="/runes/plan/examples">Responsive modifier system</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-293">
            <span class="rf-collection__title">Ship the client behaviors bundle in the html scaffold</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-346">
            <span class="rf-collection__title">Rune compositions docs category</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-380">
            <span class="rf-collection__title">Surface-model showcase gallery</span>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="ready">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">ready</span>
          <span class="rf-accordion-item__count">30</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-101">
            <a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-102">
            <a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-103">
            <a class="rf-collection__title" href="/runes/plan/examples">Interactive rune playground</a>
          </div>
          <div class="rf-collection__item" data-entity-id="RF-142">
            <a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-052">
            <span class="rf-collection__title">Create-Refrakt Project Type Defaults</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-053">
            <span class="rf-collection__title">CSS Fallback Resolution for Third-Party Packages</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-055">
            <span class="rf-collection__title">Learning Package Pipeline Hooks</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-056">
            <span class="rf-collection__title">Editor Background Entity Registry</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-057">
            <span class="rf-collection__title">Editor Registry-Powered Autocomplete</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-058">
            <span class="rf-collection__title">Pipeline Incremental Build Optimization</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-094">
            <span class="rf-collection__title">Create @refrakt-md/vite plugin — Level 1 static transform</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-095">
            <span class="rf-collection__title">Vite plugin — virtual CSS module and tree-shaking</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-096">
            <span class="rf-collection__title">Vite plugin — dev server HMR</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-097">
            <span class="rf-collection__title">Vite plugin — Level 2 cross-page pipeline</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-098">
            <span class="rf-collection__title">Vite plugin — behavior init helper export</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-115">
            <span class="rf-collection__title">Migrate community package postTransform uses to declarative config</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-116">
            <span class="rf-collection__title">Update inspect and contracts tooling for structure slots features</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-287">
            <span class="rf-collection__title">CSS tree-shake: include deferred-body rune contents in the usage analyzer</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-332">
            <span class="rf-collection__title">Remove the legacy data-field engine machinery (Tier 2)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-350">
            <span class="rf-collection__title">Rebuild index composability section as a bento showcase</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-391">
            <span class="rf-collection__title">group-order attribute on collection, aggregate, relationships</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-392">
            <span class="rf-collection__title">Multi-site support in refrakt edit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-393">
            <span class="rf-collection__title">Registry-aware block preview in the editor</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-394">
            <span class="rf-collection__title">Close editHints coverage gaps across rune packages</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-395">
            <span class="rf-collection__title">Surface pipeline warnings in the editor</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-397">
            <span class="rf-collection__title">Relocate bento and bento-cell from marketing to core runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-417">
            <span class="rf-collection__title">data rune preprocessor + CSV/JSON adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-423">
            <span class="rf-collection__title">elevation depth-ladder axis</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-424">
            <span class="rf-collection__title">prominence axis (page-section family)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-425">
            <span class="rf-collection__title">Lumina: map the axes + retire the static surface groups</span>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="pending">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">pending</span>
          <span class="rf-accordion-item__count">17</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-005">
            <span class="rf-collection__title">Build stat Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-006">
            <span class="rf-collection__title">Build math Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-007">
            <span class="rf-collection__title">Build concept Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-008">
            <span class="rf-collection__title">Build exercise Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-009">
            <span class="rf-collection__title">Build quiz Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-010">
            <span class="rf-collection__title">Build glossary Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-011">
            <span class="rf-collection__title">Build prerequisite Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-012">
            <span class="rf-collection__title">Build objective Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-013">
            <span class="rf-collection__title">Build partner Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-014">
            <span class="rf-collection__title">Build job Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-016">
            <span class="rf-collection__title">Build album Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-017">
            <span class="rf-collection__title">Build artist Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-018">
            <span class="rf-collection__title">Build video Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-409">
            <span class="rf-collection__title">Visual-regression harness</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-410">
            <span class="rf-collection__title">Skeleton/skin split — spike</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-426">
            <span class="rf-collection__title">Migration + docs for the surface axes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-427">
            <span class="rf-collection__title">Demonstrate the axes: full-bleed hero recipe / playlist</span>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="draft">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">draft</span>
          <span class="rf-accordion-item__count">5</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-107">
            <a class="rf-collection__title" href="/runes/plan/examples">Theme marketplace architecture</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-334">
            <span class="rf-collection__title">Chart renderer provider selection and additional providers</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-343">
            <span class="rf-collection__title">Schema-declared achieved status for open-world rollups</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-354">
            <span class="rf-collection__title">Responsive per-cell bento spans</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-355">
            <span class="rf-collection__title">Generate theme scheme stylesheet from tokens.ts (retire hand-authored dark.css + tint.css palette copies)</span>
          </div>
        </div>
      </details>
      <details class="rf-accordion-item" data-group="done">
        <summary class="rf-accordion-item__header">
          <span class="rf-accordion-item__title">done</span>
          <span class="rf-accordion-item__count">368</span>
        </summary>
        <div class="rf-accordion-item__body">
          <div class="rf-collection__item" data-entity-id="WORK-106">
            <a class="rf-collection__title" href="/runes/plan/examples">Add copy button to code fences</a>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-001">
            <span class="rf-collection__title">Official Rune Packages — Breakout Plan</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-002">
            <span class="rf-collection__title">Batch 3: Convert Runes Using sections Resolver</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-003">
            <span class="rf-collection__title">Editor Visual Polish Plan</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-004">
            <span class="rf-collection__title">Build gallery Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-015">
            <span class="rf-collection__title">Build track and playlist Runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-019">
            <span class="rf-collection__title">Build audio Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-020">
            <span class="rf-collection__title">Add Entity Registration to @refrakt-md/plan</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-021">
            <span class="rf-collection__title">Update Plan Documents to Use Xref Syntax</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-022">
            <span class="rf-collection__title">Build backlog Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-023">
            <span class="rf-collection__title">Build decision-log Rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-024">
            <span class="rf-collection__title">Add knownSections to Plan Rune Content Models</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-025">
            <span class="rf-collection__title">Milestone Auto-Backlog and Checklist Progress</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-026">
            <span class="rf-collection__title">Add ref as Alias for xref</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-027">
            <span class="rf-collection__title">CLI Plugin Discovery Architecture</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-028">
            <span class="rf-collection__title">Plan File Scanner Library</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-029">
            <span class="rf-collection__title">plan init and plan create Commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-030">
            <span class="rf-collection__title">plan update Command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-031">
            <span class="rf-collection__title">plan next Command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-032">
            <span class="rf-collection__title">plan status Command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-033">
            <span class="rf-collection__title">plan validate Command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-034">
            <span class="rf-collection__title">Plan Dashboard Theme</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-035">
            <span class="rf-collection__title">plan serve and plan build Commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-036">
            <span class="rf-collection__title">Update CLAUDE.md files for plan CLI usage</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-037">
            <span class="rf-collection__title">Define planLayout in @refrakt-md/transform</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-038">
            <span class="rf-collection__title">Build nav region builder for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-039">
            <span class="rf-collection__title">Refactor plan render pipeline to use @refrakt-md/html</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-040">
            <span class="rf-collection__title">Add syntax highlighting to plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-041">
            <span class="rf-collection__title">Add client behaviors to plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-042">
            <span class="rf-collection__title">Config-aware theme resolution for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-043">
            <span class="rf-collection__title">Token bridging — update plan CSS to use --rf-* tokens</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-044">
            <span class="rf-collection__title">Collapsible status groups in plan sidebar</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-045">
            <span class="rf-collection__title">Sidebar search and filter bar for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-046">
            <span class="rf-collection__title">Enhanced plan dashboard with progress and milestone scoping</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-047">
            <span class="rf-collection__title">Tag-based cross-cutting view pages for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-048">
            <span class="rf-collection__title">Keyboard navigation for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-049">
            <span class="rf-collection__title">Dependency visualization for plan site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-050">
            <span class="rf-collection__title">Converge plan site renderer with shared layout engine</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-054">
            <span class="rf-collection__title">Storytelling Package Pipeline Hooks</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-059">
            <span class="rf-collection__title">Metadata Dimensions on StructureEntry</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-060">
            <span class="rf-collection__title">Annotate Rune Configs with Metadata Dimensions</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-061">
            <span class="rf-collection__title">Lumina Generic Metadata CSS</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-062">
            <span class="rf-collection__title">Inspector Metadata Audit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-063">
            <span class="rf-collection__title">Density Dimension</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-064">
            <span class="rf-collection__title">Section Anatomy Dimension</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-065">
            <span class="rf-collection__title">Interactive State Dimension</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-066">
            <span class="rf-collection__title">Media Slots Dimension</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-067">
            <span class="rf-collection__title">Lumina Universal Dimension CSS</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-068">
            <span class="rf-collection__title">Inspector Dimensions Audit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-069">
            <span class="rf-collection__title">Universal Checklist Styling</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-070">
            <span class="rf-collection__title">Universal Sequential Item Styling</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-071">
            <span class="rf-collection__title">Lumina Per-Rune Redundant CSS Cleanup</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-072">
            <span class="rf-collection__title">Add --resolve and --resolve-file flags to plan update</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-073">
            <span class="rf-collection__title">Add resolution validation checks to plan validate</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-074">
            <span class="rf-collection__title">Display resolution metadata in plan status and plan serve</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-075">
            <span class="rf-collection__title">Update plan init CLAUDE.md template with resolution guidance</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-076">
            <span class="rf-collection__title">Extract Shared Layout Meta Tag Utility</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-077">
            <span class="rf-collection__title">Extract Shared Media Image Unwrap Utility</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-078">
            <span class="rf-collection__title">BEM Modifier Hygiene for Storytelling Runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-079">
            <span class="rf-collection__title">Align Playlist Transform to Standard Structure</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-080">
            <span class="rf-collection__title">Refactor Realm and Faction Transforms to Use Shared Utilities</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-081">
            <span class="rf-collection__title">Consolidate Character Transform to Single Code Path</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-082">
            <span class="rf-collection__title">Shared Split Layout CSS with Two-Mode Mobile Collapse</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-083">
            <span class="rf-collection__title">Create Shared Git Timestamp Utility</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-084">
            <span class="rf-collection__title">Inject $file.created and $file.modified Variables into Content Pipeline</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-085">
            <span class="rf-collection__title">Add Timestamp Attributes to Plan Rune Schemas</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-086">
            <span class="rf-collection__title">Consolidate Plan Scanner with Shared Git Timestamp Utility</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-087">
            <span class="rf-collection__title">Add Sitemap lastmod Support Using File Timestamps</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-088">
            <span class="rf-collection__title">Extract shared utilities from @refrakt-md/svelte to @refrakt-md/transform</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-090">
            <span class="rf-collection__title">Create @refrakt-md/nuxt adapter package</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-091">
            <span class="rf-collection__title">Create @refrakt-md/next adapter package</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-092">
            <span class="rf-collection__title">Create @refrakt-md/eleventy adapter package</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-093">
            <span class="rf-collection__title">Add multi-framework support to create-refrakt</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-099">
            <span class="rf-collection__title">Migrate simple core runes from Model to createContentModelSchema</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-100">
            <span class="rf-collection__title">Migrate simple community runes from Model to createContentModelSchema</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-109">
            <span class="rf-collection__title">Remove Type system — delete schema classes, registries, and old signature</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-110">
            <span class="rf-collection__title">Add value mapping to modifier config</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-111">
            <span class="rf-collection__title">Replace hardcoded density contexts with configurable childDensity</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-112">
            <span class="rf-collection__title">Implement named slots with ordering for structure entries</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-113">
            <span class="rf-collection__title">Add repeated element generation to structure entries</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-114">
            <span class="rf-collection__title">Implement element projection (hide, group, relocate)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-117">
            <span class="rf-collection__title">Implement framework-agnostic extraction logic for component interface</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-118">
            <span class="rf-collection__title">Validate property and ref name uniqueness in createComponentRenderable</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-119">
            <span class="rf-collection__title">Update Svelte renderer to pass props and snippets to component overrides</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-120">
            <span class="rf-collection__title">Export generic type interfaces for rune component overrides</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-121">
            <span class="rf-collection__title">Add component interface view to refrakt inspect</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-122">
            <span class="rf-collection__title">Document framework-native component override interface</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-123">
            <span class="rf-collection__title">Create @refrakt-md/react renderer with ADR-008 component interface</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-124">
            <span class="rf-collection__title">Create @refrakt-md/vue renderer with ADR-008 component interface</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-125">
            <span class="rf-collection__title">Add Astro native component override support with ADR-008 named slots</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-126">
            <span class="rf-collection__title">Parse Resolution sections in the plan scanner</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-127">
            <span class="rf-collection__title">Fix plan schema bugs: pending status, severity mismatch, tag filtering</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-128">
            <span class="rf-collection__title">Add source, milestone, and complexity validation to plan validate</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-129">
            <span class="rf-collection__title">knownSections scanner integration: section-scoped refs and validation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-130">
            <span class="rf-collection__title">Support attribute clearing in plan CLI update command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-131">
            <span class="rf-collection__title">Update site docs and plan CLAUDE.md for plan package hardening changes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-132">
            <span class="rf-collection__title">Convert plan content to machine-readable refs and adopt knownSections conventions</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-133">
            <span class="rf-collection__title">Mobile plan section navigation and desktop TOC filtering</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-134">
            <span class="rf-collection__title">Event model types and per-entity git history extraction</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-135">
            <span class="rf-collection__title">Batch extraction and history caching</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-136">
            <span class="rf-collection__title">CLI plan history single-entity mode</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-137">
            <span class="rf-collection__title">CLI plan history global mode and filters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-138">
            <span class="rf-collection__title">plan-history site rune — tag definition and pipeline hooks</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-139">
            <span class="rf-collection__title">plan-history CSS rendering</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-140">
            <span class="rf-collection__title">Tab layout for plan entity pages</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-141">
            <span class="rf-collection__title">Split plan entity header into primary badges, title, secondary badges</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-142">
            <span class="rf-collection__title">Make plan init tool-agnostic</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-143">
            <span class="rf-collection__title">Rename plan directories to plural form</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-144">
            <span class="rf-collection__title">Extract pure scanner functions into scanner-core module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-145">
            <span class="rf-collection__title">Extract pure diffing functions into diff module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-146">
            <span class="rf-collection__title">Extract relationship builder into relationships module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-147">
            <span class="rf-collection__title">Extract entity card builder and sentiments into cards module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-148">
            <span class="rf-collection__title">Add edge-safe entry points to package.json exports</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-149">
            <span class="rf-collection__title">Promote shared rune-reference infrastructure to packages/runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-150">
            <span class="rf-collection__title">Add content-model renderer for agent-facing rune docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-151">
            <span class="rf-collection__title">Add attribute preset registry for tier-aware reference output</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-152">
            <span class="rf-collection__title">Migrate legacy Model-class runes and audit custom-pattern descriptions</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-153">
            <span class="rf-collection__title">Rename RuneInfo.prompt → authoringHints and surface in reference output</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-154">
            <span class="rf-collection__title">Drop the reinterprets field entirely</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-155">
            <span class="rf-collection__title">Build refrakt reference CLI commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-156">
            <span class="rf-collection__title">Generate AGENTS.md during create-refrakt scaffolding</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-157">
            <span class="rf-collection__title">Add --type plan to create-refrakt</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-158">
            <span class="rf-collection__title">Adopt {ID}-{slug}.md filename convention for plan items</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-159">
            <span class="rf-collection__title">Unified RefraktConfig types, loader, and JSON Schema</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-160">
            <span class="rf-collection__title">Add discoverPlugins() helper to @refrakt-md/cli</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-161">
            <span class="rf-collection__title">Extend CliPluginCommand with inputSchema/outputSchema/mcpHandler</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-162">
            <span class="rf-collection__title">Refactor runPlugin dispatch to use discoverPlugins</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-163">
            <span class="rf-collection__title">refrakt --help lists installed plugins + new refrakt plugins list command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-164">
            <span class="rf-collection__title">Add --site flag to site-scoped CLI commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-165">
            <span class="rf-collection__title">Lint cli-plugin shape in refrakt package validate</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-166">
            <span class="rf-collection__title">Framework adapters accept site option</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-167">
            <span class="rf-collection__title">Add inputSchema + mcpHandler to plan commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-168">
            <span class="rf-collection__title">Plan package consumes unified config (init scaffolds, serve/build read paths)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-169">
            <span class="rf-collection__title">Scaffold @refrakt-md/mcp package with stdio entry, auto-detect, and core tools</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-170">
            <span class="rf-collection__title">MCP plugin tools (via discovery) and resources</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-171">
            <span class="rf-collection__title">Add refrakt config migrate command</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-172">
            <span class="rf-collection__title">Migrate this repo's site config to the unified root config</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-173">
            <span class="rf-collection__title">Update create-refrakt scaffolds for the unified config shape</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-174">
            <span class="rf-collection__title">Site docs — configuration section</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-175">
            <span class="rf-collection__title">Site docs — MCP + plugin authoring update + CLAUDE.md pointer</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-176">
            <span class="rf-collection__title">v0.11.0 config follow-ups</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-177">
            <span class="rf-collection__title">Security policy for transform pipeline (sandbox hardening)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-178">
            <span class="rf-collection__title">Nav layout foundations — header menubar and footer columns</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-179">
            <span class="rf-collection__title">Collapsible sidebar nav with URL-aware auto-open</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-180">
            <span class="rf-collection__title">Cards nav layout with frontmatter enrichment</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-181">
            <span class="rf-collection__title">Menubar interactive behavior — dropdowns, hamburger, keyboard</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-182">
            <span class="rf-collection__title">Pagination rune for sequential page navigation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-183">
            <span class="rf-collection__title">Site reference docs for new nav layouts and the pagination rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-184">
            <span class="rf-collection__title">Adopt new nav layouts and pagination across refrakt.md</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-185">
            <span class="rf-collection__title">Typed token contract in @refrakt-md/types</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-186">
            <span class="rf-collection__title">Highlighter token rename: --shiki-* → --rf-syntax-*</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-187">
            <span class="rf-collection__title">Config-driven token stylesheet generation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-188">
            <span class="rf-collection__title">Dark mode as PartialTokenContract overlay</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-189">
            <span class="rf-collection__title">theme.colorScheme initial state field</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-190">
            <span class="rf-collection__title">Preset loading and merge order</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-191">
            <span class="rf-collection__title">Migrate existing Lumina tokens to the new contract</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-192">
            <span class="rf-collection__title">Author the canonical prism SVG asset</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-193">
            <span class="rf-collection__title">Favicon and app icon set</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-194">
            <span class="rf-collection__title">Replace brand mark on the refrakt site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-195">
            <span class="rf-collection__title">Update TintTokens / TintDefinition types</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-196">
            <span class="rf-collection__title">mergeThemeConfig extends support + remove deprecated RefraktConfig.tints</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-197">
            <span class="rf-collection__title">Engine + tint.css rename to new --tint-* property names</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-198">
            <span class="rf-collection__title">Migrate Lumina and plugin tint configs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-199">
            <span class="rf-collection__title">Document the tint migration recipe</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-200">
            <span class="rf-collection__title">Neutral default body palette (light + dark)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-201">
            <span class="rf-collection__title">Syntax highlighting palette (five hues + comment + punctuation)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-202">
            <span class="rf-collection__title">Status palette (4 sentiments × 3 tokens × 2 modes)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-203">
            <span class="rf-collection__title">Configure Google Fonts loading</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-204">
            <span class="rf-collection__title">Tideline preset module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-205">
            <span class="rf-collection__title">Niwaki preset module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-206">
            <span class="rf-collection__title">Refrakt site adopts presets: [&quot;niwaki&quot;]</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-207">
            <span class="rf-collection__title">create-refrakt template + post-init preset surfaces</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-208">
            <span class="rf-collection__title">Preset documentation pages with design-plugin runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-209">
            <span class="rf-collection__title">Site screenshots refreshed against new appearance</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-210">
            <span class="rf-collection__title">v0.14.0 migration note for palette and fonts</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-211">
            <span class="rf-collection__title">Add theme toggle to Lumina</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-212">
            <span class="rf-collection__title">Cascade resolution function in @refrakt-md/content</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-213">
            <span class="rf-collection__title">Frontmatter schema extension (tint, tint-mode, tint-lock)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-214">
            <span class="rf-collection__title">Renderer integration + pre-paint script</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-215">
            <span class="rf-collection__title">Refrakt site adopts the tint cascade</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-216">
            <span class="rf-collection__title">/docs/themes/tint-cascade documentation page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-217">
            <span class="rf-collection__title">Extend SyntaxTokens interface with optional roles</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-218">
            <span class="rf-collection__title">Extended Shiki css-variables theme in @refrakt-md/highlight</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-219">
            <span class="rf-collection__title">CSS generator fallback chains for optional syntax roles</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-220">
            <span class="rf-collection__title">Nord preset module</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-221">
            <span class="rf-collection__title">Nord preset documentation page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-222">
            <span class="rf-collection__title">Cross-reference SPEC-056 from SPEC-048</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-223">
            <span class="rf-collection__title">Scoped tint projection from preset modules</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-224">
            <span class="rf-collection__title">Dracula preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-225">
            <span class="rf-collection__title">Solarized preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-226">
            <span class="rf-collection__title">Catppuccin preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-227">
            <span class="rf-collection__title">Tokyo Night preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-228">
            <span class="rf-collection__title">One Dark preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-229">
            <span class="rf-collection__title">Gruvbox preset module + doc page</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-230">
            <span class="rf-collection__title">Themes catalog wrap-up</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-231">
            <span class="rf-collection__title">Build-time slug resolution + error system</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-232">
            <span class="rf-collection__title">Build-time active state + Lumina CSS</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-233">
            <span class="rf-collection__title">Site nav migration + authoring docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-234">
            <span class="rf-collection__title">{% badge %} core inline rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-235">
            <span class="rf-collection__title">Description / icon enrichment generalised across auto layouts</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-236">
            <span class="rf-collection__title">Menubar enrichment, column flow, and strip layout — engine + CSS + behavior</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-237">
            <span class="rf-collection__title">Rich-dropdown authoring docs + site demo</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-238">
            <span class="rf-collection__title">Docs IA split: separate author handbook from developer (&quot;extend&quot;) handbook</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-239">
            <span class="rf-collection__title">Extract composeSiteTokensCss into @refrakt-md/transform/node</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-240">
            <span class="rf-collection__title">Wire site-tokens CSS through the Astro adapter</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-241">
            <span class="rf-collection__title">Wire site-tokens CSS through the Nuxt adapter</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-242">
            <span class="rf-collection__title">Surface site-tokens CSS in Eleventy, Next.js, and HTML adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-243">
            <span class="rf-collection__title">Thread SeoToHtmlOptions through every adapter's SEO surface</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-244">
            <span class="rf-collection__title">Replace template-astro/src/setup.ts with createRefraktLoader</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-245">
            <span class="rf-collection__title">CSS tree-shaking across non-SvelteKit adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-246">
            <span class="rf-collection__title">Shared pipeline-stats output across adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-247">
            <span class="rf-collection__title">Surface security and variables options on non-SvelteKit adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-248">
            <span class="rf-collection__title">Content HMR for non-SvelteKit Vite adapters and Eleventy</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-249">
            <span class="rf-collection__title">Page variables and $file.path</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-250">
            <span class="rf-collection__title">File-roots mechanism</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-251">
            <span class="rf-collection__title">Plan plugin: unconditional scan, entity registration, fileRoots opt-in</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-252">
            <span class="rf-collection__title">XrefPattern config types, compilation, and validation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-253">
            <span class="rf-collection__title">Decoupled entity-lookup/URL-resolution chain; per-segment encoding; data-target-type propagation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-254">
            <span class="rf-collection__title">Shared lang-map module in @refrakt-md/runes</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-255">
            <span class="rf-collection__title">Snippet rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-256">
            <span class="rf-collection__title">EntityRegistration.scope: 'page' | 'site' field</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-257">
            <span class="rf-collection__title">Drawer rune (schema, transform, CSS)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-258">
            <span class="rf-collection__title">Drawer behaviors (progressive enhancement, &lt;dialog&gt;, shortcut, URL hash sync)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-259">
            <span class="rf-collection__title">Generic data-outline-scope walkers (TOC isolation + heading-ID namespacing)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-260">
            <span class="rf-collection__title">Expand rune (resolver, extraction, level= demotion, canonical-link affordance)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-261">
            <span class="rf-collection__title">Shared field-match parser</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-262">
            <span class="rf-collection__title">Deferred-body capture for per-entity templates</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-263">
            <span class="rf-collection__title">Collection rune: query engine and built-in layouts</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-264">
            <span class="rf-collection__title">Collection heading-delimited table columns</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-265">
            <span class="rf-collection__title">Shared markdoc formatter functions</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-266">
            <span class="rf-collection__title">card rune (generic content card)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-267">
            <span class="rf-collection__title">contributePages pipeline phase</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-268">
            <span class="rf-collection__title">entityRoutes config-rules adapter</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-269">
            <span class="rf-collection__title">embed() embeddability contract</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-270">
            <span class="rf-collection__title">Plan entity embeddability (sourceFile + extract)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-271">
            <span class="rf-collection__title">create-refrakt plan-site scaffold</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-272">
            <span class="rf-collection__title">refrakt plan site dogfood</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-273">
            <span class="rf-collection__title">Deprecate plan build and serve commands</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-274">
            <span class="rf-collection__title">Extract shared collection render and sort/group helpers</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-275">
            <span class="rf-collection__title">Relationship graph in the entity registry</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-276">
            <span class="rf-collection__title">Domain-aware (type, field) ordering for collection sort and group</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-277">
            <span class="rf-collection__title">Promote humanize to a public shared formatter</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-278">
            <span class="rf-collection__title">Generic relationships rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-279">
            <span class="rf-collection__title">Plan plugin: contribute edges and ordering, remove duplicated graph and sort/group</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-280">
            <span class="rf-collection__title">Plan-site entity render templates: expand + relationships + plan-history</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-281">
            <span class="rf-collection__title">Milestone page via collection; render progress via the generic progress rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-282">
            <span class="rf-collection__title">Remove plan postProcess injection (milestone backlog + entity tabs)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-283">
            <span class="rf-collection__title">Thread plan ordering override into collection; delete filter.ts sort/group</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-284">
            <span class="rf-collection__title">Collapse backlog, decision-log, and plan-activity onto collection (thin sugar)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-285">
            <span class="rf-collection__title">Generic progress rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-286">
            <span class="rf-collection__title">Collection/relationships body zones (preamble/template/fallback) and empty state</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-288">
            <span class="rf-collection__title">Theme-toggle layout chrome + behavior</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-289">
            <span class="rf-collection__title">Lumina theme-toggle styling (identical look)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-290">
            <span class="rf-collection__title">SvelteKit adapter no-flash theme plumbing</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-291">
            <span class="rf-collection__title">Remove the Svelte-only ThemeToggle component path</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-292">
            <span class="rf-collection__title">Extend theme plumbing + toggle to the remaining adapters</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-294">
            <span class="rf-collection__title">Aggregate rune — schema, post-process resolver, tests</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-295">
            <span class="rf-collection__title">Lumina styling for the aggregate rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-296">
            <span class="rf-collection__title">Decompose plan-progress as sugar over aggregate</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-297">
            <span class="rf-collection__title">Document the aggregate rune on the site</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-298">
            <span class="rf-collection__title">Drawer enhancements — footer slot, always-visible chrome</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-299">
            <span class="rf-collection__title">Site config — repoUrl + repoBranch for GitHub source links</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-300">
            <span class="rf-collection__title">Drawer hoist mechanism for the shared preview attribute</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-301">
            <span class="rf-collection__title">file-ref rune — path-based file references with optional drawer preview</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-302">
            <span class="rf-collection__title">xref preview=&quot;drawer&quot; — mention an entity in prose, expand on demand</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-303">
            <span class="rf-collection__title">Document file-ref, the shared preview attribute, and the drawer footer slot</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-304">
            <span class="rf-collection__title">Fence-level annotations: line numbers, line highlight, and source-based labels for codegroup/diff</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-305">
            <span class="rf-collection__title">Engine + layout primitives + composable runes + Lumina chip-universal</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-306">
            <span class="rf-collection__title">Plan plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-307">
            <span class="rf-collection__title">Storytelling plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-308">
            <span class="rf-collection__title">Learning plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-309">
            <span class="rf-collection__title">Docs plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-310">
            <span class="rf-collection__title">Places plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-311">
            <span class="rf-collection__title">Media plugin migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-312">
            <span class="rf-collection__title">Core Budget rune migration to metaFields + zones</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-313">
            <span class="rf-collection__title">Remove legacy slots + structure shim from engine</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-314">
            <span class="rf-collection__title">Engine: block-and-layout projection model</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-315">
            <span class="rf-collection__title">bar layout, intrinsic field shape, code metaType</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-316">
            <span class="rf-collection__title">Migrate plan package to blocks/layout</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-317">
            <span class="rf-collection__title">Migrate learning package to blocks/layout</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-318">
            <span class="rf-collection__title">Migrate docs package to blocks/layout (api proof)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-319">
            <span class="rf-collection__title">Migrate remaining rune packages to blocks/layout</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-320">
            <span class="rf-collection__title">Remove legacy placement fields; finalize contract + docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-321">
            <span class="rf-collection__title">Reserved fields attribute + schema dual-emit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-322">
            <span class="rf-collection__title">Engine reads the fields attribute (dual-read)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-323">
            <span class="rf-collection__title">Drop data-field metas; delete the side-channel cruft</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-324">
            <span class="rf-collection__title">Recursive layout assembly engine</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-325">
            <span class="rf-collection__title">Flatten rune transforms to flat-emit + declarative grouping</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-326">
            <span class="rf-collection__title">Move semantic derivation out of postTransform (budget totals)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-327">
            <span class="rf-collection__title">Surface grouped skeleton in contracts; deprecate projection.group/relocate</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-328">
            <span class="rf-collection__title">Migrate pre-engine field consumers to the fields bag</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-329">
            <span class="rf-collection__title">Untangle schema.org SEO metas from the data channel</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-330">
            <span class="rf-collection__title">Stabilize the plan-site dogfood test under parallel load</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-331">
            <span class="rf-collection__title">Drop dual-emitted data-field metas from rune output (Tier 1)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-333">
            <span class="rf-collection__title">Chart seam: semantic table IR + rf-chart web component (svg only)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-335">
            <span class="rf-collection__title">Move structural building out of postTransform into rune transforms (embed/diagram/sandbox/mockup/comparison)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-336">
            <span class="rf-collection__title">Audit and rationalize rune context modifiers</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-337">
            <span class="rf-collection__title">Enforce parent nesting at build time</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-338">
            <span class="rf-collection__title">Composability authoring contract + CLI coverage audit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-339">
            <span class="rf-collection__title">Media-zone guest adaptation (any visual rune sits cleanly in a media zone)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-340">
            <span class="rf-collection__title">Token hygiene: phantom-token reconciliation + vocabulary cleanup</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-341">
            <span class="rf-collection__title">Dark-mode token parity audit</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-342">
            <span class="rf-collection__title">Modernize plan card-sugars to compose with the bar rune</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-344">
            <span class="rf-collection__title">Expose group metadata in collection item templates</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-345">
            <span class="rf-collection__title">Bento cell adopts card's zone contract; bento becomes a grid primitive</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-347">
            <span class="rf-collection__title">Explicit bento-cell authoring</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-348">
            <span class="rf-collection__title">Bento sizing model, size-derived media placement, and link tiles</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-349">
            <span class="rf-collection__title">Aggregate chart layout</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-351">
            <span class="rf-collection__title">Theme-aware global chrome: selection, scrollbars, color-scheme</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-352">
            <span class="rf-collection__title">Focus-visible and reduced-motion consistency</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-353">
            <span class="rf-collection__title">Chart theming contract and SVG reference implementation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-356">
            <span class="rf-collection__title">Bento levels — heading→footprint ladder</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-357">
            <span class="rf-collection__title">Per-group sentiment projection in aggregate (colour plan-progress badges)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-358">
            <span class="rf-collection__title">Engine config variants: RuneConfig.variants type + axis validation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-359">
            <span class="rf-collection__title">Per-instance variant resolution and merge over base config</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-360">
            <span class="rf-collection__title">Per-variant structure contracts and inspect variant selection</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-361">
            <span class="rf-collection__title">Migrate card/bento-cell to flat-slot model; feature grid/stack + cover variants</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-362">
            <span class="rf-collection__title">Universal elevation attribute backed by a --rf-shadow-* token scale</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-363">
            <span class="rf-collection__title">frames preset registry + frame attribute and inline facet overrides</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-364">
            <span class="rf-collection__title">frameTarget routing + host-owned clip + shared frame CSS layer</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-365">
            <span class="rf-collection__title">Collapse showcase into the frame model with deprecated aliases + docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-366">
            <span class="rf-collection__title">Tint-tracking inset surface: --rf-surface-inset-shift token + use-site color-mix</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-367">
            <span class="rf-collection__title">substrate pattern attribute: engine enum + shared base gradient stylesheet</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-368">
            <span class="rf-collection__title">substrateTarget routing + build validation + surfaces theme-authoring docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-369">
            <span class="rf-collection__title">bg gradient fill: inline facets + structured BgPresetDefinition.gradient</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-370">
            <span class="rf-collection__title">Formalize the bg raw-CSS escape hatch + project-config backgrounds merge</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-371">
            <span class="rf-collection__title">Structured overlay/scrim facets + raw-string overlay deprecation path</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-372">
            <span class="rf-collection__title">Soft-lint raw CSS covered by structured facets + bg reference docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-373">
            <span class="rf-collection__title">media-position=cover layout + height authority (as a config variant)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-374">
            <span class="rf-collection__title">content-place 2-axis logical overlay anchor + orientation-adaptive auto</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-375">
            <span class="rf-collection__title">Default cover scrim bound to content-place</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-376">
            <span class="rf-collection__title">Card intrinsic height/aspect knob for bg-only cards + card docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-377">
            <span class="rf-collection__title">Media-guest interaction model: presentational default + capability flag + fallbacks</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-378">
            <span class="rf-collection__title">href demotion of media guests + cover backdrop pointer-events</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-379">
            <span class="rf-collection__title">Interaction-posture build warnings + posture reference docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-381">
            <span class="rf-collection__title">Sandbox lazy/poster activation</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-382">
            <span class="rf-collection__title">three.js sandbox composition — a live program as a media guest</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-383">
            <span class="rf-collection__title">Frontmatter indexing on the page entity</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-384">
            <span class="rf-collection__title">Typed page entities</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-385">
            <span class="rf-collection__title">Rune-page metadata backfill</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-386">
            <span class="rf-collection__title">Generated rune catalogue + index stats</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-387">
            <span class="rf-collection__title">Rune-doc drift guardrail</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-388">
            <span class="rf-collection__title">Data-bound sandbox core</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-389">
            <span class="rf-collection__title">3D sitemap showcase</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-390">
            <span class="rf-collection__title">Plan relationship-graph showcase</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-396">
            <span class="rf-collection__title">Generic section rune (eyebrow/headline/blurb preamble + body)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-398">
            <span class="rf-collection__title">Hero as a cover host</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-399">
            <span class="rf-collection__title">Cover guest fill and sandbox fill height mode</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-400">
            <span class="rf-collection__title">Build warning for non-eager sandbox in a cover media zone</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-401">
            <span class="rf-collection__title">Prism scene — the niwaki-refraction hero backdrop</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-402">
            <span class="rf-collection__title">Docs — hero cover reference and animated prism background showcase</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-403">
            <span class="rf-collection__title">Nested-density title sizing — full-density runes in compact hosts</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-404">
            <span class="rf-collection__title">Typography token contract</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-405">
            <span class="rf-collection__title">Lumina typography refactor onto tokens</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-406">
            <span class="rf-collection__title">Generate Lumina token CSS from tokens.ts</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-407">
            <span class="rf-collection__title">Gallery generator — rune subject</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-408">
            <span class="rf-collection__title">Gallery generator — layout fixtures</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-411">
            <span class="rf-collection__title">Fixture format, loader &amp; generated manifest</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-412">
            <span class="rf-collection__title">Complete the standardised fixture corpus</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-413">
            <span class="rf-collection__title">AI write mode draws fixtures as few-shot exemplars</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-414">
            <span class="rf-collection__title">Fixture validation in CI</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-415">
            <span class="rf-collection__title">Fixture-authoring docs</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-416">
            <span class="rf-collection__title">Gallery: bundle behaviors so interactive/lifecycle runes render</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-418">
            <span class="rf-collection__title">Image-src scheme registry + resolver hook</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-419">
            <span class="rf-collection__title">icon: image-src resolver</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-420">
            <span class="rf-collection__title">placeholder: image-src resolver</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-421">
            <span class="rf-collection__title">Migrate fixtures to placeholder: (drop the base64-PNG interim)</span>
          </div>
          <div class="rf-collection__item" data-entity-id="WORK-422">
            <span class="rf-collection__title">Image-scheme authoring docs</span>
          </div>
        </div>
      </details>
    </div>
  </div>
</section>

Panels are independent (open as many as you like) and need no JavaScript — the disclosure is the browser's. The count is shown because collapsed panels hide their contents, so the size cue is genuinely useful there. For arbitrary per-group chrome beyond headings or accordion, render one filtered collection per group value, stacked.

Domain-aware ordering

Enum fields don't sort alphabetically. For a field whose values are a fixed set — a work item's priority (critical/high/medium/low), a status, a severitysort and group order by the field's declared order, not lexically, so sort="priority" runs critical→low and group="status" lists statuses in a sensible sequence. The order is taken from each rune's attribute definition; a plugin may register an explicit override when a dashboard order differs from the declaration order. Across mixed types (type="work,bug"), each entity is ranked within its own type's ordering, so the groups still compose. Fields with no declared order fall back to numeric/lexical.

Layouts

layout controls arrangement only — item chrome comes from the item (see Per-item templates).

layoutArrangementWith no body template
list (default)stackeda compact title link per entity
gridresponsive multi-columna generic auto-card (title link + projected fields)
tablealigned columnscolumns from fields (or heading-delimited columns)

There is no cards layout — a card gallery is grid plus {% card %} items (see below). layout never auto-wraps your content in a card; you choose the chrome.

Field projection — fields

fields is the zero-template shorthand for the no-body case: a comma-separated list of data fields rendered with humanized headers and default per-type formatting.

{% collection type="work" filter="status:ready" layout="table" fields="status,priority" limit=5 /%}
<section data-rune="collection">
  <meta data-field="collection-type" content="work">
  <meta data-field="collection-filter" content="status:ready">
  <meta data-field="collection-sort" content="">
  <meta data-field="collection-group" content="">
  <meta data-field="collection-limit" content="5">
  <meta data-field="collection-fields" content="status,priority">
  <meta data-field="collection-layout" content="table">
  <meta data-field="collection-group-display" content="headings">
  <meta data-field="collection-empty" content="">
  <meta data-field="__collection-sentinel" content="true">
  <div data-name="items"></div>
</section>
TitleStatusPriority
Content model validation errorsreadycritical
Token fallback chain for nested tintsreadyhigh
Interactive rune playgroundreadymedium
Implement tint rune dark mode supportreadyhigh
Create-Refrakt Project Type Defaultsreadymedium
<section class="rf-collection" data-type="work" data-layout="table" data-rune="collection" data-density="full">
  <div data-name="items" class="rf-collection__items rf-collection__items">
    <table class="rf-collection__table">
      <thead>
        <tr>
          <th>Title</th>
          <th>Status</th>
          <th>Priority</th>
        </tr>
      </thead>
      <tbody>
        <tr data-entity-id="WORK-101">
          <td>
            <a class="rf-collection__title" href="/runes/plan/examples">Content model validation errors</a>
          </td>
          <td data-field="status">ready</td>
          <td data-field="priority">critical</td>
        </tr>
        <tr data-entity-id="WORK-102">
          <td>
            <a class="rf-collection__title" href="/runes/plan/examples">Token fallback chain for nested tints</a>
          </td>
          <td data-field="status">ready</td>
          <td data-field="priority">high</td>
        </tr>
        <tr data-entity-id="WORK-103">
          <td>
            <a class="rf-collection__title" href="/runes/plan/examples">Interactive rune playground</a>
          </td>
          <td data-field="status">ready</td>
          <td data-field="priority">medium</td>
        </tr>
        <tr data-entity-id="RF-142">
          <td>
            <a class="rf-collection__title" href="/runes/plan/work">Implement tint rune dark mode support</a>
          </td>
          <td data-field="status">ready</td>
          <td data-field="priority">high</td>
        </tr>
        <tr data-entity-id="WORK-052">
          <td>
            <span class="rf-collection__title">Create-Refrakt Project Type Defaults</span>
          </td>
          <td data-field="status">ready</td>
          <td data-field="priority">medium</td>
        </tr>
      </tbody>
    </table>
  </div>
</section>

For anything richer than raw values (formatting, combining fields, a designed card), use a body template.

Per-item templates

Give collection a body and it becomes the per-item template: the body is transformed once per entity with $item bound to that entity. The body is raw output arranged by layout — add a rune like {% card %} for chrome.

{% collection type="work" filter="status:ready" sort="priority" layout="grid" %}
{% card href=$item.url %}
### {% $item.data.title %}
Status: {% $item.data.status %} · Priority: {% $item.data.priority %}
{% /card %}
{% /collection %}

The $item variable

$item is a read-only bound variable (like $page / $file), not a contract any rune implements:

FieldAlways present?Notes
$item.idyesthe entity id
$item.identifieryesid, or name for name-keyed types (e.g. milestones) — a universal identifier
$item.typeyesthe entity type
$item.urlyesresolved URL (sourceUrl ?? data.url); empty string, never undefined, when there's no on-site URL
$item.data.*type-specificthe entity's payload. A missing field renders nothing (no warning)
$item.sentimentwhen mappedthe entity's status sentiment (positive / negative / caution / neutral), e.g. to colour a badge; empty when unmapped
$item.mixedyestrue when the set spans more than one type (and isn't grouped by type) — useful for a conditional type chip
$item.groupgrouped onlythe item's group key (the value of the group field); empty when ungrouped
$item.groupCountgrouped onlythe number of items in this item's group; 0 when ungrouped

Payload fields are accessed under .data (e.g. $item.data.title) — there's no hoisting to $item.title, so a payload field can never shadow id/type/url.

$item.group / $item.groupCount let a grouped collection's per-item template render group context inline (e.g. {% if $item.groupCount %}{% $item.group %} ({% $item.groupCount %}){% /if %}) without dropping to aggregate.

Cards are plain runes

The card in the example above ({% card %}) knows nothing about $item, the registry, or collection — the template wires entity fields into its attributes/body. So card stays a self-contained component you can also use standalone, and there's no per-entity *-card proliferation: a designed item is {% card %} (or another rune) fed by $item, not a bespoke work-card.

Reusable templates — item-template

When the same template is reused across collections, point item-template at a markdoc partial instead of writing an inline body (mutually exclusive with an inline body):

{% collection type="page" filter="url:/blog/*" sort="date-desc" item-template="cards:post.md" /%}

…where cards/post.md contains the {% card href=$item.url %}…{% /card %} template. Same mechanism, different source.

Table columns

In table layout, an empty body uses the fields shorthand. For labels, formatting, or combined columns, give the body heading-delimited columns — each heading is a column (label = heading text, in order), and the markdoc beneath it is that column's per-cell template with $item bound:

{% collection type="product" layout="table" sort="price" %}
## Product
{% link href=$item.url %}**{% $item.data.title %}**{% /link %}

## Price
{% currency($item.data.price, $item.data.currency) %}

## Stock
{% if $item.data.stock %}{% $item.data.stock %} in stock{% else %}Out{% /if %}
{% /collection %}

Collection owns the <table> and header row; each <td> is the cell template rendered per entity. Column headings are static labels — $item belongs in the cell body, not the heading.

Linking from a cell — use {% link %}. Markdown link syntax can't interpolate a variable into its destination: [{% $item.data.title %}]({% $item.url %}) renders as literal text, because a markdown link's href is fixed at parse time. The {% link href=$item.url %}…{% /link %} tag takes a dynamic href (as in the Product column above), and works in any body template, partial, or table cell where $item is bound. The fields shorthand's auto-generated Title column also links each entity automatically.

Formatter functions

Value formatting is done with shared markdoc functions, usable anywhere markdoc runs — collection cells, body templates, entityRoutes render strings, ordinary content:

FunctionExampleOutput
currency(amount, code?){% currency($item.data.price, "EUR") %}€1,234.00
date(value){% date($item.data.published) %}Jan 15, 2024
number(value){% number($item.data.views) %}1,234,567
join(array, sep?){% join($item.data.tags, " · ") %}a · b · c
humanize(value){% humanize($item.data.status) %}In Progress

Formatting lives in these functions, not in fields or a projection mini-language.

Attributes

AttributeTypeDefaultDescription
typestringEntity type(s) to query, comma-separated. (show is an alias.)
filterstringfield:value clauses (see grammar).
sortstringSort field; -field / field-desc for descending.
groupstringGroup-by field.
group-displayheadings | accordionheadingsHow groups are presented (only with group).
limitnumberMax items, applied after sort.
fieldsstringComma-separated data fields for the no-body built-in.
layoutlist | grid | tablelistArrangement. Item chrome comes from the item.
item-templatestringPartial used as the per-item template (mutually exclusive with an inline body).
emptystringFallback text shown when the query yields nothing (no-body form). Absent → render nothing.

Body zones — preamble, template, fallback

When you give collection a body, split it on a top-level --- (horizontal rule) into up to three zones — the same convention as card:

{% collection type="work" filter="status:blocked" group="status" %}
## Blocked
Work that can't progress.
---
{% card href=$item.url %}### {% $item.data.title %}{% /card %}
---
Nothing blocked — nice.
{% /collection %}
  • preamble (optional, leading) — rendered once, above the items, only when the query is non-empty. Put the section heading here so the whole section (heading + items) appears or vanishes together — something {% if %} can't do, since emptiness is resolved at build time.
  • template — the per-item template (today's single-zone body).
  • fallback (optional, trailing) — rendered once, in place of the items, only when the query is empty.

Zones are positional: 1 zone → template; 2 → preamble + template; 3 → preamble + template + fallback. A --- inside a nested rune (a {% card %}'s own zones) is never a delimiter — only top-level rules split. For the self-closing form (no body), use the empty attribute for the fallback.

Count variables — $count and $shown

The preamble and fallback zones can read two bound variables describing the match set:

VariableValue
$counttotal entities matched, before limit
$shownentities actually rendered, after limit
{% collection type="work" filter="status:ready" limit=5 %}
## Ready work
Showing {% $shown %} of {% $count %}.
---
{% card href=$item.url %}### {% $item.data.title %}{% /card %}
{% /collection %}

They're list-scoped (the whole query), not per-group — a group's own count appears in its accordion summary automatically. In the fallback zone both are 0.

Output contract

<section class="rf-collection" data-rune="collection" data-type="work" data-layout="grid">
  <div class="rf-collection__items">
    <!-- grid / list built-in items -->
    <article class="rf-collection__card" data-entity-id="W-1">
      <a class="rf-collection__title" href="/work/W-1/">…</a>
      <span class="rf-collection__field" data-field="status">ready</span>
    </article>
    <!-- …or, with a body template, each item is the template's own output -->
    <div class="rf-collection__item" data-entity-id="W-1">…</div>
  </div>
</section>

When group is set, items are wrapped in div.rf-collection__group[data-group] with a h3.rf-collection__group-title. With group-display="accordion" the groups are instead a div.rf-accordion of details.rf-accordion-item[data-group] panels — reusing the accordion rune's classes (__header / __title / __count / __body). The table layout emits a table.rf-collection__table with <thead> + one <tr data-entity-id> per entity.

See also

  • card — the generic content card you feed with $item in a body template.
  • ref / expand — the singular counterparts (one entity → a link / inlined content).
  • backlog — the plan-specific lister; uses the same filter grammar.