Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 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 р.Переглянути на GitHub ↗

affaan-m/ECC має індекс здоров’я 79 зі 100, що відповідає смузі «Добрий». Найвищий показник — Community & Adoption (90/100), найнижчий — Sustainability & Governance (67/100). Останнє оновлення — сьогодні. Більшість нещодавньої роботи виконує один учасник.

79
загалом / 100
Добрий

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

79
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

Affaan MustafaОсобистий обліковий запис
8 561 підписник27 публічних репозиторіївз лют. 2023 р.Itô

Цей репозиторій належить особистому обліковому запису. Проєкт з єдиним власником несе більший ризик безперервності, ніж підтримуваний організацією.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npmecc-universal2.0.015 716841 день томуaiagentsskillshooksmcprulesharnessagent-harnesstddcode-reviewsecurityautomationbest-practicescursorcursor-ideopencodecodexpresentationsslides
PyPIllm-abstractionвказує на інший репозиторій — не оцінюється0.3.0-333 дні тому

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

86Відмінний · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 0 дн. тому
18.7/36Ритм комітів — 27/52 тижнів із комітами
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
Як обчислюється оцінка
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
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
13.5/13.5Кодекс поведінки
0/7.2Шаблон issue
6.3/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductтак
has_pull_request_templateтак
Як обчислюється оцінка
56/80Щомісячні завантаження — 15 716 завантажень/місяць у npm
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Вирішення issue — закрито 95% issue
20.2/38.3Прийняття PR — злито 888/1 685 вирішених PR
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Охоплення власника — 8 561 підписників у affaan-m
17.5/25Послужний список — 27 публічних репозиторіїв, вік облікового запису ~3 р.
Використані вхідні дані
followers8 561
owner_typeUser
is_verified
owner_loginaffaan-m
public_repos27
account_age_days1 263
Виключено з оцінювання (немає даних або не застосовно): Верифікований домен. Залишкові ваги перенормовано.

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 41 дн. тому
20/20Історія версій — 8 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesecc-universal
ecosystemsnpm
any_deprecatedні
min_days_since_publish41

Інженерна якість

Чи наявні базові інженерні практики та документація?

84Добрий · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 10 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — 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
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей npm:ecc-universal@2.0.0 — тим, що тягне за собою встановлення опублікованого пакета, — 7 пакетів. Досяжність не аналізується.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 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/11Конфігурація лінтера / форматера — eslint.config.js
11/11Статична перевірка типів — .opencode/tsconfig.json
10/10Відтворюване середовище — lockfile
10/10Підтверджена практика роботи з агентами — 16 з останніх 100 комітів створено агентом або з його зазначенням
8/8Автоматизоване супроводження — 10 з останніх 100 комітів — автоматичні оновлення залежностей
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Керовані розміри файлів — 15/520 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageJavaScript
largest_source_bytes541 173
source_files_sampled520
oversized_source_files15
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
20/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalтак
api_schema_files

Ключові факти

231 806зірок GitHub
96контриб'юторів
2 270комітів за останні 12 місяців
0днів від останнього пушу
14релізів
1бас-фактор
32відкритих issue
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

Докладніше

Історія зірок і форків 0 ★ / 35 370 ⇿
0Зірки
35 370Форки

Коли додано кожну зірку й форк — зібрано з 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 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
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.