Public record
Software health reportschema 0.26.0 · metrics 1.13.0 · 2026-07-22 02:36 UTC

viasite-ansible / ansible-role-zsh

Setup antigen with oh-my-zsh, powerlevel10k theme, fzf, autosuggestions, syntax-highlighting

PowerShell · Python · JinjaMIT★ 361 stars⑂ 81 forkssince Feb 2017View on GitHub ↗

viasite-ansible/ansible-role-zsh holds a health index of 31 out of 100, placing it in the At risk band. It scores highest on Engineering Quality (81/100) and lowest on Security (20/100). It was last updated 2 days ago. A single contributor accounts for most of its recent work.

31
overall / 100
At risk

Software health index

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

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

High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.

Ownership

viasite-ansibleOrganization
5 followers74 public repossince Nov 2016

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Metrics by category

Vitality

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

80Good · 22% of overall
How it's scored
36/36Push recency — last push 2 days ago
4.8/36Commit cadence — 7/52 weeks with commits
16/18Commit volume — 60 commits in the last year
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year60
human_commit_share0.99
days_since_last_push2
active_weeks_last_year7

Release discipline

100Excellent
How it's scored
27/27Ships releases — 64 releases published
36/36Release recency — latest release 5 days ago
27/27Release cadence — a release every ~1.6 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count64
latest_release_tagv4.0.2
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases1.6
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

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

67Moderate · 18% of overall
How it's scored
41.5/60Stars — 361 stars
15.9/25Forks — 81 forks
6.2/15Watchers — 14 watchers
Inputs used
forks81
stars361
watchers14
growth_stateorganic
growth_factor_pct100
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
18/18CONTRIBUTING guide
0/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingyes
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno

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
2.2/22.5Commit distribution — top contributor authored 90% of commits
13.5/13.5Contributor breadth — 14 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled14
top_contributor_share0.902
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
29.5/38.3PR acceptance — 27/35 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/5 approved changesets -- score normalized to 0
Inputs used
merged_prs27
open_issues0
closed_issues55
issue_closed_ratio1
closed_unmerged_prs8
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
5.6/25Owner reach — 5 followers of viasite-ansible
25/25Track record — 74 public repos, account ~9 yr old
Inputs used
followers5
owner_typeOrganization
is_verified
owner_loginviasite-ansible
public_repos74
account_age_days3,530

Engineering Quality

Are baseline engineering and documentation practices in place?

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

Documentation

100Excellent
How it's scored
30/30README
25/25Documentation directory
15/15Documentation / homepage site — https://habrahabr.ru/post/323496/
10/10Repository description
10/10Topics — 11 topics
10/10Wiki
Inputs used
topicszsh, oh-my-zsh, ansible-role, ansible-galaxy, zsh-autosuggestions, zsh-syntax-highlighting, fzf, zsh-command-time, antigen, powerlevel10k, starship-prompt
has_wikiyes
homepagehttps://habrahabr.ru/post/323496/
has_readmeyes
has_docs_diryes
has_descriptionyes

Security

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

20Critical · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
2.5/2.5CI-Tests — 3 out of 3 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/5 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — no data
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.1
high_risk_jurisdiction_cap49
high_risk_jurisdiction_multiplier50
security_posture_after_multiplier20
security_posture_before_jurisdiction41
Excluded from scoring (no data or not applicable): packaging, signed_releases. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier and gives Security posture an At risk ceiling of 49.

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.

39At risk · 0% of overall
How it's scored
0/45Agent instructions — no CLAUDE.md / AGENTS.md / editor rules
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 93 of 99 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.939
agent_instruction_files
agent_instruction_max_bytes
How it's scored
0/18One-command bootstrap
22/22Automated tests
0/11Lint / format config
0/11Static type checking
0/10Reproducible environment
10/10Demonstrated agent practice — 38 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
lockfiles
has_dockerfileno
typed_languageno
bootstrap_files
has_devcontainerno
has_linter_configno
typecheck_configs
agent_commit_share0.38
toolchain_manifests
dependency_bot_commit_share0
How it's scored
0/45Type-checkable code — PowerShell without a type-check config
55/55Manageable file sizes — 0/4 source files over 60KB
Inputs used
primary_languagePowerShell
largest_source_bytes16,028
source_files_sampled4
oversized_source_files0

Key facts

361GitHub stars
14contributors
60commits, last 12 months
2days since last push
64releases
1bus factor
0open issues
PyPIpackage ecosystems

Data collection warnings

  • No resolved dependencies carried a version and a supported ecosystem

More detail

Star and fork history 361 ★ / 81 ⇿
361Stars
81Forks
61Releases

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.

012525037536180202017-032021-112026-07
Major 3Minor 9Patch 48

Each point covers 9 days.

OpenSSF Scorecard 4.1 / 10
4.1aggregate

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-22 02:36 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
10CI-Tests3 out of 3 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/5 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
n/aPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
All dependencies 3

Full resolved dependency set from the GitHub dependency graph: 0 direct and 3 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
PyPIjinja2indirect
PyPIpytestindirect
PyPIpyyamlindirect
Dependency advisories not assessed

Advisory matching could not run for this report: No resolved dependencies carried a version and a supported ecosystem

