Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-25 10:17 UTC

rangershi / dx

JavaScript · PythonMIT★ 0 stars⑂ 1 forksince Jan 2026View on GitHub ↗

rangershi/dx holds a health index of 44 out of 100, placing it in the At risk band. It scores highest on Sustainability & Governance (58/100) and lowest on Community & Adoption (32/100). It was last updated 5 days ago. A single contributor accounts for most of its recent work.

44
overall / 100
At risk

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

44
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

rangerPersonal account
11 followers24 public repossince Jan 2014

This repository is owned by a personal account. A single-owner project carries more continuity risk than an organization-backed one.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publish
npm@ranger1/dx0.1.1272,6531265 days ago

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

47At risk · 22% of overall
How it's scored
36/36Push recency — last push 5 days ago
14.5/36Commit cadence — 21/52 weeks with commits
18/18Commit volume — 261 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year261
human_commit_share1
days_since_last_push5
active_weeks_last_year21
How it's scored
0/27Ships releases — no releases published
0/36Release recency — no releases
0/27Release cadence — no releases
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

32At risk · 18% of overall
How it's scored
0/60Stars — 0 stars
0/25Forks — 1 forks
0/15Watchers — 0 watchers
Inputs used
forks1
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
How it's scored
45.7/80Monthly downloads — 2,653 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packages@ranger1/dx
dependents
ecosystemsnpm
total_downloads
monthly_downloads2,653
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

58Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
2/22.5Commit distribution — top contributor authored 91% of commits
4.1/13.5Contributor breadth — 3 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled3
top_contributor_share0.912
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
38.2/38.3PR acceptance — 21/21 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 1/30 approved changesets -- score normalized to 0
Inputs used
merged_prs21
open_issues0
closed_issues19
issue_closed_ratio1
closed_unmerged_prs0
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
7.8/25Owner reach — 11 followers of rangershi
22.2/25Track record — 24 public repos, account ~12 yr old
Inputs used
followers11
owner_typeUser
is_verified
owner_loginrangershi
public_repos24
account_age_days4,558
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 5 days ago
20/20Version history — 126 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packages@ranger1/dx
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Engineering Quality

Are baseline engineering and documentation practices in place?

40At risk · 20% of overall
How it's scored
0/24CI workflows
24/24Tests present
0/16Linter config
0/9.6Pre-commit hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
Inputs used
has_cino
has_testsyes
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentation

65Moderate
How it's scored
30/30README
25/25Documentation directory
0/15Documentation / homepage site
0/10Repository description
0/10Topics
10/10Wiki
Inputs used
topics
has_wikiyes
homepage
has_readmeyes
has_docs_diryes
has_descriptionno

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

40At risk · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 1/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — no data
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — no data
0/5Pinned-Dependencies — no data
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — no data
0/7.5Vulnerabilities — 45 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate2.5
Excluded from scoring (no data or not applicable): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@ranger1/dx@0.1.127 runtime dependency closure — what installing the published package pulls in — 2 packages. Reachability is not analyzed.

AI Readiness

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.

48At risk · 0% of overall
How it's scored
18/45Agent instructions — AGENTS.md (stub)
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 84 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.84
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes145
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
0/11Static type checking
10/10Reproducible environment — lockfile
6/10Demonstrated agent practice — 3 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — no data
Inputs used
has_nixno
has_testsyes
lockfilespackage-lock.json, pnpm-lock.yaml
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0.03
toolchain_manifests
dependency_bot_commit_share0
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.
How it's scored
0/45Type-checkable code — JavaScript without a type-check config
55/55Manageable file sizes — 0/102 source files over 60KB
Inputs used
primary_languageJavaScript
largest_source_bytes35,122
source_files_sampled102
oversized_source_files0
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — example
Inputs used
example_dirsexample
has_mcp_signalno
api_schema_files

Key facts

0GitHub stars
3contributors
261commits, last 12 months
5days since last push
0releases
1bus factor
0open issues
npmpackage ecosystems

Data collection warnings

  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

More detail

OpenSSF Scorecard 2.5 / 10
2.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-25 10:17 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
0CI-Tests0 out of 2 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 1/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
n/aDangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/aPackagingpackaging workflow not detected
n/aPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
n/aToken-PermissionsNo tokens found
0Vulnerabilities45 existing vulnerabilities detected
Direct dependencies 2
RegistryPackageVersion constraintManifest
npmstrip-json-comments^5.0.3package.json
npmyaml^2.8.1package.json
All dependencies not collected

The resolved dependency set could not be collected for this report: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Dependency advisories 0

