Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-27 03:02 UTC

wp-media / imagify-plugin

Speed up your website with lighter images without losing quality.

PHP · JavaScriptSin licencia detectada★ 80 estrellas⑂ 31 forksdesde jul 2016Ver en GitHub ↗

wp-media/imagify-plugin tiene un índice de salud de 73 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Engineering Quality (86/100) y la más baja, Community & Adoption (42/100). Se actualizó por última vez hoy. 2 personas concentran la mayor parte del trabajo reciente.

73
global / 100
Bueno

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

73
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas 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.

Titularidad

WP MediaOrganización
91 seguidores74 repositorios públicosdesde may 2015

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
Packagistwp-media/imagify-pluginv2.3.0163266hace 18 díasperformancewordpressimagesoptimization

Métricas por categoría

Vitalidad

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

85Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
17.3/36Cadencia de commits — 25/52 semanas con commits
18/18Volumen de commits — 132 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year132
human_commit_share0,94
days_since_last_push0
active_weeks_last_year25
Cómo se puntúa
27/27Publica versiones — 74 versiones publicadas
36/36Recencia de las versiones — última versión hace 34 días
19.8/27Cadencia de publicación — una versión cada ~87,7 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count74
latest_release_tagv2.2.9
releases_from_tagsno
days_since_latest_release34
mean_days_between_releases87,7
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?

42En riesgo · 18% del índice global
Cómo se puntúa
30.8/60Estrellas — 80 estrellas
12.3/25Forks — 31 forks
6.8/15Observadores — 18 observadores
Datos de entrada utilizados
forks31
stars80
watchers18
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_template
Cómo se puntúa
42.8/80Descargas mensuales — 1632 descargas/mes en packagist
0/20Dependientes en el registro — 0 paquetes dependen de él
Datos de entrada utilizados
packageswp-media/imagify-plugin
dependents0
ecosystemspackagist
total_downloads68.958
monthly_downloads1632

Sostenibilidad y Gobernanza

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

76Bueno · 24% del índice global
Cómo se puntúa
25.2/54Factor bus — la mitad de los commits recae en 2 contribuyente(s)
12.2/22.5Distribución de commits — el principal contribuyente firma el 46% de los commits
13.5/13.5Amplitud de contribuyentes — 31 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 10 contributing companies or organizations
Datos de entrada utilizados
bus_factor2
contributors_sampled31
top_contributor_share0,457
Cómo se puntúa
34.8/46.8Resolución de issues — 74% de issues cerradas
35.7/38.3Aceptación de PR — 564/604 PR decididos fusionados
9/15OpenSSF Scorecard: Code-Review — Found 17/25 approved changesets -- score normalized to 6
Datos de entrada utilizados
merged_prs564
open_issues146
closed_issues427
issue_closed_ratio0,745
closed_unmerged_prs40
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
14.1/25Alcance del propietario — 91 seguidores de wp-media
25/25Trayectoria — 74 repos públicos, cuenta de ~11 años
Datos de entrada utilizados
followers91
owner_typeOrganization
is_verified
owner_loginwp-media
public_repos74
account_age_days4076
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en packagist
35/35Recencia de publicación — última publicación hace 18 días
20/20Historial de versiones — 66 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packageswp-media/imagify-plugin
ecosystemspackagist
any_deprecatedno
min_days_since_publish18

Calidad de Ingeniería

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

86Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 10 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — .eslintrc.json, phpcs.xml
0/9.6Hooks de pre-commit
6.4/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 22 out of 22 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
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://imagify.io
10/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttps://imagify.io
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?

70Bueno · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — sin datos
2.5/2.5CI-Tests — 22 out of 22 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
4.5/7.5Code-Review — Found 17/25 approved changesets -- score normalized to 6
2.5/2.5Contributors — project has 10 contributing companies or organizations
0/10Dangerous-Workflow — sin datos
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Licencia — license file not detected
7.5/7.5Maintained — 30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — sin datos
0/5Pinned-Dependencies — sin datos
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
0/7.5Token-Permissions — sin datos
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated12
scorecard_versionv5.5.0
checks_inconclusive6
scorecard_aggregate6,3
Excluidos de la puntuación (sin datos o no aplicable): branch_protection, dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. 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
0/25Dependencias indirectas libres de avisos conocidos — el conjunto transitivo no es separable de las dependencias de desarrollo y prueba en este alcance
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories22
affected_packages11
assessed_packages258
unassessed_packages2
affected_by_severityhigh 7, moderate 4
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Dependencias indirectas libres de avisos conocidos, Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejaron 258 dependencias resueltas con OSV. 2 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido o fuera de la lista de paquetes informada. Este repositorio no publica ningún paquete que el índice resuelva, por lo que se evaluó en su lugar el grafo de dependencias del repositorio. Ese grafo mezcla fijaciones de desarrollo y prueba con las dependencias distribuidas, de modo que solo se puntúan las dependencias declaradas en tiempo de ejecución; los hallazgos transitivos se informan como contexto y quedan excluidos de la puntuación. 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? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

82Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
38.6/40Historial de commits legible — 68 de 94 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,723
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes11.674
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — .eslintrc.json, phpcs.xml
11/11Verificación estática de tipos — Tests/e2e/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 37 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 6 de los últimos 100 commits son actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configsTests/e2e/tsconfig.json
agent_commit_share0,37
toolchain_manifests
dependency_bot_commit_share0,06
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
27/45Código verificable por tipos — PHP con configuración de verificación de tipos (Tests/e2e/tsconfig.json)
54.9/55Tamaños de archivo manejables — 1/570 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePHP
largest_source_bytes205.546
source_files_sampled570
oversized_source_files1

Datos clave

80estrellas de GitHub
31contribuidores
132commits en los últimos 12 meses
0días desde el último push
74versiones publicadas
2factor bus
146issues abiertas
npm, Packagistecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'imagify_dev' from its registry

Más detalle

Historial de estrellas y forks 0 ★ / 31 ⇿
0Estrellas
31Forks
65Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

01325383122017-042021-112026-07
Mayor 0Menor 0Parche 41

Cada punto abarca 9 días.

OpenSSF Scorecard 6.3 / 10
6.3agregado

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-27 03:02 UTC

10Binary-Artifactsno binaries found in the repo
n/dBranch-Protectioninternal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md
10CI-Tests22 out of 22 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
6Code-ReviewFound 17/25 approved changesets -- score normalized to 6
10Contributorsproject has 10 contributing companies or organizations
n/dDangerous-Workflowno workflows found
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10
n/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
10Vulnerabilities0 existing vulnerabilities detected
Dependencias directas 9
RegistroPaqueteRestricción de versiónManifiesto
Packagistcweagans/composer-patches^1.7composer.json
Packagistdeliciousbrains/wp-background-processingdev-mastercomposer.json
Packagistleague/container^4.2composer.json
Packagistwoocommerce/action-scheduler^3.4composer.json
Packagistwordpress/mcp-adapter^0.5.0composer.json
Packagistwp-media/apply-filters-typed^1.0composer.json
Packagistwp-media/mcp-oauth^1.0.2composer.json
Packagistwp-media/plugin-family^1.0composer.json
Packagistwp-media/wp-mixpanel^1.0composer.json
Todas las dependencias 260

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

