{"adoption": {"forks": 54, "observed_at": "2026-08-28T04:03:13.107593+00:00", "stars": 1011}, "canonical_url": "https://ross.abutalabs.com/products/nightshift", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Nightshift uses your leftover Claude / Codex budget to surprise you with useful PRs. Love them or leave them.", "domain": ["developer-tools", "version-control", "artificial-intelligence"], "enriched": true, "function": ["developer-tools", "workflow-automation", "scheduling", "code-review", "llm-inference", "agent-framework"], "health_score": 94, "homepage": null, "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["marcus/nightshift"], "name": "marcus/nightshift", "platform": ["cli", "go"], "pushed_at": "2026-07-31T18:05:49+00:00", "repo": "marcus/nightshift", "stars": 1011, "tags": ["claude-code", "codex", "overnight-automation", "pr-generation", "budget-aware", "code-maintenance", "automation", "macos", "linux"], "topics": [], "urls": [], "use_cases": ["use leftover claude codex tokens to auto-fix my repo overnight", "automatically open PRs for dead code and doc drift", "find test gaps and security issues while I sleep", "schedule AI coding agent tasks within a token budget", "run automated code maintenance tasks across multiple repos", "generate lint fixes and PRs from remaining LLM budget"], "what_it_is": "Nightshift is a Go CLI tool that runs overnight, using your leftover Claude or Codex token budget to automatically find issues like dead code, doc drift, test gaps, and security problems in your repos. It submits its findings as branches or pull requests that you can merge or close, never writing directly to your primary branch.", "when_to_avoid": ["you don't use Claude or Codex coding agents", "you require human review before any code changes are even drafted", "your codebase is private/sensitive and you're uncomfortable with agent-generated changes", "you need guaranteed correct fixes rather than suggestions to review or close"], "when_to_choose": ["you have unused daily Claude or Codex token allotments you want to spend on codebase upkeep", "you want low-risk automated maintenance since everything lands as a closable PR", "you manage multiple repos that accumulate silent debt like dead code and doc drift", "you want a CLI with budget controls, previews, and dry-run support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nightshift", "repo": "marcus/nightshift", "role": "main", "score": 71}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "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:03:13.107593+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:13.107593+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:11:51.368997+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "18b7c77a73c5e071f991ff8d40757a3ed1c2a147ff359c4a1653c23417da69f8", "fetched_at": "2026-08-28T04:03:13.107593+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcus/nightshift"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 14, "rhythm": 72}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 209, "days_push": 33, "days_rel": 186, "gap_med": 1, "n_releases_24m": 8}, "score": 71, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}