Raw JSON report machine-readable
{
  "data": {
    "repo": {
      "topics": [
        "zsh",
        "oh-my-zsh",
        "ansible-role",
        "ansible-galaxy",
        "zsh-autosuggestions",
        "zsh-syntax-highlighting",
        "fzf",
        "zsh-command-time",
        "antigen",
        "powerlevel10k",
        "starship-prompt"
      ],
      "is_fork": false,
      "size_kb": 429,
      "has_wiki": true,
      "homepage": "https://habrahabr.ru/post/323496/",
      "languages": {
        "Jinja": 12250,
        "Shell": 3075,
        "Python": 19995,
        "PowerShell": 20123
      },
      "pushed_at": "2026-07-19T20:48:03Z",
      "created_at": "2017-02-23T13:05:51Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-19T20:48:06Z",
      "description": "Setup antigen with oh-my-zsh, powerlevel10k theme, fzf, autosuggestions, syntax-highlighting",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "master",
      "license_spdx_raw": "MIT",
      "primary_language": "PowerShell",
      "significant_languages": [
        "PowerShell",
        "Python",
        "Jinja"
      ]
    },
    "owner": {
      "blog": null,
      "name": null,
      "type": "Organization",
      "login": "viasite-ansible",
      "company": null,
      "location": null,
      "followers": 5,
      "avatar_url": "https://avatars.githubusercontent.com/u/23612981?v=4",
      "created_at": "2016-11-20T11:51:14Z",
      "is_verified": null,
      "public_repos": 74,
      "account_age_days": 3530
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v4.0.2",
          "kind": "patch",
          "published_at": "2026-07-16T11:02:27Z"
        },
        {
          "tag": "v4.0.1",
          "kind": "patch",
          "published_at": "2026-07-16T09:24:37Z"
        },
        {
          "tag": "v4.0.0",
          "kind": "major",
          "published_at": "2026-07-15T21:02:14Z"
        },
        {
          "tag": "v3.7.10",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:23Z"
        },
        {
          "tag": "v3.7.9",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:22Z"
        },
        {
          "tag": "v3.7.8",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:21Z"
        },
        {
          "tag": "v3.7.7",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:20Z"
        },
        {
          "tag": "v3.7.6",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:19Z"
        },
        {
          "tag": "v3.7.5",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:17Z"
        },
        {
          "tag": "v3.7.4",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:16Z"
        },
        {
          "tag": "v3.7.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:15Z"
        },
        {
          "tag": "v3.7.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:14Z"
        },
        {
          "tag": "v3.7.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:13Z"
        },
        {
          "tag": "v3.7.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:32:12Z"
        },
        {
          "tag": "v3.6.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:11Z"
        },
        {
          "tag": "v3.6.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:32:09Z"
        },
        {
          "tag": "v1.1",
          "kind": "other",
          "published_at": "2026-07-01T23:31:13Z"
        },
        {
          "tag": "v3.5.2",
          "kind": "patch",
          "published_at": "2022-03-13T12:37:55Z"
        },
        {
          "tag": "v3.5.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:08Z"
        },
        {
          "tag": "v3.5.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:32:06Z"
        },
        {
          "tag": "v3.4.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:05Z"
        },
        {
          "tag": "v3.4.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:32:04Z"
        },
        {
          "tag": "v3.3.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:03Z"
        },
        {
          "tag": "v3.3.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:02Z"
        },
        {
          "tag": "v3.3.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:32:01Z"
        },
        {
          "tag": "v3.2.9",
          "kind": "patch",
          "published_at": "2026-07-01T23:32:00Z"
        },
        {
          "tag": "v3.2.8",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:58Z"
        },
        {
          "tag": "v3.2.7",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:57Z"
        },
        {
          "tag": "v3.2.6",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:56Z"
        },
        {
          "tag": "v3.2.5",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:55Z"
        },
        {
          "tag": "v3.2.4",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:54Z"
        },
        {
          "tag": "v3.2.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:53Z"
        },
        {
          "tag": "v3.2.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:52Z"
        },
        {
          "tag": "v3.2.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:51Z"
        },
        {
          "tag": "v3.2.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:31:49Z"
        },
        {
          "tag": "v3.1.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:48Z"
        },
        {
          "tag": "v3.1.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:47Z"
        },
        {
          "tag": "v3.1.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:31:46Z"
        },
        {
          "tag": "v3.0.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:45Z"
        },
        {
          "tag": "v3.0.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:44Z"
        },
        {
          "tag": "v3.0.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:43Z"
        },
        {
          "tag": "v3.0.0",
          "kind": "major",
          "published_at": "2026-07-01T23:31:42Z"
        },
        {
          "tag": "v2.1.8",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:41Z"
        },
        {
          "tag": "v2.1.7",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:40Z"
        },
        {
          "tag": "v2.1.6",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:38Z"
        },
        {
          "tag": "v2.1.5",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:37Z"
        },
        {
          "tag": "v2.1.4",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:31Z"
        },
        {
          "tag": "v2.1.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:30Z"
        },
        {
          "tag": "v2.1.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:29Z"
        },
        {
          "tag": "v2.1.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:28Z"
        },
        {
          "tag": "v2.1.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:31:27Z"
        },
        {
          "tag": "v2.0.4",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:26Z"
        },
        {
          "tag": "v2.0.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:25Z"
        },
        {
          "tag": "v2.0.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:23Z"
        },
        {
          "tag": "v2.0.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:22Z"
        },
        {
          "tag": "v2.0.0",
          "kind": "major",
          "published_at": "2017-04-02T14:52:58Z"
        },
        {
          "tag": "v1.1.6",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:21Z"
        },
        {
          "tag": "v1.1.5",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:20Z"
        },
        {
          "tag": "v1.1.4",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:19Z"
        },
        {
          "tag": "v1.1.3",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:18Z"
        },
        {
          "tag": "v1.1.2",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:17Z"
        },
        {
          "tag": "v1.1.1",
          "kind": "patch",
          "published_at": "2026-07-01T23:31:15Z"
        },
        {
          "tag": "v1.1.0",
          "kind": "minor",
          "published_at": "2026-07-01T23:31:14Z"
        },
        {
          "tag": "v1.0.0",
          "kind": "major",
          "published_at": "2026-07-01T23:31:12Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "a0ee1698025c3ac86dd22ee752b4d3bb01cbc146",
          "body": "The apt step primes the sudo credential cache, so the later `sudo -n true`\ncheck wrongly reported passwordless sudo and skipped -K. The cache then\nexpired before ansible ran become, causing \"sudo: a password is required\"\n(common in WSL). Run `sudo -k` before the probe so it reflects the real\nsudoers policy.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(install): reset sudo cache before passwordless probe",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-19T20:47:58Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "d50a2e296cd0ebe08273d541052e1c4bc99549fb",
          "body": null,
          "is_bot": true,
          "headline": "chore(release): update CHANGELOG for v4.0.2 [skip ci]",
          "author_name": "github-actions[bot]",
          "author_login": "github-actions[bot]",
          "committed_at": "2026-07-16T11:02:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eb9c8218a72c68b4111039b986d7496a26cefafd",
          "body": "Regenerate CHANGELOG.md with git-cliff after each release and commit it back to master (chore(release): ... [skip ci]). Also brings the changelog current through v4.0.1 and fixes the stale [Unreleased] section.",
          "is_bot": false,
          "headline": "ci: auto-update CHANGELOG.md on release via git-cliff (#90)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-16T10:52:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d11f587ed51111360e90e0ca96c9128f5cc04ab2",
          "body": "ci: add ansible-lint workflow and fix all lint findings",
          "is_bot": false,
          "headline": "Merge pull request #89 from viasite-ansible/fix/ansible-lint",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-16T09:22:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bc339c898521393f348d666075367b98ba6fc62",
          "body": "The role has always been published as viasite-ansible.zsh (Galaxy role\nid 29998), and install.sh / README reference that name. meta/main.yml\nhad drifted to namespace: viasite, which (a) broke the Galaxy import\n(\"legacy namespace viasite does not exist\") and (b) forced the earlier\nplaybook/converge r\n[…]\niasite-ansible.zsh\n\nansible-lint still passes (0/0, production profile): the self-reference\nresolves via meta namespace.role_name.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: align Galaxy namespace to viasite-ansible",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-16T09:16:27Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "26a90756a8b94595229b84bc1a1a1d9b7d167481",
          "body": "Add a dedicated ansible-lint CI job and a .ansible-lint config, then\nresolve every finding the Galaxy importer's lint pass reported (the role\nnow meets the ansible-lint `production` profile: 0 failures, 0 warnings).\n\n- .github/workflows/lint.yml: run ansible-lint on push/PR/dispatch\n- .ansible-lint:\n[…]\nte.zsh (matches meta namespace)\n- meta/main.yml: MacOSX platform versions -> all (schema)\n- .gitignore: ignore .ansible lint cache\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: add ansible-lint workflow and fix all lint findings",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-16T09:04:08Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "4a2e09711cd3393f56bce1512575f00659a23b8a",
          "body": "…staller (#88)\n\nfeat: selectable prompt theme (powerlevel10k | starship)",
          "is_bot": false,
          "headline": "feat: selectable prompt theme (powerlevel10k | starship) + Windows in…",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T21:01:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c06a85c442e9aa0e88e27992e62eb5d9ee0a860",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "task: clear completed TODO items (shipped in #88)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T21:00:32Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "43956e8ae6f351e502efc39a574516b997b134f3",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: import role to Ansible Galaxy on release; refresh meta platforms",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:58:15Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "ebf24a7e1d437526b7ac6eef1a5c28219cd65179",
          "body": null,
          "is_bot": false,
          "headline": "ci: bump checkout@v5 and setup-python@v6 (drop Node 20 deprecation)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:48:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a65fe8182e4f611c3bd9adaa3222c48249bbef45",
          "body": "…rship\n\nThe assert steps loaded the freshly-written profile in CI's redirected console,\nwhere PSReadLine prediction can't initialize and starship wasn't yet on the\nstep PATH. Skip the profile (-NoProfile) and refresh PATH from the registry\nbefore checking starship; the profile's interactive behavior is verified on\nreal Windows separately.",
          "is_bot": false,
          "headline": "ci(windows): run e2e asserts with -NoProfile and refresh PATH for sta…",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:39:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4f9b1cf3502b27b2af1d711949b8088d079331c5",
          "body": "The first version read a guessed history file (often empty -> fzf showed\nnothing) and used a malformed rl.setbinding key. Mirror clink-fzf: pull history\nfrom the running clink session via 'clink --session <id> history', strip the\nleading index, and bind with rl.setbinding([[\"\\C-r\"]], ...).",
          "is_bot": false,
          "headline": "fix(windows): correct cmd Ctrl+R fzf (session history + binding syntax)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:27:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3562403f3e46a758a5d739405761904211905017",
          "body": "…efresh)\n\nclink's active profile dir can differ from where we write scripts, so register\n%LOCALAPPDATA%\\clink as a clink script path explicitly, and refresh PATH after\ninstalling clink so the shim resolves in the same session.",
          "is_bot": false,
          "headline": "fix(windows): ensure clink loads our scripts (installscripts + PATH r…",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:18:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "36e04a09a4edae6f031da79c9de5ae5a66b3f726",
          "body": "Adds a self-contained clink Lua (no third-party download, embedded like\nstarship.toml) that binds Ctrl+R to fzf over clink's command history, mirroring\nthe PowerShell PSFzf Ctrl+R binding. Only runs when cmd support is enabled\n(not -NoCmd); requires fzf on PATH.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(windows): Ctrl+R fzf history in cmd.exe via embedded clink script",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T20:11:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "4799b48380bbb1e532ae8e50ff9fa027a02c36fc",
          "body": "In 'irm | iex' mode $PSScriptRoot is empty, so the old code downloaded\nwindows/starship.toml from a hardcoded master URL — which 404s for any branch/\nfork where the file isn't yet on master, silently leaving a dangling config\npath. Embed the rendered config as a here-string and write it directly (UTF-8,\nno BOM); the drift test now also asserts the embed matches the render.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(windows): embed starship.toml in install.ps1 (no download)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:57:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "06640248c346aa629408bdcb630ef87c086de562",
          "body": "The [ValidateSet] attribute on the optional $PackageManager param rejected the\nempty default value that PowerShell assigns when the script is piped into\nInvoke-Expression, breaking the primary install path. Drop the attribute,\nvalidate the value in code instead, and pass entrypoint params explicitly\nrather than splatting $PSBoundParameters (empty under iex).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(windows): make install.ps1 work under 'irm | iex'",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:51:36Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "03d19732069f257a59245e6ab92452e1c762281e",
          "body": "… test polish\n\n- windows.yml: pin windows-e2e job to -PackageManager choco (winget is\n  flaky/PATH-unreliable on GitHub Actions runners) for both the initial\n  run and the idempotency re-run\n- install.ps1: Install-ZshBinary now returns a boolean reflecting the\n  package-manager command's exit status\n[…]\nnder_starship_config.py: comment clarifies the drift guard's\n  scope (template vs regenerated file only, not Jinja/Ansible parity)\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(windows): reliable CI manager, binary exit-code checks, summary +…",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:35:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "b51fc80a2864c9e91c2854211f2977034e65fd11",
          "body": null,
          "is_bot": false,
          "headline": "docs: add Windows PowerShell/cmd install section",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:27:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "92075a902762f3b9df06f5f3e5abac4497047819",
          "body": null,
          "is_bot": false,
          "headline": "ci(windows): fail e2e job when starship --version exits non-zero",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:25:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84fdc5c73bd49a3d44ef137c9b9e431c8bb20794",
          "body": null,
          "is_bot": false,
          "headline": "ci(windows): e2e install job plus Pester and drift checks",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:19:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9329bd770c443cb695e1882dc1efd43cdd7069be",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(windows): install actions and orchestrator for install.ps1",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:12:12Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "74f47b84b6395092dcef54aed3c2092e85fa3f35",
          "body": "- Fix: $-corruption test now uses actual .NET substitution tokens ($1, $$, $&)\n  and verifies they survive as literals (catches broken string-substitution Replace)\n- Add: PSFzf test confirms Set-PsFzfOption chord line is present when enabled\n- Add: Verify PredictionSource is absent when Autosuggestions disabled\n\nAll 17 tests pass.",
          "is_bot": false,
          "headline": "test(windows): exercise regex-token safety and PSFzf/prediction gating",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:08:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c764e0bed624f30a57deebd5e60d6536a3a4be30",
          "body": null,
          "is_bot": false,
          "headline": "feat(windows): feature resolution and idempotent profile-block merge",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T19:02:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25800358e594a402ec2b857e51ebc1f89719cf90",
          "body": null,
          "is_bot": false,
          "headline": "test(windows): assert package-manager ordering and -Prefer-absent",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:58:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0d09c439f58282a11a27ec4a4d8bf6b89245df3e",
          "body": null,
          "is_bot": false,
          "headline": "feat(windows): install.ps1 scaffold with package-manager detection",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:54:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a398e907bdc7c18614f002c3a56b1353a613d523",
          "body": null,
          "is_bot": false,
          "headline": "fix(windows): match Ansible trim_blocks when rendering starship.toml",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:50:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8ab24686f653b3bde2e71618c2806e152afee54d",
          "body": null,
          "is_bot": false,
          "headline": "feat(windows): render static starship.toml with drift guard",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:45:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "47a68e5989fc7493902a4c2617e6d8bac4595aee",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: implementation plan for Windows PowerShell/cmd installer",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:42:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "9d5b20cb6a73a643eb25e0c002c43762ae258473",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: design for Windows PowerShell/cmd installer",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:34:24Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "302c4d34035ff17289a58006ab9913c5f4f0ccc4",
          "body": "Set GIT_REPO (and optionally GIT_BRANCH, default master) to clone and\ninstall the role from an arbitrary git repo/branch instead of Ansible\nGalaxy. Useful for testing a branch before release.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(install): support GIT_REPO/GIT_BRANCH to install role from git",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:13:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "a2a6cc638ea6257a298c7b20549b246d2fd67c5a",
          "body": "- Replace powerline fonts with Nerd Fonts guidance\n\n- Note starship is the default prompt theme since v4\n\n- Move Molecule testing docs to CONTRIBUTING.md\n\n- Trim terminal setup to font + color scheme (drop iTerm/Putty/Gnome)\n\n- Modernize manual Ansible install to venv (PEP 668)\n\n- Remove Vagrantfile and tests/vagrant.yml\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "docs: refresh README and drop Vagrant support",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-15T18:06:22Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "58d19250083edf0952e4509724f2086acf96a66d",
          "body": "Ansible's unarchive module refuses BSD tar (macOS default) with \"GNU tar required\", failing the starship install even though the darwin tarball downloads and checksums fine. Extract with a direct `tar -xzf` instead, which BSD tar handles; shell is used so the ~user/bin install path is tilde-expanded.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(starship): extract via tar to support macOS",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-11T01:23:47Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "53c6722a0fb389662b123a8c8cfa6d1525dc6c0f",
          "body": "The bundle loop emitted `antigen bundle <name>` once per bundle entry\nwhose command/when gate passed. The two docker-compose entries share\nthe name `docker-compose` but gate on different commands (`docker-compose`\nv1 vs `docker compose` v2), so on a host with both the line was written\nto ~/.zshrc tw\n[…]\nmitting a bundle whose name is already in `bundles_enabled`, so a\nbundle listed under several gates loads once if any gate passes.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: render each antigen bundle at most once",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-03T23:16:53Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "a0599e42bb0d4407919cbb82abbf692499e12bc8",
          "body": "Change the default zsh_theme from powerlevel10k to starship. New\ndeployments get the starship prompt out of the box.\n\nBREAKING CHANGE: existing deployments that relied on the implicit\npowerlevel10k default must now set zsh_theme: powerlevel10k to keep it.\n\n- defaults/main.yml: zsh_theme -> starship.\n[…]\nME: hoist the demo + color-scheme sections to the top, update\n  tested versions (MacOS 26), drop the obsolete 3.0 upgrade section.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat!: default prompt theme is now starship",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T23:45:56Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "e192da2fc31347a5f5b9f996c3b4c392cba6a279",
          "body": "Replace the Node conventional-changelog script with git-cliff:\n\n- Add cliff.toml (vX.Y.Z tags, conventional-commit groups, commit links).\n- Regenerate CHANGELOG.md from full git history in the new format.\n- Add .github/workflows/release.yml: on a vX.Y.Z tag push, generate\n  --latest notes with git-cliff and create the GitHub release.\n- Remove scripts/generate-changelog (conventional-changelog).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "ci: adopt git-cliff for changelog and GitHub release notes",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T23:29:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cc6bb6ff3791c996be456128b547fa2e4c3a101f",
          "body": "Merge install.sh and install-macos.sh into a single install.sh that\ndetects the OS (apt/venv on Ubuntu/Debian, brew on macOS) and shares\nthe galaxy-install / playbook-download / provision logic.\n\n- Non-interactive by default: the macOS \"install for root?\" prompt is\n  replaced by the ZSH_INSTALL_ROOT\n[…]\nth scripts and run\n  install.sh end-to-end on ubuntu-latest and macos-latest.\n- Collapse the two README install sections into one.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: unify zero-knowledge install into one OS-detecting install.sh",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T23:17:54Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2f7dc60415c2602a29d9d628b37736d8f6546e82",
          "body": "INJECT_FACTS_AS_VARS is deprecated and the injected bare fact\nvariables are removed in ansible-core 2.24. Access gathered facts\nvia the ansible_facts dictionary in tasks, defaults, vars and the\nzshrc template. ansible_managed (a config var, not a gathered fact)\nis intentionally left unchanged.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: migrate bare ansible_* facts to ansible_facts[...]",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T23:06:09Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e36dc030ddf5bb90b03d0d6619b3af2762436fc1",
          "body": "`when: zsh_starship_manage_config and zsh_starship_config` evaluated to a\nstring (zsh_starship_config defaults to \"\"), which newer ansible-core\n(2.19+) rejects: \"Conditionals must have a boolean result.\" Older 2.16\naccepted it, so it only surfaced in CI. Compare with `| length > 0` so the\nresult is a proper boolean.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(starship): make verbatim-override conditional boolean-typed",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T22:56:39Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "54e351edba178e48aeae7788d2138466b5a8a081",
          "body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "task: add zero-knowledge install simplification task",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T22:47:35Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "504870f8fbc8710a3afddcbcd4e7669b109bce72",
          "body": "Get the Molecule suite green with a current toolchain (molecule 26,\nansible-core 2.21, Docker):\n\n- meta/main.yml: add role_name/namespace so the prerun FQRN check passes;\n  reference the role as viasite.zsh in the shared converge playbook.\n- Replace the EOL platform matrix (ubuntu1604/debian10/cento\n[…]\n\n- Document the venv-based test workflow in the README; ignore .venv\n  (and fix a missing newline that had merged .vagrant/.venv).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "test(molecule): modernize scenarios to run on current molecule/ansible",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T22:47:29Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "7bd452308df2b7e31aae48838609e65bb4bf961d",
          "body": "The merge helper read TOML via the stdlib tomllib, which only exists on\nPython 3.11+. On every current target (Ubuntu 22.04=3.10, 20.04=3.8,\nDebian 11=3.9) the starship config merge failed with a hard error, so the\nstarship theme path was broken there.\n\nAdd a self-contained pure-Python TOML reader u\n[…]\ninline tables). Keeps\nthe \"no third-party dependency on the managed host\" design; validated\nagainst tomllib. Works on Python 3.7+.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix(starship): support Python <3.11 in starship.toml merge helper",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T22:47:20Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2cecf42b11fd861f6765d263751f8aa71acd92f0",
          "body": null,
          "is_bot": false,
          "headline": "fix(starship): add space",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-07-01T22:08:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e3f5cedc2010b51611b389e16e950db4c3929cd9",
          "body": "Starship reads a single config file and cannot merge, so layer user\noverrides onto the generated preset at provision time:\n\n- add zsh_starship_config_user_file (host-editable file) and\n  zsh_starship_config_user (inline string); precedence low->high is\n  generated preset -> user file -> inline var. \n[…]\n status symbol, dir truncation, and username alias hiding.\n- README: document the override vars, precedence, and a worked example.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: deep-merge user overrides into generated starship config",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-22T21:04:18Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "edc57c3939d284a95de243fc8993c2822fc66147",
          "body": "Split the starship.toml rendering out of tasks/starship.yml (install) into\ntasks/starship-config.yml, included with the configure tag like the rest of the\nrole's config. The binary install stays on the install tag; `--tags configure`\nnow re-renders starship.toml.\n\nGenerated with [Claude Code](https://claude.ai/code)\nvia [Happy](https://happy.engineering)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nCo-Authored-By: Happy <yesreply@happy.engineering>",
          "is_bot": false,
          "headline": "fix: run starship.toml config under the configure tag",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-22T16:04:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8151a45d52f13b27b7309d5874d0b8d5e91c7947",
          "body": "Generated with [Claude Code](https://claude.ai/code)\nvia [Happy](https://happy.engineering)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nCo-Authored-By: Happy <yesreply@happy.engineering>",
          "is_bot": false,
          "headline": "task: mark starship theme support done",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-19T00:02:42Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e6c338df9c3592d83ad0c51b12d094adcd52e719",
          "body": null,
          "is_bot": false,
          "headline": "move completed plan: 20260618-starship-theme-support.md",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T15:13:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7871a63270b4c493d64e51e9150cdc87f41df8d3",
          "body": "- Guard starship version check against empty/malformed `starship --version`\n  output and use exact version-token comparison (avoids 1.2 matching 1.23.0\n  and IndexError on unexpected output).\n- Add become/become_user to ~/.config dir and starship.toml write tasks so\n  non-root connections can provis\n[…]\ned starship.toml parses via starship\n  print-config.\n- Fix stale plan Technical Details and document starship in README and\n  meta galaxy_tags.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "fix: address review findings",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T15:12:42Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "2317cdc6ecd6779aecbca327e42675cc9a47be9a",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: verify starship theme acceptance criteria",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:37:54Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "486918cdf90e61392b992166338596f4f6ff128c",
          "body": null,
          "is_bot": false,
          "headline": "feat: document starship theme support (README, meta, CHANGELOG)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:34:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84530a0498898ee83e4959936bcfbb0939060134",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add molecule/starship scenario + verify.yml (E2E)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:33:40Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "eae148f87b4f91f802fd5c1f5985225b61ad0850",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: generate starship.toml preset from p9k vars",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:32:08Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7040a6c2aed6c1663c928946f86dffbbd82f9de0",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: branch zshrc.j2 on zsh_theme with starship activation",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:29:26Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "5dcd8e4705e1cfda8e51741c7f3adb94feb91d28",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: install starship binary via gated tasks/starship.yml",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:26:20Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "f47c01b3cab32a29737b942a1c082cce6c9f9139",
          "body": "Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat: add zsh_theme selector variable and starship facts",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:24:00Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "7bad1b91d7d70c0eff362df828f7dfdaff589e6d",
          "body": "Generated with [Claude Code](https://claude.ai/code)\nvia [Happy](https://happy.engineering)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nCo-Authored-By: Happy <yesreply@happy.engineering>",
          "is_bot": false,
          "headline": "feat: add /usr/local/lib/npm/bin to zsh_path",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T14:22:07Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "e01ea2ff1a5c30db5c809deee0c10ba64095d65c",
          "body": "Generated with [Claude Code](https://claude.ai/code)\nvia [Happy](https://happy.engineering)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nCo-Authored-By: Happy <yesreply@happy.engineering>",
          "is_bot": false,
          "headline": "task: add starship theme support implementation plan",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T13:46:51Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "8187bf55106a50f6819a442a3b433666e9b8bb2f",
          "body": "Generated with [Claude Code](https://claude.ai/code)\nvia [Happy](https://happy.engineering)\n\nCo-Authored-By: Claude <noreply@anthropic.com>\nCo-Authored-By: Happy <yesreply@happy.engineering>",
          "is_bot": false,
          "headline": "task: add starship theme support task",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-06-18T13:33:23Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "cc5cf695f7d6c2eae12f4511d859b8e41bf56e82",
          "body": "- Bump fzf version from 0.52.1 to 0.68.0\n- Fix download URL to include 'v' prefix in release tag\n- Download tarball to /tmp before extracting to avoid\n  issues with direct remote unarchive\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(fzf): bump fzf to 0.68.0, fix install",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-02-21T19:47:30Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "c8fbf5ee0e79c6cb978cddbc8f0716b5bd1401cb",
          "body": null,
          "is_bot": false,
          "headline": "feat: add npm run completion",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2026-02-08T23:09:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5eadcb2ca8d759da9d459b448466ee03fe56fe9a",
          "body": null,
          "is_bot": false,
          "headline": "feat: support for zsh_shared on fedora (#86)",
          "author_name": "Raphael Parree",
          "author_login": "rparree",
          "committed_at": "2025-10-06T07:28:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6af419b3dcf212c8ee45f8735a079606533c58c9",
          "body": null,
          "is_bot": false,
          "headline": "fix: install.sh: use venv for ansible install",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2025-07-06T14:15:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd00f80ebf5d7a2f9008796c69be320e160c1dd8",
          "body": null,
          "is_bot": false,
          "headline": "fix: fd-find for Debian (#83)",
          "author_name": "Belgotux",
          "author_login": "belgotux",
          "committed_at": "2025-02-20T04:46:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9f361e5a34dca944c161cb5d744d34fcb27a9f6",
          "body": null,
          "is_bot": false,
          "headline": "Added support for docker compose plugin (#82)",
          "author_name": "wymmek",
          "author_login": "wymmek",
          "committed_at": "2025-01-22T14:15:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a9ec2d8f6829f984ad7d1b82741a07f6f9ae7cdd",
          "body": null,
          "is_bot": false,
          "headline": "feat: update dnf pkg check so will work on never dnf versions (#81)",
          "author_name": "FoxySimon",
          "author_login": "shirobachi",
          "committed_at": "2025-01-04T21:07:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "53eaeacb5b691cbce857f70c32ef7fe9bf257dae",
          "body": "… systems (#80)\n\nCo-authored-by: Simon Hryszko <simon@hryszko.dev>",
          "is_bot": false,
          "headline": "feat: Add dynamic fd command configuration for different Debian-based…",
          "author_name": "FoxySimon",
          "author_login": "shirobachi",
          "committed_at": "2024-11-17T18:36:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "048249331e629b22e2f8c00fb59e3dcadbae8c85",
          "body": "* fix: package.cache_valid_time not working with dnf\r\n\r\n* fix: regression introduced for macos (df3c040)",
          "is_bot": false,
          "headline": "fix: package.cache_valid_time not working with dnf",
          "author_name": "Raphael Parree",
          "author_login": "rparree",
          "committed_at": "2024-09-12T14:11:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a02a9feb5851fefab05ccf1b42a839bc2f47fc8",
          "body": "#77",
          "is_bot": false,
          "headline": "chore: add LICENSE file",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-08-12T16:59:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c53e7365ac05fadf88b085f63b4441270b4ca3ab",
          "body": null,
          "is_bot": false,
          "headline": "fix: add more hotkeys for mac for backward/forward word",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-07-03T14:16:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2d32e255c5fe824af4c82e3fcc79a6612a6e7a3a",
          "body": null,
          "is_bot": false,
          "headline": "fix: install brew bundle and hotkeys",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-07-01T14:28:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3576cbd14723f46602a4d03712e8277ca9fd4aab",
          "body": null,
          "is_bot": false,
          "headline": "docs: update supported os",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-23T11:26:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1222b091ce2e6b36edc87708fc9f2c9c6abd6c47",
          "body": null,
          "is_bot": false,
          "headline": "fix: macos fixes: home/end, ctrl+arrows, alt+m",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-23T11:13:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df3c04054582d5ba798629fd80bd0f4c738d03d3",
          "body": null,
          "is_bot": false,
          "headline": "fix: become_user for macos install",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-20T20:55:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2e86fe3f3b22d5dd58dc22f463747b6fd08be5b5",
          "body": null,
          "is_bot": false,
          "headline": "docs: remove travis build status",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-20T20:50:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab09939a4831372ff3457700c0e6045587c315e2",
          "body": "Fix #72",
          "is_bot": false,
          "headline": "feat: macos zero-knowledge install",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-20T20:48:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b0e92ace362e0c65f9732be8bf41d1c72c7201c",
          "body": null,
          "is_bot": false,
          "headline": "fix: use fork of sorenson-axial/fzf-widgets",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-13T10:02:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cd0e28398960688a788262fbc8389e3a8cb42156",
          "body": null,
          "is_bot": false,
          "headline": "fix: correct fzf arch for aarch64 (Orange Pi)",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-06-05T20:08:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c1e72b1ff58529b70bcadfe41fe605ac287bcf6e",
          "body": null,
          "is_bot": false,
          "headline": "docs: update CHANGELOG.md",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T20:25:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5faeaf7fad0be71649c68678eaf83cb6113e4885",
          "body": null,
          "is_bot": false,
          "headline": "minor fixes",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T20:23:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b44dde82479ae46603d354fe3224718ce650c65",
          "body": null,
          "is_bot": false,
          "headline": "fix: zsh_fzf_version 0.46.0 -> 0.52.1",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T19:33:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc1831b6d6fcf15861bceb7f7a108790d9e63f5f",
          "body": null,
          "is_bot": false,
          "headline": "feat: add yarn",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T19:23:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ad6458e2f2ed452128c81cef13c6cfa899ad4e35",
          "body": "https://github.com/zsh-users/antigen/pull/737",
          "is_bot": false,
          "headline": "fix: use patched antigen to fix broken plugins compdef",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T19:19:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c6659db86e9c06f72bb7cef94274480676e44b9",
          "body": "Fix #76",
          "is_bot": false,
          "headline": "fix: fd-find: check for Ubuntu 18.04 and Macos",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T14:25:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8e026c514b6221e15e7416dd419656c52951e03d",
          "body": null,
          "is_bot": false,
          "headline": "fix: fix get antigen version from user",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-05-26T14:21:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bffd1acc9eaf1711f13c47f8f0c4ab9aa3f756c6",
          "body": null,
          "is_bot": false,
          "headline": "fix: zsh_fzf_version 0.42.0 -> 0.46.0",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-01-31T19:03:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "76ae8ccdabd086f43c22c052267f72d4f189ad8e",
          "body": "#73",
          "is_bot": false,
          "headline": "fix: zsh_user_group for create cache dirs",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2024-01-31T19:03:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1313c2c0cc1d988978d6c0a80d0f59c18ac69686",
          "body": "…-widgets again",
          "is_bot": false,
          "headline": "feat: add fd-find, replace ytet5uy4/fzf-widgets to sorenson-axial/fzf…",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-19T18:27:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ed3166c12ee055a5bae25d32b0c51bc56c0cda2",
          "body": null,
          "is_bot": false,
          "headline": "fix: create dir bundles/robbyrussell/oh-my-zsh/cache/completions",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T21:11:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d7f3a09ef434d2122a9e9807d5c075a03fe0fbd",
          "body": null,
          "is_bot": false,
          "headline": "fix: default zsh_powerlevel10k_instant_prompt: yes",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T20:14:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "79a16d11de88f9b155e1a913f6bf64db60820137",
          "body": null,
          "is_bot": false,
          "headline": "fix: revert command exists check",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T20:09:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7568740306ceaaa58557f06bd7392f9a4a5bfce6",
          "body": null,
          "is_bot": false,
          "headline": "fix: revert become_user to antigen install",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T17:40:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e5c50ca38958442a57769e246802fda5003c6c87",
          "body": null,
          "is_bot": false,
          "headline": "feat: zsh_segment_separators",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T17:25:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2cf2c0bf787e2a40833f238367307a4c0751a724",
          "body": null,
          "is_bot": false,
          "headline": "fix: limit urbainvaes/fzf-marks to zsh >= 5.1",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T17:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "aeb8ca190ab41f1a1d13f387b9fcc50e48b1b8cb",
          "body": null,
          "is_bot": false,
          "headline": "fix: replace ytet5uy4/fzf-widgets with sorenson-axial/fzf-widgets",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T17:05:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "28224e051cdd773c7be589aeba27261cf817cdd8",
          "body": null,
          "is_bot": false,
          "headline": "update fzf 0.29 -> 0.42",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T17:04:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0e1d6db7bab17ca52732f3102f0027e6f5b8dc48",
          "body": "# Conflicts:\n#\tvars/main.yml",
          "is_bot": false,
          "headline": "Merge branch 'master' into pull-viasite",
          "author_name": "Stanislav Popov",
          "author_login": "popstas",
          "committed_at": "2023-07-16T15:44:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f00c30325a103f1c7ecd8e71fc418e5629c6a153",
          "body": "* fixed it\r\n\r\n* fixed it\r\n\r\n* changed how list for antigen_bundles are merged",
          "is_bot": false,
          "headline": "63 antigen bundle (#67)",
          "author_name": "Leon Connor Holm",
          "author_login": "quantumfate",
          "committed_at": "2023-07-16T15:31:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "809269e6b828d93e9fb56a50fbda80cc4ec372c0",
          "body": "* fixed it\r\n\r\n* fixed it\r\n\r\n* changed how list for antigen_bundles are merged\r\n\r\n* list for hotkeys fixed",
          "is_bot": false,
          "headline": "68 no hotkeys in zshrc (#69)",
          "author_name": "Leon Connor Holm",
          "author_login": "quantumfate",
          "committed_at": "2023-07-16T15:21:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "90358c4c8e2f7c975b87d9a3f0c2ef9ec0dcba1a",
          "body": null,
          "is_bot": false,
          "headline": "fixed it (#66)",
          "author_name": "Leon Connor Holm",
          "author_login": "quantumfate",
          "committed_at": "2023-07-16T15:06:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "088511d01e1578651198b4ab2e6016149924e3be",
          "body": null,
          "is_bot": false,
          "headline": "change variables names",
          "author_name": "belgotux",
          "author_login": "belgotux",
          "committed_at": "2022-10-12T16:19:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1e4a2951400b5ca63e1fdd5ef807835f82e1e13a",
          "body": "…ared mode",
          "is_bot": false,
          "headline": "bugfix for become + verification + install for existing client for sh…",
          "author_name": "belgotux",
          "author_login": "belgotux",
          "committed_at": "2022-09-20T17:29:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 64,
      "commits_last_year": 60,
      "latest_release_at": "2026-07-16T11:02:27Z",
      "latest_release_tag": "v4.0.2",
      "releases_from_tags": false,
      "days_since_last_push": 2,
      "active_weeks_last_year": 7,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 1.6
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": []
    },
    "popularity": {
      "forks": 81,
      "stars": 361,
      "watchers": 14,
      "fork_history": {
        "days": [
          {
            "date": "2017-03-09",
            "count": 1
          },
          {
            "date": "2017-03-10",
            "count": 1
          },
          {
            "date": "2017-04-01",
            "count": 1
          },
          {
            "date": "2017-04-14",
            "count": 1
          },
          {
            "date": "2017-05-31",
            "count": 1
          },
          {
            "date": "2017-06-15",
            "count": 1
          },
          {
            "date": "2017-06-21",
            "count": 1
          },
          {
            "date": "2017-09-27",
            "count": 1
          },
          {
            "date": "2017-10-30",
            "count": 1
          },
          {
            "date": "2018-03-09",
            "count": 1
          },
          {
            "date": "2018-03-10",
            "count": 1
          },
          {
            "date": "2018-04-13",
            "count": 1
          },
          {
            "date": "2018-07-12",
            "count": 1
          },
          {
            "date": "2018-08-18",
            "count": 1
          },
          {
            "date": "2018-09-04",
            "count": 1
          },
          {
            "date": "2018-09-20",
            "count": 1
          },
          {
            "date": "2018-09-24",
            "count": 1
          },
          {
            "date": "2018-11-06",
            "count": 1
          },
          {
            "date": "2018-11-10",
            "count": 1
          },
          {
            "date": "2018-12-26",
            "count": 1
          },
          {
            "date": "2019-03-02",
            "count": 1
          },
          {
            "date": "2019-03-16",
            "count": 1
          },
          {
            "date": "2019-04-08",
            "count": 1
          },
          {
            "date": "2019-04-21",
            "count": 1
          },
          {
            "date": "2019-05-04",
            "count": 1
          },
          {
            "date": "2019-06-15",
            "count": 1
          },
          {
            "date": "2019-06-27",
            "count": 1
          },
          {
            "date": "2019-08-10",
            "count": 1
          },
          {
            "date": "2019-08-14",
            "count": 1
          },
          {
            "date": "2019-09-13",
            "count": 1
          },
          {
            "date": "2019-10-21",
            "count": 1
          },
          {
            "date": "2019-11-02",
            "count": 1
          },
          {
            "date": "2019-11-17",
            "count": 1
          },
          {
            "date": "2019-11-28",
            "count": 1
          },
          {
            "date": "2019-12-07",
            "count": 1
          },
          {
            "date": "2020-03-08",
            "count": 1
          },
          {
            "date": "2020-03-28",
            "count": 1
          },
          {
            "date": "2020-05-19",
            "count": 1
          },
          {
            "date": "2020-05-28",
            "count": 1
          },
          {
            "date": "2020-07-06",
            "count": 1
          },
          {
            "date": "2020-07-26",
            "count": 1
          },
          {
            "date": "2020-08-01",
            "count": 1
          },
          {
            "date": "2020-08-12",
            "count": 1
          },
          {
            "date": "2020-09-04",
            "count": 1
          },
          {
            "date": "2020-10-18",
            "count": 1
          },
          {
            "date": "2020-10-19",
            "count": 1
          },
          {
            "date": "2020-11-27",
            "count": 1
          },
          {
            "date": "2021-02-28",
            "count": 2
          },
          {
            "date": "2021-03-16",
            "count": 1
          },
          {
            "date": "2021-03-23",
            "count": 1
          },
          {
            "date": "2021-04-12",
            "count": 1
          },
          {
            "date": "2021-07-11",
            "count": 1
          },
          {
            "date": "2021-07-29",
            "count": 1
          },
          {
            "date": "2021-08-28",
            "count": 1
          },
          {
            "date": "2021-09-30",
            "count": 1
          },
          {
            "date": "2021-10-15",
            "count": 1
          },
          {
            "date": "2021-10-26",
            "count": 1
          },
          {
            "date": "2021-11-11",
            "count": 1
          },
          {
            "date": "2021-11-29",
            "count": 1
          },
          {
            "date": "2022-02-03",
            "count": 1
          },
          {
            "date": "2022-03-18",
            "count": 1
          },
          {
            "date": "2022-08-06",
            "count": 1
          },
          {
            "date": "2022-09-20",
            "count": 1
          },
          {
            "date": "2022-11-26",
            "count": 1
          },
          {
            "date": "2023-01-03",
            "count": 1
          },
          {
            "date": "2023-02-12",
            "count": 1
          },
          {
            "date": "2023-02-15",
            "count": 1
          },
          {
            "date": "2023-07-04",
            "count": 1
          },
          {
            "date": "2023-07-24",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-10-02",
            "count": 1
          },
          {
            "date": "2024-01-17",
            "count": 1
          },
          {
            "date": "2024-02-27",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 1
          },
          {
            "date": "2024-07-23",
            "count": 1
          },
          {
            "date": "2025-01-21",
            "count": 1
          },
          {
            "date": "2025-10-03",
            "count": 1
          },
          {
            "date": "2026-03-01",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 80,
        "total_forks": 81
      },
      "star_history": {
        "days": [
          {
            "date": "2017-03-09",
            "count": 10
          },
          {
            "date": "2017-03-10",
            "count": 4
          },
          {
            "date": "2017-03-12",
            "count": 1
          },
          {
            "date": "2017-03-14",
            "count": 3
          },
          {
            "date": "2017-03-15",
            "count": 2
          },
          {
            "date": "2017-03-19",
            "count": 1
          },
          {
            "date": "2017-04-01",
            "count": 1
          },
          {
            "date": "2017-04-03",
            "count": 1
          },
          {
            "date": "2017-04-08",
            "count": 1
          },
          {
            "date": "2017-04-12",
            "count": 1
          },
          {
            "date": "2017-04-13",
            "count": 2
          },
          {
            "date": "2017-04-15",
            "count": 1
          },
          {
            "date": "2017-04-20",
            "count": 1
          },
          {
            "date": "2017-05-02",
            "count": 1
          },
          {
            "date": "2017-05-12",
            "count": 1
          },
          {
            "date": "2017-05-30",
            "count": 1
          },
          {
            "date": "2017-05-31",
            "count": 1
          },
          {
            "date": "2017-06-12",
            "count": 1
          },
          {
            "date": "2017-06-14",
            "count": 1
          },
          {
            "date": "2017-07-13",
            "count": 1
          },
          {
            "date": "2017-07-15",
            "count": 1
          },
          {
            "date": "2017-07-16",
            "count": 1
          },
          {
            "date": "2017-08-04",
            "count": 1
          },
          {
            "date": "2017-08-15",
            "count": 2
          },
          {
            "date": "2017-08-19",
            "count": 1
          },
          {
            "date": "2017-08-21",
            "count": 1
          },
          {
            "date": "2017-08-24",
            "count": 1
          },
          {
            "date": "2017-08-25",
            "count": 1
          },
          {
            "date": "2017-09-01",
            "count": 1
          },
          {
            "date": "2017-09-05",
            "count": 1
          },
          {
            "date": "2017-09-18",
            "count": 1
          },
          {
            "date": "2017-09-23",
            "count": 2
          },
          {
            "date": "2017-09-26",
            "count": 2
          },
          {
            "date": "2017-11-04",
            "count": 1
          },
          {
            "date": "2017-11-06",
            "count": 1
          },
          {
            "date": "2017-11-07",
            "count": 1
          },
          {
            "date": "2017-11-28",
            "count": 1
          },
          {
            "date": "2017-12-13",
            "count": 2
          },
          {
            "date": "2017-12-14",
            "count": 1
          },
          {
            "date": "2017-12-16",
            "count": 1
          },
          {
            "date": "2017-12-22",
            "count": 1
          },
          {
            "date": "2017-12-30",
            "count": 1
          },
          {
            "date": "2018-01-04",
            "count": 1
          },
          {
            "date": "2018-01-12",
            "count": 1
          },
          {
            "date": "2018-01-21",
            "count": 1
          },
          {
            "date": "2018-01-25",
            "count": 1
          },
          {
            "date": "2018-02-10",
            "count": 1
          },
          {
            "date": "2018-02-17",
            "count": 1
          },
          {
            "date": "2018-02-27",
            "count": 2
          },
          {
            "date": "2018-03-09",
            "count": 1
          },
          {
            "date": "2018-03-11",
            "count": 1
          },
          {
            "date": "2018-03-23",
            "count": 1
          },
          {
            "date": "2018-04-08",
            "count": 2
          },
          {
            "date": "2018-05-07",
            "count": 1
          },
          {
            "date": "2018-05-08",
            "count": 2
          },
          {
            "date": "2018-05-09",
            "count": 1
          },
          {
            "date": "2018-05-17",
            "count": 1
          },
          {
            "date": "2018-05-30",
            "count": 1
          },
          {
            "date": "2018-06-17",
            "count": 1
          },
          {
            "date": "2018-07-09",
            "count": 1
          },
          {
            "date": "2018-07-23",
            "count": 1
          },
          {
            "date": "2018-07-24",
            "count": 1
          },
          {
            "date": "2018-07-30",
            "count": 1
          },
          {
            "date": "2018-08-06",
            "count": 1
          },
          {
            "date": "2018-08-12",
            "count": 1
          },
          {
            "date": "2018-08-21",
            "count": 1
          },
          {
            "date": "2018-08-31",
            "count": 1
          },
          {
            "date": "2018-09-04",
            "count": 1
          },
          {
            "date": "2018-09-07",
            "count": 1
          },
          {
            "date": "2018-09-21",
            "count": 1
          },
          {
            "date": "2018-09-25",
            "count": 2
          },
          {
            "date": "2018-10-05",
            "count": 1
          },
          {
            "date": "2018-10-23",
            "count": 1
          },
          {
            "date": "2018-11-06",
            "count": 1
          },
          {
            "date": "2018-11-14",
            "count": 1
          },
          {
            "date": "2018-11-22",
            "count": 2
          },
          {
            "date": "2018-12-03",
            "count": 1
          },
          {
            "date": "2018-12-10",
            "count": 2
          },
          {
            "date": "2018-12-11",
            "count": 1
          },
          {
            "date": "2018-12-22",
            "count": 1
          },
          {
            "date": "2018-12-26",
            "count": 2
          },
          {
            "date": "2018-12-27",
            "count": 1
          },
          {
            "date": "2019-01-12",
            "count": 1
          },
          {
            "date": "2019-01-20",
            "count": 1
          },
          {
            "date": "2019-02-05",
            "count": 1
          },
          {
            "date": "2019-02-11",
            "count": 2
          },
          {
            "date": "2019-02-12",
            "count": 1
          },
          {
            "date": "2019-02-21",
            "count": 2
          },
          {
            "date": "2019-02-24",
            "count": 1
          },
          {
            "date": "2019-03-01",
            "count": 1
          },
          {
            "date": "2019-03-11",
            "count": 1
          },
          {
            "date": "2019-03-15",
            "count": 1
          },
          {
            "date": "2019-03-20",
            "count": 1
          },
          {
            "date": "2019-04-01",
            "count": 1
          },
          {
            "date": "2019-04-08",
            "count": 2
          },
          {
            "date": "2019-04-13",
            "count": 1
          },
          {
            "date": "2019-04-16",
            "count": 1
          },
          {
            "date": "2019-04-19",
            "count": 1
          },
          {
            "date": "2019-04-21",
            "count": 1
          },
          {
            "date": "2019-04-26",
            "count": 1
          },
          {
            "date": "2019-05-13",
            "count": 1
          },
          {
            "date": "2019-05-19",
            "count": 1
          },
          {
            "date": "2019-05-29",
            "count": 2
          },
          {
            "date": "2019-06-04",
            "count": 1
          },
          {
            "date": "2019-06-21",
            "count": 1
          },
          {
            "date": "2019-06-22",
            "count": 1
          },
          {
            "date": "2019-06-24",
            "count": 1
          },
          {
            "date": "2019-06-28",
            "count": 1
          },
          {
            "date": "2019-07-01",
            "count": 1
          },
          {
            "date": "2019-07-08",
            "count": 1
          },
          {
            "date": "2019-07-12",
            "count": 1
          },
          {
            "date": "2019-07-21",
            "count": 1
          },
          {
            "date": "2019-08-01",
            "count": 1
          },
          {
            "date": "2019-08-06",
            "count": 1
          },
          {
            "date": "2019-09-02",
            "count": 1
          },
          {
            "date": "2019-09-04",
            "count": 1
          },
          {
            "date": "2019-09-09",
            "count": 1
          },
          {
            "date": "2019-10-27",
            "count": 1
          },
          {
            "date": "2019-10-28",
            "count": 1
          },
          {
            "date": "2019-10-30",
            "count": 1
          },
          {
            "date": "2019-11-02",
            "count": 1
          },
          {
            "date": "2019-12-17",
            "count": 1
          },
          {
            "date": "2019-12-28",
            "count": 1
          },
          {
            "date": "2020-01-02",
            "count": 2
          },
          {
            "date": "2020-01-23",
            "count": 1
          },
          {
            "date": "2020-02-06",
            "count": 1
          },
          {
            "date": "2020-02-19",
            "count": 1
          },
          {
            "date": "2020-02-21",
            "count": 1
          },
          {
            "date": "2020-02-28",
            "count": 1
          },
          {
            "date": "2020-03-04",
            "count": 1
          },
          {
            "date": "2020-03-20",
            "count": 1
          },
          {
            "date": "2020-04-04",
            "count": 1
          },
          {
            "date": "2020-04-14",
            "count": 1
          },
          {
            "date": "2020-04-15",
            "count": 1
          },
          {
            "date": "2020-05-02",
            "count": 1
          },
          {
            "date": "2020-05-16",
            "count": 1
          },
          {
            "date": "2020-05-19",
            "count": 1
          },
          {
            "date": "2020-06-05",
            "count": 1
          },
          {
            "date": "2020-06-15",
            "count": 2
          },
          {
            "date": "2020-06-20",
            "count": 1
          },
          {
            "date": "2020-07-03",
            "count": 1
          },
          {
            "date": "2020-07-26",
            "count": 1
          },
          {
            "date": "2020-07-30",
            "count": 1
          },
          {
            "date": "2020-08-08",
            "count": 1
          },
          {
            "date": "2020-08-12",
            "count": 1
          },
          {
            "date": "2020-08-25",
            "count": 1
          },
          {
            "date": "2020-08-29",
            "count": 1
          },
          {
            "date": "2020-09-13",
            "count": 1
          },
          {
            "date": "2020-09-15",
            "count": 1
          },
          {
            "date": "2020-10-01",
            "count": 1
          },
          {
            "date": "2020-10-04",
            "count": 1
          },
          {
            "date": "2020-10-06",
            "count": 1
          },
          {
            "date": "2020-10-10",
            "count": 1
          },
          {
            "date": "2020-10-18",
            "count": 2
          },
          {
            "date": "2020-11-09",
            "count": 1
          },
          {
            "date": "2020-11-17",
            "count": 1
          },
          {
            "date": "2020-11-26",
            "count": 1
          },
          {
            "date": "2020-11-27",
            "count": 1
          },
          {
            "date": "2020-12-07",
            "count": 1
          },
          {
            "date": "2020-12-19",
            "count": 1
          },
          {
            "date": "2020-12-28",
            "count": 1
          },
          {
            "date": "2020-12-29",
            "count": 1
          },
          {
            "date": "2021-01-04",
            "count": 1
          },
          {
            "date": "2021-01-08",
            "count": 1
          },
          {
            "date": "2021-01-26",
            "count": 1
          },
          {
            "date": "2021-02-12",
            "count": 1
          },
          {
            "date": "2021-02-14",
            "count": 1
          },
          {
            "date": "2021-02-18",
            "count": 1
          },
          {
            "date": "2021-03-16",
            "count": 1
          },
          {
            "date": "2021-03-26",
            "count": 1
          },
          {
            "date": "2021-04-05",
            "count": 2
          },
          {
            "date": "2021-04-11",
            "count": 1
          },
          {
            "date": "2021-04-13",
            "count": 1
          },
          {
            "date": "2021-04-26",
            "count": 1
          },
          {
            "date": "2021-04-28",
            "count": 1
          },
          {
            "date": "2021-05-01",
            "count": 1
          },
          {
            "date": "2021-05-23",
            "count": 1
          },
          {
            "date": "2021-06-03",
            "count": 1
          },
          {
            "date": "2021-06-10",
            "count": 1
          },
          {
            "date": "2021-07-05",
            "count": 1
          },
          {
            "date": "2021-07-11",
            "count": 1
          },
          {
            "date": "2021-07-13",
            "count": 1
          },
          {
            "date": "2021-07-16",
            "count": 1
          },
          {
            "date": "2021-08-07",
            "count": 1
          },
          {
            "date": "2021-08-12",
            "count": 1
          },
          {
            "date": "2021-08-13",
            "count": 1
          },
          {
            "date": "2021-08-14",
            "count": 1
          },
          {
            "date": "2021-09-07",
            "count": 1
          },
          {
            "date": "2021-09-17",
            "count": 1
          },
          {
            "date": "2021-09-21",
            "count": 1
          },
          {
            "date": "2021-10-03",
            "count": 1
          },
          {
            "date": "2021-10-21",
            "count": 1
          },
          {
            "date": "2021-11-04",
            "count": 1
          },
          {
            "date": "2021-11-05",
            "count": 1
          },
          {
            "date": "2021-11-08",
            "count": 1
          },
          {
            "date": "2021-11-10",
            "count": 1
          },
          {
            "date": "2021-11-24",
            "count": 1
          },
          {
            "date": "2021-12-04",
            "count": 1
          },
          {
            "date": "2021-12-06",
            "count": 1
          },
          {
            "date": "2021-12-15",
            "count": 1
          },
          {
            "date": "2021-12-22",
            "count": 1
          },
          {
            "date": "2022-01-03",
            "count": 1
          },
          {
            "date": "2022-01-05",
            "count": 1
          },
          {
            "date": "2022-01-10",
            "count": 1
          },
          {
            "date": "2022-01-19",
            "count": 1
          },
          {
            "date": "2022-01-20",
            "count": 1
          },
          {
            "date": "2022-01-21",
            "count": 1
          },
          {
            "date": "2022-01-24",
            "count": 1
          },
          {
            "date": "2022-02-11",
            "count": 1
          },
          {
            "date": "2022-02-18",
            "count": 1
          },
          {
            "date": "2022-02-27",
            "count": 1
          },
          {
            "date": "2022-03-13",
            "count": 1
          },
          {
            "date": "2022-03-21",
            "count": 1
          },
          {
            "date": "2022-03-25",
            "count": 1
          },
          {
            "date": "2022-03-30",
            "count": 1
          },
          {
            "date": "2022-04-14",
            "count": 1
          },
          {
            "date": "2022-04-24",
            "count": 2
          },
          {
            "date": "2022-04-29",
            "count": 1
          },
          {
            "date": "2022-05-03",
            "count": 1
          },
          {
            "date": "2022-05-05",
            "count": 1
          },
          {
            "date": "2022-05-08",
            "count": 1
          },
          {
            "date": "2022-05-10",
            "count": 1
          },
          {
            "date": "2022-06-12",
            "count": 1
          },
          {
            "date": "2022-06-18",
            "count": 1
          },
          {
            "date": "2022-07-01",
            "count": 1
          },
          {
            "date": "2022-07-12",
            "count": 1
          },
          {
            "date": "2022-07-13",
            "count": 2
          },
          {
            "date": "2022-07-20",
            "count": 1
          },
          {
            "date": "2022-08-21",
            "count": 2
          },
          {
            "date": "2022-08-28",
            "count": 1
          },
          {
            "date": "2022-09-06",
            "count": 1
          },
          {
            "date": "2022-09-18",
            "count": 1
          },
          {
            "date": "2022-10-30",
            "count": 1
          },
          {
            "date": "2022-11-09",
            "count": 1
          },
          {
            "date": "2022-11-28",
            "count": 1
          },
          {
            "date": "2022-12-16",
            "count": 1
          },
          {
            "date": "2023-01-15",
            "count": 1
          },
          {
            "date": "2023-01-24",
            "count": 1
          },
          {
            "date": "2023-01-31",
            "count": 2
          },
          {
            "date": "2023-02-07",
            "count": 1
          },
          {
            "date": "2023-02-13",
            "count": 1
          },
          {
            "date": "2023-02-19",
            "count": 1
          },
          {
            "date": "2023-03-10",
            "count": 2
          },
          {
            "date": "2023-04-03",
            "count": 1
          },
          {
            "date": "2023-04-12",
            "count": 1
          },
          {
            "date": "2023-04-14",
            "count": 1
          },
          {
            "date": "2023-05-23",
            "count": 1
          },
          {
            "date": "2023-06-08",
            "count": 1
          },
          {
            "date": "2023-06-17",
            "count": 1
          },
          {
            "date": "2023-06-23",
            "count": 1
          },
          {
            "date": "2023-07-17",
            "count": 1
          },
          {
            "date": "2023-07-28",
            "count": 1
          },
          {
            "date": "2023-08-09",
            "count": 1
          },
          {
            "date": "2023-08-28",
            "count": 1
          },
          {
            "date": "2023-09-01",
            "count": 1
          },
          {
            "date": "2023-09-08",
            "count": 1
          },
          {
            "date": "2023-09-13",
            "count": 1
          },
          {
            "date": "2023-09-14",
            "count": 1
          },
          {
            "date": "2023-10-03",
            "count": 1
          },
          {
            "date": "2023-10-17",
            "count": 1
          },
          {
            "date": "2023-10-19",
            "count": 1
          },
          {
            "date": "2023-10-31",
            "count": 1
          },
          {
            "date": "2023-11-11",
            "count": 1
          },
          {
            "date": "2023-11-12",
            "count": 1
          },
          {
            "date": "2023-11-25",
            "count": 1
          },
          {
            "date": "2023-11-27",
            "count": 1
          },
          {
            "date": "2023-12-02",
            "count": 1
          },
          {
            "date": "2023-12-03",
            "count": 1
          },
          {
            "date": "2023-12-08",
            "count": 1
          },
          {
            "date": "2023-12-13",
            "count": 1
          },
          {
            "date": "2023-12-14",
            "count": 1
          },
          {
            "date": "2023-12-31",
            "count": 1
          },
          {
            "date": "2024-01-04",
            "count": 1
          },
          {
            "date": "2024-01-14",
            "count": 1
          },
          {
            "date": "2024-01-24",
            "count": 1
          },
          {
            "date": "2024-02-14",
            "count": 2
          },
          {
            "date": "2024-02-19",
            "count": 1
          },
          {
            "date": "2024-02-21",
            "count": 1
          },
          {
            "date": "2024-02-25",
            "count": 1
          },
          {
            "date": "2024-02-28",
            "count": 1
          },
          {
            "date": "2024-03-03",
            "count": 1
          },
          {
            "date": "2024-03-17",
            "count": 1
          },
          {
            "date": "2024-05-04",
            "count": 2
          },
          {
            "date": "2024-05-07",
            "count": 1
          },
          {
            "date": "2024-05-18",
            "count": 1
          },
          {
            "date": "2024-05-22",
            "count": 1
          },
          {
            "date": "2024-05-24",
            "count": 2
          },
          {
            "date": "2024-06-01",
            "count": 1
          },
          {
            "date": "2024-06-13",
            "count": 1
          },
          {
            "date": "2024-06-16",
            "count": 1
          },
          {
            "date": "2024-07-15",
            "count": 1
          },
          {
            "date": "2024-07-23",
            "count": 1
          },
          {
            "date": "2024-08-02",
            "count": 1
          },
          {
            "date": "2024-09-02",
            "count": 1
          },
          {
            "date": "2024-09-07",
            "count": 1
          },
          {
            "date": "2024-09-19",
            "count": 1
          },
          {
            "date": "2024-10-11",
            "count": 1
          },
          {
            "date": "2024-10-28",
            "count": 1
          },
          {
            "date": "2024-11-02",
            "count": 1
          },
          {
            "date": "2024-11-08",
            "count": 1
          },
          {
            "date": "2024-11-21",
            "count": 1
          },
          {
            "date": "2024-12-15",
            "count": 1
          },
          {
            "date": "2024-12-16",
            "count": 1
          },
          {
            "date": "2024-12-20",
            "count": 1
          },
          {
            "date": "2025-01-10",
            "count": 1
          },
          {
            "date": "2025-01-14",
            "count": 1
          },
          {
            "date": "2025-02-27",
            "count": 1
          },
          {
            "date": "2025-04-13",
            "count": 1
          },
          {
            "date": "2025-05-12",
            "count": 1
          },
          {
            "date": "2025-06-26",
            "count": 1
          },
          {
            "date": "2025-07-06",
            "count": 1
          },
          {
            "date": "2025-10-19",
            "count": 1
          },
          {
            "date": "2026-02-23",
            "count": 1
          },
          {
            "date": "2026-03-01",
            "count": 1
          },
          {
            "date": "2026-05-31",
            "count": 1
          },
          {
            "date": "2026-06-15",
            "count": 1
          },
          {
            "date": "2026-07-06",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 361,
        "total_stars": 361
      },
      "open_issues_and_prs": 1
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 16028,
      "source_files_sampled": 4,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "windows/requirements-dev.txt"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 3,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "pypi"
      ],
      "dependencies": [],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "jinja2",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pytest",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          },
          {
            "name": "pyyaml",
            "direct": false,
            "version": null,
            "ecosystem": "pypi"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 3,
        "direct_count": 0,
        "indirect_count": 3
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 27,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 55,
        "closed_unmerged_prs": 8
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "popstas",
          "commits": 229,
          "avatar_url": "https://avatars.githubusercontent.com/u/3027126?v=4"
        },
        {
          "type": "User",
          "login": "beevee",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/1009675?v=4"
        },
        {
          "type": "User",
          "login": "quantumfate",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/62796852?v=4"
        },
        {
          "type": "User",
          "login": "belgotux",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/11537542?v=4"
        },
        {
          "type": "User",
          "login": "yvalentin",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/1521862?v=4"
        },
        {
          "type": "User",
          "login": "shirobachi",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/16509749?v=4"
        },
        {
          "type": "User",
          "login": "rparree",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/359605?v=4"
        },
        {
          "type": "User",
          "login": "stefanfluit",
          "commits": 2,
          "avatar_url": "https://avatars.githubusercontent.com/u/41238956?v=4"
        },
        {
          "type": "User",
          "login": "agarthetiger",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/1242023?v=4"
        },
        {
          "type": "User",
          "login": "CultClassik",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/12993766?v=4"
        }
      ],
      "contributors_sampled": 14,
      "top_contributor_share": 0.902
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "install.yml",
        "lint.yml",
        "molecule.yml",
        "release.yml",
        "windows.yml"
      ],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 10,
            "reason": "3 out of 3 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/5 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 0,
            "reason": "project has 0 contributing companies or organizations -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 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": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 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": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "a0ee1698025c3ac86dd22ee752b4d3bb01cbc146",
        "ran_at": "2026-07-22T02:36:33Z",
        "aggregate_score": 4.1,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-19T20:48:34Z",
      "oldest_open_prs": [
        {
          "number": 91,
          "created_at": "2026-07-16T23:06:44Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-07-16T10:52:59Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/viasite-ansible/ansible-role-zsh",
    "host": "github.com",
    "name": "ansible-role-zsh",
    "owner": "viasite-ansible"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "at_risk",
      "name": "Overall health",
      "note": "High-Risk Jurisdiction Policy applies a 50% multiplier to weighted overall health and gives it an At risk ceiling of 49.",
      "notes": [
        {
          "code": "jurisdiction_overall_adjustment",
          "params": {
            "cap": 49,
            "pct": 50
          }
        }
      ],
      "value": 31,
      "inputs": {
        "security": 20,
        "vitality": 80,
        "community": 67,
        "governance": 52,
        "engineering": 81,
        "high_risk_jurisdiction_cap": 49,
        "high_risk_jurisdiction_multiplier": 50,
        "weighted_overall_before_jurisdiction": 62,
        "overall_after_jurisdiction_multiplier": 31
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 80,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 67,
            "inputs": {
              "commits_last_year": 60,
              "human_commit_share": 0.99,
              "days_since_last_push": 2,
              "active_weeks_last_year": 7
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 2 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "7/52 weeks with commits",
                "points": 4.8,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 7
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "60 commits in the last year",
                "points": 16,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 60
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "releases_count": 64,
              "latest_release_tag": "v4.0.2",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 1.6
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "64 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 64
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~1.6 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 1.6
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 2,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 2 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 2
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 67,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 64,
            "inputs": {
              "forks": 81,
              "stars": 361,
              "watchers": 14,
              "growth_state": "organic",
              "growth_factor_pct": 100
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "361 stars",
                "points": 41.5,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 361
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "81 forks",
                "points": 15.9,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 81
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "14 watchers",
                "points": 6.2,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          }
        ],
        "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": 25,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 14,
              "top_contributor_share": 0.902
            },
            "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 90% of commits",
                "points": 2.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 90
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "14 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 14
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "good",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 76,
            "inputs": {
              "merged_prs": 27,
              "open_issues": 0,
              "closed_issues": 55,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 8
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "27/35 decided PRs merged",
                "points": 29.5,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 27,
                      "decided": 35
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/5 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 61,
            "inputs": {
              "followers": 5,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "viasite-ansible",
              "public_repos": 74,
              "account_age_days": 3530
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "5 followers of viasite-ansible",
                "points": 5.6,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 5,
                      "login": "viasite-ansible"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "74 public repos, account ~9 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 74
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 9
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "good",
        "name": "Engineering Quality",
        "value": 81,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "5 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 5
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "3 out of 3 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": [
                "zsh",
                "oh-my-zsh",
                "ansible-role",
                "ansible-galaxy",
                "zsh-autosuggestions",
                "zsh-syntax-highlighting",
                "fzf",
                "zsh-command-time",
                "antigen",
                "powerlevel10k",
                "starship-prompt"
              ],
              "has_wiki": true,
              "homepage": "https://habrahabr.ru/post/323496/",
              "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://habrahabr.ru/post/323496/",
                "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": "11 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "critical",
        "name": "Security",
        "value": 20,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "critical",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized. High-Risk Jurisdiction Policy applies a 50% multiplier to Security posture and gives it an At risk ceiling of 49.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "jurisdiction_posture_adjustment",
                "params": {
                  "cap": 49,
                  "pct": 50
                }
              }
            ],
            "value": 20,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.1,
              "high_risk_jurisdiction_cap": 49,
              "high_risk_jurisdiction_multiplier": 50,
              "security_posture_after_multiplier": 20,
              "security_posture_before_jurisdiction": 41
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "3 out of 3 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/5 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 0 contributing companies or organizations -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "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 not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "moderate",
            "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": 50,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": true,
              "exposures": [
                {
                  "role": "contributor_organization",
                  "count": 1,
                  "country": "Russia"
                },
                {
                  "role": "top_contributor",
                  "count": 1,
                  "country": "Russia"
                }
              ],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 10
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "Russia: contributor_organization (1); Russia: top_contributor (1)",
                "points": 50,
                "status": "partial",
                "details": [
                  {
                    "code": "jurisdiction_exposure",
                    "params": {
                      "role": "contributor_organization",
                      "count": 1,
                      "country": "Russia"
                    }
                  },
                  {
                    "code": "jurisdiction_exposure_next",
                    "params": {
                      "role": "top_contributor",
                      "count": 1,
                      "country": "Russia"
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "at_risk",
        "name": "AI Readiness",
        "value": 39,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "at_risk",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.939,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "93 of 99 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 93,
                      "sampled": 99
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 32,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0.38,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "38 of the last 100 commits agent-authored or agent-credited",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 38,
                      "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": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "PowerShell",
              "largest_source_bytes": 16028,
              "source_files_sampled": 4,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "PowerShell without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "PowerShell"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/4 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 4,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "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": [
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-22T02:36:52.495931Z",
  "schema_version": "0.26.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/v/viasite-ansible/ansible-role-zsh.svg",
  "full_name": "viasite-ansible/ansible-role-zsh",
  "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.26.0 — full methodology · metrics wiki.

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