Öffentliches Register
Software-GesundheitsberichtSchema 0.26.0 · Metriken 1.13.0 · 2026-07-22 19:54 UTC

refrakt-md / refrakt

Markdoc-powered content platform with semantic runes — structured, themeable, schema-rich sites from plain Markdown

TypeScriptKeine Lizenz erkannt★ 1 Stern⑂ 0 Forksseit Feb. 2026Auf GitHub ansehen ↗

refrakt-md/refrakt erreicht einen Gesundheitsindex von 54 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (87/100) ab, am schwächsten bei Community & Adoption (26/100). Zuletzt vor 2 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

54
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

54
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

refrakt.mdOrganisation
0 Follower1 öffentliches Reposeit Feb. 2026

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlicht
npm@refrakt-md/ai0.28.01.65561vor 5 Tagen
npm@refrakt-md/cli0.28.01.65561vor 5 Tagen
npm@refrakt-md/mcp0.28.01.26734vor 5 Tagen
npm@refrakt-md/html0.28.01.69050vor 5 Tagen
npm@refrakt-md/next0.28.01.25643vor 5 Tagen
npm@refrakt-md/nuxt0.28.01.26343vor 5 Tagen
npm@refrakt-md/astro0.28.01.28343vor 5 Tagen
npm@refrakt-md/react0.28.01.27643vor 5 Tagen

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

87Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 2 Tagen
15.2/36Commit-Rhythmus — 22/52 Wochen mit Commits
18/18Commit-Volumen — 2.810 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year2.810
human_commit_share0,96
days_since_last_push2
active_weeks_last_year22

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 100 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 0 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count100
latest_release_tag@refrakt-md/mcp@0.28.0
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

26Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 1 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
0/22.5Lizenz — keine Lizenzdatei erkannt
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
54.1/80Downloads pro Monat — 11.345 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packages@refrakt-md/ai, @refrakt-md/cli, @refrakt-md/mcp, @refrakt-md/html, @refrakt-md/next, @refrakt-md/nuxt, @refrakt-md/astro, @refrakt-md/react
dependents
ecosystemsnpm
total_downloads
monthly_downloads11.345
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

54Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
10.9/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 52 % der Commits
4.1/13.5Breite der Beitragenden — 3 Beitragende
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Verwendete Eingangsdaten
bus_factor1
contributors_sampled3
top_contributor_share0,515
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
38.1/38.3PR-Annahme — 561/563 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/6 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs561
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
0/25Reichweite des Inhabers — 0 Follower von refrakt-md
3.1/25Kontohistorie — 1 öffentliche Repos, Kontoalter ca. 0 Jahre
Verwendete Eingangsdaten
followers0
owner_typeOrganization
is_verified
owner_loginrefrakt-md
public_repos1
account_age_days160

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 8 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 61 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packages@refrakt-md/ai, @refrakt-md/cli, @refrakt-md/mcp, @refrakt-md/html, @refrakt-md/next, @refrakt-md/nuxt, @refrakt-md/astro, @refrakt-md/react
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

55Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 1 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 8 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://refrakt.md
10/10Repository-Beschreibung
10/10Topics — 3 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsmarkdoc, planning, static-site
has_wikinein
homepagehttps://refrakt.md
has_readmeja
has_docs_dirnein
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

37Gefährdet · 16 % des Gesamtindex

Sicherheitslage

37Gefährdet
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 8 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/6 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Lizenz — license file not detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — keine Daten
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — keine Daten
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 141 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate3,7
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

72Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 96 von 96 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes25.946
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — packages/ai/tsconfig.json, packages/astro/tsconfig.json, packages/behaviors/tsconfig.json, packages/cli/tsconfig.json, packages/content/tsconfig.json, packages/create-refrakt/template-astro/tsconfig.json, packages/create-refrakt/template-html/tsconfig.json, packages/create-refrakt/template-next/tsconfig.json, packages/create-refrakt/template-nuxt/tsconfig.json, packages/create-refrakt/template/tsconfig.json, packages/create-refrakt/tsconfig.json, packages/editor/app/tsconfig.json, packages/editor/tsconfig.json, packages/eleventy/tsconfig.json, packages/gallery-harness/tsconfig.json, packages/highlight/tsconfig.json, packages/html/tsconfig.json, packages/language-server/tsconfig.json, packages/lumina/tsconfig.json, packages/mcp/tsconfig.json, packages/next/tsconfig.json, packages/nuxt/tsconfig.json, packages/react/tsconfig.json, packages/runes/tsconfig.json, packages/skeleton/tsconfig.json, packages/sveltekit/tsconfig.json, packages/transform/tsconfig.json, packages/types/tsconfig.json, packages/vue/tsconfig.json, plan-site/tsconfig.json, plugins/business/tsconfig.json, plugins/design/tsconfig.json, plugins/docs/test/fixtures/tsconfig.json, plugins/docs/tsconfig.json, plugins/learning/tsconfig.json, plugins/marketing/tsconfig.json, plugins/media/tsconfig.json, plugins/places/tsconfig.json, plugins/plan/tsconfig.json, plugins/storytelling/tsconfig.json, site/tsconfig.json, tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
10/10Belegte Agentenpraxis — 70 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configspackages/ai/tsconfig.json, packages/astro/tsconfig.json, packages/behaviors/tsconfig.json, packages/cli/tsconfig.json, packages/content/tsconfig.json, packages/create-refrakt/template-astro/tsconfig.json, packages/create-refrakt/template-html/tsconfig.json, packages/create-refrakt/template-next/tsconfig.json, packages/create-refrakt/template-nuxt/tsconfig.json, packages/create-refrakt/template/tsconfig.json, packages/create-refrakt/tsconfig.json, packages/editor/app/tsconfig.json, packages/editor/tsconfig.json, packages/eleventy/tsconfig.json, packages/gallery-harness/tsconfig.json, packages/highlight/tsconfig.json, packages/html/tsconfig.json, packages/language-server/tsconfig.json, packages/lumina/tsconfig.json, packages/mcp/tsconfig.json, packages/next/tsconfig.json, packages/nuxt/tsconfig.json, packages/react/tsconfig.json, packages/runes/tsconfig.json, packages/skeleton/tsconfig.json, packages/sveltekit/tsconfig.json, packages/transform/tsconfig.json, packages/types/tsconfig.json, packages/vue/tsconfig.json, plan-site/tsconfig.json, plugins/business/tsconfig.json, plugins/design/tsconfig.json, plugins/docs/test/fixtures/tsconfig.json, plugins/docs/tsconfig.json, plugins/learning/tsconfig.json, plugins/marketing/tsconfig.json, plugins/media/tsconfig.json, plugins/places/tsconfig.json, plugins/plan/tsconfig.json, plugins/storytelling/tsconfig.json, site/tsconfig.json, tsconfig.json
agent_commit_share0,7
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
54.8/55Handhabbare Dateigrößen — 3/868 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes89.209
source_files_sampled868
oversized_source_files3
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalja
api_schema_files

Eckdaten

1GitHub-Sterne
3Mitwirkende
2.810Commits, letzte 12 Monate
2Tage seit letztem Push
100Releases
1Bus-Faktor
0offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:@refrakt-md/ai@0.28.0; advisories assessed against the repository dependency graph instead

Weitere Details

