Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-25 10:17 UTC

rangershi / dx

JavaScript · PythonMIT★ 0 estrellas⑂ 1 forkdesde ene 2026Ver en GitHub ↗

rangershi/dx tiene un índice de salud de 44 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Sustainability & Governance (58/100) y la más baja, Community & Adoption (32/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

44
global / 100
En riesgo

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

44
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

rangerCuenta personal
11 seguidores24 repositorios públicosdesde ene 2014

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

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicación
npm@ranger1/dx0.1.1272653126hace 5 días

Métricas por categoría

Vitalidad

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

47En riesgo · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
14.5/36Cadencia de commits — 21/52 semanas con commits
18/18Volumen de commits — 261 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year261
human_commit_share1
days_since_last_push5
active_weeks_last_year21
Cómo se puntúa
0/27Publica versiones — sin versiones publicadas
0/36Recencia de las versiones — sin versiones
0/27Cadencia de publicación — sin versiones
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count0
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

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

32En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 0 estrellas
0/25Forks — 1 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks1
stars0
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
45.7/80Descargas mensuales — 2653 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@ranger1/dx
dependents
ecosystemsnpm
total_downloads
monthly_downloads2653
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

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

58Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
2/22.5Distribución de commits — el principal contribuyente firma el 91% de los commits
4.1/13.5Amplitud de contribuyentes — 3 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled3
top_contributor_share0,912
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
38.2/38.3Aceptación de PR — 21/21 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 1/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs21
open_issues0
closed_issues19
issue_closed_ratio1
closed_unmerged_prs0
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
7.8/25Alcance del propietario — 11 seguidores de rangershi
22.2/25Trayectoria — 24 repos públicos, cuenta de ~12 años
Datos de entrada utilizados
followers11
owner_typeUser
is_verified
owner_loginrangershi
public_repos24
account_age_days4558
Excluidos de la puntuación (sin datos o no aplicable): Dominio verificado. Los pesos restantes se han renormalizado.
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 126 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@ranger1/dx
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

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

40En riesgo · 20% del índice global
Cómo se puntúa
0/24Flujos de trabajo de CI
24/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 2 merged PRs checked by a CI test -- score normalized to 0
Datos de entrada utilizados
has_cino
has_tests
has_editorconfigno
has_linter_configno
has_precommit_configno

Documentación

65Moderado
Cómo se puntúa
30/30README
25/25Directorio de documentación
0/15Sitio de documentación / página del proyecto
0/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepage
has_readme
has_docs_dir
has_descriptionno

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

40En riesgo · 16% del índice global
Cómo se puntúa
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
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 — sin datos
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — 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 — sin datos
0/5Pinned-Dependencies — sin datos
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 — sin datos
0/7.5Token-Permissions — sin datos
0/7.5Vulnerabilities — 45 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate2,5
Excluidos de la puntuación (sin datos o no aplicable): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages2
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de npm:@ranger1/dx@0.1.127 —lo que arrastra la instalación del paquete publicado—: 2 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

48En riesgo · 0% del índice global
Cómo se puntúa
18/45Instrucciones para agentes — AGENTS.md (esbozo)
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 84 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,84
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes145
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
0/11Configuración de lint / formato
0/11Verificación estática de tipos
10/10Entorno reproducible — lockfile
6/10Práctica demostrada con agentes — 3 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — sin datos
Datos de entrada utilizados
has_nixno
has_tests
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
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Pinned-Dependencies. Los pesos restantes se han renormalizado.
Cómo se puntúa
0/45Código verificable por tipos — JavaScript sin configuración de verificación de tipos
55/55Tamaños de archivo manejables — 0/102 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageJavaScript
largest_source_bytes35.122
source_files_sampled102
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — example
Datos de entrada utilizados
example_dirsexample
has_mcp_signalno
api_schema_files

Datos clave

0estrellas de GitHub
3contribuidores
261commits en los últimos 12 meses
5días desde el último push
0versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

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

Más detalle

OpenSSF Scorecard 2.5 / 10
2.5agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-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/dDangerous-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/dPackagingpackaging workflow not detected
n/dPinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
n/dToken-PermissionsNo tokens found
0Vulnerabilities45 existing vulnerabilities detected
Dependencias directas 2
RegistroPaqueteRestricción de versiónManifiesto
npmstrip-json-comments^5.0.3package.json
npmyaml^2.8.1package.json
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Avisos de dependencias 0

Instalar npm:@ranger1/dx@0.1.127 arrastra 2 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "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"
}

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

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

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