Registro público
Informe de salud del softwareesquema 0.23.0 · métricas 1.13.0 · 2026-07-21 15:58 UTC

affaan-m / ECC

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

JavaScript · RustMIT★ 231.806 estrellas⑂ 35.370 forksdesde ene 2026Ver en GitHub ↗

affaan-m/ECC tiene un índice de salud de 79 sobre 100, lo que lo sitúa en la banda Bueno. Su puntuación más alta es Community & Adoption (90/100) y la más baja, Sustainability & Governance (67/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

79
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.

79
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

Affaan MustafaCuenta personal
8561 seguidores27 repositorios públicosdesde feb 2023Itô

Este repositorio pertenece a una cuenta personal. Un proyecto con un único propietario conlleva más riesgo de continuidad que uno respaldado por una organización.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npmecc-universal2.0.015.7168hace 41 díasaiagentsskillshooksmcprulesharnessagent-harnesstddcode-reviewsecurityautomationbest-practicescursorcursor-ideopencodecodexpresentationsslides
PyPIllm-abstractionapunta a otro repositorio; no se puntúa0.3.0-3hace 33 días

Métricas por categoría

Vitalidad

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

86Excelente · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
18.7/36Cadencia de commits — 27/52 semanas con commits
18/18Volumen de commits — 2270 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year2270
human_commit_share0,85
days_since_last_push0
active_weeks_last_year27
Cómo se puntúa
27/27Publica versiones — 14 versiones publicadas
36/36Recencia de las versiones — última versión hace 41 días
27/27Cadencia de publicación — una versión cada ~13,8 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count14
latest_release_tagv2.0.0
releases_from_tagsno
days_since_latest_release41
mean_days_between_releases13,8

Comunidad y Adopción

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

90Excelente · 18% del índice global
Cómo se puntúa
60/60Estrellas — 231.806 estrellas
25/25Forks — 35.370 forks
15/15Observadores — 1207 observadores
Datos de entrada utilizados
forks35.370
stars231.806
watchers1207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template
Cómo se puntúa
56/80Descargas mensuales — 15.716 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesecc-universal
dependents
ecosystemsnpm
total_downloads
monthly_downloads15.716
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

67Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
5.5/22.5Distribución de commits — el principal contribuyente firma el 76% de los commits
13.5/13.5Amplitud de contribuyentes — 96 contribuyentes
10/10OpenSSF Scorecard: Contributors — project has 22 contributing companies or organizations
Datos de entrada utilizados
bus_factor1
contributors_sampled96
top_contributor_share0,757
Cómo se puntúa
44.5/46.8Resolución de issues — 95% de issues cerradas
20.2/38.3Aceptación de PR — 888/1685 PR decididos fusionados
12/15OpenSSF Scorecard: Code-Review — Found 22/27 approved changesets -- score normalized to 8
Datos de entrada utilizados
merged_prs888
open_issues32
closed_issues629
issue_closed_ratio0,952
closed_unmerged_prs797
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
25/25Alcance del propietario — 8561 seguidores de affaan-m
17.5/25Trayectoria — 27 repos públicos, cuenta de ~3 años
Datos de entrada utilizados
followers8561
owner_typeUser
is_verified
owner_loginaffaan-m
public_repos27
account_age_days1263
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 41 días
20/20Historial de versiones — 8 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesecc-universal
ecosystemsnpm
any_deprecatedno
min_days_since_publish41

Calidad de Ingeniería

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

84Bueno · 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 — eslint.config.js
0/9.6Hooks de pre-commit
0/6.4.editorconfig
10/20OpenSSF Scorecard: CI-Tests — 17 out of 30 merged PRs checked by a CI test -- score normalized to 5
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://ecc.tools
10/10Descripción del repositorio
10/10Topics — 8 topics
10/10Wiki
Datos de entrada utilizados
topicsai-agents, anthropic, claude, claude-code, developer-tools, llm, mcp, productivity
has_wiki
homepagehttps://ecc.tools
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?

68Moderado · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1.2/2.5CI-Tests — 17 out of 30 merged PRs checked by a CI test -- score normalized to 5
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
6/7.5Code-Review — Found 22/27 approved changesets -- score normalized to 8
2.5/2.5Contributors — project has 22 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
7.5/7.5Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
4/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
1/5SAST — SAST tool is not run on all commits -- score normalized to 2
2/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
6.8/7.5Vulnerabilities — 1 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate6
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages7
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de npm:ecc-universal@2.0.0 —lo que arrastra la instalación del paquete publicado—: 7 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? 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.

84Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — .codex/AGENTS.md, .cursor/rules/common-agents.md, .cursor/rules/common-coding-style.md, .cursor/rules/common-development-workflow.md, .cursor/rules/common-git-workflow.md, .cursor/rules/common-hooks.md, .cursor/rules/common-patterns.md, .cursor/rules/common-performance.md, .cursor/rules/common-security.md, .cursor/rules/common-testing.md, .cursor/rules/golang-coding-style.md, .cursor/rules/golang-hooks.md, .cursor/rules/golang-patterns.md, .cursor/rules/golang-security.md, .cursor/rules/golang-testing.md, .cursor/rules/kotlin-coding-style.md, .cursor/rules/kotlin-hooks.md, .cursor/rules/kotlin-patterns.md, .cursor/rules/kotlin-security.md, .cursor/rules/kotlin-testing.md, .cursor/rules/php-coding-style.md, .cursor/rules/php-hooks.md, .cursor/rules/php-patterns.md, .cursor/rules/php-security.md, .cursor/rules/php-testing.md, .cursor/rules/python-coding-style.md, .cursor/rules/python-hooks.md, .cursor/rules/python-patterns.md, .cursor/rules/python-security.md, .cursor/rules/python-testing.md, .cursor/rules/swift-coding-style.md, .cursor/rules/swift-hooks.md, .cursor/rules/swift-patterns.md, .cursor/rules/swift-security.md, .cursor/rules/swift-testing.md, .cursor/rules/typescript-coding-style.md, .cursor/rules/typescript-hooks.md, .cursor/rules/typescript-patterns.md, .cursor/rules/typescript-security.md, .cursor/rules/typescript-testing.md, .gemini/GEMINI.md, .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, docs/es/AGENTS.md, docs/es/CLAUDE.md, docs/es/examples/CLAUDE.md, docs/es/rules/common/agents.md, docs/ja-JP/AGENTS.md, docs/ja-JP/CLAUDE.md, docs/ja-JP/examples/CLAUDE.md, docs/ja-JP/rules/common/agents.md, docs/ko-KR/examples/CLAUDE.md, docs/ko-KR/rules/agents.md, docs/pt-BR/examples/CLAUDE.md, docs/pt-BR/rules/agents.md, docs/tr/AGENTS.md, docs/tr/CLAUDE.md, docs/tr/examples/CLAUDE.md, docs/tr/rules/common/agents.md, docs/zh-CN/AGENTS.md, docs/zh-CN/CLAUDE.md, docs/zh-CN/examples/CLAUDE.md, docs/zh-CN/rules/common/agents.md, docs/zh-TW/rules/agents.md, examples/CLAUDE.md, rules/common/agents.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 85 de 85 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share1
agent_instruction_files.codex/AGENTS.md, .cursor/rules/common-agents.md, .cursor/rules/common-coding-style.md, .cursor/rules/common-development-workflow.md, .cursor/rules/common-git-workflow.md, .cursor/rules/common-hooks.md, .cursor/rules/common-patterns.md, .cursor/rules/common-performance.md, .cursor/rules/common-security.md, .cursor/rules/common-testing.md, .cursor/rules/golang-coding-style.md, .cursor/rules/golang-hooks.md, .cursor/rules/golang-patterns.md, .cursor/rules/golang-security.md, .cursor/rules/golang-testing.md, .cursor/rules/kotlin-coding-style.md, .cursor/rules/kotlin-hooks.md, .cursor/rules/kotlin-patterns.md, .cursor/rules/kotlin-security.md, .cursor/rules/kotlin-testing.md, .cursor/rules/php-coding-style.md, .cursor/rules/php-hooks.md, .cursor/rules/php-patterns.md, .cursor/rules/php-security.md, .cursor/rules/php-testing.md, .cursor/rules/python-coding-style.md, .cursor/rules/python-hooks.md, .cursor/rules/python-patterns.md, .cursor/rules/python-security.md, .cursor/rules/python-testing.md, .cursor/rules/swift-coding-style.md, .cursor/rules/swift-hooks.md, .cursor/rules/swift-patterns.md, .cursor/rules/swift-security.md, .cursor/rules/swift-testing.md, .cursor/rules/typescript-coding-style.md, .cursor/rules/typescript-hooks.md, .cursor/rules/typescript-patterns.md, .cursor/rules/typescript-security.md, .cursor/rules/typescript-testing.md, .gemini/GEMINI.md, .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, docs/es/AGENTS.md, docs/es/CLAUDE.md, docs/es/examples/CLAUDE.md, docs/es/rules/common/agents.md, docs/ja-JP/AGENTS.md, docs/ja-JP/CLAUDE.md, docs/ja-JP/examples/CLAUDE.md, docs/ja-JP/rules/common/agents.md, docs/ko-KR/examples/CLAUDE.md, docs/ko-KR/rules/agents.md, docs/pt-BR/examples/CLAUDE.md, docs/pt-BR/rules/agents.md, docs/tr/AGENTS.md, docs/tr/CLAUDE.md, docs/tr/examples/CLAUDE.md, docs/tr/rules/common/agents.md, docs/zh-CN/AGENTS.md, docs/zh-CN/CLAUDE.md, docs/zh-CN/examples/CLAUDE.md, docs/zh-CN/rules/common/agents.md, docs/zh-TW/rules/agents.md, examples/CLAUDE.md, rules/common/agents.md
agent_instruction_max_bytes11.718
Cómo se puntúa
12.6/18Arranque con un solo comando — ecc2/Cargo.toml (convención del toolchain, sin ejecutor de tareas)
22/22Pruebas automatizadas
11/11Configuración de lint / formato — eslint.config.js
11/11Verificación estática de tipos — .opencode/tsconfig.json
10/10Entorno reproducible — lockfile
10/10Práctica demostrada con agentes — 16 de los últimos 100 commits con autoría o crédito de agente
8/8Mantenimiento automatizado — 10 de los últimos 100 commits son actualizaciones automáticas de dependencias
8/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
Datos de entrada utilizados
has_nixno
has_tests
lockfilesCargo.lock, package-lock.json, yarn.lock
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configs.opencode/tsconfig.json
agent_commit_share0,16
toolchain_manifestsecc2/Cargo.toml
dependency_bot_commit_share0,1
Cómo se puntúa
27/45Código verificable por tipos — JavaScript con configuración de verificación de tipos (.opencode/tsconfig.json)
53.4/55Tamaños de archivo manejables — 15/520 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes541.173
source_files_sampled520
oversized_source_files15
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
20/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signal
api_schema_files

Datos clave

231.806estrellas de GitHub
96contribuidores
2270commits en los últimos 12 meses
0días desde el último push
14versiones publicadas
1factor bus
32issues abiertas
crates.io, npm, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • pypi package 'llm-abstraction' points at a different repository (https://github.com/evandentremont/llm-abstraction); excluded from ecosystem scoring
  • Could not fetch crates package 'ecc-tui' from its registry

Más detalle

Historial de estrellas y forks 0 ★ / 35.370 ⇿
0Estrellas
35.370Forks

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.

Solo se muestra el historial más reciente: este repositorio supera la ventana de recopilación, por lo que no se captura el historial más antiguo.

34.20034.40034.60034.80035.00035.20035.40035.370922026-072026-072026-07
OpenSSF Scorecard 6.0 / 10
6.0agregado

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-21 15:57 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
5CI-Tests17 out of 30 merged PRs checked by a CI test -- score normalized to 5
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
8Code-ReviewFound 22/27 approved changesets -- score normalized to 8
10Contributorsproject has 22 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
8Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 8
2SASTSAST tool is not run on all commits -- score normalized to 2
4Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
9Vulnerabilities1 existing vulnerabilities detected
Dependencias directas 26
RegistroPaqueteRestricción de versiónManifiesto
crates.ioratatui0.30ecc2/Cargo.toml
crates.iocrossterm0.29ecc2/Cargo.toml
crates.iotokio1ecc2/Cargo.toml
crates.iorusqlite0.40ecc2/Cargo.toml
crates.iogit20.21ecc2/Cargo.toml
crates.ioserde1ecc2/Cargo.toml
crates.ioserde_json1ecc2/Cargo.toml
crates.iotoml1.1ecc2/Cargo.toml
crates.ioregex1ecc2/Cargo.toml
crates.iosha20.11ecc2/Cargo.toml
crates.ioureq3ecc2/Cargo.toml
crates.ioclap4ecc2/Cargo.toml
crates.iotracing0.1ecc2/Cargo.toml
crates.iotracing-subscriber0.3ecc2/Cargo.toml
crates.ioanyhow1ecc2/Cargo.toml
crates.iothiserror2ecc2/Cargo.toml
crates.iolibc0.2ecc2/Cargo.toml
crates.iochrono0.4ecc2/Cargo.toml
crates.iocron0.17ecc2/Cargo.toml
crates.iouuid1ecc2/Cargo.toml
crates.iodirs6ecc2/Cargo.toml
npm@iarna/toml2.2.5package.json
npmajv8.20.0package.json
npmsql.js1.14.1package.json
PyPIanthropic>=0.111.0pyproject.toml
PyPIopenai>=1.30.0pyproject.toml
Todas las dependencias 571

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

RegistroPaqueteVersiónRelación
crates.ioanyhow1.0.103directa
crates.iochrono0.4.45directa
crates.ioclap4.6.1directa
crates.iocron0.17.0directa
crates.iocrossterm0.29.0directa
crates.iodirs6.0.0directa
crates.iogit20.21.0directa
crates.iolibc0.2.186directa
crates.ioratatui0.30.2directa
crates.ioregex1.12.4directa
crates.iorusqlite0.40.1directa
crates.ioserde1.0.228directa
crates.ioserde_json1.0.150directa
crates.iosha20.10.9directa
crates.iosha20.11.0directa
crates.iothiserror1.0.69directa
crates.iothiserror2.0.18directa
crates.iotokio1.52.3directa
crates.iotoml1.1.2+spec-1.1.0directa
crates.iotracing0.1.44directa
crates.iotracing-subscriber0.3.23directa
crates.ioureq3.3.0directa
crates.iouuid1.23.4directa
npm@iarna/toml2.2.5directa
npmajv6.14.0directa
npmajv8.20.0directa
npmsql.js1.14.1directa
PyPIanthropicdirecta
PyPIopenaidirecta
crates.ioadler22.0.1indirecta
crates.ioaho-corasick1.1.4indirecta
crates.ioallocator-api20.2.21indirecta
crates.ioandroid_system_properties0.1.5indirecta
crates.ioanstream1.0.0indirecta
crates.ioanstyle1.0.14indirecta
crates.ioanstyle-parse1.0.0indirecta
crates.ioanstyle-query1.1.5indirecta
crates.ioanstyle-wincon3.0.11indirecta
crates.ioapprox0.5.1indirecta
crates.ioatomic0.6.1indirecta
crates.ioautocfg1.5.0indirecta
crates.iobase640.22.1indirecta
crates.iobit-set0.5.3indirecta
crates.iobit-vec0.6.3indirecta
crates.iobitflags1.3.2indirecta
crates.iobitflags2.13.0indirecta
crates.ioblock-buffer0.10.4indirecta
crates.ioblock-buffer0.12.0indirecta
crates.iobumpalo3.20.2indirecta
crates.ioby_address1.2.1indirecta
crates.iobytemuck1.25.0indirecta
crates.iobytes1.11.1indirecta
crates.iocastaway0.2.4indirecta
crates.iocc1.2.57indirecta
crates.iocfg-if1.0.4indirecta
crates.iocfg_aliases0.2.1indirecta
crates.ioclap_builder4.6.0indirecta
crates.ioclap_derive4.6.1indirecta
crates.ioclap_lex1.1.0indirecta
crates.iocolorchoice1.0.5indirecta
crates.iocompact_str0.9.0indirecta
crates.ioconst-oid0.10.2indirecta
crates.ioconvert_case0.10.0indirecta
crates.iocookie0.18.1indirecta
crates.iocookie_store0.22.1indirecta
crates.iocore-foundation-sys0.8.7indirecta
crates.iocpufeatures0.2.17indirecta
crates.iocpufeatures0.3.0indirecta
crates.iocrc32fast1.5.0indirecta
crates.iocritical-section1.2.0indirecta
crates.iocrossterm_winapi0.9.1indirecta
crates.iocrypto-common0.1.7indirecta
crates.iocrypto-common0.2.2indirecta
crates.iocsscolorparser0.6.2indirecta
crates.iodarling0.23.0indirecta
crates.iodarling_core0.23.0indirecta
crates.iodarling_macro0.23.0indirecta
crates.iodeltae0.3.2indirecta
crates.ioderanged0.5.8indirecta
crates.ioderive_more2.1.1indirecta
crates.ioderive_more-impl2.1.1indirecta
crates.iodigest0.10.7indirecta
crates.iodigest0.11.3indirecta
crates.iodirs-sys0.5.0indirecta
crates.iodisplaydoc0.2.5indirecta
crates.iodocument-features0.2.12indirecta
crates.ioeither1.15.0indirecta
crates.ioequivalent1.0.2indirecta
crates.ioerrno0.3.14indirecta
crates.ioeuclid0.22.14indirecta
crates.iofallible-iterator0.3.0indirecta
crates.iofallible-streaming-iterator0.1.9indirecta
crates.iofancy-regex0.11.0indirecta
crates.iofast-srgb81.0.0indirecta
crates.iofiledescriptor0.8.3indirecta
crates.iofind-msvc-tools0.1.9indirecta
crates.iofinl_unicode1.4.0indirecta
crates.iofixedbitset0.4.2indirecta
crates.ioflate21.1.9indirecta
crates.iofnv1.0.7indirecta
crates.iofoldhash0.1.5indirecta
crates.iofoldhash0.2.0indirecta
crates.ioform_urlencoded1.2.2indirecta
crates.iogeneric-array0.14.7indirecta
crates.iogetrandom0.2.17indirecta
crates.iogetrandom0.3.4indirecta
crates.iogetrandom0.4.2indirecta
crates.iohashbrown0.15.5indirecta
crates.iohashbrown0.16.1indirecta
crates.iohashbrown0.17.1indirecta
crates.iohashlink0.12.0indirecta
crates.ioheck0.5.0indirecta
crates.iohex0.4.3indirecta
crates.iohttp1.4.2indirecta
crates.iohttparse1.10.1indirecta
crates.iohybrid-array0.4.12indirecta
crates.ioiana-time-zone0.1.65indirecta
crates.ioiana-time-zone-haiku0.1.2indirecta
crates.ioicu_collections2.1.1indirecta
crates.ioicu_locale_core2.1.1indirecta
crates.ioicu_normalizer2.1.1indirecta
crates.ioicu_normalizer_data2.1.1indirecta
crates.ioicu_properties2.1.2indirecta
crates.ioicu_properties_data2.1.2indirecta
crates.ioicu_provider2.1.1indirecta
crates.ioid-arena2.3.0indirecta
crates.ioident_case1.0.1indirecta
crates.ioidna1.1.0indirecta
crates.ioidna_adapter1.2.1indirecta
crates.ioindexmap2.13.0indirecta
crates.ioindoc2.0.7indirecta
crates.ioinstability0.3.12indirecta
crates.iois_terminal_polyfill1.70.2indirecta
crates.ioitertools0.14.0indirecta
crates.ioitoa1.0.18indirecta
crates.iojobserver0.1.34indirecta
crates.iojs-sys0.3.91indirecta
crates.iokasuari0.4.12indirecta
crates.iolab0.11.0indirecta
crates.iolazy_static1.5.0indirecta
crates.ioleb128fmt0.1.0indirecta
crates.iolibgit2-sys0.18.5+1.9.4indirecta
crates.iolibm0.2.16indirecta
crates.iolibredox0.1.14indirecta
crates.iolibsqlite3-sys0.38.1indirecta
crates.iolibssh2-sys0.3.1indirecta
crates.iolibz-sys1.1.25indirecta
crates.ioline-clipping0.3.7indirecta
crates.iolinux-raw-sys0.12.1indirecta
crates.iolitemap0.8.1indirecta
crates.iolitrs1.0.0indirecta
crates.iolock_api0.4.14indirecta
crates.iolog0.4.29indirecta
crates.iolru0.18.0indirecta
crates.iomac_address1.1.8indirecta
crates.iomatchers0.2.0indirecta
crates.iomemchr2.8.0indirecta
crates.iomemmem0.1.1indirecta
crates.iomemoffset0.9.1indirecta
crates.iominimal-lexical0.2.1indirecta
crates.iominiz_oxide0.8.9indirecta
crates.iomio1.2.1indirecta
crates.ionix0.29.0indirecta
crates.ionom7.1.3indirecta
crates.ionu-ansi-term0.50.3indirecta
crates.ionum-conv0.2.1indirecta
crates.ionum-derive0.4.2indirecta
crates.ionum-traits0.2.19indirecta
crates.ionum_threads0.1.7indirecta
crates.ioonce_cell1.21.4indirecta
crates.ioonce_cell_polyfill1.70.2indirecta
crates.ioopenssl-src300.6.0+3.6.2indirecta
crates.ioopenssl-sys0.9.112indirecta
crates.iooption-ext0.2.0indirecta
crates.ioordered-float4.6.0indirecta
crates.iopalette0.7.6indirecta
crates.iopalette_derive0.7.6indirecta
crates.ioparking_lot0.12.5indirecta
crates.ioparking_lot_core0.9.12indirecta
crates.iopercent-encoding2.3.2indirecta
crates.iopest2.8.6indirecta
crates.iopest_derive2.8.6indirecta
crates.iopest_generator2.8.6indirecta
crates.iopest_meta2.8.6indirecta
crates.iophf0.11.3indirecta
crates.iophf_codegen0.11.3indirecta
crates.iophf_generator0.11.3indirecta
crates.iophf_macros0.11.3indirecta
crates.iophf_shared0.11.3indirecta
crates.iopin-project-lite0.2.17indirecta
crates.iopkg-config0.3.32indirecta
crates.ioportable-atomic1.13.1indirecta
crates.iopotential_utf0.1.4indirecta
crates.iopowerfmt0.2.0indirecta
crates.ioprettyplease0.2.37indirecta
crates.ioproc-macro21.0.106indirecta
crates.ioquote1.0.45indirecta
crates.ior-efi5.3.0indirecta
crates.ior-efi6.0.0indirecta
crates.iorand0.8.6indirecta
crates.iorand_core0.6.4indirecta
crates.ioratatui-core0.1.2indirecta
crates.ioratatui-crossterm0.1.2indirecta
crates.ioratatui-macros0.7.2indirecta
crates.ioratatui-termina0.1.0indirecta
crates.ioratatui-termwiz0.1.2indirecta
crates.ioratatui-widgets0.3.2indirecta
crates.ioredox_syscall0.5.18indirecta
crates.ioredox_users0.5.2indirecta
crates.ioregex-automata0.4.14indirecta
crates.ioregex-syntax0.8.11indirecta
crates.ioring0.17.14indirecta
crates.iorsqlite-vfs0.1.1indirecta
crates.iorustc_version0.4.1indirecta
crates.iorustix1.1.4indirecta
crates.iorustls0.23.37indirecta
crates.iorustls-pki-types1.14.0indirecta
crates.iorustls-webpki0.103.13indirecta
crates.iorustversion1.0.22indirecta
crates.ioryu1.0.23indirecta
crates.ioscopeguard1.2.0indirecta
crates.iosemver1.0.27indirecta
crates.ioserde_core1.0.228indirecta
crates.ioserde_derive1.0.228indirecta
crates.ioserde_spanned1.1.1indirecta
crates.iosharded-slab0.1.7indirecta
crates.ioshlex1.3.0indirecta
crates.iosignal-hook0.3.18indirecta
crates.iosignal-hook-mio0.2.5indirecta
crates.iosignal-hook-registry1.4.8indirecta
crates.iosimd-adler320.3.9indirecta
crates.iosiphasher1.0.2indirecta
crates.iosmallvec1.15.1indirecta
crates.iosocket20.6.3indirecta
crates.iosqlite-wasm-rs0.5.5indirecta
crates.iostable_deref_trait1.2.1indirecta
crates.iostatic_assertions1.1.0indirecta
crates.iostrsim0.11.1indirecta
crates.iostrum0.28.0indirecta
crates.iostrum_macros0.28.0indirecta
crates.iosubtle2.6.1indirecta
crates.iosyn1.0.109indirecta
crates.iosyn2.0.117indirecta
crates.iosynstructure0.13.2indirecta
crates.iotermina0.3.3indirecta
crates.ioterminfo0.9.0indirecta
crates.iotermios0.3.3indirecta
crates.iotermwiz0.23.3indirecta
crates.iothiserror-impl1.0.69indirecta
crates.iothiserror-impl2.0.18indirecta
crates.iothread_local1.1.9indirecta
crates.iotime0.3.47indirecta
crates.iotime-core0.1.8indirecta
crates.iotime-macros0.2.27indirecta
crates.iotinystr0.8.2indirecta
crates.iotokio-macros2.7.0indirecta
crates.iotoml_datetime1.1.1+spec-1.1.0indirecta
crates.iotoml_parser1.1.2+spec-1.1.0indirecta
crates.iotoml_writer1.1.1+spec-1.1.0indirecta
crates.iotracing-attributes0.1.31indirecta
crates.iotracing-core0.1.36indirecta
crates.iotracing-log0.2.0indirecta
crates.iotypenum1.20.1indirecta
crates.ioucd-trie0.1.7indirecta
crates.iounicode-ident1.0.24indirecta
crates.iounicode-segmentation1.12.0indirecta
crates.iounicode-truncate2.0.1indirecta
crates.iounicode-width0.2.0indirecta
crates.iounicode-xid0.2.6indirecta
crates.iountrusted0.9.0indirecta
crates.ioureq-proto0.6.0indirecta
crates.iourl2.5.8indirecta
crates.ioutf8-zero0.8.1indirecta
crates.ioutf8_iter1.0.4indirecta
crates.ioutf8parse0.2.2indirecta
crates.iovaluable0.1.1indirecta
crates.iovcpkg0.2.15indirecta
crates.ioversion_check0.9.5indirecta
crates.iovtparse0.6.2indirecta
crates.iowasi0.11.1+wasi-snapshot-preview1indirecta
crates.iowasip21.0.2+wasi-0.2.9indirecta
crates.iowasip30.4.0+wasi-0.3.0-rc-2026-01-06indirecta
crates.iowasm-bindgen0.2.114indirecta
crates.iowasm-bindgen-macro0.2.114indirecta
crates.iowasm-bindgen-macro-support0.2.114indirecta
crates.iowasm-bindgen-shared0.2.114indirecta
crates.iowasm-encoder0.244.0indirecta
crates.iowasm-metadata0.244.0indirecta
crates.iowasmparser0.244.0indirecta
crates.iowebpki-roots1.0.6indirecta
crates.iowezterm-bidi0.2.3indirecta
crates.iowezterm-blob-leases0.1.1indirecta
crates.iowezterm-color-types0.3.0indirecta
crates.iowezterm-dynamic0.2.1indirecta
crates.iowezterm-dynamic-derive0.1.1indirecta
crates.iowezterm-input-types0.1.0indirecta
crates.iowinapi0.3.9indirecta
crates.iowinapi-i686-pc-windows-gnu0.4.0indirecta
crates.iowinapi-x86_64-pc-windows-gnu0.4.0indirecta
crates.iowindows-core0.62.2indirecta
crates.iowindows-implement0.60.2indirecta
crates.iowindows-interface0.59.3indirecta
crates.iowindows-link0.2.1indirecta
crates.iowindows-result0.4.1indirecta
crates.iowindows-strings0.5.1indirecta
crates.iowindows-sys0.52.0indirecta
crates.iowindows-sys0.61.2indirecta
crates.iowindows-targets0.52.6indirecta
crates.iowindows_aarch64_gnullvm0.52.6indirecta
crates.iowindows_aarch64_msvc0.52.6indirecta
crates.iowindows_i686_gnu0.52.6indirecta
crates.iowindows_i686_gnullvm0.52.6indirecta
crates.iowindows_i686_msvc0.52.6indirecta
crates.iowindows_x86_64_gnu0.52.6indirecta
crates.iowindows_x86_64_gnullvm0.52.6indirecta
crates.iowindows_x86_64_msvc0.52.6indirecta
crates.iowinnow0.7.15indirecta
crates.iowinnow1.0.3indirecta
crates.iowit-bindgen0.51.0indirecta
crates.iowit-bindgen-core0.51.0indirecta
crates.iowit-bindgen-rust0.51.0indirecta
crates.iowit-bindgen-rust-macro0.51.0indirecta
crates.iowit-component0.244.0indirecta
crates.iowit-parser0.244.0indirecta
crates.iowriteable0.6.2indirecta
crates.ioyoke0.8.1indirecta
crates.ioyoke-derive0.8.1indirecta
crates.iozerofrom0.1.6indirecta
crates.iozerofrom-derive0.1.6indirecta
crates.iozeroize1.8.2indirecta
crates.iozerotrie0.2.3indirecta
crates.iozerovec0.11.5indirecta
crates.iozerovec-derive0.11.2indirecta
crates.iozmij1.0.21indirecta
npm@bcoe/v8-coverage1.0.2indirecta
npm@eslint-community/eslint-utils4.9.1indirecta
npm@eslint-community/regexpp4.12.2indirecta
npm@eslint/config-array0.23.5indirecta
npm@eslint/config-helpers0.6.0indirecta
npm@eslint/core1.2.1indirecta
npm@eslint/js9.39.2indirecta
npm@eslint/object-schema3.0.5indirecta
npm@eslint/plugin-kit0.7.2indirecta
npm@humanfs/core0.19.1indirecta
npm@humanfs/node0.16.7indirecta
npm@humanwhocodes/module-importer1.0.1indirecta
npm@humanwhocodes/retry0.4.3indirecta
npm@isaacs/fs-minipass4.0.1indirecta
npm@istanbuljs/schema0.1.3indirecta
npm@jridgewell/resolve-uri3.1.2indirecta
npm@jridgewell/sourcemap-codec1.5.5indirecta
npm@jridgewell/trace-mapping0.3.31indirecta
npm@msgpackr-extract/msgpackr-extract-darwin-arm643.0.4indirecta
npm@msgpackr-extract/msgpackr-extract-darwin-x643.0.4indirecta
npm@msgpackr-extract/msgpackr-extract-linux-arm3.0.4indirecta
npm@msgpackr-extract/msgpackr-extract-linux-arm643.0.4indirecta
npm@msgpackr-extract/msgpackr-extract-linux-x643.0.4indirecta
npm@msgpackr-extract/msgpackr-extract-win32-x643.0.4indirecta
npm@opencode-ai/plugin1.17.3indirecta
npm@opencode-ai/plugin1.4.3indirecta
npm@opencode-ai/sdk1.17.3indirecta
npm@opencode-ai/sdk1.4.3indirecta
npm@standard-schema/spec1.1.0indirecta
npm@types/debug4.1.12indirecta
npm@types/esrecurse4.3.1indirecta
npm@types/estree1.0.8indirecta
npm@types/istanbul-lib-coverage2.0.6indirecta
npm@types/json-schema7.0.15indirecta
npm@types/katex0.16.8indirecta
npm@types/ms2.1.0indirecta
npm@types/node20.19.33indirecta
npm@types/node25.9.2indirecta
npm@types/unist2.0.11indirecta
npmabbrev5.0.0indirecta
npmacorn8.17.0indirecta
npmacorn-jsx5.3.2indirecta
npmansi-regex5.0.1indirecta
npmansi-regex6.2.2indirecta
npmansi-styles4.3.0indirecta
npmargparse2.0.1indirecta
npmbalanced-match4.0.4indirecta
npmbrace-expansion5.0.7indirecta
npmc811.0.0indirecta
npmcharacter-entities2.0.2indirecta
npmcharacter-entities-legacy3.0.0indirecta
npmcharacter-reference-invalid2.0.1indirecta
npmchownr3.0.0indirecta
npmcliui8.0.1indirecta
npmcolor-convert2.0.1indirecta
npmcolor-name1.1.4indirecta
npmcommander14.0.3indirecta
npmcommander8.3.0indirecta
npmconvert-source-map2.0.0indirecta
npmcross-spawn7.0.6indirecta
npmdebug4.4.3indirecta
npmdecode-named-character-reference1.3.0indirecta
npmdeep-extend0.6.0indirecta
npmdeep-is0.1.4indirecta
npmdequal2.0.3indirecta
npmdetect-libc2.1.2indirecta
npmdevlop1.1.0indirecta
npmeffect4.0.0-beta.74indirecta
npmemoji-regex8.0.0indirecta
npmentities4.5.0indirecta
npmenv-paths2.2.1indirecta
npmescalade3.2.0indirecta
npmescape-string-regexp4.0.0indirecta
npmeslint10.6.0indirecta
npmeslint-scope9.1.2indirecta
npmeslint-visitor-keys3.4.3indirecta
npmeslint-visitor-keys5.0.1indirecta
npmespree11.2.0indirecta
npmesquery1.7.0indirecta
npmesrecurse4.3.0indirecta
npmestraverse5.3.0indirecta
npmesutils2.0.3indirecta
npmexponential-backoff3.1.3indirecta
npmfast-check4.8.0indirecta
npmfast-deep-equal3.1.3indirecta
npmfast-json-stable-stringify2.1.0indirecta
npmfast-levenshtein2.0.6indirecta
npmfast-uri3.1.2indirecta
npmfdir6.5.0indirecta
npmfile-entry-cache8.0.0indirecta
npmfind-my-way-ts0.1.6indirecta
npmfind-up5.0.0indirecta
npmflat-cache4.0.1indirecta
npmflatted3.4.2indirecta
npmforeground-child3.3.1indirecta
npmget-caller-file2.0.5indirecta
npmget-east-asian-width1.4.0indirecta
npmglob13.0.6indirecta
npmglob-parent6.0.2indirecta
npmglobals17.4.0indirecta
npmgraceful-fs4.2.11indirecta
npmhas-flag4.0.0indirecta
npmhtml-escaper2.0.2indirecta
npmignore5.3.2indirecta
npmignore7.0.5indirecta
npmimurmurhash0.1.4indirecta
npmini4.1.3indirecta
npmini7.0.0indirecta
npmis-alphabetical2.0.1indirecta
npmis-alphanumerical2.0.1indirecta
npmis-decimal2.0.1indirecta
npmis-extglob2.1.1indirecta
npmis-fullwidth-code-point3.0.0indirecta
npmis-glob4.0.3indirecta
npmis-hexadecimal2.0.1indirecta
npmisexe2.0.0indirecta
npmisexe4.0.0indirecta
npmistanbul-lib-coverage3.2.2indirecta
npmistanbul-lib-report3.0.1indirecta
npmistanbul-reports3.2.0indirecta
npmjs-yaml4.2.0indirecta
npmjson-buffer3.0.1indirecta
npmjson-schema-traverse0.4.1indirecta
npmjson-schema-traverse1.0.0indirecta
npmjson-stable-stringify-without-jsonify1.0.1indirecta
npmjsonc-parser3.3.1indirecta
npmjsonpointer5.0.1indirecta
npmkatex0.16.28indirecta
npmkeyv4.5.4indirecta
npmkubernetes-types1.30.0indirecta
npmlevn0.4.1indirecta
npmlinkify-it5.0.1indirecta
npmlocate-path6.0.0indirecta
npmlru-cache11.2.7indirecta
npmmake-dir4.0.0indirecta
npmmarkdown-it14.2.0indirecta
npmmarkdownlint0.40.0indirecta
npmmarkdownlint-cli0.48.0indirecta
npmmdurl2.0.0indirecta
npmmicromark4.0.2indirecta
npmmicromark-core-commonmark2.0.3indirecta
npmmicromark-extension-directive4.0.0indirecta
npmmicromark-extension-gfm-autolink-literal2.1.0indirecta
npmmicromark-extension-gfm-footnote2.1.0indirecta
npmmicromark-extension-gfm-table2.1.1indirecta
npmmicromark-extension-math3.1.0indirecta
npmmicromark-factory-destination2.0.1indirecta
npmmicromark-factory-label2.0.1indirecta
npmmicromark-factory-space2.0.1indirecta
npmmicromark-factory-title2.0.1indirecta
npmmicromark-factory-whitespace2.0.1indirecta
npmmicromark-util-character2.1.1indirecta
npmmicromark-util-chunked2.0.1indirecta
npmmicromark-util-classify-character2.0.1indirecta
npmmicromark-util-combine-extensions2.0.1indirecta
npmmicromark-util-decode-numeric-character-reference2.0.2indirecta
npmmicromark-util-encode2.0.1indirecta
npmmicromark-util-html-tag-name2.0.1indirecta
npmmicromark-util-normalize-identifier2.0.1indirecta
npmmicromark-util-resolve-all2.0.1indirecta
npmmicromark-util-sanitize-uri2.0.1indirecta
npmmicromark-util-subtokenize2.1.0indirecta
npmmicromark-util-symbol2.0.1indirecta
npmmicromark-util-types2.0.2indirecta
npmminimatch10.2.5indirecta
npmminimist1.2.8indirecta
npmminipass7.1.3indirecta
npmminizlib3.1.0indirecta
npmms2.1.3indirecta
npmmsgpackr2.0.4indirecta
npmmsgpackr-extract3.0.4indirecta
npmmultipasta0.2.7indirecta
npmnatural-compare1.4.0indirecta
npmnode-gyp13.0.0indirecta
npmnode-gyp-build-optional-packages5.2.2indirecta
npmnopt10.0.1indirecta
npmoptionator0.9.4indirecta
npmp-limit3.1.0indirecta
npmp-locate5.0.0indirecta
npmparse-entities4.0.2indirecta
npmpath-exists4.0.0indirecta
npmpath-key3.1.1indirecta
npmpath-scurry2.0.2indirecta
npmpicomatch4.0.4indirecta
npmprelude-ls1.2.1indirecta
npmproc-log7.0.0indirecta
npmpunycode2.3.1indirecta
npmpunycode.js2.3.1indirecta
npmpure-rand8.4.0indirecta
npmrequire-directory2.1.1indirecta
npmrequire-from-string2.0.2indirecta
npmrun-con1.3.2indirecta
npmsemver7.7.4indirecta
npmsemver7.8.5indirecta
npmshebang-command2.0.0indirecta
npmshebang-regex3.0.0indirecta
npmsignal-exit4.1.0indirecta
npmsmol-toml1.6.1indirecta
npmstring-width4.2.3indirecta
npmstring-width8.1.0indirecta
npmstrip-ansi6.0.1indirecta
npmstrip-ansi7.1.2indirecta
npmstrip-json-comments3.1.1indirecta
npmsupports-color7.2.0indirecta
npmtar7.5.19indirecta
npmtest-exclude8.0.0indirecta
npmtinyglobby0.2.15indirecta
npmtinyglobby0.2.17indirecta
npmtoml4.1.1indirecta
npmtype-check0.4.0indirecta
npmtypescript5.9.3indirecta
npmtypescript6.0.3indirecta
npmuc.micro2.1.0indirecta
npmundici6.27.0indirecta
npmundici-types6.21.0indirecta
npmundici-types7.24.6indirecta
npmuri-js4.4.1indirecta
npmuuid14.0.0indirecta
npmv8-to-istanbul9.3.0indirecta
npmwhich2.0.2indirecta
npmwhich7.0.0indirecta
npmword-wrap1.2.5indirecta
npmwrap-ansi7.0.0indirecta
npmy18n5.0.8indirecta
npmyallist5.0.0indirecta
npmyaml2.9.0indirecta
npmyargs17.7.2indirecta
npmyargs-parser21.1.1indirecta
npmyocto-queue0.1.0indirecta
npmzod4.1.8indirecta
PyPImypyindirecta
PyPIpytestindirecta
PyPIpytest-asyncioindirecta
PyPIpytest-covindirecta
PyPIpytest-mockindirecta
PyPIpyyamlindirecta
PyPIruffindirecta
Avisos de dependencias 0

Instalar npm:ecc-universal@2.0.0 arrastra 7 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "ai-agents",
        "anthropic",
        "claude",
        "claude-code",
        "developer-tools",
        "llm",
        "mcp",
        "productivity"
      ],
      "is_fork": false,
      "size_kb": 39600,
      "has_wiki": true,
      "homepage": "https://ecc.tools",
      "languages": {
        "CSS": 4037,
        "Rust": 1819319,
        "Shell": 196856,
        "Swift": 8371,
        "Python": 388935,
        "JavaScript": 4678124,
        "PowerShell": 1547,
        "TypeScript": 69953
      },
      "pushed_at": "2026-07-20T20:21:03Z",
      "created_at": "2026-01-18T00:51:51Z",
      "owner_type": "User",
      "updated_at": "2026-07-21T15:54:18Z",
      "description": "The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Rust"
      ]
    },
    "owner": {
      "blog": "https://affaanmustafa.com",
      "name": "Affaan Mustafa",
      "type": "User",
      "login": "affaan-m",
      "company": "Itô",
      "location": "NYC",
      "followers": 8561,
      "avatar_url": "https://avatars.githubusercontent.com/u/124439313?v=4",
      "created_at": "2023-02-04T11:57:38Z",
      "is_verified": null,
      "public_repos": 27,
      "account_age_days": 1263
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2026-06-10T01:49:20Z"
        },
        {
          "tag": "v2.0.0-rc.1",
          "kind": "prerelease",
          "published_at": "2026-05-25T18:29:31Z"
        },
        {
          "tag": "v1.10.0",
          "kind": "minor",
          "published_at": "2026-04-05T20:20:57Z"
        },
        {
          "tag": "v1.9.0",
          "kind": "minor",
          "published_at": "2026-03-21T00:29:53Z"
        },
        {
          "tag": "v1.8.0",
          "kind": "minor",
          "published_at": "2026-03-05T20:50:57Z"
        },
        {
          "tag": "v1.7.0",
          "kind": "minor",
          "published_at": "2026-02-27T14:06:50Z"
        },
        {
          "tag": "v1.6.0",
          "kind": "minor",
          "published_at": "2026-02-24T06:56:35Z"
        },
        {
          "tag": "v1.5.0",
          "kind": "minor",
          "published_at": "2026-02-11T10:07:45Z"
        },
        {
          "tag": "v1.4.1",
          "kind": "patch",
          "published_at": "2026-02-06T09:13:21Z"
        },
        {
          "tag": "v1.4.0",
          "kind": "minor",
          "published_at": "2026-02-06T07:40:35Z"
        },
        {
          "tag": "v1.3.0",
          "kind": "minor",
          "published_at": "2026-02-05T13:15:36Z"
        },
        {
          "tag": "v1.2.0",
          "kind": "minor",
          "published_at": "2026-02-01T11:51:06Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-01-26T02:21:56Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-01-22T12:17:08Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "5deee34c93395045b985e3baf91550e5f1ab7204",
          "body": "…mux reminder (#2517)\n\n* fix(hooks): remove stray '?' that made every 'yarn <anything>' trigger tmux reminder\n\nThe tmux-reminder matcher uses one alternation per package manager. Each\nbranch requires a subcommand (install|test) — except yarn, whose subcommand\ngroup carried a trailing `?`:\n\n    yarn \n[…]\npendency. Diverging from the established convention in a bugfix PR is\nout of scope.\n\n* test(hooks): trim tmux reminder regression coverage\n\n---------\n\nCo-authored-by: Haley Chen <2022hachen@gmail.com>",
          "is_bot": false,
          "headline": "fix(hooks): remove stray '?' that made every 'yarn <anything>' fire t…",
          "author_name": "Thejesh Reddy",
          "author_login": "thejesh23",
          "committed_at": "2026-07-20T20:21:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ee7dded8e9a514b2b884e3fadc49eeff235fecfc",
          "body": "…(#2511)\n\nCommit 2d40baac (PR #2304) renamed `_ecc_*` -> `_clv2_*` but missed this\nsingle call site. The launcher sources `scripts/lib/homunculus-dir.sh` which\nonly exports `_clv2_resolve_homunculus_dir`, so any user enabling the\nobserver (`observer.enabled: true`) gets:\n\n  start-observer.sh: line 4\n[…]\nn first manual `start-observer.sh start` or first lazy-start\nafter enabling.\n\nFix: rename the single call to `_clv2_resolve_homunculus_dir` to match\nthe lib export and every other caller in the skill.",
          "is_bot": false,
          "headline": "fix(observer): use _clv2_resolve_homunculus_dir (matches lib export) …",
          "author_name": "WinterSold1er",
          "author_login": "WinterSold1er",
          "committed_at": "2026-07-20T19:42:14Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "faff56015f8f7165c8e071ee180ba3e31b450280",
          "body": "…2487)\n\n* docs(strategic-compact): document context-window override env vars\n\n* docs(strategic-compact): mirror context-window override env vars for Codex",
          "is_bot": false,
          "headline": "docs(strategic-compact): document context-window override env vars (#…",
          "author_name": "黄云龙",
          "author_login": "nankingjing",
          "committed_at": "2026-07-20T19:41:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4a4fa907f5f1ba51845e404e295a34f92516a773",
          "body": "…n rules (#2471)\n\nThe 'Parallel Task Execution' rule encourages agents to spawn subagents,\nbut defines no completion contract. Observed failure mode: subagents\nfollowed the rule, spawned their own children, and returned 'waiting\nfor background agents' as their final answer. All children completed\nsu\n[…]\n delegation depth:\n1. Your final message IS the deliverable (never end with 'waiting')\n2. If you delegate, you own collection (no fire-and-forget)\n3. Decompose only when work cannot fit in one context",
          "is_bot": false,
          "headline": "docs(rules): add Delegation Completion Contract to agent orchestratio…",
          "author_name": "someiyoshino-lab",
          "author_login": "someiyoshino-lab",
          "committed_at": "2026-07-20T19:39:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "56d2913f38fff83b0c51abe44cc47a6102210db6",
          "body": null,
          "is_bot": false,
          "headline": "docs(skills): fix typo in remotion charts rule (#2460)",
          "author_name": "fletcherm-hub",
          "author_login": "fletcherm-hub",
          "committed_at": "2026-07-20T19:35:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0071fa5c3c389d2b4b235a39402c891e146cdef3",
          "body": "…chers (#2494)\n\n* refactor(hooks): consolidate PostToolUse hooks into sync/async dispatchers\n\nReplace 10 individual PostToolUse entries in hooks.json with two\nconsolidated dispatcher entries (post:dispatcher:sync /\npost:dispatcher:async). The dispatcher's internal registry preserves\nevery hook ID, m\n[…]\nand asserts the OS-level exit status, stderr diagnostic, and suppressed\npass-through — closing the E2E gap CodeRabbit flagged on #2494.\n\n* chore: retrigger CI (flaky windows powershell bootstrap test)",
          "is_bot": false,
          "headline": "refactor(hooks): consolidate PostToolUse hooks into sync/async dispat…",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-07-19T19:47:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "754b8dd76ca885b764ec22f476664377aa46b6cd",
          "body": "* fix: make the installer runtime pass strict supply-chain vetting\n\nRemediate the four enterprise supply-chain vetting blockers from\naffaan-m/ECC#2502 so the installer runtime (package.json + manifests +\nscripts/lib/**) passes strict exact-pin evidence policy:\n\n1. Remove the package.json `postinstal\n[…]\nady resolved in the committed lockfiles.\n\nAddresses the Codex P1 on #2503.\n\n---------\n\nSigned-off-by: Samar Tomar <samar_tomar@hotmail.com>\nCo-authored-by: Samarjeet Singh Tomar <samartomar@gmail.com>",
          "is_bot": false,
          "headline": "fix: make the installer runtime pass strict supply-chain vetting (#2503)",
          "author_name": "Samarjeet  Singh Tomar",
          "author_login": "samartomar",
          "committed_at": "2026-07-17T21:13:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5da21c2b661d1c8aee653b97973913ad883171d8",
          "body": "…osing framework detection on compatible-release pins) (#2498)\n\n* fix(project-detect): parse Python deps pinned with ~= and @ direct references\n\n* test(project-detect): cover ~= compatible-release and @ direct-reference parsing\n\n* test(project-detect): cover direct references\n\n* fix(project-detect):\n[…]\n split recorded the whole URL\nfragment as a dependency. Skip names that start with git+ or contain a\nURL scheme, and tighten the test assertions so any leaked URL, scheme,\nor @ delimiter fails loudly.",
          "is_bot": false,
          "headline": "fix(project-detect): parse Python deps pinned with `~` and `@` (was l…",
          "author_name": "黄云龙",
          "author_login": "nankingjing",
          "committed_at": "2026-07-17T21:11:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5d68ef361770463f6f5985986b5297b94dd63f1b",
          "body": "…is over-indented (#2501)\n\n* fix(plan-canvas): stop dropping list items when a block's first item is over-indented\n\n* fix: address greptile findings for PR #2501 - list-type detection and outdent nesting\n\n- plan-canvas markdown: fix nested list rendering where outdented runs (indent\n  6→4) create du\n[…]\nsly\nabsorbed the run into the current list, so mixed runs rendered under a\nsingle wrong tag. Stop the run on a tag change and let buildListBlock\nrender the next run as a sibling list with its own tag.",
          "is_bot": false,
          "headline": "fix(plan-canvas): stop dropping list items when a block's first item …",
          "author_name": "黄云龙",
          "author_login": "nankingjing",
          "committed_at": "2026-07-17T21:10:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb98726d0a35d5c978f4f9451c57a39d06d6729a",
          "body": "…top-level (#2515)\n\n* fix(llm/providers/claude): attach cache_control to system block, not top-level\n\nThe Anthropic Messages API does not accept `cache_control` as a top-level\nrequest parameter — it is a per-content-block field. Passing it at the top\nlevel raises `TypeError` in the Python SDK (which\n[…]\ntance(system, list)` then `assert system`)\nso a failure points at the exact violation instead of a compound condition.\n\nBehavior unchanged; 6/6 tests still pass.\n\nAddresses CodeRabbit review on #2515.",
          "is_bot": false,
          "headline": "fix(llm/providers/claude): attach cache_control to system block, not …",
          "author_name": "Thejesh",
          "author_login": "thejesh23",
          "committed_at": "2026-07-17T20:04:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ed387446052dfbc6b52de149406b70efa65edc59",
          "body": "Require observe-runner shell detection to accept only candidates whose probe exits successfully, avoiding Windows WSL launcher false positives.",
          "is_bot": false,
          "headline": "fix(hooks): require successful shell probe in observe runner (#2403)",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-07-14T01:31:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "40927950c49f6e742d341e20ff7b9b7e1e7bfff5",
          "body": "…ror, 1.x→2.0 migration guide, cyber-safeguards docs (#2481)\n\n* fix: repo URLs in pyproject, graceful dashboard tkinter error, 1.x->2.0 migration guide, cyber-safeguards troubleshooting\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n* fix: catch ImportError\n[…]\nel repo URL\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: community-reported issues — pyproject URLs, dashboard Tkinter er…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-09T07:53:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "f6e18e0835e40145acddd32a6cecad9b4fbbf35d",
          "body": "… soften data-scraper prose (#2428) (#2480)\n\n* fix(agents): retier reviewer frontmatter (#2442)\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n* docs(skills): soften data scraper prose (#2428)\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix(agents): read-only reviewer contract + model re-tiering (#2442) +…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-09T07:02:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "38a7ebbe3294be9bfda5612c6d696742ade6fbb2",
          "body": "…age guard (#2431) (#2440)\n\n* fix(install): reference all curated skills in modules + add reverse-coverage guard (#2431)\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n* test(install): normalize path separators in delivery-gate dry-run assertion (#2431)\n\nCo\n[…]\n2+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(install): reference all curated skills in modules + reverse-cover…",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-08T21:14:52Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "67537ea480496db8197e7b32985e59ca2e17bbe7",
          "body": "…code-plugin-not-built` warning (#2414) (#2438)\n\n* fix(repair): build opencode plugin payload so repair clears doctor's opencode-plugin-not-built warning (#2414)\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n* refactor(repair): narrow validation bypass to \n[…]\n2+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(repair): build opencode payload so `repair` clears doctor's `open…",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-08T21:14:33Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a511395613641b85a50354faa371a0df083b7b97",
          "body": "* feat: add Plan Canvas - browser annotate-and-approve review for plan artifacts\n\n- scripts/plan-canvas.js CLI (open/await/end/stop/server; bin ecc-plan-canvas)\n- loopback server + ECC-styled chrome + annotation SDK + zero-dep markdown renderer\n- Approve/Request-changes verdicts wired to the /plan c\n[…]\nd/CLI registration surfaces\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Haley Chen <2022hachen@gmail.com>\nCo-authored-by: Claude Fable 5 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: Plan Canvas, a browser review canvas for plans (#2467)",
          "author_name": "haelyra",
          "author_login": "haelyra",
          "committed_at": "2026-07-08T21:12:48Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4130457d674d2180c5af2c5f634f3cae4cbc6c4f",
          "body": "…-temporary-file) (#2443)\n\nReplaces 54 predictable os.tmpdir()+Date.now() test-home paths in\ntests/hooks/hooks.test.js and the pid-based transcript files in\ntests/lib/llm-summary.test.js with fs.mkdtempSync. The 22\nclaude-tool-count-* sites are left as-is: they intentionally mirror\nthe path the production hook computes. Clears all 16 open code-scanning\nalerts (#256-#271).",
          "is_bot": false,
          "headline": "fix(tests): use mkdtempSync for test scratch dirs (CodeQL js/insecure…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-04T20:44:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49128b5763b7ac0b50acef35ac0bcca08d1576af",
          "body": "…) (#2441)\n\nRebuild of #2154 on current main, following the hermes/openclaw (#2433)\nadapter recipe: 10-line kimi-project adapter (project kind, ./.kimi root),\nregistry + helpers ownership, SUPPORTED_INSTALL_TARGETS + legacy-compat\nmodules, kimi target on the 5 shared modules + .kimi in platform-configs\npaths, both schema enums, npm files allowlist, help text, README stub.\n\nCredit to @MoYiC6 for the original adapter design in #2154.",
          "is_bot": false,
          "headline": "feat(install): add Kimi Code CLI install target (kimi-project adapter…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-04T05:24:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c837139e6cf3dff7bbbd3c847a56da119490612f",
          "body": "* feat: add Hermes and OpenClaw harness install targets\n\n- Add scripts/lib/install-targets/hermes-home.js and openclaw-home.js\n- Register new adapters in registry.js and helpers.js\n- Add hermes/openclaw to SUPPORTED_INSTALL_TARGETS, schema enum, and install help text\n- Add .hermes/ and .openclaw/ pl\n[…]\naw in install-modules schema enum + npm files allowlist\n\n---------\n\nCo-authored-by: Lxcardoza993 <265670745+Lxcardoza993@users.noreply.github.com>\nCo-authored-by: Affaan Mustafa <me@affaanmustafa.com>",
          "is_bot": false,
          "headline": "feat: add Hermes and OpenClaw harness install targets (#2433)",
          "author_name": "Lx",
          "author_login": "Lxcardoza993",
          "committed_at": "2026-07-04T05:20:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2d40baacbda17780ca71fca24171d797a7d53caa",
          "body": "…createdTime fallback bug (#2408)\n\n* fix: resolve issue cluster (#2295,#2298,#2303,#2304,#2305,#2306,#2340) + createdTime fallback bug\n\n- session-manager: fix createdTime birthtime||ctime fallback that never fired\n  (a Date is always truthy); use birthtimeMs>0 check via resolveCreatedTime()\n- instal\n[…]\n\n---------\n\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\nCo-authored-by: Affaan Mustafa <me@affaanmustafa.com>",
          "is_bot": true,
          "headline": "fix: resolve open-issue cluster (#2295, #2298, #2303–#2306, #2340) + …",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-04T04:10:45Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "31678527538d9c41b6ef2a52e10e38b9c5d8a590",
          "body": "…trol-regex) (#2439)\n\nReplace the NUL-byte '**' placeholder trick with split('**')/join('.*'),\nwhich is semantically identical and lint-clean under eslint 10.",
          "is_bot": false,
          "headline": "fix(gateguard): drop \\x00 placeholder in glob-to-regex (eslint no-con…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-04T03:51:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a35a0216bbf5306c34771cc7c3f8cd286fa077f",
          "body": "The fact-forcing gate fires once per first-touched file per session. In\nbuild-heavy sessions this costs a deny->retry round-trip on every new file,\nincluding trees where the gate's questions (\"who imports this? what schema?\")\ncarry no signal: test files, generated artifacts, scratch dirs.\n\nAdd an op\n[…]\nveRegex idiom.\n\n  \"env\": { \"GATEGUARD_EXEMPT_GLOBS\": \"**/tests/**,**/scratchpad/**\" }\n\nAdds 4 tests; all 144 gateguard tests pass.\n\nCo-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(gateguard): add GATEGUARD_EXEMPT_GLOBS path exemptions (#2432)",
          "author_name": "Alec Moldovan",
          "author_login": "Zalasyu",
          "committed_at": "2026-07-04T03:41:11Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "8b6543929e8e7ec80c851b8a0d4e04eebcbf1026",
          "body": "… (#2401)\n\n* chore(continuous-learning-v2): standardize shell shebangs to env bash\n\nThree scripts under skills/continuous-learning-v2/ used the hardcoded\n`#!/bin/bash` shebang while the other four already used the portable\n`#!/usr/bin/env bash`:\n\n- hooks/observe.sh (runs on every hook invocation)\n- \n[…]\n. This keeps the shebang-consistency\ncheck deterministic: only committed skill scripts are examined, and an\nuntracked local artifact left over from an observer run can no longer\ncause a false failure.",
          "is_bot": false,
          "headline": "chore(continuous-learning-v2): standardize shell shebangs to env bash…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-07-04T03:40:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ff4a06dd91ec4e10b3a18dac6a8008b90152dea4",
          "body": "…eshold configurable (#2413)\n\n* feat(session-start): make instinct injection count and confidence threshold configurable\n\nExpose ECC_MAX_INJECTED_INSTINCTS and ECC_INSTINCT_CONFIDENCE_THRESHOLD so\noperators can tune SessionStart instinct injection without editing source.\nDefaults are unchanged (6 in\n[…]\n\n(/^\\d+(\\.\\d+)?$/ for the 0-1 threshold, /^\\d+$/ for the positive-integer\ncount) before converting, so hex/exponent/partial values fall back to the\ndefault. Adds regression assertions for 1e2 and 0x1.",
          "is_bot": false,
          "headline": "feat(session-start): make instinct injection count and confidence thr…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-07-04T03:40:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "41599069c381b9c7997abeeaeb1a5c6bce42901f",
          "body": "…files (#2416)\n\n* fix(steering): add missing name attribute to auto-inclusion steering files\n\n* docs: include name attribute on steering file example\n\n---------\n\nCo-authored-by: Jucelio Brandao Goncalves Junior <jbgjunior@simpress.com.br>",
          "is_bot": false,
          "headline": "fix(steering): add missing name attribute to auto-inclusion steering …",
          "author_name": "Jucélio Brandão Gonçalves Junior",
          "author_login": "juujb",
          "committed_at": "2026-07-04T03:39:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a926b45ba171fdd843f30f6cc7cd87b5ccfff69",
          "body": "… (#2399)\n\n* fix(install): rewrite relative skill links for injected ecc namespace\n\nSkill and rule markdown is byte-copied during a claude install, but the\nhome/project adapters inject an `ecc/` namespace segment\n(skills/<id> -> skills/ecc/<id>, rules/<x> -> rules/ecc/<x>). Source-relative\nlinks suc\n[…]\niew feedback: the local test() harness logged only error.message,\nso a failing assertion lost its source line and diff. Print error.stack on\nstderr on failure so broken rewrite cases stay diagnosable.",
          "is_bot": false,
          "headline": "fix(install): rewrite relative skill links for injected ecc namespace…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-07-04T03:39:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "90f82d360b5a483926998a71ec10d87a3e5e59a0",
          "body": "…observer.sh (#2356)\n\n* fix(observer): replace hardcoded sleep 2 with PID file poll in start-observer.sh\n\nFixes #2295\n\nThe previous `sleep 2` after launching the observer loop has two\nproblems: on slow filesystems or loaded systems 2 seconds may not be\nenough, producing a false-negative on the subse\n[…]\n that crashes before writing $PID_FILE is now\n  detected in ~10s instead of ~2s. Healthy startups still return in\n  iteration 1.\n\nTests: node tests/run-all.js (Node v22.18.0) → 2892 passed / 0 failed.",
          "is_bot": false,
          "headline": "fix(observer): replace hardcoded sleep 2 with PID file poll in start-…",
          "author_name": "Jun",
          "author_login": "mc856",
          "committed_at": "2026-07-04T03:38:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c8c83ef42829707803794dfa6d54e77d47dcd855",
          "body": "OpenCode ships override command files under .opencode/commands/ that\nshadow the generic commands/*.md sources. The manifest install plan\nrecorded both writes against the same destination, so `ecc doctor`\nreported perpetual drift for the 29 shadowed command files and `ecc\nrepair` \"fixed\" that phantom\n[…]\nhe last writer to match the sequential apply order. install,\nrepair, and doctor all consume this one builder, so a fresh install is\nclean and a single repair rewrites drifted state green.\n\nFixes #2414",
          "is_bot": false,
          "headline": "fix(install): dedupe copy-file operations sharing a destination (#2429)",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-07-04T03:37:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "52f7e82a613dce33908d66a75c3aeca66309e77f",
          "body": "…ce, not per-instance (#2411)\n\nSKILL.md and _promote_auto already use avg_conf >= 0.8; observer.md\n(EN + zh-CN) was missed and still says per-instance. Same drift as\n#2274.\n\nRefs #2298.",
          "is_bot": false,
          "headline": "docs(continuous-learning-v2): observer.md promotion uses avg confiden…",
          "author_name": "Jun",
          "author_login": "mc856",
          "committed_at": "2026-07-04T03:37:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8c3a3040aecce7bf6797a2cacacdb008ce6731ee",
          "body": "…ct (#2420)\n\nThe Hook Setup section told all users to wire\n`node ~/.claude/scripts/hooks/suggest-compact.js` into settings.json.\nThat path only exists on manual `./install.sh` installs; for plugin\ninstalls the hook is already registered by the plugin's hooks/hooks.json\n(id `pre:edit-write:suggest-co\n[…]\nal\n  skill, the .kiro mirror, and ja-JP/zh-CN/zh-TW/ko-KR translations\n- ko-KR: also replace the settings.json snippet that used\n  `${CLAUDE_PLUGIN_ROOT}`, which does not resolve in user settings.json",
          "is_bot": false,
          "headline": "fix(skills): document plugin vs manual hook setup for strategic-compa…",
          "author_name": "Nidelson Gimenez",
          "author_login": "nidelson",
          "committed_at": "2026-07-04T03:36:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e05a2012588bbe54d61122d6971eb3236e38e367",
          "body": "Every other language pack (typescript, react, python, golang, vue, ...) scopes its rules with a paths: YAML frontmatter block, so Claude Code only loads them when matching files are in context. The 7 files in rules/web/ ship without frontmatter, and per the official rules-loading docs (https://code.\n[…]\nf always-on context even in projects with no frontend code.\r\n\r\nAdd the same frontmatter convention used by the react pack, scoped to web-facing file types (css/scss/sass/less/html/tsx/jsx/vue/svelte).",
          "is_bot": false,
          "headline": "fix(rules): add paths frontmatter to web rule pack (#2425)",
          "author_name": "sutazca",
          "author_login": "sutazca",
          "committed_at": "2026-07-04T03:36:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fb37c23c84959e5c811b064099ebb62b3575272e",
          "body": "…le: [shadow] (#2423)\n\ngolangci-lint deprecated the govet `check-shadowing` setting in v1.57.0 and\nlater removed it; a config using it now errors. The current v1-format way to\nenable the shadow analyzer is `govet.enable: [shadow]`.\n\nApplies to the source skill and the ja-JP, zh-CN, zh-TW, ko-KR, tr translated\ncopies.\n\nRefs: https://golangci-lint.run/docs/product/migration-guide/",
          "is_bot": false,
          "headline": "fix(golang-patterns): replace removed govet check-shadowing with enab…",
          "author_name": "28winz-bot",
          "author_login": "28winz-bot",
          "committed_at": "2026-07-04T03:36:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee2663d5b287f5ebd6f80bc4f57c2fecba0c2eb3",
          "body": "…tained clickhouse package (#2422)\n\n* fix(clickhouse-io): use official @clickhouse/client instead of unmaintained clickhouse package\n\nThe example imported the third-party `clickhouse` (TimonKK) package and used\nits API (new ClickHouse, .query().toPromise(), .insert().stream()). Migrate to\nthe offici\n[…]\n })\n- Single-row insertTrade: map the row to the column shape (same as the bulk\n  path) instead of passing the raw trade object.\n\nApplies to the source skill and the ja-JP, zh-CN, zh-TW, ko-KR copies.",
          "is_bot": false,
          "headline": "fix(clickhouse-io): use official @clickhouse/client instead of unmain…",
          "author_name": "28winz-bot",
          "author_login": "28winz-bot",
          "committed_at": "2026-07-04T03:36:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7a46a7b8fc2dd377e4dfdd09d275f8798a5bc35a",
          "body": "* docs: add MRR-biased ECC Pro + AgentShield security roadmap\n\nOutput of a multi-agent survey + research pass: capability map of AgentShield\nand ECC Pro, triage of every open PR/issue on both repos, and web research on\ncompetitors, unbuilt ideas, and dev-tool demand. 17 items across 4 themes\n(now/ne\n[…]\ns2001 <jiaxinleifm@outlook.com>\nCo-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>\nCo-authored-by: Boube <109886533+Cb2i@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs: MRR-biased ECC Pro + AgentShield security roadmap (#2321)",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-07-04T03:35:58Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "914a58a7168f747463c4880c06f029bf8476cb69",
          "body": "…and (#2400)\n\n* feat(workflows): re-land orch-review workflow + add /orch-review command\n\nRe-lands #2363 (reverted by #2393 to unbreak main's lint) and fixes the\nroot cause so it stays green:\n\n- Restore workflows/orch-review.workflow.js + workflows/README.md.\n- eslint.config.js: ignore 'workflows/**\n[…]\ntion[bot]@users.noreply.github.com>\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Boube <109886533+Cb2i@users.noreply.github.com>\nCo-authored-by: Affaan Mustafa <me@affaanmustafa.com>",
          "is_bot": false,
          "headline": "feat(workflows): re-land orch-review workflow + add /orch-review comm…",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-07-04T03:26:40Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "1a747097f223034bf4959926054511795923ad0c",
          "body": "…issing .gitattributes) (#2437)\n\n* fix: add .gitattributes to force LF line endings for text files\n\nnpm run command-registry:check (part of npm test) fails on a fresh clone\non Windows with the common core.autocrlf=true setting: git checks out\ndocs/COMMAND-REGISTRY.json with CRLF, but generate-comman\n[…]\n repo, inconsistent with the rest of the\ncodebase. Renormalized via 'git add --renormalize .' now that\n.gitattributes enforces eol=lf.\n\n---------\n\nCo-authored-by: Affaan Mustafa <me@affaanmustafa.com>",
          "is_bot": false,
          "headline": "fix: docs/COMMAND-REGISTRY.json check fails on fresh Windows clone (m…",
          "author_name": "Boube",
          "author_login": "Cb2i",
          "committed_at": "2026-07-04T03:14:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3af4676e99efa05f40694499e26dbc354eab8b47",
          "body": "…veEccRoot() (#2368) (#2410)\n\n* fix(ci): resync lockfiles with package.json (eslint 10) + migrate yarn.lock to Yarn 4 format\n\npackage.json requires eslint@^10.6.0 but the committed locks pinned 9.39.2, so\nnpm ci aborted and Yarn 4 hardened mode rejected the stale v1-classic yarn.lock\n(YN0028). Regen\n[…]\n2+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "refactor: consolidate duplicated hook-root resolver into shared resol…",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-04T03:01:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6fac227f7acb16bd69c3221b42f050c889435c77",
          "body": "…refix (#2316) (#2409)\n\n* fix(plan-orchestrate): detect ecc@ecc marketplace + emit ecc: agent prefix (#2316)\n\nCo-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>\n\n* fix(ci): resync lockfiles with package.json (eslint 10) + migrate yarn.lock to Yarn 4 format\n\npacka\n[…]\n2+devin-ai-integration[bot]@users.noreply.github.com>\n\n---------\n\nCo-authored-by: affaan <affaan@itomarkets.com>\nCo-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "fix(plan-orchestrate): detect ecc@ecc marketplace + emit ecc: agent p…",
          "author_name": "devin-ai-integration[bot]",
          "author_login": "devin-ai-integration[bot]",
          "committed_at": "2026-07-04T03:00:51Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "81af40761939056ab3dc54732fd4f562a27309d0",
          "body": "* chore(catalog): sync manifests after skill batch (#2275 #2377 #2378 #2381)\n\nUpdate skill counts (273 -> 277) across catalog docs after the verified skill batch.\n\n* fix(skills): replace emoji with ASCII in growth-log + loop-design-check\n\ncheck-unicode-safety (pre-push gate) bans emoji in SKILL.md; the merged #2377\nand #2381 slipped through run-all.js. Swap U+274C/U+2705 for 'Avoid:'/'Bad:'/'Good:'.",
          "is_bot": false,
          "headline": "chore(catalog): sync manifests + fix skill emoji (wave 2) (#2395)",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-30T02:44:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bd2b2cdfbf234a1cf91a2b36b1e4fbe97a76869",
          "body": "…t loops) (#2381)",
          "is_bot": false,
          "headline": "feat: add loop-design-check skill (design + review goal-oriented agen…",
          "author_name": "Seekers2001",
          "author_login": "Seekers2001",
          "committed_at": "2026-06-30T02:22:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51bced9a1fb23606e5d68ef28181e266055048f6",
          "body": "…, assumptions, stale logs, disk space (delivery-gate) (#2378)\n\n* Restore delivery-gate: Stop hook with learning capture enforcement (auto-closed by fork sync, now on clean branch)\n\n* Fix bot findings: log level→INFO (DISK_REMIND dead code), count_edits full transcript (not truncated), memory-dir-ab\n[…]\nn, self-audit pairing\n\n* fix(delivery-gate): expand rationalization regex coverage (R3/R4) — match \"we can fix\" and \"integration tests\" variants\n\n* chore: bump version to 1.1.1 to re-trigger CI checks",
          "is_bot": false,
          "headline": "Stop hook: verify thinking quality at session end — task completeness…",
          "author_name": "YuhaoLin2005",
          "author_login": "YuhaoLin2005",
          "committed_at": "2026-06-30T02:22:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b5806b3d1c351a1b53eb44dc718cbcaac7ada006",
          "body": "* Add growth-log skill: methodology for writing effective, transferable growth log entries\n\n* Add metadata.origin: ECC frontmatter per repo convention (Greptile feedback)\n\n* Re-sign: apply GPG-verified commit to growth-log branch (rebase artifact, content unchanged)\n\n* docs(growth-log): v1.1.0 — remove personal library structure, generic storage, delivery-gate optional companion",
          "is_bot": false,
          "headline": "Add growth-log skill: methodology for effective learning capture (#2377)",
          "author_name": "YuhaoLin2005",
          "author_login": "YuhaoLin2005",
          "committed_at": "2026-06-30T02:22:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a141db3ad2c52190271b7784c291f03be6bf6f76",
          "body": "…ve-patterns skill (#2275)\n\n* feat(rules,skills): add React Native / Expo rules pack and react-native-patterns skill\n\n* fix(rules,skills): address review feedback — safeParse nav example, drop deprecated sentry-expo, memoize list renderItem, clarify New Architecture SDK support\n\n* fix(rules,skills): drop deprecated Flipper, surface permission-denied state in location hook",
          "is_bot": false,
          "headline": "feat(rules,skills): add React Native / Expo rules pack and react-nati…",
          "author_name": "Yeris Rifan",
          "author_login": "yerros",
          "committed_at": "2026-06-30T02:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c2bcc4ec2f783c59a62a590d571e88aa23904c72",
          "body": "…C_OBSERVER_MODEL (#2390)\n\n* feat(continuous-learning-v2): make observer model configurable via ECC_OBSERVER_MODEL\n\nThe observer hardcoded `--model haiku`. Parameterize as \"${ECC_OBSERVER_MODEL:-haiku}\": the haiku default is preserved (no behavior change for existing users), but users can opt into a\n[…]\nse ECC_OBSERVER_TIMEOUT_SECONDS for slower models (e.g. opus) so the 120s watchdog doesn't kill analysis mid-run.\n- Fix now-stale 'Haiku session' comment -> 'observer session' (model is configurable).",
          "is_bot": false,
          "headline": "feat(continuous-learning-v2): make observer model configurable via EC…",
          "author_name": "jack-finance-able",
          "author_login": "jack-finance-able",
          "committed_at": "2026-06-30T01:43:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f720885cea7aba6afc033b72a2becde48d1d819e",
          "body": "…erver-loop (#2386)\n\nanalyze_observations moved observations.jsonl into observations.archive/\nunconditionally, even when the Claude analysis failed (timeout, non-zero\nexit, rate limit). Because the analyzer only reads the live file, a failed\nbatch was archived and never re-analyzed, silently droppin\n[…]\non and sourcing, and add a source-guard so observer-loop.sh can\nbe sourced without starting the loop. Add a regression test covering both\nthe failure (retain) and success (archive) paths.\n\nFixes #2370",
          "is_bot": false,
          "headline": "fix(clv2): archive observations only after successful analysis in obs…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-30T01:43:37Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a36148fff97293c8cecc142ddda71e56fa072c76",
          "body": "…e dry-run, normalize-url (#2374)\n\n* test(clv2): cover instinct-cli prune, projects ops, promote dry-run, normalize-url\n\nAdd pytest coverage for previously-untested functions in\nskills/continuous-learning-v2/scripts/instinct-cli.py:\n\n- _normalize_remote_url: scp/https/file forms, credential + .git\n \n[…]\nmutating dry-run regression\n  would still pass.\n- cmd_prune quiet test now asserts stderr is empty too, not just stdout.\n\n* test(clv2): cover merge missing-destination and prune empty-pending branches",
          "is_bot": false,
          "headline": "test(clv2): add coverage for instinct-cli prune, projects ops, promot…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-30T01:43:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6d12ec21e39b45d3b463febac97441279f8c6d7",
          "body": "* fix(clv2): surface SIGALRM timeout drops in observe.sh\n\nThe inline-Python observation writers in observe.sh arm a signal.SIGALRM\nalarm (8s) so they self-terminate before the async hook's 10s timeout can\norphan them (#2278). The handler _ecc_bail called sys.exit(0) with no\nlogging, so when the alar\n[…]\nntirely unverified yet still look green. Throw instead, matching the\nexisting insaits-security-monitor convention of failing when a required\nPython runtime is absent, and drop the in-test console.log.",
          "is_bot": false,
          "headline": "fix(clv2): surface SIGALRM timeout drops in observe.sh (#2373)",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-30T01:43:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a89b32c2b55a9511aec2c72539aeb7ab35f47c41",
          "body": "…ts (#2372)\n\nobserve.sh bumps the SIGUSR1 throttle counter in\n${PROJECT_DIR}/.observer-signal-counter with an unlocked read-modify-write.\nThe hook runs on every tool call, so concurrent invocations read the same\nvalue, both increment, and lose a write, signaling the observer at\nunpredictable interva\n[…]\nflock; at most one dropped on\nthe best-effort mkdir fallback), the runner rejects on any hook execution\nfailure or hang, plus content guards for the lock and the corrupt-counter\nhandling.\n\nFixes #2296",
          "is_bot": false,
          "headline": "fix(clv2): serialize observer signal-counter to stop dropped incremen…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-30T01:43:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f12b106c3ca692220a86da74ec898ba86cd90be2",
          "body": "…t (#2369)\n\n* fix(clv2): align Python _update_registry schema with shell counterpart\n\nThe Python `_update_registry` in instinct-cli.py wrote registry entries\nwithout the `id` and `created_at` fields, while the shell counterpart in\ndetect-project.sh writes both. A projects.json entry could therefore \n[…]\nling already in place.\n\nResolves the remaining CodeRabbit finding on #2299.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n\n---------\n\nCo-authored-by: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(clv2): align Python _update_registry schema with shell counterpar…",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-30T01:43:19Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "be91f21837cc5f504c12ecc60a66006adc96730f",
          "body": "…2274 #2338 #2336 #2347 #2348) (#2394)\n\nRegenerate catalog doc counts + command registry after merging the verified\nskill/agent batch. Local full suite was green (2924/2924) with these applied.",
          "is_bot": false,
          "headline": "chore(catalog): sync manifests after skill batch (#2319 #2288 #2273 #…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-30T01:39:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c3a989ea6055ebcad6cd460f5de85897315f148",
          "body": "…rn-eval (#2348)\n\nskill-create: drop the \"Example Output\" section (53 lines) — it re-rendered\nthe same skeleton already defined by the Step 3 output template, just with\nfilled-in `my-app` values.\n\nlearn-eval: drop the \"Next Action\" column from the 5b verdict table — it\nduplicated Step 6's \"Verdict-specific confirmation flow\". The table now\ncarries Verdict + Meaning, and a pointer to Step 6 as the single source for\neach verdict's action.\n\nNo behavior, frontmatter, or design-rationale changes.",
          "is_bot": false,
          "headline": "refactor(commands): remove duplicated content in skill-create and lea…",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-06-30T01:38:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7976e6faf24640fe660c8137ec9ff4fc8625b3d5",
          "body": "… (#2347)\n\n* feat(skills): make tdd-workflow test-runner aware (npm/pnpm/yarn/bun)\n\nAdd \"Step 0: Detect the Test Runner\" so the RED/GREEN cycle no longer\nhardcodes `npm test`. Distinguishes the package manager from the test\nrunner (a project can install with Bun yet run Jest/Vitest), adds a runner\nc\n[…]\n/\nyarn lint / bun run lint) and change the Pre-Commit Hook example to\n`<test> && <lint>`. Applied to both the canonical and Codex-subset copies.\n\n* chore: re-trigger CI (flaky windows/node20 npm cell)",
          "is_bot": false,
          "headline": "feat(skills): make tdd-workflow test-runner aware (npm/pnpm/yarn/bun)…",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-06-30T01:38:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3a46c82b0c074d8c872be26b8141708c2771ab87",
          "body": "…mpatibility (#2336)\n\n* docs(skills): update Prisma and Zod API patterns for cross-version compatibility\n\n- skills/prisma-patterns: show both adapter-based and direct PrismaClient\n  initialization side-by-side; update import paths with conditional notes;\n  rewrite version header to be release-agnost\n[…]\nce would cause compile-time failures on all\nversions. '@prisma/client' remains the correct import source for the\ngenerated PrismaClient and Prisma namespace types.\n\nFound by Greptile during PR review.",
          "is_bot": false,
          "headline": "docs(skills): update Prisma and Zod API patterns for cross-version co…",
          "author_name": "weizhiyuan",
          "author_login": "m18897829375",
          "committed_at": "2026-06-30T01:38:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8c75abf02e6860c3c40d6d4a1161f62a01867cf6",
          "body": "…urity (#2338)\n\n* feat(skills): harden the file upload validation section in django-security\n\n* Update skills/django-security/SKILL.md\n\nCo-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>\n\n* add missing stuff to second code block\n\n* add import to the top of the code block\n\n---------\n\nCo-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(skills): harden the file upload validation section in django-sec…",
          "author_name": "jvirgovic",
          "author_login": "jvirgovic",
          "committed_at": "2026-06-30T01:38:27Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ec4925135c19f1ffb80849c3b8780222dd23ce27",
          "body": "…KILL.md copies (#2274)\n\nb3268fef (#2272) made the write-gate \"confirm no existing file\" item\ntool-agnostic in the JS hook, but the rest of the checklist surface still\nnames Glob/Grep. On hosts without those tools the agent still hits a dead\ntool call on:\n- the edit-gate \"list importers\" item in the\n[…]\n268fef introduced — \"(search the tree — Glob/Grep,\nor find/grep via Bash)\" — to those five remaining spots so the whole gate is\nconsistent. Prose-only; no logic change.\n\nFollow-up to #2272 / b3268fef.",
          "is_bot": false,
          "headline": "fix(gateguard): finish tool-agnostic checklist across edit gate and S…",
          "author_name": "Jun",
          "author_login": "mc856",
          "committed_at": "2026-06-30T01:38:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d178db82a2211f9a0f61e016e144a4fe695f7ffa",
          "body": "…-not-found (#2273)\n\nThe code-tour skill mentioned the CodeTour 'ref' field only in an example,\nwith no explanation of its behavior. CodeTour resolves each step's file\ncontent from the git revision named by 'ref' (not the working tree) whenever\nref differs from HEAD, so any file that does not exist \n[…]\nection explaining the resolution behavior and the\nrule that PR tours must pin ref to the branch head (never the base), plus a\nvalidation step to confirm every referenced file exists at the chosen ref.",
          "is_bot": false,
          "headline": "docs(code-tour): document ref-field semantics to prevent PR-tour file…",
          "author_name": "Carlos Carvallo",
          "author_login": "carloscarvallo",
          "committed_at": "2026-06-30T01:38:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "237b0b90088fc6191934f70b1e0f803ce6a86cb6",
          "body": "Adds a new Tool Integration skill (mailtrap-email-integration) covering transactional email sending patterns: sandbox vs. production separation, API authentication, and domain verification. Focused on patterns that generalize beyond one vendor, per the repo's Skill Adaptation Policy.",
          "is_bot": false,
          "headline": "feat(skills): add mailtrap-email-integration skill (#2288)",
          "author_name": "Awa Dieudonne",
          "author_login": "dieudonneAwa",
          "committed_at": "2026-06-30T01:38:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61c103d583dc88b838c82dea35d10de4071437ac",
          "body": "* feat: add ecc-recipes skill\n\nMaps a described workflow to the right ECC command-group with run-order\nand stop condition, and browses command-group recipe families. Fills the\ngap between ecc-guide (flat catalog) and prompt-optimizer (single-prompt\nmatch) by adding family grouping, run-order, and st\n[…]\nsion to top-level (repo convention)\n- guard unset CMD_DIR before globbing; use find instead of ls\n- show burn-warning explicitly in output template\n\n* feat(ecc-recipes): add argument-hint for slash UI",
          "is_bot": false,
          "headline": "feat: add ecc-recipes skill (#2319)",
          "author_name": "KyawZinLatt",
          "author_login": "KyawZinLatt",
          "committed_at": "2026-06-30T01:38:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0cf17cc1b0c501361964243c375e807a5b9fdb57",
          "body": "…2393)\n\n* fix(ci): track actions/checkout v7 SHA in supply-chain workflow test\n\nDependabot #2328 bumped actions/checkout v6->v7, changing the pinned SHA in\nsupply-chain-watch.yml; update the test's expected SHA to match.\n\n* Revert \"feat(workflows): add orch-review native Workflow pilot (#2363)\"\n\nThis reverts commit 1031d312ccd16925c903174293b4cec4ecba1001.",
          "is_bot": false,
          "headline": "fix(ci): unbreak main after dependabot batch (checkout SHA + lint) (#…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-30T01:31:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2159ed2fdee361bfa5e8caac6dcd76f042f930c8",
          "body": "Bumps [eslint](https://github.com/eslint/eslint) from 9.39.2 to 10.6.0.\n- [Release notes](https://github.com/eslint/eslint/releases)\n- [Commits](https://github.com/eslint/eslint/compare/v9.39.2...v10.6.0)\n\n---\nupdated-dependencies:\n- dependency-name: eslint\n  dependency-version: 10.5.0\n  dependency-\n[…]\nrect:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): bump eslint from 9.39.2 to 10.6.0 (#2260)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:56:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6d36d1e93368efae68cfb5ca204cae6ec92e9e49",
          "body": "…with 3 updates (#2387)\n\nBumps the cargo-minor-and-patch group with 3 updates in the /ecc2 directory: [ratatui](https://github.com/ratatui/ratatui), [anyhow](https://github.com/dtolnay/anyhow) and [uuid](https://github.com/uuid-rs/uuid).\n\n\nUpdates `ratatui` from 0.30.1 to 0.30.2\n- [Release notes](ht\n[…]\ndate:semver-patch\n  dependency-group: cargo-minor-and-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the cargo-minor-and-patch group across 1 directory …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:56:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ad08352f60c8e5350791a720b88ca0f0917661aa",
          "body": "…y with 3 updates (#2325)\n\nBumps the actions-minor-and-patch group with 3 updates in the / directory: [actions/setup-node](https://github.com/actions/setup-node), [pnpm/action-setup](https://github.com/pnpm/action-setup) and [softprops/action-gh-release](https://github.com/softprops/action-gh-releas\n[…]\nte:semver-patch\n  dependency-group: actions-minor-and-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump the actions-minor-and-patch group across 1 director…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:56:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "723399fbf38147ee694f9098428369db623e2fed",
          "body": "…(#2332)\n\nUpdates the requirements on [pytest-cov](https://github.com/pytest-dev/pytest-cov) to permit the latest version.\n- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.1.0...v7.1.0)\n\n---\nupdated-depe\n[…]\nndency-version: 7.1.0\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update pytest-cov requirement from >=4.1 to >=7.1.0 …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:56:02Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "61fd5b2032e9a3665b037eab802c3c4ff84615ee",
          "body": "Updates the requirements on [mypy](https://github.com/python/mypy) to permit the latest version.\n- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)\n- [Commits](https://github.com/python/mypy/compare/v1.10.0...v2.1.0)\n\n---\nupdated-dependencies:\n- dependency-name: mypy\n  dependency-version: 2.1.0\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update mypy requirement from >=1.10 to >=2.1.0 (#2326)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f54c0b242ff4bcb7a282817630b057324976d14a",
          "body": "Updates the requirements on [pytest](https://github.com/pytest-dev/pytest) to permit the latest version.\n- [Release notes](https://github.com/pytest-dev/pytest/releases)\n- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)\n- [Commits](https://github.com/pytest-dev/pytest/compa\n[…]\nndency-version: 9.1.1\n  dependency-type: direct:development\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps-dev): update pytest requirement from >=8.0 to >=9.1.1 (#2324)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:54Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "333e3bb017e36e1fc1959172580b99d92877ab2b",
          "body": "Bumps [cron](https://github.com/zslayton/cron) from 0.16.0 to 0.17.0.\n- [Release notes](https://github.com/zslayton/cron/releases)\n- [Commits](https://github.com/zslayton/cron/commits)\n\n---\nupdated-dependencies:\n- dependency-name: cron\n  dependency-version: 0.17.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump cron from 0.16.0 to 0.17.0 in /ecc2 (#2333)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "891412c1260030abfed5afa14bda1beb11650f43",
          "body": "…ows/generator_generic_slsa3.yml (#2330)\n\nBumps [slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml](https://github.com/slsa-framework/slsa-github-generator) from 1.4.0 to 2.1.0.\n- [Release notes](https://github.com/slsa-framework/slsa-github-generator/releases)\n- [Ch\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump slsa-framework/slsa-github-generator/.github/workfl…",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e676d1da7fb576be34b9db1b49ea5269e50f3501",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.3 to 7.0.0.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Commits](https://github.com/actions/checkout/compare/v6.0.3...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version:\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 (#2328)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1ba1640bf7c36d5baf11b7676004d332c00c48be",
          "body": "…(#2329)\n\nUpdates the requirements on [anthropic](https://github.com/anthropics/anthropic-sdk-python) to permit the latest version.\n- [Release notes](https://github.com/anthropics/anthropic-sdk-python/releases)\n- [Changelog](https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md)\n\n[…]\ndency-version: 0.111.0\n  dependency-type: direct:production\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "chore(deps): update anthropic requirement from >=0.25.0 to >=0.111.0 …",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-29T22:55:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c2950121c9dd8ced1f920f0cbb340017fd6830a7",
          "body": "Replace mechanical text extraction in session-end.js and pre-compact.js\nwith LLM-generated summaries using `claude -p`. Summaries now capture\ndesign decisions, resolved bugs, changed files, and carry-over context\nrather than just truncated user message snippets.\n\n- Add scripts/lib/llm-summary.js: ge\n[…]\nisation.\nRequires no ANTHROPIC_API_KEY — reuses Claude Code's own authentication.\n\nCo-authored-by: Hiroshi Tanaka <hiroshi_tanaka@MBAM3.local>\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(session): LLM-powered session summary via claude -p (#2388)",
          "author_name": "Hiroshi Tanaka",
          "author_login": "Tanaka-VivereGratis",
          "committed_at": "2026-06-29T22:55:01Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "64797fd895c608b9c1f47f9b27b9e00b0aa6ecbf",
          "body": "…ccumulation (#2346)\n\n* fix(windows): prefer PowerShell over bash to prevent zombie process accumulation\n\nOn Windows, ECC hook scripts were spawning bash.exe (MSYS2/Git Bash) on\nevery tool use via findShellBinary(). These processes were not reaped by\nWindows, causing 40+ zombie bash.exe/conhost.exe \n[…]\nexercised rather than hitting shell-unavailable early exit\n\n* test: add timeout to spawnSync probes in Windows test skip guards\n\n---------\n\nCo-authored-by: Christopher J Diamond <diamondcj@leidos.com>",
          "is_bot": false,
          "headline": "fix(windows): prefer PowerShell over bash to prevent zombie process a…",
          "author_name": "ChrisD",
          "author_login": "cd1amond",
          "committed_at": "2026-06-29T22:54:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "88f6894267153f15783212e4643d0dff85fa7f23",
          "body": "…n (#2358)\n\n* fix(hooks): guard doc-file-warning stdin listeners behind require.main\n\ndoc-file-warning.js registered process.stdin data/end listeners at module\nscope while also exporting run(). run-with-flags.js require()s any hook that\nexports run() for its in-process fast path, so importing this h\n[…]\nhim still warns\n\n* docs(hooks): add JSDoc for doc-file-warning main() entrypoint\n\nSatisfies the docstring-coverage pre-merge check; documents the stdin\nentrypoint and why it must not run on require().",
          "is_bot": false,
          "headline": "fix(hooks): guard doc-file-warning stdin listeners behind require.mai…",
          "author_name": "SSH._.WORLD",
          "author_login": "sshworld",
          "committed_at": "2026-06-29T22:54:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b1d5d6366d932bf2f35cfc2e182b3d4d65ebbcb0",
          "body": "…l (#2343)\n\nOn Windows, when a bare-name MCP server command (e.g. codesys-mcp-sp21-plus)\nfalls back to the .cmd candidate, the probe sets shell:true to work around\nNode 18.20+ CVE-2024-27980. However, passing an args array alongside\nshell:true causes Node to concatenate the tokens without quoting (D\n[…]\nith a space-containing path arg, and\nasserts the probe succeeds and the arg was not split at the space boundary.\n\nCo-authored-by: Karstein Phobic Nyvold Kvistad <karstein.kvistad@maritimerobotics.com>",
          "is_bot": false,
          "headline": "fix(hooks): quote args when probing Windows .cmd MCP servers via shel…",
          "author_name": "phobicdotno",
          "author_login": "phobicdotno",
          "committed_at": "2026-06-29T22:54:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "acd078f59e0b81f88e5b69ab0554057c746faa1d",
          "body": "- resolve-formatter: stop findProjectRoot walk before os.homedir() to\n  avoid mistaking global dotfiles (e.g. ~/.prettierrc) for a project root\n- instinct-cli-projects: detect python3/python binary at runtime; skip\n  gracefully when Python 3 is unavailable instead of crashing with null status\n- command-registry: regenerate COMMAND-REGISTRY.json (was stale)\n\nCo-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(tests): resolve 10 failing tests on Windows (#2307)",
          "author_name": "Tahiti18",
          "author_login": "Tahiti18",
          "committed_at": "2026-06-29T22:54:49Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "00b443eddb7ab9c752691d3bd6e1e41b74a697e8",
          "body": "Co-authored-by: jan <jan@w-saxs001.local>",
          "is_bot": false,
          "headline": "ci: isolate OMP workflow verification (#2382)",
          "author_name": "Yang Cheng",
          "author_login": "SiaoZeng",
          "committed_at": "2026-06-29T22:51:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73895b5d059e3e68cca0e1ca7aba451d54bac5e5",
          "body": "Co-authored-by: jan <jan@w-saxs001.local>",
          "is_bot": false,
          "headline": "fix(release): derive video suite paths from version (#2384)",
          "author_name": "Yang Cheng",
          "author_login": "SiaoZeng",
          "committed_at": "2026-06-29T22:50:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9896644dabc38771d80207905c6a311ab37e3cc2",
          "body": "Co-authored-by: jan <jan@w-saxs001.local>",
          "is_bot": false,
          "headline": "fix(release): derive approval gate paths from version (#2383)",
          "author_name": "Yang Cheng",
          "author_login": "SiaoZeng",
          "committed_at": "2026-06-29T22:50:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8973d0f6c53c0eb522a1f9007847e6706d15ed58",
          "body": "Replace invalid default model IDs (e.g. claude-sonnet-4-7) with current\nclaude-sonnet-4-6, claude-opus-4-8, and claude-haiku-4-5. Route system\nmessages to the API system field, enable ephemeral prompt caching, omit\ntemperature for Opus 4.7/4.8, and surface cache usage metrics. Update the\nCLI model picker to match.\n\nCo-authored-by: Vladimir Đuranović <vlada@MacBook-Pro.local>\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "fix(llm): align Claude provider with current Anthropic API (#2133)",
          "author_name": "quadcent",
          "author_login": "quadcent",
          "committed_at": "2026-06-29T22:50:52Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "85dfb07576bb3299aff838403f04809e8bf03162",
          "body": "…bserver.md with minor drift (#2366)\n\n#2306\n\nCo-authored-by: angadsingh7666 <angdsingh7666@gmail.com>",
          "is_bot": false,
          "headline": "Fix for docs: Scope Decision Guide table duplicated in SKILL.md and o…",
          "author_name": "Angad Singh Thind",
          "author_login": "Angad2005",
          "committed_at": "2026-06-29T22:50:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "909ae2f67e4edaed4ba457dcc0f3b891566a07b4",
          "body": "* Add memxus configuration to mcp-servers.json\n\nAdded configuration for Memxus service with API key placeholder and description.\n\n* Revise description in mcp-servers.json\n\nUpdated the description to include a note about reviewing stored memories to prevent prompt-injection.\n\n* Update description in mcp-servers.json\n\nUpdate description in mcp-servers.json",
          "is_bot": false,
          "headline": "Add memxus configuration to mcp-servers.json (#2355)",
          "author_name": "Gabriel Pitrella",
          "author_login": "gpitrella",
          "committed_at": "2026-06-29T22:50:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d65d3e0880a12f99a7b2b2fb018b320f6a0dd9fd",
          "body": null,
          "is_bot": false,
          "headline": "Update yarn.lock (#2342)",
          "author_name": "Daniel Nguyen",
          "author_login": "danielnguyenfinhub",
          "committed_at": "2026-06-29T22:50:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1031d312ccd16925c903174293b4cec4ecba1001",
          "body": "* feat(workflows): add orch-review native Workflow pilot\n\nPort orch-pipeline Phase 5 (Review) to a native Claude Code Workflow\nscript. The gated outer loop stays in the main conversation; this script\nowns only the autonomous review+verify segment between the two human\ngates:\n\n1. Review — reviewers f\n[…]\ns.error labels\n\nCodeRabbit (trivial): the public contract implied callers get\nhuman-readable error text, but the implementation returns only bounded\nlabels. Enumerate them in the README returns block.",
          "is_bot": false,
          "headline": "feat(workflows): add orch-review native Workflow pilot (#2363)",
          "author_name": "JongHyeok Park",
          "author_login": "pythonstrup",
          "committed_at": "2026-06-29T22:50:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2bc924faf2f8e893bfe0af86b1931283693c30ae",
          "body": "… (#2323)\n\nTwo security-priority fixes in continuous-learning-v2/scripts/instinct-cli.py:\n\n- #2294: _write_registry wrote projects.json without the advisory lock that\n  _update_registry holds, so concurrent 'projects delete/gc/merge' could race an\n  observe-time update and corrupt the registry. Extr\n[…]\npytest regression tests (atomic write under lock, contained delete,\nmissing-dir no-op, traversal refused, root refused). Node integration suite\n(tests/scripts/instinct-cli-projects.test.js) green 9/9.",
          "is_bot": false,
          "headline": "fix(clv2): harden registry writes and project deletion (#2294, #2297)…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-25T23:47:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e3f467989a2c446cd8d0137893215e1249689c77",
          "body": "* fix(clv2): escape $HOME before pgrep -f in migrate-homunculus.sh\n\npgrep -f treats its argument as an extended regular expression, but the\nrunning-observer guard interpolated $HOME unescaped. Paths containing regex\nmetacharacters (e.g. /home/user.name, /home/c++dev, /home/user (work)) made the\nmatc\n[…]\nunners. Guard with the same process.platform === 'win32' early\nexit used by tests/hooks/observe-subdirectory-detection.test.js so the\nbash-dependent assertions only run on POSIX platforms.\n\nRefs #2301",
          "is_bot": false,
          "headline": "fix(clv2): escape $HOME before pgrep -f in migrate-homunculus.sh (#2339)",
          "author_name": "Gaurav Dubey",
          "author_login": "gaurav0107",
          "committed_at": "2026-06-25T23:47:32Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e8244d9ced25e150659f8685293804c65200e449",
          "body": "… (#2320)\n\nAdds the Layer 4 observability view to the control pane: a self-contained,\ndependency-free 3D point-cloud of the agent airspace (positions from the\nproximity embedding, sized by working set, colored by collision risk, links\nfor converging pairs) plus an XSS-safe advisory panel that polls \n[…]\n (canvas projection, no external JS)\n- server.js: GET /proximity (page) + GET /api/proximity (snapshot.proximity feed)\n- test: asserts both routes serve and the feed carries positions/links/advisories",
          "is_bot": false,
          "headline": "feat(control-pane): serve 3D agent-airspace viz + /api/proximity feed…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-25T23:45:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "71d22d0a77b7e0684f4e51cba03749b788993cdb",
          "body": "Finishes the steer/transmit loop — advisories now reach the agents' sessions.\n\n- message-sink.js: createEccMessageSink() delivers via the canonical writer\n  'ecc-tui messages send' (maps steer/hold -> conflict kind, transmit -> query),\n  resolving the binary from override/env/built target/PATH. Inje\n[…]\ns are internal ECC agent-to-agent coordination, not any external channel.\n- 14 new tests (sink argv/kind mapping, cooldown dedup, tick dispatch/dry-run,\n  CLI parse). Full suite 2891/2891; lint green.",
          "is_bot": false,
          "headline": "feat(layer4): live messages-table wiring for proximity triggers",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-21T00:49:17Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bd1be0c1ce38ed3dda065c3a21574b58445c54f9",
          "body": "- Line precision: parse git diff --unified=0 into per-file changed line ranges\n  (defaultWorkingSetFor), so two agents in the SAME file but DIFFERENT functions\n  no longer false-collide. Overlap channel now uses the overlap coefficient\n  (|A∩B|/min(|A|,|B|)) — high when one edit sits inside the othe\n[…]\ns\n  them through an injectable sink (the ECC messages table), best-effort.\n- 12 new tests (line-range disjoint vs overlapping, parseDiffRanges, triggers,\n  dispatch). Full suite 2881/2881; lint green.",
          "is_bot": false,
          "headline": "feat(layer4): line-range channel + trigger firing",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-20T21:30:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e2b8a51cea2228e515e1c3653effbeb62a2800fa",
          "body": "… up top\n\nAdds a clean badge row right under the hero linking the official destinations,\nled by a live Discord member-count badge (server widget enabled) to drive the\ncommunity from a few hundred toward a few thousand. Gives the official ECC links\nthe icons the readme was missing.",
          "is_bot": false,
          "headline": "docs(readme): add official-channel icons (Discord/Website/App/Guides)…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-20T21:20:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7df803935ac8f63adfd158d99e7adf548fa80103",
          "body": "…ive)\n\nTurns live sessions into the airspace scan: each worktree session's git diff\nbecomes its working set, the dependency graph is built over the touched files,\nand scanAirspace() produces the TCAS advisories + 3D positions.\n\n- scripts/lib/control-pane/proximity.js: sessionsToAgents() + buildProxi\n[…]\nays fast (git diffs only run when requested).\n- 4 integration tests (same-file editors -> resolution, later agent steers,\n  <2 participants -> no advisories, labels). Full suite 2873/2873; lint green.",
          "is_bot": false,
          "headline": "feat(control-pane): wire agent-proximity into the snapshot (opt-in, l…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-20T19:46:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "726972d73557a2870abe8d136c0d5ac6a6b58ae0",
          "body": "…dance (v0)\n\nThe moat layer: spatial deconfliction for multiple agents (and humans) on one\ncodebase, modeled on aircraft TCAS — measure how close two agents are in\ncode-space, then transmit-intent (Traffic Advisory) and steer-away (Resolution\nAdvisory) before they collide at the git layer.\n\nscripts/\n[…]\notocol + viz\n+ roadmap (v1 call-graph/symbol channels + live session-diff wiring; v2 cross-\nmachine airspace over Tailscale, the zero-conflict-swarm demo).\n\n17 tests; full suite 2869/2869; lint green.",
          "is_bot": false,
          "headline": "feat(layer4): agent-space distance metric + TCAS-style collision avoi…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-20T19:40:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "34faa39bd3cd496a0aece0245f2b7e38b7923abc",
          "body": "…Y.md",
          "is_bot": false,
          "headline": "docs(security): use the monitored affaan@ecc.tools contact in SECURIT…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-19T02:16:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e8e5793bdf1f07d95860e731cdd3633ee3cdec0a",
          "body": "- coverage: branch threshold 80 -> 79 (current is 79.52%; lines/functions/\n  statements remain 88/94/88). The 80% branch gate has been red on every main\n  run; this unblocks CI while keeping a meaningful floor just below current.\n- SECURITY.md: remove the bouncing security@ecc.tools mailbox (flagged by an\n  advisory reporter as undeliverable) and direct all reports to GitHub private\n  vulnerability reporting, the only monitored channel.",
          "is_bot": false,
          "headline": "fix(ci+security): unblock coverage gate + fix dead security contact",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-19T00:46:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed251f958ab24682d3af9e8edbe5357065086655",
          "body": "…ange)",
          "is_bot": false,
          "headline": "style: apply repo formatter to the security-fix files (no behavior ch…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-19T00:03:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd9083ca1e9f6d9c243531abef663dd2217553c7",
          "body": "… + claw ReDoS\n\n- gateguard (GHSA-4v57-ph3x-gf55): add a quote-aware detection pass that\n  dequotes command words and splits on UNQUOTED separators incl. newlines, so\n  newline-separated commands, quoted command words ('rm'/\"rm\"), quoted\n  find -exec, and sh/bash -c wrappers are all classified destr\n[…]\nward slashes.\n- claw.js (CodeQL #1 js/polynomial-redos): bound parseTurns input so the lazy\n  [\\s\\S]*? body can't drive O(n^2) scanning on adversarial history files.\n\nFull suite 2852/2852; lint green.",
          "is_bot": false,
          "headline": "fix(security): gateguard classifier bypasses (GHSA-4v57) + Windows CI…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-19T00:02:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5994d3fac158b4c290cb0918004b82e2f155f1c7",
          "body": "…ix (GHSA-hfpv-w6mp-5g95)\n\nCritical: project-local install-state (e.g. a cloned repo's .cursor/ecc-install-state.json)\nis attacker-controllable, and repair/uninstall/auto-update replayed its operations with\ndestinationPath validated only for non-emptiness — confirmed arbitrary file write/delete\nand \n[…]\ndrive auto-update into executing attacker code.\n- 7 containment regression tests. Existing install-lifecycle/repair/uninstall/auto-update\n  suites still green (legit destinations are within the root).",
          "is_bot": false,
          "headline": "fix(security): contain install-state file ops to trusted root — RCE f…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T23:54:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "5e4f5533d73cc2553f393686a0f81fd194f2f45d",
          "body": "…rkdown-it/js-yaml\n\n- ecc-bot.mjs: validate interaction id (snowflake) and token before building the\n  callback fetch URL (clears CodeQL js/request-forgery #239/#240/#241); clamp the\n  remote heartbeat_interval to [1s,10m] (js/resource-exhaustion #242); strip CR/LF\n  from log args (js/log-injection \n[…]\nv deps via overrides/resolutions to patch quadratic-complexity\n  DoS: markdown-it >=14.2.0 (Dependabot #45/#46), js-yaml >=4.2.0 (#42/#43).\n  Both lockfiles regenerated; npm reports 0 vulnerabilities.",
          "is_bot": false,
          "headline": "fix(security): discord bot SSRF/log-injection/DoS hardening + bump ma…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T23:50:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a03d63cba0896a834405ebf4becbf6646b47009e",
          "body": "The interactive claim/move buttons concatenated work-item ids into inline\nonclick JS with only single-quote escaping — a crafted id (ids/titles come from\nGitHub sync and manual upserts, not a strict allowlist) could break out and\ninject script, even on the localhost-only server.\n\nFix: emit the id/la\n[…]\ng arg — never concatenated into code. Adds a\nregression assertion that no inline onclick handlers with interpolated ids\nremain. Flagged by automated security review.\n\nFull suite 2845/2845; lint green.",
          "is_bot": false,
          "headline": "fix(security): close XSS in control-pane board controls",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T22:25:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "607ab02b1f724dddb61e5f183fe02dc42a99c55a",
          "body": "… webapp\n\nThe board was read-only; you can now drive the agent+human JIT workflow from the\nlocal control pane.\n\n- New shared scripts/lib/control-pane/work-item-mutations.js (claimWorkItem,\n  moveWorkItem) so the CLI and server never diverge; work-items.js claim now\n  delegates to it.\n- server.js: ga\n[…]\n15s live auto-refresh (paused when the tab is hidden).\n- Tests: interactive claim/move endpoints, read-only 403, invalid-lane 400, and\n  snapshot reflects mutations.\n\nFull suite 2845/2845; lint green.",
          "is_bot": false,
          "headline": "feat(control-pane): interactive JIT board — claim/move cards from the…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T22:16:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7fd4ba95ae57ea3f29ab06109736208b74f0a54b",
          "body": "Closes the agent+human JIT loop the control-pane board surfaces: the board shows\nthe unassigned (needs-owner) queue; 'claim' lets an agent or human pick up work.\n\n  node scripts/work-items.js claim [<id>] --owner <name> [--as agent|human]\n\n- No id: claims the highest-priority unassigned open item.\n-\n[…]\nagent|human), and moves the card to\n  running so the board reflects that work has started.\n- Refuses done items, requires --owner, validates --as. 5 CLI tests added.\n\nFull suite 2844/2844; lint green.",
          "is_bot": false,
          "headline": "feat(work-items): add 'claim' command for JIT work pickup",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T21:07:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1efc399ab4840b92c431bb62dc859c6b212f60c9",
          "body": "…tems board\n\nThe kanban board tracked lanes (ready/running/blocked/done) but not WHO owns\neach card, which is the missing piece for agent+human just-in-time team workflows.\n\n- state.js: classifyAssignee() labels each work item agent | human | unassigned\n  (session-linked or agent-pattern owners = ag\n[…]\nan]/[unassigned] badge; the board header shows\n  agent/human split and 'N need owner'.\n- Tests: assignment classification + JIT queue coverage in control-pane-state.\n\nFull suite 2839/2839; lint green.",
          "is_bot": false,
          "headline": "feat(control-pane): add agent+human JIT assignment view to the work-i…",
          "author_name": "Affaan Mustafa",
          "author_login": "affaan-m",
          "committed_at": "2026-06-18T20:59:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        }
      ],
      "releases_count": 14,
      "commits_last_year": 2270,
      "latest_release_at": "2026-06-10T01:49:20Z",
      "latest_release_tag": "v2.0.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 27,
      "days_since_latest_release": 41,
      "mean_days_between_releases": 13.8
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "ecc-universal",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "ai",
            "agents",
            "skills",
            "hooks",
            "mcp",
            "rules",
            "harness",
            "agent-harness",
            "tdd",
            "code-review",
            "security",
            "automation",
            "best-practices",
            "cursor",
            "cursor-ide",
            "opencode",
            "codex",
            "presentations",
            "slides"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/ecc-universal",
          "is_deprecated": false,
          "latest_version": "2.0.0",
          "repository_url": "https://github.com/affaan-m/ECC",
          "versions_count": 8,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 15716,
          "first_published_at": "2026-02-11T10:40:29.646000Z",
          "latest_published_at": "2026-06-10T08:16:50.334000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 41
        },
        {
          "name": "llm-abstraction",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Typing :: Typed"
          ],
          "ecosystem": "pypi",
          "matches_repo": false,
          "registry_url": "https://pypi.org/project/llm-abstraction/",
          "is_deprecated": false,
          "latest_version": "0.3.0",
          "repository_url": "https://github.com/evandentremont/llm-abstraction",
          "versions_count": 3,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-06-18T09:41:58.107730Z",
          "latest_published_at": "2026-06-18T09:51:26.048387Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 33
        }
      ]
    },
    "popularity": {
      "forks": 35370,
      "stars": 231806,
      "watchers": 1207,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-04",
            "count": 12
          },
          {
            "date": "2026-07-05",
            "count": 56
          },
          {
            "date": "2026-07-06",
            "count": 60
          },
          {
            "date": "2026-07-07",
            "count": 65
          },
          {
            "date": "2026-07-08",
            "count": 58
          },
          {
            "date": "2026-07-09",
            "count": 78
          },
          {
            "date": "2026-07-10",
            "count": 92
          },
          {
            "date": "2026-07-11",
            "count": 58
          },
          {
            "date": "2026-07-12",
            "count": 42
          },
          {
            "date": "2026-07-13",
            "count": 48
          },
          {
            "date": "2026-07-14",
            "count": 54
          },
          {
            "date": "2026-07-15",
            "count": 63
          },
          {
            "date": "2026-07-16",
            "count": 50
          },
          {
            "date": "2026-07-17",
            "count": 58
          },
          {
            "date": "2026-07-18",
            "count": 46
          },
          {
            "date": "2026-07-19",
            "count": 51
          },
          {
            "date": "2026-07-20",
            "count": 63
          },
          {
            "date": "2026-07-21",
            "count": 46
          }
        ],
        "complete": false,
        "collected": 1000,
        "total_forks": 35370
      },
      "star_history": null,
      "open_issues_and_prs": 111
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        ".opencode/tsconfig.json"
      ],
      "toolchain_manifests": [
        "ecc2/Cargo.toml"
      ],
      "largest_source_bytes": 541173,
      "source_files_sampled": 520,
      "oversized_source_files": 15,
      "agent_instruction_files": [
        ".codex/AGENTS.md",
        ".cursor/rules/common-agents.md",
        ".cursor/rules/common-coding-style.md",
        ".cursor/rules/common-development-workflow.md",
        ".cursor/rules/common-git-workflow.md",
        ".cursor/rules/common-hooks.md",
        ".cursor/rules/common-patterns.md",
        ".cursor/rules/common-performance.md",
        ".cursor/rules/common-security.md",
        ".cursor/rules/common-testing.md",
        ".cursor/rules/golang-coding-style.md",
        ".cursor/rules/golang-hooks.md",
        ".cursor/rules/golang-patterns.md",
        ".cursor/rules/golang-security.md",
        ".cursor/rules/golang-testing.md",
        ".cursor/rules/kotlin-coding-style.md",
        ".cursor/rules/kotlin-hooks.md",
        ".cursor/rules/kotlin-patterns.md",
        ".cursor/rules/kotlin-security.md",
        ".cursor/rules/kotlin-testing.md",
        ".cursor/rules/php-coding-style.md",
        ".cursor/rules/php-hooks.md",
        ".cursor/rules/php-patterns.md",
        ".cursor/rules/php-security.md",
        ".cursor/rules/php-testing.md",
        ".cursor/rules/python-coding-style.md",
        ".cursor/rules/python-hooks.md",
        ".cursor/rules/python-patterns.md",
        ".cursor/rules/python-security.md",
        ".cursor/rules/python-testing.md",
        ".cursor/rules/swift-coding-style.md",
        ".cursor/rules/swift-hooks.md",
        ".cursor/rules/swift-patterns.md",
        ".cursor/rules/swift-security.md",
        ".cursor/rules/swift-testing.md",
        ".cursor/rules/typescript-coding-style.md",
        ".cursor/rules/typescript-hooks.md",
        ".cursor/rules/typescript-patterns.md",
        ".cursor/rules/typescript-security.md",
        ".cursor/rules/typescript-testing.md",
        ".gemini/GEMINI.md",
        ".github/copilot-instructions.md",
        "AGENTS.md",
        "CLAUDE.md",
        "docs/es/AGENTS.md",
        "docs/es/CLAUDE.md",
        "docs/es/examples/CLAUDE.md",
        "docs/es/rules/common/agents.md",
        "docs/ja-JP/AGENTS.md",
        "docs/ja-JP/CLAUDE.md",
        "docs/ja-JP/examples/CLAUDE.md",
        "docs/ja-JP/rules/common/agents.md",
        "docs/ko-KR/examples/CLAUDE.md",
        "docs/ko-KR/rules/agents.md",
        "docs/pt-BR/examples/CLAUDE.md",
        "docs/pt-BR/rules/agents.md",
        "docs/tr/AGENTS.md",
        "docs/tr/CLAUDE.md",
        "docs/tr/examples/CLAUDE.md",
        "docs/tr/rules/common/agents.md",
        "docs/zh-CN/AGENTS.md",
        "docs/zh-CN/CLAUDE.md",
        "docs/zh-CN/examples/CLAUDE.md",
        "docs/zh-CN/rules/common/agents.md",
        "docs/zh-TW/rules/agents.md",
        "examples/CLAUDE.md",
        "rules/common/agents.md"
      ],
      "agent_instruction_max_bytes": 11718
    },
    "dependencies": {
      "manifests": [
        ".opencode/package.json",
        "ecc2/Cargo.toml",
        "package.json",
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 7,
        "assessed_package": "npm:ecc-universal@2.0.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "crates",
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "ratatui",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.30"
        },
        {
          "name": "crossterm",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.29"
        },
        {
          "name": "tokio",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "rusqlite",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.40"
        },
        {
          "name": "git2",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.21"
        },
        {
          "name": "serde",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "serde_json",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "toml",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1.1"
        },
        {
          "name": "regex",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "sha2",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.11"
        },
        {
          "name": "ureq",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "3"
        },
        {
          "name": "clap",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "4"
        },
        {
          "name": "tracing",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.1"
        },
        {
          "name": "tracing-subscriber",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.3"
        },
        {
          "name": "anyhow",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "thiserror",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "2"
        },
        {
          "name": "libc",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.2"
        },
        {
          "name": "chrono",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.4"
        },
        {
          "name": "cron",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "0.17"
        },
        {
          "name": "uuid",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "1"
        },
        {
          "name": "dirs",
          "manifest": "ecc2/Cargo.toml",
          "ecosystem": "crates",
          "version_constraint": "6"
        },
        {
          "name": "@iarna/toml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "2.2.5"
        },
        {
          "name": "ajv",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "8.20.0"
        },
        {
          "name": "sql.js",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.14.1"
        },
        {
          "name": "anthropic",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.111.0"
        },
        {
          "name": "openai",
          "manifest": "pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.30.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "anyhow",
            "direct": true,
            "version": "1.0.103",
            "ecosystem": "crates"
          },
          {
            "name": "chrono",
            "direct": true,
            "version": "0.4.45",
            "ecosystem": "crates"
          },
          {
            "name": "clap",
            "direct": true,
            "version": "4.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "cron",
            "direct": true,
            "version": "0.17.0",
            "ecosystem": "crates"
          },
          {
            "name": "crossterm",
            "direct": true,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "dirs",
            "direct": true,
            "version": "6.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "git2",
            "direct": true,
            "version": "0.21.0",
            "ecosystem": "crates"
          },
          {
            "name": "libc",
            "direct": true,
            "version": "0.2.186",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui",
            "direct": true,
            "version": "0.30.2",
            "ecosystem": "crates"
          },
          {
            "name": "regex",
            "direct": true,
            "version": "1.12.4",
            "ecosystem": "crates"
          },
          {
            "name": "rusqlite",
            "direct": true,
            "version": "0.40.1",
            "ecosystem": "crates"
          },
          {
            "name": "serde",
            "direct": true,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_json",
            "direct": true,
            "version": "1.0.150",
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": true,
            "version": "0.10.9",
            "ecosystem": "crates"
          },
          {
            "name": "sha2",
            "direct": true,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": true,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror",
            "direct": true,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "tokio",
            "direct": true,
            "version": "1.52.3",
            "ecosystem": "crates"
          },
          {
            "name": "toml",
            "direct": true,
            "version": "1.1.2+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "tracing",
            "direct": true,
            "version": "0.1.44",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-subscriber",
            "direct": true,
            "version": "0.3.23",
            "ecosystem": "crates"
          },
          {
            "name": "ureq",
            "direct": true,
            "version": "3.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "uuid",
            "direct": true,
            "version": "1.23.4",
            "ecosystem": "crates"
          },
          {
            "name": "@iarna/toml",
            "direct": true,
            "version": "2.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": true,
            "version": "6.14.0",
            "ecosystem": "npm"
          },
          {
            "name": "ajv",
            "direct": true,
            "version": "8.20.0",
            "ecosystem": "npm"
          },
          {
            "name": "sql.js",
            "direct": true,
            "version": "1.14.1",
            "ecosystem": "npm"
          },
          {
            "name": "anthropic",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "openai",
            "direct": true,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "adler2",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "aho-corasick",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "allocator-api2",
            "direct": false,
            "version": "0.2.21",
            "ecosystem": "crates"
          },
          {
            "name": "android_system_properties",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "anstream",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle",
            "direct": false,
            "version": "1.0.14",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-parse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-query",
            "direct": false,
            "version": "1.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "anstyle-wincon",
            "direct": false,
            "version": "3.0.11",
            "ecosystem": "crates"
          },
          {
            "name": "approx",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "atomic",
            "direct": false,
            "version": "0.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "autocfg",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "base64",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "crates"
          },
          {
            "name": "bit-set",
            "direct": false,
            "version": "0.5.3",
            "ecosystem": "crates"
          },
          {
            "name": "bit-vec",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "bitflags",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "block-buffer",
            "direct": false,
            "version": "0.10.4",
            "ecosystem": "crates"
          },
          {
            "name": "block-buffer",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "bumpalo",
            "direct": false,
            "version": "3.20.2",
            "ecosystem": "crates"
          },
          {
            "name": "by_address",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "bytemuck",
            "direct": false,
            "version": "1.25.0",
            "ecosystem": "crates"
          },
          {
            "name": "bytes",
            "direct": false,
            "version": "1.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "castaway",
            "direct": false,
            "version": "0.2.4",
            "ecosystem": "crates"
          },
          {
            "name": "cc",
            "direct": false,
            "version": "1.2.57",
            "ecosystem": "crates"
          },
          {
            "name": "cfg-if",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "cfg_aliases",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "clap_builder",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "clap_derive",
            "direct": false,
            "version": "4.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "clap_lex",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "colorchoice",
            "direct": false,
            "version": "1.0.5",
            "ecosystem": "crates"
          },
          {
            "name": "compact_str",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "const-oid",
            "direct": false,
            "version": "0.10.2",
            "ecosystem": "crates"
          },
          {
            "name": "convert_case",
            "direct": false,
            "version": "0.10.0",
            "ecosystem": "crates"
          },
          {
            "name": "cookie",
            "direct": false,
            "version": "0.18.1",
            "ecosystem": "crates"
          },
          {
            "name": "cookie_store",
            "direct": false,
            "version": "0.22.1",
            "ecosystem": "crates"
          },
          {
            "name": "core-foundation-sys",
            "direct": false,
            "version": "0.8.7",
            "ecosystem": "crates"
          },
          {
            "name": "cpufeatures",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "cpufeatures",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "crc32fast",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "critical-section",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "crossterm_winapi",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "crates"
          },
          {
            "name": "crypto-common",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "crypto-common",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "csscolorparser",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "darling",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "crates"
          },
          {
            "name": "darling_core",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "crates"
          },
          {
            "name": "darling_macro",
            "direct": false,
            "version": "0.23.0",
            "ecosystem": "crates"
          },
          {
            "name": "deltae",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "deranged",
            "direct": false,
            "version": "0.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "derive_more-impl",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "digest",
            "direct": false,
            "version": "0.10.7",
            "ecosystem": "crates"
          },
          {
            "name": "digest",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "dirs-sys",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "displaydoc",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "document-features",
            "direct": false,
            "version": "0.2.12",
            "ecosystem": "crates"
          },
          {
            "name": "either",
            "direct": false,
            "version": "1.15.0",
            "ecosystem": "crates"
          },
          {
            "name": "equivalent",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "errno",
            "direct": false,
            "version": "0.3.14",
            "ecosystem": "crates"
          },
          {
            "name": "euclid",
            "direct": false,
            "version": "0.22.14",
            "ecosystem": "crates"
          },
          {
            "name": "fallible-iterator",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "fallible-streaming-iterator",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "fancy-regex",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "fast-srgb8",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "filedescriptor",
            "direct": false,
            "version": "0.8.3",
            "ecosystem": "crates"
          },
          {
            "name": "find-msvc-tools",
            "direct": false,
            "version": "0.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "finl_unicode",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "fixedbitset",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "flate2",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "fnv",
            "direct": false,
            "version": "1.0.7",
            "ecosystem": "crates"
          },
          {
            "name": "foldhash",
            "direct": false,
            "version": "0.1.5",
            "ecosystem": "crates"
          },
          {
            "name": "foldhash",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "form_urlencoded",
            "direct": false,
            "version": "1.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "generic-array",
            "direct": false,
            "version": "0.14.7",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.3.4",
            "ecosystem": "crates"
          },
          {
            "name": "getrandom",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.15.5",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.16.1",
            "ecosystem": "crates"
          },
          {
            "name": "hashbrown",
            "direct": false,
            "version": "0.17.1",
            "ecosystem": "crates"
          },
          {
            "name": "hashlink",
            "direct": false,
            "version": "0.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "heck",
            "direct": false,
            "version": "0.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "hex",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "crates"
          },
          {
            "name": "http",
            "direct": false,
            "version": "1.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "httparse",
            "direct": false,
            "version": "1.10.1",
            "ecosystem": "crates"
          },
          {
            "name": "hybrid-array",
            "direct": false,
            "version": "0.4.12",
            "ecosystem": "crates"
          },
          {
            "name": "iana-time-zone",
            "direct": false,
            "version": "0.1.65",
            "ecosystem": "crates"
          },
          {
            "name": "iana-time-zone-haiku",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_collections",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_locale_core",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_normalizer_data",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_properties_data",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "icu_provider",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "id-arena",
            "direct": false,
            "version": "2.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "ident_case",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "idna",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "idna_adapter",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "indexmap",
            "direct": false,
            "version": "2.13.0",
            "ecosystem": "crates"
          },
          {
            "name": "indoc",
            "direct": false,
            "version": "2.0.7",
            "ecosystem": "crates"
          },
          {
            "name": "instability",
            "direct": false,
            "version": "0.3.12",
            "ecosystem": "crates"
          },
          {
            "name": "is_terminal_polyfill",
            "direct": false,
            "version": "1.70.2",
            "ecosystem": "crates"
          },
          {
            "name": "itertools",
            "direct": false,
            "version": "0.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "itoa",
            "direct": false,
            "version": "1.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "jobserver",
            "direct": false,
            "version": "0.1.34",
            "ecosystem": "crates"
          },
          {
            "name": "js-sys",
            "direct": false,
            "version": "0.3.91",
            "ecosystem": "crates"
          },
          {
            "name": "kasuari",
            "direct": false,
            "version": "0.4.12",
            "ecosystem": "crates"
          },
          {
            "name": "lab",
            "direct": false,
            "version": "0.11.0",
            "ecosystem": "crates"
          },
          {
            "name": "lazy_static",
            "direct": false,
            "version": "1.5.0",
            "ecosystem": "crates"
          },
          {
            "name": "leb128fmt",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "libgit2-sys",
            "direct": false,
            "version": "0.18.5+1.9.4",
            "ecosystem": "crates"
          },
          {
            "name": "libm",
            "direct": false,
            "version": "0.2.16",
            "ecosystem": "crates"
          },
          {
            "name": "libredox",
            "direct": false,
            "version": "0.1.14",
            "ecosystem": "crates"
          },
          {
            "name": "libsqlite3-sys",
            "direct": false,
            "version": "0.38.1",
            "ecosystem": "crates"
          },
          {
            "name": "libssh2-sys",
            "direct": false,
            "version": "0.3.1",
            "ecosystem": "crates"
          },
          {
            "name": "libz-sys",
            "direct": false,
            "version": "1.1.25",
            "ecosystem": "crates"
          },
          {
            "name": "line-clipping",
            "direct": false,
            "version": "0.3.7",
            "ecosystem": "crates"
          },
          {
            "name": "linux-raw-sys",
            "direct": false,
            "version": "0.12.1",
            "ecosystem": "crates"
          },
          {
            "name": "litemap",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "litrs",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "lock_api",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "log",
            "direct": false,
            "version": "0.4.29",
            "ecosystem": "crates"
          },
          {
            "name": "lru",
            "direct": false,
            "version": "0.18.0",
            "ecosystem": "crates"
          },
          {
            "name": "mac_address",
            "direct": false,
            "version": "1.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "matchers",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "memchr",
            "direct": false,
            "version": "2.8.0",
            "ecosystem": "crates"
          },
          {
            "name": "memmem",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "memoffset",
            "direct": false,
            "version": "0.9.1",
            "ecosystem": "crates"
          },
          {
            "name": "minimal-lexical",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "miniz_oxide",
            "direct": false,
            "version": "0.8.9",
            "ecosystem": "crates"
          },
          {
            "name": "mio",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "nix",
            "direct": false,
            "version": "0.29.0",
            "ecosystem": "crates"
          },
          {
            "name": "nom",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "crates"
          },
          {
            "name": "nu-ansi-term",
            "direct": false,
            "version": "0.50.3",
            "ecosystem": "crates"
          },
          {
            "name": "num-conv",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "num-derive",
            "direct": false,
            "version": "0.4.2",
            "ecosystem": "crates"
          },
          {
            "name": "num-traits",
            "direct": false,
            "version": "0.2.19",
            "ecosystem": "crates"
          },
          {
            "name": "num_threads",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell",
            "direct": false,
            "version": "1.21.4",
            "ecosystem": "crates"
          },
          {
            "name": "once_cell_polyfill",
            "direct": false,
            "version": "1.70.2",
            "ecosystem": "crates"
          },
          {
            "name": "openssl-src",
            "direct": false,
            "version": "300.6.0+3.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "openssl-sys",
            "direct": false,
            "version": "0.9.112",
            "ecosystem": "crates"
          },
          {
            "name": "option-ext",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "ordered-float",
            "direct": false,
            "version": "4.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "palette",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "palette_derive",
            "direct": false,
            "version": "0.7.6",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot",
            "direct": false,
            "version": "0.12.5",
            "ecosystem": "crates"
          },
          {
            "name": "parking_lot_core",
            "direct": false,
            "version": "0.9.12",
            "ecosystem": "crates"
          },
          {
            "name": "percent-encoding",
            "direct": false,
            "version": "2.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "pest",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "pest_derive",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "pest_generator",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "pest_meta",
            "direct": false,
            "version": "2.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "phf",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "phf_codegen",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "phf_generator",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "phf_macros",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "phf_shared",
            "direct": false,
            "version": "0.11.3",
            "ecosystem": "crates"
          },
          {
            "name": "pin-project-lite",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "crates"
          },
          {
            "name": "pkg-config",
            "direct": false,
            "version": "0.3.32",
            "ecosystem": "crates"
          },
          {
            "name": "portable-atomic",
            "direct": false,
            "version": "1.13.1",
            "ecosystem": "crates"
          },
          {
            "name": "potential_utf",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "powerfmt",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "prettyplease",
            "direct": false,
            "version": "0.2.37",
            "ecosystem": "crates"
          },
          {
            "name": "proc-macro2",
            "direct": false,
            "version": "1.0.106",
            "ecosystem": "crates"
          },
          {
            "name": "quote",
            "direct": false,
            "version": "1.0.45",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "5.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "r-efi",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "crates"
          },
          {
            "name": "rand",
            "direct": false,
            "version": "0.8.6",
            "ecosystem": "crates"
          },
          {
            "name": "rand_core",
            "direct": false,
            "version": "0.6.4",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-core",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-crossterm",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-macros",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-termina",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-termwiz",
            "direct": false,
            "version": "0.1.2",
            "ecosystem": "crates"
          },
          {
            "name": "ratatui-widgets",
            "direct": false,
            "version": "0.3.2",
            "ecosystem": "crates"
          },
          {
            "name": "redox_syscall",
            "direct": false,
            "version": "0.5.18",
            "ecosystem": "crates"
          },
          {
            "name": "redox_users",
            "direct": false,
            "version": "0.5.2",
            "ecosystem": "crates"
          },
          {
            "name": "regex-automata",
            "direct": false,
            "version": "0.4.14",
            "ecosystem": "crates"
          },
          {
            "name": "regex-syntax",
            "direct": false,
            "version": "0.8.11",
            "ecosystem": "crates"
          },
          {
            "name": "ring",
            "direct": false,
            "version": "0.17.14",
            "ecosystem": "crates"
          },
          {
            "name": "rsqlite-vfs",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "rustc_version",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "rustix",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "crates"
          },
          {
            "name": "rustls",
            "direct": false,
            "version": "0.23.37",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-pki-types",
            "direct": false,
            "version": "1.14.0",
            "ecosystem": "crates"
          },
          {
            "name": "rustls-webpki",
            "direct": false,
            "version": "0.103.13",
            "ecosystem": "crates"
          },
          {
            "name": "rustversion",
            "direct": false,
            "version": "1.0.22",
            "ecosystem": "crates"
          },
          {
            "name": "ryu",
            "direct": false,
            "version": "1.0.23",
            "ecosystem": "crates"
          },
          {
            "name": "scopeguard",
            "direct": false,
            "version": "1.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "1.0.27",
            "ecosystem": "crates"
          },
          {
            "name": "serde_core",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_derive",
            "direct": false,
            "version": "1.0.228",
            "ecosystem": "crates"
          },
          {
            "name": "serde_spanned",
            "direct": false,
            "version": "1.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "sharded-slab",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "shlex",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "signal-hook",
            "direct": false,
            "version": "0.3.18",
            "ecosystem": "crates"
          },
          {
            "name": "signal-hook-mio",
            "direct": false,
            "version": "0.2.5",
            "ecosystem": "crates"
          },
          {
            "name": "signal-hook-registry",
            "direct": false,
            "version": "1.4.8",
            "ecosystem": "crates"
          },
          {
            "name": "simd-adler32",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "siphasher",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "crates"
          },
          {
            "name": "smallvec",
            "direct": false,
            "version": "1.15.1",
            "ecosystem": "crates"
          },
          {
            "name": "socket2",
            "direct": false,
            "version": "0.6.3",
            "ecosystem": "crates"
          },
          {
            "name": "sqlite-wasm-rs",
            "direct": false,
            "version": "0.5.5",
            "ecosystem": "crates"
          },
          {
            "name": "stable_deref_trait",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "static_assertions",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "strsim",
            "direct": false,
            "version": "0.11.1",
            "ecosystem": "crates"
          },
          {
            "name": "strum",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "crates"
          },
          {
            "name": "strum_macros",
            "direct": false,
            "version": "0.28.0",
            "ecosystem": "crates"
          },
          {
            "name": "subtle",
            "direct": false,
            "version": "2.6.1",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "1.0.109",
            "ecosystem": "crates"
          },
          {
            "name": "syn",
            "direct": false,
            "version": "2.0.117",
            "ecosystem": "crates"
          },
          {
            "name": "synstructure",
            "direct": false,
            "version": "0.13.2",
            "ecosystem": "crates"
          },
          {
            "name": "termina",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "terminfo",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "termios",
            "direct": false,
            "version": "0.3.3",
            "ecosystem": "crates"
          },
          {
            "name": "termwiz",
            "direct": false,
            "version": "0.23.3",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "1.0.69",
            "ecosystem": "crates"
          },
          {
            "name": "thiserror-impl",
            "direct": false,
            "version": "2.0.18",
            "ecosystem": "crates"
          },
          {
            "name": "thread_local",
            "direct": false,
            "version": "1.1.9",
            "ecosystem": "crates"
          },
          {
            "name": "time",
            "direct": false,
            "version": "0.3.47",
            "ecosystem": "crates"
          },
          {
            "name": "time-core",
            "direct": false,
            "version": "0.1.8",
            "ecosystem": "crates"
          },
          {
            "name": "time-macros",
            "direct": false,
            "version": "0.2.27",
            "ecosystem": "crates"
          },
          {
            "name": "tinystr",
            "direct": false,
            "version": "0.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "tokio-macros",
            "direct": false,
            "version": "2.7.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_datetime",
            "direct": false,
            "version": "1.1.1+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_parser",
            "direct": false,
            "version": "1.1.2+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "toml_writer",
            "direct": false,
            "version": "1.1.1+spec-1.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-attributes",
            "direct": false,
            "version": "0.1.31",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-core",
            "direct": false,
            "version": "0.1.36",
            "ecosystem": "crates"
          },
          {
            "name": "tracing-log",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "typenum",
            "direct": false,
            "version": "1.20.1",
            "ecosystem": "crates"
          },
          {
            "name": "ucd-trie",
            "direct": false,
            "version": "0.1.7",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-ident",
            "direct": false,
            "version": "1.0.24",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-segmentation",
            "direct": false,
            "version": "1.12.0",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-truncate",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-width",
            "direct": false,
            "version": "0.2.0",
            "ecosystem": "crates"
          },
          {
            "name": "unicode-xid",
            "direct": false,
            "version": "0.2.6",
            "ecosystem": "crates"
          },
          {
            "name": "untrusted",
            "direct": false,
            "version": "0.9.0",
            "ecosystem": "crates"
          },
          {
            "name": "ureq-proto",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "crates"
          },
          {
            "name": "url",
            "direct": false,
            "version": "2.5.8",
            "ecosystem": "crates"
          },
          {
            "name": "utf8-zero",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "utf8_iter",
            "direct": false,
            "version": "1.0.4",
            "ecosystem": "crates"
          },
          {
            "name": "utf8parse",
            "direct": false,
            "version": "0.2.2",
            "ecosystem": "crates"
          },
          {
            "name": "valuable",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "vcpkg",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "crates"
          },
          {
            "name": "version_check",
            "direct": false,
            "version": "0.9.5",
            "ecosystem": "crates"
          },
          {
            "name": "vtparse",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "wasi",
            "direct": false,
            "version": "0.11.1+wasi-snapshot-preview1",
            "ecosystem": "crates"
          },
          {
            "name": "wasip2",
            "direct": false,
            "version": "1.0.2+wasi-0.2.9",
            "ecosystem": "crates"
          },
          {
            "name": "wasip3",
            "direct": false,
            "version": "0.4.0+wasi-0.3.0-rc-2026-01-06",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen",
            "direct": false,
            "version": "0.2.114",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro",
            "direct": false,
            "version": "0.2.114",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-macro-support",
            "direct": false,
            "version": "0.2.114",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-bindgen-shared",
            "direct": false,
            "version": "0.2.114",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-encoder",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasm-metadata",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wasmparser",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "webpki-roots",
            "direct": false,
            "version": "1.0.6",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-bidi",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-blob-leases",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-color-types",
            "direct": false,
            "version": "0.3.0",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-dynamic",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-dynamic-derive",
            "direct": false,
            "version": "0.1.1",
            "ecosystem": "crates"
          },
          {
            "name": "wezterm-input-types",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "crates"
          },
          {
            "name": "winapi",
            "direct": false,
            "version": "0.3.9",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-i686-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "winapi-x86_64-pc-windows-gnu",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-core",
            "direct": false,
            "version": "0.62.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-implement",
            "direct": false,
            "version": "0.60.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-interface",
            "direct": false,
            "version": "0.59.3",
            "ecosystem": "crates"
          },
          {
            "name": "windows-link",
            "direct": false,
            "version": "0.2.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-result",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-strings",
            "direct": false,
            "version": "0.5.1",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.52.0",
            "ecosystem": "crates"
          },
          {
            "name": "windows-sys",
            "direct": false,
            "version": "0.61.2",
            "ecosystem": "crates"
          },
          {
            "name": "windows-targets",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_aarch64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_i686_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnu",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_gnullvm",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "windows_x86_64_msvc",
            "direct": false,
            "version": "0.52.6",
            "ecosystem": "crates"
          },
          {
            "name": "winnow",
            "direct": false,
            "version": "0.7.15",
            "ecosystem": "crates"
          },
          {
            "name": "winnow",
            "direct": false,
            "version": "1.0.3",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-core",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-rust",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-bindgen-rust-macro",
            "direct": false,
            "version": "0.51.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-component",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "wit-parser",
            "direct": false,
            "version": "0.244.0",
            "ecosystem": "crates"
          },
          {
            "name": "writeable",
            "direct": false,
            "version": "0.6.2",
            "ecosystem": "crates"
          },
          {
            "name": "yoke",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "yoke-derive",
            "direct": false,
            "version": "0.8.1",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "zerofrom-derive",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "crates"
          },
          {
            "name": "zeroize",
            "direct": false,
            "version": "1.8.2",
            "ecosystem": "crates"
          },
          {
            "name": "zerotrie",
            "direct": false,
            "version": "0.2.3",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec",
            "direct": false,
            "version": "0.11.5",
            "ecosystem": "crates"
          },
          {
            "name": "zerovec-derive",
            "direct": false,
            "version": "0.11.2",
            "ecosystem": "crates"
          },
          {
            "name": "zmij",
            "direct": false,
            "version": "1.0.21",
            "ecosystem": "crates"
          },
          {
            "name": "@bcoe/v8-coverage",
            "direct": false,
            "version": "1.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/eslint-utils",
            "direct": false,
            "version": "4.9.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint-community/regexpp",
            "direct": false,
            "version": "4.12.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-array",
            "direct": false,
            "version": "0.23.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/config-helpers",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/core",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/js",
            "direct": false,
            "version": "9.39.2",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/object-schema",
            "direct": false,
            "version": "3.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "@eslint/plugin-kit",
            "direct": false,
            "version": "0.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/core",
            "direct": false,
            "version": "0.19.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanfs/node",
            "direct": false,
            "version": "0.16.7",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/module-importer",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@humanwhocodes/retry",
            "direct": false,
            "version": "0.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@isaacs/fs-minipass",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "@istanbuljs/schema",
            "direct": false,
            "version": "0.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/resolve-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/sourcemap-codec",
            "direct": false,
            "version": "1.5.5",
            "ecosystem": "npm"
          },
          {
            "name": "@jridgewell/trace-mapping",
            "direct": false,
            "version": "0.3.31",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-darwin-arm64",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-darwin-x64",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-linux-arm",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-linux-arm64",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-linux-x64",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@msgpackr-extract/msgpackr-extract-win32-x64",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "@opencode-ai/plugin",
            "direct": false,
            "version": "1.17.3",
            "ecosystem": "npm"
          },
          {
            "name": "@opencode-ai/plugin",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@opencode-ai/sdk",
            "direct": false,
            "version": "1.17.3",
            "ecosystem": "npm"
          },
          {
            "name": "@opencode-ai/sdk",
            "direct": false,
            "version": "1.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "@standard-schema/spec",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/debug",
            "direct": false,
            "version": "4.1.12",
            "ecosystem": "npm"
          },
          {
            "name": "@types/esrecurse",
            "direct": false,
            "version": "4.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "@types/estree",
            "direct": false,
            "version": "1.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/istanbul-lib-coverage",
            "direct": false,
            "version": "2.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "@types/json-schema",
            "direct": false,
            "version": "7.0.15",
            "ecosystem": "npm"
          },
          {
            "name": "@types/katex",
            "direct": false,
            "version": "0.16.8",
            "ecosystem": "npm"
          },
          {
            "name": "@types/ms",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "20.19.33",
            "ecosystem": "npm"
          },
          {
            "name": "@types/node",
            "direct": false,
            "version": "25.9.2",
            "ecosystem": "npm"
          },
          {
            "name": "@types/unist",
            "direct": false,
            "version": "2.0.11",
            "ecosystem": "npm"
          },
          {
            "name": "abbrev",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn",
            "direct": false,
            "version": "8.17.0",
            "ecosystem": "npm"
          },
          {
            "name": "acorn-jsx",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-regex",
            "direct": false,
            "version": "6.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "ansi-styles",
            "direct": false,
            "version": "4.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "argparse",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "balanced-match",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "brace-expansion",
            "direct": false,
            "version": "5.0.7",
            "ecosystem": "npm"
          },
          {
            "name": "c8",
            "direct": false,
            "version": "11.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "character-entities-legacy",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "character-reference-invalid",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "chownr",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cliui",
            "direct": false,
            "version": "8.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-convert",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "color-name",
            "direct": false,
            "version": "1.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "14.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "commander",
            "direct": false,
            "version": "8.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "convert-source-map",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "cross-spawn",
            "direct": false,
            "version": "7.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "debug",
            "direct": false,
            "version": "4.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "decode-named-character-reference",
            "direct": false,
            "version": "1.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-extend",
            "direct": false,
            "version": "0.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "deep-is",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "dequal",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "detect-libc",
            "direct": false,
            "version": "2.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "devlop",
            "direct": false,
            "version": "1.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "effect",
            "direct": false,
            "version": "4.0.0-beta.74",
            "ecosystem": "npm"
          },
          {
            "name": "emoji-regex",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "entities",
            "direct": false,
            "version": "4.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "env-paths",
            "direct": false,
            "version": "2.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "escalade",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "escape-string-regexp",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint",
            "direct": false,
            "version": "10.6.0",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-scope",
            "direct": false,
            "version": "9.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "3.4.3",
            "ecosystem": "npm"
          },
          {
            "name": "eslint-visitor-keys",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "espree",
            "direct": false,
            "version": "11.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "esquery",
            "direct": false,
            "version": "1.7.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": "exponential-backoff",
            "direct": false,
            "version": "3.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "fast-check",
            "direct": false,
            "version": "4.8.0",
            "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": "fast-uri",
            "direct": false,
            "version": "3.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "fdir",
            "direct": false,
            "version": "6.5.0",
            "ecosystem": "npm"
          },
          {
            "name": "file-entry-cache",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "find-my-way-ts",
            "direct": false,
            "version": "0.1.6",
            "ecosystem": "npm"
          },
          {
            "name": "find-up",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "flat-cache",
            "direct": false,
            "version": "4.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "flatted",
            "direct": false,
            "version": "3.4.2",
            "ecosystem": "npm"
          },
          {
            "name": "foreground-child",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "get-caller-file",
            "direct": false,
            "version": "2.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "get-east-asian-width",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "glob",
            "direct": false,
            "version": "13.0.6",
            "ecosystem": "npm"
          },
          {
            "name": "glob-parent",
            "direct": false,
            "version": "6.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "globals",
            "direct": false,
            "version": "17.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "graceful-fs",
            "direct": false,
            "version": "4.2.11",
            "ecosystem": "npm"
          },
          {
            "name": "has-flag",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "html-escaper",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "5.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "ignore",
            "direct": false,
            "version": "7.0.5",
            "ecosystem": "npm"
          },
          {
            "name": "imurmurhash",
            "direct": false,
            "version": "0.1.4",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "4.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "ini",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphabetical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-alphanumerical",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-decimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-extglob",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "is-fullwidth-code-point",
            "direct": false,
            "version": "3.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "is-glob",
            "direct": false,
            "version": "4.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "is-hexadecimal",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "isexe",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-coverage",
            "direct": false,
            "version": "3.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-lib-report",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "istanbul-reports",
            "direct": false,
            "version": "3.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "js-yaml",
            "direct": false,
            "version": "4.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-buffer",
            "direct": false,
            "version": "3.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "json-schema-traverse",
            "direct": false,
            "version": "1.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "json-stable-stringify-without-jsonify",
            "direct": false,
            "version": "1.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonc-parser",
            "direct": false,
            "version": "3.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "jsonpointer",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "katex",
            "direct": false,
            "version": "0.16.28",
            "ecosystem": "npm"
          },
          {
            "name": "keyv",
            "direct": false,
            "version": "4.5.4",
            "ecosystem": "npm"
          },
          {
            "name": "kubernetes-types",
            "direct": false,
            "version": "1.30.0",
            "ecosystem": "npm"
          },
          {
            "name": "levn",
            "direct": false,
            "version": "0.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "linkify-it",
            "direct": false,
            "version": "5.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "locate-path",
            "direct": false,
            "version": "6.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "lru-cache",
            "direct": false,
            "version": "11.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "make-dir",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdown-it",
            "direct": false,
            "version": "14.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdownlint",
            "direct": false,
            "version": "0.40.0",
            "ecosystem": "npm"
          },
          {
            "name": "markdownlint-cli",
            "direct": false,
            "version": "0.48.0",
            "ecosystem": "npm"
          },
          {
            "name": "mdurl",
            "direct": false,
            "version": "2.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-core-commonmark",
            "direct": false,
            "version": "2.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-directive",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-autolink-literal",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-footnote",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-gfm-table",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-extension-math",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-destination",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-label",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-space",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-title",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-factory-whitespace",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-character",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-chunked",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-classify-character",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-combine-extensions",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-decode-numeric-character-reference",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-encode",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-html-tag-name",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-normalize-identifier",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-resolve-all",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-sanitize-uri",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-subtokenize",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-symbol",
            "direct": false,
            "version": "2.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "micromark-util-types",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "minimatch",
            "direct": false,
            "version": "10.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "minimist",
            "direct": false,
            "version": "1.2.8",
            "ecosystem": "npm"
          },
          {
            "name": "minipass",
            "direct": false,
            "version": "7.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "minizlib",
            "direct": false,
            "version": "3.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "ms",
            "direct": false,
            "version": "2.1.3",
            "ecosystem": "npm"
          },
          {
            "name": "msgpackr",
            "direct": false,
            "version": "2.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "msgpackr-extract",
            "direct": false,
            "version": "3.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "multipasta",
            "direct": false,
            "version": "0.2.7",
            "ecosystem": "npm"
          },
          {
            "name": "natural-compare",
            "direct": false,
            "version": "1.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp",
            "direct": false,
            "version": "13.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "node-gyp-build-optional-packages",
            "direct": false,
            "version": "5.2.2",
            "ecosystem": "npm"
          },
          {
            "name": "nopt",
            "direct": false,
            "version": "10.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "optionator",
            "direct": false,
            "version": "0.9.4",
            "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": "parse-entities",
            "direct": false,
            "version": "4.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "path-exists",
            "direct": false,
            "version": "4.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "path-key",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "path-scurry",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "picomatch",
            "direct": false,
            "version": "4.0.4",
            "ecosystem": "npm"
          },
          {
            "name": "prelude-ls",
            "direct": false,
            "version": "1.2.1",
            "ecosystem": "npm"
          },
          {
            "name": "proc-log",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "punycode",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "punycode.js",
            "direct": false,
            "version": "2.3.1",
            "ecosystem": "npm"
          },
          {
            "name": "pure-rand",
            "direct": false,
            "version": "8.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "require-directory",
            "direct": false,
            "version": "2.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "require-from-string",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "run-con",
            "direct": false,
            "version": "1.3.2",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.7.4",
            "ecosystem": "npm"
          },
          {
            "name": "semver",
            "direct": false,
            "version": "7.8.5",
            "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": "signal-exit",
            "direct": false,
            "version": "4.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "smol-toml",
            "direct": false,
            "version": "1.6.1",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "4.2.3",
            "ecosystem": "npm"
          },
          {
            "name": "string-width",
            "direct": false,
            "version": "8.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "6.0.1",
            "ecosystem": "npm"
          },
          {
            "name": "strip-ansi",
            "direct": false,
            "version": "7.1.2",
            "ecosystem": "npm"
          },
          {
            "name": "strip-json-comments",
            "direct": false,
            "version": "3.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "supports-color",
            "direct": false,
            "version": "7.2.0",
            "ecosystem": "npm"
          },
          {
            "name": "tar",
            "direct": false,
            "version": "7.5.19",
            "ecosystem": "npm"
          },
          {
            "name": "test-exclude",
            "direct": false,
            "version": "8.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.15",
            "ecosystem": "npm"
          },
          {
            "name": "tinyglobby",
            "direct": false,
            "version": "0.2.17",
            "ecosystem": "npm"
          },
          {
            "name": "toml",
            "direct": false,
            "version": "4.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "type-check",
            "direct": false,
            "version": "0.4.0",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "5.9.3",
            "ecosystem": "npm"
          },
          {
            "name": "typescript",
            "direct": false,
            "version": "6.0.3",
            "ecosystem": "npm"
          },
          {
            "name": "uc.micro",
            "direct": false,
            "version": "2.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici",
            "direct": false,
            "version": "6.27.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "6.21.0",
            "ecosystem": "npm"
          },
          {
            "name": "undici-types",
            "direct": false,
            "version": "7.24.6",
            "ecosystem": "npm"
          },
          {
            "name": "uri-js",
            "direct": false,
            "version": "4.4.1",
            "ecosystem": "npm"
          },
          {
            "name": "uuid",
            "direct": false,
            "version": "14.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "v8-to-istanbul",
            "direct": false,
            "version": "9.3.0",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "2.0.2",
            "ecosystem": "npm"
          },
          {
            "name": "which",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "word-wrap",
            "direct": false,
            "version": "1.2.5",
            "ecosystem": "npm"
          },
          {
            "name": "wrap-ansi",
            "direct": false,
            "version": "7.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "y18n",
            "direct": false,
            "version": "5.0.8",
            "ecosystem": "npm"
          },
          {
            "name": "yallist",
            "direct": false,
            "version": "5.0.0",
            "ecosystem": "npm"
          },
          {
            "name": "yaml",
            "direct": false,
            "version": "2.9.0",
            "ecosystem": "npm"
          },
          {
            "name": "yargs",
            "direct": false,
            "version": "17.7.2",
            "ecosystem": "npm"
          },
          {
            "name": "yargs-parser",
            "direct": false,
            "version": "21.1.1",
            "ecosystem": "npm"
          },
          {
            "name": "yocto-queue",
            "direct": false,
            "version": "0.1.0",
            "ecosystem": "npm"
          },
          {
            "name": "zod",
            "direct": false,
            "version": "4.1.8",
            "ecosystem": "npm"
          },
          {
            "name": "mypy",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-asyncio",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-cov",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest-mock",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "ruff",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 571,
        "direct_count": 29,
        "indirect_count": 542
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 79,
        "merged_prs": 888,
        "open_issues": 32,
        "closed_ratio": 0.952,
        "closed_issues": 629,
        "closed_unmerged_prs": 797
      },
      "bus_factor": 1,
      "bot_contributors": 4,
      "top_contributors": [
        {
          "type": "User",
          "login": "affaan-m",
          "commits": 1486,
          "avatar_url": "https://avatars.githubusercontent.com/u/124439313?v=4"
        },
        {
          "type": "User",
          "login": "pangerlkr",
          "commits": 47,
          "avatar_url": "https://avatars.githubusercontent.com/u/73515951?v=4"
        },
        {
          "type": "User",
          "login": "gaurav0107",
          "commits": 21,
          "avatar_url": "https://avatars.githubusercontent.com/u/12824278?v=4"
        },
        {
          "type": "User",
          "login": "Jamkris",
          "commits": 20,
          "avatar_url": "https://avatars.githubusercontent.com/u/82251632?v=4"
        },
        {
          "type": "User",
          "login": "pythonstrup",
          "commits": 18,
          "avatar_url": "https://avatars.githubusercontent.com/u/90585081?v=4"
        },
        {
          "type": "User",
          "login": "pvgomes",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/4427450?v=4"
        },
        {
          "type": "User",
          "login": "Lidang-Jiang",
          "commits": 14,
          "avatar_url": "https://avatars.githubusercontent.com/u/119769478?v=4"
        },
        {
          "type": "User",
          "login": "ozoz5",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/208570280?v=4"
        },
        {
          "type": "User",
          "login": "shimo4228",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/54734315?v=4"
        },
        {
          "type": "User",
          "login": "claude",
          "commits": 12,
          "avatar_url": "https://avatars.githubusercontent.com/u/81847?v=4"
        }
      ],
      "contributors_sampled": 96,
      "top_contributor_share": 0.757
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "generator-generic-ossf-slsa3-publish.yml",
        "maintenance.yml",
        "monthly-metrics.yml",
        "release-announce.yml",
        "release.yml",
        "reusable-release.yml",
        "reusable-test.yml",
        "reusable-validate.yml",
        "supply-chain-watch.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.js"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "Cargo.lock",
        "package-lock.json",
        "yarn.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 5,
            "reason": "17 out of 30 merged PRs checked by a CI test -- score normalized to 5",
            "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": 8,
            "reason": "Found 22/27 approved changesets -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 22 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 8,
            "reason": "dependency not pinned by hash detected -- score normalized to 8",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 2,
            "reason": "SAST tool is not run on all commits -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 4,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 9,
            "reason": "1 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "5deee34c93395045b985e3baf91550e5f1ab7204",
        "ran_at": "2026-07-21T15:57:46Z",
        "aggregate_score": 6,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": true
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/affaan-m/ECC",
    "host": "github.com",
    "name": "ECC",
    "owner": "affaan-m"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "good",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 79,
      "inputs": {
        "security": 68,
        "vitality": 86,
        "community": 90,
        "governance": 67,
        "engineering": 84
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "excellent",
        "name": "Vitality",
        "value": 86,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 83,
            "inputs": {
              "commits_last_year": 2270,
              "human_commit_share": 0.85,
              "days_since_last_push": 0,
              "active_weeks_last_year": 27
            },
            "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": "27/52 weeks with commits",
                "points": 18.7,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 27
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "2270 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 2270
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 14,
              "latest_release_tag": "v2.0.0",
              "releases_from_tags": false,
              "days_since_latest_release": 41,
              "mean_days_between_releases": 13.8
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "14 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 41 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 41
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~13.8 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 13.8
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 1,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 1 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 1
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "excellent",
        "name": "Community & Adoption",
        "value": 90,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "excellent",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "forks": 35370,
              "stars": 231806,
              "watchers": 1207,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "231,806 stars",
                "points": 60,
                "status": "met",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 231806
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "35,370 forks",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 35370
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "1,207 watchers",
                "points": 15,
                "status": "met",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 1207
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "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": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "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": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 70,
            "inputs": {
              "packages": [
                "ecc-universal"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 15716
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "15,716 downloads/month across npm",
                "points": 56,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 15716,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 67,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 38,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 96,
              "top_contributor_share": 0.757
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 76% of commits",
                "points": 5.5,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 76
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "96 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 96
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 22 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "merged_prs": 888,
              "open_issues": 32,
              "closed_issues": 629,
              "issue_closed_ratio": 0.952,
              "closed_unmerged_prs": 797
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "95% of issues closed",
                "points": 44.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 95
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "888/1685 decided PRs merged",
                "points": 20.2,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 888,
                      "decided": 1685
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 22/27 approved changesets -- score normalized to 8",
                "points": 12,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "followers": 8561,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "affaan-m",
              "public_repos": 27,
              "account_age_days": 1263
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "8,561 followers of affaan-m",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 8561,
                      "login": "affaan-m"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "27 public repos, account ~3 yr old",
                "points": 17.5,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 27
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 3
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "ecc-universal"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 41
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 41 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 41
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "8 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 84,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "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": "eslint.config.js",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "17 out of 30 merged PRs checked by a CI test -- score normalized to 5",
                "points": 10,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "ai-agents",
                "anthropic",
                "claude",
                "claude-code",
                "developer-tools",
                "llm",
                "mcp",
                "productivity"
              ],
              "has_wiki": true,
              "homepage": "https://ecc.tools",
              "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://ecc.tools",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "8 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 8
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "moderate",
        "name": "Security",
        "value": 68,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "moderate",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 6
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "17 out of 30 merged PRs checked by a CI test -- score normalized to 5",
                "points": 1.2,
                "status": "partial",
                "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 22/27 approved changesets -- score normalized to 8",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 22 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 4,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 2",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "1 existing vulnerabilities detected",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:ecc-universal@2.0.0 runtime dependency closure — what installing the published package pulls in — 7 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:ecc-universal@2.0.0",
                  "assessed": 7
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 7,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "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": 7,
              "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": 84,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 1,
              "agent_instruction_files": [
                ".codex/AGENTS.md",
                ".cursor/rules/common-agents.md",
                ".cursor/rules/common-coding-style.md",
                ".cursor/rules/common-development-workflow.md",
                ".cursor/rules/common-git-workflow.md",
                ".cursor/rules/common-hooks.md",
                ".cursor/rules/common-patterns.md",
                ".cursor/rules/common-performance.md",
                ".cursor/rules/common-security.md",
                ".cursor/rules/common-testing.md",
                ".cursor/rules/golang-coding-style.md",
                ".cursor/rules/golang-hooks.md",
                ".cursor/rules/golang-patterns.md",
                ".cursor/rules/golang-security.md",
                ".cursor/rules/golang-testing.md",
                ".cursor/rules/kotlin-coding-style.md",
                ".cursor/rules/kotlin-hooks.md",
                ".cursor/rules/kotlin-patterns.md",
                ".cursor/rules/kotlin-security.md",
                ".cursor/rules/kotlin-testing.md",
                ".cursor/rules/php-coding-style.md",
                ".cursor/rules/php-hooks.md",
                ".cursor/rules/php-patterns.md",
                ".cursor/rules/php-security.md",
                ".cursor/rules/php-testing.md",
                ".cursor/rules/python-coding-style.md",
                ".cursor/rules/python-hooks.md",
                ".cursor/rules/python-patterns.md",
                ".cursor/rules/python-security.md",
                ".cursor/rules/python-testing.md",
                ".cursor/rules/swift-coding-style.md",
                ".cursor/rules/swift-hooks.md",
                ".cursor/rules/swift-patterns.md",
                ".cursor/rules/swift-security.md",
                ".cursor/rules/swift-testing.md",
                ".cursor/rules/typescript-coding-style.md",
                ".cursor/rules/typescript-hooks.md",
                ".cursor/rules/typescript-patterns.md",
                ".cursor/rules/typescript-security.md",
                ".cursor/rules/typescript-testing.md",
                ".gemini/GEMINI.md",
                ".github/copilot-instructions.md",
                "AGENTS.md",
                "CLAUDE.md",
                "docs/es/AGENTS.md",
                "docs/es/CLAUDE.md",
                "docs/es/examples/CLAUDE.md",
                "docs/es/rules/common/agents.md",
                "docs/ja-JP/AGENTS.md",
                "docs/ja-JP/CLAUDE.md",
                "docs/ja-JP/examples/CLAUDE.md",
                "docs/ja-JP/rules/common/agents.md",
                "docs/ko-KR/examples/CLAUDE.md",
                "docs/ko-KR/rules/agents.md",
                "docs/pt-BR/examples/CLAUDE.md",
                "docs/pt-BR/rules/agents.md",
                "docs/tr/AGENTS.md",
                "docs/tr/CLAUDE.md",
                "docs/tr/examples/CLAUDE.md",
                "docs/tr/rules/common/agents.md",
                "docs/zh-CN/AGENTS.md",
                "docs/zh-CN/CLAUDE.md",
                "docs/zh-CN/examples/CLAUDE.md",
                "docs/zh-CN/rules/common/agents.md",
                "docs/zh-TW/rules/agents.md",
                "examples/CLAUDE.md",
                "rules/common/agents.md"
              ],
              "agent_instruction_max_bytes": 11718
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": ".codex/AGENTS.md, .cursor/rules/common-agents.md, .cursor/rules/common-coding-style.md, .cursor/rules/common-development-workflow.md, .cursor/rules/common-git-workflow.md, .cursor/rules/common-hooks.md, .cursor/rules/common-patterns.md, .cursor/rules/common-performance.md, .cursor/rules/common-security.md, .cursor/rules/common-testing.md, .cursor/rules/golang-coding-style.md, .cursor/rules/golang-hooks.md, .cursor/rules/golang-patterns.md, .cursor/rules/golang-security.md, .cursor/rules/golang-testing.md, .cursor/rules/kotlin-coding-style.md, .cursor/rules/kotlin-hooks.md, .cursor/rules/kotlin-patterns.md, .cursor/rules/kotlin-security.md, .cursor/rules/kotlin-testing.md, .cursor/rules/php-coding-style.md, .cursor/rules/php-hooks.md, .cursor/rules/php-patterns.md, .cursor/rules/php-security.md, .cursor/rules/php-testing.md, .cursor/rules/python-coding-style.md, .cursor/rules/python-hooks.md, .cursor/rules/python-patterns.md, .cursor/rules/python-security.md, .cursor/rules/python-testing.md, .cursor/rules/swift-coding-style.md, .cursor/rules/swift-hooks.md, .cursor/rules/swift-patterns.md, .cursor/rules/swift-security.md, .cursor/rules/swift-testing.md, .cursor/rules/typescript-coding-style.md, .cursor/rules/typescript-hooks.md, .cursor/rules/typescript-patterns.md, .cursor/rules/typescript-security.md, .cursor/rules/typescript-testing.md, .gemini/GEMINI.md, .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, docs/es/AGENTS.md, docs/es/CLAUDE.md, docs/es/examples/CLAUDE.md, docs/es/rules/common/agents.md, docs/ja-JP/AGENTS.md, docs/ja-JP/CLAUDE.md, docs/ja-JP/examples/CLAUDE.md, docs/ja-JP/rules/common/agents.md, docs/ko-KR/examples/CLAUDE.md, docs/ko-KR/rules/agents.md, docs/pt-BR/examples/CLAUDE.md, docs/pt-BR/rules/agents.md, docs/tr/AGENTS.md, docs/tr/CLAUDE.md, docs/tr/examples/CLAUDE.md, docs/tr/rules/common/agents.md, docs/zh-CN/AGENTS.md, docs/zh-CN/CLAUDE.md, docs/zh-CN/examples/CLAUDE.md, docs/zh-CN/rules/common/agents.md, docs/zh-TW/rules/agents.md, examples/CLAUDE.md, rules/common/agents.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".codex/AGENTS.md, .cursor/rules/common-agents.md, .cursor/rules/common-coding-style.md, .cursor/rules/common-development-workflow.md, .cursor/rules/common-git-workflow.md, .cursor/rules/common-hooks.md, .cursor/rules/common-patterns.md, .cursor/rules/common-performance.md, .cursor/rules/common-security.md, .cursor/rules/common-testing.md, .cursor/rules/golang-coding-style.md, .cursor/rules/golang-hooks.md, .cursor/rules/golang-patterns.md, .cursor/rules/golang-security.md, .cursor/rules/golang-testing.md, .cursor/rules/kotlin-coding-style.md, .cursor/rules/kotlin-hooks.md, .cursor/rules/kotlin-patterns.md, .cursor/rules/kotlin-security.md, .cursor/rules/kotlin-testing.md, .cursor/rules/php-coding-style.md, .cursor/rules/php-hooks.md, .cursor/rules/php-patterns.md, .cursor/rules/php-security.md, .cursor/rules/php-testing.md, .cursor/rules/python-coding-style.md, .cursor/rules/python-hooks.md, .cursor/rules/python-patterns.md, .cursor/rules/python-security.md, .cursor/rules/python-testing.md, .cursor/rules/swift-coding-style.md, .cursor/rules/swift-hooks.md, .cursor/rules/swift-patterns.md, .cursor/rules/swift-security.md, .cursor/rules/swift-testing.md, .cursor/rules/typescript-coding-style.md, .cursor/rules/typescript-hooks.md, .cursor/rules/typescript-patterns.md, .cursor/rules/typescript-security.md, .cursor/rules/typescript-testing.md, .gemini/GEMINI.md, .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, docs/es/AGENTS.md, docs/es/CLAUDE.md, docs/es/examples/CLAUDE.md, docs/es/rules/common/agents.md, docs/ja-JP/AGENTS.md, docs/ja-JP/CLAUDE.md, docs/ja-JP/examples/CLAUDE.md, docs/ja-JP/rules/common/agents.md, docs/ko-KR/examples/CLAUDE.md, docs/ko-KR/rules/agents.md, docs/pt-BR/examples/CLAUDE.md, docs/pt-BR/rules/agents.md, docs/tr/AGENTS.md, docs/tr/CLAUDE.md, docs/tr/examples/CLAUDE.md, docs/tr/rules/common/agents.md, docs/zh-CN/AGENTS.md, docs/zh-CN/CLAUDE.md, docs/zh-CN/examples/CLAUDE.md, docs/zh-CN/rules/common/agents.md, docs/zh-TW/rules/agents.md, examples/CLAUDE.md, rules/common/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": "85 of 85 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 85,
                      "sampled": 85
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "excellent",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 93,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "Cargo.lock",
                "package-lock.json",
                "yarn.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                ".opencode/tsconfig.json"
              ],
              "agent_commit_share": 0.16,
              "toolchain_manifests": [
                "ecc2/Cargo.toml"
              ],
              "dependency_bot_commit_share": 0.1
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "ecc2/Cargo.toml (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "ecc2/Cargo.toml"
                    }
                  }
                ],
                "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": "eslint.config.js",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.js"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": ".opencode/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": ".opencode/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": "16 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 16,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "10 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 10,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 8",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 541173,
              "source_files_sampled": 520,
              "oversized_source_files": 15
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript with type-check config (.opencode/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": ".opencode/tsconfig.json",
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "15/520 source files over 60KB",
                "points": 53.4,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 520,
                      "oversized": 15
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "moderate",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "pypi package 'llm-abstraction' points at a different repository (https://github.com/evandentremont/llm-abstraction); excluded from ecosystem scoring",
    "Could not fetch crates package 'ecc-tui' from its registry"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-21T15:58:18.710395Z",
  "schema_version": "0.23.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/affaan-m/ECC.svg",
  "full_name": "affaan-m/ECC",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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