Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 1.13.0 · 2026-07-23 01:33 UTC

fitchmultz / pi-cursor-sdk

Run Cursor's agent loop inside the pi coding agent via local Cursor SDK agents, with native model selection, thinking controls, fast/plan modes, image input, and MCP-bridged pi tools.

TypeScript · JavaScriptMIT★ 243 Sterne⑂ 23 Forksseit Mai 2026Auf GitHub ansehen ↗

fitchmultz/pi-cursor-sdk erreicht einen Gesundheitsindex von 54 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (77/100) ab, am schwächsten bei Security (20/100). Zuletzt heute aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

54
gesamt / 100
Mittel

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.

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

Eigentümerschaft

Mitch FultzPersönliches Konto
52 Follower38 öffentliche Reposseit Nov. 2019

Dieses Repository gehört einem persönlichen Konto. Ein Projekt mit nur einem Eigentümer trägt ein höheres Kontinuitätsrisiko als ein organisationsgetragenes.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npmpi-cursor-sdk0.1.609.59462vor 5 Tagenpi-packagepipi-extensioncursorcursor-sdkaiextension

Metriken nach Kategorie

Vitalität

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

77Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 0 Tagen
8.3/36Commit-Rhythmus — 12/52 Wochen mit Commits
18/18Commit-Volumen — 413 Commits im letzten Jahr
0/10OpenSSF Scorecard: Maintained — project was created within the last 90 days. Please review its contents carefully
Verwendete Eingangsdaten
commits_last_year413
human_commit_share1
days_since_last_push0
active_weeks_last_year12

Release-Disziplin

100Exzellent
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 57 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 11 Tagen
27/27Release-Rhythmus — ein Release etwa alle 2,2 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count57
latest_release_tagv0.1.57
releases_from_tagsnein
days_since_latest_release11
mean_days_between_releases2,2
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?

54Mittel · 18 % des Gesamtindex
Wie die Bewertung erfolgt
38.7/60Stars — 243 Stars
11.2/25Forks — 23 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks23
stars243
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
22.5/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (MIT)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmeja
has_licenseja
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
53.1/80Downloads pro Monat — 9.594 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packagespi-cursor-sdk
dependents
ecosystemsnpm
total_downloads
monthly_downloads9.594
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

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

60Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
0.2/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 99 % der Commits
5.4/13.5Breite der Beitragenden — 4 Beitragende
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Verwendete Eingangsdaten
bus_factor1
contributors_sampled4
top_contributor_share0,993
Wie die Bewertung erfolgt
45.5/46.8Issue-Lösungsquote — 97 % der Issues geschlossen
34.9/38.3PR-Annahme — 105/115 entschiedene PRs gemergt
3/15OpenSSF Scorecard: Code-Review — Found 2/10 approved changesets -- score normalized to 2
Verwendete Eingangsdaten
merged_prs105
open_issues2
closed_issues72
issue_closed_ratio0,973
closed_unmerged_prs10
Wie die Bewertung erfolgt
10/30Organisatorische Trägerschaft — persönliches (Nutzer-)Konto
0/20Verifizierte Domain — für Nutzerkonten nicht anwendbar
12.4/25Reichweite des Inhabers — 52 Follower von fitchmultz
23.6/25Kontohistorie — 38 öffentliche Repos, Kontoalter ca. 6 Jahre
Verwendete Eingangsdaten
followers52
owner_typeUser
is_verified
owner_loginfitchmultz
public_repos38
account_age_days2.451
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Verifizierte Domain. Die verbleibenden Gewichte wurden renormalisiert.

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 62 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packagespi-cursor-sdk
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

48Gefährdet · 20 % des Gesamtindex
Wie die Bewertung erfolgt
0/24CI-Workflows
24/24Tests vorhanden
0/16Linter-Konfiguration
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 10 merged PRs checked by a CI test -- score normalized to 0
Verwendete Eingangsdaten
has_cinein
has_testsja
has_editorconfignein
has_linter_confignein
has_precommit_confignein

Dokumentation

85Exzellent
Wie die Bewertung erfolgt
30/30README
25/25Dokumentationsverzeichnis
0/15Dokumentations-/Homepage-Site
10/10Repository-Beschreibung
10/10Topics — 9 Topics
10/10Wiki
Verwendete Eingangsdaten
topicsai, cursor, cursor-sdk, npm-package, pi, pi-extension, pi-package, provider, typescript
has_wikija
homepage
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
2.2/7.5Branch-Protection — branch protection is not maximal on development and all release branches
0/2.5CI-Tests — 0 out of 10 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
1.5/7.5Code-Review — Found 2/10 approved changesets -- score normalized to 2
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
0/10Dangerous-Workflow — keine Daten
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Lizenz — license file detected
0/7.5Maintained — project was created within the last 90 days. Please review its contents carefully
0/5Packaging — keine Daten
0/5Pinned-Dependencies — keine Daten
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 — keine Daten
0/7.5Vulnerabilities — 18 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated13
scorecard_versionv5.5.0
checks_inconclusive5
scorecard_aggregate2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): dangerous_workflow, packaging, pinned_dependencies, signed_releases, token_permissions. Die verbleibenden Gewichte wurden renormalisiert.

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.

64Mittel · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 80 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,8
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes28.417
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
0/11Lint-/Format-Konfiguration
11/11Statische Typprüfung — test/tsconfig.json, tsconfig.json
10/10Reproduzierbare Umgebung — lockfile
2/10Belegte Agentenpraxis — 1 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — keine Daten
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespackage-lock.json
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_confignein
typecheck_configstest/tsconfig.json, tsconfig.json
agent_commit_share0,01
toolchain_manifests
dependency_bot_commit_share0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Pinned-Dependencies. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
54.8/55Handhabbare Dateigrößen — 1/301 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes92.789
source_files_sampled301
oversized_source_files1
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
20/20MCP-Server
0/40Lauffähige Beispiele
Verwendete Eingangsdaten
example_dirs
has_mcp_signalja
api_schema_files

Eckdaten

243GitHub-Sterne
4Mitwirkende
413Commits, letzte 12 Monate
0Tage seit letztem Push
57Releases
1Bus-Faktor
2offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository
  • deps.dev does not index npm:pi-cursor-sdk@0.1.60; advisories assessed against the repository dependency graph instead

