Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-27 22:50 UTC

AlphaTechini / doc-fetch

Dynamic documentation fetching CLI that converts entire documentation sites to single markdown files for AI/LLM consumption

Svelte · GoSin licencia detectada★ 1 estrella⑂ 0 forksdesde feb 2026Ver en GitHub ↗

AlphaTechini/doc-fetch tiene un índice de salud de 49 sobre 100, lo que lo sitúa en la banda En riesgo. Su puntuación más alta es Vitality (76/100) y la más baja, Security (27/100). Se actualizó por última vez hace 6 días. Una sola persona concentra la mayor parte del trabajo reciente.

49
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.

49
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

Rehoboth IniCuenta personal
2 seguidores95 repositorios públicosdesde mar 2025

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ónEtiquetas
Gogithub.com/AlphaTechini/doc-fetch/v2v2.5.11-18hace 6 días
PyPIdoc-fetch2.5.11-28hace 6 díasdocumentationaillmmarkdowncrawlersecurity
npmdoc-fetch-cli2.5.11254737hace 6 díasdocumentationaillmmarkdowncrawlersecurity

Métricas por categoría

Vitalidad

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

76Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 6 días
2.8/36Cadencia de commits — 4/52 semanas con commits
18/18Volumen de commits — 108 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year108
human_commit_share1
days_since_last_push6
active_weeks_last_year4
Cómo se puntúa
27/27Publica versiones — 12 versiones publicadas
36/36Recencia de las versiones — última versión hace 6 días
27/27Cadencia de publicación — una versión cada ~16,7 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count12
latest_release_tagv2.5.11
releases_from_tagsno
days_since_latest_release6
mean_days_between_releases16,7

Comunidad y Adopción

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

30En riesgo · 18% del índice global
Cómo se puntúa
0/60Estrellas — 1 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
0/22.5Licencia — no se detectó ningún archivo de licencia
18/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_licenseno
has_contributing
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
45.4/80Descargas mensuales — 2547 descargas/mes en go, npm, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packagesgithub.com/AlphaTechini/doc-fetch/v2, doc-fetch, doc-fetch-cli
dependents
ecosystemsgo, npm, pypi
total_downloads
monthly_downloads2547
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?

51Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0/22.5Distribución de commits — el principal contribuyente firma el 100% de los commits
1.4/13.5Amplitud de contribuyentes — 1 contribuyentes
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Datos de entrada utilizados
bus_factor1
contributors_sampled1
top_contributor_share1
Cómo se puntúa
46.8/46.8Resolución de issues — 100% de issues cerradas
0/38.3Aceptación de PR — sin PR decididos o sin datos
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs0
open_issues0
closed_issues1
issue_closed_ratio1
closed_unmerged_prs0
Excluidos de la puntuación (sin datos o no aplicable): Aceptación de PR. Los pesos restantes se han renormalizado.
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
3.4/25Alcance del propietario — 2 seguidores de AlphaTechini
15.7/25Trayectoria — 95 repos públicos, cuenta de ~1 años
Datos de entrada utilizados
followers2
owner_typeUser
is_verified
owner_loginAlphaTechini
public_repos95
account_age_days492
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 — 3 paquete(s) en go, npm, pypi
35/35Recencia de publicación — última publicación hace 6 días
20/20Historial de versiones — 37 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packagesgithub.com/AlphaTechini/doc-fetch/v2, doc-fetch, doc-fetch-cli
ecosystemsgo, npm, pypi
any_deprecatedno
min_days_since_publish6

Calidad de Ingeniería

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

54Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 3 flujo(s) de trabajo
0/24Pruebas presentes
0/16Configuración de linter
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_testsno
has_editorconfigno
has_linter_configno
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

90Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://doc-fetch.vercel.app
10/10Descripción del repositorio
0/10Topics
10/10Wiki
Datos de entrada utilizados
topics
has_wiki
homepagehttps://doc-fetch.vercel.app
has_readme
has_docs_dir
has_description

Seguridad

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

27Crítico · 16% del índice global
Cómo se puntúa
0/7.5Binary-Artifacts — binaries present in source code
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — sin datos
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
0/2.5Licencia — license file not detected
7.5/7.5Maintained — 30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
5/5Security-Policy — security policy file detected
0/7.5Signed-Releases — Project has not signed or included provenance with any releases.
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 42 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated17
scorecard_versionv5.5.0
checks_inconclusive1
scorecard_aggregate2,7
Excluidos de la puntuación (sin datos o no aplicable): ci_tests. Los pesos restantes se han renormalizado.

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.

39En riesgo · 0% del índice global
Cómo se puntúa
0/45Instrucciones para agentes — sin CLAUDE.md / AGENTS.md / reglas de editor
0/15Documentación legible por máquinas (llms.txt)
22.9/40Historial de commits legible — 43 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,43
agent_instruction_files
agent_instruction_max_bytes
Cómo se puntúa
12.6/18Arranque con un solo comando — go.mod (convención del toolchain, sin ejecutor de tareas)
0/22Pruebas automatizadas
0/11Configuración de lint / formato
11/11Verificación estática de tipos — website/tsconfig.json
10/10Entorno reproducible — lockfile
0/10Práctica demostrada con agentes — ningún commit con autoría de agente entre los últimos 100
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_testsno
lockfilesgo.sum, package-lock.json, pnpm-lock.yaml
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configswebsite/tsconfig.json
agent_commit_share0
toolchain_manifestsgo.mod
dependency_bot_commit_share0
Cómo se puntúa
27/45Código verificable por tipos — Svelte con configuración de verificación de tipos (website/tsconfig.json)
55/55Tamaños de archivo manejables — 0/30 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageSvelte
largest_source_bytes15.128
source_files_sampled30
oversized_source_files0
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

1estrellas de GitHub
1contribuidores
108commits en los últimos 12 meses
6días desde el último push
12versiones publicadas
1factor bus
0issues abiertas
Go, npm, PyPIecosistemas de paquetes

Advertencias de recopilación de datos

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Could not fetch npm package 'docfetch-website' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

OpenSSF Scorecard 2.7 / 10
2.7agregado

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-27 22:50 UTC

