公开记录
软件健康报告模式 0.23.0 · 指标 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 星标⑂ 35,370 复刻始于 2026年1月在 GitHub 上查看 ↗

affaan-m/ECC 的健康指数为 100 分中的 79 分,处于「良好」区间。 其得分最高的类别是Community & Adoption(90/100),最低的是Sustainability & Governance(67/100)。 最近一次更新在今天。 近期的大部分工作由 1 位贡献者完成。

79
总分 / 100
良好

软件健康指数

指标归入加权类别,统一采用 1–100 量表。总体分先取类别加权平均;当公开证据触发高风险司法辖区政策时,评级会按政策调整,并设置 49(有风险)的上限。AI 就绪度不计入总体分。

79
优秀85-100堪称典范;基本满足所有检验标准
良好70-84健康;仅有轻微不足
中等50-69可接受,但存在明显不足;建议进行审查
存在风险30-49存在重大薄弱环节;采用时应保持审慎
危急1-29问题严重(项目被弃置、仅有单一维护者、缺乏基本工程规范)
活力社区与采用可持续性与治理工程质量安全AI 就绪度

评分画像

每条轴代表一个类别。形状比平均值更重要——健康的对象会填满整个图形,而“一峰一谷”式画像意味着某一维度的优势正掩盖另一维度的风险。

所有权

Affaan Mustafa个人账户
8,561 关注者27 个公开仓库始于 2023年2月Itô

该仓库由个人账户拥有。相较于组织支持的项目,单一所有者项目的延续性风险更高。

软件包生态系统

注册表软件包版本月下载量版本数最近发布标签
npmecc-universal2.0.015,716841 天前aiagentsskillshooksmcprulesharnessagent-harnesstddcode-reviewsecurityautomationbest-practicescursorcursor-ideopencodecodexpresentationsslides
PyPIllm-abstraction指向其他仓库——不计分0.3.0-333 天前

按类别列示的指标

活力

项目是否仍有生命——是否仍在编写代码,是否仍在发布版本?

86优秀 · 占总体的 22%
评分方式
36/36推送新近度 — 最近一次推送于 0 天前
18.7/36提交节奏 — 52 周中有 27 周有提交
18/18提交量 — 最近一年 2,270 次提交
10/10OpenSSF Scorecard:Maintained — 30 commit(s) and 5 issue activity found in the last 90 days -- score normalized to 10
所用输入
commits_last_year2,270
human_commit_share0.85
days_since_last_push0
active_weeks_last_year27

发布纪律

90优秀
评分方式
27/27有发布版本 — 已发布 14 个发布版本
36/36发布时效 — 最近一次发布版本于 41 天前
27/27发布节奏 — 约每 13.8 天发布一次
0/10OpenSSF Scorecard:Signed-Releases — Project has not signed or included provenance with any releases.
所用输入
releases_count14
latest_release_tagv2.0.0
releases_from_tags
days_since_latest_release41
mean_days_between_releases13.8

社区与采用

项目是否拥有用户、下载量与关注度,并具备欢迎贡献者参与的配置?

90优秀 · 占总体的 18%
评分方式
60/60星标 — 231,806 个星标
25/25复刻 — 35,370 个复刻
15/15关注者 — 1,207 位关注者
所用输入
forks35,370
stars231,806
watchers1,207
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

社区健康

92优秀
评分方式
22.5/22.5README
22.5/22.5许可证 — 可识别的许可证(MIT)
18/18CONTRIBUTING 指南
13.5/13.5行为准则
0/7.2议题模板
6.3/6.3PR 模板
所用输入
has_readme
has_license
has_contributing
has_issue_template
has_code_of_conduct
has_pull_request_template
评分方式
56/80月度下载量 — npm 合计每月 15,716 次下载
0/20注册表被依赖数 — 该生态系统不报告此项
所用输入
packagesecc-universal
dependents
ecosystemsnpm
total_downloads
monthly_downloads15,716
已排除计分(无数据或不适用):注册表被依赖数。 其余权重已重新归一化。

可持续性与治理

项目能否在其成员之外延续——巴士系数、响应能力、由谁支持,以及软件包的维护状况?

67中等 · 占总体的 24%
评分方式
9/54巴士系数 — 1 位贡献者贡献了半数提交
5.5/22.5提交分布 — 头号贡献者编写了 76% 的提交
13.5/13.5贡献者广度 — 96 位贡献者
10/10OpenSSF Scorecard:Contributors — project has 22 contributing companies or organizations
所用输入
bus_factor1
contributors_sampled96
top_contributor_share0.757
评分方式
44.5/46.8议题解决 — 95% 的议题已关闭
20.2/38.3PR 接受 — 已裁定的 PR 中 888/1,685 已合并
12/15OpenSSF Scorecard:Code-Review — Found 22/27 approved changesets -- score normalized to 8
所用输入
merged_prs888
open_issues32
closed_issues629
issue_closed_ratio0.952
closed_unmerged_prs797
评分方式
10/30所有权背书 — 个人(用户)账户
0/20已验证域名 — 不适用于个人账户
25/25所有者影响力 — affaan-m 有 8,561 位关注者
17.5/25既往记录 — 27 个公开仓库,账户约 3 年
所用输入
followers8,561
owner_typeUser
is_verified
owner_loginaffaan-m
public_repos27
account_age_days1,263
已排除计分(无数据或不适用):已验证域名。 其余权重已重新归一化。
评分方式
25/25已发布且可解析 — npm 上有 1 个软件包
35/35发布时效 — 最近一次发布于 41 天前
20/20版本历史 — 8 个已发布版本
20/20未被弃用 — 活跃,未被弃用或撤回
所用输入
packagesecc-universal
ecosystemsnpm
any_deprecated
min_days_since_publish41

