{"adoption": {"forks": 30, "observed_at": "2026-08-28T04:06:05.545653+00:00", "stars": 2017}, "canonical_url": "https://ross.abutalabs.com/products/gh-signoff", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Local CI. Sign off on your own work.", "domain": ["developer-tools", "version-control", "testing"], "enriched": true, "function": ["ci-cd", "developer-tools", "version-control"], "health_score": 99, "homepage": null, "language": "Shell", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["basecamp/gh-signoff"], "name": "basecamp/gh-signoff", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-22T08:16:55+00:00", "repo": "basecamp/gh-signoff", "stars": 2017, "tags": ["gh-extension", "github-cli", "local-ci", "commit-status", "continuous-integration", "git", "pull-requests", "shell", "devops", "macos", "linux"], "topics": ["gh-extension"], "urls": [], "use_cases": ["run CI locally without paying for cloud CI runners", "set a green commit status on a GitHub PR without a CI server", "sign off on a pull request after my tests pass locally", "replace GitHub Actions for a small side project", "mark commits as verified from my own machine", "point a PR status check's Details link at a local run or dashboard"], "what_it_is": "A GitHub CLI extension (written in Shell) that brings CI in-house: you run your test suite on your own machine and then run `gh signoff` to post a green commit status on your pull request. It targets the trade-off where cloud CI runners are slow, expensive, and overkill for apps that just need a passing status check.", "when_to_avoid": ["You need repeatable builds, parallelized execution, or comprehensive cross-environment test matrices", "You require enforced, tamper-proof verification on a shared remote runner rather than trusting developers", "Your workflow depends on merge queues, deployment pipelines, or CI gating merges", "You can't rely on team members actually running the test suite before signing off"], "when_to_choose": ["You work on a small app or solo project where high-ceremony CI is overkill", "You want a green GitHub commit status without renting cloud CI", "Your team already has solid test/push/deploy discipline and fast dev machines", "You want checks to run on your own underutilized hardware for speed and zero cost"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gh-signoff", "repo": "basecamp/gh-signoff", "role": "main", "score": 89}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.545653+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:00:38.428665+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14a4bf52de3ed4aba85b0d24100355ed904833b4fd5b6d9c5c4c64bf59dd7250", "fetched_at": "2026-08-28T04:06:05.545653+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/gh-signoff"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 47, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 661, "days_push": 11, "days_rel": 11, "gap_med": 0, "n_releases_24m": 2}, "score": 89, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}