Raw JSON report machine-readable
{
"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"
}