Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-26 01:03 UTC

TryGhost / Themes

A monorepo for Ghost themes

Handlebars · CSS · JavaScriptMIT★ 95 Sterne⑂ 82 Forksseit Apr. 2021Auf GitHub ansehen ↗

TryGhost/Themes erreicht einen Gesundheitsindex von 74 von 100 und liegt damit im Bereich Gut. Am stärksten schneidet es bei Vitality (90/100) ab, am schwächsten bei Community & Adoption (54/100). Zuletzt heute aktualisiert. 2 Mitwirkende tragen den Großteil der jüngsten Arbeit.

74
gesamt / 100
Gut

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.

74
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

GhostOrganisation
1.734 Follower153 öffentliche Reposseit Aug. 2012

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

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npm@tryghost/shared-theme-assets2.7.11.91129vor 51 Tagen
npm@tryghost/theme-translations0.0.222.30915vor 36 Tagenghostthemetranslationslocalesi18n

Metriken nach Kategorie

Vitalität

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

90Exzellent · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
33.2/36Commit-Rhythmus — 48/52 Wochen mit Commits
18/18Commit-Volumen — 218 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year218
human_commit_share0,33
days_since_last_push0
active_weeks_last_year48
Wie die Bewertung erfolgt
16.2/27Liefert Releases aus — 29 Versions-Tags (keine GitHub-Releases)
36/36Release-Aktualität — letztes Release vor 51 Tagen
19.8/27Release-Rhythmus — ein Release etwa alle 96,5 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count29
latest_release_tagv2.7.1
releases_from_tagsja
days_since_latest_release51
mean_days_between_releases96,5
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?

54Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
32/60Stars — 95 Stars
15.9/25Forks — 82 Forks
5.8/15Watcher — 12 Watcher
Verwendete Eingangsdaten
forks82
stars95
watchers12
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
48.3/80Downloads pro Monat — 4.220 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packages@tryghost/shared-theme-assets, @tryghost/theme-translations
dependents
ecosystemsnpm
total_downloads
monthly_downloads4.220
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?

76Gut · 24 % des Gesamtindex
Wie die Bewertung erfolgt
25.2/54Bus-Faktor — 2 Beitragende decken die Hälfte aller Commits ab
11.3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 50 % der Commits
13.5/13.5Breite der Beitragenden — 49 Beitragende
10/10OpenSSF Scorecard: Contributors — project has 10 contributing companies or organizations
Verwendete Eingangsdaten
bus_factor2
contributors_sampled49
top_contributor_share0,496
Wie die Bewertung erfolgt
38.8/46.8Issue-Lösungsquote — 83 % der Issues geschlossen
36.3/38.3PR-Annahme — 459/484 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 1/25 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs459
open_issues14
closed_issues68
issue_closed_ratio0,829
closed_unmerged_prs25
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
23.3/25Reichweite des Inhabers — 1.734 Follower von TryGhost
25/25Kontohistorie — 153 öffentliche Repos, Kontoalter ca. 13 Jahre
Verwendete Eingangsdaten
followers1.734
owner_typeOrganization
is_verified
owner_loginTryGhost
public_repos153
account_age_days5.088

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 2 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 36 Tagen
20/20Versionshistorie — 29 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packages@tryghost/shared-theme-assets, @tryghost/theme-translations
ecosystemsnpm
any_deprecatednein
min_days_since_publish36

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

74Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 18 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 27 out of 27 merged PRs checked by a CI test -- score normalized to 10
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfigja
has_linter_confignein
has_precommit_confignein
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
10/10Topics — 4 Topics
0/10Wiki
Verwendete Eingangsdaten
topicsghost, publishing, ghost-theme, newsletter
has_wikinein
homepage
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

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

70Gut · 16 % des Gesamtindex
Wie die Bewertung erfolgt
7.5/7.5Binary-Artifacts — no binaries found in the repo
0.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 27 out of 27 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/25 approved changesets -- score normalized to 0
2.5/2.5Contributors — project has 10 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
7.5/7.5Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
5/5Pinned-Dependencies — all dependencies are pinned
0.5/5SAST — SAST tool is not run on all commits -- score normalized to 1
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
4.5/7.5Vulnerabilities — 4 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate6,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
0/25Indirekte Abhängigkeiten ohne bekannte Advisories — transitive Menge in diesem Bereich nicht von Entwicklungs- und Test-Abhängigkeiten trennbar
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories6
affected_packages4
assessed_packages575
unassessed_packages1
affected_by_severityhigh 4
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Indirekte Abhängigkeiten ohne bekannte Advisories, Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. 575 aufgelöste Abhängigkeiten wurden mit OSV abgeglichen. 1 konnten nicht bewertet werden — keine aufgelöste Version, ein nicht unterstütztes Ökosystem oder außerhalb der ausgewiesenen Paketliste. Dieses Repository veröffentlicht kein Paket, das der Index auflöst; bewertet wurde daher der Abhängigkeitsgraph des Repositorys. Dieser Graph vermischt Entwicklungs- und Test-Pins mit ausgelieferten Abhängigkeiten, daher werden nur die deklarierten Laufzeit-Abhängigkeiten bewertet; transitive Befunde werden als Kontext ausgewiesen und fließen nicht in die Bewertung ein. Erreichbarkeit wird nicht analysiert.

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.

62Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, CLAUDE.md, packages/alto/AGENTS.md, packages/alto/CLAUDE.md, packages/bulletin/AGENTS.md, packages/bulletin/CLAUDE.md, packages/dawn/AGENTS.md, packages/dawn/CLAUDE.md, packages/digest/AGENTS.md, packages/digest/CLAUDE.md, packages/dope/AGENTS.md, packages/dope/CLAUDE.md, packages/ease/AGENTS.md, packages/ease/CLAUDE.md, packages/edge/AGENTS.md, packages/edge/CLAUDE.md, packages/edition/AGENTS.md, packages/edition/CLAUDE.md, packages/episode/AGENTS.md, packages/episode/CLAUDE.md, packages/headline/AGENTS.md, packages/headline/CLAUDE.md, packages/journal/AGENTS.md, packages/journal/CLAUDE.md, packages/london/AGENTS.md, packages/london/CLAUDE.md, packages/ruby/AGENTS.md, packages/ruby/CLAUDE.md, packages/solo/AGENTS.md, packages/solo/CLAUDE.md, packages/taste/AGENTS.md, packages/taste/CLAUDE.md, packages/wave/AGENTS.md, packages/wave/CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 29 von 33 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,879
agent_instruction_filesAGENTS.md, CLAUDE.md, packages/alto/AGENTS.md, packages/alto/CLAUDE.md, packages/bulletin/AGENTS.md, packages/bulletin/CLAUDE.md, packages/dawn/AGENTS.md, packages/dawn/CLAUDE.md, packages/digest/AGENTS.md, packages/digest/CLAUDE.md, packages/dope/AGENTS.md, packages/dope/CLAUDE.md, packages/ease/AGENTS.md, packages/ease/CLAUDE.md, packages/edge/AGENTS.md, packages/edge/CLAUDE.md, packages/edition/AGENTS.md, packages/edition/CLAUDE.md, packages/episode/AGENTS.md, packages/episode/CLAUDE.md, packages/headline/AGENTS.md, packages/headline/CLAUDE.md, packages/journal/AGENTS.md, packages/journal/CLAUDE.md, packages/london/AGENTS.md, packages/london/CLAUDE.md, packages/ruby/AGENTS.md, packages/ruby/CLAUDE.md, packages/solo/AGENTS.md, packages/solo/CLAUDE.md, packages/taste/AGENTS.md, packages/taste/CLAUDE.md, packages/wave/AGENTS.md, packages/wave/CLAUDE.md
agent_instruction_max_bytes4.240
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
10/10Reproduzierbare Umgebung — lockfile
0/10Belegte Agentenpraxis — keine von Agenten verfassten Commits unter den letzten 100
8/8Automatisierte Wartung — 61 der letzten 100 Commits sind automatisierte Abhängigkeits-Updates
10/10OpenSSF Scorecard: Pinned-Dependencies — all dependencies are pinned
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespnpm-lock.yaml
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,61
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — Handlebars ohne Typprüfungs-Konfiguration
48.4/55Handhabbare Dateigrößen — 8/67 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageHandlebars
largest_source_bytes112.857
source_files_sampled67
oversized_source_files8

Eckdaten

95GitHub-Sterne
49Mitwirkende
218Commits, letzte 12 Monate
0Tage seit letztem Push
29Releases
2Bus-Faktor
14offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 82 ⇿
0Sterne
82Forks
29Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

0204060801008232021-092024-022026-06
Major 2Minor 10Patch 17

Jeder Punkt umfasst 5 Tage.

OpenSSF Scorecard 6.2 / 10
6.2Gesamtwert

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-26 01:03 UTC

