Public record
Software health reportschema 0.27.0 · metrics 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 stars⑂ 2 forkssince May 2026View on GitHub ↗

nicolasmelo1/logion holds a health index of 65 out of 100, placing it in the Moderate band. It scores highest on Engineering Quality (90/100) and lowest on Security (48/100). It was last updated today. A single contributor accounts for most of its recent work.

65
overall / 100
Moderate

Software health index

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

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

Score profile

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

Ownership

Nicolas LealPersonal account
120 followers73 public repossince Jun 2015@palmaresHQ

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

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
PyPIlogion-cli0.1.152,675155 days agologionmarketplaceagentskillcli
PyPIlogion-client0.1.15-105 days agoagentlogionmarketplacesdk
PyPIlogion-skillmap0.1.0-12 days agologionskillmappackage-mapinference
npm@logionsh/cli0.1.153,077155 days agologionclimarketplaceagent

Metrics by category

Vitality

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

73Good · 22% of overall
How it's scored
36/36Push recency — last push 0 days ago
7.6/36Commit cadence — 11/52 weeks with commits
18/18Commit volume — 276 commits in the last year
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Inputs used
commits_last_year276
human_commit_share0.97
days_since_last_push0
active_weeks_last_year11
How it's scored
27/27Ships releases — 42 releases published
36/36Release recency — latest release 2 days ago
27/27Release cadence — a release every ~2.1 days
0/10OpenSSF Scorecard: Signed-Releases — Project has not signed or included provenance with any releases.
Inputs used
releases_count42
latest_release_taglogion-skillmap-v0.1.0
releases_from_tagsno
days_since_latest_release2
mean_days_between_releases2.1

Community & Adoption

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

58Moderate · 18% of overall
How it's scored
24.4/60Stars — 33 stars
0/25Forks — 2 forks
0/15Watchers — 0 watchers
Inputs used
forks2
stars33
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history

Community health

92Excellent
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
13.5/13.5Code of conduct
0/7.2Issue template
6.3/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductyes
has_pull_request_templateyes
How it's scored
50.1/80Monthly downloads — 5,752 downloads/month across npm, pypi
0/20Registry dependents — not reported by this ecosystem
Inputs used
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
dependents
ecosystemsnpm, pypi
total_downloads
monthly_downloads5,752
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

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

52Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0.3/22.5Commit distribution — top contributor authored 98% of commits
4.1/13.5Contributor breadth — 3 contributors
3/10OpenSSF Scorecard: Contributors — project has 1 contributing companies or organizations -- score normalized to 3
Inputs used
bus_factor1
contributors_sampled3
top_contributor_share0.985
How it's scored
15.6/46.8Issue resolution — 33% of issues closed
31.3/38.3PR acceptance — 184/225 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/29 approved changesets -- score normalized to 0
Inputs used
merged_prs184
open_issues6
closed_issues3
issue_closed_ratio0.333
closed_unmerged_prs41
How it's scored
10/30Ownership backing — personal (user) account
0/20Verified domain — not applicable to user accounts
15/25Owner reach — 120 followers of nicolasmelo1
25/25Track record — 73 public repos, account ~11 yr old
Inputs used
followers120
owner_typeUser
is_verified
owner_loginnicolasmelo1
public_repos73
account_age_days4,055
Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.
How it's scored
25/25Published & resolvable — 4 package(s) on npm, pypi
35/35Publish recency — latest publish 2 days ago
20/20Version history — 15 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packageslogion-cli, logion-client, logion-skillmap, @logionsh/cli
ecosystemsnpm, pypi
any_deprecatedno
min_days_since_publish2

Engineering Quality

Are baseline engineering and documentation practices in place?

90Excellent · 20% of overall
How it's scored
24/24CI workflows — 13 workflow(s)
24/24Tests present
16/16Linter config — eslint.config.mjs
0/9.6Pre-commit hooks
0/6.4.editorconfig
20/20OpenSSF Scorecard: CI-Tests — 28 out of 28 merged PRs checked by a CI test -- score normalized to 10
Inputs used
has_ciyes
has_testsyes
has_editorconfigno
has_linter_configyes
has_precommit_configno

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://logion.sh
10/10Repository description
10/10Topics — 20 topics
10/10Wiki
Inputs used
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_wikiyes
homepagehttps://logion.sh
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

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

48At risk · 16% of overall
How it's scored
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.5License — 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
Inputs used
sourceopenssf_scorecard
checks_evaluated18
scorecard_versionv5.5.0
checks_inconclusive0
scorecard_aggregate3.5
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
25/25Indirect dependencies free of known advisories — no indirect dependency carries a known advisory
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories0
affected_packages0
assessed_packages17
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:logion-cli@0.1.15 runtime dependency closure — what installing the published package pulls in — 17 packages. Reachability is not analyzed.

AI Readiness

How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score.

76Good · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 94 of 97 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.969
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes6,968
How it's scored
18/18One-command bootstrap — Makefile, packages/agent-companion/Makefile, packages/agent-proving-ground/Makefile, packages/client/Makefile
22/22Automated tests
11/11Lint / format config — eslint.config.mjs
11/11Static type checking — packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed
10/10Reproducible environment — lockfile
8/10Demonstrated agent practice — 4 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Inputs used
has_nixno
has_testsyes
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_configyes
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
How it's scored
27/45Type-checkable code — Python with type-check config (packages/client/src/logion/py.typed, packages/npm-wrapper/tsconfig.json, packages/skillmap/logion_skillmap/py.typed)
54.9/55Manageable file sizes — 1/569 source files over 60KB
Inputs used
primary_languagePython
largest_source_bytes60,138
source_files_sampled569
oversized_source_files1
How it's scored
0/40API schema (OpenAPI/GraphQL/proto)
0/20MCP server
40/40Runnable examples — examples
Inputs used
example_dirsexamples
has_mcp_signalno
api_schema_files

Key facts

33GitHub stars
3contributors
276commits, last 12 months
0days since last push
42releases
1bus factor
6open issues
PyPIpackage ecosystems

Data collection 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

More detail

Star and fork history 0 ★ / 2 ⇿
0Stars
2Forks
9Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

111222212026-072026-072026-07
Major 0Minor 0Patch 0
OpenSSF Scorecard 3.5 / 10
3.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-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
Direct dependencies 23
RegistryPackageVersion constraintManifest
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
All dependencies not collected

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

Dependency advisories 0

Installing pypi:logion-cli@0.1.15 pulls in 17 packages, direct and transitive: 0 carry known advisories, of which 0 are direct dependencies.

No known advisories affect the assessed dependencies.

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

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "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"
}

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

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

How one result sits in the wider record: aggregate statisticsPyPI, npm.