RegistroPaqueteVersiónRelación
npm@eslint/eslintrc1.3.3indirecta
npm@humanwhocodes/config-array0.11.7indirecta
npm@humanwhocodes/module-importer1.0.1indirecta
npm@humanwhocodes/object-schema1.2.1indirecta
npm@nodelib/fs.scandir2.1.5indirecta
npm@nodelib/fs.stat2.0.5indirecta
npm@nodelib/fs.walk1.2.8indirecta
npm@playwright/test1.60.0indirecta
npm@roots/bud^6.11.0indirecta
npm@types/node22.19.19indirecta
npmabbrev1.1.1indirecta
npmacorn8.8.1indirecta
npmacorn-jsx5.3.2indirecta
npmajv6.12.6indirecta
npmansi-regex5.0.1indirecta
npmansi-styles3.2.1indirecta
npmansi-styles4.3.0indirecta
npmargparse1.0.10indirecta
npmargparse2.0.1indirecta
npmarray-each1.0.1indirecta
npmarray-slice1.1.0indirecta
npmasync3.2.4indirecta
npmautoprefixer7.2.6indirecta
npmbalanced-match1.0.2indirecta
npmbrace-expansion1.1.11indirecta
npmbraces3.0.3indirecta
npmbrowserslist2.11.3indirecta
npmcallsites3.1.0indirecta
npmcaniuse-lite1.0.30001431indirecta
npmchalk2.4.2indirecta
npmchalk4.1.2indirecta
npmchart.js^4.4.0indirecta
npmclean-css5.3.1indirecta
npmcolor-convert1.9.3indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.3indirecta
npmcolor-name1.1.4indirecta
npmcolors1.1.2indirecta
npmconcat-map0.0.1indirecta
npmcross-spawn7.0.3indirecta
npmdateformat3.0.3indirecta
npmdebug4.3.4indirecta
npmdeep-is0.1.4indirecta
npmdetect-file1.0.0indirecta
npmdiff3.5.0indirecta
npmdoctrine3.0.0indirecta
npmduplexer0.1.2indirecta
npmelectron-to-chromium1.4.284indirecta
npmescape-string-regexp1.0.5indirecta
npmescape-string-regexp4.0.0indirecta
npmeslint8.27.0indirecta
npmeslint-scope7.1.1indirecta
npmeslint-utils3.0.0indirecta
npmeslint-visitor-keys2.1.0indirecta
npmeslint-visitor-keys3.3.0indirecta
npmespree9.4.1indirecta
npmesprima4.0.1indirecta
npmesquery1.4.0indirecta
npmesrecurse4.3.0indirecta
npmestraverse5.3.0indirecta
npmesutils2.0.3indirecta
npmeventemitter20.4.14indirecta
npmexit0.1.2indirecta
npmexit-x0.2.2indirecta
npmexpand-tilde2.0.2indirecta
npmextend3.0.2indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein2.0.6indirecta
npmfastq1.13.0indirecta
npmfigures3.2.0indirecta
npmfile-entry-cache6.0.1indirecta
npmfill-range7.1.1indirecta
npmfind-up5.0.0indirecta
npmfindup-sync0.3.0indirecta
npmfindup-sync4.0.0indirecta
npmfined1.2.0indirecta
npmflagged-respawn1.0.1indirecta
npmflat-cache3.0.4indirecta
npmflatted3.4.2indirecta
npmfor-in1.0.2indirecta
npmfor-own1.0.0indirecta
npmfs.realpath1.0.0indirecta
npmfsevents2.3.2indirecta
npmfunction-bind1.1.1indirecta
npmgetobject1.0.2indirecta
npmglob5.0.15indirecta
npmglob7.1.7indirecta
npmglob-parent6.0.2indirecta
npmglobal-modules1.0.0indirecta
npmglobal-prefix1.0.2indirecta
npmglobals13.17.0indirecta
npmgrapheme-splitter1.0.4indirecta
npmgrunt1.5.3indirecta
npmgrunt-cli1.4.3indirecta
npmgrunt-contrib-cssmin4.0.0indirecta
npmgrunt-contrib-uglify5.2.2indirecta
npmgrunt-eslint24.0.0indirecta
npmgrunt-known-options2.0.0indirecta
npmgrunt-legacy-log3.0.1indirecta
npmgrunt-legacy-log-utils2.1.3indirecta
npmgrunt-legacy-util2.0.2indirecta
npmgrunt-postcss0.9.0indirecta
npmgzip-size5.1.1indirecta
npmhas1.0.3indirecta
npmhas-flag3.0.0indirecta
npmhas-flag4.0.0indirecta
npmhomedir-polyfill1.0.3indirecta
npmhooker0.2.3indirecta
npmiconv-lite0.4.24indirecta
npmignore5.2.0indirecta
npmimport-fresh3.3.0indirecta
npmimurmurhash0.1.4indirecta
npminflight1.0.6indirecta
npminherits2.0.4indirecta
npmini1.3.8indirecta
npminterpret1.1.0indirecta
npmis-absolute1.0.0indirecta
npmis-core-module2.11.0indirecta
npmis-extglob2.1.1indirecta
npmis-glob4.0.3indirecta
npmis-number7.0.0indirecta
npmis-path-inside3.0.3indirecta
npmis-plain-object2.0.4indirecta
npmis-relative1.0.0indirecta
npmis-unc-path1.0.0indirecta
npmis-windows1.0.2indirecta
npmisexe2.0.0indirecta
npmisobject3.0.1indirecta
npmjs-sdsl4.1.5indirecta
npmjs-yaml3.14.2indirecta
npmjs-yaml4.1.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmkind-of6.0.3indirecta
npmlevn0.4.1indirecta
npmliftup3.0.1indirecta
npmlocate-path6.0.0indirecta
npmlodash4.18.1indirecta
npmlodash.merge4.6.2indirecta
npmmake-iterator1.0.1indirecta
npmmap-cache0.2.2indirecta
npmmaxmin3.0.0indirecta
npmmicromatch4.0.5indirecta
npmminimatch3.0.8indirecta
npmminimatch3.1.5indirecta
npmmkdirp1.0.4indirecta
npmms2.1.2indirecta
npmnatural-compare1.4.0indirecta
npmnopt3.0.6indirecta
npmnopt4.0.3indirecta
npmnormalize-range0.1.2indirecta
npmnum2fraction1.2.2indirecta
npmobject.defaults1.1.0indirecta
npmobject.map1.0.1indirecta
npmobject.pick1.3.0indirecta
npmonce1.4.0indirecta
npmoptionator0.9.1indirecta
npmos-homedir1.0.2indirecta
npmos-tmpdir1.0.2indirecta
npmosenv0.1.5indirecta
npmp-limit3.1.0indirecta
npmp-locate5.0.0indirecta
npmparent-module1.0.1indirecta
npmparse-filepath1.0.2indirecta
npmparse-passwd1.0.0indirecta
npmpath-exists4.0.0indirecta
npmpath-is-absolute1.0.1indirecta
npmpath-key3.1.1indirecta
npmpath-parse1.0.7indirecta
npmpath-root0.1.1indirecta
npmpath-root-regex0.1.2indirecta
npmpicomatch2.3.2indirecta
npmpify4.0.1indirecta
npmplaywright1.60.0indirecta
npmplaywright-core1.60.0indirecta
npmpostcss6.0.23indirecta
npmpostcss-value-parser3.3.1indirecta
npmprelude-ls1.2.1indirecta
npmpretty-bytes5.6.0indirecta
npmpunycode2.1.1indirecta
npmqueue-microtask1.2.3indirecta
npmrechoir0.7.1indirecta
npmregexpp3.2.0indirecta
npmresolve1.22.1indirecta
npmresolve-dir1.0.1indirecta
npmresolve-from4.0.0indirecta
npmreusify1.0.4indirecta
npmrimraf3.0.2indirecta
npmrun-parallel1.2.0indirecta
npmsafer-buffer2.1.2indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsource-map0.6.1indirecta
npmsprintf-js1.0.3indirecta
npmsprintf-js1.1.2indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-json-comments3.1.1indirecta
npmsupports-color5.5.0indirecta
npmsupports-color7.2.0indirecta
npmsupports-preserve-symlinks-flag1.0.0indirecta
npmtext-table0.2.0indirecta
npmto-regex-range5.0.1indirecta
npmtype-check0.4.0indirecta
npmtype-fest0.20.2indirecta
npmtypescript5.9.3indirecta
npmuglify-js3.17.4indirecta
npmunc-path-regex0.1.2indirecta
npmunderscore.string3.3.6indirecta
npmundici-types6.21.0indirecta
npmuri-js4.4.1indirecta
npmuri-path1.0.0indirecta
npmutil-deprecate1.0.2indirecta
npmv8flags3.2.0indirecta
npmwhich1.3.1indirecta
npmwhich2.0.2indirecta
npmword-wrap1.2.3indirecta
npmwrappy1.0.2indirecta
npmyocto-queue0.1.0indirecta
Packagista5hleyrich/wp-background-processing1.0.1indirecta
Packagistantecedent/patchwork2.1.12indirecta
Packagistbrain/monkey2.4.0indirecta
Packagistcomposer/installers1.6.0indirecta
Packagistdangoodman/composer-for-wordpress2.0.0indirecta
Packagistdealerdirect/phpcodesniffer-composer-installer0.4.4indirecta
Packagistdoctrine/instantiator1.3.0indirecta
Packagisthamcrest/hamcrest-php2.0.0indirecta
Packagistmockery/mockery1.3.1indirecta
Packagistmyclabs/deep-copy1.9.4indirecta
Packagistphar-io/manifest1.0.3indirecta
Packagistphar-io/version2.0.1indirecta
Packagistphpcompatibility/php-compatibility9.2.0indirecta
Packagistphpcompatibility/phpcompatibility-paragonie1.0.1indirecta
Packagistphpcompatibility/phpcompatibility-wp2.0.0indirecta
Packagistphpdocumentor/reflection-common2.0.0indirecta
Packagistphpdocumentor/reflection-docblock4.3.4indirecta
Packagistphpdocumentor/type-resolver1.0.1indirecta
Packagistphpspec/prophecy1.10.1indirecta
Packagistphpunit/php-code-coverage6.1.4indirecta
Packagistphpunit/php-file-iterator2.0.2indirecta
Packagistphpunit/php-text-template1.2.1indirecta
Packagistphpunit/php-timer2.1.2indirecta
Packagistphpunit/php-token-stream3.1.1indirecta
Packagistphpunit/phpunit7.5.20indirecta
Packagistsebastian/code-unit-reverse-lookup1.0.1indirecta
Packagistsebastian/comparator3.0.2indirecta
Packagistsebastian/diff3.0.2indirecta
Packagistsebastian/environment4.2.3indirecta
Packagistsebastian/exporter3.1.2indirecta
Packagistsebastian/global-state2.0.0indirecta
Packagistsebastian/object-enumerator3.0.3indirecta
Packagistsebastian/object-reflector1.1.1indirecta
Packagistsebastian/recursion-context3.0.0indirecta
Packagistsebastian/resource-operations2.0.1indirecta
Packagistsebastian/version2.0.1indirecta
Packagistsquizlabs/php_codesniffer3.4.2indirecta
Packagistsymfony/polyfill-ctype1.13.1indirecta
Packagisttheseer/tokenizer1.1.3indirecta
Packagistwebmozart/assert1.6.0indirecta
Packagistwp-coding-standards/wpcs1.2.1indirecta
Avisos de dependencias 11

Este repositorio no publica ningún paquete que el índice resuelva, así que se evaluó su propio grafo de dependencias — 258 paquetes, que incluyen también fijaciones de desarrollo y prueba que nunca se distribuyen: 11 tienen avisos conocidos, de los cuales 0 son directas. 2 no pudieron evaluarse: sin versión resuelta, ecosistema no admitido, o fuera de la lista de paquetes informada.