Installing npm:@ranger1/dx@0.1.127 pulls in 2 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 1141,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "Shell": 6294,
        "Python": 90746,
        "JavaScript": 642671
      },
      "pushed_at": "2026-07-20T00:51:26Z",
      "created_at": "2026-01-23T13:29:28Z",
      "owner_type": "User",
      "updated_at": "2026-07-20T00:51:29Z",
      "description": null,
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "JavaScript",
      "significant_languages": [
        "JavaScript",
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": "ranger",
      "type": "User",
      "login": "rangershi",
      "company": null,
      "location": null,
      "followers": 11,
      "avatar_url": "https://avatars.githubusercontent.com/u/6543980?v=4",
      "created_at": "2014-01-30T11:54:23Z",
      "is_verified": null,
      "public_repos": 24,
      "account_age_days": 4558
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [],
      "recent_commits": [
        {
          "oid": "a9ee3fba19cc0ea6dac62727181eefe3175ff171",
          "body": "变更说明:\n- backend artifact-only 发布跳过目标工程依赖安装\n- 普通 backend、Vercel 与其他命令保留现有依赖检查\n- 增加依赖路由回归测试并升级版本至 0.1.127\n\nCloses: #40",
          "is_bot": false,
          "headline": "perf(deploy): skip dependencies for artifact release",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T12:46:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "886e77a34afd231cd2cc330c1d108f02c5728b30",
          "body": null,
          "is_bot": false,
          "headline": "dx 126",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T12:29:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c835ea2b802ec1a978f98943d5801c17f0e8f627",
          "body": null,
          "is_bot": false,
          "headline": "0.1.125",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T09:03:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "46bae45d4b17d7ea84dd00ea622fe0941f6d5d21",
          "body": null,
          "is_bot": false,
          "headline": "\"version\": \"0.1.124\"",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T08:26:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fdd29be11d03b6413085a1c769ae6819cde75de0",
          "body": null,
          "is_bot": false,
          "headline": "\"version\": \"0.1.124\"",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T08:26:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6395ba74d02cdd60797bce10372b0f68898a67c7",
          "body": null,
          "is_bot": false,
          "headline": "add fix error",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T05:36:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f1732f0ce7376a63a4f4e180f7fdfb0224fb90a",
          "body": null,
          "is_bot": false,
          "headline": "dx add brand",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-19T05:19:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6668fd2ccb59c26c2d4e36254f0bfd146e7b0409",
          "body": null,
          "is_bot": false,
          "headline": "Update package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-11T05:45:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dfd94640a0eaa9eae2341e1e4c59ed9c905bd86a",
          "body": "变更说明:\n- 防止隔离开发目录进入仓库状态\n\nRefs: #39",
          "is_bot": false,
          "headline": "chore: 忽略本地 git worktree 目录",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-11T02:54:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "54d2f49fd6222e3c00b3117c3284996932e1ab43",
          "body": "变更说明:\n- 按 TDD 拆分回归测试与最小实现步骤\n- 明确门禁和完整测试验证命令\n\nRefs: #39",
          "is_bot": false,
          "headline": "docs: 添加 backend E2E 参数透传实施计划",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-11T02:54:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1343f428f8d0d6fe2bedc93700c016fe764a8a73",
          "body": "变更说明:\n- 记录 shell 行尾注释导致测试参数被截断的根因\n- 明确注释感知参数拼接与 CLI 回归测试方案\n\nRefs: #39",
          "is_bot": false,
          "headline": "docs: 设计 backend E2E 测试名称透传修复",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-11T02:18:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f41afa95667f09bfd8f019d7be4aef17783459e9",
          "body": null,
          "is_bot": false,
          "headline": "透传 可以指定 运行某一个 E2 测试",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-10T14:08:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "11f91546e7f33d89cb525c74d405c257b71f03ef",
          "body": null,
          "is_bot": false,
          "headline": "增加 flag",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-09T12:47:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d4415f207811e558dc7b81b834a055a56c7eca1",
          "body": null,
          "is_bot": false,
          "headline": "优化技能",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-04T04:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2951ae1f77c70c0ad44d024969b965af6fa5a3f5",
          "body": null,
          "is_bot": false,
          "headline": "op handoff",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-02T15:49:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6ce3dfaf98db01d0b8bf39f7116360b43e9553c",
          "body": null,
          "is_bot": false,
          "headline": "去除自动触发",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-02T09:54:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "09a79347b3063e50dcdc8eeb17bdac2e5bf2c69d",
          "body": null,
          "is_bot": false,
          "headline": "update 115",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-07-02T09:48:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1ee3b6f67da07b04ccfbcf21be50cc8fe29ff74",
          "body": null,
          "is_bot": false,
          "headline": "feat: prevent appending maxWorkers for unit tests using Jest --runInBand",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-21T04:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc257fad280616b0f9a9bd2932837dbc52a04b4a",
          "body": null,
          "is_bot": false,
          "headline": "feat: enhance documentation for command execution and testing parameters",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-21T03:13:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5cf4ea86f6cf61ce5b24fc6f837f8911d4b9f85",
          "body": null,
          "is_bot": false,
          "headline": "feat: set default test workers to 8 for unit and e2e commands",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-21T03:05:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f500a8c383e27d5209f2b084f2d20ab07a879160",
          "body": "…nsion",
          "is_bot": false,
          "headline": "feat: update version to 0.1.112 and add enum-single-source audit dime…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-20T06:19:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9701082c23ab4ce587595c64429197c3bc28db9d",
          "body": "* fix: support multiple unit test paths\n\n变更说明:\n- 放开 test unit 的位置参数上限,保持 e2e 路径必填与非 unit 上限不变。\n- 收集 unit target 后的多个测试路径,按底层 runner 逐个归一化并透传。\n- 增加 unit 多路径参数解析和 Nx/Vitest 路径透传回归测试。\n\nRefs: shitgood-bradford54/ai-monorepo#6424\n\n* chore: sync pnpm lockfile\n\nRemove a stale self-dependency entry that no \n[…]\nage 保持支持多路径\n- 非 unit test usage 继续限制最多三个 positional\n- 增加 e2e usage 额外路径占位符的回归测试\n\nRefs: shitgood-bradford54/ai-monorepo#6424\n\n---------\n\nCo-authored-by: bradford54 <bradford54@users.noreply.github.com>",
          "is_bot": false,
          "headline": "fix: support multiple unit test paths (#38)",
          "author_name": "bradford54",
          "author_login": "bradford54",
          "committed_at": "2026-06-20T05:24:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ce84f10fedc6307b0e3a881fe0cf14e38bcfb494",
          "body": "…ured commands",
          "is_bot": false,
          "headline": "feat: implement dynamic command registration and execution for config…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-18T00:45:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5da723f0356eecc9cbe61250086c8d8c622d3507",
          "body": "… in deployment",
          "is_bot": false,
          "headline": "feat: update version to 0.1.110 and enhance environment flag handling…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-12T10:15:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "61d856485a128271edef9fbb1bbf5421a6d33b1a",
          "body": null,
          "is_bot": false,
          "headline": "feat: implement health check URL support using runtime environment PORT",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-12T09:43:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af73c11c7fea81d3a49dee0837347b8b0f0aeb43",
          "body": "…nd deployment",
          "is_bot": false,
          "headline": "feat: add environment-specific remote configuration support for backe…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-12T07:43:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8666f30b58978ad53677a3e05cba77f219fc6754",
          "body": "…ect target resolution",
          "is_bot": false,
          "headline": "feat: enhance e2e command handling with passthrough arguments and dir…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-11T09:50:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "188df1bffb2ace78565b34c01cc6943189158414",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.106 and modify skill description",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:23:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "24a011da9d90226a912856da8639d497abbec66e",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'feat/36-purge-deleted-skills'",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:21:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3bce9d0e0e17e750be950a6b90cde85c1b9d91bb",
          "body": "* feat: dx initial 清理历史已删除的 skill\n\n变更说明:\n- 硬编码 DELETED_SKILLS 名单(来自 git 历史中曾托管、现已从 skills/ 删除的 skill)\n- 新增 purgeSkills(dir, names):无条件彻底清理软链或真实目录\n- runCodexInitial 在 agents/claude/codex 三处对已删除名单执行 purge,并输出清理统计\n- 补充测试:验证三处的真实副本与软链均被清理,现存 skill 不受影响\n\nRefs: #36\n\n* fix: 修复审查问题 #C1 — 移除对已删除 superpowers \n[…]\n:\n- 将旧 managed skill 测试中的 packaged autospec 替换为 skill-c,避免与 DELETED_SKILLS 护栏冲突\n- 保留用例原语义:验证现存包内 skill 的 codex 旧副本清理与 claude 软链重建\n\nRefs: #36\n\n---------\n\nCo-authored-by: Your Name <mays87510@gmail.com>",
          "is_bot": false,
          "headline": "feat: dx initial 清理历史已删除的 skill (#37)",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-06-07T02:19:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c740a055f5dfe4de11fe6d43ca02430dc54579b3",
          "body": "变更说明:\n- 将旧 managed skill 测试中的 packaged autospec 替换为 skill-c,避免与 DELETED_SKILLS 护栏冲突\n- 保留用例原语义:验证现存包内 skill 的 codex 旧副本清理与 claude 软链重建\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复验证失败 #V1 — 更新现存 skill 测试数据",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:16:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "27e38fdb1791a31b30b69c251270cb1c460b2ac1",
          "body": "变更说明:\n- 抽出 lstatIfExists 统一处理 ENOENT 与非 ENOENT 错误\n- removeManagedNonSymlinkSkills 与 purgeSkills 共用该探测逻辑,减少重复分支且保持原有清理语义\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #m2 — 复用路径存在性探测",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:15:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80799295eb8c80cbdeecdeb231ad952520b543fb",
          "body": "变更说明:\n- assertDirExists 遇到存在但不是目录时直接抛出“不是目录”错误\n- 避免把非目录场景包装成“不存在或不可访问”,提升排障信息准确性\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #m4 — 保留非目录错误语义",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c90547632f97383f2c7fb4cac16be67fab2843ee",
          "body": "变更说明:\n- 在 DELETED_SKILLS 注释中补充 --name-only、sed 提取一级目录名和 sort -u 步骤\n- 明确名单来源是历史一级 skill 目录减去当前现存 skill 名单\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #m3 — 补全历史 skill 名单提取命令",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:14:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "717d93bcc04d065430d17fdea89ecec0ded8c397",
          "body": "变更说明:\n- 增加指向 agents 之外目录的 omc-reference 软链残留场景\n- 断言 purge 删除 claude 软链本身且不影响外部 target,避免测试依赖 agents target 被删除的巧合\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #M3 — 独立验证 claude 软链清理",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:14:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fca195d2e39f1ea8baeef3b1d03bea284a49e9a",
          "body": "变更说明:\n- 在 dx initial 同步前校验 DELETED_SKILLS 不得与当前包内 skills 重叠,避免刚同步的 skill 被 purge 清掉\n- 增加重叠场景回归测试,确保名单维护错误会快速失败\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #m1 — 增加已删除 skill 名单护栏",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:14:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "298e441b1f9889c623be89d81249d22e9eb43d1c",
          "body": "- lstat/rm 遇到非 ENOENT 错误(如权限)时改为 logger.warn 记录并继续,不再 throw\n- 返回值新增 failed 计数,汇总日志在有失败时输出告警\n- 避免单个陈旧副本的清理异常拖垮整个 skill 同步\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #M2 — purgeSkills 改为尽力清理不阻断主流程",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T02:00:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e783431e25e696f677527b8bd89d31a693ea982f",
          "body": "- 将 claude 软链目录的 purge 提到 agents/codex 真实副本之前\n- 避免中途失败时残留指向已删除 agents target 的悬空软链\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #M1 — 调整 purge 顺序先清软链宿主",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T01:49:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dbcda1b381494bbc4a307ea764bb63928522559a",
          "body": "- commit c6fd8a7 有意删除了 docs/superpowers/specs 与 plans 下的设计文档,\n  但 backend-artifact-deploy-doc-config 测试仍读取这些文件导致 ENOENT 失败\n- 移除对 designSpec/plan 文件的读取与断言,保留仍存在的 README/example README 断言\n\nRefs: #36",
          "is_bot": false,
          "headline": "fix: 修复审查问题 #C1 — 移除对已删除 superpowers 文档的测试断言",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T01:49:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c9557f81fa29d3527600ef3a5e72b9e8ccf72d7",
          "body": "变更说明:\n- 硬编码 DELETED_SKILLS 名单(来自 git 历史中曾托管、现已从 skills/ 删除的 skill)\n- 新增 purgeSkills(dir, names):无条件彻底清理软链或真实目录\n- runCodexInitial 在 agents/claude/codex 三处对已删除名单执行 purge,并输出清理统计\n- 补充测试:验证三处的真实副本与软链均被清理,现存 skill 不受影响\n\nRefs: #36",
          "is_bot": false,
          "headline": "feat: dx initial 清理历史已删除的 skill",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-07T01:44:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb58b40c3d053e010e2ebc786ae1c2191f34407a",
          "body": "…ent guidelines",
          "is_bot": false,
          "headline": "docs: enhance SKILL.md with detailed review process and issue managem…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-06T14:33:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ea980ebe6d4d7e540e94a221b122478e8150c56",
          "body": "…mensions",
          "is_bot": false,
          "headline": "feat: add backend audit fixer documentation for various compliance di…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-06-06T14:30:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6fd8a78bae5e069338e4ccfd43d928a3644c4e7",
          "body": null,
          "is_bot": false,
          "headline": "chore: update .gitignore to exclude .omx and .idea directories",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-19T07:28:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "49f540e11c9d2e257e7d1e68e87a0f51d065c316",
          "body": "…umentation",
          "is_bot": false,
          "headline": "chore: update version to 0.1.105 in package.json and add SKILL.md doc…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-19T07:26:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35aabb0b7aab0099d21cb64926a1c31abf7882d1",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.104 in package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-10T03:54:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d551b6e8b4d047cb508dd97ca81dbedf3bba972",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.101 in package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T10:12:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68ea8ef2eb03510c69449d4d02a8898b58920935",
          "body": null,
          "is_bot": false,
          "headline": "fix: ignore tool worktrees in nx graph",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T10:12:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b47bbf127bd0adaf3ea5f52473014fab6695c185",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.101 in package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T10:08:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5619986d3a18af9e6a52f903bf13e0d40daec511",
          "body": null,
          "is_bot": false,
          "headline": "fix: forward verbose flag to nx",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T10:06:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df9b539980f72e03c25fd65f7b6515ea822b05cd",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.101 in package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T09:53:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "448e0c430666444b2b434e84acb52ff2a9cbe66e",
          "body": null,
          "is_bot": false,
          "headline": "fix: ignore tool metadata env files",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-09T09:37:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "234831abf9a152cae3c218d6945f635a2bfb17bf",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.100 in package.json",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-05-07T11:40:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "be12121f222db48fc72d638a1a954a46edf39411",
          "body": "* chore: sync skill templates and initial copy behavior\n\n变更说明:\n- 将 doctor、git-release、multi-pr-feature-delivery 调整为显式调用,清理 doctor 旧固定脚本。\n- 调整 dx initial 对包内 skill 目录的同步逻辑,避免用户目录残留已删除文件。\n- 补充 initial 同步测试和 example 后端制品部署文档。\n\nRefs: #34\n\n* fix: 清理废弃 autospec skill\n\n- 将 autospec 加入 dx initial 的废弃 skill \n[…]\nnitial 目录替换与文档\n\n- 使用备份目录替换官方同名 skill,失败时恢复旧目录\n- 清理上次中断遗留的临时和备份目录\n- 补充 stale temp 清理与替换失败恢复测试\n- 删除 README 中已不存在的 pr-review-loop 章节\n\nRefs: #34\n\n---------\n\nCo-authored-by: Your Name <mays87510@gmail.com>",
          "is_bot": false,
          "headline": "chore: sync skill templates and initial copy behavior (#35)",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-05-07T11:39:49Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f6393de4335b4c34b168de9957a252dc84b7655e",
          "body": "… documentation",
          "is_bot": false,
          "headline": "feat: update version to 0.1.99 and add SKILL.md for autospec pipeline…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-17T08:38:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8a85d66bd47dc944b53a447dd6487010182a0d4f",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.98",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-11T09:48:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2be44ac1ff30ea803fd55eeda9f434b13ba0d28d",
          "body": "… and implement tests",
          "is_bot": false,
          "headline": "feat: add check for @prisma/client installation in ensurePrismaClient…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-11T09:48:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ff0cc54c600628ac2d18b881b236178df974a033",
          "body": "用户运行 dx help 后不知道可以用 dx help <命令> 查看详细用法,\n在输出末尾加一行引导文字。\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: 全局 help 末尾添加子命令帮助引导提示",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-03T07:57:16Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1e9bfdaa8af64a8360e5effd6eff206e638e43db",
          "body": "…nfig and help generation",
          "is_bot": false,
          "headline": "docs: update architecture and development documentation for strict co…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T15:32:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7dee57092a6ff8131f65c3c2ba64b25ccfe2b9a",
          "body": null,
          "is_bot": false,
          "headline": "chore: update version to 0.1.97 and add new entries to .gitignore",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T15:24:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22872d7496770c886690197fe9c7145f5c0a32b5",
          "body": "refactor: enforce strict dx config and dynamic help",
          "is_bot": false,
          "headline": "Merge pull request #33 from rangershi/codex/32-strict-dx-config-help",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-02T15:15:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c5ed322462dc3ad0922c934ddb36a8bc899d079",
          "body": "变更说明:\n- 移除旧的 CLI 与配置兼容层,统一只认 strict 新规范的环境键、命令入口和帮助输出\n- 将 help 切换为配置驱动的 schema/model/renderer 流程,并在运行时增加严格校验\n- 重写 demo/example 文档与配置示例,同时迁移 ai-monorepo 的 dx 配置到最新规范\n\nRefs: #32",
          "is_bot": false,
          "headline": "refactor: enforce strict dx config and dynamic help",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T15:12:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6eca67ebfc34200c36f6c5ac3708c5a0923f0bd5",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'codex/29-support-unit-test-filters'",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T08:09:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d77f4fabd7c9ace66884072be48a6f6022bfb6c8",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.1.96",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T08:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59ac6c1c3e10128c85a8414a12164a2678c8a4be",
          "body": "fix: normalize e2e file filters for nx targets",
          "is_bot": false,
          "headline": "Merge pull request #31 from rangershi/codex/29-support-unit-test-filters",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-02T08:02:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d45f7157f26222bb43f4b4768c2035ea6a7b11de",
          "body": "变更说明:\n- 为 dx test e2e 增加 --name 别名的回归测试,锁定用例名透传行为\n- 修正 nx test:e2e target 的文件路径归一化,在未显式声明 cwd 时优先回退到项目 e2e 目录\n- 保持 quantify 这类非 nx fileCommand 的现有行为不变\n\nRefs: #29",
          "is_bot": false,
          "headline": "fix: normalize e2e file filters for nx targets",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T07:56:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "35dee526b7a411ddb2d89c3a476af45c2289a164",
          "body": "fix: support unit test file and case filters in dx",
          "is_bot": false,
          "headline": "Merge pull request #30 from rangershi/codex/29-support-unit-test-filters",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-02T07:50:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d62210d447dd3f5c0ed5cca4c035e0ceabec0575",
          "body": "变更说明:\n- 为 dx test unit 增加 --name / --test-name-pattern 别名,并统一映射到 -t\n- 修正 nx test 项目的单测文件路径转发,按项目执行目录改写为相对路径\n- 扩展帮助文档和 CLI 回归测试,覆盖 Jest/Vitest 与 Nx target 场景\n\nRefs: #29",
          "is_bot": false,
          "headline": "fix: support unit test file and case filters in dx",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T07:45:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8287d1fbc157a8c19570177eac9a85789d4f32e7",
          "body": "…nning options",
          "is_bot": false,
          "headline": "feat: enhance error handling audit script with flexible directory sca…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T04:52:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a45899db61186cba19c4fd0f4f61bc5e5369ea0c",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.1.94",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T03:11:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cc7e57d6cf0696308e1e453da33d896dc4543143",
          "body": "…eature-checks\n\nrefactor: stop doctor from managing codex feature toggles",
          "is_bot": false,
          "headline": "Merge pull request #28 from rangershi/codex/fix/remove-doctor-codex-f…",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-02T03:10:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ede3f899e684d802d0aef3fc4bfc4de892e30cd",
          "body": "The doctor skill should focus on repairing executable tooling and bootstrap\nsteps, not on reading or mutating Codex feature flags. This removes the\nremaining `multi_agent` checks from the skill docs and shell workflow while\nkeeping `dx` installation and `dx initial` intact.\n\nConstraint: Doctor must \n[…]\natures|features enable|features list|experimental true|codex 命令不存在\" skills/doctor -S\nTested: bash -n skills/doctor/scripts/doctor.sh\nNot-tested: End-to-end execution of doctor.sh on a live workstation",
          "is_bot": false,
          "headline": "Stop doctor from managing Codex feature toggles",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T03:07:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dbb93b2def033306aa4ef2abd8af4735d0182be1",
          "body": null,
          "is_bot": false,
          "headline": "feat: remove deprecated skill directories during initialization",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-02T02:55:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6384970340ee433f794ab9d63a13888735afaddf",
          "body": "…e files",
          "is_bot": false,
          "headline": "chore: update .gitignore to exclude additional configuration and stat…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-01T16:26:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3707638ec7449354159c6ec2c94e110f46e9d2a8",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.1.92",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-01T16:25:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "594b1f23c2215a67c139cd53ddf2cd8b3569e7e0",
          "body": "…-skill-names\n\nrefactor: clean up doctor behavior and skill naming",
          "is_bot": false,
          "headline": "Merge pull request #27 from rangershi/codex/fix/26-cleanup-doctor-and…",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-01T16:19:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b74da7c8107bcd739767e8110e29e5c144dfd368",
          "body": "This change removes the remaining `~/.codex/config.toml` checks and writes\nfrom the doctor skill, while also folding in the current skill renames and\ncleanup changes already present in the working tree so the skills catalog\nlands in one coherent update.\n\nConstraint: Doctor must no longer read or rew\n[…]\nnts\\.orchestrator|agents\\.reviewer|agents\\.spark\" skills/doctor -S\nTested: bash -n skills/doctor/scripts/doctor.sh\nNot-tested: End-to-end execution of doctor.sh against a live workstation\nRelated: #26",
          "is_bot": false,
          "headline": "Stop doctor from mutating local codex config during skill maintenance",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-01T16:16:20Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "583ddfa5d324037c535e898729158ec44b066e7c",
          "body": "refactor: align packaged skills with repo layout",
          "is_bot": false,
          "headline": "Merge pull request #25 from rangershi/codex/fix/24-migrate-skills-layout",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-04-01T15:52:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f818a4947711bc39caae03b19abaf36ecd42f566",
          "body": "The repository now treats root-level `skills/` as the source of truth, so\nthis change moves tracked skill assets out of the old `codex/` layout,\nadds the newly introduced skill content, and rewrites `dx initial` to do\nonly one job: merge the packaged skills into `~/.codex/skills` and\n`~/.claude/skil\n[…]\nand `dx initial` in the same change\nTested: pnpm test\nTested: npm pack --dry-run\nNot-tested: Running globally installed `dx initial` against a real home directory outside the test harness\nRelated: #24",
          "is_bot": false,
          "headline": "Align skills packaging with the repo's new bootstrap layout",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-04-01T15:46:28Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f0b5d06cfde0bb5db353dbc7a58fdd9758425d58",
          "body": null,
          "is_bot": false,
          "headline": "feat: enhance unit test command handling and add path normalization",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-29T15:00:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a3cb2fffaabd3f8aebd078465d04ec8afb7a30d",
          "body": "…ompts",
          "is_bot": false,
          "headline": "feat: update review output format and validation rules in reviewer pr…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-19T06:08:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "200d417c037788df35d4b54eca34cdd2614e1d11",
          "body": null,
          "is_bot": false,
          "headline": "feat: add service URLs to commands and implement URL printing in stack",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-19T03:33:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dcfee509570c90a3b16121b463ad2d1908092319",
          "body": null,
          "is_bot": false,
          "headline": "fix: prismaSeed: true 问题",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-17T15:42:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a0c8ee1af085df3817b73f8676bef7528a074c87",
          "body": "Add configurable prisma db seed step that runs after migration\nand before symlink switch during remote deployment. Controlled\nvia `prismaSeed` config in commands.json (default: false).\n\nCo-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add prisma-seed phase to backend deploy pipeline",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-17T15:41:11Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a85d6d6394e7cd5557975e7213399198f71ed3af",
          "body": "Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: add design spec for deploy backend prisma seed phase",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-17T15:30:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1dfb35791a44c47620bef010d3a279ca82b747fa",
          "body": "…tignore",
          "is_bot": false,
          "headline": "chore: update stagewise version in commands.json and add .omc/ to .gi…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-17T15:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1594508c70715831e5f6c2415d320c4691397d0",
          "body": null,
          "is_bot": false,
          "headline": "chore: bump version to 0.1.87",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-16T09:50:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f519b51cc53a8d38d0202b3ecdcafa04a0f22859",
          "body": "…targets\n\nfeat: add config-driven guarded e2e target execution",
          "is_bot": false,
          "headline": "Merge pull request #23 from rangershi/codex/configurable-backend-e2e-…",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-03-16T09:47:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55fdba9b137cac220f84a834ecc31d2d2ebd9198",
          "body": "变更说明:\n- 在 dx test 命令中增加 requiresPath/fileCommand 驱动的 E2E target 约束与执行路径。\n- 禁止对受保护 target 使用无路径执行与 `all` 全量调用。\n- 更新主配置、示例配置、帮助文档与测试覆盖,补充新增 `test/test-command-e2e-targets.test.js`。\n\nRefs: #22",
          "is_bot": false,
          "headline": "feat: add config-driven guarded e2e target execution",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-16T09:43:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ae6679febb996fa6c5dd98ddbd9c0e3b4da47ae",
          "body": null,
          "is_bot": false,
          "headline": "docs: refine e2e target design and add plan",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-16T09:07:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9fe14331252cc2292aa188fdfd6e57eee9b5122",
          "body": null,
          "is_bot": false,
          "headline": "docs: add configurable backend e2e targets design",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-16T08:52:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5654d337b46edf12f72ecdca3ea542b6dc1c14d3",
          "body": "…re preserved",
          "is_bot": false,
          "headline": "feat: add required codex configuration and ensure existing settings a…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-14T15:17:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ee442d0a5f9354b645ca851448d7b38bb649111",
          "body": null,
          "is_bot": false,
          "headline": "fix: 添加 一些skill 去掉运行时就一些警告噪音",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-14T15:01:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "abd70cb643454efffdd2cd6a5021fa511c87f719",
          "body": "…o README",
          "is_bot": false,
          "headline": "feat: add health check configuration and deployment success summary t…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-13T15:28:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cb21eafa76154ecff32d3680c9b16556631dfeab",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'codex/fix/20-backend-artifact-deploy'",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-13T10:48:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5cc14bd65c10e394b6f77c83312cd169b9dcc2c2",
          "body": "…ry and health check configuration",
          "is_bot": false,
          "headline": "feat: enhance backend artifact deployment with detailed success summa…",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-13T10:46:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a2c210610be1128e29697075fa9b4193f497136",
          "body": null,
          "is_bot": false,
          "headline": "feat: add health check verification to backend artifact deployment",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-13T10:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d8f26057f32b31c2c2711e1b73ff276c7c93a15",
          "body": null,
          "is_bot": false,
          "headline": "fix: bump version to 0.1.83",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-13T01:09:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80edb22cf38d84cd087ea876dd36ae6ef694e72a",
          "body": "…eploy\n\nfix: 修复后端制品部署的校验与依赖处理",
          "is_bot": false,
          "headline": "Merge pull request #21 from rangershi/codex/fix/20-backend-artifact-d…",
          "author_name": "ranger",
          "author_login": "rangershi",
          "committed_at": "2026-03-13T01:07:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b7075d4d569fb9f552e44467a5a534b1d2b3253f",
          "body": "变更说明:\n- 为制品打包 tar 增加稳定环境变量,并改为使用归档文件名生成 checksum\n- 修正远端 bundle 解压与 checksum 校验逻辑,避免路径不一致导致部署失败\n- 在远端部署返回失败结果时直接抛出阶段化异常\n- 从应用和根包依赖中补齐运行时所需依赖,并补充相关测试覆盖\n\nRefs: #20",
          "is_bot": false,
          "headline": "fix: 修复后端制品部署的校验与依赖处理",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-12T16:57:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad6efd55eb0c40571bba0fddb2169398850020c9",
          "body": null,
          "is_bot": false,
          "headline": "feat: remove some",
          "author_name": "Your Name",
          "author_login": "vercel87510",
          "committed_at": "2026-03-12T16:14:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 0,
      "commits_last_year": 261,
      "latest_release_at": null,
      "latest_release_tag": null,
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 21,
      "days_since_latest_release": null,
      "mean_days_between_releases": null
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": 28,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@ranger1/dx",
          "exists": true,
          "license": "MIT",
          "keywords": [],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@ranger1/dx",
          "is_deprecated": false,
          "latest_version": "0.1.127",
          "repository_url": "https://github.com/rangershi/dx",
          "versions_count": 126,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2653,
          "first_published_at": "2026-01-23T14:09:16.920000Z",
          "latest_published_at": "2026-07-19T12:48:00.709000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 1,
      "stars": 0,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-06-18",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 1,
        "total_forks": 1
      },
      "star_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_stars": 0,
        "collected_at": null
      },
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "example"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 35122,
      "source_files_sampled": 102,
      "oversized_source_files": 0,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 145
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 2,
        "malicious_count": 0,
        "assessed_package": "npm:@ranger1/dx@0.1.127",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "strip-json-comments",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^5.0.3"
        },
        {
          "name": "yaml",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.8.1"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 21,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 19,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "vercel87510",
          "commits": 238,
          "avatar_url": "https://avatars.githubusercontent.com/u/241711888?v=4"
        },
        {
          "type": "User",
          "login": "rangershi",
          "commits": 22,
          "avatar_url": "https://avatars.githubusercontent.com/u/6543980?v=4"
        },
        {
          "type": "User",
          "login": "bradford54",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/188642786?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.912
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "pnpm-lock.yaml"
      ],
      "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": 0,
            "reason": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
            "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": 0,
            "reason": "Found 1/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no 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 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "45 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a9ee3fba19cc0ea6dac62727181eefe3175ff171",
        "ran_at": "2026-07-25T10:17:34Z",
        "aggregate_score": 2.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": null,
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-06-20T05:24:51Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/rangershi/dx",
    "host": "github.com",
    "name": "dx",
    "owner": "rangershi"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 44,
      "inputs": {
        "security": 40,
        "vitality": 47,
        "community": 32,
        "governance": 58,
        "engineering": 40
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "at_risk",
        "name": "Vitality",
        "value": 47,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 78,
            "inputs": {
              "commits_last_year": 261,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 21
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "21/52 weeks with commits",
                "points": 14.5,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 21
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "261 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 261
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "critical",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 1,
            "inputs": {
              "releases_count": 0
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "no releases published",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases_published",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "no releases",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_releases",
                    "params": {}
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 5,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 5 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "at_risk",
        "name": "Community & Adoption",
        "value": 32,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 1,
              "stars": 0,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "0 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "1 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "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": 57,
            "inputs": {
              "packages": [
                "@ranger1/dx"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 2653
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,653 downloads/month across npm",
                "points": 45.7,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2653,
                      "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": 58,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.912
            },
            "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 91% of commits",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 91
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "excellent",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "merged_prs": 21,
              "open_issues": 0,
              "closed_issues": 19,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 0
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "21/21 decided PRs merged",
                "points": 38.2,
                "status": "met",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 21,
                      "decided": 21
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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": 50,
            "inputs": {
              "followers": 11,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "rangershi",
              "public_repos": 24,
              "account_age_days": 4558
            },
            "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": "11 followers of rangershi",
                "points": 7.8,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 11,
                      "login": "rangershi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "24 public repos, account ~12 yr old",
                "points": 22.2,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 24
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 12
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@ranger1/dx"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "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 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "126 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 126
                    }
                  }
                ],
                "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": "at_risk",
        "name": "Engineering Quality",
        "value": 40,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": null,
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": false
            },
            "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": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 40,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 25,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 2.5
            },
            "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": "0 out of 2 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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 1/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "45 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "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:@ranger1/dx@0.1.127 runtime dependency closure — what installing the published package pulls in — 2 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:@ranger1/dx@0.1.127",
                  "assessed": 2
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 2,
              "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": 2,
              "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
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 48,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "moderate",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 58,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.84,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 145
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md (stub)",
                "points": 18,
                "status": "partial",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  },
                  {
                    "code": "agent_instructions_stub",
                    "params": {}
                  }
                ],
                "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": "84 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 84,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 42,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.03,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "3 of the last 100 commits agent-authored or agent-credited",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 3,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "JavaScript",
              "largest_source_bytes": 35122,
              "source_files_sampled": 102,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "JavaScript without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "JavaScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/102 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 102,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "example"
              ],
              "has_mcp_signal": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "example",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "example"
                    }
                  }
                ],
                "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": [
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T10:17:40.564498Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rangershi/dx.svg",
  "full_name": "rangershi/dx",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.