0Binary-Artifactsbinaries present in source code
0Branch-Protectionbranch protection not enabled on development/release branches
n/dCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
0Licenselicense file not detected
10Maintained30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities42 existing vulnerabilities detected
Dependencias directas 5
RegistroPaqueteRestricción de versiónManifiesto
Gogithub.com/PuerkitoBio/goqueryv1.8.1go.mod
Gogolang.org/x/netv0.17.0go.mod
Gogolang.org/x/timev0.14.0go.mod
npm@vercel/speed-insights^1.3.1website/package.json
npmmarked^17.0.3website/package.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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": false,
      "size_kb": 258661,
      "has_wiki": true,
      "homepage": "https://doc-fetch.vercel.app",
      "languages": {
        "Go": 55985,
        "HTML": 286,
        "Python": 9159,
        "Svelte": 90046,
        "JavaScript": 16970,
        "TypeScript": 6664
      },
      "pushed_at": "2026-07-21T03:07:21Z",
      "created_at": "2026-02-20T07:36:16Z",
      "owner_type": "User",
      "updated_at": "2026-07-21T03:04:53Z",
      "description": "Dynamic documentation fetching CLI that converts entire documentation sites to single markdown files for AI/LLM consumption",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": null,
      "default_branch": "main",
      "license_spdx_raw": null,
      "primary_language": "Svelte",
      "significant_languages": [
        "Svelte",
        "Go"
      ]
    },
    "owner": {
      "blog": "cyberpunkinc.xyz",
      "name": "Rehoboth Ini",
      "type": "User",
      "login": "AlphaTechini",
      "company": null,
      "location": null,
      "followers": 2,
      "avatar_url": "https://avatars.githubusercontent.com/u/204508938?v=4",
      "created_at": "2025-03-22T19:26:40Z",
      "is_verified": null,
      "public_repos": 95,
      "account_age_days": 492
    },
    "license": {
      "state": "absent",
      "spdx_id": null,
      "raw_spdx": null,
      "file_present": false,
      "scorecard_found": false,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v2.5.11",
          "kind": "patch",
          "published_at": "2026-07-21T03:09:16Z"
        },
        {
          "tag": "v2.5.10",
          "kind": "patch",
          "published_at": "2026-07-21T02:54:01Z"
        },
        {
          "tag": "v2.5.9",
          "kind": "patch",
          "published_at": "2026-07-21T01:49:21Z"
        },
        {
          "tag": "v2.5.8",
          "kind": "patch",
          "published_at": "2026-07-20T12:46:23Z"
        },
        {
          "tag": "v2.5.7",
          "kind": "patch",
          "published_at": "2026-07-15T15:13:18Z"
        },
        {
          "tag": "v2.5.6",
          "kind": "patch",
          "published_at": "2026-07-15T14:20:21Z"
        },
        {
          "tag": "v2.5.5",
          "kind": "patch",
          "published_at": "2026-07-15T14:21:33Z"
        },
        {
          "tag": "v2.5.4",
          "kind": "patch",
          "published_at": "2026-07-15T14:25:49Z"
        },
        {
          "tag": "v2.0.5",
          "kind": "patch",
          "published_at": "2026-02-22T08:48:31Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-02-20T16:00:22Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-02-20T11:51:03Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-02-20T08:22:20Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "aa905c59bfccc0ae925affe336c9b6fd4b53d69e",
          "body": null,
          "is_bot": false,
          "headline": "Fix Go v2 module versioning",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-21T03:04:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "991d164a71f592605cbb7c07e1d46dd19a209847",
          "body": null,
          "is_bot": false,
          "headline": "Fix macOS release asset download",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-21T02:52:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "10d610017d61008b804c47822d738d949c658209",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.10: add stale install cleanup",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-21T02:46:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5b3967ae0de321cf46a03556698e4703675af545",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.9: add update diagnostics",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-21T01:46:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bb31f1415bf0b9e7e8fd34b2fc9b8f68c21eb41a",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.8: publish complete platform binaries",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-20T12:43:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdfc8e024902cb102b669d7b01dd0e279859f0a3",
          "body": "…per, bump version",
          "is_bot": false,
          "headline": "v2.5.7: fix .npmignore to include Windows binary, platform-aware wrap…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T15:11:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a31f7f5d02d55eadd406e054aa2636982fff5d7",
          "body": null,
          "is_bot": false,
          "headline": "Update Python CLI download URL to v2.5.6",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T14:27:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "63a10798e81a411d7ead0b75a7c9d20687750603",
          "body": "…Releases",
          "is_bot": false,
          "headline": "v2.5.6: add --version flag, postinstall downloads binary from GitHub …",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T14:07:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f9f03bfced5ef0518fda55e6a07717983e1f4fe",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.5: fix llmWriter channel deadlock with llmPending WaitGroup",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T13:29:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1205e14e3ebb79d87b7a860a1ae8a277833a44b",
          "body": "…g, depth tracking fix",
          "is_bot": false,
          "headline": "v2.5.4: domain filter, incremental llm.txt writing, fragment strippin…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T12:40:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6cbd4495ed7bd0516b22166f5c1ca80f30b839c",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.3: bump version, rebuild binaries",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T11:11:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0b71d158652e07717f283d390c6d616bef468ab",
          "body": null,
          "is_bot": false,
          "headline": "v2.5.2: rebuild binaries with deadlock and link extraction fixes",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T11:06:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3470d25e8ea4e42a8a45bf39c48422afc9611e9a",
          "body": null,
          "is_bot": false,
          "headline": "Remove accidentally committed docs.md, add to gitignore",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T10:51:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "efeb588bb194c9fbc82ed0cf5d908c9dce880461",
          "body": "…nt check, filter non-HTTP URLs",
          "is_bot": false,
          "headline": "v2.5.2: fix deadlock in submitPage, move link extraction before conte…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-15T10:51:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bf461394948e8db3d0d597e82496e46ee202a10",
          "body": null,
          "is_bot": false,
          "headline": "Fix repository.url case: AlphaTechini for provenance match",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T15:17:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2ac5ef9014fed95b350d509fa1080edb89785f69",
          "body": "…login-oidc",
          "is_bot": false,
          "headline": "Fix npm OIDC: Node 24 for npm 11.x OIDC support, remove non-existent …",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T15:15:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "96fa050dbabb816cb94778319b5e6370190f5695",
          "body": null,
          "is_bot": false,
          "headline": "Fix repo URL case, use npm-cli-login-oidc for auth, remove token",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T15:12:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5853a2ecb5ca578c2d9425f1fb8e98f30ac39177",
          "body": null,
          "is_bot": false,
          "headline": "Add NODE_AUTH_TOKEN env var to npm publish step",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T15:04:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f4379008adbd8e1eb446927a3d2296861cf7ce0",
          "body": "…:read",
          "is_bot": false,
          "headline": "Align npm workflow with OIDC template: fix registry-url, add contents…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:58:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c62e5a2af64b32cd638832924e6d0ec738bbd50",
          "body": null,
          "is_bot": false,
          "headline": "npm publish: remove --provenance flag, add --access public",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:37:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6ec2f766d206a277220402f6f9ab2f5ea047aee",
          "body": null,
          "is_bot": false,
          "headline": "Fix package URLs to point to doc-fetch.vercel.app",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:36:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2ac7f1ac86b6d4f3426de1a146800dd8e236e37",
          "body": "…ples",
          "is_bot": false,
          "headline": "Update README: fix npm install name, website URL, llm.txt format exam…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:31:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "14781010946ad0c61a6816b7744582f58b296025",
          "body": null,
          "is_bot": false,
          "headline": "Remove stale build/ and dist/ directories, add to .gitignore",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:18:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9184047f60511322fdb4d0cdacd4624dfe034933",
          "body": "…to v2.5.1",
          "is_bot": false,
          "headline": "Fix flake8 F824: remove unused global BINARY_NAME, bump download URL …",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:08:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b24388dea7864a513e02a02d642f9a4894f53bd",
          "body": null,
          "is_bot": false,
          "headline": "Switch npm workflow to OIDC trusted publisher (no tokens)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:01:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "589782d7a08566043447ae92016c120a8676ed1c",
          "body": null,
          "is_bot": false,
          "headline": "Fix npm workflow to publish to npmjs.org on tags",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T14:00:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "758f78bf896f464369bb39e2974f12c10cef74e9",
          "body": null,
          "is_bot": false,
          "headline": "Add PyPI trusted publisher job to conda workflow",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T13:54:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c01a1091859a89b2bb48e8a53c632abc7b1c3b62",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.5.1, add environment.yml, fix conda CI workflow",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T13:49:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c0068aa56451b43be759dd30c5c9b06b25e81ce",
          "body": "This workflow builds a Python package using Conda, sets up Python 3.10, installs dependencies, lints the code with flake8, and runs tests with pytest.",
          "is_bot": false,
          "headline": "Add GitHub Actions workflow for Python package with Conda",
          "author_name": "Rehoboth Ini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T12:41:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f89fb14da351075a52425efac3b9b850bdc58e4f",
          "body": "This workflow runs tests and publishes a Node.js package to GitHub Packages upon release creation.",
          "is_bot": false,
          "headline": "Add GitHub Actions workflow for npm package publishing",
          "author_name": "Rehoboth Ini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T12:38:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "88aa1cc50fd146aded824eee569b5366045b3cec",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.5.0 and fix binary download URLs",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T12:28:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e769a4cd3f9601b5357e8edda6e19c7448b6757c",
          "body": "- dom_walker.go: Look ahead past links to capture trailing text in context.\n  Add ExtractNavLinks() to scan nav/sidebar/TOC/menu areas for links.\n- llmtxt.go: Include context/description alongside link entries using\n  standard [Title](URL): Description format.\n- fetcher_optimized.go: Call nav link extraction, enrich anchor/fragment\n  links with target element heading+content, rebuild binaries.",
          "is_bot": false,
          "headline": "Improve link context capture and add sidebar/anchor link extraction",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-07-14T12:23:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1d1270de5df8c791a0c55be166cbf772ef2e2f5",
          "body": null,
          "is_bot": false,
          "headline": "windows binary",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-24T03:11:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd7468ebeb9e2848db29348a0d1165c78aed33ea",
          "body": null,
          "is_bot": false,
          "headline": "rebult binaries",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-24T03:09:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a41965427f0af6f444f07684d9a0398d75c7e4f9",
          "body": null,
          "is_bot": false,
          "headline": "Updated llm.txt to actually fetch the text attached to the docs",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-24T02:59:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2adecf538cf3093ff2b5b731608e4981b312b783",
          "body": null,
          "is_bot": false,
          "headline": "Sync Python version to 2.4.2 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6661bfc91f150826dd595de037c0c5349f6ff4f6",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.4.2 - llm.txt writes URLs only (no fetching)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:34:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba5eb640da943b8bcdf329d591f7d94cec2b65a2",
          "body": "BUG: llm.txt was fetching all linked pages (wrong behavior)\nCORRECT BEHAVIOR: Just extract URLs and write to file (no fetching)\n\nCHANGES:\n1. llmtxt.go: Simplified to write URLs only (one per line)\n   - No hierarchical structure\n   - No descriptions\n   - No content fetching\n   - Just: URL\\n URL\\n URL\n[…]\n. Removed auto-depth increase for --llm-txt\n   - llm.txt doesn't need deep crawling\n   - Just extracts URLs from visited pages\n\nBEFORE:\n\nAFTER:\n\nSimple. Fast. No unnecessary fetching.\nReady for v2.4.2",
          "is_bot": false,
          "headline": "Fix llm.txt to write URLs only (NO fetching)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:33:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ec41ce2849eb27d83ae81e6375c81d41a493c75e",
          "body": null,
          "is_bot": false,
          "headline": "Sync Python version to 2.4.1 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:06:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d9733d6f7f5c5e8b8c8183548dd043e090c168ee",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.4.1 for auto-depth increase with --llm-txt",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:05:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ff2b5c7e0da2f1c0b6f47ac869f2797ad45ebf9",
          "body": "…raction\n\nBUG: llm.txt not fetching enough links\nROOT CAUSE: Default depth (2) too shallow for comprehensive crawling\n\nFIX:\n- Auto-increase depth to 4 when --llm-txt is enabled\n- Only if user-specified depth < 4 (respects explicit user choice)\n- Logs depth increase for transparency\n- Added getLLMTxt\n[…]\n\n\nUser can still override: --llm-txt --depth 6 (uses 6, not 4)\n\nDOM walker already correctly extracts from <a class=\"...\" href=\"...\">Text</a>\nIssue was just insufficient crawl depth.\n\nReady for v2.4.1",
          "is_bot": false,
          "headline": "Auto-increase depth when --llm-txt enabled for comprehensive link ext…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T17:05:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2618913f892e0961c35e1b5672ed74c03ef89fb1",
          "body": null,
          "is_bot": false,
          "headline": "Sync Python version to 2.4.0 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T16:41:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8d5b22c2f886ad51dea9abbdafceb7a3d04cd4a1",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.4.0 for clean architecture refactor",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T16:38:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bfb75975d86076c27490398f650cc70c496142c",
          "body": "CODE CLEANUP (following 'one feature per file' rule):\n\nDELETED (old/legacy logic):\n- content_grouper.go (replaced by SectionBuilder)\n- Old cleanContent, extractTextContent functions\n\nRESTORED (with proper separation):\n- fetcher.go: Type definitions ONLY (Config, LLMTxtEntry)\n- html2md.go: HTML→Markd\n[…]\nype detection\n- describer.go: Description extraction\n- llmtxt.go: llm.txt generation\n- writer.go: File writing\n\nNo more spaghetti code. Each file has ONE job.\n\nReady for v2.4.0 (architecture cleanup)!",
          "is_bot": false,
          "headline": "Refactor to clean architecture - one feature per file",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T16:38:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "17fb73621b45decf85afff0dea95523430002067",
          "body": "Updated Python packaging files:\n- setup.py: 2.3.0 → 2.3.1\n- pyproject.toml: 2.3.0 → 2.3.1\n\nPublished to PyPI:\nhttps://pypi.org/project/doc-fetch/2.3.1/\n\nFix includes:\n- Removed old extractAndSubmitLinks function\n- DOM walker used exclusively for link extraction\n- Better content container detection\n- Filter llm.txt entries (skip anchors, external links)",
          "is_bot": false,
          "headline": "Sync Python package version to 2.3.1 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:33:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ffde3847fc96ad92521c17c768ef43cb3f6f9a71",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.3.1 for llm.txt URL extraction fix",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:31:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d8bdb121fa9a488e7f7db89e8864adc111b4d2df",
          "body": "BUG: llm.txt showing text only, no URLs\nROOT CAUSE: Old extractAndSubmitLinks function still being called\n\nFIXES:\n1. Removed old extractAndSubmitLinks function entirely\n2. DOM walker now used for ALL link extraction (crawling + llm.txt)\n3. Added more content container selectors (#content, .document,\n[…]\n better content detection\n- Cleaned up duplicate logic\n\nTesting needed:\n- Verify llm.txt now contains URLs\n- Verify crawling still works\n- Verify link context preserved\n\nReady for v2.3.1 patch release",
          "is_bot": false,
          "headline": "Fix llm.txt URL extraction - use DOM walker exclusively",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:30:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4589a30adb10a0b933a6634efbfe65f50dd81231",
          "body": "Updated Python packaging files:\n- setup.py: 2.2.0 → 2.3.0\n- pyproject.toml: 2.2.0 → 2.3.0\n\nPublished to PyPI:\nhttps://pypi.org/project/doc-fetch/2.3.0/\n\nIncludes:\n- Block-aware rendering rules (h1-h6, p, pre, code, tables, lists)\n- Hierarchical llm.txt format\n- Removed short CLI flags (-c, -d, -o, -u)",
          "is_bot": false,
          "headline": "Sync Python package version to 2.3.0 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:18:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b601281794b6bbaf524c6c58b29b70d626c7c0f3",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.3.0 for rendering rules and llm.txt format fix",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:15:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d76d3c7c47fcdd5dc75e874f8363410ea24802b9",
          "body": "Rendering Rules (Block Awareness):\n- h1-h6: # through ###### with proper spacing\n- p: adds newline separation\n- pre: triple backticks for code blocks\n- code: single backticks for inline\n- ul/ol: markdown lists\n- table: markdown table conversion\n- strong/em: bold/italic formatting\n\nllm.txt Format Fix\n[…]\nnt hierarchy\n- Shows link context properly\n- Clean deterministic output\n\nRemoved Short Flags:\n- Removed -c, -d, -o, -u aliases\n- Use full flag names only\n- Cleaner, more explicit CLI\n\nReady for v2.3.0",
          "is_bot": false,
          "headline": "Add rendering rules, fix llm.txt format, remove short flags",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:14:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fbe08901e71fd51798cffb0a9d67c87b4306c94f",
          "body": "Updated Python packaging files:\n- setup.py: 2.1.0 → 2.2.0\n- pyproject.toml: 2.1.0 → 2.2.0\n\n✅ Published to PyPI:\nhttps://pypi.org/project/doc-fetch/2.2.0/\n\nArchitectural foundation includes:\n- DOMWalker for sequential node traversal\n- SectionBuilder for hierarchical parsing\n- Link extraction with context preservation\n- Relative URL resolution\n- Clean markdown rendering rules",
          "is_bot": false,
          "headline": "Sync Python package version to 2.2.0 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:07:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9e415eeeb06048e3dfbf09c3e8a15fa0a9de31f",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.2.0 for proper DOM traversal architecture",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:05:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f56e55dbc43836a964cef5921ef71207d5bc40df",
          "body": "🧠 Architecture Fix (per guidance):\n\nPROBLEM: 'Chaotic intern' behavior - optimization without structure\nSOLUTION: Proper DOM traversal + hierarchical parsing\n\nNEW FILES:\n1. dom_walker.go - Sequential DOM walking with context preservation\n   - Extracts links WITH surrounding text (not standalone)\n   \n[…]\n Building (DONE - basic)\n⏳ Phase 3: Full cross-page hierarchy (TODO)\n\nThis fixes the root cause: structure + traversal problem, not fetch problem.\n\nReady for v2.2.0 release (architectural foundation)!",
          "is_bot": false,
          "headline": "Implement proper DOM traversal and hierarchical parsing (Phase 1)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T15:05:07Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c4fe1ba46e10948d1d9c9a7d256c7fbe7c007a61",
          "body": "Updated Python packaging files to match npm version:\n- setup.py: 2.0.9 → 2.1.0\n- pyproject.toml: 2.0.9 → 2.1.0\n\n✅ Published to PyPI:\nhttps://pypi.org/project/doc-fetch/2.1.0/\n\nMajor concurrency refactor includes:\n- Worker pool pattern (controlled concurrency)\n- Rate limiting (golang.org/x/time/rate)\n- URL deduplication (sync.Map)\n- Enhanced link extraction (href + data attributes)\n- Connection pooling optimization\n- Context cancellation support",
          "is_bot": false,
          "headline": "Sync Python package version to 2.1.0 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T14:53:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ee83e87fd19e0b228e417218dd05f25e027507a7",
          "body": "… limiting)",
          "is_bot": false,
          "headline": "Bump to v2.1.0 for proper Go concurrency patterns (worker pool + rate…",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T14:50:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d2b06ef0a606d2bc39ee1cbe416ee1b58bdfd03b",
          "body": "🏗️ Architecture Improvements (per best practices guidance):\n\n1. Worker Pool Pattern (controlled concurrency):\n   - Fixed worker count (configurable, default 5)\n   - Buffered job queue (workers*10)\n   - No infinite goroutines (civilized behavior)\n\n2. Rate Limiting (prevent DDoS):\n   - golang.org/x/ti\n[…]\no zombie goroutines\n\nCode Quality:\n- Removed urlQueue (replaced with jobs channel)\n- Simplified submitPage logic\n- Better error handling\n- More idiomatic Go\n\nReady for v2.1.0 release (major refactor)!",
          "is_bot": false,
          "headline": "Refactor to proper Go concurrency patterns (worker pool + rate limiting)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T14:50:12Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "cca6faebed306b2cb2b5a0adc40376b425558799",
          "body": "Updated Python packaging files to match npm version:\n- setup.py: 2.0.7 → 2.0.9\n- pyproject.toml: 2.0.7 → 2.0.9\n\n✅ Published to PyPI:\nhttps://pypi.org/project/doc-fetch/2.0.9/\n\nIncludes intelligent content grouping:\n- Auto-categorizes pages (API, Guide, Tutorial, etc.)\n- Generates Table of Contents with anchor links\n- Groups related pages together logically\n- Sorts by importance (Getting Started first)\n- Beautiful markdown output",
          "is_bot": false,
          "headline": "Sync Python package version to 2.0.9 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T10:09:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "91f31297b2daa875e082d5ba23c0cedb0ccb6296",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.0.9 for intelligent content grouping",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T10:07:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "184fba47aaff6588d4bfca711b067f55f0ba93ed",
          "body": "🎨 Major Improvements:\n1. Replaced simple concatenation with intelligent content grouping\n2. ContentGrouper now organizes pages by type (API, Guide, Tutorial, etc.)\n3. Auto-generates Table of Contents with anchor links\n4. Groups related pages together logically\n5. Sorts groups by importance (Getting \n[…]\nall performance optimizations from optimized fetcher\n\n🗑️ Next Steps:\n- Can remove legacy fetcher.go (no longer used)\n- Consider adding group descriptions based on page types\n\nReady for v2.0.9 release!",
          "is_bot": false,
          "headline": "Integrate ContentGrouper for beautiful output organization",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T10:06:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e61bd775d452910a51727970e3197fde4de8af2e",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.0.8 for improved llm.txt link extraction",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:58:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3e115848b47d7e81987f293c3b9dec41dd1570c",
          "body": "🔧 Fixes:\n1. llm.txt now extracts link text from href attributes\n2. Added findLinkTextForURL() helper to capture anchor text\n3. Simplified format uses link context as description\n\n📚 Documentation Updates:\n1. Added 'Advanced Tips for Large Documentation Sites' section\n2. Recommended settings by site s\n[…]\nref> elements\n- Better descriptions using surrounding context\n- Clear guidance on --concurrent settings for large sites\n- Performance tuning table (concurrency vs site size)\n\nReady for v2.0.8 release!",
          "is_bot": false,
          "headline": "Improve llm.txt link extraction + add advanced usage guide",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:58:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7232ddca431a52880eb7b524ba6c59a48ccab634",
          "body": "Updated Python packaging files to match npm version:\n- setup.py: 2.0.3 → 2.0.7\n- pyproject.toml: 2.0.4 → 2.0.7\n\n✅ Published to PyPI:\nhttps://pypi.org/project/doc-fetch/2.0.7/\n\nIncludes all fixes from today:\n- v2.0.5: Windows binary packaging fix\n- v2.0.6: Queue overflow + auto-exit fixes\n- v2.0.7: Simplified llm.txt format\n\nUsers can now update via:\npip install --upgrade doc-fetch",
          "is_bot": false,
          "headline": "Sync Python package version to 2.0.7 (PyPI published)",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:52:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6dab568d0edabdafae40e2b9544e3942ffdc35d8",
          "body": "Sync Python version with npm package:\n- npm: v2.0.7 ✅\n- pypi: v2.0.3 → v2.0.7 (updated)\n\nIncludes all fixes from:\n- v2.0.5: Windows binary packaging\n- v2.0.6: Queue overflow + auto-exit fixes\n- v2.0.7: Simplified llm.txt format",
          "is_bot": false,
          "headline": "Bump Python package version to 2.0.7",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:48:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ecfd4ac83daf377db200cae88832b43b365a1f7a",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.0.7 for simplified llm.txt format",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:45:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0bfc70ffc632fd21ef16b51e7d9856d8f2711c61",
          "body": "🐛 Problem:\nllm.txt was generating verbose format with type headers, URLs on separate lines, and descriptions. Made it hard to parse quickly.\n\n✅ Solution:\nSimplified to minimal format: 'Title: URL' (one line per page)\n\nChanges (llmtxt.go):\n- Removed [TYPE] headers from each entry\n- Removed separate d\n[…]\nimal header comment\n\nBefore:\n\nAfter:\n\nBenefits:\n✅ Easier to parse (simple colon separator)\n✅ More compact (fewer lines)\n✅ Faster scanning for AI agents\n✅ Standard format (matches community convention)",
          "is_bot": false,
          "headline": "Fix llm.txt format: Simple 'Title: URL' entries",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:44:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "68ebb3d901662bb3d48d17ecda2dceaae1c8eeef",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.0.6 for queue and exit fixes",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:40:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e9babcf228a5eb9de6d73d41eb2e83885aad2cb",
          "body": "🐛 Problems Fixed:\n1. Queue filled warnings during initial crawl burst\n2. Program doesn't auto-exit after completion (required CTRL+C)\n3. Default concurrency too low (3 workers)\n\n✅ Changes Made:\n\n1. Increased Queue Buffers (fetcher_optimized.go):\n   - URL queue: 100 → 500 per worker (5x larger)\n   - \n[…]\nduring burst crawling\n- Faster initial crawl (5 workers vs 3)\n- Clean exit (no manual CTRL+C needed)\n- Better resource utilization\n\nTesting:\n- Build successful ✅\n- Ready for deployment via npm publish",
          "is_bot": false,
          "headline": "Fix queue overflow warnings and auto-exit issues",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T09:39:45Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d87e531ba365ddb06b5d59ea50e935852289f2b8",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v2.0.5 for Windows binary fix",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T08:48:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3951c7d00aed1cf0d5a2e8461d025994eae80e2",
          "body": "- Updated .npmignore to INCLUDE all platform binaries (was excluding them!)\n- Added explicit ! prefix to include linux, darwin (intel+arm), and windows binaries\n- Binaries now ship with npm package for postinstall detection\n- Resolves: 'No compatible binary found for your platform' error on Windows\n\nBinaries included:\n- doc-fetch_windows_amd64.exe (8.8MB)\n- doc-fetch_linux_amd64 (8.8MB)\n- doc-fetch_darwin_amd64 (8.9MB)\n- doc-fetch_darwin_arm64 (8.4MB)\n\nReady for v2.0.5 release.",
          "is_bot": false,
          "headline": "Fix Windows binary packaging for npm",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-22T08:48:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "983229c060c7861a76a06cea0ae5853f519247d8",
          "body": "ISSUE: Some code blocks (usage section, examples) weren't getting dark background\n\nFIX:\n1. Added explicit styling for .usage-example pre blocks\n2. Added global pre { background: #1e1e1e !important; } rule\n3. Added global pre code { color: #d4d4d4 !important; } rule\n\nRESULT:\n✅ Every single <pre> elem\n[…]\n light text\n✅ Usage section commands - dark ✅\n✅ Example cards commands - dark ✅\n✅ Installation cards - dark ✅\n✅ Command block at top - dark ✅\n\nNo exceptions. All code blocks are now consistently dark.",
          "is_bot": false,
          "headline": "Fix ALL code blocks to have dark background with !important",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-21T10:22:33Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "794229cc292e9668c06a682a69a40348bf294f96",
          "body": "FIXES:\n1. All code blocks now use #1e1e1e background with #d4d4d4 text\n   - Homepage command blocks ✅\n   - Installation cards ✅\n   - Example cards ✅\n   - Blog post content ✅\n   - Copy button containers ✅\n\n2. Removed dark mode toggle (not working properly)\n   - Deleted DarkModeToggle component import\n[…]\n(.dark) CSS rules\n   - Simplified theme to light mode only\n\nRESULT:\n✅ Consistent dark code backgrounds everywhere\n✅ No broken theme toggle\n✅ Cleaner codebase\n✅ Better visual consistency\n\nBuild passes!",
          "is_bot": false,
          "headline": "Fix all code blocks to use dark background, remove dark mode toggle",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-21T10:17:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b5c799b47224f1f48ec81ea6f3f2c6421b5ab95f",
          "body": "FEATURES #6-8:\n\n#6: Animated Read Time Counter\n- Counts from 0 to actual read time on page load\n- Smooth ease-out quart animation (1 second)\n- Clock icon for visual clarity\n- Accent color highlighting\n\n#7: Related Posts with Thumbnails\n- New RelatedPosts component with image cards\n- Gradient placeho\n[…]\n:\n✅ Animation adds delight/polish\n✅ Thumbnails increase CTR by 40%+\n✅ Share counts = social proof\n✅ Professional publication feel\n✅ Encourages sharing behavior\n\nBuild passes! Features #6-8 complete! 🚀",
          "is_bot": false,
          "headline": "Add read time animation, related posts with thumbnails, share counts",
          "author_name": "AlphaTechini",
          "author_login": "AlphaTechini",
          "committed_at": "2026-02-21T10:14:58Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "876bf43bd45186f0ec6b442075923fde7c88cc54",
          "body": "FEATURES:\n1. Reading Progress Bar\n   - Smooth gradient bar at top of page\n   - Shows scroll progress (0-100%)\n   - 60fps animation using requestAnimationFrame\n   - Visual feedback for long articles\n\n2. Typography Improvements\n   - Body: 16px → 19px (better readability)\n   - Line height: 1.8 → 1.85 (\n[…]\narticle\n✅ Reduced eye strain with larger text\n✅ Better readability on all devices\n✅ Professional typesetting feel\n✅ Encourages completing long articles\n\nBuild passes! All Major UX features complete! 🎉",
          "is_bot": false,
          "headline": "Add reading progress bar + improved typography",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:51:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b7e90c2bbf30683219e24a33bf4efd7e54385f77",
          "body": "FEATURES:\n1. Last Updated Badge\n   - Shows relative time (today, 2 days ago, 3 weeks ago)\n   - Green badge with refresh icon\n   - Only shows if modifiedDate differs from date\n   - Freshness signal for Google + users\n\n2. Author Bio Box\n   - Avatar (emoji for now)\n   - Name, role, bio\n   - GitHub + NP\n[…]\n/maintained\n✅ Real author = more trustworthy\n✅ Click-through to GitHub/NPM profiles\n✅ Professional publication feel\n✅ Google rewards E-E-A-T signals\n\nBuild passes! Moving to #5: Improved Typography...",
          "is_bot": false,
          "headline": "Add author bio box + last updated badge for E-E-A-T",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:50:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f3c74b7b9361e89d9411e949c1fd00a2befe4e52",
          "body": "FEATURE: Complete dark/light theme switcher\n- Respects prefers-color-scheme by default\n- Persists choice in localStorage\n- Smooth transitions between themes\n- Sun/moon icons for clarity\n- System theme change listener\n\nTECHNICAL:\n- DarkModeToggle component in $lib/components/\n- CSS variables for them\n[…]\n✅ Meets developer expectations (dark mode standard)\n✅ Reduces eye strain for night reading\n✅ Shows attention to detail\n✅ \"Built by devs, for devs\" signal\n\nBuild passes! Moving to #4: Author Bio Box...",
          "is_bot": false,
          "headline": "Add dark mode toggle with system preference detection",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:48:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a54aa60783857900945e0c01701fc1fcac86285a",
          "body": "FEATURE: One-click copy for code examples\n- Auto-attaches to all <pre><code> blocks\n- Clipboard API integration\n- Tooltip shows 'Copy' on hover\n- Green checkmark + 'Copied!' on success\n- Fades out after 2 seconds\n\nTECHNICAL:\n- Svelte action (addCopyButtons) for auto-attachment\n- MutationObserver wat\n[…]\nons\n\nUX IMPACT:\n✅ Removes friction trying DocFetch commands\n✅ Standard developer tool expectation\n✅ Professional polish\n✅ Increases likelihood of installation\n\nBuild passes! Moving to #3: Dark Mode...",
          "is_bot": false,
          "headline": "Add copy buttons to all code blocks",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:47:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7e1a24d9cc0216231862ff3338760815809b0856",
          "body": "FEATURE: Auto-generated table of contents with:\n- Sticky sidebar positioning (desktop)\n- Active section highlighting via IntersectionObserver\n- Smooth scroll navigation\n- Responsive (hides on mobile)\n- Semantic HTML with proper ARIA labels\n\nTECHNICAL:\n- Reusable Svelte component in $lib/components/\n\n[…]\nr navigation for long-form content\n✅ Lower bounce rate (users find sections faster)\n✅ SEO boost (jump links in search results)\n✅ Professional documentation feel\n\nFirst major UX improvement complete! 🎯",
          "is_bot": false,
          "headline": "Add Table of Contents component for blog posts",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:11:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "95b819fb653db896a05b0b563d0f0f59c3b40c62",
          "body": "- Code blocks: black background (#1e1e1e) with white text (#d4d4d4)\n- Inline code: light background with dark text for readability\n- Add pnpm install command alongside npm in Node.js section\n- Consistent monospace font across all code elements\n\nVisual improvements for better developer experience.",
          "is_bot": false,
          "headline": "Update code block styling and add pnpm install command",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:03:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0ba29c9aaa980ab90f8637d1722720cf912ecd00",
          "body": "- Install @vercel/speed-insights\n- Inject in root layout using injectSpeedInsights()\n- Add DNS prefetch and preconnect for Vercel Vitamins endpoint\n- Enables real-user monitoring (RUM) for LCP, FID, CLS\n- Data available in Vercel dashboard\n\nThis provides actual user performance data to optimize Core Web Vitals.",
          "is_bot": false,
          "headline": "Add Vercel Speed Insights for Core Web Vitals tracking",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T09:01:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e82cd80ba1e38f517f3d594523dd506bdbd4d31b",
          "body": "- Move blog post content to separate markdown files\n- Use marked library for markdown rendering\n- Fix Svelte 5 syntax (onsubmit|preventDefault → use:action)\n- Add placeholder content until markdown loading is fully integrated\n- Build passes successfully\n\nReady for Vercel deployment.",
          "is_bot": false,
          "headline": "Fix build errors and properly structure blog posts",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T08:51:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fc8763882f751d17308897f4f455cb41ef28a49",
          "body": "Core Web Vitals Optimization:\n- Preload critical assets (favicon, fonts)\n- DNS prefetch for external resources\n- Prevent CLS with image max-width and contain\n- Inline critical CSS in layout\n\nE-E-A-T Signals:\n- About page with author credibility\n- Schema.org Person markup\n- SoftwareApplication schema\n[…]\nis is how you actually rank in 2026:\n✅ Performance (LCP <2.5s, CLS ~0)\n✅ Structured data everywhere\n✅ Real author credibility\n✅ Topical depth over breadth\n✅ Internal linking graph\n✅ No AI spam content",
          "is_bot": false,
          "headline": "Implement complete 2026 SEO architecture",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T08:04:21Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "e1061b0bc73cdb17f2725bb1fa5dcaf048bece9e",
          "body": "- Add SSR load function for dynamic meta tags\n- Implement Schema.org structured data (BlogPosting + FAQPage)\n- Add FAQ schema for 'People Also Ask' rich results\n- Create related posts section with internal linking\n- Document URL hierarchy strategy (category/subcategory/article)\n- Add breadcrumb navi\n[…]\n 2026 best practices:\n✅ Server-side rendering\n✅ Dynamic meta tags per route\n✅ Structured data for rich results\n✅ Internal linking engine\n✅ Hierarchical URL structure\n✅ FAQ schema for featured snippets",
          "is_bot": false,
          "headline": "Implement advanced 2026 SEO architecture",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T08:00:51Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f0a9db7c99d6dc82f700aa1fdbb25a86656a1905",
          "body": "- Complete landing page with classic documentation aesthetic\n- Blog infrastructure with 6 planned pillar posts\n- First pillar post: 'How to Convert Documentation to Markdown for LLMs' (3,500 words)\n- SEO strategy document with 2026 best practices\n- Content calendar for 3-month launch plan\n- Deployment guides for Vercel/Netlify\n- Updated README with website link\n\nWebsite ready for deployment at docfetch.dev",
          "is_bot": false,
          "headline": "Add SvelteKit landing page with blog and SEO-optimized content",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-21T07:32:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "64d246d4e59d6e8ce7bc7d957595509e736bc6b6",
          "body": null,
          "is_bot": false,
          "headline": "2.0.4",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T21:08:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eefe0a056077bec68bb46ea872c3283a5b3749ca",
          "body": "🔨 Built all platforms:\n- ✅ Windows x64 (doc-fetch_windows_amd64.exe)\n- ✅ macOS Intel (doc-fetch_darwin_amd64)\n- ✅ macOS ARM64 (doc-fetch_darwin_arm64)\n- ✅ Linux x64 (doc-fetch_linux_amd64)\n- ✅ Linux ARM64 (doc-fetch_linux_arm64)\n\n🔧 Fixed:\n- Postinstall now accepts platform-specific names FIRST\n- Falls back to generic names if needed\n- Content grouper compilation error fixed\n\n✅ This ensures v2.0.4 works on ALL platforms!",
          "is_bot": false,
          "headline": "v2.0.4: Include ALL platform binaries + flexible detection",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T21:08:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5aece4200ec03768d9d81a62edc6e772bb0360e",
          "body": null,
          "is_bot": false,
          "headline": "2.0.3",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:57:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b93c935f33fac93386e60082fa8068637650f7cf",
          "body": "✨ Changes:\n- Postinstall now uses existing binary (no copying)\n- Wrapper dynamically detects correct binary\n- Supports all platform naming conventions\n- PyPI updated to v2.0.2 with all latest fixes\n\n🚀 Includes:\n- Intelligent content grouping (v2.0.0)\n- 5-10x performance improvements\n- Enhanced parallel fetching\n- Pre-publish binary verification\n- Cross-platform compatibility fixes",
          "is_bot": false,
          "headline": "v2.0.2: Smart binary detection + PyPI update",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:57:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b95eac2e1aed85e0a6331c548203db609f28ec3",
          "body": null,
          "is_bot": false,
          "headline": "2.0.2",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:50:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cab9788fd41627fb0197aee02a52acd7acc07ee1",
          "body": "🐛 Fixed the REAL issue:\n- Found: doc-fetch_windows_amd64.exe in package ✅\n- But didn't copy to: doc-fetch.exe ❌\n- Wrapper looks for: doc-fetch.exe ❌\n- Result: 'Binary not found' even though it exists!\n\n✅ Fix:\n- ALWAYS copy platform binary → generic name\n- Windows: doc-fetch_windows_amd64.exe → doc-fetch.exe\n- macOS: doc-fetch_darwin_amd64 → doc-fetch\n- Linux: doc-fetch_linux_amd64 → doc-fetch\n\nThis matches what the user manually did to fix it!",
          "is_bot": false,
          "headline": "v2.0.2: Always copy platform binary to generic name",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:50:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "509760abbcdcab2eb7aacd70a9958c4e9ecf12ed",
          "body": null,
          "is_bot": false,
          "headline": "2.0.1",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:41:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59cff48bea31f8c1b410b3b3970e130ac3b44030",
          "body": "🐛 Fixed:\n- Postinstall now accepts ANY .exe on Windows (not just exact name match)\n- Smart fallback: Uses 'doc-fetch' if platform-specific binary missing\n- Better error messages showing what was found vs expected\n\n✅ This fixes the v1.1.5/v2.0.0 Windows installation issue where:\n- Package contains: d\n[…]\n Failed even though binary existed!\n\nNow it will:\n1. Look for exact match first\n2. Fall back to any .exe on Windows\n3. Fall back to 'doc-fetch' generic name\n4. Only fail if NO compatible binary exists",
          "is_bot": false,
          "headline": "v2.0.1: Fix Windows binary detection",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:41:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "81e41f4aabb6e8a89569eeee8cebb40c0e6ad8e8",
          "body": null,
          "is_bot": false,
          "headline": "Release v2.0.0 - Major release with intelligent grouping",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:38:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9b71a019ce10f5690e4b7a11a431ecf92936432",
          "body": null,
          "is_bot": false,
          "headline": "1.2.0",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:38:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b434e3d5e4c8cbe9442afdcc2a477ce0724420ad",
          "body": "✨ New Features:\n- Intelligent content grouping by category (API, Guide, Tutorial, etc.)\n- Automatic table of contents with anchor links\n- Source URL attribution for every section\n- Enhanced parallel fetching (5-10x faster for large docs)\n- Professional markdown formatting\n\n🚀 Performance:\n- 3-5x fast\n[…]\ntcher/content_grouper.go - Smart grouping engine\n- scripts/verify-binaries.js - Quality control\n- CHANGELOG-v2.md - Complete release notes\n\nBREAKING CHANGE: Output format now includes TOC and grouping",
          "is_bot": false,
          "headline": "🎉 DocFetch v2.0.0 - Major Release",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:38:15Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bb54f5654ed5de1cc269e735b9e2f6515fa834a5",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v1.1.5 - Pre-publish binary verification",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:29:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5efd74ffd547939a062c8f27be7f24cd6c8ed231",
          "body": "🛡️ Added:\n- Pre-publish verification script (scripts/verify-binaries.js)\n- Automatic check before npm publish (prepublishOnly hook)\n- Enhanced postinstall with platform binary detection\n- Clear error messages when platform binary is missing\n- Source build instructions as fallback\n\n✅ Fixes:\n- Prevent\n[…]\nh binaries are present vs missing\n- Provides immediate workaround instructions\n\n📝 Documentation:\n- Updated CROSS-PLATFORM-FIXES.md with v1.1.3 issue explanation\n- Added verification script usage guide",
          "is_bot": false,
          "headline": "v1.1.5: Prevent missing binary issues",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:29:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d7d0c05fd41fc29a6de7a406b593e5acd55c8f36",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v1.1.4 - Cross-platform binary installation fixes",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:24:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "169269aefb45720d26da1a88c1539dbac13df5df",
          "body": "✅ Fixed:\n- Postinstall now lists ALL available binaries for debugging\n- Wrapper script simplified to expect generic name (doc-fetch)\n- Enhanced error messages with platform-specific instructions\n- Added comprehensive CROSS-PLATFORM-FIXES.md guide\n\n📦 Platform Support:\n- ✅ Linux x64/AMD64\n- ✅ Linux AR\n[…]\nARM64 (Rosetta until native build)\n- ✅ Windows x64/AMD64\n\n🔧 Improvements:\n- Shows file sizes in postinstall output\n- Clear manual fix instructions per platform\n- Better error messages with exact paths",
          "is_bot": false,
          "headline": "v1.1.4: Cross-platform binary fixes",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:24:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "11cc9be168bd017ca53518dbfc954b7a7746707e",
          "body": null,
          "is_bot": false,
          "headline": "Add Windows quick fix guide for binary rename issue",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:12:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b3583ca070fbfd3ffc96b6d143200ed90659d714",
          "body": null,
          "is_bot": false,
          "headline": "Bump to v1.1.3 - Improved binary copy logging",
          "author_name": "JnrDevClaw",
          "author_login": null,
          "committed_at": "2026-02-20T20:11:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 12,
      "commits_last_year": 108,
      "latest_release_at": "2026-07-21T03:09:16Z",
      "latest_release_tag": "v2.5.11",
      "releases_from_tags": false,
      "days_since_last_push": 6,
      "active_weeks_last_year": 4,
      "days_since_latest_release": 6,
      "mean_days_between_releases": 16.7
    },
    "community": {
      "has_readme": true,
      "has_license": false,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 57,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "github.com/AlphaTechini/doc-fetch/v2",
          "exists": true,
          "license": null,
          "keywords": [],
          "ecosystem": "go",
          "matches_repo": true,
          "registry_url": "https://pkg.go.dev/github.com/AlphaTechini/doc-fetch/v2",
          "is_deprecated": false,
          "latest_version": "v2.5.11",
          "repository_url": "https://github.com/AlphaTechini/doc-fetch",
          "versions_count": 18,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": null,
          "latest_published_at": "2026-07-21T03:04:19Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "doc-fetch",
          "exists": true,
          "license": null,
          "keywords": [
            "documentation",
            "ai",
            "llm",
            "markdown",
            "crawler",
            "security",
            "Development Status :: 5 - Production/Stable",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.10",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.8",
            "Programming Language :: Python :: 3.9",
            "Topic :: Documentation",
            "Topic :: Software Development :: Documentation",
            "Topic :: Utilities"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/doc-fetch/",
          "is_deprecated": false,
          "latest_version": "2.5.11",
          "repository_url": "https://github.com/AlphaTechini/doc-fetch",
          "versions_count": 28,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-02-20T10:43:22.559481Z",
          "latest_published_at": "2026-07-21T03:09:11.141173Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        },
        {
          "name": "doc-fetch-cli",
          "exists": true,
          "license": null,
          "keywords": [
            "documentation",
            "ai",
            "llm",
            "markdown",
            "crawler",
            "security"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/doc-fetch-cli",
          "is_deprecated": false,
          "latest_version": "2.5.11",
          "repository_url": "https://github.com/AlphaTechini/doc-fetch",
          "versions_count": 37,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 2547,
          "first_published_at": "2026-02-20T11:16:32.525000Z",
          "latest_published_at": "2026-07-21T03:07:52.518000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 6
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "website/tsconfig.json"
      ],
      "toolchain_manifests": [
        "go.mod"
      ],
      "largest_source_bytes": 15128,
      "source_files_sampled": 30,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "go.mod",
        "package.json",
        "pyproject.toml",
        "setup.py",
        "website/package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "go",
        "npm",
        "pypi"
      ],
      "dependencies": [
        {
          "name": "github.com/PuerkitoBio/goquery",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v1.8.1"
        },
        {
          "name": "golang.org/x/net",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.17.0"
        },
        {
          "name": "golang.org/x/time",
          "manifest": "go.mod",
          "ecosystem": "go",
          "version_constraint": "v0.14.0"
        },
        {
          "name": "@vercel/speed-insights",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.1"
        },
        {
          "name": "marked",
          "manifest": "website/package.json",
          "ecosystem": "npm",
          "version_constraint": "^17.0.3"
        }
      ],
      "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": 0,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 1,
        "closed_unmerged_prs": 0
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "AlphaTechini",
          "commits": 72,
          "avatar_url": "https://avatars.githubusercontent.com/u/204508938?v=4"
        }
      ],
      "contributors_sampled": 1,
      "top_contributor_share": 1
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": false,
      "ci_workflows": [
        "npm-publish-github-packages.yml",
        "python-package-conda.yml",
        "release-binaries.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "go.sum",
        "package-lock.json",
        "pnpm-lock.yaml"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 0,
            "reason": "binaries present in source code",
            "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": null,
            "reason": "no pull request found",
            "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 0/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": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 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": 0,
            "reason": "license file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": 10,
            "reason": "packaging workflow detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "no SAST tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 10,
            "reason": "security policy file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": 0,
            "reason": "Project has not signed or included provenance with any releases.",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "42 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "aa905c59bfccc0ae925affe336c9b6fd4b53d69e",
        "ran_at": "2026-07-27T22:50:07Z",
        "aggregate_score": 2.7,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": true,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-21T03:07:56Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": null,
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/AlphaTechini/doc-fetch",
    "host": "github.com",
    "name": "doc-fetch",
    "owner": "AlphaTechini"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 49,
      "inputs": {
        "security": 27,
        "vitality": 76,
        "community": 30,
        "governance": 51,
        "engineering": 54
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 76,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "commits_last_year": 108,
              "human_commit_share": 1,
              "days_since_last_push": 6,
              "active_weeks_last_year": 4
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "4/52 weeks with commits",
                "points": 2.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 4
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "108 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 108
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 12,
              "latest_release_tag": "v2.5.11",
              "releases_from_tags": false,
              "days_since_latest_release": 6,
              "mean_days_between_releases": 16.7
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "12 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 12
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 6 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~16.7 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 16.7
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "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": 30,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "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": "at_risk",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 45,
            "inputs": {
              "has_readme": true,
              "has_license": false,
              "has_contributing": true,
              "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": "no license file detected",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "license_absent",
                    "params": {}
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 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": [
                "github.com/AlphaTechini/doc-fetch/v2",
                "doc-fetch",
                "doc-fetch-cli"
              ],
              "dependents": null,
              "ecosystems": "go, npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 2547
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "2,547 downloads/month across go, npm, pypi",
                "points": 45.4,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 2547,
                      "ecosystems": "go, npm, pypi"
                    }
                  }
                ],
                "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": 51,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 10,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 1,
              "top_contributor_share": 1
            },
            "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 100% of commits",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "1 contributors",
                "points": 1.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "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": "good",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): PR acceptance. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "pr_acceptance"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 76,
            "inputs": {
              "merged_prs": 0,
              "open_issues": 0,
              "closed_issues": 1,
              "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": "no decided pull requests or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_decided_prs_or_data",
                    "params": {}
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "at_risk",
            "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": 36,
            "inputs": {
              "followers": 2,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "AlphaTechini",
              "public_repos": 95,
              "account_age_days": 492
            },
            "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": "2 followers of AlphaTechini",
                "points": 3.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 2,
                      "login": "AlphaTechini"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "95 public repos, account ~1 yr old",
                "points": 15.7,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 95
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 1
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "github.com/AlphaTechini/doc-fetch/v2",
                "doc-fetch",
                "doc-fetch-cli"
              ],
              "ecosystems": "go, npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 6
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "3 package(s) on go, npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 3,
                      "ecosystems": "go, npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 6 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 6
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "37 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "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": "moderate",
        "name": "Engineering Quality",
        "value": 54,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "at_risk",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 30,
            "inputs": {
              "has_ci": true,
              "has_tests": false,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "3 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "topics": [],
              "has_wiki": true,
              "homepage": "https://doc-fetch.vercel.app",
              "has_readme": true,
              "has_docs_dir": true,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 25,
                "status": "met",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://doc-fetch.vercel.app",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": 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": "critical",
        "name": "Security",
        "value": 27,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 27,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 17,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 1,
              "scorecard_aggregate": 2.7
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 0,
                "status": "missed",
                "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0/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 dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "no SAST tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file detected",
                "points": 5,
                "status": "met",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "Project has not signed or included provenance with any releases.",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "42 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "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": 39,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 23,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.43,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "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": "43 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 22.9,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 43,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 34,
            "inputs": {
              "has_nix": false,
              "has_tests": false,
              "lockfiles": [
                "go.sum",
                "package-lock.json",
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "website/tsconfig.json"
              ],
              "agent_commit_share": 0,
              "toolchain_manifests": [
                "go.mod"
              ],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "go.mod (toolchain convention, no task runner)",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "toolchain_convention",
                    "params": {
                      "files": "go.mod"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "website/tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "website/tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "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": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "good",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 82,
            "inputs": {
              "primary_language": "Svelte",
              "largest_source_bytes": 15128,
              "source_files_sampled": 30,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Svelte with type-check config (website/tsconfig.json)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "website/tsconfig.json",
                      "language": "Svelte"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/30 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 30,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "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": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "Could not fetch npm package 'docfetch-website' from its registry",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-27T22:50:18.442329Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/AlphaTechini/doc-fetch.svg",
  "full_name": "AlphaTechini/doc-fetch",
  "license_state": "absent",
  "license_spdx": null
}

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 agregadasGo, PyPI, npm.