PaqueteVersiónRelaciónGravedadAvisosCorregido en
brace-expansion1.1.11indirectaalta45.0.8
cross-spawn7.0.3indirectaalta17.0.5
js-yaml3.14.2indirectaalta24.3.0
js-yaml4.1.1indirectaalta24.3.0
minimatch3.0.8indirectaalta310.2.3
phpunit/phpunit7.5.20indirectaalta112.5.8
postcss6.0.23indirectaalta58.5.18
ajv6.12.6indirectamoderada18.18.0
diff3.5.0indirectamoderada18.0.3
micromatch4.0.5indirectamoderada14.0.8
word-wrap1.2.3indirectamoderada11.2.4

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": [],
      "is_fork": false,
      "size_kb": 17191,
      "has_wiki": false,
      "homepage": "https://imagify.io",
      "languages": {
        "CSS": 161302,
        "PHP": 2413283,
        "Shell": 33317,
        "JavaScript": 307193,
        "TypeScript": 60391
      },
      "pushed_at": "2026-07-27T02:33:31Z",
      "created_at": "2016-07-12T15:33:20Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-26T22:56:35Z",
      "description": "Speed up your website with lighter images without losing quality.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "develop",
      "license_spdx_raw": null,
      "primary_language": "PHP",
      "significant_languages": [
        "PHP",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "https://wp-media.me",
      "name": "WP Media",
      "type": "Organization",
      "login": "wp-media",
      "company": null,
      "location": "World Wide",
      "followers": 91,
      "avatar_url": "https://avatars.githubusercontent.com/u/12661344?v=4",
      "created_at": "2015-05-29T15:04:54Z",
      "is_verified": null,
      "public_repos": 74,
      "account_age_days": 4076
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.2.9",
          "kind": "patch",
          "published_at": "2026-06-22T08:06:46Z"
        },
        {
          "tag": "v2.2.8",
          "kind": "patch",
          "published_at": "2026-05-25T15:52:33Z"
        },
        {
          "tag": "v2.2.7",
          "kind": "patch",
          "published_at": "2026-01-14T18:04:50Z"
        },
        {
          "tag": "v2.2.6",
          "kind": "patch",
          "published_at": "2025-05-28T15:53:07Z"
        },
        {
          "tag": "v2.2.5",
          "kind": "patch",
          "published_at": "2025-01-28T10:02:55Z"
        },
        {
          "tag": "v2.2.4",
          "kind": "patch",
          "published_at": "2024-12-23T14:10:53Z"
        },
        {
          "tag": "v2.2.3.2",
          "kind": "other",
          "published_at": "2024-11-13T10:13:39Z"
        },
        {
          "tag": "v2.2.3.1",
          "kind": "other",
          "published_at": "2024-11-08T18:35:55Z"
        },
        {
          "tag": "v2.2.3",
          "kind": "patch",
          "published_at": "2024-11-07T11:09:28Z"
        },
        {
          "tag": "v2.2.2",
          "kind": "patch",
          "published_at": "2024-04-24T08:32:38Z"
        },
        {
          "tag": "v2.2.1",
          "kind": "patch",
          "published_at": "2024-03-27T08:57:00Z"
        },
        {
          "tag": "v2.2.0.1",
          "kind": "other",
          "published_at": "2024-03-08T11:18:34Z"
        },
        {
          "tag": "v2.2",
          "kind": "other",
          "published_at": "2024-03-06T17:25:36Z"
        },
        {
          "tag": "v2.1.3.1",
          "kind": "other",
          "published_at": "2024-01-03T16:04:25Z"
        },
        {
          "tag": "v2.1.3",
          "kind": "patch",
          "published_at": "2023-11-16T14:21:02Z"
        },
        {
          "tag": "v2.1.2",
          "kind": "patch",
          "published_at": "2023-09-19T15:25:46Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2023-02-01T15:30:31Z"
        },
        {
          "tag": "v2.1",
          "kind": "other",
          "published_at": "2022-12-13T16:16:28Z"
        },
        {
          "tag": "v2.0",
          "kind": "other",
          "published_at": "2022-07-20T13:00:32Z"
        },
        {
          "tag": "v1.10",
          "kind": "other",
          "published_at": "2021-07-15T18:29:13Z"
        },
        {
          "tag": "v1.9.14",
          "kind": "patch",
          "published_at": "2021-02-09T14:48:35Z"
        },
        {
          "tag": "v1.9.13",
          "kind": "patch",
          "published_at": "2020-11-16T16:53:13Z"
        },
        {
          "tag": "v1.9.12",
          "kind": "patch",
          "published_at": "2020-11-09T20:29:06Z"
        },
        {
          "tag": "v1.9.11",
          "kind": "patch",
          "published_at": "2020-09-10T15:07:20Z"
        },
        {
          "tag": "v1.9.10",
          "kind": "patch",
          "published_at": "2020-05-26T12:33:10Z"
        },
        {
          "tag": "v1.9.9",
          "kind": "patch",
          "published_at": "2020-02-13T22:48:41Z"
        },
        {
          "tag": "v1.9.9-alpha1",
          "kind": "prerelease",
          "published_at": "2020-01-31T22:46:18Z"
        },
        {
          "tag": "v1.9.8.1",
          "kind": "other",
          "published_at": "2019-11-15T00:18:09Z"
        },
        {
          "tag": "v1.9.8",
          "kind": "patch",
          "published_at": "2019-11-11T16:25:23Z"
        },
        {
          "tag": "v1.9.7",
          "kind": "patch",
          "published_at": "2019-10-08T14:48:22Z"
        },
        {
          "tag": "v1.9.6",
          "kind": "patch",
          "published_at": "2019-07-22T21:09:26Z"
        },
        {
          "tag": "v1.9.5",
          "kind": "patch",
          "published_at": "2019-07-16T14:06:05Z"
        },
        {
          "tag": "v1.9.4",
          "kind": "patch",
          "published_at": "2019-07-10T15:52:38Z"
        },
        {
          "tag": "v1.9.3.1",
          "kind": "other",
          "published_at": "2019-07-02T22:43:19Z"
        },
        {
          "tag": "v1.9.3",
          "kind": "patch",
          "published_at": "2019-06-17T12:45:44Z"
        },
        {
          "tag": "v1.9.2",
          "kind": "patch",
          "published_at": "2019-05-16T12:35:07Z"
        },
        {
          "tag": "v1.9.1",
          "kind": "patch",
          "published_at": "2019-05-09T15:27:55Z"
        },
        {
          "tag": "v1.9",
          "kind": "other",
          "published_at": "2019-05-06T15:18:39Z"
        },
        {
          "tag": "v1.8.4.1",
          "kind": "other",
          "published_at": "2018-12-18T22:31:30Z"
        },
        {
          "tag": "v1.8.4",
          "kind": "patch",
          "published_at": "2018-11-12T14:58:00Z"
        },
        {
          "tag": "v1.8.3",
          "kind": "patch",
          "published_at": "2018-10-24T13:28:59Z"
        },
        {
          "tag": "v1.8.2",
          "kind": "patch",
          "published_at": "2018-09-13T13:43:29Z"
        },
        {
          "tag": "v1.8.1.1",
          "kind": "other",
          "published_at": "2018-07-31T11:21:48Z"
        },
        {
          "tag": "v1.8.1",
          "kind": "patch",
          "published_at": "2018-07-18T14:18:04Z"
        },
        {
          "tag": "v1.8.0.1",
          "kind": "other",
          "published_at": "2018-06-19T15:45:58Z"
        },
        {
          "tag": "v1.8",
          "kind": "other",
          "published_at": "2018-06-18T14:10:47Z"
        },
        {
          "tag": "v1.7.1.3",
          "kind": "other",
          "published_at": "2018-04-12T21:47:43Z"
        },
        {
          "tag": "v1.7.1.2",
          "kind": "other",
          "published_at": "2018-04-12T12:13:58Z"
        },
        {
          "tag": "v1.7.1",
          "kind": "patch",
          "published_at": "2018-04-09T23:20:22Z"
        },
        {
          "tag": "v1.7",
          "kind": "other",
          "published_at": "2018-03-13T15:16:52Z"
        },
        {
          "tag": "v1.6.14.2",
          "kind": "other",
          "published_at": "2018-01-15T21:32:00Z"
        },
        {
          "tag": "v1.6.14.1",
          "kind": "other",
          "published_at": "2018-01-11T14:26:58Z"
        },
        {
          "tag": "v1.6.14",
          "kind": "patch",
          "published_at": "2018-01-10T15:17:21Z"
        },
        {
          "tag": "v1.6.13.1",
          "kind": "other",
          "published_at": "2017-11-08T23:16:19Z"
        },
        {
          "tag": "v1.6.13",
          "kind": "patch",
          "published_at": "2017-11-07T10:27:42Z"
        },
        {
          "tag": "v1.6.12",
          "kind": "patch",
          "published_at": "2017-10-18T20:54:39Z"
        },
        {
          "tag": "v1.6.11",
          "kind": "patch",
          "published_at": "2017-10-12T13:36:25Z"
        },
        {
          "tag": "v1.6.10",
          "kind": "patch",
          "published_at": "2017-10-05T21:13:16Z"
        },
        {
          "tag": "v1.6.9.1",
          "kind": "other",
          "published_at": "2017-08-12T16:41:37Z"
        },
        {
          "tag": "v1.6.9",
          "kind": "patch",
          "published_at": "2017-08-11T20:26:30Z"
        },
        {
          "tag": "v1.6.8",
          "kind": "patch",
          "published_at": "2017-07-26T21:05:46Z"
        },
        {
          "tag": "v1.6.7.1",
          "kind": "other",
          "published_at": "2017-07-13T08:50:42Z"
        },
        {
          "tag": "v1.6.7",
          "kind": "patch",
          "published_at": "2017-07-11T22:51:13Z"
        },
        {
          "tag": "v1.6.6",
          "kind": "patch",
          "published_at": "2017-06-27T09:40:46Z"
        },
        {
          "tag": "v1.6.5",
          "kind": "patch",
          "published_at": "2017-06-21T22:46:26Z"
        },
        {
          "tag": "v1.6.4",
          "kind": "patch",
          "published_at": "2017-04-06T13:17:21Z"
        },
        {
          "tag": "v1.6.3",
          "kind": "patch",
          "published_at": "2016-12-16T14:13:07Z"
        },
        {
          "tag": "v1.6.2",
          "kind": "patch",
          "published_at": "2016-11-22T21:43:38Z"
        },
        {
          "tag": "v1.6.1",
          "kind": "patch",
          "published_at": "2016-11-22T18:07:56Z"
        },
        {
          "tag": "v1.6",
          "kind": "other",
          "published_at": "2016-11-21T20:22:02Z"
        },
        {
          "tag": "v1.5.10",
          "kind": "patch",
          "published_at": "2016-10-05T06:25:07Z"
        },
        {
          "tag": "v1.5.8",
          "kind": "patch",
          "published_at": "2016-08-24T13:23:10Z"
        },
        {
          "tag": "v1.5.7",
          "kind": "patch",
          "published_at": "2016-08-23T21:50:54Z"
        },
        {
          "tag": "v1.5.6",
          "kind": "patch",
          "published_at": "2016-07-29T17:55:24Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "ea2ba0ff26200958baae8caba4122acab506b597",
          "body": null,
          "is_bot": false,
          "headline": "Add generatedpackages to distignore",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-26T22:56:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "48a21f72072f1f8dca6267d3ab3c279d5d1ab94b",
          "body": null,
          "is_bot": false,
          "headline": "bump 2.3.1-rc2",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:38:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "16f0be808ab4ba94e6ef54c39137552a1b0b9bff",
          "body": "…ing Next-Gen (#1194)",
          "is_bot": false,
          "headline": "Fix #1041: Fix indefinite spinner and stuck progress in Generate Miss…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:19:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f220e5f4e451e9c85ef1b33456c318502933b733",
          "body": "…rupted (#921) (#1190)",
          "is_bot": false,
          "headline": "Fix valid API key flagged as invalid when validation request is inter…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:19:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bbdf052e8364bdb4e1a88a177c9d0c28e42fb635",
          "body": "…backups (#859) (#1189)",
          "is_bot": false,
          "headline": "Fix wrong orientation of next-gen images generated from EXIF-rotated …",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:18:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4015d6a8f06f857559cbb26fdbc9cd85c036086",
          "body": "…1192)",
          "is_bot": false,
          "headline": "Enhancement #634: Add documentation link to the out-of-quota popup (#…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:18:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fcb7cc86c62330039169146cabfb59fb3b5598c",
          "body": "…edia from bulk optimization (#1193)",
          "is_bot": false,
          "headline": "Enhancement #516: Add imagify_bulk_optimize_media filter to exclude m…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-24T01:18:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5e8308093e16da002a54f42677022e31f13f1bc",
          "body": null,
          "is_bot": false,
          "headline": "Bump to 2.3.1-rc1",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-22T06:14:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c4dad07760559057fcb6ecf941cb7845997ad103",
          "body": null,
          "is_bot": false,
          "headline": "Integrate wp-media/mcp-oauth library for MCP OAuth (#1182) (#1187)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-22T06:10:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "039662f33183f982e7cb90810e4496a223b53a84",
          "body": "Co-authored-by: Rémy Perona <remperona@gmail.com>\nCo-authored-by: Nico Mollet <nicolas@wp-media.me>\nCo-authored-by: honemo <honemo@gmail.com>\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Added a fix for the lightbox (#762)",
          "author_name": "Cyrille C.",
          "author_login": "CrochetFeve0251",
          "committed_at": "2026-07-21T22:47:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3f919c41741706271d4e1dab2f4b2e583b66c91e",
          "body": "…d correcting viewport unit (#1183)\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1066: Fix upgrade modal layout shift by animating geometry an…",
          "author_name": "Honemo",
          "author_login": "Honemo",
          "committed_at": "2026-07-21T22:47:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "fee381b0fa3530e04c5a897bb21b580a5b656660",
          "body": "…ard (#1185)\n\nCo-authored-by: Claude Sonnet 5 <noreply@anthropic.com>\nCo-authored-by: Gaël Robin <robin.gael@gmail.com>",
          "is_bot": false,
          "headline": "Closes #1178: Gate credit-consuming abilities behind confirm/quota gu…",
          "author_name": "Honemo",
          "author_login": "Honemo",
          "committed_at": "2026-07-21T22:46:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c0a04830658064cb4c65f74ec862c295b0dcf551",
          "body": "Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Publish MCP abilities to ard-service on release (#1179)",
          "author_name": "Mathieu Lamiot",
          "author_login": "MathieuLamiot",
          "committed_at": "2026-07-20T00:13:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1217838796892a6fff82be6be6eca949a40d3020",
          "body": "Co-authored-by: mauroTabsSpaces <300527260+mauroTabsSpaces@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add imagify_get_mime_types filter to imagify_get_mime_types() (#1184)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-20T00:08:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f7a0a0466d1a4ee5821048ec6e226b910a5c92e",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1132: More MCP Abilities (#1173)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-17T01:08:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3fb4102e5967d1a088916fc8f70e8034765b8455",
          "body": "Co-authored-by: honemo <honemo@gmail.com>",
          "is_bot": false,
          "headline": "Release/2.3.0 (#1174)",
          "author_name": "Honemo",
          "author_login": "Honemo",
          "committed_at": "2026-07-08T07:14:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b4017b29e47cc3f8c05b6b808e7019545ea0277e",
          "body": null,
          "is_bot": false,
          "headline": "Update Readme.txt",
          "author_name": "honemo",
          "author_login": "Honemo",
          "committed_at": "2026-07-07T20:30:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0de399c286691dd5653b1388519ea4d45e65efc5",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'develop' into release/2.3.0",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-03T16:18:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10fdf9da514286e1f583b5ad483c30d66e71b68e",
          "body": "… (#1176)",
          "is_bot": false,
          "headline": "Closes #1175: Add analytics opt-in consent banner mirroring WP Rocket…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-03T16:17:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c71400d59b2cbcbb53b7da43669e83a8445bac7",
          "body": null,
          "is_bot": false,
          "headline": "Version change",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-03T13:56:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b84f0f7999643bb3943d74cc8a064b7a323e808e",
          "body": null,
          "is_bot": false,
          "headline": "update changelog",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-01T06:35:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63fe2883e413e36f83effcc7cad681403199a23b",
          "body": null,
          "is_bot": false,
          "headline": "release 2.3.0",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-07-01T06:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2de7f1e52565f79fa1215b940f50674d9f11c98c",
          "body": null,
          "is_bot": false,
          "headline": "Revert \"Closes #1132: More MCP Abilities (#1157)\" (#1172)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-30T18:09:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a04e666229dad38bc3b2ab19ac4d300a2d90a65",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1132: More MCP Abilities (#1157)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-30T18:07:14Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "61c863bc1b29c176d7e31f327c8e1f21dab7df6b",
          "body": "… (#1167)\n\nCo-authored-by: claude-sonnet-4-6 <noreply@anthropic.com>\nCo-authored-by: honemo <honemo@gmail.com>",
          "is_bot": false,
          "headline": "feat: Mixpanel analytics — MCP ability tracking and opt-in consent UI…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-30T15:58:17Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "53340d052548dee558ed93d73fa3a87dbb626c3c",
          "body": null,
          "is_bot": false,
          "headline": "Change background color of button (#1163)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-29T08:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3eca7fc825f1cfdb341868839ecc8a0679821bc",
          "body": "…ty integration tests (#1156)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1145: add type assertions and edge-case coverage to MCP abili…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-29T08:02:19Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8f4409001bc7cc815e1db2d4b98dc0c1ae7cb026",
          "body": "…ies (#1154)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1143: add check_permissions() unit tests for all 7 MCP abilit…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-28T23:31:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "36dcd7fce904e5363c2a54c244b6058142729ed2",
          "body": "…fold references (#1155)",
          "is_bot": false,
          "headline": "Closes #1144: update AbilitiesSubscriber docblock — remove stale scaf…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:56:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "08446f6a981f31a6ff7afb26667a77b96e6cb92a",
          "body": "…() (#1153)",
          "is_bot": false,
          "headline": "Closes #1142: validate attachment post type in OptimizeMedia::execute…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:56:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2bcca9d374c06e2ebf0c92478cf91d38d8df2c14",
          "body": "…er (#1151)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1141: Cast GetNextgenCoverage execute() return value to integ…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:55:56Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "40cd5e39269067d2218a33f18186fd97489ee9fe",
          "body": "…bilities (#1152)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1140: correct optimize-media slug typo and document missing a…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:55:44Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "33447a4bf28ce9b56ba06304449d46ee59826500",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: correct GetSettings docblock slug (#1139) (#1150)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:55:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2e572591b8ebc55871430b844c2f7075bca1cc42",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1138: Reject version key in UpdateSettings::execute() (#1147)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:49:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ee8ee1fceedec1b1641103a3ef59b1e8b76fc909",
          "body": "… (#1149)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1137: Fix MCP abilities to use Imagify capability abstraction…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:48:34Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7217fd2f0e6b46cbc615be42823055981d56ee64",
          "body": "…e() (#1148)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1136: Validate attachment existence in GetMediaStatus::execut…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-26T13:48:05Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7462a5f25ba01bbadfa8e7dd4d7e34670ad42a6f",
          "body": null,
          "is_bot": false,
          "headline": "Add plugin documentation into docs folder (#1092)",
          "author_name": "Honemo",
          "author_login": "Honemo",
          "committed_at": "2026-06-25T13:46:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3acb94679d1a4bd3d35607e3f7b1fb43fb76ccf0",
          "body": "Co-authored-by: Nico Mollet <nicolas@wp-media.me>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Sync develop with trunk (2.3.0-alpha1) (#1135)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-25T13:15:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "98db648a9ce9afcdd46c1549a41ab184f029e169",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #1097: Add MCP + Abilities to Imagify (#1133)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-25T09:56:31Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c9a24b3d54fa77e6db0f9c80527deb3ac3b3bc74",
          "body": null,
          "is_bot": false,
          "headline": "Update readme.txt",
          "author_name": "Nico Mollet",
          "author_login": "nicomollet",
          "committed_at": "2026-06-24T10:50:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef959bcf14074afb89cd047ec9d8bed750e94f9a",
          "body": null,
          "is_bot": false,
          "headline": "chore: add /.claude to .distignore",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-24T01:02:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "72f90c9e50555423110faee79c19d1c9a0afad5e",
          "body": "Revert readme.txt",
          "is_bot": false,
          "headline": "Revert readme.txt",
          "author_name": "Nico Mollet",
          "author_login": "nicomollet",
          "committed_at": "2026-06-22T14:29:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c72b73f82e0cb14da916442390bcc24a96fa02d4",
          "body": "Updated readme.txt to reflect changes in plugin features, installation instructions, and user feedback.",
          "is_bot": false,
          "headline": "Revise readme.txt for Imagify plugin updates",
          "author_name": "Nico Mollet",
          "author_login": "nicomollet",
          "committed_at": "2026-06-22T12:29:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9fe2157834205fb5fc21486bc14f0b249501ba0a",
          "body": "…upstream\n\n- challenger: remove GitHub comment posting (Step 5), add re-invocation\n  section, CURRENT_MODEL/session_learnings inputs, revised_risk_level,\n  non-routed fields note, always-include rule for feedback/alternative_suggestions\n- grooming-agent: add re-invocation section (revise in place on\n[…]\narker\n  (PATCH existing on re-invocation, create new on first run), Plan v<N> heading,\n  _note field in JSON, comment_posted reflects reality\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(agents): sync challenger and grooming-agent with Maestro 0.6.2 …",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-22T09:11:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2c3b49d26ea5424756873d2b87416512af5ab73b",
          "body": "Release 2.2.9",
          "is_bot": false,
          "headline": "Merge pull request #1110 from wp-media/release/2.2.9",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-22T08:04:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0abf2b52c057ffd9520583b1e8fb9431e5a2f844",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): update 2.2.9 changelog with full entry list",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-22T07:59:10Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "0e27dcaf1f639f7d5a279e6e8577a4a3e72cc1fb",
          "body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(release): bump version to 2.2.9 and update changelog",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-22T07:42:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3e16d1165f768d3ed05d94c2753611cff9af178a",
          "body": null,
          "is_bot": false,
          "headline": "fix(ngg): guard against null meta_data in get_media_files() (#1096)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-22T07:16:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c85c2ee5eea9cd52d54fc6c97f708935ed6b7b39",
          "body": "Run bin/dev-seed.sh unconditionally after boot so IMAGIFY_TESTS_API_KEY\nis written to imagify_settings before the guard pre-flight runs. Teach\nthe qa-engineer to verify the key is non-empty before marking API-key\nguards as CANNOT_VERIFY blockers.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(qa-agent): seed API key before guard pre-flight check",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-19T13:54:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "6c9c91a7de29e6b47a2c87e71d61b0ac3ce69b7b",
          "body": "…#1093)\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #885: fix WP-CLI generate-missing-nextgen ArgumentCountError (…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-19T10:16:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "733adf5ae23cec0f754c3065d9a68a704f3c43ce",
          "body": null,
          "is_bot": false,
          "headline": "Add a sh script to generate rc and update the composer.json file (#1091)",
          "author_name": "Honemo",
          "author_login": "Honemo",
          "committed_at": "2026-06-19T01:22:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc08a67e1f476bf23a6d6d67d632915f9681b7da",
          "body": "Release 2.2.9-rc1",
          "is_bot": false,
          "headline": "Release 2.2.9-rc1",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-18T07:36:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd336fcd7f22bc4c83e2202302cec82145439931",
          "body": null,
          "is_bot": false,
          "headline": "update to 2.2.9",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-18T07:18:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d84d0bf5d032a4ced8f97ef934659a12fc78ca86",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'trunk' into develop",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-18T07:12:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "415712fd76904ca20718d894e6620e35850ee75d",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #922: Add bulk-restore WP-CLI command (#1087)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-17T14:18:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2e57c5f5d5332be51cd9ec0ac894f916d19d852c",
          "body": "…(#1085)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(tools): add one-click Reset Internal State troubleshooting tool …",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-17T14:18:48Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "529649338f74c2ca8f2aa24dee75458b1aa348c4",
          "body": "… v4.x (#1084)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(ngg): restore Imagify controls compatibility with NextGEN Gallery…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-17T14:18:37Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "2576930b0cce8da7f46bfb0f517c3cfccedf3823",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ai): apply wp-rocket pipeline improvements (#1089)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-16T13:32:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9b42eaa7a3749d24d77156ef818bd196e469e3cb",
          "body": "…(#1088)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(pipeline): migrate to skills/ structure + add standalone skills …",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-16T01:05:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "3b6205a6374d42e5873efeadd917b96214ea1ab6",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(css): restore button icon alignment broken by WP 7.0 (#1083)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-15T14:18:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9c7efdafa97e7ea3cb696fc6113babdc1d75ec51",
          "body": null,
          "is_bot": false,
          "headline": "fix(lead-reviewer): add re-invocation guard at top of agent flow",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-15T14:06:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa74b384a44a608ba829d2aa78e69afd3b152b05",
          "body": "Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: make generate-missing-webp button responsive (#1045) (#1080)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-15T08:24:57Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9f4e63daee07b8d335aa8ae47a1cf7d59b432ce5",
          "body": "…ables (#1078)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "Closes #883: prevent duplicate htaccess notice and fix undefined vari…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-15T08:24:43Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f68a19ae5efa346fe31a30efd01cb6afdcc55190",
          "body": "…fixes\n\nP0: Add FAIL to IMPL_SCHEMA dod_layer1.overall enum (C1 crash prevention);\n    rewrite lead-reviewer to Maestro parity — re-invocation dedup, diff-only\n    inline guard, committable suggestions, comment grouping, severity tags,\n    confidence filter, security/perf checklists, change_summary \n[…]\n4).\n\nP3: Fix pipe-literal type enum in ticket-writer (C16); fix issue-workflow log\n    pointer (E3); fix quality-gates heading and description.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(pipeline): comprehensive audit — contract, verbosity, and parity …",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-15T02:01:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "3515638763a3bf16cee3aabf2d9f1fd3868aef57",
          "body": "… prompts\n\nAgents doing complex work were completing their turn verbally without\ncalling StructuredOutput, causing the harness to fail after 2 nudges.\nAdd an explicit instruction to dod, review, and qa prompts.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(quality-gates): require StructuredOutput call at end of all agent…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-12T00:12:41Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7457d9e5a2175c62dc029d44631148438369bf94",
          "body": "Add AGENTS.md §13.2 session learnings documenting two E2E rules:\n- Always scroll element into view before screenshotting (use screenshotElement())\n- Never use test.skip() as a fallback for missing seed data; use hard assertions\n\nAdd Tests/e2e/fixtures/screenshot.ts with the screenshotElement() helper so\nevery spec can import it rather than copy-pasting the scroll-before-capture pattern.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(agents): add E2E screenshot session learnings + shared fixture",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-11T05:54:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "606df9c168b455c53c35827e7f7b757f27989c5f",
          "body": "The qaPrompt never resolved {E2E_URL}, {E2E_BOOT}, etc. — those\nplaceholders are documented as \"injected by the orchestrator\" but were\nnever included in the workflow-built prompt. The agent saw literal\n{E2E_URL}, treated the environment as unreachable, and silently fell\nback to Strategy C instead of\n[…]\nand include them as an\nEnvironment config block in the qa prompt so the agent can boot the\nlocal env and delegate to e2e-qa-tester correctly.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(quality-gates): inject env config into qa-engineer prompt",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-11T03:24:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6341336f70334d26eea3205f23270ed533ba3310",
          "body": "Subagent prompts were telling agents to return JSON as plain text output,\nwhich prevented them from calling StructuredOutput — causing the\n\"subagent completed without calling StructuredOutput\" error after 2 nudges.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(workflows): remove conflicting plain-text JSON return instructions",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-11T03:19:33Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "bf1e5c2c1e81302d4c54783d6f3e9ce8c4ed728e",
          "body": "…bulk_get_stats_callback\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: pass FILTER_REQUIRE_ARRAY as flags arg to filter_input in Bulk::…",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-10T14:20:18Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1d8515e5fcd043249bc25bbe0620d95d60bd5bfd",
          "body": "The transplant pipeline only copied orchestrator.md but not the three\nsupport files it references. Without them the orchestrator cannot run\nthe Workflow tool for implementation or quality-gate steps, and the\nquality check shows \"?\" in the pipeline progress.\n\n- html-log-format.md — HTML log event ref\n[…]\ntType references adapted: maestro: namespace prefix stripped so the\nlocal Imagify agents are used instead of the generic Maestro plugin ones.\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "chore(ai): add missing orchestrator workflow scripts from transplant",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-10T13:34:24Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a9319bf9cdd9fbf95a109c8b258a9685d06bdc4c",
          "body": null,
          "is_bot": false,
          "headline": "chore(ai): Improve AI assistance infrastructure (#1076)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-06-10T10:39:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8dc88b107f4561be277f053e87590fb732619213",
          "body": "Co-authored-by: John Gathure <juangathure@gmail.com>\nCo-authored-by: Arielle Lucca <a.lucca@hotmail.com.br>",
          "is_bot": false,
          "headline": "Release Readme May 2026 (#1072)",
          "author_name": "Nico Mollet",
          "author_login": "nicomollet",
          "committed_at": "2026-06-01T07:18:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c90b5a1f3dc67e72de595cb55819f28a1a12217f",
          "body": "Co-authored-by: Arielle Lucca <a.lucca@hotmail.com.br>",
          "is_bot": false,
          "headline": "correctly update readme. (#1071)",
          "author_name": "John Gathure",
          "author_login": "johngathure",
          "committed_at": "2026-06-01T07:16:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a1ab6471c50e2fc7a25a3f60ca077a6ae897dde",
          "body": null,
          "is_bot": false,
          "headline": "restore original readme.",
          "author_name": "John Gathure",
          "author_login": "johngathure",
          "committed_at": "2026-05-28T09:28:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a01f79500118995bf3fc985a33914242a82c73f",
          "body": null,
          "is_bot": false,
          "headline": "update readme.",
          "author_name": "John Gathure",
          "author_login": "johngathure",
          "committed_at": "2026-05-28T09:12:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d6966fae5bc3d150e7153724fa0a508addecc09",
          "body": "Bugfix: Fix jQuery deprecation notices (988)\nBugfix: Fix PHP deprecation notices (961)\nBugfix: Fix the  _load_textdomain_just_in_time PHP notice (975)\nEnhancement: Make sure to remove the transients when uninstalling Imagify (942)\nEnhancement: Fix UI glitches (1009, 1033)",
          "is_bot": false,
          "headline": "2.2.8",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-25T15:51:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56521db37974d087bba064ab811fee6840c28136",
          "body": null,
          "is_bot": false,
          "headline": "update stable tag and changelog",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-25T15:46:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d55e4c6b7509018033ac83b13307cf915821da4",
          "body": null,
          "is_bot": false,
          "headline": "update version to 2.2.8",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-25T15:45:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efb23ffb5cfe0e868337c674f89453c3f0cfb061",
          "body": null,
          "is_bot": false,
          "headline": "prevent prod export of ai configurations",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-21T18:41:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d23c0a9a376a137f50e6b15af94a96ad30a6b385",
          "body": null,
          "is_bot": false,
          "headline": "chore(ai): add AI assistant infrastructure (#1050)",
          "author_name": "Gaël Robin",
          "author_login": "Miraeld",
          "committed_at": "2026-05-21T09:22:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad2c59cace34c34d1463d311f8cef374242c5d68",
          "body": null,
          "is_bot": false,
          "headline": "fix deprecated jquery notice on api key notice",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-20T12:45:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc72df57e729aa0ebf862f4e6963835776c373d7",
          "body": null,
          "is_bot": false,
          "headline": "update version to 2.2.8-rc2",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-19T18:06:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df1362b019818f673ba2c469ad0d2d65ef6ae56f",
          "body": null,
          "is_bot": false,
          "headline": "fix formatting",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-19T18:05:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cce10912cab1aaa9490c5cc0d3a23642f469e990",
          "body": null,
          "is_bot": false,
          "headline": "use latest version of wp background processing",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-19T18:04:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0fc63799bc2352629a1a35a0ab8b771879c097a4",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'trunk' into develop",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-19T17:54:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73c1dbc4124bb647ccda0d7896f761d8fa694676",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump lodash, grunt-legacy-log and grunt-legacy-util (#1049)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T21:00:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "414a1fa3e40480d704b3b30c5e5fda019cda680f",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump minimatch from 3.1.2 to 3.1.5 (#1048)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T21:00:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c59ce469e7d7562d3199924a72767d985530c826",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "bump picomatch from 2.3.1 to 2.3.2 (#1036)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T21:00:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a3b7005a42f7f3e553d6139ff58be23d21a4f92",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump flatted from 3.2.7 to 3.4.2 (#1034)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T21:00:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d7c4971ec8a6d114b3fe7490a7e26982d1a3ea7",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump js-yaml (#1030)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T20:59:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "806bf1b66d27a1ff4eb30157976909cf868fcd2d",
          "body": "Signed-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump braces from 3.0.2 to 3.0.3 (#1031)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-05-15T20:59:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "62f31269528c16c3468aadfb1465e45d727e7566",
          "body": null,
          "is_bot": false,
          "headline": "Modify order of composer post install/update commands (#1047)",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-15T14:53:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79d274b57289ad3e1d59c8cb24e6042dedb94d65",
          "body": null,
          "is_bot": false,
          "headline": "update version to 2.2.8-rc1",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-14T13:26:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f60b4c005b1352d602cc557cea73322b6baffba8",
          "body": null,
          "is_bot": false,
          "headline": "fix(ui): responsive \"Our Plugins\" flexbox layout (#1022)",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:03:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3565ce96493995e3288cecf134574d912c47062c",
          "body": null,
          "is_bot": false,
          "headline": "Fix: Update WP Rocket promotional link and UTMs (#1023)",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:03:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "999a703202415d5add2861301a0ff5af40860e35",
          "body": null,
          "is_bot": false,
          "headline": "Fix JS jQuery Migrate Warnings (#1024)",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:02:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "489c4a5599fcd381fefd6401d91a94c8281768a9",
          "body": "…(#1026)",
          "is_bot": false,
          "headline": "fix(admin-bar): prevent strpos() null deprecation on invalid API key …",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d25236720bc2115b73e456eea58da03c6a64140",
          "body": "… (#1027)",
          "is_bot": false,
          "headline": "fix(cleanup): delete Imagify transients on deactivation and uninstall…",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:01:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "210c6873405ac33e13c612520d62609b8d99a939",
          "body": null,
          "is_bot": false,
          "headline": "Fixes #975 Remove function to load translations (#1042)",
          "author_name": "Rémy Perona",
          "author_login": "remyperona",
          "committed_at": "2026-05-13T19:01:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cff2dbb45ce5f6277bc7f862613debeb85336ca1",
          "body": null,
          "is_bot": false,
          "headline": "fix: render line breaks in admin bar upgrade message (#1043)",
          "author_name": "Faisal Ahammad",
          "author_login": "faisalahammad",
          "committed_at": "2026-05-13T19:01:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 74,
      "commits_last_year": 132,
      "latest_release_at": "2026-06-22T08:06:46Z",
      "latest_release_tag": "v2.2.9",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 25,
      "days_since_latest_release": 34,
      "mean_days_between_releases": 87.7
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "wp-media/imagify-plugin",
          "exists": true,
          "license": "GPL-2.0",
          "keywords": [
            "performance",
            "wordpress",
            "images",
            "optimization"
          ],
          "ecosystem": "packagist",
          "matches_repo": true,
          "registry_url": "https://packagist.org/packages/wp-media/imagify-plugin",
          "is_deprecated": false,
          "latest_version": "v2.3.0",
          "repository_url": "https://github.com/wp-media/imagify-plugin",
          "versions_count": 66,
          "total_downloads": 68958,
          "dependents_count": 0,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 1632,
          "first_published_at": null,
          "latest_published_at": "2026-07-08T07:14:51Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 18
        }
      ]
    },
    "popularity": {
      "forks": 31,
      "stars": 80,
      "watchers": 18,
      "fork_history": {
        "days": [
          {
            "date": "2017-04-07",
            "count": 1
          },
          {
            "date": "2017-05-26",
            "count": 1
          },
          {
            "date": "2017-08-08",
            "count": 1
          },
          {
            "date": "2017-09-29",
            "count": 1
          },
          {
            "date": "2018-02-24",
            "count": 1
          },
          {
            "date": "2019-04-26",
            "count": 1
          },
          {
            "date": "2019-08-27",
            "count": 1
          },
          {
            "date": "2019-10-24",
            "count": 1
          },
          {
            "date": "2019-12-10",
            "count": 1
          },
          {
            "date": "2019-12-29",
            "count": 2
          },
          {
            "date": "2020-04-11",
            "count": 1
          },
          {
            "date": "2020-04-20",
            "count": 1
          },
          {
            "date": "2021-04-05",
            "count": 1
          },
          {
            "date": "2021-04-24",
            "count": 1
          },
          {
            "date": "2021-12-21",
            "count": 1
          },
          {
            "date": "2022-08-26",
            "count": 1
          },
          {
            "date": "2023-02-06",
            "count": 1
          },
          {
            "date": "2023-06-21",
            "count": 1
          },
          {
            "date": "2024-02-15",
            "count": 1
          },
          {
            "date": "2024-02-19",
            "count": 1
          },
          {
            "date": "2024-04-16",
            "count": 1
          },
          {
            "date": "2024-04-19",
            "count": 1
          },
          {
            "date": "2024-05-06",
            "count": 1
          },
          {
            "date": "2024-08-08",
            "count": 1
          },
          {
            "date": "2024-10-06",
            "count": 1
          },
          {
            "date": "2025-10-31",
            "count": 1
          },
          {
            "date": "2025-11-21",
            "count": 1
          },
          {
            "date": "2026-02-26",
            "count": 1
          },
          {
            "date": "2026-03-26",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 31,
        "total_forks": 31
      },
      "star_history": null,
      "open_issues_and_prs": 168
    },
    "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": [
        "Tests/e2e/tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 205546,
      "source_files_sampled": 570,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 11674
    },
    "dependencies": {
      "manifests": [
        "_dev/package.json",
        "composer.json",
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "repository_graph",
        "source": "osv",
        "findings": [
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3jxr-9vmj-r5cp",
              "GHSA-f886-m6hf-6m8v",
              "GHSA-mh99-v99m-4gvg",
              "GHSA-v6h2-p8h4-qcjw"
            ],
            "fixed_version": "5.0.8",
            "advisory_count": 4,
            "oldest_advisory_days": 412
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-3xgq-45jj-v275"
            ],
            "fixed_version": "7.0.5",
            "advisory_count": 1,
            "oldest_advisory_days": 625
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.2",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 41
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-52cp-r559-cp3m",
              "GHSA-h67p-54hq-rp68"
            ],
            "fixed_version": "4.3.0",
            "advisory_count": 2,
            "oldest_advisory_days": 41
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.0.8",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-23c5-xmqv-rm74",
              "GHSA-3ppc-4f35-3m26",
              "GHSA-7r86-cg39-jmmj"
            ],
            "fixed_version": "10.2.3",
            "advisory_count": 3,
            "oldest_advisory_days": 158
          },
          {
            "name": "phpunit/phpunit",
            "direct": false,
            "version": "7.5.20",
            "severity": "high",
            "ecosystem": "packagist",
            "cvss_score": 7.8,
            "advisory_ids": [
              "GHSA-vvj3-c3rp-c85p"
            ],
            "fixed_version": "12.5.8",
            "advisory_count": 1,
            "oldest_advisory_days": 180
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "6.0.23",
            "severity": "high",
            "ecosystem": "npm",
            "cvss_score": 7.5,
            "advisory_ids": [
              "GHSA-566m-qj78-rww5",
              "GHSA-6g55-p6wh-862q",
              "GHSA-7fh5-64p2-3v2j",
              "GHSA-qx2v-qp2m-jg93",
              "GHSA-r28c-9q8g-f849"
            ],
            "fixed_version": "8.5.18",
            "advisory_count": 5,
            "oldest_advisory_days": 1662
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-2g4f-4pwh-qvx6"
            ],
            "fixed_version": "8.18.0",
            "advisory_count": 1,
            "oldest_advisory_days": 165
          },
          {
            "name": "diff",
            "direct": false,
            "version": "3.5.0",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-73rr-hh4g-fpgx"
            ],
            "fixed_version": "8.0.3",
            "advisory_count": 1,
            "oldest_advisory_days": 193
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-952p-6rrq-rcjv"
            ],
            "fixed_version": "4.0.8",
            "advisory_count": 1,
            "oldest_advisory_days": 803
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.3",
            "severity": "moderate",
            "ecosystem": "npm",
            "cvss_score": 5.3,
            "advisory_ids": [
              "GHSA-j8xg-fqg3-53r7"
            ],
            "fixed_version": "1.2.4",
            "advisory_count": 1,
            "oldest_advisory_days": 1130
          }
        ],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {
          "high": 7,
          "moderate": 4
        },
        "advisory_count": 22,
        "affected_count": 11,
        "assessed_count": 258,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 2,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm",
        "packagist"
      ],
      "dependencies": [
        {
          "name": "cweagans/composer-patches",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.7"
        },
        {
          "name": "deliciousbrains/wp-background-processing",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "dev-master"
        },
        {
          "name": "league/container",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^4.2"
        },
        {
          "name": "woocommerce/action-scheduler",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^3.4"
        },
        {
          "name": "wordpress/mcp-adapter",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^0.5.0"
        },
        {
          "name": "wp-media/apply-filters-typed",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.0"
        },
        {
          "name": "wp-media/mcp-oauth",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.0.2"
        },
        {
          "name": "wp-media/plugin-family",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.0"
        },
        {
          "name": "wp-media/wp-mixpanel",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "@eslint/eslintrc",
            "direct": false,
            "version": "1.3.3",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/config-array",
            "direct": false,
            "version": "0.11.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/object-schema",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.scandir",
            "direct": false,
            "version": "2.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.stat",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@nodelib/fs.walk",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "@playwright/test",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "@roots/bud",
            "direct": false,
            "version": "^6.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "22.19.19",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.8.1",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": false,
            "version": "6.12.6",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "3.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "1.0.10",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-each",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "array-slice",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "async",
            "direct": false,
            "version": "3.2.4",
            "ecosystem": "npm"
          },
          {
            "name": "autoprefixer",
            "direct": false,
            "version": "7.2.6",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "1.1.11",
            "ecosystem": "npm"
          },
          {
            "name": "braces",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "browserslist",
            "direct": false,
            "version": "2.11.3",
            "ecosystem": "npm"
          },
          {
            "name": "callsites",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "caniuse-lite",
            "direct": false,
            "version": "1.0.30001431",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "2.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "chalk",
            "direct": false,
            "version": "4.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "chart.js",
            "direct": false,
            "version": "^4.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "clean-css",
            "direct": false,
            "version": "5.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "1.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "colors",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "concat-map",
            "direct": false,
            "version": "0.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "dateformat",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "detect-file",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "diff",
            "direct": false,
            "version": "3.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "doctrine",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "duplexer",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "electron-to-chromium",
            "direct": false,
            "version": "1.4.284",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "8.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-utils",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "9.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "esprima",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "esrecurse",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "estraverse",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "esutils",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "eventemitter2",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "npm"
          },
          {
            "name": "exit",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "exit-x",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "expand-tilde",
            "direct": false,
            "version": "2.0.2",
            "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-json-stable-stringify",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "fast-levenshtein",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "fastq",
            "direct": false,
            "version": "1.13.0",
            "ecosystem": "npm"
          },
          {
            "name": "figures",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "fill-range",
            "direct": false,
            "version": "7.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "findup-sync",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fined",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "flagged-respawn",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-in",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "for-own",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fs.realpath",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "fsevents",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "function-bind",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "getobject",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "5.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "7.1.7",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "global-modules",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "global-prefix",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "13.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "grapheme-splitter",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "grunt",
            "direct": false,
            "version": "1.5.3",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-cli",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-contrib-cssmin",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-contrib-uglify",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-eslint",
            "direct": false,
            "version": "24.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-known-options",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-legacy-log",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-legacy-log-utils",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-legacy-util",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "grunt-postcss",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "gzip-size",
            "direct": false,
            "version": "5.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "has",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "homedir-polyfill",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "hooker",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "iconv-lite",
            "direct": false,
            "version": "0.4.24",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "import-fresh",
            "direct": false,
            "version": "3.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "inflight",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "inherits",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "1.3.8",
            "ecosystem": "npm"
          },
          {
            "name": "interpret",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-absolute",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-core-module",
            "direct": false,
            "version": "2.11.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-number",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-path-inside",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-plain-object",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "is-relative",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-unc-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-windows",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isobject",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "js-sdsl",
            "direct": false,
            "version": "4.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "3.14.2",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "kind-of",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "liftup",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lodash",
            "direct": false,
            "version": "4.18.1",
            "ecosystem": "npm"
          },
          {
            "name": "lodash.merge",
            "direct": false,
            "version": "4.6.2",
            "ecosystem": "npm"
          },
          {
            "name": "make-iterator",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "map-cache",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "maxmin",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromatch",
            "direct": false,
            "version": "4.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "3.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "mkdirp",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "3.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "normalize-range",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "num2fraction",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "object.defaults",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "object.map",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "object.pick",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "once",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "os-homedir",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "os-tmpdir",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "osenv",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "npm"
          },
          {
            "name": "p-limit",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "p-locate",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "parent-module",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "parse-filepath",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "parse-passwd",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-is-absolute",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-parse",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "path-root",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-root-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "pify",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "playwright",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "playwright-core",
            "direct": false,
            "version": "1.60.0",
            "ecosystem": "npm"
          },
          {
            "name": "postcss",
            "direct": false,
            "version": "6.0.23",
            "ecosystem": "npm"
          },
          {
            "name": "postcss-value-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "pretty-bytes",
            "direct": false,
            "version": "5.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "queue-microtask",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "rechoir",
            "direct": false,
            "version": "0.7.1",
            "ecosystem": "npm"
          },
          {
            "name": "regexpp",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "resolve",
            "direct": false,
            "version": "1.22.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-dir",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "resolve-from",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "reusify",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "rimraf",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-parallel",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "safer-buffer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-command",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "shebang-regex",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "source-map",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "sprintf-js",
            "direct": false,
            "version": "1.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "5.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "supports-preserve-symlinks-flag",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "text-table",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "to-regex-range",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "type-fest",
            "direct": false,
            "version": "0.20.2",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "uglify-js",
            "direct": false,
            "version": "3.17.4",
            "ecosystem": "npm"
          },
          {
            "name": "unc-path-regex",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "underscore.string",
            "direct": false,
            "version": "3.3.6",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "uri-path",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "util-deprecate",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "v8flags",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "wrappy",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "a5hleyrich/wp-background-processing",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "antecedent/patchwork",
            "direct": false,
            "version": "2.1.12",
            "ecosystem": "packagist"
          },
          {
            "name": "brain/monkey",
            "direct": false,
            "version": "2.4.0",
            "ecosystem": "packagist"
          },
          {
            "name": "composer/installers",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "packagist"
          },
          {
            "name": "dangoodman/composer-for-wordpress",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "dealerdirect/phpcodesniffer-composer-installer",
            "direct": false,
            "version": "0.4.4",
            "ecosystem": "packagist"
          },
          {
            "name": "doctrine/instantiator",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "packagist"
          },
          {
            "name": "hamcrest/hamcrest-php",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "mockery/mockery",
            "direct": false,
            "version": "1.3.1",
            "ecosystem": "packagist"
          },
          {
            "name": "myclabs/deep-copy",
            "direct": false,
            "version": "1.9.4",
            "ecosystem": "packagist"
          },
          {
            "name": "phar-io/manifest",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "packagist"
          },
          {
            "name": "phar-io/version",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpcompatibility/php-compatibility",
            "direct": false,
            "version": "9.2.0",
            "ecosystem": "packagist"
          },
          {
            "name": "phpcompatibility/phpcompatibility-paragonie",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpcompatibility/phpcompatibility-wp",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "phpdocumentor/reflection-common",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "phpdocumentor/reflection-docblock",
            "direct": false,
            "version": "4.3.4",
            "ecosystem": "packagist"
          },
          {
            "name": "phpdocumentor/type-resolver",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpspec/prophecy",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/php-code-coverage",
            "direct": false,
            "version": "6.1.4",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/php-file-iterator",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/php-text-template",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/php-timer",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/php-token-stream",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/phpunit",
            "direct": false,
            "version": "7.5.20",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/code-unit-reverse-lookup",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/comparator",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/diff",
            "direct": false,
            "version": "3.0.2",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/environment",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/exporter",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/global-state",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/object-enumerator",
            "direct": false,
            "version": "3.0.3",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/object-reflector",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/recursion-context",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/resource-operations",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "sebastian/version",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "packagist"
          },
          {
            "name": "squizlabs/php_codesniffer",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "packagist"
          },
          {
            "name": "symfony/polyfill-ctype",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "packagist"
          },
          {
            "name": "theseer/tokenizer",
            "direct": false,
            "version": "1.1.3",
            "ecosystem": "packagist"
          },
          {
            "name": "webmozart/assert",
            "direct": false,
            "version": "1.6.0",
            "ecosystem": "packagist"
          },
          {
            "name": "wp-coding-standards/wpcs",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "packagist"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 260,
        "direct_count": 0,
        "indirect_count": 260
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 22,
        "merged_prs": 564,
        "open_issues": 146,
        "closed_ratio": 0.745,
        "closed_issues": 427,
        "closed_unmerged_prs": 40
      },
      "bus_factor": 2,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "Screenfeed",
          "commits": 1248,
          "avatar_url": "https://avatars.githubusercontent.com/u/1878479?v=4"
        },
        {
          "type": "User",
          "login": "GeekPress",
          "commits": 533,
          "avatar_url": "https://avatars.githubusercontent.com/u/1285409?v=4"
        },
        {
          "type": "User",
          "login": "remyperona",
          "commits": 314,
          "avatar_url": "https://avatars.githubusercontent.com/u/3465180?v=4"
        },
        {
          "type": "User",
          "login": "geoffreycrofte",
          "commits": 294,
          "avatar_url": "https://avatars.githubusercontent.com/u/452767?v=4"
        },
        {
          "type": "User",
          "login": "Miraeld",
          "commits": 64,
          "avatar_url": "https://avatars.githubusercontent.com/u/14993267?v=4"
        },
        {
          "type": "User",
          "login": "iCaspar",
          "commits": 52,
          "avatar_url": "https://avatars.githubusercontent.com/u/7462998?v=4"
        },
        {
          "type": "User",
          "login": "JulioPotier",
          "commits": 42,
          "avatar_url": "https://avatars.githubusercontent.com/u/1262936?v=4"
        },
        {
          "type": "User",
          "login": "mostafa-hisham",
          "commits": 27,
          "avatar_url": "https://avatars.githubusercontent.com/u/29744252?v=4"
        },
        {
          "type": "User",
          "login": "wordpressfan",
          "commits": 23,
          "avatar_url": "https://avatars.githubusercontent.com/u/146129302?v=4"
        },
        {
          "type": "User",
          "login": "MathieuLamiot",
          "commits": 19,
          "avatar_url": "https://avatars.githubusercontent.com/u/15233030?v=4"
        }
      ],
      "contributors_sampled": 31,
      "top_contributor_share": 0.457
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "assets-update.yml",
        "code_coverage.yml",
        "deploy-tag.yml",
        "e2e.yml",
        "lint_phpcs.yml",
        "lint_phpstan.yml",
        "pr-template-checker.yml",
        "publish_mcp_abilities.yml",
        "test.yml",
        "test_legacy.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        ".eslintrc.json",
        "phpcs.xml"
      ],
      "has_editorconfig": true,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": null,
            "reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "22 out of 22 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": 6,
            "reason": "Found 17/25 approved changesets -- score normalized to 6",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 10 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "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": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "ea2ba0ff26200958baae8caba4122acab506b597",
        "ran_at": "2026-07-27T03:02:13Z",
        "aggregate_score": 6.3,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-26T22:56:32Z",
      "oldest_open_prs": [
        {
          "number": 426,
          "created_at": "2019-08-27T07:34:50Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 499,
          "created_at": "2020-05-15T21:54:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 656,
          "created_at": "2022-02-07T15:29:18Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 706,
          "created_at": "2022-12-16T17:12:09Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 712,
          "created_at": "2023-02-06T10:43:51Z",
          "last_comment_at": "2023-03-07T08:15:52Z",
          "last_comment_author": "thomasblanchard-dev"
        },
        {
          "number": 725,
          "created_at": "2023-05-02T12:31:00Z",
          "last_comment_at": "2023-06-02T08:58:10Z",
          "last_comment_author": "piotrbak"
        },
        {
          "number": 738,
          "created_at": "2023-08-01T17:29:08Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1025,
          "created_at": "2026-02-27T06:45:21Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1028,
          "created_at": "2026-02-28T00:23:11Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 1074,
          "created_at": "2026-06-06T17:15:09Z",
          "last_comment_at": "2026-06-08T19:28:17Z",
          "last_comment_author": "alexbogias"
        },
        {
          "number": 1075,
          "created_at": "2026-06-08T18:09:27Z",
          "last_comment_at": "2026-06-08T18:33:53Z",
          "last_comment_author": "faisalahammad"
        },
        {
          "number": 1077,
          "created_at": "2026-06-10T07:50:01Z",
          "last_comment_at": "2026-06-10T07:50:39Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1160,
          "created_at": "2026-06-28T22:59:07Z",
          "last_comment_at": "2026-06-28T22:59:54Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1181,
          "created_at": "2026-07-13T10:03:28Z",
          "last_comment_at": "2026-07-13T10:16:26Z",
          "last_comment_author": "Honemo"
        },
        {
          "number": 1188,
          "created_at": "2026-07-20T02:08:02Z",
          "last_comment_at": "2026-07-20T02:08:49Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1195,
          "created_at": "2026-07-22T03:28:09Z",
          "last_comment_at": "2026-07-22T03:28:54Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1196,
          "created_at": "2026-07-23T09:37:35Z",
          "last_comment_at": "2026-07-23T10:23:45Z",
          "last_comment_author": "faisalahammad"
        },
        {
          "number": 1197,
          "created_at": "2026-07-23T12:50:16Z",
          "last_comment_at": "2026-07-23T12:50:56Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1199,
          "created_at": "2026-07-23T18:09:35Z",
          "last_comment_at": "2026-07-23T18:10:38Z",
          "last_comment_author": "codacy-production"
        },
        {
          "number": 1200,
          "created_at": "2026-07-26T23:18:02Z",
          "last_comment_at": "2026-07-26T23:19:44Z",
          "last_comment_author": "codacy-production"
        }
      ],
      "last_merged_pr_at": "2026-07-24T01:19:47Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 58,
          "created_at": "2017-05-01T17:41:46Z",
          "last_comment_at": "2018-02-22T11:29:18Z",
          "last_comment_author": "Screenfeed"
        },
        {
          "number": 104,
          "created_at": "2017-08-02T19:09:31Z",
          "last_comment_at": "2021-05-25T12:08:57Z",
          "last_comment_author": "Klemart3D"
        },
        {
          "number": 131,
          "created_at": "2017-09-26T14:18:24Z",
          "last_comment_at": "2017-12-05T00:23:31Z",
          "last_comment_author": "Screenfeed"
        },
        {
          "number": 137,
          "created_at": "2017-10-02T15:34:26Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 160,
          "created_at": "2017-10-23T14:58:42Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 185,
          "created_at": "2017-11-28T11:31:32Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 187,
          "created_at": "2018-01-04T11:21:35Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 190,
          "created_at": "2018-01-05T14:54:45Z",
          "last_comment_at": "2018-01-10T16:17:25Z",
          "last_comment_author": "Screenfeed"
        },
        {
          "number": 232,
          "created_at": "2018-03-07T13:10:39Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 256,
          "created_at": "2018-05-24T12:09:15Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 323,
          "created_at": "2018-12-17T15:18:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 352,
          "created_at": "2019-05-02T12:45:19Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 384,
          "created_at": "2019-06-13T15:22:22Z",
          "last_comment_at": "2019-07-09T13:11:08Z",
          "last_comment_author": "Screenfeed"
        },
        {
          "number": 401,
          "created_at": "2019-07-05T06:54:16Z",
          "last_comment_at": "2020-07-08T16:30:24Z",
          "last_comment_author": "thomasbacon"
        },
        {
          "number": 409,
          "created_at": "2019-07-09T21:27:54Z",
          "last_comment_at": "2026-04-30T07:58:58Z",
          "last_comment_author": "saranshj4"
        },
        {
          "number": 422,
          "created_at": "2019-08-09T14:00:09Z",
          "last_comment_at": "2020-05-08T00:48:39Z",
          "last_comment_author": "Screenfeed"
        },
        {
          "number": 434,
          "created_at": "2019-10-09T16:27:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 438,
          "created_at": "2019-10-24T20:20:22Z",
          "last_comment_at": "2026-07-23T08:12:13Z",
          "last_comment_author": "faisalahammad"
        },
        {
          "number": 443,
          "created_at": "2019-10-24T22:33:00Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 451,
          "created_at": "2019-10-29T16:52:40Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/wp-media/imagify-plugin",
    "host": "github.com",
    "name": "imagify-plugin",
    "owner": "wp-media"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 73,
      "inputs": {
        "security": 70,
        "vitality": 85,
        "community": 42,
        "governance": 76,
        "engineering": 86
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 85,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 81,
            "inputs": {
              "commits_last_year": 132,
              "human_commit_share": 0.94,
              "days_since_last_push": 0,
              "active_weeks_last_year": 25
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "25/52 weeks with commits",
                "points": 17.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 25
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "132 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 132
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 92,
            "inputs": {
              "releases_count": 74,
              "latest_release_tag": "v2.2.9",
              "releases_from_tags": false,
              "days_since_latest_release": 34,
              "mean_days_between_releases": 87.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "74 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 74
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 34 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 34
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~87.7 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 87.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 0,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 0 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "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": 42,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "forks": 31,
              "stars": 80,
              "watchers": 18,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "80 stars",
                "points": 30.8,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 80
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "31 forks",
                "points": 12.3,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "18 watchers",
                "points": 6.8,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 18
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "at_risk",
            "name": "Ecosystem adoption (downloads)",
            "note": null,
            "notes": [],
            "value": 43,
            "inputs": {
              "packages": [
                "wp-media/imagify-plugin"
              ],
              "dependents": 0,
              "ecosystems": "packagist",
              "total_downloads": 68958,
              "monthly_downloads": 1632
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "1,632 downloads/month across packagist",
                "points": 42.8,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 1632,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "0 packages depend on it",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "registry_dependents",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 76,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "moderate",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "bus_factor": 2,
              "contributors_sampled": 31,
              "top_contributor_share": 0.457
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "2 contributor(s) cover half of all commits",
                "points": 25.2,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 46% of commits",
                "points": 12.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 46
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "31 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 31
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "merged_prs": 564,
              "open_issues": 146,
              "closed_issues": 427,
              "issue_closed_ratio": 0.745,
              "closed_unmerged_prs": 40
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "74% of issues closed",
                "points": 34.8,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 74
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "564/604 decided PRs merged",
                "points": 35.7,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 564,
                      "decided": 604
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 17/25 approved changesets -- score normalized to 6",
                "points": 9,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 69,
            "inputs": {
              "followers": 91,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "wp-media",
              "public_repos": 74,
              "account_age_days": 4076
            },
            "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": "91 followers of wp-media",
                "points": 14.1,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 91,
                      "login": "wp-media"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "74 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 74
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "wp-media/imagify-plugin"
              ],
              "ecosystems": "packagist",
              "any_deprecated": false,
              "min_days_since_publish": 18
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on packagist",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 18 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 18
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "66 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 66
                    }
                  }
                ],
                "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": 86,
        "weight": 0.2,
        "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": "10 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "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": ".eslintrc.json, phpcs.xml",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, phpcs.xml"
                    }
                  }
                ],
                "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": "22 out of 22 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "good",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://imagify.io",
              "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://imagify.io",
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "good",
        "name": "Security",
        "value": 70,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Branch-Protection, Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "branch_protection",
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 63,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 12,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 6,
              "scorecard_aggregate": 6.3
            },
            "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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "22 out of 22 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 17/25 approved changesets -- score normalized to 6",
                "points": 4.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 10 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 258 resolved dependencies against OSV; 2 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "indirect_dependencies_free_of_known_advisories",
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_repository",
                "params": {
                  "assessed": 258
                }
              },
              {
                "code": "advisories_unassessed",
                "params": {
                  "count": 2
                }
              },
              {
                "code": "advisories_repo_graph_caveat",
                "params": {}
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 22,
              "affected_packages": 11,
              "assessed_packages": 258,
              "unassessed_packages": 2,
              "affected_by_severity": "high 7, moderate 4",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "transitive set not separable from development and test dependencies in this scope",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_scope_not_separable",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 258,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 82,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "good",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.723,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 11674
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.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": "68 of 94 human commits state their intent (structured subject or explanatory body)",
                "points": 38.6,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 68,
                      "sampled": 94
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "Tests/e2e/tsconfig.json"
              ],
              "agent_commit_share": 0.37,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.06
            },
            "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": ".eslintrc.json, phpcs.xml",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".eslintrc.json, phpcs.xml"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "Tests/e2e/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Tests/e2e/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": "37 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 37,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "6 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 6,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "PHP",
              "largest_source_bytes": 205546,
              "source_files_sampled": 570,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "PHP with type-check config (Tests/e2e/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "Tests/e2e/tsconfig.json",
                      "language": "PHP"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/570 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 570,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'imagify_dev' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T03:02:41.869263Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/w/wp-media/imagify-plugin.svg",
  "full_name": "wp-media/imagify-plugin",
  "license_state": "absent",
  "license_spdx": null
}

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 v1.13.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 agregadasPackagist.