This rune is part of @refrakt-md/plan. Install with npm install @refrakt-md/plan and add "@refrakt-md/plan" to the packages array in your refrakt.config.json.
Plan Activity
Renders a recent activity feed showing the most recently modified plan entities. Each entry displays the modification date, entity type, ID, status, and title. Status badges are color-coded using the plan status palette.
This is a self-closing aggregation rune — it produces a sentinel that the pipeline resolves with live entity data, sorted by file modification time.
Default (last 10 items)
{% plan-activity /%}<section data-rune="plan-activity">
<meta content="10" data-field="limit">
<meta data-field="__plan-activity-sentinel" content="true">
<div data-name="items"></div>
</section>- workWORK-101readyContent model validation errors
- workWORK-102readyToken fallback chain for nested tints
- workWORK-103readyInteractive rune playground
- workWORK-104in-progressHeading level auto-detection for nested runes
- workWORK-105in-progressSnapshot tests for identity transform output
- workWORK-106doneAdd copy button to code fences
- workWORK-107draftTheme marketplace architecture
- workWORK-108reviewResponsive modifier system
- workRF-142readyImplement tint rune dark mode support
- workRF-215blockedAlignment system migration
<section class="rf-plan-activity" data-limit="10" data-rune="plan-activity" data-density="full">
<ol data-name="items" class="rf-plan-activity__items rf-plan-activity__list">
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-101</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Content model validation errors</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-102</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Token fallback chain for nested tints</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-103</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Interactive rune playground</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="in-progress">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-104</span>
<span class="rf-plan-activity__status" data-status="in-progress">in-progress</span>
<span class="rf-plan-activity__title">Heading level auto-detection for nested runes</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="in-progress">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-105</span>
<span class="rf-plan-activity__status" data-status="in-progress">in-progress</span>
<span class="rf-plan-activity__title">Snapshot tests for identity transform output</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="done">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-106</span>
<span class="rf-plan-activity__status" data-status="done">done</span>
<span class="rf-plan-activity__title">Add copy button to code fences</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="draft">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-107</span>
<span class="rf-plan-activity__status" data-status="draft">draft</span>
<span class="rf-plan-activity__title">Theme marketplace architecture</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="review">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-108</span>
<span class="rf-plan-activity__status" data-status="review">review</span>
<span class="rf-plan-activity__title">Responsive modifier system</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/work">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">RF-142</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Implement tint rune dark mode support</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="blocked">
<a class="rf-plan-activity__link" href="/runes/plan/work">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">RF-215</span>
<span class="rf-plan-activity__status" data-status="blocked">blocked</span>
<span class="rf-plan-activity__title">Alignment system migration</span>
</a>
</li>
</ol>
</section>Custom limit
Show fewer or more recent items.
{% plan-activity limit="5" /%}<section data-rune="plan-activity">
<meta content="5" data-field="limit">
<meta data-field="__plan-activity-sentinel" content="true">
<div data-name="items"></div>
</section><section class="rf-plan-activity" data-limit="5" data-rune="plan-activity" data-density="full">
<ol data-name="items" class="rf-plan-activity__items rf-plan-activity__list">
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-101</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Content model validation errors</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-102</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Token fallback chain for nested tints</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="ready">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-103</span>
<span class="rf-plan-activity__status" data-status="ready">ready</span>
<span class="rf-plan-activity__title">Interactive rune playground</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="in-progress">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-104</span>
<span class="rf-plan-activity__status" data-status="in-progress">in-progress</span>
<span class="rf-plan-activity__title">Heading level auto-detection for nested runes</span>
</a>
</li>
<li class="rf-plan-activity__entry" data-type="work" data-status="in-progress">
<a class="rf-plan-activity__link" href="/runes/plan/examples">
<time class="rf-plan-activity__date">2026-04-10</time>
<span class="rf-plan-activity__type">work</span>
<span class="rf-plan-activity__id">WORK-105</span>
<span class="rf-plan-activity__status" data-status="in-progress">in-progress</span>
<span class="rf-plan-activity__title">Snapshot tests for identity transform output</span>
</a>
</li>
</ol>
</section>Attributes
| Attribute | Type | Default | Description |
|---|---|---|---|
limit | number | 10 | Maximum number of recent items to show |
Output structure
The rune resolves to an ordered list of entries, each containing:
- Modification date (
<time>element, ISO date format) - Entity type label (work, bug, spec, decision)
- Entity ID
- Status badge with
[data-status]color-coding - Entity title
Items are sorted by file modification time, most recent first. Only entities with available modification data are included. Modification dates are sourced from the shared content pipeline's $file.modified variable, which uses git commit timestamps with a filesystem stat fallback.