工程质量

基础的工程与文档实践是否到位?

84良好 · 占总体的 20%

工程实践

74良好
评分方式
24/24CI 工作流 — 10 个工作流
24/24存在测试
16/16Linter 配置 — eslint.config.js
0/9.6Pre-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
所用输入
has_ci
has_tests
has_editorconfig
has_linter_config
has_precommit_config

文档

100优秀
评分方式
30/30README
25/25文档目录
15/15文档 / 主页站点 — https://ecc.tools
10/10仓库描述
10/10主题标签 — 8 个主题标签
10/10Wiki
所用输入
topicsai-agents, anthropic, claude, claude-code, developer-tools, llm, mcp, productivity
has_wiki
homepagehttps://ecc.tools
has_readme
has_docs_dir
has_description

安全

可见的安全与供应链实践是否稳固,且不存在未解决的高风险司法辖区暴露?

68中等 · 占总体的 16%

安全态势

60中等
评分方式
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.5许可证 — 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
所用输入
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate6
评分方式
35/35直接依赖不含已知公告 — 没有直接依赖携带已知公告
25/25间接依赖不含已知公告 — 没有间接依赖携带已知公告
0/40没有长期未处理的公告 — 没有公告带有发布日期
所用输入
sourceosv
advisories0
affected_packages0
assessed_packages7
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
已排除计分(无数据或不适用):没有长期未处理的公告。 其余权重已重新归一化。 比对的是 npm:ecc-universal@2.0.0 的运行时依赖闭包——安装已发布的软件包时真正被拉取进来的内容——共 7 个软件包。 未对可达性进行分析。

AI 就绪度

该仓库在多大程度上具备与 AI 编码代理协同开发与维护的条件?这是一枚独立的实验性徽章——权重为 0.0,因此单独呈现,不影响总体健康评分。

84良好 · 占总体的 0%
评分方式
45/45代理指令 — .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/15机器可读文档(llms.txt)
40/40可读的提交历史 — 85 次人类提交中有 85 次说明了意图(结构化标题或解释性正文)
所用输入
has_llms_txt
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
评分方式
12.6/18一条命令的引导启动 — ecc2/Cargo.toml(工具链约定,无任务运行器)
22/22自动化测试
11/11Lint / 格式化配置 — eslint.config.js
11/11静态类型检查 — .opencode/tsconfig.json
10/10可复现环境 — lockfile
10/10已体现的代理实践 — 最近 100 次提交中有 16 次由代理编写或署名代理
8/8自动化维护 — 最近 100 次提交中有 10 次为自动依赖更新
8/10OpenSSF Scorecard:Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 8
所用输入
has_nix
has_tests
lockfilesCargo.lock, package-lock.json, yarn.lock
has_dockerfile
typed_language
bootstrap_files
has_devcontainer
has_linter_config
typecheck_configs.opencode/tsconfig.json
agent_commit_share0.16
toolchain_manifestsecc2/Cargo.toml
dependency_bot_commit_share0.1
评分方式
27/45可类型检查的代码 — JavaScript,已配置类型检查(.opencode/tsconfig.json)
53.4/55可控的文件大小 — 采样的 520 个源文件中有 15 个超过 60KB
所用输入
primary_languageJavaScript
largest_source_bytes541,173
source_files_sampled520
oversized_source_files15
评分方式
0/40API 模式(OpenAPI/GraphQL/proto)
20/20MCP 服务器
40/40可运行示例 — examples
所用输入
example_dirsexamples
has_mcp_signal
api_schema_files

关键数据

231,806GitHub 星标
96贡献者
2,270最近 12 个月提交数
0距最近推送天数
14发布版本数
1巴士系数(bus factor)
32开放议题
crates.io, npm, PyPI软件包生态系统数

数据采集警告

  • 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

更多细节

Star 与 Fork 历史 0 ★ / 35,370 ⇿
0Star
35,370Fork

每颗 star 和每个 fork 的添加时间,来自 GitHub 并按天汇总。累计增长位于其构成来源——每日新增——的正上方,二者可相互对照:稳定的自然增长与短暂的突增形态截然不同。当这一差别可被衡量时,它会作为增长真实性予以报告。

仅显示最近的历史——该仓库超出采集窗口,因此未采集最早的历史记录。

34,20034,40034,60034,80035,00035,20035,40035,370922026-072026-072026-07
OpenSSF Scorecard 6.0 / 10
6.0综合

来自开源项目 OpenSSF Scorecard 的独立、工具无关的安全评估。每项检查奖励的是安全实践本身,而非特定供应商的工具。Scorecard 无法判定的检查项标记为 不适用,并从安全评分中剔除(绝不按零分计)。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
直接依赖 26
注册表软件包版本约束清单文件
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
全部依赖 571

来自 GitHub 依赖图的完整解析依赖集合:29 个直接依赖与 542 个间接(传递)软件包。仓库提交锁文件时,传递闭包才是完整的。

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

安装 npm:ecc-universal@2.0.0 会引入 7 个包(直接与传递):其中 0 个存在已知公告,0 个为直接依赖。

没有已知公告影响已评估的依赖。

公告表示依赖图中记录的版本落入某条公告的受影响范围。可达性未经分析,且依赖图包含开发与测试的版本固定——某项发现可能只涉及工具链而非交付的软件。

原始 JSON 报告 机器可读
{
  "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"
}

评分是信号,而非担保。 评分反映的是 GitHub 上公开可见的实践——不是代码审计,也不是安全保证。

缺失数据将被剔除并重新归一化权重,绝不按零分计。方法论已版本化并公开:指标 v1.13.0、模式 v0.23.0—— 完整方法论 · 指标知识库.

单项结果在整体记录中的位置: 汇总统计npm, PyPI.