10Binary-Artifactsno binaries found in the repo
1Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests27 out of 27 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/25 approved changesets -- score normalized to 0
10Contributorsproject has 10 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
10Pinned-Dependenciesall dependencies are pinned
1SASTSAST tool is not run on all commits -- score normalized to 1
10Security-Policysecurity policy file detected
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
6Vulnerabilities4 existing vulnerabilities detected
Alle Abhängigkeiten 576

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 576 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
npm@apm-js-collab/code-transformer0.15.0indirekt
npm@apm-js-collab/code-transformer-bundler-plugins0.5.0indirekt
npm@apm-js-collab/tracing-hooks0.10.1indirekt
npm@babel/runtime7.29.7indirekt
npm@colordx/core5.4.3indirekt
npm@elastic/elasticsearch8.19.1indirekt
npm@elastic/transport8.10.1indirekt
npm@gulpjs/messages1.1.0indirekt
npm@gulpjs/to-absolute-glob4.0.0indirekt
npm@isaacs/cliui9.0.0indirekt
npm@jridgewell/sourcemap-codec1.5.5indirekt
npm@keyv/serialize1.1.1indirekt
npm@opentelemetry/api1.9.1indirekt
npm@opentelemetry/api-logs0.220.0indirekt
npm@opentelemetry/core2.8.0indirekt
npm@opentelemetry/core2.9.0indirekt
npm@opentelemetry/instrumentation0.220.0indirekt
npm@opentelemetry/resources2.9.0indirekt
npm@opentelemetry/sdk-trace2.9.0indirekt
npm@opentelemetry/sdk-trace-base2.9.0indirekt
npm@opentelemetry/semantic-conventions1.41.1indirekt
npm@sec-ant/readable-stream0.4.1indirekt
npm@sentry/conventions0.15.1indirekt
npm@sentry/core10.65.0indirekt
npm@sentry/node10.65.0indirekt
npm@sentry/node-core10.65.0indirekt
npm@sentry/opentelemetry10.65.0indirekt
npm@sentry/server-utils10.65.0indirekt
npm@sindresorhus/is7.2.0indirekt
npm@swc/helpers0.5.23indirekt
npm@tryghost/bunyan-rotating-filestream0.0.7indirekt
npm@tryghost/config2.3.1indirekt
npm@tryghost/debug2.3.1indirekt
npm@tryghost/elasticsearch5.3.1indirekt
npm@tryghost/errors3.3.1indirekt
npm@tryghost/http-stream2.3.1indirekt
npm@tryghost/logging5.1.1indirekt
npm@tryghost/mongo-knex0.10.1indirekt
npm@tryghost/mongo-utils0.6.5indirekt
npm@tryghost/nql0.13.1indirekt
npm@tryghost/nql-lang0.6.6indirekt
npm@tryghost/pretty-cli3.3.1indirekt
npm@tryghost/pretty-stream2.3.1indirekt
npm@tryghost/request3.3.1indirekt
npm@tryghost/root-utils2.3.1indirekt
npm@tryghost/server3.1.1indirekt
npm@tryghost/shared-theme-assets2.7.1indirekt
npm@tryghost/theme-translations0.0.9indirekt
npm@tryghost/theme-translations^0.0.9indirekt
npm@tryghost/tpl2.3.1indirekt
npm@tryghost/validator3.2.1indirekt
npm@tryghost/version2.3.1indirekt
npm@tryghost/zip3.5.0indirekt
npm@types/command-line-args5.2.3indirekt
npm@types/command-line-usage5.0.4indirekt
npm@types/estree1.0.9indirekt
npm@types/http-cache-semantics4.2.0indirekt
npm@types/node24.13.2indirekt
npm@types/node26.0.0indirekt
npm@types/yauzl2.10.3indirekt
npmabort-controller3.0.0indirekt
npmaccepts2.0.0indirekt
npmacorn8.17.0indirekt
npmacorn-import-attributes1.9.5indirekt
npmansi-colors1.1.0indirekt
npmansi-gray0.1.1indirekt
npmansi-regex5.0.1indirekt
npmansi-regex6.2.2indirekt
npmansi-styles3.2.1indirekt
npmansi-styles4.3.0indirekt
npmansi-styles6.2.3indirekt
npmansi-wrap0.1.0indirekt
npmanymatch3.1.3indirekt
npmapache-arrow21.1.0indirekt
npmappend-field1.0.0indirekt
npmarchiver8.0.0indirekt
npmarr-diff4.0.0indirekt
npmarr-union3.1.0indirekt
npmarray-back6.2.3indirekt
npmarray-each1.0.1indirekt
npmarray-slice1.1.0indirekt
npmarray-union1.0.2indirekt
npmarray-uniq1.0.3indirekt
npmassign-symbols1.0.0indirekt
npmastring1.9.0indirekt
npmasync3.2.6indirekt
npmasync-done2.0.0indirekt
npmasync-settle2.0.0indirekt
npmautoprefixer10.5.2indirekt
npmb4a1.8.1indirekt
npmbach2.0.1indirekt
npmbalanced-match1.0.2indirekt
npmbalanced-match4.0.4indirekt
npmbare-events2.9.1indirekt
npmbare-fs4.7.2indirekt
npmbare-os3.9.1indirekt
npmbare-path3.0.1indirekt
npmbare-stream2.13.3indirekt
npmbare-url2.4.5indirekt
npmbase64-js1.5.1indirekt
npmbaseline-browser-mapping2.10.38indirekt
npmbeeper2.1.0indirekt
npmbinary-extensions2.3.0indirekt
npmbl5.1.0indirekt
npmbody5.1.0indirekt
npmbody-parser2.3.0indirekt
npmboolbase1.0.0indirekt
npmbrace-expansion1.1.15indirekt
npmbrace-expansion5.0.6indirekt
npmbraces3.0.3indirekt
npmbrowserslist4.28.2indirekt
npmbrowserslist4.28.4indirekt
npmbuffer6.0.3indirekt
npmbuffer-crc320.2.13indirekt
npmbuffer-crc321.0.0indirekt
npmbuffer-from1.1.2indirekt
npmbunyan1.8.15indirekt
npmbusboy1.6.0indirekt
npmbyte-counter0.1.0indirekt
npmbytes1.0.0indirekt
npmbytes3.1.2indirekt
npmcacheable-lookup7.0.0indirekt
npmcacheable-request13.0.19indirekt
npmcall-bind-apply-helpers1.0.2indirekt
npmcall-bound1.0.4indirekt
npmcaller1.1.0indirekt
npmcaniuse-api4.0.0indirekt
npmcaniuse-lite1.0.30001799indirekt
npmchalk2.4.2indirekt
npmchalk4.1.2indirekt
npmchalk5.6.2indirekt
npmchalk-template0.4.0indirekt
npmchokidar3.6.0indirekt
npmcjs-module-lexer2.2.0indirekt
npmcliui7.0.4indirekt
npmcliui9.0.1indirekt
npmclone2.1.2indirekt
npmclone-buffer1.0.0indirekt
npmclone-stats1.0.0indirekt
npmcloneable-readable1.1.3indirekt
npmcolor-convert1.9.3indirekt
npmcolor-convert2.0.1indirekt
npmcolor-name1.1.3indirekt
npmcolor-name1.1.4indirekt
npmcolor-support1.1.3indirekt
npmcolors1.4.0indirekt
npmcommand-line-args6.0.2indirekt
npmcommand-line-usage7.0.4indirekt
npmcommander11.1.0indirekt
npmcompress-commons7.0.1indirekt
npmconcat-map0.0.1indirekt
npmconcat-stream2.0.0indirekt
npmconcat-with-sourcemaps1.1.0indirekt
npmcontent-disposition1.1.0indirekt
npmcontent-type1.0.5indirekt
npmcontent-type2.0.0indirekt
npmcontinuable-cache0.3.1indirekt
npmconvert-source-map2.0.0indirekt
npmcookie0.7.2indirekt
npmcookie-signature1.2.2indirekt
npmcopy-props4.0.0indirekt
npmcore-util-is1.0.3indirekt
npmcrc-321.2.2indirekt
npmcrc32-stream7.0.1indirekt
npmcross-spawn7.0.6indirekt
npmcss-select5.2.2indirekt
npmcss-tree2.2.1indirekt
npmcss-tree3.2.1indirekt
npmcss-what6.2.2indirekt
npmcssesc3.0.0indirekt
npmcssnano8.0.2indirekt
npmcssnano-preset-default8.0.2indirekt
npmcssnano-utils6.0.1indirekt
npmcsso5.0.5indirekt
npmdate-fns2.30.0indirekt
npmdate-format4.0.14indirekt
npmdebug3.2.7indirekt
npmdebug4.4.3indirekt
npmdecompress-response10.0.0indirekt
npmdepd2.0.0indirekt
npmdetect-file1.0.0indirekt
npmdom-serializer2.0.0indirekt
npmdomelementtype2.3.0indirekt
npmdomhandler5.0.3indirekt
npmdomutils3.2.2indirekt
npmdtrace-provider0.8.8indirekt
npmdunder-proto1.0.1indirekt
npmeach-props3.0.0indirekt
npmee-first1.1.1indirekt
npmelectron-to-chromium1.5.376indirekt
npmemoji-regex10.6.0indirekt
npmemoji-regex8.0.0indirekt
npmencodeurl2.0.0indirekt
npmend-of-stream1.4.5indirekt
npmentities4.5.0indirekt
npmerror7.2.1indirekt
npmes-define-property1.0.1indirekt
npmes-errors1.3.0indirekt
npmes-module-lexer2.1.0indirekt
npmes-object-atoms1.1.2indirekt
npmescalade3.2.0indirekt
npmescape-html1.0.3indirekt
npmescape-string-regexp1.0.5indirekt
npmesquery1.7.0indirekt
npmestraverse5.3.0indirekt
npmetag1.8.1indirekt
npmevent-target-shim5.0.1indirekt
npmevents3.3.0indirekt
npmevents-universal1.0.1indirekt
npmexpand-tilde2.0.2indirekt
npmexpress5.2.1indirekt
npmexpress-handlebars8.0.1indirekt
npmextend3.0.2indirekt
npmextend-shallow3.0.2indirekt
npmextract-zip2.0.1indirekt
npmfancy-log1.3.3indirekt
npmfancy-log2.0.0indirekt
npmfast-fifo1.3.2indirekt
npmfast-levenshtein3.0.0indirekt
npmfastest-levenshtein1.0.16indirekt
npmfastq1.20.1indirekt
npmfaye-websocket0.10.0indirekt
npmfd-slicer1.1.0indirekt
npmfill-range7.1.1indirekt
npmfinalhandler2.1.1indirekt
npmfind-replace5.0.2indirekt
npmfind-root1.1.0indirekt
npmfindup-sync5.0.0indirekt
npmfined2.0.0indirekt
npmflagged-respawn2.0.0indirekt
npmflatbuffers25.9.23indirekt
npmfor-in1.0.2indirekt
npmfor-own1.0.0indirekt
npmforeground-child3.3.1indirekt
npmform-data-encoder4.1.0indirekt
npmforwarded0.2.0indirekt
npmfraction.js5.3.4indirekt
npmfresh2.0.0indirekt
npmfs-extra11.3.5indirekt
npmfs-mkdirp-stream2.0.1indirekt
npmfs.realpath1.0.0indirekt
npmfsevents2.3.3indirekt
npmfunction-bind1.1.2indirekt
npmgelf-stream1.1.1indirekt
npmgelfling0.3.1indirekt
npmget-caller-file2.0.5indirekt
npmget-east-asian-width1.6.0indirekt
npmget-intrinsic1.3.0indirekt
npmget-proto1.0.1indirekt
npmget-stream5.2.0indirekt
npmget-stream9.0.1indirekt
npmglob11.1.0indirekt
npmglob13.0.6indirekt
npmglob6.0.4indirekt
npmglob7.2.3indirekt
npmglob-parent5.1.2indirekt
npmglob-parent6.0.2indirekt
npmglob-stream8.0.3indirekt
npmglob-watcher6.0.0indirekt
npmglobal-modules1.0.0indirekt
npmglobal-prefix1.0.2indirekt
npmglobby6.1.0indirekt
npmglogg1.0.2indirekt
npmglogg2.2.0indirekt
npmgopd1.2.0indirekt
npmgot14.6.6indirekt
npmgraceful-fs4.2.11indirekt
npmgscan6.4.2indirekt
npmgulp5.0.1indirekt
npmgulp-cli3.1.0indirekt
npmgulp-concat2.6.1indirekt
npmgulp-livereload4.0.2indirekt
npmgulp-postcss10.0.0indirekt
npmgulp-uglify3.0.2indirekt
npmgulp-zip5.1.0indirekt
npmgulplog1.0.0indirekt
npmgulplog2.2.0indirekt
npmhandlebars4.7.9indirekt
npmhas-flag3.0.0indirekt
npmhas-flag4.0.0indirekt
npmhas-gulplog0.1.0indirekt
npmhas-symbols1.1.0indirekt
npmhasown2.0.4indirekt
npmhomedir-polyfill1.0.3indirekt
npmhpagent1.2.0indirekt
npmhttp-cache-semantics4.2.0indirekt
npmhttp-errors2.0.1indirekt
npmhttp-parser-js0.5.10indirekt
npmhttp2-wrapper2.2.1indirekt
npmiconv-lite0.6.3indirekt
npmiconv-lite0.7.2indirekt
npmieee7541.2.1indirekt
npmimport-in-the-middle3.1.0indirekt
npminflight1.0.6indirekt
npminherits2.0.4indirekt
npmini1.3.8indirekt
npmini2.0.0indirekt
npminterpret3.1.1indirekt
npmipaddr.js1.9.1indirekt
npmis-absolute1.0.0indirekt
npmis-binary-path2.1.0indirekt
npmis-core-module2.16.2indirekt
npmis-extendable1.0.1indirekt
npmis-extglob2.1.1indirekt
npmis-fullwidth-code-point3.0.0indirekt
npmis-glob4.0.3indirekt
npmis-negated-glob1.0.0indirekt
npmis-number7.0.0indirekt
npmis-plain-object2.0.4indirekt
npmis-plain-object5.0.0indirekt
npmis-promise4.0.0indirekt
npmis-relative1.0.0indirekt
npmis-stream4.0.1indirekt
npmis-unc-path1.0.0indirekt
npmis-valid-glob1.0.0indirekt
npmis-windows1.0.2indirekt
npmisarray1.0.0indirekt
npmisexe2.0.0indirekt
npmisobject3.0.1indirekt
npmjackspeak4.2.3indirekt
npmjson-bignum0.0.3indirekt
npmjson-stringify-safe5.0.1indirekt
npmjsonfile6.2.1indirekt
npmkeyv5.6.0indirekt
npmlast-run2.0.0indirekt
npmlazystream1.0.1indirekt
npmlead4.0.0indirekt
npmliftoff5.0.1indirekt
npmlilconfig3.1.3indirekt
npmlivereload-js2.4.0indirekt
npmlodash4.18.1indirekt
npmlodash.assign4.2.0indirekt
npmlodash.camelcase4.3.0indirekt
npmlong-timeout0.1.1indirekt
npmlowercase-keys3.0.0indirekt
npmlru-cache11.5.1indirekt
npmmagic-string0.30.21indirekt
npmmake-error1.3.6indirekt
npmmake-error-cause1.2.2indirekt
npmmap-cache0.2.2indirekt
npmmath-intrinsics1.1.0indirekt
npmmdn-data2.0.28indirekt
npmmdn-data2.27.1indirekt
npmmedia-typer0.3.0indirekt
npmmedia-typer1.1.0indirekt
npmmerge-descriptors2.0.0indirekt
npmmeriyah6.1.4indirekt
npmmicromatch4.0.8indirekt
npmmime-db1.52.0indirekt
npmmime-db1.54.0indirekt
npmmime-types2.1.35indirekt
npmmime-types3.0.2indirekt
npmmimic-response4.0.0indirekt
npmmingo2.5.3indirekt
npmminimatch10.2.5indirekt
npmminimatch3.1.5indirekt
npmminimist1.2.8indirekt
npmminipass7.1.3indirekt
npmmkdirp0.5.6indirekt
npmmodule-details-from-path1.0.4indirekt
npmmoment2.30.1indirekt
npmmoment-timezone0.5.48indirekt
npmms2.1.3indirekt
npmmulter2.2.0indirekt
npmmute-stdout2.0.0indirekt
npmmv2.1.1indirekt
npmnan2.27.0indirekt
npmnanoid3.3.14indirekt
npmnconf0.13.0indirekt
npmncp2.0.0indirekt
npmnegotiator1.0.0indirekt
npmneo-async2.6.2indirekt
npmnode-releases2.0.48indirekt
npmnormalize-path3.0.0indirekt
npmnormalize-url8.1.1indirekt
npmnow-and-later3.0.0indirekt
npmnth-check2.1.1indirekt
npmobject-assign4.1.1indirekt
npmobject-inspect1.13.4indirekt
npmobject.defaults1.1.0indirekt
npmobject.pick1.3.0indirekt
npmon-finished2.4.1indirekt
npmonce1.4.0indirekt
npmordered-read-streams2.0.0indirekt
npmp-cancelable4.0.1indirekt
npmpackage-json-from-dist1.0.1indirekt
npmparse-filepath1.0.2indirekt
npmparse-node-version1.0.1indirekt
npmparse-passwd1.0.0indirekt
npmparseurl1.3.3indirekt
npmpath-is-absolute1.0.1indirekt
npmpath-key3.1.1indirekt
npmpath-parse1.0.7indirekt
npmpath-root0.1.1indirekt
npmpath-root-regex0.1.2indirekt
npmpath-scurry2.0.2indirekt
npmpath-to-regexp8.4.2indirekt
npmpend1.2.0indirekt
npmpicocolors1.1.1indirekt
npmpicomatch2.3.2indirekt
npmpify2.3.0indirekt
npmpify3.0.0indirekt
npmpinkie2.0.4indirekt
npmpinkie-promise2.0.1indirekt
npmplugin-error1.0.1indirekt
npmplugin-error2.0.1indirekt
npmpostcss8.5.16indirekt
npmpostcss-calc10.1.1indirekt
npmpostcss-colormin8.0.1indirekt
npmpostcss-convert-values8.0.1indirekt
npmpostcss-discard-comments8.0.1indirekt
npmpostcss-discard-duplicates8.0.1indirekt
npmpostcss-discard-empty8.0.1indirekt
npmpostcss-discard-overridden8.0.1indirekt
npmpostcss-easy-import4.0.0indirekt
npmpostcss-import14.1.0indirekt
npmpostcss-load-config5.1.0indirekt
npmpostcss-merge-longhand8.0.1indirekt
npmpostcss-merge-rules8.0.1indirekt
npmpostcss-minify-font-values8.0.1indirekt
npmpostcss-minify-gradients8.0.1indirekt
npmpostcss-minify-params8.0.1indirekt
npmpostcss-minify-selectors8.0.2indirekt
npmpostcss-normalize-charset8.0.1indirekt
npmpostcss-normalize-display-values8.0.1indirekt
npmpostcss-normalize-positions8.0.1indirekt
npmpostcss-normalize-repeat-style8.0.1indirekt
npmpostcss-normalize-string8.0.1indirekt
npmpostcss-normalize-timing-functions8.0.1indirekt
npmpostcss-normalize-unicode8.0.1indirekt
npmpostcss-normalize-url8.0.1indirekt
npmpostcss-normalize-whitespace8.0.1indirekt
npmpostcss-ordered-values8.0.1indirekt
npmpostcss-reduce-initial8.0.1indirekt
npmpostcss-reduce-transforms8.0.1indirekt
npmpostcss-selector-parser7.1.4indirekt
npmpostcss-svgo8.0.1indirekt
npmpostcss-unique-selectors8.0.1indirekt
npmpostcss-value-parser4.2.0indirekt
npmprettyjson1.2.5indirekt
npmprocess0.11.10indirekt
npmprocess-nextick-args2.0.1indirekt
npmproxy-addr2.0.7indirekt
npmpump3.0.4indirekt
npmqs6.15.2indirekt
npmquick-lru5.1.1indirekt
npmrange-parser1.2.1indirekt
npmraw-body1.1.7indirekt
npmraw-body3.0.2indirekt
npmread-cache1.0.0indirekt
npmreadable-stream2.3.8indirekt
npmreadable-stream3.6.2indirekt
npmreadable-stream4.7.0indirekt
npmreaddir-glob3.0.0indirekt
npmreaddirp3.6.0indirekt
npmrechoir0.8.0indirekt
npmremove-trailing-separator1.1.0indirekt
npmreplace-ext1.0.1indirekt
npmreplace-ext2.0.0indirekt
npmreplace-homedir2.0.0indirekt
npmrequire-directory2.1.1indirekt
npmrequire-in-the-middle8.0.1indirekt
npmresolve1.22.12indirekt
npmresolve-alpn1.2.1indirekt
npmresolve-dir1.0.1indirekt
npmresolve-options2.0.0indirekt
npmresponselike4.0.2indirekt
npmreusify1.1.0indirekt
npmrimraf2.4.5indirekt
npmrouter2.2.0indirekt
npmsafe-buffer5.1.2indirekt
npmsafe-buffer5.2.1indirekt
npmsafe-json-parse1.0.1indirekt
npmsafe-json-stringify1.2.0indirekt
npmsafer-buffer2.1.2indirekt
npmsax1.6.0indirekt
npmsecure-json-parse3.0.2indirekt
npmsecure-keys1.0.0indirekt
npmsemifies1.0.0indirekt
npmsemver6.3.1indirekt
npmsemver7.8.5indirekt
npmsemver-greatest-satisfied-range2.0.0indirekt
npmsend1.2.1indirekt
npmserve-static2.2.1indirekt
npmsetprototypeof1.2.0indirekt
npmshebang-command2.0.0indirekt
npmshebang-regex3.0.0indirekt
npmside-channel1.1.1indirekt
npmside-channel-list1.0.1indirekt
npmside-channel-map1.0.1indirekt
npmside-channel-weakmap1.0.2indirekt
npmsignal-exit4.1.0indirekt
npmsource-map0.5.7indirekt
npmsource-map0.6.1indirekt
npmsource-map-js1.2.1indirekt
npmsparkles1.0.1indirekt
npmsparkles2.1.0indirekt
npmsplit24.2.0indirekt
npmstatuses2.0.2indirekt
npmstream-composer1.0.2indirekt
npmstream-exhaust1.0.2indirekt
npmstreamsearch1.1.0indirekt
npmstreamx2.28.0indirekt
npmstring-template0.2.1indirekt
npmstring-width4.2.3indirekt
npmstring-width7.2.0indirekt
npmstring_decoder0.10.31indirekt
npmstring_decoder1.1.1indirekt
npmstring_decoder1.3.0indirekt
npmstrip-ansi6.0.1indirekt
npmstrip-ansi7.2.0indirekt
npmstylehacks8.0.1indirekt
npmsupports-color5.5.0indirekt
npmsupports-color7.2.0indirekt
npmsupports-preserve-symlinks-flag1.0.0indirekt
npmsver1.8.4indirekt
npmsvgo4.0.1indirekt
npmsywac1.3.0indirekt
npmtable-layout4.1.1indirekt
npmtar-stream3.2.0indirekt
npmteex1.0.1indirekt
npmtext-decoder1.2.7indirekt
npmthrough22.0.5indirekt
npmthrough23.0.2indirekt
npmtime-stamp1.1.0indirekt
npmtiny-lr1.1.1indirekt
npmto-regex-range5.0.1indirekt
npmto-through3.0.0indirekt
npmtoidentifier1.0.1indirekt
npmtslib2.8.1indirekt
npmtype-fest4.41.0indirekt
npmtype-is1.6.18indirekt
npmtype-is2.1.0indirekt
npmtypedarray0.0.6indirekt
npmtypical7.3.0indirekt
npmuglify-js3.19.3indirekt
npmunc-path-regex0.1.2indirekt
npmundertaker2.0.0indirekt
npmundertaker-registry2.0.0indirekt
npmundici6.27.0indirekt
npmundici-types7.18.2indirekt
npmundici-types8.3.0indirekt
npmuniversalify2.0.1indirekt
npmunpipe1.0.0indirekt
npmupdate-browserslist-db1.2.3indirekt
npmutil-deprecate1.0.2indirekt
npmv8flags4.0.1indirekt
npmvalidator13.15.35indirekt
npmvalue-or-function4.0.0indirekt
npmvary1.1.2indirekt
npmvinyl2.2.1indirekt
npmvinyl3.0.1indirekt
npmvinyl-contents2.0.0indirekt
npmvinyl-fs4.0.2indirekt
npmvinyl-sourcemap2.0.0indirekt
npmvinyl-sourcemaps-apply0.2.1indirekt
npmwebsocket-driver0.7.5indirekt
npmwebsocket-extensions0.1.4indirekt
npmwhich1.3.1indirekt
npmwhich2.0.2indirekt
npmwordwrap1.0.0indirekt
npmwordwrapjs5.1.1indirekt
npmwrap-ansi7.0.0indirekt
npmwrap-ansi9.0.2indirekt
npmwrappy1.0.2indirekt
npmxtend4.0.2indirekt
npmy18n5.0.8indirekt
npmyaml2.9.0indirekt
npmyargs16.2.2indirekt
npmyargs18.0.0indirekt
npmyargs-parser20.2.9indirekt
npmyargs-parser22.0.0indirekt
npmyauzl2.10.0indirekt
npmyazl2.5.1indirekt
npmyoctodelay1.2.0indirekt
npmzip-stream7.0.5indirekt
Abhängigkeits-Advisories 4