OpenSSF Scorecard 3.7 / 10
3.7Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).Scorecard v5.5.0 · 2026-07-22 19:54 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 8 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/6 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
k. A.Packagingpackaging workflow not detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities141 existing vulnerabilities detected
Direkte Abhängigkeiten 100
RegistryPaketVersionsvorgabeManifest
npm@markdoc/markdoc0.4.0plan-site/package.json
npm@refrakt-md/content0.28.0plan-site/package.json
npm@refrakt-md/highlight0.28.0plan-site/package.json
npm@refrakt-md/lumina0.28.0plan-site/package.json
npm@refrakt-md/plan0.28.0plan-site/package.json
npm@refrakt-md/runes0.28.0plan-site/package.json
npm@refrakt-md/svelte0.28.0plan-site/package.json
npm@refrakt-md/sveltekit0.28.0plan-site/package.json
npm@refrakt-md/types0.28.0plan-site/package.json
npm@markdoc/markdoc0.4.0site/package.json
npm@refrakt-md/content0.28.0site/package.json
npm@refrakt-md/runes0.28.0site/package.json
npm@refrakt-md/svelte0.28.0site/package.json
npm@refrakt-md/sveltekit0.28.0site/package.json
npm@refrakt-md/lumina0.28.0site/package.json
npm@refrakt-md/highlight0.28.0site/package.json
npm@refrakt-md/types0.28.0site/package.json
npm@refrakt-md/marketing0.28.0site/package.json
npm@refrakt-md/docs0.28.0site/package.json
npm@refrakt-md/storytelling0.28.0site/package.json
npm@refrakt-md/places0.28.0site/package.json
npm@refrakt-md/business0.28.0site/package.json
npm@refrakt-md/design0.28.0site/package.json
npm@refrakt-md/learning0.28.0site/package.json
npm@refrakt-md/media0.28.0site/package.json
npm@refrakt-md/plan0.28.0site/package.json
npm@refrakt-md/behaviors0.28.0packages/astro/package.json
npm@refrakt-md/content0.28.0packages/astro/package.json
npm@refrakt-md/transform0.28.0packages/astro/package.json
npm@refrakt-md/types0.28.0packages/astro/package.json
npm@markdoc/markdoc0.4.0packages/cli/package.json
npm@refrakt-md/ai0.28.0packages/cli/package.json
npm@refrakt-md/editor0.28.0packages/cli/package.json
npm@refrakt-md/html0.28.0packages/cli/package.json
npm@refrakt-md/runes0.28.0packages/cli/package.json
npm@refrakt-md/transform0.28.0packages/cli/package.json
npmesbuild^0.27.5packages/cli/package.json
npmpostcss^8.4.0packages/cli/package.json
npm@refrakt-md/highlight0.28.0packages/content/package.json
npm@refrakt-md/runes0.28.0packages/content/package.json
npm@refrakt-md/transform0.28.0packages/content/package.json
npm@refrakt-md/types0.28.0packages/content/package.json
npm@markdoc/markdoc0.4.0packages/content/package.json
npmyaml^2.4.0packages/content/package.json
npm@clack/prompts^1.2.0packages/create-refrakt/package.json
npm@refrakt-md/plan0.28.0packages/create-refrakt/package.json
npm@refrakt-md/runes0.28.0packages/create-refrakt/package.json
npm@refrakt-md/transform0.28.0packages/create-refrakt/package.json
npm@markdoc/markdoc0.4.0packages/editor/package.json
npm@refrakt-md/content0.28.0packages/editor/package.json
npm@refrakt-md/highlight0.28.0packages/editor/package.json
npm@refrakt-md/runes0.28.0packages/editor/package.json
npm@refrakt-md/transform0.28.0packages/editor/package.json
npm@refrakt-md/types0.28.0packages/editor/package.json
npm@refrakt-md/behaviors0.28.0packages/eleventy/package.json
npm@refrakt-md/content0.28.0packages/eleventy/package.json
npm@refrakt-md/transform0.28.0packages/eleventy/package.json
npm@refrakt-md/types0.28.0packages/eleventy/package.json
npm@refrakt-md/types0.28.0packages/highlight/package.json
npm@refrakt-md/transform0.28.0packages/highlight/package.json
npmshiki^3.0.0packages/highlight/package.json
npm@refrakt-md/behaviors0.28.0packages/html/package.json
npm@refrakt-md/content0.28.0packages/html/package.json
npm@refrakt-md/transform0.28.0packages/html/package.json
npm@refrakt-md/types0.28.0packages/html/package.json
npm@refrakt-md/runes0.28.0packages/language-server/package.json
npm@refrakt-md/transform0.28.0packages/language-server/package.json
npm@markdoc/markdoc0.4.0packages/language-server/package.json
npmreflect-metadata^0.2.0packages/language-server/package.json
npmvscode-languageserver^9.0.1packages/language-server/package.json
npmvscode-languageserver-textdocument^1.0.12packages/language-server/package.json
npm@refrakt-md/runes0.28.0packages/lumina/package.json
npm@refrakt-md/skeleton0.28.0packages/lumina/package.json
npm@refrakt-md/transform0.28.0packages/lumina/package.json
npm@refrakt-md/types0.28.0packages/lumina/package.json
npm@modelcontextprotocol/sdk^1.29.0packages/mcp/package.json
npm@refrakt-md/cli0.28.0packages/mcp/package.json
npm@refrakt-md/runes0.28.0packages/mcp/package.json
npm@refrakt-md/transform0.28.0packages/mcp/package.json
npm@refrakt-md/types0.28.0packages/mcp/package.json
npm@refrakt-md/behaviors0.28.0packages/next/package.json
npm@refrakt-md/content0.28.0packages/next/package.json
npm@refrakt-md/transform0.28.0packages/next/package.json
npm@refrakt-md/types0.28.0packages/next/package.json
npm@refrakt-md/behaviors0.28.0packages/nuxt/package.json
npm@refrakt-md/content0.28.0packages/nuxt/package.json
npm@refrakt-md/transform0.28.0packages/nuxt/package.json
npm@refrakt-md/types0.28.0packages/nuxt/package.json
npm@refrakt-md/skeleton0.28.0packages/proof-skin/package.json
npm@refrakt-md/transform0.28.0packages/react/package.json
npm@refrakt-md/types0.28.0packages/react/package.json
npm@refrakt-md/types0.28.0packages/runes/package.json
npm@refrakt-md/transform0.28.0packages/runes/package.json
npm@markdoc/markdoc0.4.0packages/runes/package.json
npmreflect-metadata^0.2.0packages/runes/package.json
npmfast-xml-parser4.5.1packages/runes/package.json
npmpath-browserify1.0.1packages/runes/package.json
npmiso8601-duration2.1.2packages/runes/package.json
npmyaml2.8.2packages/runes/package.json
npm@refrakt-md/types0.28.0packages/skeleton/package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "markdoc",
        "planning",
        "static-site"
      ],
      "is_fork": false,
      "size_kb": 14786,
      "has_wiki": false,
      "homepage": "https://refrakt.md",
      "languages": {
        "CSS": 524015,
        "Vue": 3599,
        "HTML": 34134,
        "Astro": 7800,
        "Shell": 1944,
        "Svelte": 407636,
        "Nunjucks": 2157,
        "JavaScript": 103849,
        "TypeScript": 4808744
      },
      "pushed_at": "2026-07-19T21:58:26Z",
      "created_at": "2026-02-12T08:37:45Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-17T19:17:56Z",
      "description": "Markdoc-powered content platform with semantic runes — structured, themeable, schema-rich sites from plain Markdown",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": null,
      "name": "refrakt.md",
      "type": "Organization",
      "login": "refrakt-md",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/261148987?v=4",
      "created_at": "2026-02-12T08:36:34Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 160
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "@refrakt-md/mcp@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:14:11Z"
        },
        {
          "tag": "@refrakt-md/storytelling@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:14:08Z"
        },
        {
          "tag": "@refrakt-md/marketing@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:14:05Z"
        },
        {
          "tag": "@refrakt-md/media@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:14:02Z"
        },
        {
          "tag": "@refrakt-md/places@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:59Z"
        },
        {
          "tag": "@refrakt-md/skeleton@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:56Z"
        },
        {
          "tag": "@refrakt-md/plan@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:53Z"
        },
        {
          "tag": "@refrakt-md/sveltekit@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:50Z"
        },
        {
          "tag": "@refrakt-md/design@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:47Z"
        },
        {
          "tag": "@refrakt-md/docs@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:44Z"
        },
        {
          "tag": "@refrakt-md/business@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:41Z"
        },
        {
          "tag": "@refrakt-md/react@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:38Z"
        },
        {
          "tag": "@refrakt-md/lumina@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:35Z"
        },
        {
          "tag": "@refrakt-md/learning@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:32Z"
        },
        {
          "tag": "@refrakt-md/transform@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:29Z"
        },
        {
          "tag": "@refrakt-md/vue@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:26Z"
        },
        {
          "tag": "@refrakt-md/language-server@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:23Z"
        },
        {
          "tag": "@refrakt-md/types@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:20Z"
        },
        {
          "tag": "@refrakt-md/svelte@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:17Z"
        },
        {
          "tag": "@refrakt-md/nuxt@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:14Z"
        },
        {
          "tag": "@refrakt-md/next@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:11Z"
        },
        {
          "tag": "@refrakt-md/eleventy@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:08Z"
        },
        {
          "tag": "@refrakt-md/content@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:05Z"
        },
        {
          "tag": "@refrakt-md/runes@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:13:02Z"
        },
        {
          "tag": "@refrakt-md/behaviors@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:59Z"
        },
        {
          "tag": "@refrakt-md/cli@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:56Z"
        },
        {
          "tag": "@refrakt-md/highlight@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:53Z"
        },
        {
          "tag": "@refrakt-md/html@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:50Z"
        },
        {
          "tag": "create-refrakt@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:47Z"
        },
        {
          "tag": "@refrakt-md/ai@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:44Z"
        },
        {
          "tag": "@refrakt-md/editor@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:41Z"
        },
        {
          "tag": "@refrakt-md/astro@0.28.0",
          "kind": "other",
          "published_at": "2026-07-17T15:12:38Z"
        },
        {
          "tag": "@refrakt-md/docs@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:21Z"
        },
        {
          "tag": "@refrakt-md/nuxt@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:18Z"
        },
        {
          "tag": "@refrakt-md/plan@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:15Z"
        },
        {
          "tag": "@refrakt-md/media@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:12Z"
        },
        {
          "tag": "@refrakt-md/types@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:09Z"
        },
        {
          "tag": "@refrakt-md/marketing@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:06Z"
        },
        {
          "tag": "@refrakt-md/skeleton@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:03Z"
        },
        {
          "tag": "@refrakt-md/react@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:19:00Z"
        },
        {
          "tag": "@refrakt-md/design@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:57Z"
        },
        {
          "tag": "@refrakt-md/transform@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:54Z"
        },
        {
          "tag": "@refrakt-md/learning@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:51Z"
        },
        {
          "tag": "@refrakt-md/places@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:48Z"
        },
        {
          "tag": "@refrakt-md/vue@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:45Z"
        },
        {
          "tag": "@refrakt-md/storytelling@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:42Z"
        },
        {
          "tag": "@refrakt-md/sveltekit@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:39Z"
        },
        {
          "tag": "@refrakt-md/business@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:36Z"
        },
        {
          "tag": "@refrakt-md/svelte@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:30Z"
        },
        {
          "tag": "@refrakt-md/runes@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:21Z"
        },
        {
          "tag": "@refrakt-md/mcp@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:33Z"
        },
        {
          "tag": "@refrakt-md/astro@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:27Z"
        },
        {
          "tag": "@refrakt-md/html@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:24Z"
        },
        {
          "tag": "@refrakt-md/editor@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:18Z"
        },
        {
          "tag": "create-refrakt@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:15Z"
        },
        {
          "tag": "@refrakt-md/behaviors@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:12Z"
        },
        {
          "tag": "@refrakt-md/language-server@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:09Z"
        },
        {
          "tag": "@refrakt-md/next@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:06Z"
        },
        {
          "tag": "@refrakt-md/cli@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:03Z"
        },
        {
          "tag": "@refrakt-md/lumina@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:18:00Z"
        },
        {
          "tag": "@refrakt-md/eleventy@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:17:57Z"
        },
        {
          "tag": "@refrakt-md/content@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:17:54Z"
        },
        {
          "tag": "@refrakt-md/highlight@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:17:51Z"
        },
        {
          "tag": "@refrakt-md/ai@0.26.0",
          "kind": "other",
          "published_at": "2026-06-30T07:17:48Z"
        },
        {
          "tag": "@refrakt-md/skeleton@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:19Z"
        },
        {
          "tag": "@refrakt-md/storytelling@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:16Z"
        },
        {
          "tag": "@refrakt-md/plan@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:13Z"
        },
        {
          "tag": "@refrakt-md/mcp@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:10Z"
        },
        {
          "tag": "@refrakt-md/transform@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:07Z"
        },
        {
          "tag": "@refrakt-md/types@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:04Z"
        },
        {
          "tag": "@refrakt-md/media@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:13:01Z"
        },
        {
          "tag": "@refrakt-md/business@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:58Z"
        },
        {
          "tag": "@refrakt-md/marketing@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:55Z"
        },
        {
          "tag": "@refrakt-md/learning@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:52Z"
        },
        {
          "tag": "@refrakt-md/design@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:49Z"
        },
        {
          "tag": "@refrakt-md/highlight@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:46Z"
        },
        {
          "tag": "@refrakt-md/docs@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:43Z"
        },
        {
          "tag": "@refrakt-md/react@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:40Z"
        },
        {
          "tag": "@refrakt-md/vue@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:37Z"
        },
        {
          "tag": "@refrakt-md/runes@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:34Z"
        },
        {
          "tag": "@refrakt-md/places@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:31Z"
        },
        {
          "tag": "create-refrakt@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:28Z"
        },
        {
          "tag": "@refrakt-md/sveltekit@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:25Z"
        },
        {
          "tag": "@refrakt-md/lumina@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:22Z"
        },
        {
          "tag": "@refrakt-md/language-server@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:19Z"
        },
        {
          "tag": "@refrakt-md/svelte@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:16Z"
        },
        {
          "tag": "@refrakt-md/eleventy@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:13Z"
        },
        {
          "tag": "@refrakt-md/next@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:10Z"
        },
        {
          "tag": "@refrakt-md/cli@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:07Z"
        },
        {
          "tag": "@refrakt-md/nuxt@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:04Z"
        },
        {
          "tag": "@refrakt-md/html@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:12:01Z"
        },
        {
          "tag": "@refrakt-md/ai@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:11:58Z"
        },
        {
          "tag": "@refrakt-md/astro@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:11:55Z"
        },
        {
          "tag": "@refrakt-md/editor@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:11:52Z"
        },
        {
          "tag": "@refrakt-md/content@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:11:49Z"
        },
        {
          "tag": "@refrakt-md/behaviors@0.25.1",
          "kind": "other",
          "published_at": "2026-06-24T20:11:46Z"
        },
        {
          "tag": "@refrakt-md/media@0.25.0",
          "kind": "other",
          "published_at": "2026-06-24T19:24:13Z"
        },
        {
          "tag": "@refrakt-md/svelte@0.25.0",
          "kind": "other",
          "published_at": "2026-06-24T19:24:10Z"
        },
        {
          "tag": "@refrakt-md/next@0.25.0",
          "kind": "other",
          "published_at": "2026-06-24T19:24:07Z"
        },
        {
          "tag": "@refrakt-md/plan@0.25.0",
          "kind": "other",
          "published_at": "2026-06-24T19:24:04Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "9c7bd86104cff9e5d909c15ffa1d88eb9e00d703",
          "body": "…-spec-5zzt9q",
          "is_bot": false,
          "headline": "Merge pull request #567 from refrakt-md/claude/multi-language-support…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-17T19:17:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d92ad0c249bd74f39d34ac21db035e6d2a3e28dd",
          "body": "- Flip SPEC-035 (multi-language support) draft -> accepted.\n- Add milestone v0.29.0 \"Multi-language support (i18n foundation)\".\n- Break the spec into 11 work items (WORK-502..512), assigned to v0.29.0\n  and sourced to SPEC-035, following the spec's priority table:\n    502 resolution foundation (P0) \n[…]\no `plan next` surfaces WORK-502\n  (and the independent WORK-510) first.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Avk4pxudSU1DkZcHWxvy3E",
          "is_bot": false,
          "headline": "plan: accept SPEC-035, add v0.29.0 milestone + i18n work breakdown",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-17T15:40:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7e69e1cb845315a01783d1e2a6e4bcb7ec90f2f6",
          "body": "…(v2.2)\n\nMulti-locale sites (route-based trees, switcher, auto-detect) stay a\ndemand-driven Non-Goal, but record the constraints that keep it addable\nlater without breaking changes:\n\n- Locale is render-scoped LocaleContext, never module-global state.\n- Keys stay locale-independent ({scope}.{block}.{\n[…]\n- canonicalSlug (Zone 7) keeps anchors/URLs stable across locale trees.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Avk4pxudSU1DkZcHWxvy3E",
          "is_bot": false,
          "headline": "plan: add multi-locale forward-compatibility constraints to SPEC-035 …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-17T15:35:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81bc77e8ad828d3b4bc27b925568d5181e261e76",
          "body": "Settle all six open questions plus two scope decisions and fold the chosen\nanswers into the design:\n\n- D1 Key derivation: auto-derive {plugin}.{block}.{ref} keys + optional\n  i18nKey override; discoverability via a new `refrakt i18n extract` tool.\n- D2 Plurals: Intl.PluralRules + PluralMap values + \n[…]\nable, and replaces\nthe Open Questions section with a Decisions section.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Avk4pxudSU1DkZcHWxvy3E",
          "is_bot": false,
          "headline": "plan: resolve SPEC-035 open questions (v2.0 -> v2.1)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-17T15:35:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "197451ab35de0e872864984f3fc5794bcab50d0d",
          "body": "Revise the multi-language-support spec in place (v1.0 -> v2.0) to match the\narchitecture as it stands today:\n\n- RunePackage -> Plugin (mergePackages -> mergePlugins, loadRunePackage ->\n  loadPlugin); relocate the proposed translations bundle onto Plugin.\n- Add the SPEC-080 metaFields/blocks label pa\n[…]\napter lang attribute) and an Open Question on config\n  threading scope.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Avk4pxudSU1DkZcHWxvy3E",
          "is_bot": false,
          "headline": "plan: reconcile SPEC-035 (multi-language support) with current codebase",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-17T15:35:26Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "56ce015a2869743cbdd1c2df168b14bd5dd67ea4",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #566 from refrakt-md/changeset-release/main",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-17T15:08:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4b7d5e2c6002553b2d319af4a1574cabdf917747",
          "body": null,
          "is_bot": true,
          "headline": "chore: version packages",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-14T12:59:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf13ce106bae786efabccaa25ba97eadee094c00",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #565 from refrakt-md/claude/milestone-v0-28-0-llvtfa",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-14T12:57:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c13ef43cf6c94e25593efa6c48aa877560e36fed",
          "body": "The `pr` (work/bug), `released-in` (spec), and `supersedes` (work) fields\nadded in this milestone change the generated structure contract. Regenerate\nboth committed copies (root + Lumina) so the contracts drift guard passes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: regenerate structure contracts for new plan attributes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:49:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c731b6931677c6c913c5256de0e9dace16140ac9",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: mark SPEC-114 work item done (WORK-443); accept SPEC-114",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:46:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0063b668880408ac0a652bd9c301e11f1c596568",
          "body": "…C-114)\n\nReplace the undirected `## Dependencies` model with two directed sections so\nthe validator's cycle detection stops firing on prose cross-references.\n\nWORK-443:\n- scanner-core: `KNOWN_SECTIONS` (work + bug) gains canonical `Blocked by`\n  and `Blocks` sections with aliases; `Dependencies` bec\n[…]\nscanner tests for the\ndirected semantics. Full plan suite: 477 passing.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: directional dependency model + cycle-check fix + migration (SPE…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:45:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "74979c1475b88a53c6a0e0ac995855a25413bc5d",
          "body": "Check off criteria, set the pr attribute, record resolutions for the\nbatch-2 items; mark SPEC-049 accepted.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: mark SPEC-049 work items done (WORK-495..499)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:28:50Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "47ae0d75d40da88290a9a7c6a0fb5c1235831f6d",
          "body": "…EC-049)\n\nClose the loop between a spec, the work that implements it, and the PRs\nthat ship it.\n\nWORK-495 — lifecycle statuses:\n- `spec` gains `implemented` / `shipped` + a `released-in` attribute;\n  `decision` gains a terminal `rejected`. All wired into `enums.ts`\n  terminal/achieving sets, config \n[…]\n+ migrate-pr-attrs.test.ts (git-fixture).\nFull plan suite: 466 passing.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: spec lifecycle statuses + PR linkage + traceability rollups (SP…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:27:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "80473b128edea7855f3931661f8ce234e286ccd8",
          "body": "Check off acceptance criteria and record resolutions for the batch-1\nitems; mark SPEC-117 accepted. WORK-500 stays pending by decision.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: mark SPEC-117 work items done (WORK-491/492/493/494/501)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:03:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "81896e6b5c4796fe3d06df4343fe6341f3e87051",
          "body": "…117)\n\nMake `enums.ts` the single source of truth for the plan status/severity/\npriority/complexity vocabularies, and give work items honest terminal\nstates so retiring stops masquerading as completion.\n\nWORK-492 — vocabulary consolidation:\n- `enums.ts` gains derived `TERMINAL_STATUSES` / `ACHIEVING\n[…]\ning unbuilt-rune items) is\ndeferred by decision — those stay `pending`.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01Fd6UPkMKomK5isQCcmctQX",
          "is_bot": false,
          "headline": "plan: consolidate status vocabulary + add terminal work states (SPEC-…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T21:00:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3b310b9b84a52d2c9be91776d86c991eb716a2f8",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #562 from refrakt-md/changeset-release/main",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-09T20:27:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "283ce5a3d512ed99165008e1f5b2b24383d0bb0d",
          "body": "…b-jcq1tx",
          "is_bot": false,
          "headline": "Merge pull request #563 from refrakt-md/claude/plan-runes-status-voca…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-09T20:27:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22fb2982435358a2c0ad4b81beb5d904fa9c47f6",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #564 from refrakt-md/claude/spec-103-data-rune",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-07-09T14:18:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "816b0d17916a22df26d50d5c2c1abdff1b6a4072",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "chore: changeset for the data rune (SPEC-103, minor)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T14:08:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e35e24b7a87bba6d2f3f733d0d3bc0ca1cdc3f19",
          "body": "Author-facing docs for the data rune (SPEC-103):\n- live CSV examples (bare table, chart, sortable datatable) backed by a\n  committed site/examples/revenue.csv\n- shaping (where/sort/columns/limit/offset) + the typing/data-value channel\n- JSON/NDJSON (root/orient/key-column/dotted paths) worked exampl\n[…]\nr-tier note; grouped attributes reference\n- registered in the runes nav\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "docs(runes): data rune page with live CSV/JSON examples (WORK-488)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T14:06:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b26cd4d3d6850bf0b6166b5503f8b823086451d2",
          "body": "Extend the datatable sort comparator to prefer a cell's data-value over its\ntext (mirroring chart's dataset.value ?? textContent), so human-formatted\nnumbers (currency, thousands separators, units) sort by their real value.\n\n- RowData carries a per-cell dataValues array (data-value ?? null)\n- numeri\n[…]\ne one host-side change SPEC-103 takes; also fixes hand-authored tables.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(behaviors): datatable data-value-aware sort (WORK-487)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T14:02:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "82b66b8fbf50f389511e52d4630a265bd7f65487",
          "body": "The JSON-family adapters on the WORK-417 { headers, rows } contract.\n\n- jsonAdapter: root (dotted path or JSON Pointer), orient records/values\n  (auto-detected) + index (explicit, key-column), nested objects flattened\n  to dotted headers so columns plucks them by exact match; array leaves join\n- ndj\n[…]\nover\nJSON/NDJSON — indistinguishable from CSV downstream. 21 new tests.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(runes): data rune JSON + NDJSON adapters (WORK-486)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T13:58:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9a519fdd8020da26f53e29042ee42d94f3a5f3c0",
          "body": "Creates milestone v0.28.0 grouping the plan status/lifecycle work:\n- SPEC-117: WORK-491 (drift fixes), WORK-492 (vocab consolidation),\n  WORK-493 (cancelled/superseded work statuses), WORK-494 (docs)\n- SPEC-049: WORK-495 (spec implemented/shipped + ADR rejected),\n  WORK-496 (pr attribute), WORK-497 \n[…]\ne pending unbuilt runes),\n  WORK-501 (general status-correctness audit)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BBXuNbHZgAkKkPZ44WLvvR",
          "is_bot": false,
          "headline": "plan: add v0.28.0 plan-model-hardening milestone and work breakdown",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T13:57:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4b44b9e7b3c859a312995b403e844cd4e8213745",
          "body": "…tates\n\nAdds a draft spec covering:\n- New terminal `work` statuses `cancelled` and `superseded` (+ `supersedes` attr)\n- Consolidating the status vocabulary into a true single source of truth\n  in enums.ts, with derived terminal/actionable/achieving helpers\n- Fixing live drift bugs where the MCP serv\n[…]\nrejected), which stays as the owner of the spec-side lifecycle changes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BBXuNbHZgAkKkPZ44WLvvR",
          "is_bot": false,
          "headline": "plan: add SPEC-117 for status vocab consolidation and terminal work s…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-07-09T13:33:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "48a70bb74fec8d44501929cbd097ba7bb4dcb0c5",
          "body": "…re (WORK-417)\n\nThe tier-1 spine of SPEC-103: a preprocess-time `{% data %}` rune that reads\nan external CSV/TSV file through the SPEC-113 ProjectFiles seam and emits a\nMarkdoc `table` node that chart and datatable consume with no structural edits.\n\n- data-adapters: RFC-4180 delimited parser + CSV/T\n[…]\nNo edits to chart.ts/datatable.ts. 37 new tests; contracts regenerated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(runes): data rune preprocessor + CSV/TSV adapter + projection co…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T09:57:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b39c45bbbc15e91fbc755855644d3438c928692e",
          "body": null,
          "is_bot": true,
          "headline": "chore: version packages",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-30T09:37:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f0a71fe987ebb575f6ab6f24db65165dafa16ef2",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #561 from refrakt-md/claude/milestone-v0-27-0-yqiu8v",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-30T09:34:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "971fa1f2dca344a6ee700a578f32b6bb42a35a79",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "chore: changeset for the ProjectFiles seam (SPEC-113, minor)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T09:20:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "82cb66022af4f189efd8decdf984b65f82a092f6",
          "body": "…n (WORK-485)\n\nNew \"Hosted & In-Memory Builds\" page documenting the SPEC-113 seam for\nadapter/host and plugin authors:\n- the ProjectFiles contract (keys-not-paths, containment, sync boundary)\n  and the three stock providers, plus when to read through it\n- the fetch-then-build recipe (tarball-at-SHA \n[…]\nADR-025\n\nRegistered in the Extend nav and linked from the Extend index.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "docs(extend): ProjectFiles contract + fetch-then-build materializatio…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T09:19:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd8f8710c493b1c53c8c1e906d200b3dc6025112",
          "body": "…ructure-1fakg6",
          "is_bot": false,
          "headline": "Merge pull request #560 from refrakt-md/claude/refrakt-plan-docs-rest…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-30T09:06:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2d06751ceb4deafb2b8ed462051652673895258",
          "body": "…build (WORK-484)\n\nFinish the SPEC-113 consumer migration and the virtual entry point, and\nprove a complete site builds from a pure in-memory Map with no fs access.\n\n- loadContentFromTree: accepts projectFiles + gitTimestamps (+ a\n  sandboxExamplesDir key), threading the provider so snippet/sandbox/\n[…]\n is\nunchanged; the provider path is exercised by the new fs-free tests.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(content): fileRoots/plan scan via ProjectFiles + in-memory full …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T09:01:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "811027afd52bba26509ba301573c2114bc70c2bf",
          "body": "PlanHub was launched prematurely and isn't fully capable yet, so stop\ndocumenting it in the /plan docs until it's ready. Replace it with\ncoverage of the publishing paths that ship today.\n\n- Delete the dedicated PlanHub reference page\n- Add \"Publish a plan site\": plan serve / plan build for local bro\n[…]\n\ncontributing guide, nav rune example) are intentionally left in place.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01FgyQG4vKk2SLusjmsLVAKY",
          "is_bot": false,
          "headline": "docs(plan): remove PlanHub, focus on publishing and integration",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T08:59:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a173baaf209f7790d161357bee87d9d7f86e2bec",
          "body": "…483)\n\nClose the main SPEC-113 gap: read-file.ts and the snippet/expand/file-ref\npipelines called node:fs directly, bypassing the injectable seam, so tree\nmode was not actually fs-free. Delegate all I/O to the WORK-481 provider.\n\n- read-file.ts: drop node:fs + the resolveSnippetPath containment\n  re\n[…]\nmoryProjectFiles map (and a root-escape is still denied in memory mode)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(runes): snippet/expand/file-ref read through ProjectFiles (WORK-…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T07:46:13Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "802bbad7509e15577d90caee5a3731a41864269c",
          "body": "…ersal gap (WORK-482)\n\nRoute the sandbox example read seam through the WORK-481 ProjectFiles\nprovider. The `examplesDir + '/' + src` directory join was previously an\nunguarded string concat that could climb out of the project; resolving it\nthrough the provider means a root-escaping `src=\"../…\"` is d\n[…]\n and never\n  leaks an out-of-root file, in both memory and fs providers\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(sandbox): migrate sandbox reads to ProjectFiles + close src trav…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-30T07:29:37Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0fec15c361b136f78edb2ba60ed84f6026101b29",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #556 from refrakt-md/changeset-release/main",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-30T07:13:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eea8cb7ba9fc76bd18ef9d3889471169418dda46",
          "body": null,
          "is_bot": true,
          "headline": "chore: version packages",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-29T19:38:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe64a3281eeb3f1400188b87cf989977481e6922",
          "body": "…hake\n\nfix(transform): always ship carousel.css in tree-shaken builds",
          "is_bot": false,
          "headline": "Merge pull request #559 from refrakt-md/claude/fix-carousel-css-trees…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-29T19:36:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6b7567deadb6cbe458563fcbcd446e6ef821425",
          "body": "Carousel is a shared layout mode (data-layout=\"carousel\", SPEC-100) adopted\nby feature/cast/gallery, not a data-rune=\"carousel\" — so per-rune CSS usage\nanalysis never saw it and the production tree-shaker dropped the theme's\ncarousel.css skin. The JS-injected .rf-carousel__nav buttons then rendered \n[…]\n + UA gray; with the fix it is border-radius:50% +\nsurface bg + shadow.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "fix(transform): always ship carousel.css in tree-shaken builds",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-29T19:30:22Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2ceade9bfa8b7a0beb2989fc45a05bc96b25e059",
          "body": "changesets: add SPEC-099/100/108 milestone features for v0.26.0",
          "is_bot": false,
          "headline": "Merge pull request #558 from refrakt-md/claude/v0.26.0-changesets",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-29T18:45:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7988847c03a694bf37589b2740954758f03d5f58",
          "body": "The 15 milestone work items (WORK-466–480) were merged without changesets,\nso the pending set would only cut a patch (0.25.2). Add three spec-scoped\nminor changesets covering the feature layout axis, carousel shared layout\nmode, and reading register — bumping the fixed-mode group to 0.26.0.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "changesets: add SPEC-099/100/108 milestone features for v0.26.0",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-26T08:38:53Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "dcfa65e55f96d9c4c369a7bb506846c6a1359a7f",
          "body": "feat(preview): toolbar code-view tidy + container-query collapse, responsive feature examples",
          "is_bot": false,
          "headline": "Merge pull request #557 from refrakt-md/claude/preview-viewport-examples",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T08:22:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54a7d9571aea31e0edd152bf1b0a860095b350c9",
          "body": "…l corners\n\nRemove the toolbar's horizontal padding (controls sit flush to the\ncanvas edges) and the .rf-preview__toolbar-left gap. Clip\n.rf-preview__source with overflow:hidden so its rounded border holds at\nthe bottom too (the code block's square fill was bleeding past it) —\nmatching the canvas clip.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "style(preview): flush toolbar, drop left-group gap, round source pane…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T08:16:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fb3765548355b1d175a58fc221155ccccfa1cfb5",
          "body": "The media-position=\"end\" hero with a wireframe sandbox beside the\ncontent was cramped at the md breakpoint; collapse at lg so the sandbox\nhas room. Pre-existing rough edge, surfaced while reviewing the\ncontainer-query collapse change.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(hero): collapse the beside sandbox example at lg, not md",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T08:10:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "63077cb69914c8ae3c53d485d9f570361e5c67af",
          "body": "… examples\n\nConvert split.css beside→stack collapse from @media to @container so it\nkeys off the rune's available width (its nearest query container —\n.rf-page-content on a page) instead of the global viewport. Make the\npreview viewport frame a container so the collapse — and carousel\ncollapse-to — \n[…]\nss (most visible on docs sidebar\npages). Composes with WORK-489 carousel collapse-to (host-as-container\nstays a closer container).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "WORK-490: container-query beside-layout collapse + responsive feature…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:58:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "693cf13f01df1936ed0da640dd3c7fc5ecef5b2a",
          "body": "…code view\n\nMove the view-mode toggle (preview ⇄ code) into its own left-hand toolbar\ngroup, apart from the controls that tune the rendered preview. Hide the\nviewport selector and theme toggle while the code view is active — they\nact on a canvas that isn't shown — retaining and reapplying their state\non switch back. Adds a left toolbar group + [hidden] override in CSS and\ntwo behavior tests.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(preview): split view toggle left, hide preview-only controls in …",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:43:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "06c49ea0639b1ed6a7d3838dc9e638a033b4fbce",
          "body": "…av-fix\n\nfix(carousel): feature carousel gap + nav buttons, container-query collapse-to",
          "is_bot": false,
          "headline": "Merge pull request #555 from refrakt-md/claude/feature-carousel-gap-n…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:35:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87837157eeb3f28e48028c35ad345da53c832a6f",
          "body": "Make collapse-to=\"carousel\" container-query driven by turning the host\ninto its own query container ([data-collapse-to=\"carousel\"] gets\ncontainer-type: inline-size) and converting the sm/md/lg collapse-to\nblocks in skeleton carousel.css from @media to @container. The flip now\nkeys off the rune's own\n[…]\nfeature-grid @media→@container migration is deferred (noted in\nWORK-489 non-goals — high blast radius, needs cross-layout review).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "WORK-489: container-query collapse-to-carousel + preview simulation",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:27:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4ff73f124a4b67db0c8387ab674147e5faa4b221",
          "body": "Incidental lockfile normalization (npm added a `peer: true` marker on an\noptional darwin dependency during install). No dependency changes.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "chore: sync package-lock peer flag from install",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-26T07:25:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4b66426f5f3963e34373fbbaef9bc53af145379c",
          "body": "Foundation of SPEC-113: one synchronous ProjectFiles interface\n(read/list/exists over normalized POSIX project-root-relative keys, with\ncontainment as a contract) plus filesystem, in-memory, and recording\nproviders, consolidating the ad-hoc fs seams at the pipeline edges.\n\n- ProjectFiles interface +\n[…]\nport\n- 19 unit tests covering normalization, containment, and recording\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01WSxGnPtB3nBcbLQQ4Px33Q",
          "is_bot": false,
          "headline": "feat(types): add ProjectFiles seam interface + providers (WORK-481)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-26T07:24:55Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "34464bb393a38eafd23ee56fd616c42fc674cecd",
          "body": "WORK-481 was claimed by newly-merged milestone work on main; pick the\nnext free ID (highest on main is WORK-488).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "plan: renumber carousel CQ work item WORK-481 → WORK-489",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:15:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "decb8d5fb16dce91fa4eb77abf6327ec950ce202",
          "body": "The shared carousel behavior computed its scroll distance from\ngetComputedStyle(track).gap; an unset flex gap computes to \"normal\",\nso parseFloat→NaN made scrollBy a silent no-op. Read columnGap and\nguard non-finite values. Add the missing gap on Lumina's\n[data-layout=\"carousel\"] feature track. Fix \n[…]\naffolds WORK-481 for the container-query migration that would let\ncollapse-to=\"carousel\" be demonstrated via the preview selector.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(carousel): gap between feature slides + working prev/next nav",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:15:34Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "069cc698b6fda066a2676fe294fb6a9733233c6b",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #554 from refrakt-md/claude/v0-27-0-planning-sgq68k",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T07:10:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24abc73c9b6996f708a130fe3b443d5f2566fffd",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #553 from refrakt-md/claude/spec-108-editor-dropcap",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T06:56:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da3260879be7cd8a9b058d3510f52aed29f00648",
          "body": "Surface the dropcap toggle in the block editor only when a block's body\nresolves to reading=\"prose\", derived from the same shared contract the\nengine uses — no per-rune allowlist.\n\n- server: makeRuneConfigResolver() joins each rune to its RuneConfig\n  (typeName for core, separator-insensitive name f\n[…]\nes gate free.\n- test: rune-config-resolver covers the name↔config join.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-479: editor dropcap toggle derived from reading register",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-26T06:50:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "12ad0c6611a0e280945cb83e5ee84c9904ee3fcf",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-479: start editor dropcap affordance",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-26T06:43:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "45a852e19f97b133b1ef218ac5448b21926243f9",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #552 from refrakt-md/claude/docs-markdoc-fences",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-26T06:33:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcb80af75676ea225fcfc2f72a4e496da2582c7f",
          "body": "Several code blocks demonstrating Markdoc rune syntax ({% ... %}) were\nfenced as ```md / ```markdown, which Shiki highlights as plain Markdown —\nso the {% %} tags rendered unhighlighted. Retag them ```markdoc (the\nlanguage that highlights rune tags, attributes, and string values) across\nsurfaces, di\n[…]\ne strings, or the\nJinja .njk template — stay on their correct language.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "docs: tag rune-syntax code blocks as markdoc, not md/markdown",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T16:14:28Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "70e98c1c4fcf18f080c7df51196bdcfdb38d7d87",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #551 from refrakt-md/claude/spec-108-gallery-docs",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T16:00:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1cddfa61b110c65f37d4c02b1feb6b9bdfe9cd24",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-480: mark done — reading-role gallery subject + docs",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T15:19:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5d456064efb8147acd3aa36cb42be18af063c109",
          "body": "Add a dedicated reading subject to the gallery — a long body rendered at\neach register (fine/ui/prose) plus the editorial-header composition\n(width=full + reading=prose at a capped measure) — emitted as a synthetic\n`reading` group so it rides the existing light/dark documents and per-cell\nclipping. \n[…]\nan author-facing Reading section + axes-table\nrow in runes/surfaces.md.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-480: reading-role gallery subject + docs",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T15:18:35Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9aa2b77fbbc85909910626e1ea579c78f9228f83",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #550 from refrakt-md/claude/spec-108-lumina-prose",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T14:58:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd6daae339b387d423f0366513b7d9fa2860fdc6",
          "body": "Lumina now interprets [data-reading]: dimensions/reading.css caps the measure\n(--rf-measure, distinct from width), sets paragraph rhythm + running-text niceties\n(text-wrap, hanging punctuation, link underline) for prose, and a quieter treatment\nfor fine — keyed on the attribute, not rune-name lists.\n[…]\nry visual guard for the\neditorial-header composition lands in WORK-480.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-478: Lumina prose interpretation + generalised dropcap",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T13:30:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "04bd2a41f899287884d7eb4b55e97c0967f1faf5",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #549 from refrakt-md/claude/spec-108-reading-defaults",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T13:19:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5477161471828097f890430525b4c7b662871e46",
          "body": "Make the reading register actually drive output. Per-rune: defaultReading 'prose'\non PullQuote/TextBlock/Lore, 'fine' on Sidenote — each emits data-reading on its\nbody section. Layout/region: the layout engine emits data-reading on a content-\nsource slot when its reading is set (ui suppressed); blog\n[…]\nck data-reading). Lumina styling of [data-reading=\"prose\"] is WORK-478.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-477: reading per-rune + layout/region defaults",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T12:19:47Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f49038ccd968d252a36ece23896e416f9f2a05c0",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #548 from refrakt-md/claude/spec-108-reading-role",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T12:01:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef476679ead0c5ff1331680bc26e18151c12825c",
          "body": "The shared SPEC-108 contract: packages/transform/src/reading.ts defines the\nReadingRegister vocabulary (fine|ui|prose), coerceRegister (validate-or-undefined),\nresolveReading() with precedence author ▸ rune ▸ region ▸ ui, and the\nREADING_CAPABILITIES table (only prose enables dropcap). RuneConfig.de\n[…]\n32 transform/runes tests\ngreen incl. the new resolver + emission tests.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-476: reading-register engine resolver + data-reading emission",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:54:43Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f916348c4df72a7beeb4af3f9e2858374574623c",
          "body": "…ut-mode",
          "is_bot": false,
          "headline": "Merge pull request #547 from refrakt-md/claude/spec-100-carousel-layo…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T10:43:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4eab338452d042f88d9a9a886bda0508925ccdb0",
          "body": "- Accept SPEC-113 (ProjectFiles seam) and SPEC-103 (data rune); both draft → accepted.\n- SPEC-113 breakdown: WORK-481 (interface + fs/memory providers + recordable\n  wrapper) → WORK-482 (sandbox migration + src containment), WORK-483\n  (snippet/expand/file-ref), WORK-484 (fileRoots + plan scan +\n  l\n[…]\nestone doc \"Before starting\" updated to reflect acceptance + breakdown.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YW2V4hEHLke61dTXMUWfYX",
          "is_bot": false,
          "headline": "plan: accept SPEC-103 + SPEC-113, break into v0.27.0 work items",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:22:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "df2985697024d261d5bb808143221a569c154bf3",
          "body": "Second adopter proving zero-per-rune-behavior-code adoption: cast accepts\nlayout=\"carousel\" (matches migrated onto the canonical const), its members <ul>\nbecomes the carousel track (data-name members→items), and .rf-cast--carousel sets\ncast's --rf-carousel-slide — the track, snap, and nav all come f\n[…]\n regenerated; 288 business +\nlumina tests green; site prerenders clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-475: cast adopts carousel + carousel docs",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:20:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "5493faecf78c6c3fc738b10869797618d3f80001",
          "body": null,
          "is_bot": false,
          "headline": "plan: mark WORK-473/474 done",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:13:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcafeb41ceae309a283f0ae19af3eac125d066c4",
          "body": "Feature adoption (WORK-474): feature accepts layout=\"carousel\" (from the canonical\nconst) and its feature-items container is now the carousel track — autoLabel marks\nthe dl data-name=\"items\" (the shared contract token; renamed from \"definitions\",\n.rf-feature__definitions → .rf-feature__items). The s\n[…]\neting/lumina/behaviors tests green (contracts + CSS\ncoverage included).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-473/474: feature adopts carousel + collapse-to dial",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:12:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1ec61ede691ccbcd42488aada0972413800ccf7f",
          "body": "…ildren\n\nSlides are now the track's direct element children rather than requiring\ndata-name=\"item\" on each. A rune keeps its own item marker (gallery's\ndata-name=\"item\" figures, feature's definition items) and adopts with no renaming —\nthe zero-per-rune-code goal. Gallery is unaffected (its items ar\n[…]\nared CSS, the const contract doc, and the rune-authoring guide updated.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-470/472: refine carousel slide contract to the track's direct ch…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:04:16Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "91700693f2b9a49f8cdb8f70c513a7c76b49556d",
          "body": "Pressure-test edits grounded in chart/datatable behaviour and the SPEC-070\nmatcher:\n\n- Typing & the data-value channel: structure composes for free but typing does\n  not. chart already honours per-cell data-value (parseFloat); datatable sorts\n  on text via localeCompare(numeric). Narrow the \"zero ch\n[…]\n\n  an architectural limit. Error node = callout, not a malformed table.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YW2V4hEHLke61dTXMUWfYX",
          "is_bot": false,
          "headline": "SPEC-103: sharpen typing story and re-anchor src read on ProjectFiles",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T10:01:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8058ef61ca4f0882b64cd840d97dbadb152c80aa",
          "body": "Generalise gallery's setupCarousel into a standalone carousel behavior bound on\n[data-layout=\"carousel\"] via the WORK-471 dispatch — works on any rune emitting the\nshared contract, zero per-rune behavior code. It scopes slides to the track\n(:scope > [data-name=\"item\"]), mounts nav into the track's c\n[…]\nbehavior tests cover prev/next, keyboard, nav mount point, and\ncleanup.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-472: lift the carousel behavior out of gallery (block-agnostic)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:59:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "af14bbd6183947f4aea0687b4562218363c323da",
          "body": "Add a dispatch path that mounts a behavior by data-layout value, independent of\ndata-rune — the linchpin that makes carousel adoption config-only. New\nlayoutModeBehaviors registry + registerLayoutModeBehaviors() (add-only) +\ngetLayoutModeBehaviorNames(); initRuneBehaviors now scans [data-layout] and\n[…]\nross\nrune/no-rune hosts, single-mount, cleanup, and add-only semantics.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-471: attribute-triggered behavior dispatch path",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:50:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0f8d1381f782c707164f20b42551e50c6f3e887f",
          "body": "Graduate `carousel` into the ADR-018 canonical pool (LAYOUT.carousel) now that it\nhas 3+ identified consumers. Document the shared carousel DOM/behavior contract —\nhost data-layout=\"carousel\", track data-name=\"items\", items data-name=\"item\",\nblock-agnostic behavior bound on [data-layout=\"carousel\"] \n[…]\ny keeps its inline values until\nWORK-472 migrates it onto the contract.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-470: carousel canonical token + shared DOM contract",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:47:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "234409aa7835e62dab1b6a6fa1e75a7a4f158037",
          "body": "The Vite adapters' content HMR has the same whole-corpus shape as the hosted\npath — a single .md save nulls the binary site cache and full-reloads. Record\nthat the incremental engine pays off twice (hosted latency + local DX) and\nunlocks scoped reloads in place of the blanket full-reload.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YW2V4hEHLke61dTXMUWfYX",
          "is_bot": false,
          "headline": "ADR-025: note local dev HMR as the second beneficiary",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:44:45Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7328210b7d2d3f268b1553019732aabe7b7a2b51",
          "body": "…t-axis",
          "is_bot": false,
          "headline": "Merge pull request #546 from refrakt-md/claude/spec-099-feature-layou…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T09:44:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc27f2f6a978c3e0cfa313d29247a5b85919d7c8",
          "body": "…ng image\n\nThe new layout example referenced ![diagram](/shot.png), which doesn't exist in\nthe site's static assets; SvelteKit's prerender treats the broken link as a fatal\n404 and failed the Cloudflare Pages build. Swap the media for a codegroup, matching\nthe existing media-position examples on this page. Site build prerenders clean.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-469: fix feature docs example — use codegroup media, not a missi…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:40:21Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9f5c7638d23052d6cb930a237f088d2094a1f3bf",
          "body": "…posed)\n\nRecords the target architecture for per-file incremental rebuild and the one\npiece of groundwork the SPEC-113 seam should carry (a recordable read wrapper),\ndeferring the engine to a future spec.\n\n- Registry-as-firewall model with three blast-radius tiers (content-only,\n  registry-delta, st\n[…]\nySet}.\n- Links SPEC-113's \"no incremental rebuild\" non-goal to the ADR.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YW2V4hEHLke61dTXMUWfYX",
          "is_bot": false,
          "headline": "ADR-025: incremental rebuild via dependency-tracked invalidation (pro…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:35:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "50a780d1f17a879025f38b96bf1ecef9a456e229",
          "body": "…scope\n\n- Correct the sync claim: the preprocess phase is already async (hooks are\n  awaited); the irreducible sync surface is the transform-time sandbox read,\n  not the whole pipeline. Preprocess readers stay sync for uniformity.\n- Document the one-map / tree-derived-from-it materialization and the\n[…]\nile invalidation (it makes\n  reads recordable) but does not deliver it.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01YW2V4hEHLke61dTXMUWfYX",
          "is_bot": false,
          "headline": "SPEC-113: sharpen sync rationale, add warm-map + incremental-rebuild …",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:29:21Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4216f8b0e420ad9dfcf6cb764e0e3253a5e5bc50",
          "body": "Removing the media-position → definitions-grid variant collapses feature's\nper-variant contract entries (3× → 1×) and drops the .rf-feature--definitions-grid\nselector. Regenerated via `refrakt contracts --site main` to both the repo-level\nfile and Lumina's shipped copy; packages/lumina/test/contract\n[…]\nedes the WORK-468 deferral note — contracts are updated,\nnot deferred.)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-468: regenerate structure contracts for the layout axis",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:24:15Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8528ebbaf3d06eb7ef1d549af37c5ce0047924fe",
          "body": "Check off acceptance criteria and record resolution summaries for the feature\nlayout-axis work. WORK-468 notes the deferred structure-contracts regeneration.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "plan: mark SPEC-099 work items (WORK-467/468/469) done",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:21:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2af08ee922d0fc523a2978fb05e9ce9efe10c23d",
          "body": "Below the existing `collapse` breakpoint, a `grid` layout reflows to a single\ncolumn — CSS-only, sharing the same `data-collapse` hook the media split uses\n(default sm/640px, mirroring layouts/split.css; `never` opts out). No new\nattribute, no behavior code. Document the `layout` axis and the shared\n[…]\n / axis-independence / unchanged-when-unset tests landed with WORK-467.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-469: feature grid collapse reflow + docs",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:20:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f8b004f376fc114c3d946a164f74091fb3a782cd",
          "body": "Move the feature grid/stack decision entirely onto [data-layout], decoupled from\nmedia placement. Remove the SPEC-091 media-position → definitions-grid config\nvariant; the skeleton arrangement (display: grid vs block) and the lumina item\nchrome (carded tiles vs flat rows) now key off [data-layout=\"g\n[…]\nmmand\nis itself stale. Deferred to avoid shipping a divergent artifact.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-468: retire media-position → definitions-grid coupling",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:18:05Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "acc1120906a8da4c517dc86e509a4d5b9fa7df85",
          "body": "Add a `layout` attribute (grid|list, imported from the ADR-018 canonical const) to\nthe feature rune. The effective value is resolved in the transform —\nattrs.layout ?? derive(media-position) (stacked → grid, beside → list) — and emitted\nas a single always-present `layout` meta, so author override an\n[…]\nsition → definitions-grid\ncoupling and the CSS move follow in WORK-468.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-467: feature layout axis + transform-level default resolution",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T09:10:04Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b7e08bcb6e84769916d192e03f510d951f08931d",
          "body": "Add the shared canonical-layout-token const that ADR-018 establishes, seeded with\ngrid and list. LAYOUT named tokens + CanonicalLayout type + CANONICAL_LAYOUTS\narray + a layoutMatches(canonical, ...local) helper that composes canonical picks\nwith rune-local literals. Re-exported from @refrakt-md/run\n[…]\nuthoring guide; unit\ntest locks the seed set and composition behaviour.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "WORK-466: canonical layout vocabulary const (ADR-018)",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T08:39:09Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "ad0a14217ef824493de7a0f66c354dca1a286ef8",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #545 from refrakt-md/claude/v0.26.0-milestone-2vuxi9",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-25T08:33:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b03e164cc9efcb099ce862aeabc91925775f6cb",
          "body": "Pin the decision that layout=\"carousel\" and \"grid desktop → carousel mobile\" are\ndistinct intents. layout=\"carousel\" is an all-viewport carousel with graceful\ndegradation (static row when items fit; scroll + JS nav only on overflow), never\nautomatic. The responsive case is a separate composition: a \n[…]\n99 ruled out. Reflected in the acceptance criteria and in WORK-473/474.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "SPEC-100: define collapse-to dial; fix carousel scope as all-viewport",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T08:27:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17d26786ac3e3c09cf69aa5d72c4eb02afea5d89",
          "body": "…tems\n\nAccept the canonical-layout-vocabulary decision and all three milestone specs,\nand scaffold the work breakdown (WORK-466..480), all assigned to v0.26.0 with\nsource links and dependency ordering:\n\n- SPEC-099 (feature layout axis): WORK-466 canonical const → 467 layout axis +\n  transform-level \n[…]\nof the bodies so the validator's ref-parsing builds no\nspurious cycles.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "v0.26.0: accept ADR-018 + SPEC-099/100/108, break down into 15 work i…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T08:10:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "029208c7ab8d52d50fcc7ae80e1689138e5e46ca",
          "body": "Pin the two pre-breakdown decisions: the media-derived layout default resolves in\nthe feature transform (attrs.layout ?? derive(media-position), single always-emitted\ndata-layout) rather than a config variant that would collide with the author\noverride; and SPEC-099, as ADR-018's first consumer, cre\n[…]\ned CSS\nhook for the grid reflow. Threaded into the acceptance criteria.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "SPEC-099: record default-resolution and const-ownership decisions",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T08:00:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c37d9e345e0c2c4a4da03045383fd9503130fa0c",
          "body": "…ilestone\n\nRecord the load-bearing decisions SPEC-100's phasing left implicit: the carousel\nbehavior needs a new attribute-triggered dispatch path ([data-layout=\"carousel\"],\nnot the current data-rune-keyed map), keeps gallery's items/item data-name tokens\nas the shared contract (lightbox couples to \n[…]\n\ncan proceed in parallel; only Phase B adoption needs SPEC-099 landed).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "SPEC-100/v0.26.0: pin carousel design notes, pull SPEC-099 into the m…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T07:51:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b757d395ee65d898f0cb613086dedac81da73d0d",
          "body": "Add §6 defining the shared resolution contract: the ordered ReadingRegister\nvocabulary, the three sources (author attr, RuneConfig.defaultReading, content\nLayoutSlot reading default), a pure resolveReading() with author ▸ rune ▸ region\n▸ ui precedence, the ui-suppression emission guard, and a declar\n[…]\ntor consumes. Threaded into the acceptance criteria and\nwork breakdown.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "SPEC-108: pin down the register-resolution data shape",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T07:41:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "987cfec85acd9386e34447a1c5dbb93f98fe85ec",
          "body": "Capture the decision that dropcap is gated on the resolved `prose` reading\nregister rather than a rune allowlist (with `textblock` as the reach-in for the\nnon-rune article body), and that a visual editor derives the dropcap toggle from\nthe resolved register instead of a per-rune list. Reflected in §3, the acceptance\ncriteria, and the provisional work breakdown.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_014RDL9XUNCFGbhYuo2dEANS",
          "is_bot": false,
          "headline": "SPEC-108: record dropcap prose-gating and editor-affordance decisions",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-25T07:37:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "354d7e244c9963ccbbbb38092b0f8cf563d9a507",
          "body": null,
          "is_bot": false,
          "headline": "Merge pull request #544 from refrakt-md/changeset-release/main",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-24T20:07:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "835d89d48e06a96b32f892f093f94a51798da6d1",
          "body": null,
          "is_bot": true,
          "headline": "chore: version packages",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-24T20:06:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d5fb9f61c8db04711b87b0f75e6eca57d08d8c3",
          "body": "…s-hhwiym",
          "is_bot": false,
          "headline": "Merge pull request #543 from refrakt-md/claude/steps-diagram-docs-bug…",
          "author_name": "Björn Andersson",
          "author_login": "bjornolofandersson",
          "committed_at": "2026-06-24T20:03:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35d765897c5c7799a9f5f753bea4f8b1b870445f",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BNQ48HwdBnixtKxBWEGrHJ",
          "is_bot": false,
          "headline": "Add changesets for steps, diagram, and mobile docs nav fixes",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-24T19:54:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ca607805724f7e653b0cfaee97d291a993e2a848",
          "body": "The .rf-mobile-panel--nav top override and the base .rf-mobile-panel top rule\nhave equal specificity (0,1,0) and both live in @layer skeleton, but mobile.css\nis imported after docs.css — so on source order the base rule won and the panel\ndocked at the site-header height, leaving its first link cover\n[…]\n to a two-class selector (0,2,0) so it\nwins regardless of import order.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BNQ48HwdBnixtKxBWEGrHJ",
          "is_bot": false,
          "headline": "Fix mobile docs nav panel docking under site header instead of toolbar",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-24T19:45:30Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "47d46c0ab2bac52739d8c479c4a8780052a5fbe6",
          "body": "… overlap\n\n- steps: scope the title block-display to the leading bold of the first\n  paragraph (.rf-step__content > p:first-child > strong:first-child) so inline\n  <strong> in step body text no longer breaks onto its own line.\n- diagram: resolve theme tokens to hex before handing them to mermaid. Me\n[…]\n  which (with the toolbar's higher z-index) hid the first sidenav link.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01BNQ48HwdBnixtKxBWEGrHJ",
          "is_bot": false,
          "headline": "Fix steps strong line-breaks, mermaid non-hex colors, mobile docs nav…",
          "author_name": "Claude",
          "author_login": "claude",
          "committed_at": "2026-06-24T19:33:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        }
      ],
      "releases_count": 100,
      "commits_last_year": 2810,
      "latest_release_at": "2026-07-17T15:14:11Z",
      "latest_release_tag": "@refrakt-md/mcp@0.28.0",
      "releases_from_tags": false,
      "days_since_last_push": 2,
      "active_weeks_last_year": 22,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 0
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 25,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@refrakt-md/ai",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/ai",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 61,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1655,
          "first_published_at": "2026-02-12T09:38:32.299000Z",
          "latest_published_at": "2026-07-17T15:12:24.155000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/cli",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 61,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1655,
          "first_published_at": "2026-02-12T09:38:33.989000Z",
          "latest_published_at": "2026-07-17T15:12:24.404000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/mcp",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/mcp",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 34,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1267,
          "first_published_at": "2026-05-03T09:04:41.053000Z",
          "latest_published_at": "2026-07-17T15:12:28.111000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/html",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/html",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 50,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1690,
          "first_published_at": "2026-03-16T14:42:21.302000Z",
          "latest_published_at": "2026-07-17T15:12:23.890000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/next",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/next",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 43,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1256,
          "first_published_at": "2026-04-07T07:13:36.630000Z",
          "latest_published_at": "2026-07-17T15:12:28.518000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/nuxt",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/nuxt",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 43,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1263,
          "first_published_at": "2026-04-07T07:13:55.574000Z",
          "latest_published_at": "2026-07-17T15:12:28.331000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/astro",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/astro",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 43,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1283,
          "first_published_at": "2026-04-07T07:12:56.015000Z",
          "latest_published_at": "2026-07-17T15:12:24.267000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "@refrakt-md/react",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@refrakt-md/react",
          "is_deprecated": false,
          "latest_version": "0.28.0",
          "repository_url": "https://github.com/refrakt-md/refrakt",
          "versions_count": 43,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 1276,
          "first_published_at": "2026-04-07T07:14:25.842000Z",
          "latest_published_at": "2026-07-17T15:12:28.634000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 6
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/ai/tsconfig.json",
        "packages/astro/tsconfig.json",
        "packages/behaviors/tsconfig.json",
        "packages/cli/tsconfig.json",
        "packages/content/tsconfig.json",
        "packages/create-refrakt/template-astro/tsconfig.json",
        "packages/create-refrakt/template-html/tsconfig.json",
        "packages/create-refrakt/template-next/tsconfig.json",
        "packages/create-refrakt/template-nuxt/tsconfig.json",
        "packages/create-refrakt/template/tsconfig.json",
        "packages/create-refrakt/tsconfig.json",
        "packages/editor/app/tsconfig.json",
        "packages/editor/tsconfig.json",
        "packages/eleventy/tsconfig.json",
        "packages/gallery-harness/tsconfig.json",
        "packages/highlight/tsconfig.json",
        "packages/html/tsconfig.json",
        "packages/language-server/tsconfig.json",
        "packages/lumina/tsconfig.json",
        "packages/mcp/tsconfig.json",
        "packages/next/tsconfig.json",
        "packages/nuxt/tsconfig.json",
        "packages/react/tsconfig.json",
        "packages/runes/tsconfig.json",
        "packages/skeleton/tsconfig.json",
        "packages/sveltekit/tsconfig.json",
        "packages/transform/tsconfig.json",
        "packages/types/tsconfig.json",
        "packages/vue/tsconfig.json",
        "plan-site/tsconfig.json",
        "plugins/business/tsconfig.json",
        "plugins/design/tsconfig.json",
        "plugins/docs/test/fixtures/tsconfig.json",
        "plugins/docs/tsconfig.json",
        "plugins/learning/tsconfig.json",
        "plugins/marketing/tsconfig.json",
        "plugins/media/tsconfig.json",
        "plugins/places/tsconfig.json",
        "plugins/plan/tsconfig.json",
        "plugins/storytelling/tsconfig.json",
        "site/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 89209,
      "source_files_sampled": 868,
      "oversized_source_files": 3,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 25946
    },
    "dependencies": {
      "manifests": [
        "package.json",
        "plan-site/package.json",
        "site/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@markdoc/markdoc",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/highlight",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/lumina",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/plan",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/svelte",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/sveltekit",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "plan-site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/svelte",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/sveltekit",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/lumina",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/highlight",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/marketing",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/docs",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/storytelling",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/places",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/business",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/design",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/learning",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/media",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/plan",
          "manifest": "site/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/behaviors",
          "manifest": "packages/astro/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/astro/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/astro/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/astro/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "@refrakt-md/ai",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/editor",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/html",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "esbuild",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.27.5"
        },
        {
          "name": "postcss",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^8.4.0"
        },
        {
          "name": "@refrakt-md/highlight",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "yaml",
          "manifest": "packages/content/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.4.0"
        },
        {
          "name": "@clack/prompts",
          "manifest": "packages/create-refrakt/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.2.0"
        },
        {
          "name": "@refrakt-md/plan",
          "manifest": "packages/create-refrakt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/create-refrakt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/create-refrakt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/highlight",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/editor/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/behaviors",
          "manifest": "packages/eleventy/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/eleventy/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/eleventy/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/eleventy/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/highlight/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/highlight/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "shiki",
          "manifest": "packages/highlight/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.0"
        },
        {
          "name": "@refrakt-md/behaviors",
          "manifest": "packages/html/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/html/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/html/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/html/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "reflect-metadata",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "vscode-languageserver",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^9.0.1"
        },
        {
          "name": "vscode-languageserver-textdocument",
          "manifest": "packages/language-server/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.12"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/lumina/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/skeleton",
          "manifest": "packages/lumina/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/lumina/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/lumina/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        },
        {
          "name": "@refrakt-md/cli",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/runes",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/mcp/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/behaviors",
          "manifest": "packages/next/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/next/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/next/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/next/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/behaviors",
          "manifest": "packages/nuxt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/content",
          "manifest": "packages/nuxt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/nuxt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/nuxt/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/skeleton",
          "manifest": "packages/proof-skin/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/react/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/react/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@refrakt-md/transform",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        },
        {
          "name": "@markdoc/markdoc",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.4.0"
        },
        {
          "name": "reflect-metadata",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.2.0"
        },
        {
          "name": "fast-xml-parser",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "4.5.1"
        },
        {
          "name": "path-browserify",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "1.0.1"
        },
        {
          "name": "iso8601-duration",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.1.2"
        },
        {
          "name": "yaml",
          "manifest": "packages/runes/package.json",
          "ecosystem": "npm",
          "version_constraint": "2.8.2"
        },
        {
          "name": "@refrakt-md/types",
          "manifest": "packages/skeleton/package.json",
          "ecosystem": "npm",
          "version_constraint": "0.28.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 6,
        "merged_prs": 561,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 2
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "claude",
          "commits": 1432,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        },
        {
          "type": "User",
          "login": "bjornolofandersson",
          "commits": 1333,
          "avatar_url": "https://avatars.githubusercontent.com/u/14282149?v=4"
        },
        {
          "type": "User",
          "login": "TESTPERSONAL",
          "commits": 18,
          "avatar_url": "https://avatars.githubusercontent.com/u/6664588?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.515
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "release.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 8 merged PRs checked by a CI test -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 0,
            "reason": "Found 0/6 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 3,
            "reason": "dependency not pinned by hash detected -- score normalized to 3",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 9,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "141 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "9c7bd86104cff9e5d909c15ffa1d88eb9e00d703",
        "ran_at": "2026-07-22T19:54:21Z",
        "aggregate_score": 3.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-17T19:21:29Z",
      "oldest_open_prs": [
        {
          "number": 161,
          "created_at": "2026-03-31T08:45:25Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 196,
          "created_at": "2026-04-08T17:00:27Z",
          "last_comment_at": "2026-04-08T17:00:54Z",
          "last_comment_author": "cloudflare-workers-and-pages"
        },
        {
          "number": 254,
          "created_at": "2026-04-14T12:24:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 530,
          "created_at": "2026-06-22T19:42:17Z",
          "last_comment_at": "2026-06-22T19:49:24Z",
          "last_comment_author": "cloudflare-workers-and-pages"
        },
        {
          "number": 568,
          "created_at": "2026-07-17T21:48:58Z",
          "last_comment_at": "2026-07-17T21:49:55Z",
          "last_comment_author": "cloudflare-workers-and-pages"
        },
        {
          "number": 569,
          "created_at": "2026-07-19T20:23:17Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-17T19:17:51Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/refrakt-md/refrakt",
    "host": "github.com",
    "name": "refrakt",
    "owner": "refrakt-md"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 37,
        "vitality": 87,
        "community": 26,
        "governance": 54,
        "engineering": 55
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 87,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 79,
            "inputs": {
              "commits_last_year": 2810,
              "human_commit_share": 0.96,
              "days_since_last_push": 2,
              "active_weeks_last_year": 22
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "22/52 weeks with commits",
                "points": 15.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 22
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "2810 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 2810
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 100,
              "latest_release_tag": "@refrakt-md/mcp@0.28.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "100 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 100
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~0 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 0
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 26,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 68,
            "inputs": {
              "packages": [
                "@refrakt-md/ai",
                "@refrakt-md/cli",
                "@refrakt-md/mcp",
                "@refrakt-md/html",
                "@refrakt-md/next",
                "@refrakt-md/nuxt",
                "@refrakt-md/astro",
                "@refrakt-md/react"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 11345
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "11,345 downloads/month across npm",
                "points": 54.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 11345,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 54,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 27,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.515
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 52% of commits",
                "points": 10.9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 52
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 72,
            "inputs": {
              "merged_prs": 561,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 2
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "561/563 decided PRs merged",
                "points": 38.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 561,
                      "decided": 563
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/6 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 33,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "refrakt-md",
              "public_repos": 1,
              "account_age_days": 160
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of refrakt-md",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "refrakt-md"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~0 yr old",
                "points": 3.1,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@refrakt-md/ai",
                "@refrakt-md/cli",
                "@refrakt-md/mcp",
                "@refrakt-md/html",
                "@refrakt-md/next",
                "@refrakt-md/nuxt",
                "@refrakt-md/astro",
                "@refrakt-md/react"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "8 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 8,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "61 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 61
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 55,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "1 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "0 out of 8 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "markdoc",
                "planning",
                "static-site"
              ],
              "has_wiki": false,
              "homepage": "https://refrakt.md",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://refrakt.md",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "3 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 37,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 37,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 3.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 8 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/6 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "141 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 1
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 72,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 25946
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "96 of 96 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 96,
                      "sampled": 96
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 56,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "packages/ai/tsconfig.json",
                "packages/astro/tsconfig.json",
                "packages/behaviors/tsconfig.json",
                "packages/cli/tsconfig.json",
                "packages/content/tsconfig.json",
                "packages/create-refrakt/template-astro/tsconfig.json",
                "packages/create-refrakt/template-html/tsconfig.json",
                "packages/create-refrakt/template-next/tsconfig.json",
                "packages/create-refrakt/template-nuxt/tsconfig.json",
                "packages/create-refrakt/template/tsconfig.json",
                "packages/create-refrakt/tsconfig.json",
                "packages/editor/app/tsconfig.json",
                "packages/editor/tsconfig.json",
                "packages/eleventy/tsconfig.json",
                "packages/gallery-harness/tsconfig.json",
                "packages/highlight/tsconfig.json",
                "packages/html/tsconfig.json",
                "packages/language-server/tsconfig.json",
                "packages/lumina/tsconfig.json",
                "packages/mcp/tsconfig.json",
                "packages/next/tsconfig.json",
                "packages/nuxt/tsconfig.json",
                "packages/react/tsconfig.json",
                "packages/runes/tsconfig.json",
                "packages/skeleton/tsconfig.json",
                "packages/sveltekit/tsconfig.json",
                "packages/transform/tsconfig.json",
                "packages/types/tsconfig.json",
                "packages/vue/tsconfig.json",
                "plan-site/tsconfig.json",
                "plugins/business/tsconfig.json",
                "plugins/design/tsconfig.json",
                "plugins/docs/test/fixtures/tsconfig.json",
                "plugins/docs/tsconfig.json",
                "plugins/learning/tsconfig.json",
                "plugins/marketing/tsconfig.json",
                "plugins/media/tsconfig.json",
                "plugins/places/tsconfig.json",
                "plugins/plan/tsconfig.json",
                "plugins/storytelling/tsconfig.json",
                "site/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.7,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/ai/tsconfig.json, packages/astro/tsconfig.json, packages/behaviors/tsconfig.json, packages/cli/tsconfig.json, packages/content/tsconfig.json, packages/create-refrakt/template-astro/tsconfig.json, packages/create-refrakt/template-html/tsconfig.json, packages/create-refrakt/template-next/tsconfig.json, packages/create-refrakt/template-nuxt/tsconfig.json, packages/create-refrakt/template/tsconfig.json, packages/create-refrakt/tsconfig.json, packages/editor/app/tsconfig.json, packages/editor/tsconfig.json, packages/eleventy/tsconfig.json, packages/gallery-harness/tsconfig.json, packages/highlight/tsconfig.json, packages/html/tsconfig.json, packages/language-server/tsconfig.json, packages/lumina/tsconfig.json, packages/mcp/tsconfig.json, packages/next/tsconfig.json, packages/nuxt/tsconfig.json, packages/react/tsconfig.json, packages/runes/tsconfig.json, packages/skeleton/tsconfig.json, packages/sveltekit/tsconfig.json, packages/transform/tsconfig.json, packages/types/tsconfig.json, packages/vue/tsconfig.json, plan-site/tsconfig.json, plugins/business/tsconfig.json, plugins/design/tsconfig.json, plugins/docs/test/fixtures/tsconfig.json, plugins/docs/tsconfig.json, plugins/learning/tsconfig.json, plugins/marketing/tsconfig.json, plugins/media/tsconfig.json, plugins/places/tsconfig.json, plugins/plan/tsconfig.json, plugins/storytelling/tsconfig.json, site/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/ai/tsconfig.json, packages/astro/tsconfig.json, packages/behaviors/tsconfig.json, packages/cli/tsconfig.json, packages/content/tsconfig.json, packages/create-refrakt/template-astro/tsconfig.json, packages/create-refrakt/template-html/tsconfig.json, packages/create-refrakt/template-next/tsconfig.json, packages/create-refrakt/template-nuxt/tsconfig.json, packages/create-refrakt/template/tsconfig.json, packages/create-refrakt/tsconfig.json, packages/editor/app/tsconfig.json, packages/editor/tsconfig.json, packages/eleventy/tsconfig.json, packages/gallery-harness/tsconfig.json, packages/highlight/tsconfig.json, packages/html/tsconfig.json, packages/language-server/tsconfig.json, packages/lumina/tsconfig.json, packages/mcp/tsconfig.json, packages/next/tsconfig.json, packages/nuxt/tsconfig.json, packages/react/tsconfig.json, packages/runes/tsconfig.json, packages/skeleton/tsconfig.json, packages/sveltekit/tsconfig.json, packages/transform/tsconfig.json, packages/types/tsconfig.json, packages/vue/tsconfig.json, plan-site/tsconfig.json, plugins/business/tsconfig.json, plugins/design/tsconfig.json, plugins/docs/test/fixtures/tsconfig.json, plugins/docs/tsconfig.json, plugins/learning/tsconfig.json, plugins/marketing/tsconfig.json, plugins/media/tsconfig.json, plugins/places/tsconfig.json, plugins/plan/tsconfig.json, plugins/storytelling/tsconfig.json, site/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "70 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 70,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 89209,
              "source_files_sampled": 868,
              "oversized_source_files": 3
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "3/868 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 868,
                      "oversized": 3
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:@refrakt-md/ai@0.28.0; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T19:54:37.948419Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/refrakt-md/refrakt.svg",
  "full_name": "refrakt-md/refrakt",
  "license_state": "absent",
  "license_spdx": null
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.26.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.