Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 2.5.0 · 2026-07-31 02:19 UTC

ymmv-fyi / ymmv

The tools you actually use. Publish from the CLI, diff against anyone's.

TypeScriptMIT★ 0 estrellas⑂ 0 forksdesde jun 2026Ver en GitHub ↗
TipoHerramienta de línea de comandosBibliotecacómo se determina

ymmv-fyi/ymmv tiene un índice de salud de 69 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Engineering Quality (90/100) y la más baja, Community & Adoption (32/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

69
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala estandarizada de 1 a 100. El resultado global parte de su media ponderada, calibrada contra la distribución del registro público para que las bandas tengan significado percentil; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe un límite «En riesgo» de 34.

69
Excepcional93-100El nivel más alto del registro (≈ el 5% superior); cumple prácticamente todos los criterios evaluados
Excelente80-92Sólido en todos los frentes; carencias menores
Bueno65-79Saludable; carencias limitadas y manejables
Moderado50-64Aceptable con carencias notables; se recomienda revisión
Débil35-49Debilidades sustanciales en varias áreas
En riesgo20-34Debilidades significativas; su adopción exige cautela
Crítico1-19Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

El resultado global ponderado 62 se calibra a 69 en la escala publicada del índice (calibración del registro 2026-08-02).

Titularidad

ymmv.fyiOrganización
0 seguidores1 repositorio públicodesde jun 2026

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmymmv-cli0.9.0278316hace 8 díasymmvusesdotfilesdeveloper-toolsprofilediffcliterminal

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

74Bueno · 21% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
2.8/36Cadencia de commits — 4/52 semanas con commits
18/18Volumen de commits — 128 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year128
human_commit_share0,98
days_since_last_push5
active_weeks_last_year4
Cómo se puntúa
27/27Publica versiones — 16 versiones publicadas
36/36Recencia de las versiones — última versión hace 8 días
27/27Cadencia de publicación — una versión cada ~2 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count16
latest_release_tagv0.9.0
releases_from_tagsno
days_since_latest_release8
mean_days_between_releases2
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

32En riesgo · 17% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
readme_badges
has_contributingno
has_issue_templateno
has_code_of_conductno
readme_badge_services
has_pull_request_templateno
Cómo se puntúa
45.9/80Descargas mensuales — 2783 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesymmv-cli
dependents
ecosystemsnpm
total_downloads
monthly_downloads2783
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

48Débil · 23% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
0/42Resolución de issues — sin issues o sin datos
30/30Aceptación de PR — 40/40 PR decididos fusionados
0/13Newcomer PR acceptance — ningún PR de un contribuyente primerizo decidido en 30 d
0/15OpenSSF Scorecard: Code-Review — Found 0/9 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs40
open_issues0
closed_issues0
prs_merged_7d
prs_decided_7d
prs_merged_30d
prs_decided_30d
issue_closed_ratio
closed_unmerged_prs0
first_time_authors_30d
first_time_prs_merged_30d
first_time_prs_decided_30d
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues, newcomer_pr_acceptance. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
0/25Alcance del propietario — 0 seguidores de ymmv-fyi
2.4/25Trayectoria — 1 repos públicos, cuenta de ~0 años
Datos de entrada utilizados
followers0
owner_typeOrganization
is_verified
owner_loginymmv-fyi
public_repos1
account_age_days32
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 8 días
20/20Historial de versiones — 16 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesymmv-cli
ecosystemsnpm
any_deprecatedno
min_days_since_publish8

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

90Excelente · 19% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — biome.json
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 6 out of 6 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_configno

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://ymmv.fyi
10/10Descripción del repositorio
10/10Topics — 8 topics
0/10Wiki
Datos de entrada utilizados
topicsastro, cli, cloudflare-workers, command-line-tool, developer-profile, developer-tools, dotfiles, terminal
has_wikino
homepagehttps://ymmv.fyi
has_readme
has_docs_dir
has_description

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

59Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 6 out of 6 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 0/9 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
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.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — sin datos
7.5/7.5Token-Permissions — GitHub workflow tokens follow principle of least privilege
0.8/7.5Vulnerabilities — 9 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate4,8
Excluidos de la puntuación (sin datos o no aplicable): signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages1
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de npm:ymmv-cli@0.9.0 —lo que arrastra la instalación del paquete publicado—: 1 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Tiene un peso deliberadamente pequeño (4%): las herramientas para agentes son una señal real de mantenimiento, pero un repositorio sin ninguna puede alcanzar igualmente 100/100.

85Excelente · 4% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 98 de 98 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_filesCLAUDE.md
agent_instruction_max_bytes3020
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — biome.json
11/11Verificación estática de tipos — packages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 83 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 2 de los últimos 100 commits son actualizaciones automáticas de dependencias
8/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
Datos de entrada utilizados
has_nixno
has_tests
lockfilespnpm-lock.yaml
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configspackages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json
agent_commit_share0,83
toolchain_manifests
dependency_bot_commit_share0,02
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
55/55Tamaños de archivo manejables — 0/84 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes50.191
source_files_sampled84
oversized_source_files0

Datos clave

0estrellas de GitHub
1contribuidores
128commits en los últimos 12 meses
5días desde el último push
16versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Más detalle

OpenSSF Scorecard 4.8 / 10
4.8agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-31 02:19 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests6 out of 6 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 0/9 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
10Token-PermissionsGitHub workflow tokens follow principle of least privilege
1Vulnerabilities9 existing vulnerabilities detected
Dependencias directas 2
RegistroPaqueteRestricción de versiónManifiesto
npmenv-paths^3packages/cli/package.json
npm@ymmv/sharedworkspace:*packages/web/package.json
Todas las dependencias 507

Conjunto completo de dependencias resueltas según el grafo de dependencias de GitHub: 1 paquetes directos y 506 indirectos (transitivos). El cierre transitivo es completo cuando el repositorio incluye un lockfile.

RegistroPaqueteVersiónRelación
npmenv-paths3.0.0directa
npm@astrojs/check0.9.9indirecta
npm@astrojs/check^0.9indirecta
npm@astrojs/cloudflare14.0.1indirecta
npm@astrojs/cloudflare^14indirecta
npm@astrojs/compiler2.13.1indirecta
npm@astrojs/compiler-binding0.2.3indirecta
npm@astrojs/compiler-binding-darwin-arm640.2.3indirecta
npm@astrojs/compiler-binding-darwin-x640.2.3indirecta
npm@astrojs/compiler-binding-linux-arm64-gnu0.2.3indirecta
npm@astrojs/compiler-binding-linux-arm64-musl0.2.3indirecta
npm@astrojs/compiler-binding-linux-x64-gnu0.2.3indirecta
npm@astrojs/compiler-binding-linux-x64-musl0.2.3indirecta
npm@astrojs/compiler-binding-wasm32-wasi0.2.3indirecta
npm@astrojs/compiler-binding-win32-arm64-msvc0.2.3indirecta
npm@astrojs/compiler-binding-win32-x64-msvc0.2.3indirecta
npm@astrojs/compiler-rs0.2.3indirecta
npm@astrojs/internal-helpers0.10.0indirecta
npm@astrojs/language-server2.16.10indirecta
npm@astrojs/markdown-satteri0.3.2indirecta
npm@astrojs/prism4.0.2indirecta
npm@astrojs/telemetry3.3.2indirecta
npm@astrojs/underscore-redirects1.0.3indirecta
npm@astrojs/yaml2ts0.2.4indirecta
npm@babel/helper-string-parser7.29.7indirecta
npm@babel/helper-validator-identifier7.29.7indirecta
npm@babel/parser7.29.7indirecta
npm@babel/types7.29.7indirecta
npm@biomejs/biome2.5.1indirecta
npm@biomejs/cli-darwin-arm642.5.1indirecta
npm@biomejs/cli-darwin-x642.5.1indirecta
npm@biomejs/cli-linux-arm642.5.1indirecta
npm@biomejs/cli-linux-arm64-musl2.5.1indirecta
npm@biomejs/cli-linux-x642.5.1indirecta
npm@biomejs/cli-linux-x64-musl2.5.1indirecta
npm@biomejs/cli-win32-arm642.5.1indirecta
npm@biomejs/cli-win32-x642.5.1indirecta
npm@bruits/satteri-darwin-arm640.9.3indirecta
npm@bruits/satteri-darwin-x640.9.3indirecta
npm@bruits/satteri-linux-arm64-gnu0.9.3indirecta
npm@bruits/satteri-linux-arm64-musl0.9.3indirecta
npm@bruits/satteri-linux-x64-gnu0.9.3indirecta
npm@bruits/satteri-linux-x64-musl0.9.3indirecta
npm@bruits/satteri-wasm32-wasi0.9.3indirecta
npm@bruits/satteri-win32-arm64-msvc0.9.3indirecta
npm@bruits/satteri-win32-x64-msvc0.9.3indirecta
npm@capsizecss/unpack4.0.1indirecta
npm@clack/core1.4.2indirecta
npm@clack/prompts1.6.0indirecta
npm@cloudflare/kv-asset-handler0.5.0indirecta
npm@cloudflare/unenv-preset2.16.1indirecta
npm@cloudflare/vite-plugin1.42.3indirecta
npm@cloudflare/vitest-pool-workers0.16.20indirecta
npm@cloudflare/vitest-pool-workers^0.16indirecta
npm@cloudflare/workerd-darwin-641.20260625.1indirecta
npm@cloudflare/workerd-darwin-arm641.20260625.1indirecta
npm@cloudflare/workerd-linux-641.20260625.1indirecta
npm@cloudflare/workerd-linux-arm641.20260625.1indirecta
npm@cloudflare/workerd-windows-641.20260625.1indirecta
npm@cspotcode/source-map-support0.8.1indirecta
npm@emmetio/abbreviation2.3.3indirecta
npm@emmetio/css-abbreviation2.1.8indirecta
npm@emmetio/css-parser0.4.1indirecta
npm@emmetio/html-matcher1.3.0indirecta
npm@emmetio/scanner1.0.4indirecta
npm@emmetio/stream-reader2.2.0indirecta
npm@emmetio/stream-reader-utils0.1.0indirecta
npm@emnapi/core1.11.1indirecta
npm@emnapi/runtime1.11.1indirecta
npm@emnapi/wasi-threads1.2.2indirecta
npm@esbuild/aix-ppc640.28.1indirecta
npm@esbuild/android-arm0.28.1indirecta
npm@esbuild/android-arm640.28.1indirecta
npm@esbuild/android-x640.28.1indirecta
npm@esbuild/darwin-arm640.28.1indirecta
npm@esbuild/darwin-x640.28.1indirecta
npm@esbuild/freebsd-arm640.28.1indirecta
npm@esbuild/freebsd-x640.28.1indirecta
npm@esbuild/linux-arm0.28.1indirecta
npm@esbuild/linux-arm640.28.1indirecta
npm@esbuild/linux-ia320.28.1indirecta
npm@esbuild/linux-loong640.28.1indirecta
npm@esbuild/linux-mips64el0.28.1indirecta
npm@esbuild/linux-ppc640.28.1indirecta
npm@esbuild/linux-riscv640.28.1indirecta
npm@esbuild/linux-s390x0.28.1indirecta
npm@esbuild/linux-x640.28.1indirecta
npm@esbuild/netbsd-arm640.28.1indirecta
npm@esbuild/netbsd-x640.28.1indirecta
npm@esbuild/openbsd-arm640.28.1indirecta
npm@esbuild/openbsd-x640.28.1indirecta
npm@esbuild/openharmony-arm640.28.1indirecta
npm@esbuild/sunos-x640.28.1indirecta
npm@esbuild/win32-arm640.28.1indirecta
npm@esbuild/win32-ia320.28.1indirecta
npm@esbuild/win32-x640.28.1indirecta
npm@img/colour1.1.0indirecta
npm@img/sharp-darwin-arm640.34.5indirecta
npm@img/sharp-darwin-x640.34.5indirecta
npm@img/sharp-libvips-darwin-arm641.2.4indirecta
npm@img/sharp-libvips-darwin-x641.2.4indirecta
npm@img/sharp-libvips-linux-arm1.2.4indirecta
npm@img/sharp-libvips-linux-arm641.2.4indirecta
npm@img/sharp-libvips-linux-ppc641.2.4indirecta
npm@img/sharp-libvips-linux-riscv641.2.4indirecta
npm@img/sharp-libvips-linux-s390x1.2.4indirecta
npm@img/sharp-libvips-linux-x641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-arm641.2.4indirecta
npm@img/sharp-libvips-linuxmusl-x641.2.4indirecta
npm@img/sharp-linux-arm0.34.5indirecta
npm@img/sharp-linux-arm640.34.5indirecta
npm@img/sharp-linux-ppc640.34.5indirecta
npm@img/sharp-linux-riscv640.34.5indirecta
npm@img/sharp-linux-s390x0.34.5indirecta
npm@img/sharp-linux-x640.34.5indirecta
npm@img/sharp-linuxmusl-arm640.34.5indirecta
npm@img/sharp-linuxmusl-x640.34.5indirecta
npm@img/sharp-wasm320.34.5indirecta
npm@img/sharp-win32-arm640.34.5indirecta
npm@img/sharp-win32-ia320.34.5indirecta
npm@img/sharp-win32-x640.34.5indirecta
npm@jridgewell/gen-mapping0.3.13indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@jridgewell/trace-mapping0.3.9indirecta
npm@napi-rs/wasm-runtime1.1.6indirecta
npm@oslojs/encoding1.1.0indirecta
npm@oxc-project/types0.137.0indirecta
npm@playwright/test1.61.1indirecta
npm@playwright/test^1.61.1indirecta
npm@poppinss/colors4.1.6indirecta
npm@poppinss/dumper0.6.5indirecta
npm@poppinss/exception1.2.3indirecta
npm@rolldown/binding-android-arm641.1.3indirecta
npm@rolldown/binding-darwin-arm641.1.3indirecta
npm@rolldown/binding-darwin-x641.1.3indirecta
npm@rolldown/binding-freebsd-x641.1.3indirecta
npm@rolldown/binding-linux-arm-gnueabihf1.1.3indirecta
npm@rolldown/binding-linux-arm64-gnu1.1.3indirecta
npm@rolldown/binding-linux-arm64-musl1.1.3indirecta
npm@rolldown/binding-linux-ppc64-gnu1.1.3indirecta
npm@rolldown/binding-linux-s390x-gnu1.1.3indirecta
npm@rolldown/binding-linux-x64-gnu1.1.3indirecta
npm@rolldown/binding-linux-x64-musl1.1.3indirecta
npm@rolldown/binding-openharmony-arm641.1.3indirecta
npm@rolldown/binding-wasm32-wasi1.1.3indirecta
npm@rolldown/binding-win32-arm64-msvc1.1.3indirecta
npm@rolldown/binding-win32-x64-msvc1.1.3indirecta
npm@rolldown/pluginutils1.0.1indirecta
npm@rollup/pluginutils5.4.0indirecta
npm@rollup/rollup-android-arm-eabi4.62.2indirecta
npm@rollup/rollup-android-arm644.62.2indirecta
npm@rollup/rollup-darwin-arm644.62.2indirecta
npm@rollup/rollup-darwin-x644.62.2indirecta
npm@rollup/rollup-freebsd-arm644.62.2indirecta
npm@rollup/rollup-freebsd-x644.62.2indirecta
npm@rollup/rollup-linux-arm-gnueabihf4.62.2indirecta
npm@rollup/rollup-linux-arm-musleabihf4.62.2indirecta
npm@rollup/rollup-linux-arm64-gnu4.62.2indirecta
npm@rollup/rollup-linux-arm64-musl4.62.2indirecta
npm@rollup/rollup-linux-loong64-gnu4.62.2indirecta
npm@rollup/rollup-linux-loong64-musl4.62.2indirecta
npm@rollup/rollup-linux-ppc64-gnu4.62.2indirecta
npm@rollup/rollup-linux-ppc64-musl4.62.2indirecta
npm@rollup/rollup-linux-riscv64-gnu4.62.2indirecta
npm@rollup/rollup-linux-riscv64-musl4.62.2indirecta
npm@rollup/rollup-linux-s390x-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-gnu4.62.2indirecta
npm@rollup/rollup-linux-x64-musl4.62.2indirecta
npm@rollup/rollup-openbsd-x644.62.2indirecta
npm@rollup/rollup-openharmony-arm644.62.2indirecta
npm@rollup/rollup-win32-arm64-msvc4.62.2indirecta
npm@rollup/rollup-win32-ia32-msvc4.62.2indirecta
npm@rollup/rollup-win32-x64-gnu4.62.2indirecta
npm@rollup/rollup-win32-x64-msvc4.62.2indirecta
npm@shikijs/core4.3.0indirecta
npm@shikijs/engine-javascript4.3.0indirecta
npm@shikijs/engine-oniguruma4.3.0indirecta
npm@shikijs/langs4.3.0indirecta
npm@shikijs/primitive4.3.0indirecta
npm@shikijs/themes4.3.0indirecta
npm@shikijs/types4.3.0indirecta
npm@shikijs/vscode-textmate10.0.2indirecta
npm@sindresorhus/is7.2.0indirecta
npm@speed-highlight/core1.2.17indirecta
npm@standard-schema/spec1.1.0indirecta
npm@tybys/wasm-util0.10.3indirecta
npm@types/chai5.2.3indirecta
npm@types/deep-eql4.0.2indirecta
npm@types/estree1.0.9indirecta
npm@types/estree-jsx1.0.5indirecta
npm@types/hast3.0.4indirecta
npm@types/mdast4.0.4indirecta
npm@types/nlcst2.0.3indirecta
npm@types/node22.20.0indirecta
npm@types/unist3.0.3indirecta
npm@ungap/structured-clone1.3.2indirecta
npm@vitest/expect4.1.9indirecta
npm@vitest/mocker4.1.9indirecta
npm@vitest/pretty-format4.1.9indirecta
npm@vitest/runner4.1.9indirecta
npm@vitest/snapshot4.1.9indirecta
npm@vitest/spy4.1.9indirecta
npm@vitest/utils4.1.9indirecta
npm@volar/kit2.4.28indirecta
npm@volar/language-core2.4.28indirecta
npm@volar/language-server2.4.28indirecta
npm@volar/language-service2.4.28indirecta
npm@volar/source-map2.4.28indirecta
npm@volar/typescript2.4.28indirecta
npm@vscode/emmet-helper2.11.0indirecta
npm@vscode/l10n0.0.18indirecta
npmacorn8.17.0indirecta
npmajv8.20.0indirecta
npmajv-draft-041.0.0indirecta
npmam-i-vibing0.4.0indirecta
npmansi-regex5.0.1indirecta
npmansi-styles4.3.0indirecta
npmany-promise1.3.0indirecta
npmanymatch3.1.3indirecta
npmargparse2.0.1indirecta
npmaria-query5.3.2indirecta
npmassertion-error2.0.1indirecta
npmastro7.0.3indirecta
npmastro^7indirecta
npmaxobject-query4.1.0indirecta
npmbail2.0.2indirecta
npmblake3-wasm2.1.5indirecta
npmboolbase1.0.0indirecta
npmbundle-require5.1.0indirecta
npmcac6.7.14indirecta
npmccount2.0.1indirecta
npmchai6.2.2indirecta
npmcharacter-entities-html42.1.0indirecta
npmcharacter-entities-legacy3.0.0indirecta
npmchokidar4.0.3indirecta
npmchokidar5.0.0indirecta
npmci-info4.4.0indirecta
npmcjs-module-lexer1.2.3indirecta
npmcliui8.0.1indirecta
npmclsx2.1.1indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcomma-separated-tokens2.0.3indirecta
npmcommander11.1.0indirecta
npmcommander4.1.1indirecta
npmcommon-ancestor-path2.0.0indirecta
npmconfbox0.1.8indirecta
npmconsola3.4.2indirecta
npmconvert-source-map2.0.0indirecta
npmcookie1.1.1indirecta
npmcookie-es1.2.3indirecta
npmcrossws0.3.5indirecta
npmcss-select5.2.2indirecta
npmcss-tree2.2.1indirecta
npmcss-tree3.2.1indirecta
npmcss-what6.2.2indirecta
npmcsso5.0.5indirecta
npmdebug4.4.3indirecta
npmdefu6.1.7indirecta
npmdequal2.0.3indirecta
npmdestr2.0.5indirecta
npmdetect-libc2.1.2indirecta
npmdevalue5.8.1indirecta
npmdevlop1.1.0indirecta
npmdiff8.0.4indirecta
npmdom-serializer2.0.0indirecta
npmdomelementtype2.3.0indirecta
npmdomhandler5.0.3indirecta
npmdomutils3.2.2indirecta
npmdset3.1.4indirecta
npmemmet2.4.11indirecta
npmemoji-regex8.0.0indirecta
npmentities4.5.0indirecta
npmentities6.0.1indirecta
npmerror-stack-parser-es1.0.5indirecta
npmes-module-lexer2.1.0indirecta
npmesbuild0.28.1indirecta
npmescalade3.2.0indirecta
npmestree-walker2.0.2indirecta
npmestree-walker3.0.3indirecta
npmeventemitter35.0.4indirecta
npmexpect-type1.4.0indirecta
npmextend3.0.2indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-string-truncated-width3.0.3indirecta
npmfast-string-width3.0.2indirecta
npmfast-uri3.1.2indirecta
npmfast-wrap-ansi0.2.2indirecta
npmfdir6.5.0indirecta
npmfix-dts-default-cjs-exports1.0.1indirecta
npmflattie1.1.1indirecta
npmfontace0.4.1indirecta
npmfontkitten1.0.3indirecta
npmfsevents2.3.2indirecta
npmfsevents2.3.3indirecta
npmget-caller-file2.0.5indirecta
npmget-tsconfig5.0.0-beta.4indirecta
npmgithub-slugger2.0.0indirecta
npmh31.15.11indirecta
npmhast-util-from-html2.0.3indirecta
npmhast-util-from-parse58.0.3indirecta
npmhast-util-parse-selector4.0.0indirecta
npmhast-util-to-html9.0.5indirecta
npmhast-util-whitespace3.0.0indirecta
npmhastscript9.0.1indirecta
npmhtml-escaper3.0.3indirecta
npmhtml-void-elements3.0.0indirecta
npmhttp-cache-semantics4.2.0indirecta
npmiron-webcrypto1.2.1indirecta
npmis-docker3.0.0indirecta
npmis-docker4.0.0indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-inside-container1.0.0indirecta
npmis-plain-obj4.1.0indirecta
npmis-wsl3.1.1indirecta
npmjoycon3.1.1indirecta
npmjs-yaml4.3.0indirecta
npmjson-schema-traverse1.0.0indirecta
npmjsonc-parser2.3.1indirecta
npmjsonc-parser3.3.1indirecta
npmjsonc-parser^3.3.1indirecta
npmkleur4.1.5indirecta
npmlightningcss1.32.0indirecta
npmlightningcss-android-arm641.32.0indirecta
npmlightningcss-darwin-arm641.32.0indirecta
npmlightningcss-darwin-x641.32.0indirecta
npmlightningcss-freebsd-x641.32.0indirecta
npmlightningcss-linux-arm-gnueabihf1.32.0indirecta
npmlightningcss-linux-arm64-gnu1.32.0indirecta
npmlightningcss-linux-arm64-musl1.32.0indirecta
npmlightningcss-linux-x64-gnu1.32.0indirecta
npmlightningcss-linux-x64-musl1.32.0indirecta
npmlightningcss-win32-arm64-msvc1.32.0indirecta
npmlightningcss-win32-x64-msvc1.32.0indirecta
npmlilconfig3.1.3indirecta
npmlines-and-columns1.2.4indirecta
npmload-tsconfig0.2.5indirecta
npmlru-cache11.5.1indirecta
npmmagic-string0.30.21indirecta
npmmagicast0.5.3indirecta
npmmdast-util-to-hast13.2.1indirecta
npmmdn-data2.0.28indirecta
npmmdn-data2.27.1indirecta
npmmicromark-util-character2.1.1indirecta
npmmicromark-util-encode2.0.1indirecta
npmmicromark-util-sanitize-uri2.0.1indirecta
npmmicromark-util-symbol2.0.1indirecta
npmmicromark-util-types2.0.2indirecta
npmminiflare4.20260625.0indirecta
npmmlly1.8.2indirecta
npmmrmime2.0.1indirecta
npmms2.1.3indirecta
npmmuggle-string0.4.1indirecta
npmmz2.7.0indirecta
npmnanoid3.3.15indirecta
npmneotraverse0.6.18indirecta
npmnlcst-to-string4.0.0indirecta
npmnode-fetch-native1.6.7indirecta
npmnode-mock-http1.0.4indirecta
npmnormalize-path3.0.0indirecta
npmnth-check2.1.1indirecta
npmobject-assign4.1.1indirecta
npmobug2.1.3indirecta
npmofetch1.5.1indirecta
npmohash2.0.11indirecta
npmoniguruma-parser0.12.2indirecta
npmoniguruma-to-es4.3.6indirecta
npmp-limit7.3.0indirecta
npmp-queue9.3.0indirecta
npmp-timeout7.0.1indirecta
npmpackage-manager-detector1.6.0indirecta
npmparse57.3.0indirecta
npmpath-browserify1.0.1indirecta
npmpath-to-regexp6.3.0indirecta
npmpathe2.0.3indirecta
npmpiccolore0.1.3indirecta
npmpicocolors1.1.1indirecta
npmpicomatch2.3.2indirecta
npmpicomatch4.0.4indirecta
npmpirates4.0.7indirecta
npmpkg-types1.3.1indirecta
npmplaywright1.61.1indirecta
npmplaywright-core1.61.1indirecta
npmpostcss8.5.15indirecta
npmpostcss-load-config6.0.1indirecta
npmprettier3.9.0indirecta
npmprismjs1.30.0indirecta
npmprocess-ancestry0.1.0indirecta
npmproperty-information7.2.0indirecta
npmradix31.1.2indirecta
npmreaddirp4.1.2indirecta
npmreaddirp5.0.0indirecta
npmregex6.1.0indirecta
npmregex-recursion6.0.2indirecta
npmregex-utilities2.3.0indirecta
npmrehype13.0.2indirecta
npmrehype-parse9.0.1indirecta
npmrehype-stringify10.0.1indirecta
npmrequest-light0.5.8indirecta
npmrequest-light0.7.0indirecta
npmrequire-directory2.1.1indirecta
npmrequire-from-string2.0.2indirecta
npmresolve-from5.0.0indirecta
npmresolve-pkg-maps1.0.0indirecta
npmretext-smartypants6.2.0indirecta
npmrolldown1.1.3indirecta
npmrollup4.62.2indirecta
npmsatteri0.9.3indirecta
npmsax1.6.0indirecta
npmsemver7.8.5indirecta
npmsharp0.34.5indirecta
npmshiki4.3.0indirecta
npmsiginfo2.0.0indirecta
npmsisteransi1.0.5indirecta
npmsmol-toml1.7.0indirecta
npmsource-map0.7.6indirecta
npmsource-map-js1.2.1indirecta
npmspace-separated-tokens2.0.2indirecta
npmstackback0.0.2indirecta
npmstd-env4.1.0indirecta
npmstring-width4.2.3indirecta
npmstringify-entities4.0.4indirecta
npmstrip-ansi6.0.1indirecta
npmsucrase3.35.1indirecta
npmsupports-color10.2.2indirecta
npmsvgo4.0.1indirecta
npmthenify3.3.1indirecta
npmthenify-all1.6.0indirecta
npmtiny-inflate1.0.3indirecta
npmtinybench2.9.0indirecta
npmtinyclip0.1.15indirecta
npmtinyexec0.3.2indirecta
npmtinyexec1.2.4indirecta
npmtinyglobby0.2.17indirecta
npmtinyrainbow3.1.0indirecta
npmtree-kill1.2.2indirecta
npmtrim-lines3.0.1indirecta
npmtrough2.2.0indirecta
npmts-interface-checker0.1.13indirecta
npmtslib2.8.1indirecta
npmtsup8.5.1indirecta
npmtypesafe-path0.2.2indirecta
npmtypescript5.9.3indirecta
npmtypescript-auto-import-cache0.3.6indirecta
npmufo1.6.4indirecta
npmultrahtml1.6.0indirecta
npmuncrypto0.1.3indirecta
npmundici7.28.0indirecta
npmundici-types6.21.0indirecta
npmunenv2.0.0-rc.24indirecta
npmunified11.0.5indirecta
npmunifont0.7.4indirecta
npmunist-util-is6.0.1indirecta
npmunist-util-position5.0.0indirecta
npmunist-util-stringify-position4.0.0indirecta
npmunist-util-visit5.1.0indirecta
npmunist-util-visit-parents6.0.2indirecta
npmunstorage1.17.5indirecta
npmvfile6.0.3indirecta
npmvfile-location5.0.3indirecta
npmvfile-message4.0.3indirecta
npmvite8.1.0indirecta
npmvitefu1.1.3indirecta
npmvitest4.1.9indirecta
npmvolar-service-css0.0.70indirecta
npmvolar-service-emmet0.0.70indirecta
npmvolar-service-html0.0.70indirecta
npmvolar-service-prettier0.0.70indirecta
npmvolar-service-typescript0.0.70indirecta
npmvolar-service-typescript-twoslash-queries0.0.70indirecta
npmvolar-service-yaml0.0.70indirecta
npmvscode-css-languageservice6.3.10indirecta
npmvscode-html-languageservice5.6.2indirecta
npmvscode-json-languageservice4.1.8indirecta
npmvscode-jsonrpc8.2.0indirecta
npmvscode-jsonrpc9.0.0indirecta
npmvscode-languageserver9.0.1indirecta
npmvscode-languageserver-protocol3.17.5indirecta
npmvscode-languageserver-protocol3.18.1indirecta
npmvscode-languageserver-textdocument1.0.12indirecta
npmvscode-languageserver-types3.17.5indirecta
npmvscode-languageserver-types3.18.0indirecta
npmvscode-nls5.2.0indirecta
npmvscode-uri3.1.0indirecta
npmweb-namespaces2.0.1indirecta
npmwhich-pm-runs1.1.0indirecta
npmwhy-is-node-running2.3.0indirecta
npmworkerd1.20260625.1indirecta
npmwrangler4.105.0indirecta
npmwrangler^4indirecta
npmwrap-ansi7.0.0indirecta
npmws8.21.0indirecta
npmxxhash-wasm1.1.0indirecta
npmy18n5.0.8indirecta
npmyaml2.9.0indirecta
npmyaml-language-server1.20.0indirecta
npmyargs17.7.3indirecta
npmyargs-parser21.1.1indirecta
npmyargs-parser22.0.0indirecta
npmyocto-queue1.2.2indirecta
npmyouch4.1.0-beta.10indirecta
npmyouch-core0.3.3indirecta
npmzod3.25.76indirecta
npmzod4.4.3indirecta
npmzwitch2.0.4indirecta
Avisos de dependencias 0

Instalar npm:ymmv-cli@0.9.0 arrastra 1 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "astro",
        "cli",
        "cloudflare-workers",
        "command-line-tool",
        "developer-profile",
        "developer-tools",
        "dotfiles",
        "terminal"
      ],
      "is_fork": false,
      "size_kb": 1989,
      "has_wiki": false,
      "homepage": "https://ymmv.fyi",
      "languages": {
        "CSS": 32964,
        "Astro": 37916,
        "Shell": 9415,
        "JavaScript": 4049,
        "TypeScript": 654199
      },
      "pushed_at": "2026-07-25T07:12:37Z",
      "created_at": "2026-06-30T00:47:14Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-22T04:46:31Z",
      "description": "The tools you actually use. Publish from the CLI, diff against anyone's.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://ymmv.fyi",
      "name": "ymmv.fyi",
      "type": "Organization",
      "login": "ymmv-fyi",
      "company": null,
      "location": null,
      "followers": 0,
      "avatar_url": "https://avatars.githubusercontent.com/u/297593369?v=4",
      "created_at": "2026-06-28T09:12:09Z",
      "is_verified": null,
      "public_repos": 1,
      "account_age_days": 32
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-22T04:52:08Z"
        },
        {
          "tag": "v0.8.0",
          "kind": "minor",
          "published_at": "2026-07-19T20:55:38Z"
        },
        {
          "tag": "v0.7.0",
          "kind": "minor",
          "published_at": "2026-07-12T02:49:31Z"
        },
        {
          "tag": "v0.6.2",
          "kind": "patch",
          "published_at": "2026-07-10T03:34:32Z"
        },
        {
          "tag": "v0.6.1",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:31Z"
        },
        {
          "tag": "v0.6.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:30Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:28Z"
        },
        {
          "tag": "v0.4.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:26Z"
        },
        {
          "tag": "v0.3.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:24Z"
        },
        {
          "tag": "v0.2.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:22Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:20Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:18Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:16Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:14Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-07-04T09:35:13Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-07-04T09:35:11Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ac930a52fb1a1d2c5358cdae046628b7a9ed014d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.9.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:46:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7e1622b900462ae1208a37488394cbc4a224a36a",
          "body": "The check's first await is a real fs read that fake timers cannot\nadvance; on a slow runner the fake 500ms grace fired before the fetch\nwas ever invoked, leaving the captured signal undefined (CI verify(22)\nat bb823c0). Gate the timer advance on the fetch actually starting.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): deflake the update-check grace/abort test",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:43:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bb823c04dd9af6760d5ca83139441501d0499c73",
          "body": "`ymmv update` bullet names the npm/pnpm/bun global upgrades and the\nmanual fallback instead of promising the right package manager for any\ninstall. The @latest note stops claiming it beats npx's tag cache\n(update-check.ts pins exact versions precisely because it can't).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): scope update claims to what ships",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8a4e040399980f85437c0a06a9b383bd99aefff2",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the update check and ymmv update",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "adbe30bd1aabf132fb047fef659f0edcd402f82a",
          "body": "Bare `npx ymmv-cli` can keep serving an old cached copy indefinitely, so\nevery copyable invocation (READMEs, landing hero/footer, profile foot and\ncopy button, 404 description, CI recipe) now carries @latest. READMEs\ndocument ymmv update and the update-check opt-outs. e2e clipboard pins\nupdated to match.",
          "is_bot": false,
          "headline": "docs+web: install invocations pin npx ymmv-cli@latest",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1efc60c5336f4230a031e269b76736c69d9119a",
          "body": "Passive npm-registry check runs concurrently with eligible commands and\nprints a one-line stderr notice (TTY only) when a newer release exists,\nlinking the releases page. Cache in the config dir throttles checks\n(24h success / 6h failure backoff); every failure is silent and the\nfinish grace caps ad\n[…]\ngated\nstderr latest hint; piped stdout stays byte-identical.\n\nOpt-outs: YMMV_NO_UPDATE_CHECK, NO_UPDATE_NOTIFIER, CI. Dev builds\n(0.0.0) never check. update is exempt from the config gate like logout.",
          "is_bot": false,
          "headline": "feat(cli): update notice + ymmv update command",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "633a7a5f74d2142ae68e9dd18469ec2aaf8f2443",
          "body": "The new CLI self-update verb joins CLI_VERBS so `ymmv update` can never\ncollide with a real profile. Prod D1 pre-checked clean for an existing\nclaim (users.handle_lower + handle_history.old_handle_lower); re-check\nrides the release tag while the claim window is open.",
          "is_bot": false,
          "headline": "feat(shared): reserve `update` as a non-claimable handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-22T04:40:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d04d89e79bbd1d65b7bcdb681b5e4124de62245d",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.8.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:52:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cd36ef88c7dd6440e460cb64376b75dadde2f0f1",
          "body": "Under parallel suite load WSL's bash can fail to launch or exit nonzero\nwithout running the parse; the syntax tripwire now skips (loudly) unless\nbash actually reports a syntax error. Linux CI keeps the strict path.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): waf tripwire tolerates a flaky local bash launch",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "70f97d3024be139a5de5af282152359bb2c9f7f5",
          "body": "infra/waf-ratelimit.sh, pointed at by rate-limit.ts and wrangler.jsonc\nsince the rule shipped, now exists: verify prints the live zone rule and\ndiffs it against the file's constants (verified against production);\napply converges idempotently and only ever PUTs the phase entrypoint\nwhen a 404 proves \n[…]\nted, and a help.test.ts tripwire pins the script's\nexistence, its expression atoms, env-only credentials, bash syntax, and\nboth source pointers.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(infra): commit the WAF rate-limit provisioning script",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0ae6d7e7d288337f9b2dc92014f030b24e65afc3",
          "body": "loadCredential prefers a YMMV_TOKEN env credential (handle from\nYMMV_HANDLE) over the stored login; the file readers stay env-blind so\nlogin's revoke flow and logout never touch it. credentialEnvProblem\nvalidates both vars at startup (logout exempt) without ever echoing the\ntoken. A 401/409 under an\n[…]\nd, closing the confirm-to-send account-switch window.\nREADME documents the CI recipe, the runner-detection caveat, and the\ntoken file locations.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): YMMV_TOKEN authenticates without a browser",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8fc9f96355ecdcb421b36e64ad7067c06f70d0f0",
          "body": "Dev/ymmv-dev shared prod's namespace ids (1001/2001), so a bare remote\ndeploy would consume production's live rate-limit counters; dev now uses\n1000/2000 (staging already isolates as 1002/2002) and the CAVEAT comment\nnames the hazard. RETRY_AFTER is exported and a new wrangler-config test\npins every\n[…]\ninding's period to it, the expected limit, and pairwise\nnamespace distinctness, parsed with jsonc-parser so comment style can't\nbreak the suite.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): dev wrangler config gets its own rate-limit namespace ids",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T20:49:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "29309dab274695aacbc3ff1b9c876c24641df8f4",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog entries for the CLI hardening; atomic token rotate TODO",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b2b910e256323ed2a34816930778df0b9c87138",
          "body": "DETECTED_KEYS exported from detect.ts anchors two new tripwires: a\nconvention test pins detectStack's output to the constant, and the\nREADME Auto-detected list is checked per key. The help tripwire now\nparses the Curated keys block and asserts exact set equality with\nCURATED_KEYS instead of whole-source substring matches.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs(cli): README lists all ten detected fields, tripwired to the code",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "24c8934e1e7b633a3bc9c0467698b66a3a4ff7dc",
          "body": "…blished\n\nA transient failure loading the viewer's profile prints a faint stderr\nnote instead of the publish nudge; stdout stays card-only for pipes.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): view distinguishes a failed own-profile fetch from never-pu…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e1e9716a2c788160f6a61c8f9e8e2835e6f87dfb",
          "body": "…y cards\n\nuseColor treats \"false\" like \"0\" (supports-color convention). renderProfile\nsections each push their own leading blank, so a zero-curated-entry profile\nno longer renders a double blank line; populated output is byte-identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): FORCE_COLOR=false disables color; single blank line on empt…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "626b95470cc3439d740e201c49b70199195d7b42",
          "body": "login peeks the stored credential, warns (prose, stderr) before\nreplacing a different base's token, and after a successful save\nrevokes the same-base token the file held at overwrite time. A failed\nrevoke never blocks the login. The device-code shape check bounds\ninterval (1..900s, finite) and expir\n[…]\nay) so a\nmangled 200 can neither hot-poll GitHub nor hold the login forever;\npollForToken self-defends and slow_down ignores unusable intervals.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): re-login revokes the replaced token; device-flow wire bounds",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "17101f9ee41d349897820bfa903d42409d10c20a",
          "body": "normalizeBase feeds both BASE and the new baseProblem check, so the\nvalidator and the request base cannot drift; the value must equal its\nown parsed origin, killing every parser-normalization bypass. Invalid\nvalues fail fast naming the variable instead of surfacing as a fake\nconnectivity error. Empt\n[…]\n. logout is exempt so tokens\nstored under legacy bases stay revocable. The logout other-base echo\nis sanitized like every other untrusted print.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): YMMV_API is validated at startup",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8be792c7d14a43bcbc4bf1994b390778a614c464",
          "body": "loadToken rejects a null root, a missing or non-string handle, and an\nempty token instead of crashing or misdiagnosing a reserved username.\nNew lenient peekCredential (base + token, any base) backs the login\nrevoke path; all three readers share one raw-read core.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): token store survives corrupt token.json",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T17:48:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2579c0d0b366d1005abfd3590c56ce4298178cca",
          "body": "The reference block named the JSON API but gave readers no path to the\ncontract; the data-row note now links docs/api.md (GitHub blob URL, same\nconvention as the cli README pointer). Footer e2e pins the anchor. Closes\nthe TODOS entry it implements.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): footer json note links the API contract doc",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T16:13:06Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "57f80a52ce3b448ebbeee2df2a6ba3fc6a85d439",
          "body": "…ys tripwire\n\n- docs/api.md: shape, status matrix, caching directives, CORS, stability\n  promise; examples verified against the seeded local worker\n- both READMEs link the contract next to their existing API mention\n- the CLI convention suite now asserts every curated key appears in the doc\n- TODOS: capture linking the doc from the site footer as a future ride-along\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: public API contract in docs/api.md, README pointers, curated-ke…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6f02e0e138f9d8a1a8a74f05e7352d669a2348c5",
          "body": "…429 contract\n\n- the three Worker message strings (write 429, login 429, GitHub 503) use the\n  sentence-break style the CLI fallbacks already use\n- rate-limit.ts no longer claims the CLI keys on the rate_limited slug; the\n  contract is the 429 status, the optional {message}, and retry-after\n- web tests require a non-empty message with no em dash; CLI test fixtures\n  stubbing these responses updated to the new wire copy\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): server error copy drops em dashes; comment states the real …",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5a783de71c56937c60bce0e6ce22eeae35f26385",
          "body": "- read API 404/500 return {\"error\":\"not_found\"|\"internal_error\"} as\n  application/json; the 500 gains cache-control: no-store\n- access-control-allow-origin: * on every read response; OPTIONS preflight\n  handler (GET/HEAD grant, authorization named alongside the wildcard)\n- live profile read folds ow\n[…]\nies\n- tests pin the envelopes, headers, exact cache-control values, and a\n  one-statement read; e2e covers the served worker end of the contract\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): JSON errors, CORS + preflight, atomic read on the public API",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T15:58:38Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8778850a436d66eb515cd1266ec64ddc96b6b99",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cap limits in README, changelog entries, TODOS updates",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9f543b4d862004fa12dd7e854b63fca5706e26f8",
          "body": "Over-cap answers re-prompt in place, detected over-cap values refuse\nbefore the network on -y, a 33rd extra is refused locally, and a failed\nPOST returns to the confirm step instead of discarding the session.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): interactive publish keeps answers through transient failures",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50c6cf107db2048c937b3003dba699e262ed6962",
          "body": "Server {message} bodies surface instead of raw dumps, mint slugs map to\nhuman copy, logout distinguishes unreachable from refused, the mid-publish\nre-login explains itself, and deterministic failures become PublishRefusal.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): honest error copy across publish, delete, login, and logout",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6d196f68fc9e374929effefe34494f816a47ed25",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): local cap pre-flight for set values and extra labels",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1976dc760874ee6298b63a657ce639d93de60d0a",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): wire-error parsing helpers and a typed NetworkError",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1edd878fd11e77be82603b0184c4411b4278ff22",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(api): human message on every write rejection",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f702f168afbc1543a55c079255d631566c862259",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(shared): export write caps, upgrade copy on schema mismatch",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T08:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "496aa65c98ef1505abf3a5505d0daaa252815ce8",
          "body": "The set/unset invalid-key error and the unknown-option error also echo raw\nargv; both now strip escapes like the handle branches, and the escape test\nwalks all five rejection paths. The flag-first -y error echoes the user's\nown verb (delete/publish) or a non-destructive publish example instead of\noffering delete to everyone. reserved.ts notes the old-binary skew caveat\nwhen reserving command words.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): sanitize every argv echo path, tailor the -y ordering hint",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "34f0dfdd60bddd5ec37d255c67543f4927dff555",
          "body": "Invalid-handle errors strip ANSI/OSC bytes before echoing argv (both view\nand bare paths). VIEW_USAGE hoisted beside the other usage consts. Tests\ncover the documented set -e shorthand, version-flag trailing rejection,\nand the escape-stripping. Root README commands list matches the CLI's;\nCHANGELOG wording narrowed (set/unset still join multi-word values).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): sanitize argv echoes, dedupe view usage, review test gaps",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "95ea15cfcdd7c095e5eefb433387c5c313b67972",
          "body": "Reject unexpected trailing arguments per verb: flag-first `ymmv -y delete`\nerrors instead of publishing, `ymmv delete <handle> -y` errors instead of\ndeleting the caller's own profile, and login/logout/view/bare-handle forms\ndrop nothing silently (help stays permissive by design). `version` and\n`publ\n[…]\nhared;\nthe web write path enforces it). Capitalized verbs hint the lowercase\ncommand. Help and README document `delete -y`, `-e`, and `version`.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): strict argv guards, version/publish verbs, verb case hints",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-19T05:36:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bed196dfe0867e184efb0bfdb428fa89ce6d3077",
          "body": "Bumps the github-actions group with 1 update: [actions/setup-node](https://github.com/actions/setup-node).\n\n\nUpdates `actions/setup-node` from 6.4.0 to 7.0.0\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6a\n[…]\n\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/setup-node in the github-actions group",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-18T20:21:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fc0aa876cdb84988e9fa60214b80bab52d8500d6",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.7.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:46:03Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d99190c0c78b3ead982b4f4a0b87ae4110d7179",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: move completed web todos",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "85bfa20c8c4b36a8ef43806cb50efe3e22329321",
          "body": "Theme state (data-theme, aria-pressed, theme-color meta) now re-applies on\nBFCache restore (pageshow persisted) and cross-tab changes (storage,\nincluding the null-key localStorage.clear() form), with a single\nstoredTheme()/applyTheme()/setTheme() source for the whitelist and\nfallback chain.\n\nThe ins\n[…]\nrejected clipboard write announces \"Copy failed\" in the\nlive region instead of failing silently. Dead native-button resets\ndropped from the css.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): theme resync across tabs/BFCache, accessible install command",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "9ec13a4a856d175d1121f0ac835ba5499c9ec1c9",
          "body": "POST /api/v1/profile rejected trim-empty entry values but stored accepted\nones raw, so curl could persist padded values the page rendered padded.\nValues are now trimmed, then visibility-checked, then stored trimmed,\nmirroring the extras guard. The shared invisible-char check moves from a\nhand-rolled\n[…]\nselectors\npassed the old list and stored visually blank rows) — this tightens\nextras identically. The length cap now measures the trimmed value.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(api): trim entry values at the write boundary",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:34:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b9b746b49c5b070281bb18506c3d71cfc63993b9",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: logout keeps its own copy on revoke timeout, correct TODOS claim",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "880364cc9aed0b09c2b22940d2fd99898a099788",
          "body": "CHANGELOG [Unreleased] gains the three CLI entries for the next tagged\nrelease. The three shipped TODOS move to Completed. profile-ops.ts's\nextras-upsert comment stops claiming the server stores labels verbatim\n(it trims at the write boundary since the extras fix).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: stage changelog, move completed todos, fix stale comment",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b19d17c2f480137e12482196fb9a1a5558aea87",
          "body": "ymmv 404 (and ymmv view api) used to make a network round-trip and\nmisreport \"no profile yet\" for names that can never have a profile. Both\nview paths now reject reserved names locally with a clear error; shape is\nchecked before reservation and the API stays the trust boundary. The baked\nlist means \n[…]\nhipped CLIs, now\ndocumented at both sites. Help copy drops the verb-collision rationale\n(all verbs are reserved, so such profiles cannot exist).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): reserved names fail fast locally",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "46d1761a3499e2a2eaaf9a67217e4f7f6c9a090f",
          "body": "Since the bound-handle guard, the dominant second-409 body is\nhandle_not_bound with actionable copy the CLI used to discard in favor of\na hardcoded handle-taken line that is wrong for that case. Prefer the\nserver's message via serverMessage (sanitized, 200-char capped); the\nhardcoded line stays as the fallback for non-JSON or message-less bodies.\nrateLimitMessage collapses to one line on the shared helpers.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): second publish-409 surfaces the server's message",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ebae5836839a79c20a2b5abd44b7ff1f7c0e0bc1",
          "body": "safeFetch defaults init.signal to AbortSignal.timeout(30_000) (explicit\nsignals win), the logout revoke rides safeFetch instead of bare fetch, and\nthe device-flow poll carries its own per-request signal feeding the\ntransient counter. Timeouts print one line, \"request timed out\", on every\nsurface: ca\n[…]\ne wire bytes to the\nterminal. New shared helpers serverMessage/withRetryHint/displayError/\nisTimeoutError DRY the four wire-message parse sites.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): every request times out after 30s with truthful error copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-12T02:26:14Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "bb45394b4d9cd49e4a9006553b83eb7f99db36d4",
          "body": "Bumps the github-actions group with 1 update: [actions/cache](https://github.com/actions/cache).\n\n\nUpdates `actions/cache` from 4.3.0 to 6.1.0\n- [Release notes](https://github.com/actions/cache/releases)\n- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)\n- [Commits](https://github\n[…]\n\n  dependency-version: 6.1.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n  dependency-group: github-actions\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/cache in the github-actions group",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-07-10T11:36:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d88b01c7b97c64dba9ba59011edf984ced718d54",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: coverage for publish 500 path and same-handle re-login history",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ba82d435de7dc963062ec085898a1eadd824179",
          "body": "The CLI branches on publish-409 status alone, so behavior is unchanged;\nfixtures now model the server's dominant 409 body. TODOS gains a P4 to\nsurface the server's 409 message in a future CLI release.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: align CLI 409 fixtures with handle_not_bound, queue CLI copy TODO",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "479c1060a82656b3172947c2d7e642f58bd8dd34",
          "body": "POST /api/v1/profile no longer binds handles. The bound-handle guard\nrefuses any payload handle that is not the caller's current\nusers.handle_lower (409 handle_not_bound; deployed CLIs already\nself-heal on 409 via re-login), and the write batch re-checks the bind\nin every statement (CAS) so a publis\n[…]\nments is\nnow login-only; the UNIQUE-violation backstop is gone with publish's\nlast handle write. Response echoes the stored login-proven casing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): publish only writes under the login-bound handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T05:54:07Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "33238ae5ab91cd68620bcda494ceb32b35a37a4d",
          "body": "Mutable action tags (checkout@v7, setup-node@v6, pnpm/action-setup@v6,\ncache@v4) are now 40-char commit SHAs with version comments, in both\nworkflows: release.yml holds npm Trusted Publishing OIDC + the Cloudflare\nAPI token, and ci.yml shares the Astro-fonts cache key with the release\njobs, so an un\n[…]\n now documents the retry path: gh run rerun --failed, and check\nnpm view before rerunning a failed publish job (npm publish is not\nidempotent).\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: SHA-pin actions, add job timeouts and dependabot",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T04:21:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d23d12d16b1e2a2bb961bcbda60c2c2f9393cb2f",
          "body": "npm 12.0.0 broke provenance publishing (npm/cli#9722): npm publish dies with\nCannot find module 'sigstore' from libnpmpublish/lib/provenance.js. The publish\nstep tracked npm@latest, so the v0.6.2 tag deployed the Worker and then failed at\nnpm publish. Node 22 ships npm 10.x and Trusted Publishing needs >= 11.5.1, so the\nupgrade step stays, pinned to the 11 major.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: pin release npm to 11.x",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:31:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "b56c7f565eb5c3e7cf20142b3124a5226224fbf7",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.2",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4027ff5331583ee53b205e1e6a55516798eb6614",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: record the reserved handle and extras validation",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c6dadcd2c4692c1da23c9d4c4998d25c6aa9fea3",
          "body": "The write API checked extras only for type and length, so an empty or\nwhitespace-only label or value was storable and rendered as a blank row that the\nCLI could never unset. Entries already rejected blank values; extras now match.\n\nTrim before the checks and store the trimmed string, so padding is n\n[…]\n Reject a field when nothing visible survives, while\nstoring the user's bytes untouched when an invisible character merely decorates\nreal text.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(web): reject extras with no visible content",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "22c28330e772225485d3f4f32cc6a94e03afe7ec",
          "body": "The site serves a static page at /404, and Astro resolves a static route ahead of\nthe dynamic [handle] page. So the handle \"404\" (a valid GitHub login) could be\npublished and served as JSON at /api/v1/u/404 while /404 rendered the not-found\npage: the HTML and JSON surfaces disagreed permanently.\n\nRe\n[…]\nn the gap. Two docstrings\nclaimed the reserved set was only api/login/logout; that stale comment is how the gap\ngot in, and both are corrected.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(shared): reserve the 404 handle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a760b1fd13098c2835b3737eda90bdc58de3b11",
          "body": "parseProfile capped entry.value and both extras fields but left entry.key,\nhandle, and updated_at with only a type check. All three reach sanitizeValue on\na CLI print path, so a hostile origin could feed a multi-megabyte string that the\nterminal sanitizer then scans. Cap them at the same read-side c\n[…]\nrous and decoupled from the write caps on purpose: a future\nwrite-cap increase must never make the CLI reject a legitimate first-party profile.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(shared): bound every profile string the sanitizer scans",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-10T03:17:12Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "30d91f44cbb44bb22d34d513626c0899eb9ba52f",
          "body": "Scoped pnpm overrides bump transitive dev deps out of their vulnerable\nranges: yaml stack overflow (GHSA-48c2-rrv3-qjmp) via yaml-language-server,\nesbuild dev-server file read (GHSA-g7r4-m6w7-qqqr) via tsup. Both dedupe to\na single patched copy.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(deps): pin yaml and esbuild past vuln ranges",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-08T00:45:38Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "986324eb786789455297cda0edffec2d56e22e15",
          "body": null,
          "is_bot": false,
          "headline": "fix(web): extend page grain to full document height",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-08T00:25:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7982d449c1dedef3bb0d0d68b2346faab75610ba",
          "body": "New design system documented in DESIGN.md.\n\n- brand: different font stack, fork-mark favicon/og image, og:image meta\n- landing: animated canvas hero, how-it-works section\n- profile: 'updated' stamp, SVG go arrow\n- diff: fork-mark heading, ratio-bar minimap of differing rows\n- e2e: font preload and token pins updated",
          "is_bot": false,
          "headline": "feat(web): redesign around new design system",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-07T23:29:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "422c9547405bf9573ce4b1176cfeb3dd6169259d",
          "body": null,
          "is_bot": false,
          "headline": "docs: match README tagline to site, add npm + CI badges",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-06T07:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b4620d8549492a68218c33aa9af2690dacede37",
          "body": null,
          "is_bot": false,
          "headline": "ci: cut a GitHub release from the CHANGELOG on each tag",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-06T07:29:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46992f2f35cfbcc83afccec1524ffe146da74d23",
          "body": "CHANGELOG stages the tag-driven ymmv-cli train; the Worker deploys by hand, so\na pure web change is live on ship and gets no [Unreleased] entry. Log a Worker\nchange only when it rides with a CLI change in the same tag.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: scope the CHANGELOG to CLI releases",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T21:01:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "813236c487d4cd5b37c23a9d694f70b1d9cbb825",
          "body": "Landing showed an example profile but not a diff, so the product's core verb\nwas invisible until you'd installed the CLI and published. Adds an\noctocat-vs-hubot example after the profile sample, teaches Diff.astro an\n`example` mode (plain-text handles, no swap, no extras) mirroring\nProfile.astro, an\n[…]\nn the live profile/diff pages tightened. e2e covers the 7/6 counts, the\nmissing-value row, amber-on-changed, single h1, and extras suppression.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): show an example diff on the landing page",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T21:01:36Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c892623908cfb03ebd85105ea6be61afd88b15ab",
          "body": "Cache node_modules/.astro/fonts keyed on the fonts config in the four\nbuild jobs (ci: verify + e2e; release: gate + deploy-worker), so builds\nstop re-fetching and a provider outage can't fail a cached build.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: cache Astro font downloads across builds",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0d130ee6c20fa222d78fc8e1c823754d4badedcc",
          "body": "Guards the migration: exactly 3 preload font links (a degraded build\ndrops one), /_astro/fonts/* serves 200, and --font-display/-sans/-mono\ncarry the real families.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(web): assert font preloads and self-hosting in e2e",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8692eddc000de1f19d4d1d86bf70ab7fe831b91b",
          "body": "Hand-written @font-face + manual preloads replaced by the stable fonts:\nconfig and the <Font> component. Fonts fetch at build (Fontshare +\nGoogle), self-host under hashed /_astro/fonts/* with immutable caching,\nand gain size-matched fallback metrics to cut CLS. General Sans stays 3\nstatics (no varia\n[…]\nder); Geist Mono is one sliced\nvariable file. Vendored woff2 removed; LICENSES.md kept for attribution\nsince the build redistributes the fonts.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "refactor(web): serve self-hosted fonts via Astro's Fonts API",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T11:55:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2d96dd4e84ef89d7aa3ad54995d982901f0cd5c4",
          "body": null,
          "is_bot": false,
          "headline": "feat(web): rework hero tagline copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T10:02:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b416d1fe1c2c7248a7c8cd6b9d500f026c6ed7a6",
          "body": null,
          "is_bot": false,
          "headline": "docs: add manual web deploy runbook",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:53:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b24261e50f56b6e46a96ee3af1047b8274790af9",
          "body": null,
          "is_bot": false,
          "headline": "docs: drop skill-routing section",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:53:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff6a692862d9e36dc89c31e6bed3394ca615d11a",
          "body": null,
          "is_bot": false,
          "headline": "fix(web): add title to favicon svg for biome a11y lint",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc026dbed7564a7e7deeb7bd577f29dc9a20c0dd",
          "body": null,
          "is_bot": false,
          "headline": "feat(web): add site favicon",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7b59f5cd31cba5ef4451cc7a6942ae89b4323303",
          "body": null,
          "is_bot": false,
          "headline": "docs: trim README description",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T07:20:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fabd8e8df98eac5612c02d397e5ff4e1ecacafd9",
          "body": null,
          "is_bot": false,
          "headline": "docs: add diff example to demo.gif",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:50:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "223115e47a29c595395caf9ba482280bd92bdae0",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.1",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "22feabcd5243288d42fe43ed51a12f31d9fbacdb",
          "body": "RL_AUTH rides with RL_WRITE in the manual-steps list; safeFetch is not the\nsingle fetch choke point (logout revoke is raw fetch); the stdout-clean\nclaim scoped to the blank line; tape comments match the 0.6.0 publish flow.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: correct stale claims in changelog, CLAUDE.md, TODOS.md, demo tape",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4e7e3dcef6081b827df4afbeceb477130262a42d",
          "body": "…tyle\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: strip stray indent from CLAUDE.md intro, match changelog bold s…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "50430d679d53e124057b5cfe4c2cc1dacbbd46f2",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the output-spacing pass",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f5d0ce5be88d765f56a98037031860a0b75a38bc",
          "body": "An HTTP-date retry-after (the WAF/proxy form) garbled the rate-limit\nmessage; the raw header also skipped the sanitize-at-render rule.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): retry hint only for seconds-form retry-after",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5233a53e2ae799b41f25bbf753780e3646b1b23a",
          "body": "One convention (render.ts header): every unit opens with one blank line,\nindents two spaces, and never carries trailing blanks; cli.ts prints the\none closing blank line (stdout on success, stderr on failure so pipes\nstay clean). help and --version stay flush-left. Fixes the cramped\npublish confirmation and the double blank between a viewed card and the\nnudge. Convention pinned by exact-byte tests incl. spawned-bin checks.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): print every message as an indented output unit",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "df18f48a6ce8b6ec757cc8fbf1a5220777bf94ae",
          "body": ".claude/ and .audits/ are machine-local; CLAUDE.md and TODOS.md are repo docs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore: ignore local tooling state, track project docs",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T04:14:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e875ff7881c7083dc5b3aa01c90201ee75cc6ce7",
          "body": null,
          "is_bot": false,
          "headline": "docs: update demo.gif",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:55:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "225653bf94eb8f9edbe342f3dc15ebf227d6fd9c",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: cut 0.6.0",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d9acd6c3b524365897e4733ce4bd1ec735409f56",
          "body": "Coverage audit gaps: renderProfile extras rows (incl. URL-extra\nlinkify), the second-409 handle-taken verdict, generic POST failure,\nand requestDeviceCode's non-ok status. 86% -> 92% of changed paths\nasserted; the rest are cosmetic smoke or manual-by-design.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test: cover the remaining error-path branches",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3e218a5cf74991f38346b6ea1794222e07e3fbbe",
          "body": "A malformed error body ({\"message\": 123}) reached wireText through\ntruthiness-only callers and threw a TypeError inside the error path\nitself. Coerce with String() before sanitizing; the error path never\nthrows.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): wireText coerces non-string wire values",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "051bba7f2b8ead4e1f1c327a1155503bf6bf0d04",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: trim changelog to user-facing changes",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8ab485763efb74bc39958eafa4d0d8ed900abfd7",
          "body": "A reader of ymmv help is already holding the CLI, and the first usage\nline says what ymmv does. The CTA belongs on the web page, where it\nlives already.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop the publish-your-own footer from help",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2cf3bff13cf2b5445d2a719bd15b0245496bf72c",
          "body": "Respects-NO_COLOR is a convention, not news, and YMMV_API is a\ncontributor knob; neither earns a line every user reads. Both stay\ndocumented in the READMEs.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop the env-var footer from help",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c1eaed54d9cec07dcad29c0b701b1d828ad110d6",
          "body": "Auth retries refuse ANY rebound identity (the 409 path now matches the\n401 guard; a re-run re-reads under the current handle, so a rename heal\nsurvives as two commands and a squat-seeded merge never publishes).\nCtrl+D at a prompt aborts cleanly instead of exiting 0 with a pending\nquestion unsettled;\n[…]\n Test env is hermetic\n(setup-env scrubs YMMV_API/FORCE_COLOR/NO_COLOR, pins TERM); new\nprompter, wireText, mint-shape, and Published-line tests.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): pre-landing review hardening",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "dd3fdef734b82b7f2f7e056dab4fe4f30c56153d",
          "body": "…ators\n\nThe foot becomes a flex row: numbers in ink (the existing .foot b idiom)\nwith faint words, a 24px gap standing in for the CLI's three spaces, and\nswap → alone on the right edge as the one action. Interpuncts gone.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(web): redesign the diff foot — counts left, swap right, no separ…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "897cfac8b21e793fd852c62a5febd28b54b3b82b",
          "body": "\"N differ   M shared\" in the terminal; \"N differ · M shared · swap →\"\non the web (HTML collapses spaces, the interpunct carries the layout\nthere). The tagline is gone from both surfaces.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: diff footer is just the counts",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "699e1b557272c590ff433738c73bdad9f7167047",
          "body": "\"N differ · M shared: your mileage may vary\" everywhere the line renders\n(CLI diff, web diff foot, README samples), and the web extras heading\nreads \"Extras (not compared)\". The two surfaces stay identical.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: drop the em dash from the diff footer on both surfaces",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ef056ce87112402b8ebf7208a1d3c6db0e42ac21",
          "body": "A message that contains a sentence break now opens with a capital too:\n\"Can't reach ymmv.fyi. Check your connection (...)\", \"Session expired.\nRun ...\". Single fragments (publish failed: 500, rate limited, ...) stay\nlowercase.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): capitalize multi-sentence messages",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ed68e25442072dd82b659660263277704282a5af",
          "body": "Every prompt, error, and confirmation now uses plain punctuation\n(periods, semicolons, a colon in the help title). The diff footer keeps\nits web-matching typography, and the em dash survives as the\nmissing-value glyph. Test regexes and the plain-help snapshot follow.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): drop em dashes from runtime messages",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4c2f7c4afb769515f0c598bd16a947c052172cfc",
          "body": "Hint reads \"Enter to keep, \\\"-\\\" to clear\" (symmetric verbs, no\nseparator glyph). Abort lines drop the em dash: \"Aborted. Nothing\npublished.\" / \"Cancelled. Nothing deleted.\"\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): prompt-hint and abort copy",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5448314161fed0ee6a37ffe5c41c91cbb6e5c6ef",
          "body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: changelog for the CLI restyle",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4ad18952a7dfca8d89da797bb02b36d521813ed3",
          "body": "…t account\n\nA 401 mid-publish re-runs the device flow and retries. If a different\nGitHub account gets authorized in that browser tab, the retry would\npublish the first account's merged profile onto the second — a silent\ncross-account overwrite. The retry now refuses when the re-minted handle\ndiffers from the profile being published. The 409 path keeps its rebind:\nthere the handle itself is the dispute, and a changed handle is the heal.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): refuse the 401-retry publish when re-login binds a differen…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7ec78deb4fd4ee53e26e0b97e1bca6cb2d8acf67",
          "body": "help renders with faint section heads and a bold wordmark; plain output\nstays byte-identical (pinned by a snapshot test; the curated-key list\nremains literal in source for the sync tripwire). publishProfile returns\n{handle, url} instead of printing — commands compose their own output:\npublish prints\n[…]\n verification link, a bold sanitized code (was printed\nraw off the wire), a waiting-for-approval line, and — standalone only —\na next-step hint.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): styled help, linked messages, one-line set/unset",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d6fa591c79c01350111731dd384c22c6c7c7cb33",
          "body": "New http.ts safeFetch wraps every CLI fetch (api, login mint, device\nflow): any thrown network failure — undici TypeError, TLS, proxy — reads\nas \"can't reach <host> — check your connection (<cause>)\" instead of a\nraw fetch failed. A thrown fetch during the GitHub login poll now counts\nas a transient like a proxy 5xx (previously it crashed a login the user\nhad already approved), and the give-up message carries the last cause.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(cli): actionable network errors; login poll survives blips",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8eca91de5cce649ec98963ef90cf754d218c665f",
          "body": "…ompts\n\nRepublishing shows the merged preview card immediately; one keypress\npublishes, n aborts, e opens the prefilled field walk (loop until\nconfirmed). First-ever publish keeps the guided prompts, now preceded by\na one-line hint making Enter-to-keep and \"-\"-to-clear discoverable.\nymmv -y on a TTY\n[…]\n); the delete confirm cancels\nthe same way. The carried-fields and duplicate-extra notes recompute\nwith every card so an edit pass updates them.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): card-first republish with [Y/n/e], -y publishes without pr…",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "35e159df60711957d8e0d143c82379dae6afa214",
          "body": "Prompt labels render faint (plain output byte-identical). New\nPrompter.choice() asks single-letter questions (first-letter match,\nre-ask on garbage, keys validated unique). Ctrl+C during any question\naborts it via AbortSignal — the nodejs/node#53497 workaround — and\nsurfaces as PromptAborted for the command to handle; between questions\nthe process exits 130 directly instead of readline swallowing the\nsignal and hanging.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): styled prompts, single-letter choice(), clean Ctrl+C",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fa3a23c0550ddad649ce190d6d8ee87f2545fb99",
          "body": "The profile card opens with the web breadcrumb (faint site/ + bold\nhandle), URL values render as links, and the updated line is humanized\n(3h ago; plain date past 30 days). A new preview mode — used only by the\npublish flow — lists unset curated keys as faint em-dash rows and drops\nthe not-yet-true \n[…]\nhiding empties. The diff\ngains the web's title line (how X differs from you) and uppercase column\nheaders. README diff samples updated to match.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): card + diff parity with the web",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "887e336159732ed518e3b7b7424cad7653dbec3b",
          "body": "link() renders URLs amber with an OSC-8 hyperlink and https://-stripped\ndisplay when color is on (full plain URL when off; no OSC-8 on TERM=linux/\ndumb, which mishandle unknown OSC). relTime() humanizes wire timestamps.\ncolorEnabled() moves into render.ts so every print site shares one gate.\nnotFound() links the site CTA. Amber now covers links + diff-differences,\nmatching the web's scarcity rule exactly.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(cli): render toolkit — links, relative time, shared color gate",
          "author_name": "bardisty",
          "author_login": "bardisty",
          "committed_at": "2026-07-03T01:30:02Z",
          "body_truncated": false,
          "is_coding_agent": true
        }
      ],
      "releases_count": 16,
      "commits_last_year": 128,
      "latest_release_at": "2026-07-22T04:52:08Z",
      "latest_release_tag": "v0.9.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 8,
      "mean_days_between_releases": 2
    },
    "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": "ymmv-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ymmv",
            "uses",
            "dotfiles",
            "developer-tools",
            "profile",
            "diff",
            "cli",
            "terminal"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/ymmv-cli",
          "is_deprecated": false,
          "latest_version": "0.9.0",
          "repository_url": "https://github.com/ymmv-fyi/ymmv",
          "versions_count": 16,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2783,
          "first_published_at": "2026-06-30T01:14:08.057000Z",
          "latest_published_at": "2026-07-22T04:51:59.736000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 8
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 2
    },
    "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": [
        "packages/cli/tsconfig.json",
        "packages/shared/tsconfig.json",
        "packages/web/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 50191,
      "source_files_sampled": 84,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 3020
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 1,
        "malicious_count": 0,
        "assessed_package": "npm:ymmv-cli@0.9.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "env-paths",
          "manifest": "packages/cli/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3"
        },
        {
          "name": "@ymmv/shared",
          "manifest": "packages/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "workspace:*"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "env-paths",
            "direct": true,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/check",
            "direct": false,
            "version": "0.9.9",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/check",
            "direct": false,
            "version": "^0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/cloudflare",
            "direct": false,
            "version": "14.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/cloudflare",
            "direct": false,
            "version": "^14",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler",
            "direct": false,
            "version": "2.13.1",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-darwin-arm64",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-darwin-x64",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-arm64-gnu",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-arm64-musl",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-x64-gnu",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-linux-x64-musl",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-wasm32-wasi",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-win32-arm64-msvc",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-binding-win32-x64-msvc",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/compiler-rs",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/internal-helpers",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/language-server",
            "direct": false,
            "version": "2.16.10",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/markdown-satteri",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/prism",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/telemetry",
            "direct": false,
            "version": "3.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/underscore-redirects",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@astrojs/yaml2ts",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-string-parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/helper-validator-identifier",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/parser",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@babel/types",
            "direct": false,
            "version": "7.29.7",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/biome",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-darwin-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-arm64-musl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-linux-x64-musl",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-arm64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@biomejs/cli-win32-x64",
            "direct": false,
            "version": "2.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-darwin-arm64",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-darwin-x64",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-arm64-gnu",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-arm64-musl",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-x64-gnu",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-linux-x64-musl",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-wasm32-wasi",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-win32-arm64-msvc",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@bruits/satteri-win32-x64-msvc",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "@capsizecss/unpack",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/core",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "@clack/prompts",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/kv-asset-handler",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/unenv-preset",
            "direct": false,
            "version": "2.16.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vite-plugin",
            "direct": false,
            "version": "1.42.3",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vitest-pool-workers",
            "direct": false,
            "version": "0.16.20",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/vitest-pool-workers",
            "direct": false,
            "version": "^0.16",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-darwin-arm64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-linux-arm64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cloudflare/workerd-windows-64",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "@cspotcode/source-map-support",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/abbreviation",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/css-abbreviation",
            "direct": false,
            "version": "2.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/css-parser",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/html-matcher",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/scanner",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/stream-reader",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emmetio/stream-reader-utils",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/core",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/runtime",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "npm"
          },
          {
            "name": "@emnapi/wasi-threads",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/aix-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/android-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/darwin-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/freebsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-loong64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-mips64el",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-ppc64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-riscv64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-s390x",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/linux-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/netbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openbsd-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/openharmony-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/sunos-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-arm64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-ia32",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@esbuild/win32-x64",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "@img/colour",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-darwin-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-darwin-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-ppc64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-riscv64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-s390x",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linux-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-arm64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-libvips-linuxmusl-x64",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-ppc64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-riscv64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-s390x",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linux-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-linuxmusl-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-wasm32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-arm64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-ia32",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@img/sharp-win32-x64",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/gen-mapping",
            "direct": false,
            "version": "0.3.13",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "npm"
          },
          {
            "name": "@napi-rs/wasm-runtime",
            "direct": false,
            "version": "1.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@oslojs/encoding",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@oxc-project/types",
            "direct": false,
            "version": "0.137.0",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "^1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/colors",
            "direct": false,
            "version": "4.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/dumper",
            "direct": false,
            "version": "0.6.5",
            "ecosystem": "npm"
          },
          {
            "name": "@poppinss/exception",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-android-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-darwin-x64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-freebsd-x64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-arm64-musl",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-ppc64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-s390x-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-gnu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-linux-x64-musl",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-openharmony-arm64",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-wasm32-wasi",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-arm64-msvc",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/binding-win32-x64-msvc",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@rolldown/pluginutils",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/pluginutils",
            "direct": false,
            "version": "5.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm-eabi",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-android-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-darwin-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-freebsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-gnueabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm-musleabihf",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-arm64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-loong64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-ppc64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-riscv64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-s390x-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-linux-x64-musl",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openbsd-x64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-openharmony-arm64",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-arm64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-ia32-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-gnu",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@rollup/rollup-win32-x64-msvc",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/core",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-javascript",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/engine-oniguruma",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/langs",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/primitive",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/themes",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/types",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "@shikijs/vscode-textmate",
            "direct": false,
            "version": "10.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@sindresorhus/is",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "@speed-highlight/core",
            "direct": false,
            "version": "1.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@tybys/wasm-util",
            "direct": false,
            "version": "0.10.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/chai",
            "direct": false,
            "version": "5.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/deep-eql",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.9",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree-jsx",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@types/hast",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/mdast",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@types/nlcst",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "@ungap/structured-clone",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/expect",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/mocker",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/pretty-format",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/runner",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/snapshot",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/spy",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@vitest/utils",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/kit",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-core",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-server",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/language-service",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/source-map",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@volar/typescript",
            "direct": false,
            "version": "2.4.28",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/emmet-helper",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@vscode/l10n",
            "direct": false,
            "version": "0.0.18",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv-draft-04",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "am-i-vibing",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "any-promise",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "anymatch",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "aria-query",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "assertion-error",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "astro",
            "direct": false,
            "version": "^7",
            "ecosystem": "npm"
          },
          {
            "name": "axobject-query",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "bail",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "blake3-wasm",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "boolbase",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "bundle-require",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "cac",
            "direct": false,
            "version": "6.7.14",
            "ecosystem": "npm"
          },
          {
            "name": "ccount",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chai",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-html4",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "chokidar",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ci-info",
            "direct": false,
            "version": "4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "cjs-module-lexer",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "clsx",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "comma-separated-tokens",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "11.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "common-ancestor-path",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "confbox",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "consola",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "cookie-es",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "crossws",
            "direct": false,
            "version": "0.3.5",
            "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": "csso",
            "direct": false,
            "version": "5.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "defu",
            "direct": false,
            "version": "6.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "destr",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devalue",
            "direct": false,
            "version": "5.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "8.0.4",
            "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": "dset",
            "direct": false,
            "version": "3.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "emmet",
            "direct": false,
            "version": "2.4.11",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "error-stack-parser-es",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "es-module-lexer",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "esbuild",
            "direct": false,
            "version": "0.28.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "estree-walker",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter3",
            "direct": false,
            "version": "5.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "expect-type",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "extend",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-deep-equal",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-truncated-width",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-string-width",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fast-wrap-ansi",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "fix-dts-default-cjs-exports",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flattie",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontace",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "fontkitten",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-tsconfig",
            "direct": false,
            "version": "5.0.0-beta.4",
            "ecosystem": "npm"
          },
          {
            "name": "github-slugger",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "h3",
            "direct": false,
            "version": "1.15.11",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-html",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-from-parse5",
            "direct": false,
            "version": "8.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-parse-selector",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-to-html",
            "direct": false,
            "version": "9.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "hast-util-whitespace",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "hastscript",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "html-void-elements",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "http-cache-semantics",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "iron-webcrypto",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-docker",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-inside-container",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-obj",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-wsl",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "joycon",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "^3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "kleur",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-android-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-arm64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-darwin-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-freebsd-x64",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm-gnueabihf",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-arm64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-gnu",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-linux-x64-musl",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-arm64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lightningcss-win32-x64-msvc",
            "direct": false,
            "version": "1.32.0",
            "ecosystem": "npm"
          },
          {
            "name": "lilconfig",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "lines-and-columns",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "load-tsconfig",
            "direct": false,
            "version": "0.2.5",
            "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": "magicast",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "mdast-util-to-hast",
            "direct": false,
            "version": "13.2.1",
            "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": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "miniflare",
            "direct": false,
            "version": "4.20260625.0",
            "ecosystem": "npm"
          },
          {
            "name": "mlly",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "npm"
          },
          {
            "name": "mrmime",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "muggle-string",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "mz",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "nanoid",
            "direct": false,
            "version": "3.3.15",
            "ecosystem": "npm"
          },
          {
            "name": "neotraverse",
            "direct": false,
            "version": "0.6.18",
            "ecosystem": "npm"
          },
          {
            "name": "nlcst-to-string",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-fetch-native",
            "direct": false,
            "version": "1.6.7",
            "ecosystem": "npm"
          },
          {
            "name": "node-mock-http",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-path",
            "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": "obug",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ofetch",
            "direct": false,
            "version": "1.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "ohash",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-parser",
            "direct": false,
            "version": "0.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "oniguruma-to-es",
            "direct": false,
            "version": "4.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-queue",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-timeout",
            "direct": false,
            "version": "7.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "package-manager-detector",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "parse5",
            "direct": false,
            "version": "7.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-browserify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-to-regexp",
            "direct": false,
            "version": "6.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "pathe",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "piccolore",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "picocolors",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "pirates",
            "direct": false,
            "version": "4.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "pkg-types",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.61.1",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "8.5.15",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-load-config",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "prettier",
            "direct": false,
            "version": "3.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "prismjs",
            "direct": false,
            "version": "1.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "process-ancestry",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "property-information",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "radix3",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "readdirp",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex",
            "direct": false,
            "version": "6.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "regex-recursion",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "regex-utilities",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "rehype",
            "direct": false,
            "version": "13.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-parse",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "rehype-stringify",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "request-light",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "npm"
          },
          {
            "name": "request-light",
            "direct": false,
            "version": "0.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-pkg-maps",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "retext-smartypants",
            "direct": false,
            "version": "6.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "rolldown",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "rollup",
            "direct": false,
            "version": "4.62.2",
            "ecosystem": "npm"
          },
          {
            "name": "satteri",
            "direct": false,
            "version": "0.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "sax",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "ecosystem": "npm"
          },
          {
            "name": "sharp",
            "direct": false,
            "version": "0.34.5",
            "ecosystem": "npm"
          },
          {
            "name": "shiki",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "siginfo",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "sisteransi",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.7.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "npm"
          },
          {
            "name": "source-map-js",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "space-separated-tokens",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "stackback",
            "direct": false,
            "version": "0.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "std-env",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "stringify-entities",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "sucrase",
            "direct": false,
            "version": "3.35.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "10.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "svgo",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "thenify",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "thenify-all",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "tiny-inflate",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "tinybench",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyclip",
            "direct": false,
            "version": "0.1.15",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "tinyexec",
            "direct": false,
            "version": "1.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "tinyrainbow",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "tree-kill",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "trim-lines",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "trough",
            "direct": false,
            "version": "2.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "ts-interface-checker",
            "direct": false,
            "version": "0.1.13",
            "ecosystem": "npm"
          },
          {
            "name": "tslib",
            "direct": false,
            "version": "2.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "tsup",
            "direct": false,
            "version": "8.5.1",
            "ecosystem": "npm"
          },
          {
            "name": "typesafe-path",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript-auto-import-cache",
            "direct": false,
            "version": "0.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "ufo",
            "direct": false,
            "version": "1.6.4",
            "ecosystem": "npm"
          },
          {
            "name": "ultrahtml",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "uncrypto",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "7.28.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "unenv",
            "direct": false,
            "version": "2.0.0-rc.24",
            "ecosystem": "npm"
          },
          {
            "name": "unified",
            "direct": false,
            "version": "11.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "unifont",
            "direct": false,
            "version": "0.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-is",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-position",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-stringify-position",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit",
            "direct": false,
            "version": "5.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "unist-util-visit-parents",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "unstorage",
            "direct": false,
            "version": "1.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vfile",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-location",
            "direct": false,
            "version": "5.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vfile-message",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "vite",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "vitefu",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "vitest",
            "direct": false,
            "version": "4.1.9",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-css",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-emmet",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-html",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-prettier",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-typescript",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-typescript-twoslash-queries",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "volar-service-yaml",
            "direct": false,
            "version": "0.0.70",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-css-languageservice",
            "direct": false,
            "version": "6.3.10",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-html-languageservice",
            "direct": false,
            "version": "5.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-json-languageservice",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-jsonrpc",
            "direct": false,
            "version": "8.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-jsonrpc",
            "direct": false,
            "version": "9.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver",
            "direct": false,
            "version": "9.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-protocol",
            "direct": false,
            "version": "3.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-protocol",
            "direct": false,
            "version": "3.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-textdocument",
            "direct": false,
            "version": "1.0.12",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-types",
            "direct": false,
            "version": "3.17.5",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-languageserver-types",
            "direct": false,
            "version": "3.18.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-nls",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "vscode-uri",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "web-namespaces",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "which-pm-runs",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "why-is-node-running",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "workerd",
            "direct": false,
            "version": "1.20260625.1",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "4.105.0",
            "ecosystem": "npm"
          },
          {
            "name": "wrangler",
            "direct": false,
            "version": "^4",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "ws",
            "direct": false,
            "version": "8.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "xxhash-wasm",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml-language-server",
            "direct": false,
            "version": "1.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.3",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "22.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "youch",
            "direct": false,
            "version": "4.1.0-beta.10",
            "ecosystem": "npm"
          },
          {
            "name": "youch-core",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "3.25.76",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "zwitch",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 507,
        "direct_count": 1,
        "indirect_count": 506
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 40,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "bardisty",
          "commits": 126,
          "avatar_url": "https://avatars.githubusercontent.com/u/6248459?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "biome.json"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "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": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "6 out of 6 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 0/9 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "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": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "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": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 10,
            "reason": "GitHub workflow tokens follow principle of least privilege",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 1,
            "reason": "9 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ac930a52fb1a1d2c5358cdae046628b7a9ed014d",
        "ran_at": "2026-07-31T02:19:13Z",
        "aggregate_score": 4.8,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T07:19:38Z",
      "oldest_open_prs": [
        {
          "number": 40,
          "created_at": "2026-07-21T07:52:37Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 42,
          "created_at": "2026-07-25T07:12:38Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-22T04:40:41Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/ymmv-fyi/ymmv",
    "host": "github.com",
    "name": "ymmv",
    "owner": "ymmv-fyi"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": "The weighted overall 62 is calibrated to 69 on the published index scale (record calibration 2026-08-02).",
      "notes": [
        {
          "code": "overall_calibration",
          "params": {
            "raw": 62,
            "calibrated": 69,
            "calibration": "2026-08-02"
          }
        }
      ],
      "value": 69,
      "inputs": {
        "security": 59,
        "vitality": 74,
        "community": 32,
        "governance": 48,
        "calibration": "2026-08-02",
        "engineering": 90,
        "ai_readiness": 85,
        "weighted_overall_raw": 62
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 74,
        "weight": 0.21,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 57,
            "inputs": {
              "commits_last_year": 128,
              "human_commit_share": 0.98,
              "days_since_last_push": 5,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "128 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 128
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "exceptional",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 16,
              "latest_release_tag": "v0.9.0",
              "releases_from_tags": false,
              "days_since_latest_release": 8,
              "mean_days_between_releases": 2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "16 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 8 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2
                    }
                  }
                ],
                "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": "exceptional",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.17,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "readme_badges": null,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "readme_badge_services": [],
              "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": 57,
            "inputs": {
              "packages": [
                "ymmv-cli"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2783
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,783 downloads/month across npm",
                "points": 45.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2783,
                      "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": "weak",
        "name": "Sustainability & Governance",
        "value": 48,
        "weight": 0.23,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution, Newcomer PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution",
                    "newcomer_pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 67,
            "inputs": {
              "merged_prs": 40,
              "open_issues": 0,
              "closed_issues": 0,
              "prs_merged_7d": null,
              "prs_decided_7d": null,
              "prs_merged_30d": null,
              "prs_decided_30d": null,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 0,
              "first_time_authors_30d": null,
              "first_time_prs_merged_30d": null,
              "first_time_prs_decided_30d": null
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 42
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "40/40 decided PRs merged",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 40,
                      "decided": 40
                    }
                  }
                ],
                "max_points": 30
              },
              {
                "key": "newcomer_pr_acceptance",
                "name": "Newcomer PR acceptance",
                "detail": "no first-time contributor's PR decided in 30d",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_newcomer_prs",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 13
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "followers": 0,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "ymmv-fyi",
              "public_repos": 1,
              "account_age_days": 32
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "0 followers of ymmv-fyi",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 0,
                      "login": "ymmv-fyi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "1 public repos, account ~0 yr old",
                "points": 2.4,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 1
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 0
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "exceptional",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "ymmv-cli"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 8
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 8 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 8
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "16 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 16
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.19,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "excellent",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "biome.json",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "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": "6 out of 6 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [
                "astro",
                "cli",
                "cloudflare-workers",
                "command-line-tool",
                "developer-profile",
                "developer-tools",
                "dotfiles",
                "terminal"
              ],
              "has_wiki": false,
              "homepage": "https://ymmv.fyi",
              "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": "https://ymmv.fyi",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "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": "moderate",
        "name": "Security",
        "value": 59,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "weak",
            "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": 49,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 4.8
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "6 out of 6 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 0/9 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 4,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "GitHub workflow tokens follow principle of least privilege",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "9 existing vulnerabilities detected",
                "points": 0.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "exceptional",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:ymmv-cli@0.9.0 runtime dependency closure — what installing the published package pulls in — 1 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:ymmv-cli@0.9.0",
                  "assessed": 1
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 1,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "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": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "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": "exceptional",
            "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": 1,
              "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
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "excellent",
        "name": "AI Readiness",
        "value": 85,
        "weight": 0.04,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                "CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 3020
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "CLAUDE.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "98 of 98 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 98,
                      "sampled": 98
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/cli/tsconfig.json",
                "packages/shared/tsconfig.json",
                "packages/web/tsconfig.json"
              ],
              "agent_commit_share": 0.83,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.02
            },
            "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": "biome.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "biome.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/cli/tsconfig.json, packages/shared/tsconfig.json, packages/web/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "83 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 83,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "2 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 2,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "exceptional",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 50191,
              "source_files_sampled": 84,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/84 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 84,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
      }
    ],
    "classification": {
      "top": [
        "library",
        "application"
      ],
      "labels": [
        "cli",
        "library"
      ],
      "scores": {
        "cli": 6,
        "library": 6
      },
      "primary": "cli",
      "evidence": [
        {
          "tier": "distribution",
          "label": "library",
          "source": "registry:npm",
          "weight": 6
        },
        {
          "tier": "description",
          "label": "cli",
          "source": "description:cli",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "cli",
          "source": "tag:cli",
          "weight": 2
        },
        {
          "tier": "tags",
          "label": "cli",
          "source": "tag:command-line-tool",
          "weight": 2
        }
      ],
      "artifacts": [],
      "confidence": "medium",
      "host_extension": false,
      "runs_as_process": true,
      "consumed_by_code": true
    },
    "metrics_version": "2.5.0"
  },
  "warnings": [],
  "report_type": "repository",
  "generated_at": "2026-07-31T02:19:26.917259Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/y/ymmv-fyi/ymmv.svg",
  "full_name": "ymmv-fyi/ymmv",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v2.5.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.