Öffentliches Register
Software-GesundheitsberichtSchema 0.26.0 · Metriken 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 Sterne⑂ 81 Forksseit Feb. 2017Auf GitHub ansehen ↗

viasite-ansible/ansible-role-zsh erreicht einen Gesundheitsindex von 31 von 100 und liegt damit im Bereich Gefährdet. Am stärksten schneidet es bei Engineering Quality (81/100) ab, am schwächsten bei Security (20/100). Zuletzt vor 2 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

31
gesamt / 100
Gefährdet

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

31
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Die Richtlinie für Hochrisikojurisdiktionen wendet einen Multiplikator von 50 % auf die gewichtete Gesamtgesundheit an und begrenzt sie auf die Obergrenze Gefährdet von 49.

Eigentümerschaft

viasite-ansibleOrganisation
5 Follower74 öffentliche Reposseit Nov. 2016

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

80Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 2 Tagen
4.8/36Commit-Rhythmus — 7/52 Wochen mit Commits
16/18Commit-Volumen — 60 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year60
human_commit_share0,99
days_since_last_push2
active_weeks_last_year7

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 64 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
27/27Release-Rhythmus — ein Release etwa alle 1,6 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count64
latest_release_tagv4.0.2
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases1,6
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

67Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
41.5/60Stars — 361 Stars
15.9/25Forks — 81 Forks
6.2/15Watcher — 14 Watcher
Verwendete Eingangsdaten
forks81
stars361
watchers14
growth_stateorganic
growth_factor_pct100
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
18/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingja
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

52Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
2.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 90 % der Commits
13.5/13.5Breite der Beitragenden — 14 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled14
top_contributor_share0,902
Wie die Bewertung erfolgt
46.8/46.8Issue-Lösungsquote — 100 % der Issues geschlossen
29.5/38.3PR-Annahme — 27/35 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/5 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs27
open_issues0
closed_issues55
issue_closed_ratio1
closed_unmerged_prs8
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
5.6/25Reichweite des Inhabers — 5 Follower von viasite-ansible
25/25Kontohistorie — 74 öffentliche Repos, Kontoalter ca. 9 Jahre
Verwendete Eingangsdaten
followers5
owner_typeOrganization
is_verified
owner_loginviasite-ansible
public_repos74
account_age_days3.530

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

81Gut · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 5 Workflow(s)
24/24Tests vorhanden
0/16Linter-Konfiguration
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
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

100Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://habrahabr.ru/post/323496/
10/10Repository-Beschreibung
10/10Topics — 11 Topics
10/10Wiki
Verwendete Eingangsdaten
topicszsh, oh-my-zsh, ansible-role, ansible-galaxy, zsh-autosuggestions, zsh-syntax-highlighting, fzf, zsh-command-time, antigen, powerlevel10k, starship-prompt
has_wikija
homepagehttps://habrahabr.ru/post/323496/
has_readmeja
has_docs_dirja
has_descriptionja

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

20Kritisch · 16 % des Gesamtindex

Sicherheitslage

20Kritisch
Wie die Bewertung erfolgt
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.5Lizenz — 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 — keine Daten
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Verwendete Eingangsdaten
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
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert. Die Richtlinie für Hochrisikojurisdiktionen wendet einen Multiplikator von 50 % an und begrenzt die Sicherheitslage auf die Obergrenze Gefährdet von 49.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

39Gefährdet · 0 % des Gesamtindex
Wie die Bewertung erfolgt
0/45Agentenanweisungen — keine CLAUDE.md / AGENTS.md / Editor-Regeln
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 93 von 99 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,939
agent_instruction_files
agent_instruction_max_bytes
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
0/11Statische Typprüfung
0/10Reproduzierbare Umgebung
10/10Belegte Agentenpraxis — 38 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfiles
has_dockerfilenein
typed_languagenein
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configs
agent_commit_share0,38
toolchain_manifests
dependency_bot_commit_share0
Wie die Bewertung erfolgt
0/45Typprüfbarer Code — PowerShell ohne Typprüfungs-Konfiguration
55/55Handhabbare Dateigrößen — 0/4 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languagePowerShell
largest_source_bytes16.028
source_files_sampled4
oversized_source_files0

Eckdaten

361GitHub-Sterne
14Mitwirkende
60Commits, letzte 12 Monate
2Tage seit letztem Push
64Releases
1Bus-Faktor
0offene Issues
PyPIPaket-Ökosysteme

Warnungen zur Datenerhebung

  • No resolved dependencies carried a version and a supported ecosystem

Weitere Details

Stern- und Fork-Verlauf 361 ★ / 81 ⇿
361Sterne
81Forks
61Releases

Wann jeder Stern und Fork hinzugefügt wurde, von GitHub erfasst und nach Tagen gruppiert. Das kumulierte Wachstum steht direkt über den täglichen Zugängen, aus denen es besteht, sodass beide gegeneinander lesbar sind: stetiger organischer Zuwachs sieht ganz anders aus als ein abrupter, kurzlebiger Ausschlag. Wo dieser Unterschied messbar ist, wird er als Wachstumsauthentizität ausgewiesen.

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

Jeder Punkt umfasst 9 Tage.

OpenSSF Scorecard 4.1 / 10
4.1Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.Packagingpackaging 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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Alle Abhängigkeiten 3

Vollständig aufgelöster Abhängigkeitssatz aus dem GitHub-Abhängigkeitsgraphen: 0 direkte und 3 indirekte (transitive) Pakete. Die transitive Hülle ist vollständig, wenn das Repository eine Lockfile eincheckt.

RegistryPaketVersionBeziehung
PyPIjinja2indirekt
PyPIpytestindirekt
PyPIpyyamlindirekt
Abhängigkeits-Advisories nicht bewertet

Der Advisory-Abgleich konnte für diesen Bericht nicht ausgeführt werden: No resolved dependencies carried a version and a supported ecosystem

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.26.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistiken.