Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 1.13.0 · 2026-07-24 14:15 UTC

nicolasmelo1 / logion

Agent-native course marketplace and skill registry for executable AI-agent curricula

PythonMIT★ 33 estrellas⑂ 2 forksdesde may 2026Ver en GitHub ↗

nicolasmelo1/logion tiene un índice de salud de 65 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Engineering Quality (90/100) y la más baja, Security (48/100). Se actualizó por última vez hoy. Una sola persona concentra la mayor parte del trabajo reciente.

65
global / 100
Moderado

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

65
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

Nicolas LealCuenta personal
120 seguidores73 repositorios públicosdesde jun 2015@palmaresHQ

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
PyPIlogion-cli0.1.15267515hace 5 díaslogionmarketplaceagentskillcli
PyPIlogion-client0.1.15-10hace 5 díasagentlogionmarketplacesdk
PyPIlogion-skillmap0.1.0-1hace 2 díaslogionskillmappackage-mapinference
npm@logionsh/cli0.1.15307715hace 5 díaslogionclimarketplaceagent

Métricas por categoría

Vitalidad

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

73Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 0 días
7.6/36Cadencia de commits — 11/52 semanas con commits
18/18Volumen de commits — 276 commits en el último año
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Datos de entrada utilizados
commits_last_year276
human_commit_share0,97
days_since_last_push0
active_weeks_last_year11
Cómo se puntúa
27/27Publica versiones — 42 versiones publicadas
36/36Recencia de las versiones — última versión hace 2 días
27/27Cadencia de publicación — una versión cada ~2,1 días
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Datos de entrada utilizados
releases_count42
latest_release_taglogion-skillmap-v0.1.0
releases_from_tagsno
days_since_latest_release2
mean_days_between_releases2,1

Comunidad y Adopción

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

58Moderado · 18% del índice global
Cómo se puntúa
24.4/60Estrellas — 33 estrellas
0/25Forks — 2 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks2
stars33
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
22.5/22.5README
22.5/22.5Licencia — licencia reconocida (MIT)
18/18Guía CONTRIBUTING
13.5/13.5Código de conducta
0/7.2Plantilla de issues
6.3/6.3Plantilla de PR
Datos de entrada utilizados
has_readme
has_license
has_contributing
has_issue_templateno
has_code_of_conduct
has_pull_request_template
Cómo se puntúa
50.1/80Descargas mensuales — 5752 descargas/mes en npm, pypi
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads5752
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?

52Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
0.3/22.5Distribución de commits — el principal contribuyente firma el 98% de los commits
4.1/13.5Amplitud de contribuyentes — 3 contribuyentes
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Datos de entrada utilizados
bus_factor1
contributors_sampled3
top_contributor_share0,985
Cómo se puntúa
15.6/46.8Resolución de issues — 33% de issues cerradas
31.3/38.3Aceptación de PR — 184/225 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs184
open_issues6
closed_issues3
issue_closed_ratio0,333
closed_unmerged_prs41
Cómo se puntúa
10/30Respaldo de la propiedad — cuenta personal (usuario)
0/20Dominio verificado — no aplicable a cuentas de usuario
15/25Alcance del propietario — 120 seguidores de nicolasmelo1
25/25Trayectoria — 73 repos públicos, cuenta de ~11 años
Datos de entrada utilizados
followers120
owner_typeUser
is_verified
owner_loginnicolasmelo1
public_repos73
account_age_days4055
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 — 4 paquete(s) en npm, pypi
35/35Recencia de publicación — última publicación hace 2 días
20/20Historial de versiones — 15 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
ecosystemsnpm, pypi
any_deprecatedno
min_days_since_publish2

Calidad de Ingeniería

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

90Excelente · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 13 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — eslint.config.mjs
0/9.6Hooks de pre-commit
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 28 out of 28 merged PRs checked by a CI test -- score normalized to 10
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno

Documentación

100Excelente
Cómo se puntúa
30/30README
25/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://logion.sh
10/10Descripción del repositorio
10/10Topics — 20 topics
10/10Wiki
Datos de entrada utilizados
topicsagents, claude-code, claude-code-skill, clawhub, directory, hermes, hermes-skill, network, openclaw, skill, skill-development, skills, skills-course, logion, ai, ai-agent, ai-agents, llm, llm-tools, openai
has_wiki
homepagehttps://logion.sh
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?

48En riesgo · 16% del índice global
Cómo se puntúa
6.8/7.5Binary-Artifacts — binaries present in source code
3.8/7.5Branch-Protection — branch protection is not maximal on development and all release branches
2.5/2.5CI-Tests — 28 out of 28 merged PRs checked by a CI test -- score normalized to 10
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/29 approved changesets -- score normalized to 0
0.8/2.5Contributors — project has 1 contributing companies or organizations -- score normalized to 3
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Licencia — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
5/5Packaging — packaging workflow detected
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
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 — 27 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate3,5
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages17
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de pypi:logion-cli@0.1.15 —lo que arrastra la instalación del paquete publicado—: 17 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

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

76Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 94 de 97 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,969
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes6968
Cómo se puntúa
18/18Arranque con un solo comando — Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile
22/22Pruebas automatizadas
11/11Configuración de lint / formato — eslint.config.mjs
11/11Verificación estática de tipos — packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed
10/10Entorno reproducible — lockfile
8/10Práctica demostrada con agentes — 4 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespackage-lock.json, uv.lock
has_dockerfileno
typed_languageno
bootstrap_filesMakefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile
has_devcontainerno
has_linter_config
typecheck_configspackages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed
agent_commit_share0,04
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
27/45Código verificable por tipos — Python con configuración de verificación de tipos (packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed)
54.9/55Tamaños de archivo manejables — 1/569 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languagePython
largest_source_bytes60.138
source_files_sampled569
oversized_source_files1
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

33estrellas de GitHub
3contribuidores
276commits en los últimos 12 meses
0días desde el último push
42versiones publicadas
1factor bus
6issues abiertas
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 pypi package 'logion' from its registry
  • Could not fetch pypi package 'logion-bot' from its registry
  • Could not fetch pypi package 'logion-indexer' from its registry
  • Could not fetch pypi package 'logion-landing' from its registry
  • Could not fetch pypi package 'logion-scanners' from its registry
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Más detalle

Historial de estrellas y forks 0 ★ / 2 ⇿
0Estrellas
2Forks
9Versiones

Cuándo se añadió cada estrella y fork, recopilado de GitHub y agrupado por día. El crecimiento acumulado se sitúa justo encima de las adiciones diarias que lo componen, de modo que ambos se leen en conjunto: la acumulación orgánica sostenida no se parece en nada a un pico abrupto y efímero. Cuando esa diferencia es medible, se informa como autenticidad del crecimiento.

111222212026-072026-072026-07
Mayor 0Menor 0Parche 0
OpenSSF Scorecard 3.5 / 10
3.5agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).Scorecard v5.5.0 · 2026-07-24 14:14 UTC

9Binary-Artifactsbinaries present in source code
5Branch-Protectionbranch protection is not maximal on development and all release branches
10CI-Tests28 out of 28 merged PRs checked by a CI test -- score normalized to 10
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/29 approved changesets -- score normalized to 0
3Contributorsproject has 1 contributing companies or organizations -- score normalized to 3
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
10Packagingpackaging workflow detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
10Security-Policysecurity policy file detected
0Signed-ReleasesProject has not signed or included provenance with any releases.
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities27 existing vulnerabilities detected
Dependencias directas 23
RegistroPaqueteRestricción de versiónManifiesto
PyPIpyyaml>=6.0,<7.0packages/agent-companion/pyproject.toml
PyPIpydantic>=2.8packages/agent-proving-ground/pyproject.toml
PyPIpyyaml>=6.0packages/agent-proving-ground/pyproject.toml
PyPIrich>=13.7packages/agent-proving-ground/pyproject.toml
PyPIlogion-clientpackages/cli/pyproject.toml
PyPIlogion-skillmappackages/cli/pyproject.toml
PyPIpydantic>=2.7,<3.0.0packages/cli/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/cli/pyproject.toml
PyPIshtab>=1.7,<2.0packages/cli/pyproject.toml
PyPIemail-validator>=2.1,<3.0.0packages/client/pyproject.toml
PyPIhttpx>=0.27,<1.0.0packages/client/pyproject.toml
PyPIpydantic>=2.7,<3.0.0packages/client/pyproject.toml
PyPIlogion-skillmappackages/indexer/pyproject.toml
PyPIpyyaml>=6.0packages/indexer/pyproject.toml
PyPIfastapi>=0.136.1,<0.137.0packages/landing/pyproject.toml
PyPIjinja2>=3.1.6,<4.0.0packages/landing/pyproject.toml
PyPImarkdown-it-py>=4.0.0,<5.0.0packages/landing/pyproject.toml
PyPIpyyaml>=6.0.2,<7.0.0packages/landing/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/scanners/pyproject.toml
PyPIpyyaml>=6.0packages/skillmap/pyproject.toml
PyPIhttpx>=0.28,<0.29packages/social-management/pyproject.toml
PyPIpydantic>=2.6,<3packages/social-management/pyproject.toml
PyPIpyyaml>=6.0,<7.0packages/social-management/pyproject.toml
Todas las dependencias no recopilado

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