Weitere Details

Stern- und Fork-Verlauf 0 ★ / 23 ⇿
0Sterne
23Forks
40Releases

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.

048121620242322026-052026-062026-07
Major 0Minor 0Patch 40
OpenSSF Scorecard 2.0 / 10
2.0Gesamtwert

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-23 01:33 UTC

10Binary-Artifactsno binaries found in the repo
3Branch-Protectionbranch protection is not maximal on development and all release branches
0CI-Tests0 out of 10 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
2Code-ReviewFound 2/10 approved changesets -- score normalized to 2
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
k. A.Dangerous-Workflowno workflows found
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
0Maintainedproject was created within the last 90 days. Please review its contents carefully
k. A.Packagingpackaging workflow not detected
k. A.Pinned-Dependenciesno dependencies found
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
k. A.Signed-Releasesno releases found
k. A.Token-PermissionsNo tokens found
0Vulnerabilities18 existing vulnerabilities detected
Direkte Abhängigkeiten 2
RegistryPaketVersionsvorgabeManifest
npm@cursor/sdk1.0.23package.json
npm@modelcontextprotocol/sdk^1.29.0package.json
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

JSON-Rohbericht maschinenlesbar
{
  "data": {
    "repo": {
      "topics": [
        "ai",
        "cursor",
        "cursor-sdk",
        "npm-package",
        "pi",
        "pi-extension",
        "pi-package",
        "provider",
        "typescript"
      ],
      "is_fork": false,
      "size_kb": 2737,
      "has_wiki": true,
      "homepage": null,
      "languages": {
        "C": 12168,
        "Shell": 36507,
        "JavaScript": 459184,
        "PowerShell": 8813,
        "TypeScript": 2419550
      },
      "pushed_at": "2026-07-22T22:54:28Z",
      "created_at": "2026-05-04T21:49:35Z",
      "owner_type": "User",
      "updated_at": "2026-07-22T22:54:33Z",
      "description": "Run Cursor's agent loop inside the pi coding agent via local Cursor SDK agents, with native model selection, thinking controls, fast/plan modes, image input, and MCP-bridged pi tools.",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript",
        "JavaScript"
      ]
    },
    "owner": {
      "blog": "FitchHub.com",
      "name": "Mitch Fultz",
      "type": "User",
      "login": "fitchmultz",
      "company": null,
      "location": null,
      "followers": 52,
      "avatar_url": "https://avatars.githubusercontent.com/u/57411549?v=4",
      "created_at": "2019-11-05T17:48:18Z",
      "is_verified": null,
      "public_repos": 38,
      "account_age_days": 2451
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.1.57",
          "kind": "patch",
          "published_at": "2026-07-11T23:52:10Z"
        },
        {
          "tag": "v0.1.56",
          "kind": "patch",
          "published_at": "2026-07-04T17:39:22Z"
        },
        {
          "tag": "v0.1.55",
          "kind": "patch",
          "published_at": "2026-07-02T21:42:25Z"
        },
        {
          "tag": "v0.1.54",
          "kind": "patch",
          "published_at": "2026-07-02T20:33:54Z"
        },
        {
          "tag": "v0.1.53",
          "kind": "patch",
          "published_at": "2026-06-29T18:12:15Z"
        },
        {
          "tag": "v0.1.52",
          "kind": "patch",
          "published_at": "2026-06-28T14:25:27Z"
        },
        {
          "tag": "v0.1.51",
          "kind": "patch",
          "published_at": "2026-06-25T18:53:02Z"
        },
        {
          "tag": "v0.1.50",
          "kind": "patch",
          "published_at": "2026-06-24T16:36:28Z"
        },
        {
          "tag": "v0.1.49",
          "kind": "patch",
          "published_at": "2026-06-23T21:45:43Z"
        },
        {
          "tag": "v0.1.48",
          "kind": "patch",
          "published_at": "2026-06-22T13:49:17Z"
        },
        {
          "tag": "v0.1.47",
          "kind": "patch",
          "published_at": "2026-06-22T13:42:30Z"
        },
        {
          "tag": "v0.1.46",
          "kind": "patch",
          "published_at": "2026-06-21T19:53:38Z"
        },
        {
          "tag": "v0.1.45",
          "kind": "patch",
          "published_at": "2026-06-18T14:43:08Z"
        },
        {
          "tag": "v0.1.44",
          "kind": "patch",
          "published_at": "2026-06-17T01:24:20Z"
        },
        {
          "tag": "v0.1.43",
          "kind": "patch",
          "published_at": "2026-06-15T17:24:08Z"
        },
        {
          "tag": "v0.1.42",
          "kind": "patch",
          "published_at": "2026-06-10T16:46:50Z"
        },
        {
          "tag": "v0.1.41",
          "kind": "patch",
          "published_at": "2026-06-10T04:09:54Z"
        },
        {
          "tag": "v0.1.40",
          "kind": "patch",
          "published_at": "2026-06-08T17:50:48Z"
        },
        {
          "tag": "v0.1.39",
          "kind": "patch",
          "published_at": "2026-06-08T13:31:46Z"
        },
        {
          "tag": "v0.1.38",
          "kind": "patch",
          "published_at": "2026-06-08T12:07:19Z"
        },
        {
          "tag": "v0.1.37",
          "kind": "patch",
          "published_at": "2026-06-06T17:31:20Z"
        },
        {
          "tag": "v0.1.36",
          "kind": "patch",
          "published_at": "2026-06-05T19:50:40Z"
        },
        {
          "tag": "v0.1.35",
          "kind": "patch",
          "published_at": "2026-06-05T16:42:39Z"
        },
        {
          "tag": "v0.1.33",
          "kind": "patch",
          "published_at": "2026-06-04T17:02:15Z"
        },
        {
          "tag": "v0.1.32",
          "kind": "patch",
          "published_at": "2026-06-02T15:59:22Z"
        },
        {
          "tag": "v0.1.31",
          "kind": "patch",
          "published_at": "2026-06-02T13:20:46Z"
        },
        {
          "tag": "v0.1.30",
          "kind": "patch",
          "published_at": "2026-06-01T20:58:30Z"
        },
        {
          "tag": "v0.1.29",
          "kind": "patch",
          "published_at": "2026-06-01T20:01:50Z"
        },
        {
          "tag": "v0.1.28",
          "kind": "patch",
          "published_at": "2026-05-30T01:29:30Z"
        },
        {
          "tag": "v0.1.27",
          "kind": "patch",
          "published_at": "2026-05-29T20:56:34Z"
        },
        {
          "tag": "v0.1.26",
          "kind": "patch",
          "published_at": "2026-05-29T19:27:27Z"
        },
        {
          "tag": "v0.1.25",
          "kind": "patch",
          "published_at": "2026-05-29T00:08:08Z"
        },
        {
          "tag": "v0.1.24",
          "kind": "patch",
          "published_at": "2026-05-28T23:57:45Z"
        },
        {
          "tag": "v0.1.23",
          "kind": "patch",
          "published_at": "2026-05-28T23:46:50Z"
        },
        {
          "tag": "v0.1.22",
          "kind": "patch",
          "published_at": "2026-05-28T16:52:38Z"
        },
        {
          "tag": "v0.1.21",
          "kind": "patch",
          "published_at": "2026-05-28T16:16:26Z"
        },
        {
          "tag": "v0.1.20",
          "kind": "patch",
          "published_at": "2026-05-26T19:05:51Z"
        },
        {
          "tag": "v0.1.19",
          "kind": "patch",
          "published_at": "2026-05-25T22:57:03Z"
        },
        {
          "tag": "v0.1.18",
          "kind": "patch",
          "published_at": "2026-05-24T04:48:28Z"
        },
        {
          "tag": "v0.1.17",
          "kind": "patch",
          "published_at": "2026-05-24T02:31:39Z"
        },
        {
          "tag": "v0.1.16",
          "kind": "patch",
          "published_at": "2026-05-22T22:24:44Z"
        },
        {
          "tag": "v0.1.15",
          "kind": "patch",
          "published_at": "2026-05-21T19:20:43Z"
        },
        {
          "tag": "v0.1.14",
          "kind": "patch",
          "published_at": "2026-05-18T17:33:25Z"
        },
        {
          "tag": "v0.1.13",
          "kind": "patch",
          "published_at": "2026-05-18T15:17:23Z"
        },
        {
          "tag": "v0.1.12",
          "kind": "patch",
          "published_at": "2026-05-18T14:01:40Z"
        },
        {
          "tag": "v0.1.11",
          "kind": "patch",
          "published_at": "2026-05-18T13:52:33Z"
        },
        {
          "tag": "v0.1.10",
          "kind": "patch",
          "published_at": "2026-05-15T18:23:11Z"
        },
        {
          "tag": "v0.1.9",
          "kind": "patch",
          "published_at": "2026-05-14T23:53:27Z"
        },
        {
          "tag": "v0.1.8",
          "kind": "patch",
          "published_at": "2026-05-14T21:35:28Z"
        },
        {
          "tag": "v0.1.7",
          "kind": "patch",
          "published_at": "2026-05-10T16:26:38Z"
        },
        {
          "tag": "v0.1.6",
          "kind": "patch",
          "published_at": "2026-05-10T15:41:47Z"
        },
        {
          "tag": "v0.1.5",
          "kind": "patch",
          "published_at": "2026-05-09T22:29:33Z"
        },
        {
          "tag": "v0.1.4",
          "kind": "patch",
          "published_at": "2026-05-07T23:59:14Z"
        },
        {
          "tag": "v0.1.3",
          "kind": "patch",
          "published_at": "2026-05-07T23:53:11Z"
        },
        {
          "tag": "v0.1.2",
          "kind": "patch",
          "published_at": "2026-05-07T23:46:55Z"
        },
        {
          "tag": "v0.1.1",
          "kind": "patch",
          "published_at": "2026-05-05T18:11:46Z"
        },
        {
          "tag": "v0.1.0",
          "kind": "minor",
          "published_at": "2026-05-04T21:51:31Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "e047c332d5e278e6f0e1128f10815c439ab96b06",
          "body": "Fix per-session Cursor SDK state roots",
          "is_bot": false,
          "headline": "Merge pull request #190 from fitchmultz/fix/issue-150-session-state-root",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T22:54:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da8d33acd20bb0554d1b6b137935b44c19a147a2",
          "body": null,
          "is_bot": false,
          "headline": "fix: isolate Cursor SDK state per pi session",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T22:53:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bf53548ce3e0277e768a06464a8f1940ba40c009",
          "body": "…-timeout\n\nfix: bound pi bridge CallTool waits",
          "is_bot": false,
          "headline": "Merge pull request #188 from fitchmultz/fix/issue-171-bridge-calltool…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T19:12:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab605cc77c1025f4f17582723fcb728a670d6d9b",
          "body": null,
          "is_bot": false,
          "headline": "fix: harden bridge timeout lifecycle",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T19:12:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a7cff9cbd4c1159af968e98505557fe4b91232ce",
          "body": null,
          "is_bot": false,
          "headline": "fix: bound pi bridge CallTool waits",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:58:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a8c559913ce504d19fed5052c760d11f81485ed",
          "body": "…stion\n\nfix: allow disabling Cursor question prompts",
          "is_bot": false,
          "headline": "Merge pull request #187 from fitchmultz/fix/issue-177-disable-ask-que…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:57:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef4d72ca1ca196801a2711fb2922a650e176f5fa",
          "body": null,
          "is_bot": false,
          "headline": "test: preserve bridge tools when questions are disabled",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:57:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b4b50c8043ce13160066fe8df2034f1fce130ec",
          "body": null,
          "is_bot": false,
          "headline": "fix: allow disabling Cursor question prompts (#177)",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:53:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "752b51ba25231a139581b59a25d7f1155ddb8f51",
          "body": "fix: initialize Cursor SDK bundled ripgrep path (#178)",
          "is_bot": false,
          "headline": "Merge pull request #189 from fitchmultz/fix/issue-178-ripgrep-path",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:53:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ece8602e313dfb78e02d6de7c595e305f349d19e",
          "body": null,
          "is_bot": false,
          "headline": "fix: harden Cursor ripgrep path resolution",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T18:52:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93addb3bc7b55441012192bd1fee04fac6d2c7df",
          "body": "Set CURSOR_RIPGREP_PATH from the installed platform package before local\nagent startup so native Grep/Glob stop failing with \"Ripgrep path not\nconfigured\" when rg is already bundled.",
          "is_bot": false,
          "headline": "fix: initialize Cursor SDK bundled ripgrep path (#178)",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-22T17:04:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50dd6b26ede90d2030ea45f80d1b116d2e57064e",
          "body": "feat: HTTP/1.1/SSE transport toggle for local Cursor SDK agents",
          "is_bot": false,
          "headline": "Merge pull request #176 from ispiroglu/feat/cursor-http1-transport",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T21:57:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2dc8fa29f7518035a02dafe33feb80c0e7f6c8f7",
          "body": "Expose PI_CURSOR_HTTP_1_1, /cursor-http, canonical cursor-sdk.json persistence, session-over-env-over-user precedence, transport-aware local agent pooling, and local-only footer status.\n\nConfigure only explicit SDK values before local agent creation, preserve the default path when unset, and use the SDK null-clear contract for extension-owned state.\n\nCloses #175\n\nCo-authored-by: Cursor <cursoragent@cursor.com>",
          "is_bot": false,
          "headline": "feat: add HTTP/1.1/SSE transport toggle for local Cursor SDK agents",
          "author_name": "evren.ispiroglu",
          "author_login": null,
          "committed_at": "2026-07-20T21:47:55Z",
          "body_truncated": false,
          "is_coding_agent": true
        },
        {
          "oid": "1456f0ee0e2553c5721c011f261088342fdbe8e2",
          "body": "fix: suppress raw Cursor SDK AbortError in process error guard\n\nCloses #174",
          "is_bot": false,
          "headline": "Merge pull request #182 from mvanhorn/fix/suppress-cursor-sdk-aborterror",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T17:39:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df486546f1279f6f3f91e0c14591bda28cf91416",
          "body": "A raw DOMException [AbortError] raised by @cursor/sdk's internal\nAbortController.abort() (on user interrupt or stall-detector\ncancellation) was classified as undefined by classifyCursorConnectError,\nso it fell through the process.emit patch and terminated the pi process.\n\nRecognize it structurally (\n[…]\nrror abort already\nuses, so the raw and wrapped forms of the same abort are handled\nidentically. Unrelated AbortErrors and AbortErrors during a turn that has\nnot declared abort suppression stay fatal.",
          "is_bot": false,
          "headline": "fix: suppress raw Cursor SDK AbortError in process error guard",
          "author_name": "Matt Van Horn",
          "author_login": "mvanhorn",
          "committed_at": "2026-07-20T16:21:35Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "2e3694da3b13a044311560c32a63bab16445e53e",
          "body": "…vidence\n\nComplete cloud smoke evidence roadmap",
          "is_bot": false,
          "headline": "Merge pull request #184 from fitchmultz/chore/p2.6-p2.7-cloud-smoke-e…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T15:34:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f991b4b1a86b488a7b9767939f259fffe6c9efe4",
          "body": null,
          "is_bot": false,
          "headline": "fix: route cloud smoke RPC stdin failures",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T15:19:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81f05e309c0a2a93217aa63e98407f80f1444fae",
          "body": null,
          "is_bot": false,
          "headline": "fix: checkpoint cloud smoke evidence signals",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T13:52:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0dc87c0d44eb6dd53709556471b8ea4b59e460e8",
          "body": null,
          "is_bot": false,
          "headline": "fix: make cloud smoke interruption cleanup fail closed",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T12:15:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d11c541a2d7574996d0679d164ea48385c4e1d46",
          "body": null,
          "is_bot": false,
          "headline": "test: complete cloud smoke evidence roadmap",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-20T02:30:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c7d8c47b4802b79529255f6c0e42f966d3066c0",
          "body": "feat: add opt-in cloud PR controls",
          "is_bot": false,
          "headline": "Merge pull request #183 from fitchmultz/feat/p1.4-cloud-pr-controls",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T22:55:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fee9d52b4e0cd63abec50c65f8f00ed43550b915",
          "body": null,
          "is_bot": false,
          "headline": "feat: add opt-in cloud PR controls",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T22:45:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e15761be667136cd160097d5fc30e15effd03e00",
          "body": "Prove cloud project trust and auth contracts",
          "is_bot": false,
          "headline": "Merge pull request #181 from fitchmultz/flight/p0-2-p1-3-cloud-contracts",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T18:38:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fcbcc175c8143cbdf2eef4a5cbb5fc0f979121a1",
          "body": null,
          "is_bot": false,
          "headline": "Document project-local trust contract",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T18:23:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "02ed31cfeb8df91f56b0d7300656dc8f2549d0ca",
          "body": null,
          "is_bot": false,
          "headline": "Close project trust and config races",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T17:09:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f41c31f1213ac07a8fc973eb62bfc2e558da0303",
          "body": null,
          "is_bot": false,
          "headline": "Close standalone project trust bypass",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T14:08:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "059dac1eed315f6c71ef9dec7cb6f9ae1f4dfbc2",
          "body": null,
          "is_bot": false,
          "headline": "Harden project config trust gating",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T11:56:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5c1207ef72842546b8f3201680b5ab0a82045624",
          "body": null,
          "is_bot": false,
          "headline": "Prove cloud trust and auth contracts",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T09:42:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd283f05f4c9d8e3b6e2f39338670e69398d953b",
          "body": "Validate Cursor Cloud target local state",
          "is_bot": false,
          "headline": "Merge pull request #180 from fitchmultz/fix/cloud-target-local-state",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T06:34:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "745bf921a9bed837be50948427ca7712485ee3a9",
          "body": null,
          "is_bot": false,
          "headline": "fix: validate Cursor Cloud target local state",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-19T06:33:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c6a869f11737cfc45581765e8e3051b768fa765",
          "body": "docs: reconcile Cursor Cloud capability roadmap",
          "is_bot": false,
          "headline": "Merge pull request #179 from fitchmultz/docs/cloud-roadmap-refresh",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-18T21:02:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f266fe07fc249db51033366ca9b994ed6e19cccd",
          "body": null,
          "is_bot": false,
          "headline": "docs: tighten roadmap evidence anchors",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-18T20:56:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d436c60f980d3f8558373cdcb516c53120a2e0ba",
          "body": null,
          "is_bot": false,
          "headline": "docs: align roadmap claims with runtime contracts",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-18T20:46:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3fd8916f81263c92b220870d17eb3afe8753f030",
          "body": null,
          "is_bot": false,
          "headline": "docs: correct roadmap capability details",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-18T20:14:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d5d6aa7d26096179eb7b3e9eb584eb0419eadbc4",
          "body": null,
          "is_bot": false,
          "headline": "docs: reconcile Cursor Cloud capability roadmap",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-18T19:53:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a2d574b77169498f4cc19f060e390e43ae5ccb13",
          "body": null,
          "is_bot": false,
          "headline": "fix: contain local Cursor closed-pipe errors",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-17T19:11:37Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "78324a5647ca0a0f4171cdf5e096b02d83ceb123",
          "body": null,
          "is_bot": false,
          "headline": "release: pi-cursor-sdk 0.1.59",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-16T19:21:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ae64555fe83d9df022096462c50510e2d7843271",
          "body": null,
          "is_bot": false,
          "headline": "chore: release 0.1.58",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-15T14:21:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7045151b60fcff20c75eae7af9e211877cc8b682",
          "body": null,
          "is_bot": false,
          "headline": "feat: support Pi max thinking and settled RPC waits",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-15T00:17:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "922723ac329936df2c57e30b05e7eddb7da458da",
          "body": null,
          "is_bot": false,
          "headline": "release: prepare v0.1.57",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-11T23:51:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5e9a397120b5976b8aa613a454bee7ef51364892",
          "body": "Enable guarded local Cursor SDK resume by default for local runtime while preserving CLI/env/config opt-outs.\\n\\nValidation: npm test; npm run typecheck; npm pack --dry-run; git diff --check; npm run smoke:local-resume:default-dry-run; npm run smoke:platform:all.\\n\\nReview: thermo-nuclear maintainability review signed off with no findings.",
          "is_bot": false,
          "headline": "feat: enable local cursor resume by default",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-09T15:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "20e4bff8f401ccdff89d8c9441220b1a88a92905",
          "body": "…up-proof\n\nfeat: add local resume cleanup proof",
          "is_bot": false,
          "headline": "Merge pull request #169 from fitchmultz/cursor-sdk-local-resume-clean…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-09T02:36:00Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0372c48eab0033179af55ed92d57e6cb581c5fb8",
          "body": null,
          "is_bot": false,
          "headline": "feat: add local resume cleanup proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-09T02:35:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9cdde8bf788e9c345fa31b5a5bb475b60fd5e338",
          "body": "…-matrix\n\nProve local Cursor resume safety matrix",
          "is_bot": false,
          "headline": "Merge pull request #168 from fitchmultz/cursor-sdk-local-resume-proof…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T22:40:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5ec32cea76908a559bdf22e58550a5214d0ca8e4",
          "body": null,
          "is_bot": false,
          "headline": "test: prove local cursor resume safety",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T22:39:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3d0d9004f504a2881d8f5bb9c762a215df9ccbe8",
          "body": "…ion-evidence\n\nAdd local resume decision evidence",
          "is_bot": false,
          "headline": "Merge pull request #167 from fitchmultz/cursor-sdk-local-resume-decis…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T20:26:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0a23bb03d42035514656f3dede0ca1b734b80410",
          "body": null,
          "is_bot": false,
          "headline": "docs: add local resume decision evidence",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T20:26:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1b46a534ea24683a64d67e221ce35e0023aafaf2",
          "body": "…-smoke\n\nAdd local resume abort smoke",
          "is_bot": false,
          "headline": "Merge pull request #166 from fitchmultz/cursor-sdk-local-resume-abort…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T19:28:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e7eca8773ad2c3581d4f4f4f95b5c7b4700de8a",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add local resume abort proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T19:27:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d0b67b33c5e0524d71ecc57952ede3641ac5af93",
          "body": "…surface-smoke\n\nAdd local resume tool-surface smoke",
          "is_bot": false,
          "headline": "Merge pull request #165 from fitchmultz/cursor-sdk-local-resume-tool-…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T19:13:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c0d2c47f72117ff262f51390ed0909fc770c7afb",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add local resume tool-surface proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T19:13:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3c172966183f8fd509d1bca64e3882dab01fb21",
          "body": "…y-smoke\n\nAdd local resume safety smoke",
          "is_bot": false,
          "headline": "Merge pull request #164 from fitchmultz/cursor-sdk-local-resume-safet…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T16:50:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "551880d1e4a7db566db711a593cf62b690270e50",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add local resume safety proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T16:50:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d19933d44661e7fb041d10595dc541ebd556458",
          "body": "…ume-suite\n\nAdd local resume proof to platform smoke matrix",
          "is_bot": false,
          "headline": "Merge pull request #163 from fitchmultz/cursor-sdk-platform-local-res…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T16:24:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bae16d1f92248593ba7ea61699a5deb663ee16a4",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add local resume to platform matrix",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T16:24:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7afe2cb89fc7e6ae2cc13fbf71066279817b8b7b",
          "body": "Add focused local resume restart smoke",
          "is_bot": false,
          "headline": "Merge pull request #162 from fitchmultz/cursor-sdk-local-resume-smoke",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:57:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3c540914d8fbf2536c2b248b6a6dd8f11181277a",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add local resume restart proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:57:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0b52cafa5386852770eec53ab45c7681d218ab2",
          "body": "…odel-rule\n\nAllow slow Cursor model for runtime evidence",
          "is_bot": false,
          "headline": "Merge pull request #161 from fitchmultz/cursor-sdk-runtime-evidence-m…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:39:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c600eb7cfc04acedc1091849f9a2a391a9262f04",
          "body": null,
          "is_bot": false,
          "headline": "docs: allow slow model for runtime evidence",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:38:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2a60cd4ddc113efe12b3b4844bfae46ae0f36328",
          "body": "…-fix\n\nClarify cloud context smoke scope",
          "is_bot": false,
          "headline": "Merge pull request #160 from fitchmultz/cursor-sdk-cloud-context-docs…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:28:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6a6c12f95957080012d20e153fcef1f7ae6a124e",
          "body": null,
          "is_bot": false,
          "headline": "docs: clarify cloud context smoke scope",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:28:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d17715c969f1cd7a6121ba5de2a9d52396c7c4a5",
          "body": "Add cloud context handoff smoke",
          "is_bot": false,
          "headline": "Merge pull request #159 from fitchmultz/cursor-sdk-cloud-context-smoke",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:23:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fe4d5a11dabbde4dd49c7db59433b93ea25655da",
          "body": null,
          "is_bot": false,
          "headline": "smoke: add cloud context handoff proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T14:19:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "84f3b10e2fc26bea5aea482e80f72e75556358df",
          "body": "…e-proof\n\nVerify cloud smoke archive cleanup",
          "is_bot": false,
          "headline": "Merge pull request #158 from fitchmultz/cursor-sdk-cloud-smoke-archiv…",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:26:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f18c8a24c1a84f1ab545eda0b95a4f3e92de9447",
          "body": null,
          "is_bot": false,
          "headline": "smoke: verify cloud archive cleanup",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:24:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a04168f0fcc52cb30cc74a59e7c953ea3ffcaf26",
          "body": "Use relative path in compaction evidence report",
          "is_bot": false,
          "headline": "Merge pull request #157 from fitchmultz/cursor-sdk-evidence-path-cleanup",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:18:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b95facdacee27a189dadf3ebab00eca6876212aa",
          "body": null,
          "is_bot": false,
          "headline": "docs: use relative compaction artifact path",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:17:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d624bd0dad8cdf708d4f51d7d8cc3d70ff91015d",
          "body": "Record Cursor compaction boundary evidence",
          "is_bot": false,
          "headline": "Merge pull request #156 from fitchmultz/cursor-sdk-compaction-evidence",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:14:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f5e9ae9ee12b7769baf3321ee095a5eebf9f8245",
          "body": null,
          "is_bot": false,
          "headline": "docs: add compaction evidence report excerpt",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:11:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3ec2dd5f66e7f0ed2728fd5547490f06dad3deef",
          "body": null,
          "is_bot": false,
          "headline": "docs: record compaction boundary evidence",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T13:04:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50dbe323aa3a3219b84aa73b1d6eb0c13579d2bc",
          "body": null,
          "is_bot": false,
          "headline": "docs: add session and cloud probe guidance",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-08T04:07:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "77e23133948eccdf5a94f3f9c5a375ef46ddd6bc",
          "body": "Add Cursor cloud lifecycle commands",
          "is_bot": false,
          "headline": "Merge pull request #155 from fitchmultz/cursor-sdk-roadmap-next-flight",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T21:10:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eab5b010154f1486e36fe2623caa9c279397ff0a",
          "body": null,
          "is_bot": false,
          "headline": "Add Cursor cloud lifecycle commands",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T21:09:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e79bb42bba6de313a01e530f3ca6629d257b96eb",
          "body": "Add guarded local Cursor agent resume",
          "is_bot": false,
          "headline": "Merge pull request #154 from fitchmultz/cursor-sdk-branch-resume",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T19:31:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9c53052995f277915dd7bff572d6846c407aaddb",
          "body": null,
          "is_bot": false,
          "headline": "Add guarded local Cursor agent resume",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T19:26:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e2311ae3da7ce21d503341d9b9b19c4500aea921",
          "body": "Add Cursor cloud post-run reporting",
          "is_bot": false,
          "headline": "Merge pull request #153 from fitchmultz/cursor-sdk-cloud-reporting",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T17:52:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7917172828ea4f474c6788dd8c8465d0cd5addc7",
          "body": null,
          "is_bot": false,
          "headline": "Add Cursor cloud post-run reporting",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T17:46:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99e373aaa6a861351d498fdbc06423cceeacdf4f",
          "body": null,
          "is_bot": false,
          "headline": "Resolve Cursor SDK roadmap evidence statuses",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T14:33:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6184ecc527971562695dfedb297dc95fde111892",
          "body": null,
          "is_bot": false,
          "headline": "Resolve Cursor SDK roadmap evidence statuses",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T14:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9ff7a6ee90f5cddcb7391a35dedc4b53eb5d335a",
          "body": "Add Cursor cloud environment selection",
          "is_bot": false,
          "headline": "Merge pull request #151 from fitchmultz/cursor-sdk-cloud-env-selection",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T12:08:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f9b861e124865fb8e3734a6cb10bdf5ce278029a",
          "body": null,
          "is_bot": false,
          "headline": "Add Cursor cloud environment selection",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T11:54:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "44e68412c434e6d7c179f28a22c7a44b607fee6b",
          "body": "Name Cursor cloud agents from pi sessions",
          "is_bot": false,
          "headline": "Merge pull request #149 from fitchmultz/cursor-sdk-cloud-agent-names",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T04:09:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cdc0cdf564ad03df8681052328d3420d317c4ace",
          "body": null,
          "is_bot": false,
          "headline": "Name Cursor cloud agents from pi sessions",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-07T04:06:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "625d7598ce7a93ed4cda15c4179e78ca144d58ce",
          "body": "Show Cursor runtime in status footer",
          "is_bot": false,
          "headline": "Merge pull request #148 from fitchmultz/cursor-sdk-runtime-status-ux",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T23:12:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1bfb495873b0127f43945466351393f5e9b79e55",
          "body": null,
          "is_bot": false,
          "headline": "Show Cursor runtime in status footer",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T23:09:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "52d2a7879110f660f1622c9250720987216ef327",
          "body": "Add minimal Cursor cloud runtime",
          "is_bot": false,
          "headline": "Merge pull request #147 from fitchmultz/cursor-sdk-minimal-cloud-runtime",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T21:36:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "249450e1064beccb70666a038c6cde73598d5d17",
          "body": null,
          "is_bot": false,
          "headline": "Add minimal Cursor cloud runtime",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T21:28:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f652840b5600458551a8f8292bade5c5d78e4a40",
          "body": "Align Cursor cloud scaffold with runtime policy",
          "is_bot": false,
          "headline": "Merge pull request #146 from fitchmultz/cursor-sdk-cloud-policy-align",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T15:54:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "80a09141419139208811901ef27135ac62e1ae61",
          "body": null,
          "is_bot": false,
          "headline": "Align cloud scaffold with runtime policy",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T15:42:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "afadcfeb718a3c261cfcee76d3b1a0187dcd1881",
          "body": "Record Cursor cloud runtime decisions",
          "is_bot": false,
          "headline": "Merge pull request #145 from fitchmultz/cursor-sdk-cloud-decisions",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T14:41:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b1e2c7ccae5307c0ffacda69b3daad9802af9005",
          "body": null,
          "is_bot": false,
          "headline": "Record Cursor cloud runtime decisions",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T14:31:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0546cbe48c04a0eb9bf0c3194ab5ec47a642e09",
          "body": "Refresh Cursor cloud proof roadmap",
          "is_bot": false,
          "headline": "Merge pull request #144 from fitchmultz/cursor-sdk-cloud-proof",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T13:56:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34273d3c1b68fbab20ede745070fd797677eae9d",
          "body": null,
          "is_bot": false,
          "headline": "Refresh Cursor cloud proof roadmap",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T13:47:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9583d84c5b7ec00a0de87bbc7c31691519839519",
          "body": "Document Cursor cloud model availability blocker",
          "is_bot": false,
          "headline": "Merge pull request #142 from fitchmultz/cursor-sdk-cloud-model-blocker",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:59:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a1ef22cff3d53d5493d7a5780f4fdadba07c8fb",
          "body": null,
          "is_bot": false,
          "headline": "Document Cursor cloud model availability blocker",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:54:54Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "090dabe6175f29665ef95d8adaac77fef660c750",
          "body": "Show cloud runtime fast status as unavailable",
          "is_bot": false,
          "headline": "Merge pull request #141 from fitchmultz/cursor-sdk-cloud-status",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:52:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8210d5502a1fce1ec10e74e250f2da7baf658033",
          "body": null,
          "is_bot": false,
          "headline": "Show cloud runtime fast status as unavailable",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:48:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0944ee9b1fbac38f76491bd5cd90cbd5e2a5be0",
          "body": "Add Cursor cloud acknowledgement scaffold",
          "is_bot": false,
          "headline": "Merge pull request #140 from fitchmultz/cursor-sdk-cloud-ack",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:37:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f37486af35896650c1e07f6b76830156eb256366",
          "body": null,
          "is_bot": false,
          "headline": "Add Cursor cloud acknowledgement scaffold",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:32:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d82af014364538a4d0cc17e4bf09515373568384",
          "body": "Add Cursor cloud preflight planner",
          "is_bot": false,
          "headline": "Merge pull request #139 from fitchmultz/cursor-sdk-cloud-preflight",
          "author_name": "Mitch Fultz",
          "author_login": "fitchmultz",
          "committed_at": "2026-07-06T04:10:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 57,
      "commits_last_year": 413,
      "latest_release_at": "2026-07-11T23:52:10Z",
      "latest_release_tag": "v0.1.57",
      "releases_from_tags": false,
      "days_since_last_push": 0,
      "active_weeks_last_year": 12,
      "days_since_latest_release": 11,
      "mean_days_between_releases": 2.2
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": false,
      "health_percentage": 42,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "pi-cursor-sdk",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "pi-package",
            "pi",
            "pi-extension",
            "cursor",
            "cursor-sdk",
            "ai",
            "extension"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/pi-cursor-sdk",
          "is_deprecated": false,
          "latest_version": "0.1.60",
          "repository_url": "https://github.com/fitchmultz/pi-cursor-sdk",
          "versions_count": 62,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 9594,
          "first_published_at": "2026-05-04T17:12:27.852000Z",
          "latest_published_at": "2026-07-17T19:13:30.905000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 23,
      "stars": 243,
      "watchers": 0,
      "fork_history": {
        "days": [
          {
            "date": "2026-05-24",
            "count": 1
          },
          {
            "date": "2026-05-27",
            "count": 1
          },
          {
            "date": "2026-05-28",
            "count": 2
          },
          {
            "date": "2026-05-29",
            "count": 1
          },
          {
            "date": "2026-05-31",
            "count": 1
          },
          {
            "date": "2026-06-08",
            "count": 1
          },
          {
            "date": "2026-06-11",
            "count": 2
          },
          {
            "date": "2026-06-13",
            "count": 1
          },
          {
            "date": "2026-06-17",
            "count": 1
          },
          {
            "date": "2026-06-23",
            "count": 1
          },
          {
            "date": "2026-06-30",
            "count": 1
          },
          {
            "date": "2026-07-04",
            "count": 1
          },
          {
            "date": "2026-07-07",
            "count": 1
          },
          {
            "date": "2026-07-10",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          },
          {
            "date": "2026-07-13",
            "count": 1
          },
          {
            "date": "2026-07-14",
            "count": 1
          },
          {
            "date": "2026-07-17",
            "count": 1
          },
          {
            "date": "2026-07-19",
            "count": 1
          },
          {
            "date": "2026-07-22",
            "count": 2
          }
        ],
        "complete": true,
        "collected": 23,
        "total_forks": 23
      },
      "star_history": null,
      "open_issues_and_prs": 3
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": true,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "test/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 92789,
      "source_files_sampled": 301,
      "oversized_source_files": 1,
      "agent_instruction_files": [
        "AGENTS.md"
      ],
      "agent_instruction_max_bytes": 28417
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": null,
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@cursor/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "1.0.23"
        },
        {
          "name": "@modelcontextprotocol/sdk",
          "manifest": "package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.29.0"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 1,
        "merged_prs": 105,
        "open_issues": 2,
        "closed_ratio": 0.973,
        "closed_issues": 72,
        "closed_unmerged_prs": 10
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "fitchmultz",
          "commits": 409,
          "avatar_url": "https://avatars.githubusercontent.com/u/57411549?v=4"
        },
        {
          "type": "User",
          "login": "dataforxyz",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/7756504?v=4"
        },
        {
          "type": "User",
          "login": "cursoragent",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/199161495?v=4"
        },
        {
          "type": "User",
          "login": "mvanhorn",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/455140?v=4"
        }
      ],
      "contributors_sampled": 4,
      "top_contributor_share": 0.993
    },
    "quality_signals": {
      "has_ci": false,
      "has_tests": true,
      "ci_workflows": [],
      "has_docs_dir": true,
      "linter_configs": [],
      "has_editorconfig": false,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "package-lock.json"
      ],
      "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": 3,
            "reason": "branch protection is not maximal on development and all release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 0,
            "reason": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
            "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": 2,
            "reason": "Found 2/10 approved changesets -- score normalized to 2",
            "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": null,
            "reason": "no workflows found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 0,
            "reason": "no update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 0,
            "reason": "project was created within the last 90 days. Please review its contents carefully",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": null,
            "reason": "no dependencies found",
            "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": null,
            "reason": "No tokens found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 0,
            "reason": "18 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "e047c332d5e278e6f0e1128f10815c439ab96b06",
        "ran_at": "2026-07-23T01:33:01Z",
        "aggregate_score": 2,
        "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-22T22:54:28Z",
      "oldest_open_prs": [
        {
          "number": 186,
          "created_at": "2026-07-22T12:42:34Z",
          "last_comment_at": "2026-07-22T17:08:14Z",
          "last_comment_author": "kipyin"
        }
      ],
      "last_merged_pr_at": "2026-07-22T22:54:27Z",
      "ci_last_conclusion": null,
      "oldest_open_issues": [
        {
          "number": 143,
          "created_at": "2026-07-06T11:15:15Z",
          "last_comment_at": "2026-07-22T16:37:12Z",
          "last_comment_author": "fitchmultz"
        },
        {
          "number": 173,
          "created_at": "2026-07-14T07:56:09Z",
          "last_comment_at": "2026-07-22T16:37:13Z",
          "last_comment_author": "fitchmultz"
        }
      ]
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/fitchmultz/pi-cursor-sdk",
    "host": "github.com",
    "name": "pi-cursor-sdk",
    "owner": "fitchmultz"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 20,
        "vitality": 77,
        "community": 54,
        "governance": 60,
        "engineering": 48
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 77,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "moderate",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "commits_last_year": 413,
              "human_commit_share": 1,
              "days_since_last_push": 0,
              "active_weeks_last_year": 12
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 0 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 0
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "12/52 weeks with commits",
                "points": 8.3,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 12
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "413 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 413
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "name": "Release discipline",
            "note": "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": 57,
              "latest_release_tag": "v0.1.57",
              "releases_from_tags": false,
              "days_since_latest_release": 11,
              "mean_days_between_releases": 2.2
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "57 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 57
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 11 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 11
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~2.2 days",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 2.2
                    }
                  }
                ],
                "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": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "moderate",
        "name": "Community & Adoption",
        "value": 54,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "moderate",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "forks": 23,
              "stars": 243,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "243 stars",
                "points": 38.7,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 243
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "23 forks",
                "points": 11.2,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 23
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "moderate",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": false,
              "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "packages": [
                "pi-cursor-sdk"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 9594
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "9,594 downloads/month across npm",
                "points": 53.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 9594,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 60,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "critical",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 4,
              "top_contributor_share": 0.993
            },
            "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 99% of commits",
                "points": 0.2,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 99
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "4 contributors",
                "points": 5.4,
                "status": "partial",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "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": 83,
            "inputs": {
              "merged_prs": 105,
              "open_issues": 2,
              "closed_issues": 72,
              "issue_closed_ratio": 0.973,
              "closed_unmerged_prs": 10
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "97% of issues closed",
                "points": 45.5,
                "status": "partial",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 97
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "105/115 decided PRs merged",
                "points": 34.9,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 105,
                      "decided": 115
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 2/10 approved changesets -- score normalized to 2",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "verified_domain"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 58,
            "inputs": {
              "followers": 52,
              "owner_type": "User",
              "is_verified": null,
              "owner_login": "fitchmultz",
              "public_repos": 38,
              "account_age_days": 2451
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "personal (user) account",
                "points": 10,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_personal",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": "not applicable to user accounts",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_applicable_to_user_accounts",
                    "params": {}
                  }
                ],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "52 followers of fitchmultz",
                "points": 12.4,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 52,
                      "login": "fitchmultz"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "38 public repos, account ~6 yr old",
                "points": 23.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 38
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 6
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "pi-cursor-sdk"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "62 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 62
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "at_risk",
        "name": "Engineering Quality",
        "value": 48,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "critical",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 24,
            "inputs": {
              "has_ci": false,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "excellent",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "topics": [
                "ai",
                "cursor",
                "cursor-sdk",
                "npm-package",
                "pi",
                "pi-extension",
                "pi-package",
                "provider",
                "typescript"
              ],
              "has_wiki": true,
              "homepage": null,
              "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": null,
                "points": 0,
                "status": "missed",
                "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": "9 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "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): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "dangerous_workflow",
                    "packaging",
                    "pinned_dependencies",
                    "signed_releases",
                    "token_permissions"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 20,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 13,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 5,
              "scorecard_aggregate": 2
            },
            "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 is not maximal on development and all release branches",
                "points": 2.2,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "0 out of 10 merged PRs checked by a CI test -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "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 2/10 approved changesets -- score normalized to 2",
                "points": 1.5,
                "status": "partial",
                "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 workflows found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "no update tool detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "project was created within the last 90 days. Please review its contents carefully",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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": "No tokens found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "18 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "moderate",
        "name": "AI Readiness",
        "value": 64,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.8,
              "agent_instruction_files": [
                "AGENTS.md"
              ],
              "agent_instruction_max_bytes": 28417
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "80 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 80,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_pinned_dependencies"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 50,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "package-lock.json"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [
                "test/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.01,
              "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": "test/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "test/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "1 of the last 100 commits agent-authored or agent-credited",
                "points": 2,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 1,
                      "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": "no dependencies found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 92789,
              "source_files_sampled": 301,
              "oversized_source_files": 1
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "1/301 source files over 60KB",
                "points": 54.8,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 301,
                      "oversized": 1
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "critical",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 20,
            "inputs": {
              "example_dirs": [],
              "has_mcp_signal": true,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 20,
                "status": "met",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
    "deps.dev does not index npm:pi-cursor-sdk@0.1.60; advisories assessed against the repository dependency graph instead"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-23T01:33:16.843669Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/fitchmultz/pi-cursor-sdk.svg",
  "full_name": "fitchmultz/pi-cursor-sdk",
  "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.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.