Dieses Repository veröffentlicht kein vom Index auflösbares Paket, daher wurde sein eigener Abhängigkeitsgraph bewertet – 575 Pakete, darunter auch Entwicklungs- und Test-Pins, die nie ausgeliefert werden: 4 tragen bekannte Advisories, davon 0 direkte. 1 konnten nicht bewertet werden – keine aufgelöste Version, ein nicht unterstütztes Ökosystem, oder außerhalb der ausgewiesenen Paketliste.

PaketVersionBeziehungSchweregradAdvisoriesBehoben in
brace-expansion1.1.15indirekthoch25.0.8
brace-expansion5.0.6indirekthoch25.0.8
postcss8.5.16indirekthoch18.5.18
svgo4.0.1indirekthoch14.0.2

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "ghost",
        "publishing",
        "ghost-theme",
        "newsletter"
      ],
      "is_fork": false,
      "size_kb": 29862,
      "has_wiki": false,
      "homepage": null,
      "languages": {
        "CSS": 337825,
        "Handlebars": 570956,
        "JavaScript": 221525
      },
      "pushed_at": "2026-07-25T22:46:35Z",
      "created_at": "2021-04-07T09:23:09Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-25T22:46:38Z",
      "description": "A monorepo for Ghost themes",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Handlebars",
      "significant_languages": [
        "Handlebars",
        "CSS",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://ghost.org",
      "name": "Ghost",
      "type": "Organization",
      "login": "TryGhost",
      "company": null,
      "location": null,
      "followers": 1734,
      "avatar_url": "https://avatars.githubusercontent.com/u/2178663?v=4",
      "created_at": "2012-08-19T13:28:58Z",
      "is_verified": null,
      "public_repos": 153,
      "account_age_days": 5088
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.7.1",
          "kind": "patch",
          "published_at": "2026-06-04T13:17:27Z"
        },
        {
          "tag": "v2.7.0",
          "kind": "minor",
          "published_at": "2026-04-15T16:56:49Z"
        },
        {
          "tag": "v2.6.1",
          "kind": "patch",
          "published_at": "2026-03-17T13:47:23Z"
        },
        {
          "tag": "v2.6.0",
          "kind": "minor",
          "published_at": "2026-03-09T20:33:27Z"
        },
        {
          "tag": "v2.5.2",
          "kind": "patch",
          "published_at": "2025-11-03T07:02:48Z"
        },
        {
          "tag": "v2.5.1",
          "kind": "patch",
          "published_at": "2025-04-22T11:29:08Z"
        },
        {
          "tag": "v2.5.0",
          "kind": "minor",
          "published_at": "2024-11-14T11:12:11Z"
        },
        {
          "tag": "v2.4.5",
          "kind": "patch",
          "published_at": "2024-07-10T10:21:37Z"
        },
        {
          "tag": "v2.4.4",
          "kind": "patch",
          "published_at": "2024-07-08T08:53:53Z"
        },
        {
          "tag": "v2.4.3",
          "kind": "patch",
          "published_at": "2024-01-18T02:47:31Z"
        },
        {
          "tag": "v2.4.2",
          "kind": "patch",
          "published_at": "2023-09-13T03:41:56Z"
        },
        {
          "tag": "v2.4.1",
          "kind": "patch",
          "published_at": "2023-08-30T03:02:53Z"
        },
        {
          "tag": "v2.4.0",
          "kind": "minor",
          "published_at": "2023-07-31T23:58:48Z"
        },
        {
          "tag": "v2.3.2",
          "kind": "patch",
          "published_at": "2023-07-03T10:51:20Z"
        },
        {
          "tag": "v2.3.1",
          "kind": "patch",
          "published_at": "2023-06-26T01:37:04Z"
        },
        {
          "tag": "v2.3.0",
          "kind": "minor",
          "published_at": "2023-06-22T09:23:29Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2023-06-19T08:52:31Z"
        },
        {
          "tag": "v2.2.0",
          "kind": "minor",
          "published_at": "2023-06-06T07:45:54Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2023-05-01T08:46:25Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2023-04-21T10:04:01Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2023-03-06T09:16:42Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2022-12-16T05:21:37Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2022-12-14T11:02:54Z"
        },
        {
          "tag": "v1.3.1",
          "kind": "patch",
          "published_at": "2022-11-14T02:00:36Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2022-11-11T04:14:14Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2022-09-12T10:55:51Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2022-08-12T14:06:51Z"
        },
        {
          "tag": "v1.0.1",
          "kind": "patch",
          "published_at": "2022-08-10T08:16:40Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2022-07-19T06:19:05Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "d19f3fa1db0721393c843af00ac17992a0a59c05",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.16.0 (#573)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-25T22:46:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e028c53118a7f6768416b6fccd755ca0457eefe",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.15.1 (#572)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-23T00:00:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dffbbd35db38b301ecb9906fe2dd7b4f49fc47c7",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.15.0 (#571)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-21T15:15:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "620323de66493031cbf4250a060b730ec23a3e7d",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.14.0 (#570)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-21T06:10:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4336f049632306ea3983cecc3fcc8028c6b6db33",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout digest to 3d3c42e (#569)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-21T00:03:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a8ce746bf3465c8b7f3a2e616afbb4a251deb1e9",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.12.0 (#567)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-19T03:16:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "41fc5bc52687c023a0ccd716e7169e1c1b4919b3",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency gscan to v6.4.2 (#568)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-18T18:46:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c71fd57c991b216ceac1947afc3c32cf073dbaf",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/setup-node action to v7 (#565)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-14T12:50:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f88c64f279b039d046e891e9bd4dc5f5a94a8e7",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/setup-node digest to 2499707 (#564)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-14T07:33:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "507f7910b9f9a350a427a88f4a0765c6e4b3198a",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update TryGhost/action-deploy-theme digest to b1ff2a5 (#563)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-13T17:36:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c8eb6d36ffff2bfb1deca2278a58f5900559a19",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.11.0 (#562)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-12T21:48:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4f95f6c823dc4456487e1f2b8a83e6a91308357",
          "body": null,
          "is_bot": false,
          "headline": "Surface theme contribution guidance",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-07-09T07:09:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3642348212c0f6bff616781cec859346cf6d5591",
          "body": null,
          "is_bot": false,
          "headline": "Surface Alto contribution guidance",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-07-09T07:09:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be2c23c9b55b545ae4c9b9dbc272afd0cc7a4a6c",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.10.0 (#560)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-08T03:15:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f35390243184eca9ffeadeff615d68de31a20406",
          "body": null,
          "is_bot": true,
          "headline": "Update CSS preprocessors",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-07-06T08:03:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a07898c3655494722d8302237c6d9536481a54f1",
          "body": "The org is moving every repo's branch protection onto one stable required\nstatus check named \"Required checks pass\", so a repo's ruleset no longer\ncouples to individual CI job names. The 16 theme repos are subtree mirrors\nforce-pushed from this monorepo, so their CI gate is defined here, in two\nplac\n[…]\nbringing each theme's produced check name back in\nline with the check its ruleset now requires.\n\nPure rename: no job depends on the gate via `needs`, and its failure/cancelled\nsemantics are unchanged.",
          "is_bot": false,
          "headline": "Standardize theme CI gate on the \"Required checks pass\" aggregator check",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-07-06T08:00:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7286893889faca9db318b60bdc31debba02ec285",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency gscan to v6.4.1 (#558)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-28T20:37:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a6571347310118cf6c291a1a2d5c2bdb5848b23",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.9.0 (#557)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-27T02:49:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2aeb17aadabb218a437485943645dda249c28058",
          "body": null,
          "is_bot": false,
          "headline": "chore: repeat changes to zipper function in all gulpfiles",
          "author_name": "avery",
          "author_login": "quagsirus",
          "committed_at": "2026-06-26T07:23:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa2c4cb9201fb18985f29b309df40b942824b079",
          "body": "fixes #502",
          "is_bot": false,
          "headline": "don't change text encoding on sources that may include binary files",
          "author_name": "avery",
          "author_login": "quagsirus",
          "committed_at": "2026-06-26T07:23:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "970f769b26c55c93c4b83d6d2e789d7b542ca09f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency gscan to v6.4.0 (#555)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-25T23:30:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff824277ebd383830e11342165010db08d0de0af",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update TryGhost/action-deploy-theme digest to fabdc56 (#554)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-25T19:27:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58187b9bcd824cf3247af73ae99c3b31659b4594",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Lock file maintenance (#552)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-22T08:42:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "013d025aefec08b7ad08fc7f10a5287b12ef6be5",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.8.0 (#551)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-21T14:44:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "636640cd1cc19adfa19e100e2b7cf070fb67107f",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout action to v7 (#550)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-19T10:55:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d38440497050a0ab9ffcbd3a17886f278198e4b",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.7.0 (#549)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-19T02:05:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eebc040ee7f602b2282a2070e4601ab07702202c",
          "body": null,
          "is_bot": true,
          "headline": "Update CSS preprocessors to v8.0.2",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-16T10:37:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77efe6ac644fb1aefc4a15512c7fa230871a0c49",
          "body": "Removed the package-level `packages/solo/pnpm-lock.yaml` that was added by mistake. Theme packages live inside the pnpm monorepo and should rely on the root lockfile rather than carrying their own nested lockfiles.",
          "is_bot": false,
          "headline": "Removed Solo package lockfile",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-16T10:31:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d7a28b64225e43bc2579b277ca8a287ea7f083f6",
          "body": "Regenerated `packages/solo/pnpm-lock.yaml` with pnpm 11.6.0 from inside `packages/solo` so the standalone subtree repository has a lockfile matching its package manifest and workspace policy. Verified it with `pnpm install --frozen-lockfile`.",
          "is_bot": false,
          "headline": "Added Solo standalone pnpm lockfile",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-16T10:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ef5b335b5cf4e881953d03f0ca34ede9f3d8aee",
          "body": "Updated the pinned `TryGhost/action-deploy-theme` SHA across all theme deploy workflows to the commit behind `v2.0.2`. This keeps the workflows on immutable action references while picking up the latest deploy zip exclusion defaults.",
          "is_bot": false,
          "headline": "Updated deploy theme action pin",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-16T10:28:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48adbf3e750ad12451bc53ea414ddcc956a7c17f",
          "body": "Added package-level `.gitattributes` files so subtree-published theme repositories omit agent docs and workspace metadata from GitHub-generated source archives. This keeps the files available in source checkouts while preventing `archive/main.zip` downloads from including `AGENTS.md`, `CLAUDE.md`, or `pnpm-workspace.yaml`.",
          "is_bot": false,
          "headline": "Added archive export ignores for theme packages",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-16T10:11:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4712fa0a4a1c00c82ecc250acdf8937d403d3d45",
          "body": null,
          "is_bot": true,
          "headline": "Update pnpm/action-setup digest to 0ebf471",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-16T06:24:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fa85cc13fc55d78f3e52fbffffce519763fc4e7",
          "body": "The broad theme zip tasks could include the agent guidance files added to theme roots. Added explicit exclusions for AGENTS.md and CLAUDE.md in the monorepo zip task and each package-local zipper so generated theme archives stay limited to runtime theme content.",
          "is_bot": false,
          "headline": "Fixed theme zips excluding agent docs",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-16T06:23:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19948a58d8ec19254143fabdd68051a3aad8738a",
          "body": "Added subtree-persisted workflow files under each theme package so standalone mirror repositories run `pnpm zip` and fatal `gscan` before Renovate or direct PRs can be considered passing. Documented that these package-local workflows are for mirror repositories, while monorepo package validation remains owned by the existing root workflows.",
          "is_bot": false,
          "headline": "Added mirror gscan CI workflows for themes",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-15T14:05:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e25d17dcad9dc6340072fc367fbc184bf31da709",
          "body": "Added stable `All tests pass` gates to the per-theme monorepo workflows and package-level `AGENTS.md` guidance so standalone theme repositories keep agent instructions after sync. Added missing README files for Episode and Taste using the existing official theme README pattern, and documented how package changes flow through the existing root workflows, deploy, and subtree sync.",
          "is_bot": false,
          "headline": "Added theme CI gates and subtree workflow docs",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-15T13:35:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ab505720eee390ed61299ea9b3f868dcb29c55b",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm/action-setup digest to 0ebf471 (#541)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-15T13:17:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d9770d670bb467dd99b750621a154feb30670a0",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Lock file maintenance (#539)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-15T13:12:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb5da011c6ddc5decddd398049ec2766bdaa7576",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.6.0 (#538)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-15T08:50:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bdfbf94964c2861ab1bb5dbbcb0523e03fbc5004",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency gscan to v6.3.0 (#536)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-13T23:27:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "305679f00d138813cf265227495cef39a08c3166",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update pnpm to v11.5.3 (#535)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-13T19:35:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4619426240e4b09b16300c30bbfb1b89399da529",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update TryGhost/action-deploy-theme digest to 1a25f01 (#533)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-11T23:56:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "040959f547b879d8d97b51b07d971aa643142671",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update TryGhost/action-deploy-theme action to v2 (#532)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-11T00:03:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c568a5737b395193d564e25fa2ffdae6bb1213c3",
          "body": null,
          "is_bot": true,
          "headline": "Update pnpm to v11.5.2",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-10T09:10:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d45e8ffbb9f7a350f46e1e63246dd50fba6fe7d",
          "body": "The dependency was added in December 2022 alongside the shared partials system, but no code has ever required it — shared `.hbs` partials are copied into themes verbatim by `copyPartials`, since Ghost compiles theme Handlebars at runtime and no build-time compilation is needed. Removing it drops 38 packages from the lockfile, including the long-deprecated `gulp-util@3.0.8` and `through2@0.6.5`. The theme packages never listed it, so the standalone subtree repos are unaffected.",
          "is_bot": false,
          "headline": "Removed unused `gulp-compile-handlebars` dependency",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-10T09:10:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "236a43f98e8c00bbfc36e6e41344c0f602bd84b7",
          "body": "The root `pnpm-workspace.yaml` carries the `dtrace-provider` build-script\ndenial, but it does not propagate to the standalone repos that CI\nsubtree-pushes from `packages/<theme>` (e.g. `TryGhost/Alto`). Those\nrepos now pin pnpm via `packageManager`, so without a policy of their\nown, `pnpm install` i\n[…]\neme so the\nstandalone repos install cleanly. pnpm ignores the nested files when\ninstalling from the monorepo root — verified that all 19 workspace\nprojects still resolve and the lockfile is unchanged.",
          "is_bot": false,
          "headline": "Added per-theme build-script policy for the standalone subtree repos",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-10T08:49:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e07c62b08b3049e5121ed888231c5b2525805d2",
          "body": "Under yarn, `@tryghost/shared-theme-assets` was hoisted to the repo root,\nso the committed source maps referenced shared CSS four directories up\n(`../../../../node_modules/...`). pnpm links the package into each\ntheme's own `node_modules`, so rebuilt maps now point two directories up\n(`../../node_mo\n[…]\n broken there.\n\nThe compiled CSS itself is byte-identical; only the maps change. Dope's\n`main.min.js` is content-identical too — gulp just normalises away a\nstray executable bit on the committed file.",
          "is_bot": false,
          "headline": "Rebuilt theme assets for the pnpm `node_modules` layout",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-10T08:49:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "308315f8da532d1974000c1369de8d2cf0f11110",
          "body": "Standardises the Themes monorepo on pnpm, matching the standalone theme\nrepos (Casper, Ease-Help, Edition-Changelog, ...) that already migrated, so\ncontributors and CI agree on a single pinned package manager and lockfile\nformat. The previous setup relied on unpinned yarn classic.\n\n- Pin pnpm via th\n[…]\nte the\n  lockfile as `pnpm-lock.yaml` (yarn.lock dropped)\n\nRemove the unused `concurrently` devDependency while here — nothing in\nthe repo references it and it only generated pointless Renovate bumps.",
          "is_bot": false,
          "headline": "Changed package manager from yarn to pnpm",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-10T08:49:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "104c74125466e25109f7e723231fe8dd830e2e86",
          "body": "The translation auto-merge rule now ships as part of the shared theme preset in `TryGhost/renovate-config` (`theme.json5`), and no theme repository extends the package-local `renovate-config.json` anymore. Deleted the file, dropped it from the published `files` list in `package.json`, and removed the README references including the migration TODO, so the shared preset is the single source of truth for Renovate rules going forward.",
          "is_bot": false,
          "headline": "Removed package-local Renovate preset from theme-translations",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-10T06:37:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f66a9026d6a42826138e4e0584b75e317b90114e",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Lock file maintenance (#526)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-08T07:54:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8cf20ac784198f8290a5f7ee9e0bdacf4f9730d",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency concurrently to v10.0.3 (#525)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-05T11:32:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5906c1ad5778dbf34a61b9fc8c11b825a0c88da",
          "body": "theme-translations was bumped to 0.0.21 (it/tr/vi strings) and cssnano to\nv8 (#507) without rebuilding themes, so built output drifted from source.\n\n- Propagates Italian, Turkish and Vietnamese locale updates into all 16\n  themes (they currently ship empty strings for these)\n- Regenerates screen.css under cssnano v8 — declaration reordering only,\n  no functional or visual change\n- gscan: all themes pass (Ghost 6.x compatible)",
          "is_bot": false,
          "headline": "Rebuilt themes to ship pending translations (#524)",
          "author_name": "Steve Larson",
          "author_login": "9larsons",
          "committed_at": "2026-06-04T17:46:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b744359f09a2cc4cc42b02c9f0acd94065d4a32c",
          "body": null,
          "is_bot": false,
          "headline": "Added site-wide social links support (#515)",
          "author_name": "Sodbileg Gansukh",
          "author_login": "minimaluminium",
          "committed_at": "2026-06-04T13:56:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cab68b7cd88f0acad60dd10e2224162bf4b0cb0f",
          "body": null,
          "is_bot": false,
          "headline": "Bumped shared theme assets",
          "author_name": "Sodbileg Gansukh",
          "author_login": "minimaluminium",
          "committed_at": "2026-06-04T13:17:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e61c82a47490ddb2b9844fca12d9a592429704e",
          "body": null,
          "is_bot": false,
          "headline": "Added shared social links support to shared assets (#513)",
          "author_name": "Sodbileg Gansukh",
          "author_login": "minimaluminium",
          "committed_at": "2026-06-04T13:07:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6475f6acabe6481fa53f161cee92b9ea9c61a288",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency concurrently to v10.0.1 (#523)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-04T07:49:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "221271485f335ef14e9d5ea549fc3158bbc9e2de",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.21",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-03T20:52:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "877e93b9c21ae2d4ec7b7f17ed174589dc970a36",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update actions/checkout digest to df4cb1c (#522)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-03T20:51:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8352d01ac29008c8f02639e50af199e602c1c53",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Update dependency gscan to v6.2.1 (#516)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-02T08:10:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b221446b3114756ec24563fde8cd90c49ba7f01c",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.20",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-06-02T07:59:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b64b8d9d122bae71757591a4632ce9109e57000",
          "body": null,
          "is_bot": true,
          "headline": "Pin dependencies",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-06-02T07:58:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea1f866b1b93ffcec12b3b229d05f3b2b4a20fef",
          "body": "Moved `renovate.json` from the deprecated npm-hosted `@tryghost:theme` preset to the shared `local>TryGhost/renovate-config:theme.json5` preset. Updated the `theme-translations` README to point official theme repositories at the centralized preset and documented the future removal of the package-local translation-only preset.",
          "is_bot": false,
          "headline": "Updated Themes Renovate preset",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-02T07:54:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff9915f753dd98cc9c451e1b40f91bc37f644b8f",
          "body": "The new `AGENTS.md` gives future agents compact working context for the `TryGhost/Themes` monorepo, including structure, Yarn/Gulp commands, theme validation, shared asset handling, translation rules, CI behavior, and PR review thread resolution. Added `CLAUDE.md` as a symlink to the same guidance so compatible tooling reads the shared instructions.",
          "is_bot": false,
          "headline": "Added `AGENTS.md` guidance for Themes repo",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-02T06:30:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdee821eeda922c1c0e4d1f557bb416087164ee1",
          "body": "Renovate config in `package.json` is deprecated, so this moves the repository settings into the default `renovate.json` file. The new config keeps the theme preset and `gulp-zip` ignore while also extending the theme translations organization preset.",
          "is_bot": false,
          "headline": "Moved Renovate config into `renovate.json`",
          "author_name": "Aileen Booker",
          "author_login": "aileen",
          "committed_at": "2026-06-02T06:18:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "566ed6244e04260934fe4392689a2fb197b81c42",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update dependency concurrently to v10 (#517)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-29T23:53:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c42eda4aa5d356bd63449ed1b04d62220c61522a",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance (#514)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-26T05:09:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ffe3c554f50dd6298878a5e76ff1e30bb36351d",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update dependency gscan to v6 (#498)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-23T22:05:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f45d989756f7b532c36f22733d7c45069131d3d7",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update dependency cssnano to v8 (#507)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-23T17:59:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2d28bea1b8181c33764e349ff7582997fa895f1",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.19",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-23T14:24:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a929a3d9940686813423ff3d98e20b6199366a77",
          "body": null,
          "is_bot": false,
          "headline": "🌐 Added missing Turkish translations (#510)",
          "author_name": "Murat Çorlu",
          "author_login": "muratcorlu",
          "committed_at": "2026-05-23T14:23:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47889f6e233cc2248f563945e9267123ec30f0b6",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency postcss to v8.5.15",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-19T12:16:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be2c65d451b509d1e3903c2d9d75bfa9de685601",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance (#511)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-19T12:15:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2033011bb93de757b0cc0dc7154a226f634da8e0",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.18",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-15T16:27:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c6e1c6ccbd9048ad22d4d4676bb39d80d3bf926",
          "body": null,
          "is_bot": false,
          "headline": "feat: added italian translation (#506)",
          "author_name": "Michele De Cillis",
          "author_login": "demic-dev",
          "committed_at": "2026-05-15T16:26:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "98474c17fbd679a0e43408f49899b629db1f92a5",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.17",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-05-15T16:22:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "720fcb799af76de70df72d0bfe57ef8a9d14ff06",
          "body": "I have retranslated some parts that were out of context.",
          "is_bot": false,
          "headline": "Update vi.json (#504)",
          "author_name": "Duy",
          "author_login": "honhatduy",
          "committed_at": "2026-05-15T16:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d1f3aeebf9561c1f3559e3f5f0b3522b8950464",
          "body": "Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance (#509)",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-12T20:12:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "19f2b16e80b373520987f1c47c922e8611aa5dc5",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update css preprocessors",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-04T23:46:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fa1ee819d9dd7e3eb72457ac4f5c7e52e53720a",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-04T07:03:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba858d0d69777821e788d1d940c8c1de03bd05dd",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency cssnano to v7.1.8",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-05-04T03:09:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c922d53a3d95ddc32865064d0ac998d4be18fa9d",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency postcss to v8.5.13",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-30T20:52:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "184a2530e4a1157b5604c3e2e75c56fefe3f13e7",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-27T07:15:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c3d25571020f86665617233ee498bef9837a351",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency postcss to v8.5.12",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-27T02:56:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2fad7db8b79697c0480a155ef442584311a56dd7",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-21T03:19:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69cc2b341b3370266666ee03fdf8f5c38e6e086d",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency cssnano to v7.1.7",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-20T23:42:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6087b8d0fd45d8afb00cb40d17896d346d71588",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency postcss to v8.5.10",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-15T16:57:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cbabc6ea53bc30c83a7de8f997b2f56d99f6e145",
          "body": "ref https://linear.app/ghost/issue/FEA-613/update-themes-to-include-share-button\n\nWe're introducing native share button feature in Portal and this adds share button support to official themes.",
          "is_bot": false,
          "headline": "Added native share button (#501)",
          "author_name": "Sodbileg Gansukh",
          "author_login": "minimaluminium",
          "committed_at": "2026-04-15T16:56:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a925cb385ae4166c371bb1384c4ff4d4178688e6",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-14T02:59:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3143c8dd39efb578a0977b3fe5c12539d570ff4c",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update css preprocessors",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-13T23:11:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb51500c5ad526679d01499a74bd0185cb501fec",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency postcss to v8.5.9",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-07T22:43:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c23ebbe6755d0d2c4871d243a54e2f10bb346bb",
          "body": "ref 83b5ee9\n\nRebuilt themes after the previous commit to bump shared assets.",
          "is_bot": false,
          "headline": "Rebuild theme assets after shared asset fix (#500)",
          "author_name": "Steve Larson",
          "author_login": "9larsons",
          "committed_at": "2026-04-06T23:56:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "83b5ee907657982ae60d48fef3e29e2c3a934d37",
          "body": "Align all theme package pins with @tryghost/shared-theme-assets 2.6.1 and resolve shared JS paths via require.resolve so hoisted workspace installs and standalone theme builds use the same package contents.",
          "is_bot": false,
          "headline": "Fix theme shared asset resolution (#499)",
          "author_name": "Steve Larson",
          "author_login": "9larsons",
          "committed_at": "2026-04-06T23:52:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb6a0957d9227e72e874ac552b4165d7c9e92883",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-06T22:20:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3829ae8151b53c2a0858e721fa14aa2c146f0f14",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency gscan to v5.4.3",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-04-06T18:31:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fc17b0c3e5c3b6100fd31ef77ed191e309233f4",
          "body": null,
          "is_bot": true,
          "headline": "chore(theme-translations): bump to v0.0.16",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-04-03T12:49:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "31f775c04596490f4731f562ee581c6b47d15c9c",
          "body": null,
          "is_bot": false,
          "headline": "🌐 new vi and zh-Hant locales (#497)",
          "author_name": "Cathy Sarisky",
          "author_login": "cathysarisky",
          "committed_at": "2026-04-03T12:45:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09ab008dcc404b689680436d18c724a4f91ef1af",
          "body": "* Create vi.json\n\n* Update vi.json",
          "is_bot": false,
          "headline": "🌐 Add locale vi.json for Vietnamese (#496)",
          "author_name": "Cuong Thach",
          "author_login": "cuongthachHQ",
          "committed_at": "2026-04-03T12:34:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "364b8cb2eaf0e608fd30e93bdfd59bb3d94fb54d",
          "body": "* feat: add zh-Hant.json\n\n* update",
          "is_bot": false,
          "headline": "🌐 Add locale zh-Hant for Traditional Chinese (#495)",
          "author_name": "leafwind",
          "author_login": "leafwind",
          "committed_at": "2026-04-03T12:33:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f5b89b555bdfb93d445099b26810db2493e0afc",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): lock file maintenance",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-30T23:09:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e224da44b3e9a76ef4bf5d16f352629ddf5b2bcb",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency gscan to v5.4.1",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-30T19:11:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b9fcf2a790bd5cacb6533eac882baada0610572e",
          "body": null,
          "is_bot": true,
          "headline": "chore(deps): update dependency cssnano to v7.1.4",
          "author_name": "renovate[bot]",
          "author_login": "renovate[bot]",
          "committed_at": "2026-03-30T15:42:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 29,
      "commits_last_year": 218,
      "latest_release_at": "2026-06-04T13:17:27Z",
      "latest_release_tag": "v2.7.1",
      "releases_from_tags": true,
      "days_since_last_push": 0,
      "active_weeks_last_year": 48,
      "days_since_latest_release": 51,
      "mean_days_between_releases": 96.5
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@tryghost/shared-theme-assets",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@tryghost/shared-theme-assets",
          "is_deprecated": false,
          "latest_version": "2.7.1",
          "repository_url": "https://github.com/TryGhost/Themes",
          "versions_count": 29,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 34,
          "monthly_downloads": 1911,
          "first_published_at": "2022-07-19T06:19:12.274000Z",
          "latest_published_at": "2026-06-04T13:18:28.821000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 51
        },
        {
          "name": "@tryghost/theme-translations",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ghost",
            "theme",
            "translations",
            "locales",
            "i18n"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@tryghost/theme-translations",
          "is_deprecated": false,
          "latest_version": "0.0.22",
          "repository_url": "https://github.com/TryGhost/Themes",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 34,
          "monthly_downloads": 2309,
          "first_published_at": "2026-03-04T21:29:43.670000Z",
          "latest_published_at": "2026-06-19T10:56:11.449000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 36
        }
      ]
    },
    "popularity": {
      "forks": 82,
      "stars": 95,
      "watchers": 12,
      "fork_history": {
        "days": [
          {
            "date": "2021-09-16",
            "count": 1
          },
          {
            "date": "2021-10-02",
            "count": 1
          },
          {
            "date": "2021-10-18",
            "count": 1
          },
          {
            "date": "2021-10-22",
            "count": 1
          },
          {
            "date": "2021-10-28",
            "count": 1
          },
          {
            "date": "2021-11-09",
            "count": 1
          },
          {
            "date": "2021-11-10",
            "count": 1
          },
          {
            "date": "2021-11-20",
            "count": 1
          },
          {
            "date": "2021-11-29",
            "count": 1
          },
          {
            "date": "2021-12-22",
            "count": 1
          },
          {
            "date": "2021-12-29",
            "count": 1
          },
          {
            "date": "2022-01-08",
            "count": 1
          },
          {
            "date": "2022-03-15",
            "count": 1
          },
          {
            "date": "2022-04-01",
            "count": 1
          },
          {
            "date": "2022-04-03",
            "count": 1
          },
          {
            "date": "2022-04-23",
            "count": 1
          },
          {
            "date": "2022-05-15",
            "count": 1
          },
          {
            "date": "2022-06-24",
            "count": 1
          },
          {
            "date": "2022-07-04",
            "count": 1
          },
          {
            "date": "2022-07-13",
            "count": 1
          },
          {
            "date": "2022-07-14",
            "count": 1
          },
          {
            "date": "2022-07-27",
            "count": 1
          },
          {
            "date": "2022-07-28",
            "count": 1
          },
          {
            "date": "2022-07-29",
            "count": 1
          },
          {
            "date": "2022-08-11",
            "count": 1
          },
          {
            "date": "2022-08-26",
            "count": 1
          },
          {
            "date": "2022-09-01",
            "count": 1
          },
          {
            "date": "2022-09-19",
            "count": 1
          },
          {
            "date": "2022-09-21",
            "count": 1
          },
          {
            "date": "2022-10-16",
            "count": 1
          },
          {
            "date": "2022-10-31",
            "count": 1
          },
          {
            "date": "2022-11-17",
            "count": 1
          },
          {
            "date": "2022-12-19",
            "count": 1
          },
          {
            "date": "2022-12-28",
            "count": 1
          },
          {
            "date": "2022-12-30",
            "count": 1
          },
          {
            "date": "2023-01-22",
            "count": 1
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-03-27",
            "count": 1
          },
          {
            "date": "2023-05-24",
            "count": 1
          },
          {
            "date": "2023-06-10",
            "count": 1
          },
          {
            "date": "2023-06-14",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 1
          },
          {
            "date": "2023-07-20",
            "count": 1
          },
          {
            "date": "2023-08-12",
            "count": 1
          },
          {
            "date": "2023-10-10",
            "count": 1
          },
          {
            "date": "2023-10-22",
            "count": 1
          },
          {
            "date": "2024-01-17",
            "count": 1
          },
          {
            "date": "2024-02-06",
            "count": 1
          },
          {
            "date": "2024-06-11",
            "count": 1
          },
          {
            "date": "2024-08-13",
            "count": 1
          },
          {
            "date": "2024-08-24",
            "count": 1
          },
          {
            "date": "2024-09-22",
            "count": 1
          },
          {
            "date": "2024-10-13",
            "count": 1
          },
          {
            "date": "2024-10-24",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-11-05",
            "count": 1
          },
          {
            "date": "2024-11-19",
            "count": 1
          },
          {
            "date": "2024-12-12",
            "count": 1
          },
          {
            "date": "2024-12-13",
            "count": 1
          },
          {
            "date": "2025-01-12",
            "count": 1
          },
          {
            "date": "2025-01-25",
            "count": 1
          },
          {
            "date": "2025-04-18",
            "count": 1
          },
          {
            "date": "2025-04-27",
            "count": 1
          },
          {
            "date": "2025-05-09",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-08-17",
            "count": 1
          },
          {
            "date": "2025-08-20",
            "count": 1
          },
          {
            "date": "2025-10-11",
            "count": 1
          },
          {
            "date": "2025-10-23",
            "count": 1
          },
          {
            "date": "2025-11-29",
            "count": 1
          },
          {
            "date": "2026-01-22",
            "count": 1
          },
          {
            "date": "2026-03-09",
            "count": 1
          },
          {
            "date": "2026-03-10",
            "count": 1
          },
          {
            "date": "2026-03-12",
            "count": 1
          },
          {
            "date": "2026-03-23",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-03-30",
            "count": 1
          },
          {
            "date": "2026-04-23",
            "count": 1
          },
          {
            "date": "2026-04-28",
            "count": 1
          },
          {
            "date": "2026-04-29",
            "count": 1
          },
          {
            "date": "2026-05-05",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 82,
        "total_forks": 82
      },
      "star_history": null,
      "open_issues_and_prs": 20
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 112857,
      "source_files_sampled": 67,
      "oversized_source_files": 8,
      "agent_instruction_files": [
        "AGENTS.md",
        "CLAUDE.md",
        "packages/alto/AGENTS.md",
        "packages/alto/CLAUDE.md",
        "packages/bulletin/AGENTS.md",
        "packages/bulletin/CLAUDE.md",
        "packages/dawn/AGENTS.md",
        "packages/dawn/CLAUDE.md",
        "packages/digest/AGENTS.md",
        "packages/digest/CLAUDE.md",
        "packages/dope/AGENTS.md",
        "packages/dope/CLAUDE.md",
        "packages/ease/AGENTS.md",
        "packages/ease/CLAUDE.md",
        "packages/edge/AGENTS.md",
        "packages/edge/CLAUDE.md",
        "packages/edition/AGENTS.md",
        "packages/edition/CLAUDE.md",
        "packages/episode/AGENTS.md",
        "packages/episode/CLAUDE.md",
        "packages/headline/AGENTS.md",
        "packages/headline/CLAUDE.md",
        "packages/journal/AGENTS.md",
        "packages/journal/CLAUDE.md",
        "packages/london/AGENTS.md",
        "packages/london/CLAUDE.md",
        "packages/ruby/AGENTS.md",
        "packages/ruby/CLAUDE.md",
        "packages/solo/AGENTS.md",
        "packages/solo/CLAUDE.md",
        "packages/taste/AGENTS.md",
        "packages/taste/CLAUDE.md",
        "packages/wave/AGENTS.md",
        "packages/wave/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 4240
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 2,
            "oldest_advisory_days": 5
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-mh99-v99m-4gvg"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 2,
            "oldest_advisory_days": 5
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.16",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 1,
            "oldest_advisory_days": 1
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 8.2,
            "advisory_ids": [
              "GHSA-2p49-hgcm-8545"
            ],
            "fixed_version": "4.0.2",
            "advisory_count": 1,
            "oldest_advisory_days": 4
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 4
        },
        "advisory_count": 6,
        "affected_count": 4,
        "assessed_count": 575,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 1,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@apm-js-collab/code-transformer",
            "direct": false,
            "version": "0.15.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/code-transformer-bundler-plugins",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@apm-js-collab/tracing-hooks",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/runtime",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@colordx/core",
            "direct": false,
            "version": "5.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@elastic/elasticsearch",
            "direct": false,
            "version": "8.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@elastic/transport",
            "direct": false,
            "version": "8.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@gulpjs/messages",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@gulpjs/to-absolute-glob",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/cliui",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@keyv/serialize",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/api-logs",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/core",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/instrumentation",
            "direct": false,
            "version": "0.220.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/resources",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/sdk-trace-base",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "@opentelemetry/semantic-conventions",
            "direct": false,
            "version": "1.41.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sec-ant/readable-stream",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/conventions",
            "direct": false,
            "version": "0.15.1",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/core",
            "direct": false,
            "version": "10.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node",
            "direct": false,
            "version": "10.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/node-core",
            "direct": false,
            "version": "10.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/opentelemetry",
            "direct": false,
            "version": "10.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sentry/server-utils",
            "direct": false,
            "version": "10.65.0",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@swc/helpers",
            "direct": false,
            "version": "0.5.23",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/bunyan-rotating-filestream",
            "direct": false,
            "version": "0.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/config",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/debug",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/elasticsearch",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/errors",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/http-stream",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/logging",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/mongo-knex",
            "direct": false,
            "version": "0.10.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/mongo-utils",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/nql",
            "direct": false,
            "version": "0.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/nql-lang",
            "direct": false,
            "version": "0.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/pretty-cli",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/pretty-stream",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/request",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/root-utils",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/server",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/shared-theme-assets",
            "direct": false,
            "version": "2.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/theme-translations",
            "direct": false,
            "version": "0.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/theme-translations",
            "direct": false,
            "version": "^0.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/tpl",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/validator",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/version",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@tryghost/zip",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/command-line-args",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/command-line-usage",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "24.13.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "26.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/yauzl",
            "direct": false,
            "version": "2.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "abort-controller",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "accepts",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-import-attributes",
            "direct": false,
            "version": "1.9.5",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-colors",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-gray",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-wrap",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "apache-arrow",
            "direct": false,
            "version": "21.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "append-field",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "archiver",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-diff",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "arr-union",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-back",
            "direct": false,
            "version": "6.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "array-each",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-slice",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "array-union",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "array-uniq",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "assign-symbols",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "astring",
            "direct": false,
            "version": "1.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "async-done",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "async-settle",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "10.5.2",
            "ecosystem": "npm"
          },
          {
            "name": "b4a",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "bach",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "bare-events",
            "direct": false,
            "version": "2.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "bare-fs",
            "direct": false,
            "version": "4.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "bare-os",
            "direct": false,
            "version": "3.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "bare-path",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "bare-stream",
            "direct": false,
            "version": "2.13.3",
            "ecosystem": "npm"
          },
          {
            "name": "bare-url",
            "direct": false,
            "version": "2.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "base64-js",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "baseline-browser-mapping",
            "direct": false,
            "version": "2.10.38",
            "ecosystem": "npm"
          },
          {
            "name": "beeper",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "binary-extensions",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "bl",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "body",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "body-parser",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.2",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "4.28.4",
            "ecosystem": "npm"
          },
          {
            "name": "buffer",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "0.2.13",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-crc32",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "buffer-from",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "bunyan",
            "direct": false,
            "version": "1.8.15",
            "ecosystem": "npm"
          },
          {
            "name": "busboy",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "byte-counter",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-lookup",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cacheable-request",
            "direct": false,
            "version": "13.0.19",
            "ecosystem": "npm"
          },
          {
            "name": "call-bind-apply-helpers",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "call-bound",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "caller",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-api",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001799",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk-template",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clone",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "clone-buffer",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "clone-stats",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cloneable-readable",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "color-support",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "colors",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "command-line-args",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "command-line-usage",
            "direct": false,
            "version": "7.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "compress-commons",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "concat-stream",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "concat-with-sourcemaps",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-disposition",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "content-type",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "continuable-cache",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-signature",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "copy-props",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "core-util-is",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "crc-32",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "crc32-stream",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "css-select",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-tree",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "css-what",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssesc",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano-preset-default",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "cssnano-utils",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "csso",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "date-fns",
            "direct": false,
            "version": "2.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "date-format",
            "direct": false,
            "version": "4.0.14",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "3.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decompress-response",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "depd",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "detect-file",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "dom-serializer",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "domelementtype",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "domhandler",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "domutils",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "dtrace-provider",
            "direct": false,
            "version": "0.8.8",
            "ecosystem": "npm"
          },
          {
            "name": "dunder-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "each-props",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ee-first",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.5.376",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "encodeurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "end-of-stream",
            "direct": false,
            "version": "1.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "error",
            "direct": false,
            "version": "7.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-define-property",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "es-errors",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "es-object-atoms",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-html",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "etag",
            "direct": false,
            "version": "1.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "event-target-shim",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "events",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "events-universal",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "expand-tilde",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "express",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "express-handlebars",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extend-shallow",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "extract-zip",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fancy-log",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "fancy-log",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-fifo",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fastest-levenshtein",
            "direct": false,
            "version": "1.0.16",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "npm"
          },
          {
            "name": "faye-websocket",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "fd-slicer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "finalhandler",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-replace",
            "direct": false,
            "version": "5.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "find-root",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fined",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flagged-respawn",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flatbuffers",
            "direct": false,
            "version": "25.9.23",
            "ecosystem": "npm"
          },
          {
            "name": "for-in",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-own",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "form-data-encoder",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "forwarded",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "fraction.js",
            "direct": false,
            "version": "5.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "fresh",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs-extra",
            "direct": false,
            "version": "11.3.5",
            "ecosystem": "npm"
          },
          {
            "name": "fs-mkdirp-stream",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "gelf-stream",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "gelfling",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-intrinsic",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-proto",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "get-stream",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "6.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob-stream",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "glob-watcher",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globby",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "glogg",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glogg",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "gopd",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "got",
            "direct": false,
            "version": "14.6.6",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "gscan",
            "direct": false,
            "version": "6.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-cli",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-concat",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-livereload",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-postcss",
            "direct": false,
            "version": "10.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-uglify",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "gulp-zip",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulplog",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "gulplog",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "handlebars",
            "direct": false,
            "version": "4.7.9",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-gulplog",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-symbols",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "hasown",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "homedir-polyfill",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hpagent",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-errors",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "http-parser-js",
            "direct": false,
            "version": "0.5.10",
            "ecosystem": "npm"
          },
          {
            "name": "http2-wrapper",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "ieee754",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "import-in-the-middle",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "ipaddr.js",
            "direct": false,
            "version": "1.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-binary-path",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.16.2",
            "ecosystem": "npm"
          },
          {
            "name": "is-extendable",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-negated-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-promise",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-relative",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-stream",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-unc-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-valid-glob",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isarray",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jackspeak",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "json-bignum",
            "direct": false,
            "version": "0.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "json-stringify-safe",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonfile",
            "direct": false,
            "version": "6.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "last-run",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lazystream",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lead",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "liftoff",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "livereload-js",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.assign",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.camelcase",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "long-timeout",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "lowercase-keys",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "magic-string",
            "direct": false,
            "version": "0.30.21",
            "ecosystem": "npm"
          },
          {
            "name": "make-error",
            "direct": false,
            "version": "1.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "make-error-cause",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "map-cache",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "math-intrinsics",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.0.28",
            "ecosystem": "npm"
          },
          {
            "name": "mdn-data",
            "direct": false,
            "version": "2.27.1",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "media-typer",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "merge-descriptors",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "meriyah",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.52.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-db",
            "direct": false,
            "version": "1.54.0",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "2.1.35",
            "ecosystem": "npm"
          },
          {
            "name": "mime-types",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "mimic-response",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mingo",
            "direct": false,
            "version": "2.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "0.5.6",
            "ecosystem": "npm"
          },
          {
            "name": "module-details-from-path",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "moment",
            "direct": false,
            "version": "2.30.1",
            "ecosystem": "npm"
          },
          {
            "name": "moment-timezone",
            "direct": false,
            "version": "0.5.48",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "multer",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "mute-stdout",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "mv",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "nan",
            "direct": false,
            "version": "2.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.14",
            "ecosystem": "npm"
          },
          {
            "name": "nconf",
            "direct": false,
            "version": "0.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "ncp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "negotiator",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "neo-async",
            "direct": false,
            "version": "2.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "node-releases",
            "direct": false,
            "version": "2.0.48",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-url",
            "direct": false,
            "version": "8.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "now-and-later",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "nth-check",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-assign",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "object-inspect",
            "direct": false,
            "version": "1.13.4",
            "ecosystem": "npm"
          },
          {
            "name": "object.defaults",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.pick",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "on-finished",
            "direct": false,
            "version": "2.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "ordered-read-streams",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-cancelable",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-json-from-dist",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-filepath",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-node-version",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-passwd",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parseurl",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-root",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-root-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "8.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "pend",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pinkie-promise",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "plugin-error",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "plugin-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.16",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-calc",
            "direct": false,
            "version": "10.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-colormin",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-convert-values",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-comments",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-duplicates",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-empty",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-discard-overridden",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-easy-import",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-import",
            "direct": false,
            "version": "14.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-longhand",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-merge-rules",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-font-values",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-gradients",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-params",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-minify-selectors",
            "direct": false,
            "version": "8.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-charset",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-display-values",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-positions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-repeat-style",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-string",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-timing-functions",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-unicode",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-url",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-normalize-whitespace",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-ordered-values",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-initial",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-reduce-transforms",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-selector-parser",
            "direct": false,
            "version": "7.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-svgo",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-unique-selectors",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "prettyjson",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "process",
            "direct": false,
            "version": "0.11.10",
            "ecosystem": "npm"
          },
          {
            "name": "process-nextick-args",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "proxy-addr",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pump",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "qs",
            "direct": false,
            "version": "6.15.2",
            "ecosystem": "npm"
          },
          {
            "name": "quick-lru",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "range-parser",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "1.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "raw-body",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "read-cache",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "2.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "3.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "readable-stream",
            "direct": false,
            "version": "4.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdir-glob",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "3.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.8.0",
            "ecosystem": "npm"
          },
          {
            "name": "remove-trailing-separator",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "replace-ext",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "replace-ext",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "replace-homedir",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-in-the-middle",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.12",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-alpn",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-dir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-options",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "responselike",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "2.4.5",
            "ecosystem": "npm"
          },
          {
            "name": "router",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "safe-buffer",
            "direct": false,
            "version": "5.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-json-parse",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "safe-json-stringify",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "secure-json-parse",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "secure-keys",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semifies",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "6.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "semver-greatest-satisfied-range",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "send",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "serve-static",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "setprototypeof",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-list",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "side-channel-weakmap",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.5.7",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "sparkles",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sparkles",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "split2",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "statuses",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-composer",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stream-exhaust",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "streamsearch",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "streamx",
            "direct": false,
            "version": "2.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-template",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "0.10.31",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "string_decoder",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "stylehacks",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sver",
            "direct": false,
            "version": "1.8.4",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sywac",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "table-layout",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "tar-stream",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "teex",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "text-decoder",
            "direct": false,
            "version": "1.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "through2",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "time-stamp",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-lr",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "to-through",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "toidentifier",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "4.41.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "1.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "type-is",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "typedarray",
            "direct": false,
            "version": "0.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "typical",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.19.3",
            "ecosystem": "npm"
          },
          {
            "name": "unc-path-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "undertaker-registry",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "6.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.18.2",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "universalify",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unpipe",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "update-browserslist-db",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8flags",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "validator",
            "direct": false,
            "version": "13.15.35",
            "ecosystem": "npm"
          },
          {
            "name": "value-or-function",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vary",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-contents",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-fs",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemap",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vinyl-sourcemaps-apply",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-driver",
            "direct": false,
            "version": "0.7.5",
            "ecosystem": "npm"
          },
          {
            "name": "websocket-extensions",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrap",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wordwrapjs",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "9.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "xtend",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "16.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "18.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "20.2.9",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yauzl",
            "direct": false,
            "version": "2.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "yazl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "yoctodelay",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "zip-stream",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 576,
        "direct_count": 0,
        "indirect_count": 576
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 6,
        "merged_prs": 459,
        "open_issues": 14,
        "closed_ratio": 0.829,
        "closed_issues": 68,
        "closed_unmerged_prs": 25
      },
      "bus_factor": 2,
      "bot_contributors": 2,
      "top_contributors": [
        {
          "type": "User",
          "login": "renovate-bot",
          "commits": 1879,
          "avatar_url": "https://avatars.githubusercontent.com/u/25180681?v=4"
        },
        {
          "type": "User",
          "login": "minimaluminium",
          "commits": 1701,
          "avatar_url": "https://avatars.githubusercontent.com/u/1418797?v=4"
        },
        {
          "type": "User",
          "login": "JohnONolan",
          "commits": 48,
          "avatar_url": "https://avatars.githubusercontent.com/u/120485?v=4"
        },
        {
          "type": "User",
          "login": "aileen",
          "commits": 24,
          "avatar_url": "https://avatars.githubusercontent.com/u/8037602?v=4"
        },
        {
          "type": "User",
          "login": "cathysarisky",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/42299862?v=4"
        },
        {
          "type": "User",
          "login": "9larsons",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/21961100?v=4"
        },
        {
          "type": "User",
          "login": "sanne-san",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/65487235?v=4"
        },
        {
          "type": "User",
          "login": "peterzimon",
          "commits": 11,
          "avatar_url": "https://avatars.githubusercontent.com/u/353959?v=4"
        },
        {
          "type": "User",
          "login": "daniellockyer",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/964245?v=4"
        },
        {
          "type": "User",
          "login": "royalfig",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/48868107?v=4"
        }
      ],
      "contributors_sampled": 49,
      "top_contributor_share": 0.496
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "alto.yml",
        "bulletin.yml",
        "dawn.yml",
        "digest.yml",
        "dope.yml",
        "ease.yml",
        "edge.yml",
        "edition.yml",
        "episode.yml",
        "headline.yml",
        "journal.yml",
        "london.yml",
        "ruby.yml",
        "shared-theme-assets.yml",
        "solo.yml",
        "taste.yml",
        "theme-translations.yml",
        "wave.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": 1,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "27 out of 27 merged PRs checked by a CI test -- score normalized to 10",
            "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 1/25 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 10 contributing companies or organizations",
            "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": 10,
            "reason": "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": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 5 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": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 10,
            "reason": "all dependencies are pinned",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 1,
            "reason": "SAST tool is not run on all commits -- score normalized to 1",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file 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": 0,
            "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": 6,
            "reason": "4 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "d19f3fa1db0721393c843af00ac17992a0a59c05",
        "ran_at": "2026-07-26T01:03:20Z",
        "aggregate_score": 6.2,
        "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-25T22:47:36Z",
      "oldest_open_prs": [
        {
          "number": 363,
          "created_at": "2024-10-27T03:32:17Z",
          "last_comment_at": "2024-10-27T03:41:00Z",
          "last_comment_author": "leoxiong"
        },
        {
          "number": 505,
          "created_at": "2026-04-29T21:57:55Z",
          "last_comment_at": "2026-04-30T06:13:03Z",
          "last_comment_author": "cursor"
        },
        {
          "number": 512,
          "created_at": "2026-05-26T04:48:51Z",
          "last_comment_at": "2026-05-26T04:49:05Z",
          "last_comment_author": "coderabbitai"
        },
        {
          "number": 534,
          "created_at": "2026-06-13T12:37:23Z",
          "last_comment_at": "2026-06-13T12:37:36Z",
          "last_comment_author": "coderabbitai"
        },
        {
          "number": 553,
          "created_at": "2026-06-23T15:49:40Z",
          "last_comment_at": "2026-06-23T15:54:10Z",
          "last_comment_author": "coderabbitai"
        },
        {
          "number": 566,
          "created_at": "2026-07-14T20:40:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-25T22:46:34Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 25,
          "created_at": "2021-08-30T09:06:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 321,
          "created_at": "2024-02-09T15:48:10Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 345,
          "created_at": "2024-07-08T12:56:36Z",
          "last_comment_at": "2024-07-19T15:42:29Z",
          "last_comment_author": "faisalmlalani"
        },
        {
          "number": 368,
          "created_at": "2024-11-14T20:58:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 371,
          "created_at": "2024-11-21T21:51:07Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 372,
          "created_at": "2024-11-22T00:34:24Z",
          "last_comment_at": "2026-06-26T08:57:29Z",
          "last_comment_author": "officialrajdeepsingh"
        },
        {
          "number": 374,
          "created_at": "2024-11-23T00:26:53Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 377,
          "created_at": "2024-12-09T13:13:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 384,
          "created_at": "2025-01-19T00:44:22Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 400,
          "created_at": "2025-04-07T18:58:48Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 415,
          "created_at": "2025-04-22T12:11:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 424,
          "created_at": "2025-06-12T00:59:58Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 508,
          "created_at": "2026-05-08T12:39:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 527,
          "created_at": "2026-06-09T18:26:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/TryGhost/Themes",
    "host": "github.com",
    "name": "Themes",
    "owner": "TryGhost"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 74,
      "inputs": {
        "security": 70,
        "vitality": 90,
        "community": 54,
        "governance": 76,
        "engineering": 74
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 90,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "excellent",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 97,
            "inputs": {
              "commits_last_year": 218,
              "human_commit_share": 0.33,
              "days_since_last_push": 0,
              "active_weeks_last_year": 48
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "48/52 weeks with commits",
                "points": 33.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 48
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "218 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 218
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "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": 80,
            "inputs": {
              "releases_count": 29,
              "latest_release_tag": "v2.7.1",
              "releases_from_tags": true,
              "days_since_latest_release": 51,
              "mean_days_between_releases": 96.5
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "29 version tags (no GitHub releases)",
                "points": 16.2,
                "status": "partial",
                "details": [
                  {
                    "code": "version_tags_no_releases",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 51 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 51
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~96.5 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 96.5
                    }
                  }
                ],
                "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": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 16,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 16 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 16
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 54,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 54,
            "inputs": {
              "forks": 82,
              "stars": 95,
              "watchers": 12,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "95 stars",
                "points": 32,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 95
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "82 forks",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 82
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "12 watchers",
                "points": 5.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "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": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "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": 60,
            "inputs": {
              "packages": [
                "@tryghost/shared-theme-assets",
                "@tryghost/theme-translations"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 4220
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "4,220 downloads/month across npm",
                "points": 48.3,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 4220,
                      "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": "good",
        "name": "Sustainability & Governance",
        "value": 76,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 49,
              "top_contributor_share": 0.496
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 50% of commits",
                "points": 11.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 50
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "49 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 49
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "merged_prs": 459,
              "open_issues": 14,
              "closed_issues": 68,
              "issue_closed_ratio": 0.829,
              "closed_unmerged_prs": 25
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "83% of issues closed",
                "points": 38.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 83
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "459/484 decided PRs merged",
                "points": 36.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 459,
                      "decided": 484
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/25 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "followers": 1734,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "TryGhost",
              "public_repos": 153,
              "account_age_days": 5088
            },
            "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": "1,734 followers of TryGhost",
                "points": 23.3,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 1734,
                      "login": "TryGhost"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "153 public repos, account ~13 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 153
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 13
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@tryghost/shared-theme-assets",
                "@tryghost/theme-translations"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 36
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "2 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 2,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 36 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 36
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "29 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 29
                    }
                  }
                ],
                "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": "good",
        "name": "Engineering Quality",
        "value": 74,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "18 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "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": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "27 out of 27 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 75,
            "inputs": {
              "topics": [
                "ghost",
                "publishing",
                "ghost-theme",
                "newsletter"
              ],
              "has_wiki": false,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "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": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "4 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": "good",
        "name": "Security",
        "value": 70,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 6.2
            },
            "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 is not maximal on development and all release branches",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "27 out of 27 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "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 1/25 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "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": "update tool detected",
                "points": 7.5,
                "status": "met",
                "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 detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 5 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 detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "all dependencies are pinned",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 1",
                "points": 0.5,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "4 existing vulnerabilities detected",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 575 resolved dependencies against OSV; 1 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 575
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 1
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 6,
              "affected_packages": 4,
              "assessed_packages": 575,
              "unassessed_packages": 1,
              "affected_by_severity": "high 4",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 575,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": 6
            },
            "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": "moderate",
        "name": "AI Readiness",
        "value": 62,
        "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": 0.879,
              "agent_instruction_files": [
                "AGENTS.md",
                "CLAUDE.md",
                "packages/alto/AGENTS.md",
                "packages/alto/CLAUDE.md",
                "packages/bulletin/AGENTS.md",
                "packages/bulletin/CLAUDE.md",
                "packages/dawn/AGENTS.md",
                "packages/dawn/CLAUDE.md",
                "packages/digest/AGENTS.md",
                "packages/digest/CLAUDE.md",
                "packages/dope/AGENTS.md",
                "packages/dope/CLAUDE.md",
                "packages/ease/AGENTS.md",
                "packages/ease/CLAUDE.md",
                "packages/edge/AGENTS.md",
                "packages/edge/CLAUDE.md",
                "packages/edition/AGENTS.md",
                "packages/edition/CLAUDE.md",
                "packages/episode/AGENTS.md",
                "packages/episode/CLAUDE.md",
                "packages/headline/AGENTS.md",
                "packages/headline/CLAUDE.md",
                "packages/journal/AGENTS.md",
                "packages/journal/CLAUDE.md",
                "packages/london/AGENTS.md",
                "packages/london/CLAUDE.md",
                "packages/ruby/AGENTS.md",
                "packages/ruby/CLAUDE.md",
                "packages/solo/AGENTS.md",
                "packages/solo/CLAUDE.md",
                "packages/taste/AGENTS.md",
                "packages/taste/CLAUDE.md",
                "packages/wave/AGENTS.md",
                "packages/wave/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 4240
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, CLAUDE.md, packages/alto/AGENTS.md, packages/alto/CLAUDE.md, packages/bulletin/AGENTS.md, packages/bulletin/CLAUDE.md, packages/dawn/AGENTS.md, packages/dawn/CLAUDE.md, packages/digest/AGENTS.md, packages/digest/CLAUDE.md, packages/dope/AGENTS.md, packages/dope/CLAUDE.md, packages/ease/AGENTS.md, packages/ease/CLAUDE.md, packages/edge/AGENTS.md, packages/edge/CLAUDE.md, packages/edition/AGENTS.md, packages/edition/CLAUDE.md, packages/episode/AGENTS.md, packages/episode/CLAUDE.md, packages/headline/AGENTS.md, packages/headline/CLAUDE.md, packages/journal/AGENTS.md, packages/journal/CLAUDE.md, packages/london/AGENTS.md, packages/london/CLAUDE.md, packages/ruby/AGENTS.md, packages/ruby/CLAUDE.md, packages/solo/AGENTS.md, packages/solo/CLAUDE.md, packages/taste/AGENTS.md, packages/taste/CLAUDE.md, packages/wave/AGENTS.md, packages/wave/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, CLAUDE.md, packages/alto/AGENTS.md, packages/alto/CLAUDE.md, packages/bulletin/AGENTS.md, packages/bulletin/CLAUDE.md, packages/dawn/AGENTS.md, packages/dawn/CLAUDE.md, packages/digest/AGENTS.md, packages/digest/CLAUDE.md, packages/dope/AGENTS.md, packages/dope/CLAUDE.md, packages/ease/AGENTS.md, packages/ease/CLAUDE.md, packages/edge/AGENTS.md, packages/edge/CLAUDE.md, packages/edition/AGENTS.md, packages/edition/CLAUDE.md, packages/episode/AGENTS.md, packages/episode/CLAUDE.md, packages/headline/AGENTS.md, packages/headline/CLAUDE.md, packages/journal/AGENTS.md, packages/journal/CLAUDE.md, packages/london/AGENTS.md, packages/london/CLAUDE.md, packages/ruby/AGENTS.md, packages/ruby/CLAUDE.md, packages/solo/AGENTS.md, packages/solo/CLAUDE.md, packages/taste/AGENTS.md, packages/taste/CLAUDE.md, packages/wave/AGENTS.md, packages/wave/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": "29 of 33 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 29,
                      "sampled": 33
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.61
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "61 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 61,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "all dependencies are pinned",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "at_risk",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 48,
            "inputs": {
              "primary_language": "Handlebars",
              "largest_source_bytes": 112857,
              "source_files_sampled": 67,
              "oversized_source_files": 8
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Handlebars without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "Handlebars"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "8/67 source files over 60KB",
                "points": 48.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 67,
                      "oversized": 8
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T01:03:51.592431Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/t/TryGhost/Themes.svg",
  "full_name": "TryGhost/Themes",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.