Avisos de dependencias 0

Instalar pypi:logion-cli@0.1.15 arrastra 17 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

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

Informe JSON sin procesar legible por máquina
{
  "data": {
    "repo": {
      "topics": [
        "agents",
        "claude-code",
        "claude-code-skill",
        "clawhub",
        "directory",
        "hermes",
        "hermes-skill",
        "network",
        "openclaw",
        "skill",
        "skill-development",
        "skills",
        "skills-course",
        "logion",
        "ai",
        "ai-agent",
        "ai-agents",
        "llm",
        "llm-tools",
        "openai"
      ],
      "is_fork": false,
      "size_kb": 3785,
      "has_wiki": true,
      "homepage": "https://logion.sh",
      "languages": {
        "CSS": 37107,
        "HTML": 59093,
        "Shell": 84505,
        "Python": 2968987,
        "Makefile": 17570,
        "JavaScript": 58295,
        "PowerShell": 74267,
        "TypeScript": 47517
      },
      "pushed_at": "2026-07-24T10:29:45Z",
      "created_at": "2026-05-13T21:35:35Z",
      "owner_type": "User",
      "updated_at": "2026-07-23T13:09:30Z",
      "description": "Agent-native course marketplace and skill registry for executable AI-agent curricula",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "Python",
      "significant_languages": [
        "Python"
      ]
    },
    "owner": {
      "blog": null,
      "name": "Nicolas Leal",
      "type": "User",
      "login": "nicolasmelo1",
      "company": "@palmaresHQ",
      "location": "São Paulo",
      "followers": 120,
      "avatar_url": "https://avatars.githubusercontent.com/u/12915742?v=4",
      "created_at": "2015-06-16T17:14:54Z",
      "is_verified": null,
      "public_repos": 73,
      "account_age_days": 4055
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "logion-skillmap-v0.1.0",
          "kind": "other",
          "published_at": "2026-07-22T12:14:10Z"
        },
        {
          "tag": "logion-cli-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:58Z"
        },
        {
          "tag": "logion-client-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:50Z"
        },
        {
          "tag": "logion-companion-v0.1.15",
          "kind": "other",
          "published_at": "2026-07-19T01:48:37Z"
        },
        {
          "tag": "logion-companion-v0.1.14",
          "kind": "other",
          "published_at": "2026-07-18T19:04:34Z"
        },
        {
          "tag": "logion-cli-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:53:26Z"
        },
        {
          "tag": "logion-client-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:53:25Z"
        },
        {
          "tag": "logion-companion-v0.1.13",
          "kind": "other",
          "published_at": "2026-07-07T16:52:57Z"
        },
        {
          "tag": "logion-cli-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:08:23Z"
        },
        {
          "tag": "logion-client-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:08:22Z"
        },
        {
          "tag": "logion-companion-v0.1.12",
          "kind": "other",
          "published_at": "2026-07-03T11:07:58Z"
        },
        {
          "tag": "logion-client-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:48:04Z"
        },
        {
          "tag": "logion-cli-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:47:55Z"
        },
        {
          "tag": "logion-companion-v0.1.11",
          "kind": "other",
          "published_at": "2026-07-02T02:47:38Z"
        },
        {
          "tag": "logion-client-v0.1.5",
          "kind": "other",
          "published_at": "2026-07-01T04:50:16Z"
        },
        {
          "tag": "logion-cli-v0.1.10",
          "kind": "other",
          "published_at": "2026-07-01T04:23:55Z"
        },
        {
          "tag": "logion-companion-v0.1.7",
          "kind": "other",
          "published_at": "2026-07-01T04:23:36Z"
        },
        {
          "tag": "logion-cli-v0.1.9",
          "kind": "other",
          "published_at": "2026-06-29T02:26:05Z"
        },
        {
          "tag": "logion-companion-v0.1.6",
          "kind": "other",
          "published_at": "2026-06-29T02:25:51Z"
        },
        {
          "tag": "logion-cli-v0.1.8",
          "kind": "other",
          "published_at": "2026-06-29T01:30:53Z"
        },
        {
          "tag": "logion-companion-v0.1.5",
          "kind": "other",
          "published_at": "2026-06-29T01:30:51Z"
        },
        {
          "tag": "logion-cli-v0.1.7",
          "kind": "other",
          "published_at": "2026-06-29T00:54:57Z"
        },
        {
          "tag": "logion-cli-v0.1.6",
          "kind": "other",
          "published_at": "2026-06-29T00:24:09Z"
        },
        {
          "tag": "logion-cli-v0.1.5",
          "kind": "other",
          "published_at": "2026-06-29T00:13:06Z"
        },
        {
          "tag": "logion-cli-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:44:00Z"
        },
        {
          "tag": "logion-companion-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:44:00Z"
        },
        {
          "tag": "installer-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:43:54Z"
        },
        {
          "tag": "logion-client-v0.1.4",
          "kind": "other",
          "published_at": "2026-06-28T23:43:53Z"
        },
        {
          "tag": "logion-cli-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:19Z"
        },
        {
          "tag": "logion-companion-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:04Z"
        },
        {
          "tag": "installer-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:02Z"
        },
        {
          "tag": "logion-client-v0.1.3",
          "kind": "other",
          "published_at": "2026-06-28T23:08:00Z"
        },
        {
          "tag": "logion-client-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:44Z"
        },
        {
          "tag": "logion-cli-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:39Z"
        },
        {
          "tag": "logion-companion-v0.1.2",
          "kind": "other",
          "published_at": "2026-06-28T21:05:15Z"
        },
        {
          "tag": "logion-companion-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:45:37Z"
        },
        {
          "tag": "logion-cli-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:42:04Z"
        },
        {
          "tag": "logion-client-v0.1.1",
          "kind": "other",
          "published_at": "2026-06-28T18:37:29Z"
        },
        {
          "tag": "logion-cli-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:31:30Z"
        },
        {
          "tag": "installer-v1",
          "kind": "other",
          "published_at": "2026-06-28T17:28:30Z"
        },
        {
          "tag": "logion-companion-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:26:37Z"
        },
        {
          "tag": "logion-client-v0.1.0",
          "kind": "other",
          "published_at": "2026-06-28T17:25:21Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "6efa11ff0c1e8139620ef913a4e4e0bafb861b4a",
          "body": "* docs(roadmap): ground ARD in AI Catalog connectors\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n* docs(protocol): pin AI Catalog and ARD specifications\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n* fix(ci): restore public phase vocabulary guard\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>\n\n---------\n\nSigned-off-by: Nicolas Melo <nicolasmelo12@gmail.com>",
          "is_bot": false,
          "headline": "docs(roadmap): ground ARD in AI Catalog connectors (#237)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T13:07:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c2c8ecb2ce6892bd5bf25990842a3a580488b7a",
          "body": "Signed-off-by: Nicolas Melo <nicolasmelo12@gmail.com>",
          "is_bot": false,
          "headline": "docs(roadmap): publish canonical planning (#236)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T04:43:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "551095ed36f8aae5a5ef0b925bb8b2f7db94d204",
          "body": null,
          "is_bot": false,
          "headline": "feat(proving-ground): add identity oauth observed-effect scenario (#235)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T01:42:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b202f84e0a08e70bd2dfe9f84e45f1425ca6767",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#234)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T01:05:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f98beb116210a46a6c25397dc57b0f11adecca3a",
          "body": "* chore(client): classify capabilities operation\n\n* test(client): stage capabilities operation coverage",
          "is_bot": false,
          "headline": "chore(client): classify capabilities operation (#233)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-23T00:31:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c7ebbc678d40f8d4a421c5781fe6dd85f76ccc2",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): record approved v1 main change (#232)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:52:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6fa6d6956e84cf1d74b1193a75cace19b4f0f45",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#229)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:20:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "981547850007c0bf0ec66948f6499cfbd855091e",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): allow approved v1 default change (#231)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T17:20:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7a56d8f95bf2c5cc76b9325f80f9deb4034ebf95",
          "body": null,
          "is_bot": false,
          "headline": "fix(client): classify platform bounty admin operations (#230)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T16:51:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3e88010497dafdac3a014505a0392c63c049d669",
          "body": null,
          "is_bot": false,
          "headline": "ci(contract): check public v1 compatibility (#228)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T15:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fa30e78e9a83ddc6fba90421938cd45d4bd1add",
          "body": "* fix(cli): rank query results by relevance\n\n* test(cli): preserve explicit listing sort",
          "is_bot": false,
          "headline": "fix(cli): rank query results by relevance (#227)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T15:56:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1f66658cefe0ab854a6036c4d045a420db70ebd7",
          "body": "* fix(landing): chain terminal and page scrolling\n\n* fix(landing): expand legal pages and refine bolts",
          "is_bot": false,
          "headline": "fix(landing): refine lightning and scrolling (#226)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T12:30:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3824c72c46eadcb15e81ef46c4c685a7d094f00f",
          "body": "* ci: publish logion-skillmap to PyPI\n\n* chore: sync OpenAPI contract from logion-private\n\n* test(client): cover indexed listing operations\n\n---------\n\nCo-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "ci: publish skillmap and sync OpenAPI contract (#224)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-22T00:09:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "af4ca8096003eb3b46eec8ba0684943053f3962f",
          "body": null,
          "is_bot": false,
          "headline": "fix(deps): update gitpython security release (#222)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T22:38:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50ed8cbaa690b888a9809687b8a2cd4959accaf7",
          "body": "* feat(indexer): record aggregate run progress\n\n* fix(indexer): preserve primary run failures\n\n* test(indexer): cover progress reporting",
          "is_bot": false,
          "headline": "feat(indexer): record aggregate run progress (#221)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T20:51:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f46d4180719c231cf4f39a5a7a1f1e0796d0f76a",
          "body": "* feat(landing): lead with product examples\n\n* feat(landing): animate agent workflow examples\n\n* feat(landing): sharpen agent-native proof story\n\n* fix(landing): refine terminal command contrast\n\n* feat(landing): connect terminal demo narratives\n\n* fix(landing): stabilize animated terminal layouts\n\n* fix(landing): make terminal panes independently scrollable",
          "is_bot": false,
          "headline": "feat(landing): tell the product through agent workflows (#220)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T20:50:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c76824fb95b1a8df47f1fd8b14fc15542e6af67",
          "body": null,
          "is_bot": false,
          "headline": "perf(indexer): enrich repositories concurrently (#219)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T10:58:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ed4bd7fe8de49f073acaf5eedfe8825f3487cda1",
          "body": "…aktp (#217)\n\n* docs(landing): native-use beat after install; v1 event-log line on aktp page\n\n* docs(landing): replace em-dashes in body copy with plain punctuation",
          "is_bot": false,
          "headline": "docs(landing): native-use beat after install + v1 event-log line on /…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-21T05:31:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "56407e81b004eca18b540053a949991c5fb48ad5",
          "body": "…ts (#216)\n\n* feat(landing): AKTP protocol page, header link, colorized transcripts\n\n* fix(landing): keep aktp diagram text inside box borders",
          "is_bot": false,
          "headline": "feat(landing): AKTP protocol page + header link + colorized transcrip…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T22:13:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e9f18793ebd4b213d8f90f4b41ca7497b4c50ab",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): bound write request timeouts (#215)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T14:42:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "badfaeeb82e8584b1bfe8a9e5d90c49169f802d0",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): encode github content paths (#214)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-20T00:21:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2926e80fe0f42ab1dda55676dd5257c5d2bc27bf",
          "body": "…213)\n\n* docs(readme,landing): the network-continual-learning line, shown not told\n\nREADME: the 'loop, not a transaction' bullet now states the thesis in one\nsentence — one accepted improvement becomes everyone's new starting\npoint; whoever joins today starts at today's level, never from zero —\nand \n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "docs(readme,landing): network continual learning — shown, not told (#…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:50:31Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2878017b06d631a749174dd5460da625c8c42d72",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): tolerate transient github disconnects (#212)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:50:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "678ae61f10d9538a8bbec3077a122a8e9b0e2137",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): remove lobehub source (#211)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T18:46:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8190330573f0b7fc7bea683b97ce55fc48115466",
          "body": "fix(release): allow resuming release when tags already exist on origin",
          "is_bot": false,
          "headline": "Merge pull request #210 from nicolasmelo1/fix/release-resume-remote-tags",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T02:56:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "32e7c6641779cabd12239968416e4a52b8c81fa2",
          "body": null,
          "is_bot": false,
          "headline": "fix(release): allow resuming release when tags already exist on origin",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-19T02:52:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d8dfb82145d62f1c5803c54f1b856d4a877281b",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.15",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-19T01:47:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "65f90f30e8ea7a8f3ab8bc811fe4770d4fd7cb4a",
          "body": "* feat(cli): indexed listing discovery opt-in and get command\n\n- Add --include-indexed and --tier flags to logion listings search\n- Add logion indexed get LISTING_ID command\n- Wire IndexedListingsResource in client V1 namespace\n- Implement resource methods without touching generated files\n- Update h\n[…]\ncontract operation)\n- Rename test_indexed_get_default_parser_limit to test_indexed_get_parses_listing_id\n\n---------\n\nCo-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(cli): indexed listing discovery opt-in and get command (#207)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T23:59:59Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a8e992e0edbb652075e526c880bf7b5fbfdede01",
          "body": "* chore(release): prepare companion v0.1.14\n\n* docs(release): align changelog attribution",
          "is_bot": false,
          "headline": "chore(release): prepare companion v0.1.14 (#206)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T18:47:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20b9946c192c764f1e02c7e597fb05ca74a1918b",
          "body": "* fix(scanners): ignore eval wording in comments\n\n* test(scanners): cover slash comments",
          "is_bot": false,
          "headline": "fix(scanners): ignore eval wording in comments (#205)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T17:04:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad6fd95c94da83969928351405f0c3f8dff3249e",
          "body": "…(#204)\n\nmarketplace_loop proves the buyer contract inside a single session:\npurchase, install, use, and review all happen in one agent process.\nThis scenario splits the journey across two sessions (the runner\nalready spawns a fresh driver process per phase): session one buys and\ninstalls and stops;\n[…]\nnt instead of repurchasing.\n\nPrompt-lint tests mirror marketplace_loop's rule: the visible prompt\nnever mentions reporting or reviews — the contract must come from\ncompanion policy, not the goal text.",
          "is_bot": false,
          "headline": "feat(agent-proving-ground): cross_session_skill_use builtin scenario …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T15:24:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "dbb4a9f6cdbb801e4ef1b374a318ff908e189eff",
          "body": null,
          "is_bot": false,
          "headline": "fix(indexer): parse lockfile URL schemes (#203)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T14:15:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f80a071fc64778f280534975557438642a95f6c0",
          "body": "* feat(indexer): add public skill hub sources\n\n* fix(indexer): report invalid lockfile JSON",
          "is_bot": false,
          "headline": "feat(indexer): add public skill hub sources (#202)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T14:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1cb58a267aaa0b00242b90c11282a76072710c5",
          "body": "* fix(indexer): expand hub catalog coverage\n\n* fix(indexer): bypass cache for known lookups\n\n* fix(indexer): fail closed on catalog provenance\n\n* fix(indexer): validate external pagination data",
          "is_bot": false,
          "headline": "fix(indexer): expand hub catalog coverage (#200)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T13:49:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c18c10564ae69cf531d05593c164a89d3b715e6",
          "body": "Hero hook, a new top 'Proof over popularity' section, an FAQ entry\nanswering 'why pay for an improvement my own AI can write', and the\nllms.txt summary now state the product thesis directly: generating\nimprovements is cheap; proving they are real is scarce; Logion sells\nthe proof. The unshipped proof layer (hidden-test scoring, benchmark\nvs field reconciliation) stays explicitly labeled as direction, per\nthe landing truth rule.",
          "is_bot": false,
          "headline": "feat(landing): lead with the proof-over-popularity thesis (#198)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T12:41:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c5d00b0fb3fe6a7c5fb91c94ba09475b10518fa5",
          "body": "* fix(indexer): crawl skills.sh sitemaps\n\n* fix(indexer): parse sitemap locations safely\n\n* fix(indexer): tighten sitemap origin handling",
          "is_bot": false,
          "headline": "fix(indexer): crawl skills.sh sitemaps (#199)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T12:20:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ea0ad9f8f1c050b2bb276bb807a078ac4a68db36",
          "body": "* fix(indexer): retry transient tarball fetches\n\n* perf(indexer): skip restricted tarball fetches\n\n* fix(indexer): retry transient HTTP responses\n\n* fix(indexer): close retried HTTP errors",
          "is_bot": false,
          "headline": "fix(indexer): retry transient tarball fetches (#197)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-18T10:52:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a3e6c0b1667e81acbccc4728746c7e88eed6ddd8",
          "body": "* fix(indexer): preserve run diagnostics and partial state\n\n* fix(indexer): capture adapter construction failures\n\n* fix(indexer): bound push error diagnostics",
          "is_bot": false,
          "headline": "fix(indexer): preserve run diagnostics and partial state (#196)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-17T17:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d389b4ab5136db8dad24628a1dc7e1cbfc4dbf91",
          "body": "* feat(indexer): on-disk conditional-request HTTP cache\n\nAdd a persistent ETag/Last-Modified cache (http_cache.DiskCache) wired\ninto Transport: stored validators are sent as If-None-Match /\nIf-Modified-Since and a 304 serves the cached body. Cache dir defaults to\n~/.cache/logion-indexer, overridable\n[…]\nhe\n  two-step crawl --out / push --plan resume path, the GitHub-token\n  rate-limit need, and install-from-source via clone + uv sync\n  --all-packages (logion-skillmap is an unpublished workspace dep).",
          "is_bot": false,
          "headline": "fix(indexer): close indexing reliability gaps (#194)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-16T20:16:41Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1bac46b4e6824f32638258b7c5f4ea6663841f85",
          "body": "…error codes (#193)\n\n- onboarding --setup-token called client.v1.setup_tokens.redeem, but the\n  generated SDK only exposes client.v1.github_setup.redeem_token — the\n  real (non-mocked) redeem path would raise AttributeError. Point the\n  CLI and the test mocks at the actual resource/method.\n- registe\n[…]\nng,\n  npm-wrapper, agent-proving-ground, social-management) and describe the\n  shipped GitHub surfaces (identity linkage, sign-in -> setup-token\n  install, source links, package maps, bounty PR lane).",
          "is_bot": false,
          "headline": "fix(cli): call the real SDK setup-token redeem; register package-map …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-16T01:39:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7caa08fedbf4114d978235bc6f045a9ed8d67694",
          "body": "* feat(indexer): add public skillhub indexer package\n\nAdd packages/indexer/ (logion-indexer) — a public, operator-run\ncrawler CLI that discovers skills from hub pages (skills.sh,\nClawHub, LobeHub, browse.sh, Hermes docs, skills-lock.json) and\ndirect GitHub repos, resolves each to its canonical GitHu\n[…]\nT endpoints\n- Catch network exceptions in Crawler.fetch_page() to prevent crawl crashes\n- Auto-configure transport API host from Pusher base_url\n- Document plan push behavior for minimal skill objects",
          "is_bot": false,
          "headline": "feat(indexer): add public skillhub indexer package (#191)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-15T23:18:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1171096ac8e03557cea72a106340cb93a8e09030",
          "body": "…ver (#188)\n\n* feat(cli): courses source-link set/show/remove commands\n\nAdd CLI commands to manage course-to-GitHub-repo source links. The\nSDK is regenerated from the updated OpenAPI contract to expose three\nnew operations: set_course_source_link, get_course_source_link,\ndelete_course_source_link.\n\n\n[…]\ncenario bindings and GitHub checks\n\n* fix(proving-ground): paginate GitHub observer reads\n\n* fix(cli): preserve JSON errors across source-link commands\n\n* style(cli): format source-link error handling",
          "is_bot": false,
          "headline": "feat(cli): courses source-link commands + proving-ground GitHub obser…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-15T16:32:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3bc33b4397a7a072bc8129794a831a10afe0847c",
          "body": "* perf(cli): defer runtime imports during parser setup\n\n* test(cli): harden startup regression checks\n\n* fix(cli): preserve lazy import seams\n\n* perf(cli): cache resolved lazy modules",
          "is_bot": false,
          "headline": "perf(cli): defer runtime imports during parser setup (#189)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-14T01:14:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0927e82dce82c3d0f27f9f3fedb47e13b2f5c8c2",
          "body": "* fix(scanners): pull Trivy vuln DB from mirror.gcr.io, GHCR fallback\n\nTrivy's built-in default DB repository (ghcr.io/aquasecurity/trivy-db)\nis aggressively rate-limited (TOOMANYREQUESTS) under community-wide\nload. On a cold cache the scan can burn its whole 300s timeout on the\nDB download or fail \n[…]\nn-semantic-release>=10.5.3,<10.6.0 (click~=8.1.0). psr 10.6.1 relaxes\nthat to click<9,>=8.1.0, so widen the psr pin to >=10.6.1,<10.7.0 and let\nclick resolve to 8.4.2. Dependency audit is green again.",
          "is_bot": false,
          "headline": "fix(scanners): pull Trivy vuln DB from mirror, GHCR fallback (#186)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T19:56:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13a3b8613f760ed8602446d843e95d557fd802b6",
          "body": "* feat(landing): smooth scroll and stacked-section scrolling\n\n- html scroll-behavior: smooth, falling back to auto under\n  prefers-reduced-motion\n- content sections are position: sticky and stack: each section pins as\n  it fills the viewport and the next slides up over it. Sections keep a\n  transpar\n[…]\n, never under reduced motion, ctrl+wheel zoom untouched, and\nkeyboard/scrollbar/anchor movement resyncs the target. scrollTo uses\nbehavior: \"instant\" per tick so the CSS smoothing doesn't double-ease.",
          "is_bot": false,
          "headline": "feat(landing): smooth scroll and stacked-section scrolling (#185)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T00:56:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "35861927186c9d7076a1bde89eafc39c9068e4f0",
          "body": "* fix(landing): fingerprint static asset URLs; add hero engraving\n\nTwo changes:\n\n- cache busting: /static responses are edge/browser-cached for hours,\n  so deploys shipped fresh HTML against stale CSS/JS — the setup-complete\n  fixes were invisible for up to 4h after deploy. Every template asset\n  UR\n[…]\nimperceptible — the raster is ~100vh tall, so bottom vs\ncenter anchoring looked identical. bottom: -18vh crops the lower fifth\nbelow the edge so the figure visibly rises from the bottom of the\nscreen.",
          "is_bot": false,
          "headline": "fix(landing): fingerprint static asset URLs; add hero engraving (#184)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-13T00:32:30Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2c76dd42051e954a0ff518c4084290c41cf29ed9",
          "body": "…e on bad handoff (#183)\n\nPost-launch feedback on the setup-complete page:\n\n- drop the \"GitHub linked\" header status: it was the third flex item in\n  the space-between header, pushing the nav to the center; with it gone\n  the nav sits right-aligned again and the @login nav swap plus the\n  personaliz\n[…]\n with an\n  ellipsis on one line and scrolls horizontally; the homepage curl\n  command remains fully visible (guard test unchanged)\n- the token-safety warning renders in the design's bright accent gold",
          "is_bot": false,
          "headline": "fix(landing): polish setup-complete — right-aligned nav, redirect hom…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:42:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4faaca76052114c747646f39b109e8f2021e0737",
          "body": null,
          "is_bot": false,
          "headline": "fix(cli): tolerate unwritable auto-update state (#182)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:30:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80e2145187cc929c1d74f4fb25741b5c39286292",
          "body": "…#181)\n\nLanding revision in three parts:\n\n- copy/structure: plain-language hero subheading, positive product\n  definition, merge the three overlapping trust sections into one,\n  fold harness into install, drop redundant economy checklist and the\n  spec-language caveat (honesty anchors preserved; pol\n[…]\nain homepage (hidden outside setup_mode + .cta[hidden] CSS fix);\n  the dedicated \"sign in with GitHub again\" retry link is gone — the\n  pre-authenticated install CTA doubles as the expired-state retry",
          "is_bot": false,
          "headline": "fix(landing): copy rewrite, mobile perf path, setup-state CTA fixes (…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T23:08:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "c3c201b0c946cf99789c1778e05e1f21bdab95a4",
          "body": "* feat(cli): auto-github-pr submissions surface\n\n- sync OpenAPI contract from private backend changes\n- regenerate client models/operations removing register-pr\n- add accepts_github_prs to bounty create/update, github_pr to submission create\n- remove register-pr command; open-pr becomes repair comma\n[…]\nrender_bounty helper that duplicated the GitHub PR line\n- print _bounty_github_pr_line in create, update and get (human mode only)\n- JSON output unchanged: emit(result, json_output=config.json_output)",
          "is_bot": false,
          "headline": "feat(cli): Phase 15.5.2 auto GitHub PR submissions (#179)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T17:25:23Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ef51c768b0d42c2a5577ebca42473d8a026f8e02",
          "body": "…en tests (#180)\n\nBack-ports the reply_opened_unfunded fix that landed only in the\nvendored private copy (Copilot autofix on the private PR): the top-up\nhost is derived from bounty_url instead of hardcoding https://logion.sh,\nso staging/self-hosted deployments point users at the right host.\n\nAdds TestRepliesGolden mirrored byte-identically in both repos\n(15.3/16.11 parity discipline) so this reply's behavior drifting in one\ncopy fails that repo's CI.",
          "is_bot": false,
          "headline": "fix(bot): derive top-up URL from bounty_url; pin reply copy with gold…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T01:26:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2ea3218d83302067c318dd8c46137c13586400f",
          "body": "* feat(bot): issue-mention bounty bot grammar, parser, and replies\n\n* fix(deps): track packages/bot in the deps lock guardrail\n\ncheck_deps_lock.py enumerates pyprojects explicitly, so the new\npackages/bot workspace member was invisible to make check-deps-lock.\nAdd it to the list and regenerate .deps\n[…]\nAdd reply_refused_course_slug_not_found so a slug typo gets a precise\n  refusal instead of the misleading multiple-courses message.\n- Add SPDX headers to the new package and re-sort known-first-party.",
          "is_bot": false,
          "headline": "feat(bot): issue-mention bounty bot grammar, parser, and replies (#178)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-12T00:31:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a6991f3cb78077f401cb1d4554f60b1089949f19",
          "body": null,
          "is_bot": false,
          "headline": "fix(scanners): match quoted uv dependencies (#177)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T11:22:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c3693d2213ed4eeffd09ab236acec4f6b375319",
          "body": null,
          "is_bot": false,
          "headline": "fix(scanners): block runtime code acquisition (#176)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T07:27:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4aa4858848772984f1be2183df75efafbd286a9d",
          "body": "… JSON envelopes (#175)\n\nPhase 15.5 gap closure on the CLI submission surface:\n\n- open-pr/register-pr are mutating and now require --yes (require_yes),\n  matching accept/reject/withdraw and the companion confirmation policy\n- fork_required responses render FORK_NEXT_STEPS (branch to push,\n  register\n[…]\nrom the\n  rev-parse that resolves ROOT, so check-models finds the contract when\n  invoked from the pre-commit hook (git exports GIT_DIR to hooks and\n  --show-toplevel then resolves to packages/client)",
          "is_bot": false,
          "headline": "fix(cli): gate bounty PR commands behind --yes, add fork guidance and…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-11T03:14:56Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e3fcff90c0cb9596ede5aeb53d7ccce557baf61",
          "body": "…it, noindex, @login nav (#172)\n\n- setup-complete.js: strip the fragment even without #hid and show the\n  styled expired state on direct visit / refresh after claim (was stuck\n  on 'linking your GitHub account…' forever)\n- setup-complete.js: stop replacing the 'GitHub linked' heading with the\n  raw \n[…]\nomplete: Cache-Control no-store + X-Robots-Tag noindex,\n  removed from sitemap, robots.txt disallows /setup/ for every UA group\n- tests: invert the sitemap lock, cover headers, robots and the nav hook",
          "is_bot": false,
          "headline": "fix(landing): setup-complete follow-ups — expired state on direct vis…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T23:12:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0836859e7325adaab148b5c8b33af68b40170e33",
          "body": "chore: sync OpenAPI contract from logion-private",
          "is_bot": false,
          "headline": "Merge pull request #165 from nicolasmelo1/automation/sync-openapi",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:12:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0e30671ccf14427e32057c2ea9568f4952fcab9",
          "body": "feat(cli/sdk): bounty submission PR open/register commands",
          "is_bot": false,
          "headline": "Merge pull request #169 from nicolasmelo1/feat/phase-15.5-cli-sdk-v2",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:08:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aa3050009ed913ef68ddf4a3ec02a3c2623a6fe3",
          "body": null,
          "is_bot": false,
          "headline": "feat(cli/sdk): bounty submission PR open/register commands",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T02:04:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d6a0b7f618d3d285a043726963389d87229bc623",
          "body": null,
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private",
          "author_name": "nicolasmelo1",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-10T00:31:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "db0d40fa5df0af5e029dc200a48c9cfb1504de33",
          "body": "… (#167)\n\n* docs(readme): reframe to the end-goal — verifiable capability network\n\nLead with the end goal (proof over popularity, a loop not a transaction,\nskills as the wedge not the ceiling, one node among many) and add an honest\n'What's live today' vs 'Where it's going' split so the shipped marke\n[…]\nd \"roadmap\" — public-audit forbids planning vocabulary\n\nThe public-audit guardrail (and its test) forbid the word \"roadmap\"/\"Phase\";\nreword the \"where it's going\" intro to \"what we are building next\".",
          "is_bot": false,
          "headline": "docs(readme): reframe to the end-goal — verifiable capability network…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T20:08:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99bf70b48cc89e1e5e6e94f443e3056012ac2233",
          "body": "…oute with setup_mode context\\n- Render linked GitHub state with masked install command CTA\\n- Add setup-complete.js to claim handoff via URL fragment\\n- Update site.yaml copy and hide sign-in CTA in setup mode\\n- Add landing route tests (#156)",
          "is_bot": false,
          "headline": "feat(landing): setup-complete handoff page\\n\\n- Add /setup/complete r…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T16:02:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20d2d4debbf52e7fb1a1450668bf171e7e756302",
          "body": null,
          "is_bot": false,
          "headline": "fix(social-management): harden file post input (#166)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-09T16:02:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bed9a83d9cdc9a2721c301a41e6ca065cabafdb7",
          "body": "…xpired invite in README badge\\n- Replace expired invite in landing site footer (#158)",
          "is_bot": false,
          "headline": "docs: update Discord invite link to current vanity URL\\n\\n- Replace e…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T14:22:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70fc034291c8a0091fe09f435fb982362f7cde61",
          "body": "* feat(social-management): add --file option to post commands\\n\\n- Allow Discord and X posts to be read from a file\\n- Preserves real newlines from the file (e.g. for Discord formatting)\\n- Validate that at least one of --text or --file is provided\\n- Update README examples and add CLI tests\n\n* Pote\n[…]\nnding\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat(social-management): add --file option to post commands (#157)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T14:17:17Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "d18bb5d351ad9dd72ee2a82641ed042b0611d9c7",
          "body": "* feat(social-management): add alerts channel support for Discord read/post\n\n- Add 'alerts' webhook slot (DISCORD_WEBHOOK_ALERTS) to constants and config\n- Add DISCORD_CHANNEL_ALERTS env var for read target\n- Add --channel flag to 'discord read' (support|alerts, default: support)\n- Add 'alerts' to -\n[…]\n third-party content is vendored: tests are gated behind\nLOGION_SKILLMAP_NET_FIXTURES=1 and skip when gh is unavailable, so normal\ntest/pre-commit runs don't hit the network. Pins recorded 2026-07-07.",
          "is_bot": false,
          "headline": "feat(social-management): add alerts channel support (#154)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-08T00:23:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "99d15f80e37d266180858eeffa7447e89892f249",
          "body": "* feat(skillmap): add deterministic package-map inference engine\n\n- logion-skillmap stdlib-only package with parser, validator, inference, spec conformance, and resolver\n- Precedence: author map > plugin manifest > skill scan\n- Passes: exclusion, harness-mirror dedup, metadata, spec conformance, emi\n[…]\nt.toml files\nthat did not include packages/skillmap/pyproject.toml. CI failed because\nthe new dependency (pyyaml) was not tracked by the gate.\n\n* fix(skillmap): address Copilot round-2 review comments",
          "is_bot": false,
          "headline": "feat(skillmap): add deterministic package-map inference engine (#153)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T22:39:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f13264b10fc807e16db036492eb34e09620c8888",
          "body": "… (#155)\n\nTwo CLI improvements:\n\n1. `logion completion <bash|zsh|tcsh>` prints a tab-completion script\n   generated by introspecting the live argparse tree via shtab, so every\n   command, subcommand, and flag is covered and stays in sync with no\n   hand-maintained list. Supports --json (script wrapp\n[…]\nwser flag fall back to the\n   copy-paste instructions.\n\nBrowser helpers live in a new identity/_browser.py to keep github.py\nunder the per-file line budget. shtab added to .deps.lock.json review gate.",
          "is_bot": false,
          "headline": "feat(cli): shell tab-completion + auto-open browser in github connect…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T22:29:24Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d192cf68f47cefb7c9e8ea50ffc49a12af2a405b",
          "body": "The 0.1.13 release commit tripped the public audit on main (PR Safety\nfailure): the auto-generated changelog carried 'Phase 18.3' and a\nprivate repo name from commit subjects.\n\n- Reword the two offending 0.1.13 changelog lines.\n- Sanitize commit subjects in the changelog generator (Phase->phase,\n  r\n[…]\nmes -> neutral wording).\n- Validate the generated entry against the public-audit patterns\n  before writing, so future leaks fail the release early instead of\n  breaking main after the tags are pushed.",
          "is_bot": false,
          "headline": "fix(release): keep generated changelog public-safe",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T17:00:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2ccf9eccd0ee5e8e770b0286b96d0425cd0caade",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T16:53:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "87e3fdfe182fc299e49639882e675d70174c94a9",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.13",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-07T16:52:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e7ef362d6dd12e3b98121e9324e4ae921c11382",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T03:43:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3f1d3011b96bcf56c4bf0313a0fb3b4bf5e5a78",
          "body": null,
          "is_bot": false,
          "headline": "fix(cli): harden setup token onboarding (#152)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-07T01:25:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b4794811c739a3cb0eeb5462e00bba4741a7e49",
          "body": "* feat(landing): add GitHub sign-in CTA to nav and hero\n\n* test(landing): add sign-in CTA test across all surfaces\n\nAdd test_signin_cta_present_on_all_surfaces asserting the GitHub\nsign-in href appears on HTML, markdown, and llms-full.txt surfaces.\nAlso add sign-in reference to landing.md for markdo\n[…]\nore[attr-defined] for client.v1.setup_tokens.redeem\n  (resource not yet in generated SDK)\n- Remove test_setup_token_flag_allows_noninteractive (tested\n  unreachable path; env-var path is the real one)",
          "is_bot": false,
          "headline": "feat(landing): landing GitHub signin (#150)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T23:49:04Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "18c6b529b508eee7bbad4d084211aeb7740af0cc",
          "body": null,
          "is_bot": false,
          "headline": "Merge branch 'main' of https://github.com/nicolasmelo1/logion",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T21:46:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4337022ca2738306fbcb50e8d6f227fb60ef7eb4",
          "body": "… to haiku (#149)\n\n* refactor(proving-ground): flatten package layout, default claude-code to haiku\n\n- Move src/logion_agent_proving_ground/ to agent_proving_ground/ at the\n  package root; update imports, pyproject packaging/entry point, ruff\n  config, README, and Makefile lint/typecheck paths accor\n[…]\neded fixtures. Assertions can set\n  include_baseline: true to opt out of baseline-delta filtering, and\n  course_exists without owner_agent now searches all roles instead of\n  querying unauthenticated.",
          "is_bot": false,
          "headline": "refactor(proving-ground): flatten package layout, default claude-code…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T21:44:55Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f5116bf046e4da9ff815bf99be176cfd48da0785",
          "body": "…bounty in mock loop (#148)\n\n- docs/e2e-marketplace-loop.md referenced logion-private/workspace paths,\n  tripping the public-safe audit; moved to workspace shared-docs\n- proving-ground README: drop private repo references and the doc link\n- mock adapter: add fund_bounty operation (open -> funded + ledger debit)\n  so the scripted marketplace_loop satisfies the new status: funded assertion",
          "is_bot": false,
          "headline": "fix(ci): move private-referencing e2e guide out of public repo, fund …",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T17:04:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a98a9b0cd22279073ebb3ce509c3ead66c3078b5",
          "body": "…bounty in mock loop\n\n- docs/e2e-marketplace-loop.md referenced logion-private/workspace paths,\n  tripping the public-safe audit; moved to workspace shared-docs\n- proving-ground README: drop private repo references and the doc link\n- mock adapter: add fund_bounty operation (open -> funded + ledger debit)\n  so the scripted marketplace_loop satisfies the new status: funded assertion",
          "is_bot": false,
          "headline": "fix(ci): move private-referencing e2e guide out of public repo, fund …",
          "author_name": "Nicolas Melo",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:46:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5a2292d363630c4ad1f9e3d3f4c7ec7f749008da",
          "body": "- HermesDriver and ProviderDriver now read model/provider from\n  driver_config and inject --model/--provider flags into the CLI\n  command, overriding any default_args values.\n- marketplace_loop.yaml defaults to glm-5.1 on ollama-cloud.\n- _override_flag() helper replaces existing flag values instead of\n  appending duplicates.\n- Added unit tests for both HermesDriver and ProviderDriver config.\n- Updated e2e guide with model/provider selection docs and cost table.",
          "is_bot": false,
          "headline": "feat(proving-ground): add model/provider config to driver_config",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:34:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c6dde8d8eb2aed85b6b844a9213bd4a6326ac28c",
          "body": "Document the full marketplace_loop e2e setup procedure including\nDB migration, credit seeding, stale data cleanup, and troubleshooting.\nUpdate agent-proving-ground README with prerequisites for clean runs.",
          "is_bot": false,
          "headline": "docs(proving-ground): add e2e reproducible setup guide",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T16:13:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22ca96a240800a4c81902e2f275fd9f81e82f4d1",
          "body": "…cept\n\n- Change creator_opens_bounty assertion from status:open to status:funded\n  since the agent naturally funds the bounty during creation\n- Add fund step to opens phase success_hint\n- Remove fund step from accepts phase success_hint (already done)",
          "is_bot": false,
          "headline": "fix(proving-ground): bounty status funded, fund in opens phase not ac…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T15:35:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf82186a17766960c1cc20fc4b3d9dd9a17aea76",
          "body": "…sts query",
          "is_bot": false,
          "headline": "refactor(proving-ground): extract candidates variable in purchase_exi…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T15:21:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1fffaa03113f7dbc9ebecbd992b47d5d750a62da",
          "body": "…y accept hint",
          "is_bot": false,
          "headline": "fix(proving-ground): increase max-turns to 80, add fund step to bount…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T13:55:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b90b6debcb534d573403e60402092d1f58ed3bc6",
          "body": "* fix(proving-ground): phase-isolated scaffolding and bounty submission visibility\n\nTwo bugs uncovered by the marketplace_loop e2e run:\n\n1. Hermes prompt contamination: _build_prompt() unconditionally\n   injected course-creation scaffolding into every phase, causing\n   the operator agent to create a\n[…]\nat session dicts (for backward compat\nor direct SDK use) still work since they lack the envelope markers.\n\nAdds a regression test that wraps a session in the v1 envelope and\nasserts the push succeeds.",
          "is_bot": false,
          "headline": "Fix/cli uploads push v1 envelope (#145)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T12:48:05Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8291fed38e579f36035db2fcef55ed9a0d7b40e0",
          "body": "… visibility (#146)\n\nTwo bugs uncovered by the marketplace_loop e2e run:\n\n1. Hermes prompt contamination: _build_prompt() unconditionally\n   injected course-creation scaffolding into every phase, causing\n   the operator agent to create a NEW course instead of approving\n   the creator's pending publi\n[…]\nsubmissions; add creator_agent to the\n   marketplace_loop scenario params.\n\nAlso adds 15 regression tests for _phase_scaffolding and\n_build_prompt, and .gitignore entries for proving-ground artifacts.",
          "is_bot": false,
          "headline": "fix(proving-ground): phase-isolated scaffolding and bounty submission…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T12:47:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "fd3827fc5b1784f98f99d09af89e4a592a1371a6",
          "body": null,
          "is_bot": false,
          "headline": "fix(agent-proving-ground): fix Hermes local-devrig flow (#144)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-06T01:28:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02b1e3c96576f09c8fe1811d04e7f5051c3dc86d",
          "body": null,
          "is_bot": false,
          "headline": "fix(agent-proving-ground): isolate marketplace assertions (#143)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T17:58:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ba7ff5deda2d1500c72b7055cc7e7e8b4747a02",
          "body": "…nd local assertions (#142)\n\n- Add remote and local-devrig API adapters.\n- Add env parsing helpers for devrig.env.\n- Add stdlib-urllib HTTP health check helpers.\n- Add capability-gated local assertions: logs, db, events.\n- Wire new adapters and assertions into CLI/registry.\n- Pass agent_roles into create_world so local-devrig can override roles.\n- Add unit tests for adapters, env parsing, and local assertions.\n\nAll changes are local to packages/agent-proving-ground.",
          "is_bot": false,
          "headline": "feat(agent-proving-ground): Phase 18.3 remote/local-devrig adapters a…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T15:48:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c8787847610b89ba6b3e68d77ac5eefe9cbd7e44",
          "body": null,
          "is_bot": false,
          "headline": "feat(agent-proving-ground): add real agent drivers for phase 18.2 (#140)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-05T03:08:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50e20ae9f37f5b612be339002981bcbc0218990a",
          "body": "* feat: add agent-proving-ground package (phase 18.1 core)\n\nAdds logion-agent-proving-ground, a deterministic scenario runner for\nmulti-agent product proving ground.\n\nHighlights:\n- mock API adapter + scripted driver for scenario authoring\n- Pydantic YAML scenario schema with agents, phases, goals an\n[…]\n472+Copilot@users.noreply.github.com>\n\n* fix(agent-proving-ground): address latest copilot review\n\n---------\n\nCo-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: agent proving ground core (phase 18.1) (#139)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T19:52:00Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "c65126e0ae21d9c5ade4e09605006884c48dd17d",
          "body": "Co-authored-by: nicolasmelo1 <12915742+nicolasmelo1@users.noreply.github.com>",
          "is_bot": false,
          "headline": "chore: sync OpenAPI contract from logion-private (#129)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T02:47:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4db67a79357350445b56b4bf5bde25b98282561e",
          "body": null,
          "is_bot": false,
          "headline": "Document admin devrig persona (#138)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-04T02:47:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd757dbc45f2255fb2ec6d45f96911e814e84db7",
          "body": "* feat(identity): add GitHub identity CLI commands and SDK methods\n\nImplements the public surface of GitHub Identity & OAuth Core.\n\n- Regenerated OpenAPI contract with GitHub OAuth endpoints\n- SDK: 6 identity resource methods (begin_authorization, complete_callback,\n  begin_device_flow, poll_device_\n[…]\ny, recall, and landing checks\n\n* chore(deps): sync uv lock\n\n* style(cli): format recall ranker and taxonomy test\n\n* fix(cli): align github identity flow\n\n* fix(cli): harden github identity json errors",
          "is_bot": false,
          "headline": "feat(identity): add GitHub identity CLI commands and SDK methods (#136)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T22:09:06Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6cab5629bf816eedcf5d75b56a9c16ba33a43de3",
          "body": "* feat(identity): add GitHub identity CLI commands and SDK methods\n\nImplements the public surface of GitHub Identity & OAuth Core.\n\n- Regenerated OpenAPI contract with GitHub OAuth endpoints\n- SDK: 6 identity resource methods (begin_authorization, complete_callback,\n  begin_device_flow, poll_device_\n[…]\nidentity, recall, and landing checks\n\n* chore(deps): sync uv lock\n\n* style(cli): format recall ranker and taxonomy test\n\n* fix(cli): align github identity flow\n\n* Sync agent skill copies after updates",
          "is_bot": false,
          "headline": "fix(cli): sync agent skill copies after updates (#137)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T21:10:10Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2a6c678a318d8a5696ca73996a59ce0c312a3bec",
          "body": "* feat(credits): add --currency flag to top-up CLI command\n\nThe CLI now accepts an optional --currency flag (default: usd) on\n`credits top-up`. When set to a non-USD currency, the backend converts\nthe charge to the buyer's local currency at the current exchange rate;\ncredits are always granted in US\n[…]\n_amount_minor from the backend PR #105. Regenerated from the\nFastAPI app and re-synced generated models. Removed the now-unnecessary\ntype: ignore[call-arg] workaround since currency is a native field.",
          "is_bot": false,
          "headline": "feat(credits): add --currency flag to top-up CLI command (#134)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T14:04:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a597feb152bcad20dc455080ac49a6994e44a709",
          "body": "…135)\n\n- docs/installer.md said the logion.sh redirect points at the latest\n  installer-v* release; the landing route actually redirects to the raw\n  scripts on main (release assets back the direct-GitHub path only)\n- README still framed PyPI/npm availability as 'shipping with the first\n  public release' with a pre-release badge; packages are live",
          "is_bot": false,
          "headline": "docs: fix installer redirect claim and post-publish README wording (#…",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T12:29:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d5eb5aff26ffd6663a93a8000e5e8d59550e34e",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): 0.1.12",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-03T11:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1de4131c7d97fca51c83d9996872ff7f5ec6a3f0",
          "body": "The release orchestrator now collects merged PRs since the last\nrelease tag via git log, groups them by Conventional Commit type,\ncredits authors (including external contributors), and prepends a\nnew entry to releases/CHANGELOG.md during the release sequence.\n\nThis runs automatically as part of 'make release VERSION=X' — no\nmanual changelog editing needed. External contributors like first-time\nPR authors are credited by name in the Contributors line.",
          "is_bot": false,
          "headline": "feat(release): auto-generate changelog from merged PRs (#133)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T11:03:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "953b27faa1fdaffca2c46de8a6ec4f9d5c17e31a",
          "body": null,
          "is_bot": false,
          "headline": "fix(update): clean installer output and docs guidance (#132)",
          "author_name": "Nicolas Leal",
          "author_login": "nicolasmelo1",
          "committed_at": "2026-07-03T04:24:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "420560063943c6d3f34d9521754f92746d2d4a64",
          "body": "* fix(cli): align Codex skill path and companion cleanup\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>\n\n* docs(cli): clarify Codex skill sync wording\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>\n\n* fix(devrig): resolve harness review feedback\n\n---------\n\nSigned-off-by: maelrx <eumael.mkt@gmail.com>",
          "is_bot": false,
          "headline": "fix(cli): align Codex skill path and companion cleanup (#131)",
          "author_name": "M'ael",
          "author_login": "maelrx",
          "committed_at": "2026-07-03T00:36:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 42,
      "commits_last_year": 276,
      "latest_release_at": "2026-07-22T12:14:10Z",
      "latest_release_tag": "logion-skillmap-v0.1.0",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 11,
      "days_since_latest_release": 2,
      "mean_days_between_releases": 2.1
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 100,
      "has_issue_template": false,
      "has_code_of_conduct": true,
      "has_pull_request_template": true
    },
    "ecosystem": {
      "packages": [
        {
          "name": "logion-cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "marketplace",
            "agent",
            "skill",
            "cli",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/logion-cli/",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 2675,
          "first_published_at": "2026-06-28T17:31:18.179929Z",
          "latest_published_at": "2026-07-19T01:48:44.386378Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "logion-client",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "agent",
            "logion",
            "marketplace",
            "sdk",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": true,
          "registry_url": "https://pypi.org/project/logion-client/",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 10,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-06-28T17:25:09.233923Z",
          "latest_published_at": "2026-07-19T01:48:40.251614Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        },
        {
          "name": "logion-skillmap",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "skillmap",
            "package-map",
            "inference",
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Developers",
            "Operating System :: OS Independent",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.11",
            "Programming Language :: Python :: 3.12",
            "Programming Language :: Python :: 3.13",
            "Topic :: Software Development :: Libraries"
          ],
          "ecosystem": "pypi",
          "matches_repo": null,
          "registry_url": "https://pypi.org/project/logion-skillmap/",
          "is_deprecated": false,
          "latest_version": "0.1.0",
          "repository_url": null,
          "versions_count": 1,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": null,
          "first_published_at": "2026-07-22T12:13:58.217736Z",
          "latest_published_at": "2026-07-22T12:13:59.289043Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 2
        },
        {
          "name": "@logionsh/cli",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "logion",
            "cli",
            "marketplace",
            "agent"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@logionsh/cli",
          "is_deprecated": false,
          "latest_version": "0.1.15",
          "repository_url": "https://github.com/nicolasmelo1/logion",
          "versions_count": 15,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 3077,
          "first_published_at": "2026-06-28T17:40:39.731000Z",
          "latest_published_at": "2026-07-19T01:48:58.647000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 2,
      "stars": 33,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-07-02",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 2,
        "total_forks": 2
      },
      "star_history": null,
      "open_issues_and_prs": 9
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [
        "Makefile",
        "packages/agent-companion/Makefile",
        "packages/agent-proving-ground/Makefile",
        "packages/client/Makefile"
      ],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "packages/client/src/logion/py.typed",
        "packages/npm-wrapper/tsconfig.json",
        "packages/skillmap/logion_skillmap/py.typed"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 60138,
      "source_files_sampled": 569,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 6968
    },
    "dependencies": {
      "manifests": [
        "pyproject.toml"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 17,
        "malicious_count": 0,
        "assessed_package": "pypi:logion-cli@0.1.15",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [
        {
          "name": "pyyaml",
          "manifest": "packages/agent-companion/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "pydantic",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.8"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "rich",
          "manifest": "packages/agent-proving-ground/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=13.7"
        },
        {
          "name": "logion-client",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "logion-skillmap",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pydantic",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7,<3.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "shtab",
          "manifest": "packages/cli/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=1.7,<2.0"
        },
        {
          "name": "email-validator",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.1,<3.0.0"
        },
        {
          "name": "httpx",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.27,<1.0.0"
        },
        {
          "name": "pydantic",
          "manifest": "packages/client/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.7,<3.0.0"
        },
        {
          "name": "logion-skillmap",
          "manifest": "packages/indexer/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": null
        },
        {
          "name": "pyyaml",
          "manifest": "packages/indexer/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "fastapi",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.136.1,<0.137.0"
        },
        {
          "name": "jinja2",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=3.1.6,<4.0.0"
        },
        {
          "name": "markdown-it-py",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=4.0.0,<5.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/landing/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0.2,<7.0.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/scanners/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/skillmap/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0"
        },
        {
          "name": "httpx",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=0.28,<0.29"
        },
        {
          "name": "pydantic",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=2.6,<3"
        },
        {
          "name": "pyyaml",
          "manifest": "packages/social-management/pyproject.toml",
          "ecosystem": "pypi",
          "version_constraint": ">=6.0,<7.0"
        }
      ],
      "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": 3,
        "merged_prs": 184,
        "open_issues": 6,
        "closed_ratio": 0.333,
        "closed_issues": 3,
        "closed_unmerged_prs": 41
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "nicolasmelo1",
          "commits": 267,
          "avatar_url": "https://avatars.githubusercontent.com/u/12915742?v=4"
        },
        {
          "type": "User",
          "login": "nicolasfmelo",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/73129502?v=4"
        },
        {
          "type": "User",
          "login": "maelrx",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/184181604?v=4"
        }
      ],
      "contributors_sampled": 3,
      "top_contributor_share": 0.985
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "companion-publishability.yml",
        "copilot-pr-review.yml",
        "deploy-landing-vercel.yml",
        "install-smoke.yml",
        "pr-safety.yml",
        "pr-title.yml",
        "release-all.yml",
        "release-cli.yml",
        "release-client.yml",
        "release-companion.yml",
        "release-installer.yml",
        "release-npm.yml",
        "release-skillmap.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json",
        "uv.lock"
      ],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 9,
            "reason": "binaries present in source code",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 5,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
            "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/29 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 3,
            "reason": "project has 1 contributing companies or organizations -- score normalized to 3",
            "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": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "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": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 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": "27 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "6efa11ff0c1e8139620ef913a4e4e0bafb861b4a",
        "ran_at": "2026-07-24T14:14:46Z",
        "aggregate_score": 3.5,
        "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-23T13:10:56Z",
      "oldest_open_prs": [
        {
          "number": 170,
          "created_at": "2026-07-10T11:22:13Z",
          "last_comment_at": "2026-07-10T23:16:16Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 171,
          "created_at": "2026-07-10T12:20:06Z",
          "last_comment_at": "2026-07-10T23:16:19Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 238,
          "created_at": "2026-07-24T01:50:59Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-23T13:07:40Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": [
        {
          "number": 159,
          "created_at": "2026-07-08T15:05:23Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 160,
          "created_at": "2026-07-08T15:05:25Z",
          "last_comment_at": "2026-07-09T22:04:26Z",
          "last_comment_author": "nicolasmelo1"
        },
        {
          "number": 161,
          "created_at": "2026-07-08T15:05:27Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 162,
          "created_at": "2026-07-08T15:05:29Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 163,
          "created_at": "2026-07-08T15:05:31Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 164,
          "created_at": "2026-07-08T15:05:33Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/nicolasmelo1/logion",
    "host": "github.com",
    "name": "logion",
    "owner": "nicolasmelo1"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 65,
      "inputs": {
        "security": 48,
        "vitality": 73,
        "community": 58,
        "governance": 52,
        "engineering": 90
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 73,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 276,
              "human_commit_share": 0.97,
              "days_since_last_push": 0,
              "active_weeks_last_year": 11
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "11/52 weeks with commits",
                "points": 7.6,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "276 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 276
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": null,
            "notes": [],
            "value": 90,
            "inputs": {
              "releases_count": 42,
              "latest_release_tag": "logion-skillmap-v0.1.0",
              "releases_from_tags": false,
              "days_since_latest_release": 2,
              "mean_days_between_releases": 2.1
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "42 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 42
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.1 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.1
                    }
                  }
                ],
                "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": "moderate",
        "name": "Community & Adoption",
        "value": 58,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "forks": 2,
              "stars": 33,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "33 stars",
                "points": 24.4,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 33
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "2 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "excellent",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 92,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": true,
              "has_pull_request_template": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 13.5,
                "status": "met",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 6.3,
                "status": "met",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "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": 63,
            "inputs": {
              "packages": [
                "logion-cli",
                "logion-client",
                "logion-skillmap",
                "@logionsh/cli"
              ],
              "dependents": null,
              "ecosystems": "npm, pypi",
              "total_downloads": null,
              "monthly_downloads": 5752
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "5,752 downloads/month across npm, pypi",
                "points": 50.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 5752,
                      "ecosystems": "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": 52,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 16,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 3,
              "top_contributor_share": 0.985
            },
            "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 98% of commits",
                "points": 0.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 98
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "3 contributors",
                "points": 4.1,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 3
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "at_risk",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 47,
            "inputs": {
              "merged_prs": 184,
              "open_issues": 6,
              "closed_issues": 3,
              "issue_closed_ratio": 0.333,
              "closed_unmerged_prs": 41
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "33% of issues closed",
                "points": 15.6,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 33
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "184/225 decided PRs merged",
                "points": 31.3,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 184,
                      "decided": 225
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 62,
            "inputs": {
              "followers": 120,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "nicolasmelo1",
              "public_repos": 73,
              "account_age_days": 4055
            },
            "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": "120 followers of nicolasmelo1",
                "points": 15,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 120,
                      "login": "nicolasmelo1"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "73 public repos, account ~11 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 73
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 11
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "logion-cli",
                "logion-client",
                "logion-skillmap",
                "@logionsh/cli"
              ],
              "ecosystems": "npm, pypi",
              "any_deprecated": false,
              "min_days_since_publish": 2
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "4 package(s) on npm, pypi",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 4,
                      "ecosystems": "npm, pypi"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 2 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "15 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 15
                    }
                  }
                ],
                "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": "excellent",
        "name": "Engineering Quality",
        "value": 90,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 84,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "13 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 13
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "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": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "topics": [
                "agents",
                "claude-code",
                "claude-code-skill",
                "clawhub",
                "directory",
                "hermes",
                "hermes-skill",
                "network",
                "openclaw",
                "skill",
                "skill-development",
                "skills",
                "skills-course",
                "logion",
                "ai",
                "ai-agent",
                "ai-agents",
                "llm",
                "llm-tools",
                "openai"
              ],
              "has_wiki": true,
              "homepage": "https://logion.sh",
              "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://logion.sh",
                "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": "20 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 20
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 48,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 18,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 0,
              "scorecard_aggregate": 3.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "binaries present in source code",
                "points": 6.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection is not maximal on development and all release branches",
                "points": 3.8,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "28 out of 28 merged PRs checked by a CI test -- score normalized to 10",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 0/29 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 1 contributing companies or organizations -- score normalized to 3",
                "points": 0.8,
                "status": "partial",
                "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 detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "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": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file 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": "27 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:logion-cli@0.1.15 runtime dependency closure — what installing the published package pulls in — 17 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "pypi:logion-cli@0.1.15",
                  "assessed": 17
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 17,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 17,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 4
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "good",
        "name": "AI Readiness",
        "value": 76,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.969,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 6968
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "94 of 97 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 94,
                      "sampled": 97
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "good",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json",
                "uv.lock"
              ],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [
                "Makefile",
                "packages/agent-companion/Makefile",
                "packages/agent-proving-ground/Makefile",
                "packages/client/Makefile"
              ],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "packages/client/src/logion/py.typed",
                "packages/npm-wrapper/tsconfig.json",
                "packages/skillmap/logion_skillmap/py.typed"
              ],
              "agent_commit_share": 0.04,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": "Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile"
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed"
                    }
                  }
                ],
                "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": "4 of the last 100 commits agent-authored or agent-credited",
                "points": 8,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 4,
                      "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": "Python",
              "largest_source_bytes": 60138,
              "source_files_sampled": 569,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "Python with type-check config (packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed)",
                "points": 27,
                "status": "partial",
                "details": [
                  {
                    "code": "typecheck_config_language",
                    "params": {
                      "files": "packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed",
                      "language": "Python"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/569 source files over 60KB",
                "points": 54.9,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 569,
                      "oversized": 1
                    }
                  }
                ],
                "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 pypi package 'logion' from its registry",
    "Could not fetch pypi package 'logion-bot' from its registry",
    "Could not fetch pypi package 'logion-indexer' from its registry",
    "Could not fetch pypi package 'logion-landing' from its registry",
    "Could not fetch pypi package 'logion-scanners' 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-24T14:15:05.372069Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/n/nicolasmelo1/logion.svg",
  "full_name": "nicolasmelo1/logion",
  "license_state": "standard",
  "license_spdx": "MIT"
}

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

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

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