{"adoption": {"forks": 157, "observed_at": "2026-08-28T04:03:43.586404+00:00", "stars": 1135}, "canonical_url": "https://ross.abutalabs.com/products/gentleman-guardian-angel", "card": {"archived": false, "artifact_type": "cli-tool", "description": "😇 Gentleman Guardian Angel (gga) - Provider-agnostic code review using AI. Use Claude, Gemini, Codex, Ollama to enforce your coding standards.", "domain": ["developer-tools", "version-control", "large-language-models"], "enriched": true, "function": ["code-review", "developer-tools", "llm-inference", "ci-cd"], "health_score": 95, "homepage": null, "language": "Shell", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["Gentleman-Programming/gentleman-guardian-angel"], "name": "Gentleman-Programming/gentleman-guardian-angel", "platform": ["windows", "cli"], "pushed_at": "2026-07-08T08:13:58+00:00", "repo": "Gentleman-Programming/gentleman-guardian-angel", "stars": 1135, "tags": ["git-hooks", "pre-commit", "ai-code-review", "bash", "provider-agnostic", "coding-standards", "automation", "macos", "linux"], "topics": [], "urls": [], "use_cases": ["enforce coding standards on every commit with AI", "run AI code review as a git pre-commit hook", "review pull requests with an LLM before merge", "use local models like Ollama for code review", "block commits that violate AGENTS.md rules", "add AI review to CI without vendor lock-in"], "what_it_is": "Gentleman Guardian Angel (gga) is a pure-Bash CLI tool that runs AI-powered code reviews on staged files via a git pre-commit hook, using any LLM provider such as Claude, Gemini, Codex, or Ollama. It enforces team coding standards defined in AGENTS.md and also supports full PR review mode.", "when_to_avoid": ["you need deep IDE-integrated review with rich diff UIs", "you require language-specific static analysis rather than LLM-based review", "your environment cannot run Bash 5.0+ or lacks access to any LLM provider"], "when_to_choose": ["you want provider-agnostic AI code review with no runtime dependency beyond Bash", "your team needs automated enforcement of coding standards at commit time", "you prefer local models (Ollama, LM Studio) for reviewing proprietary code"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/gentleman-guardian-angel", "repo": "Gentleman-Programming/gentleman-guardian-angel", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "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:43.586404+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:43.586404+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:36:34.597292+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a68304bbccced048d2641e96659bfb0575aa9511235ef6a684c579ddf7b4ef59", "fetched_at": "2026-08-28T04:03:43.586404+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Gentleman-Programming/gentleman-guardian-angel"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 91, "longevity": 18, "rhythm": 92}, "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": 264, "days_push": 56, "days_rel": 56, "gap_med": 2.0, "n_releases_24m": 19}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}