原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"cli",
"git",
"git-log",
"go",
"golang",
"repository-scanner",
"trailers"
],
"is_fork": false,
"size_kb": 768,
"has_wiki": true,
"homepage": "https://grokify.github.io/gogit/",
"languages": {
"Go": 68702
},
"pushed_at": "2026-07-20T18:44:16Z",
"created_at": "2026-01-17T15:41:42Z",
"owner_type": "User",
"updated_at": "2026-07-18T16:20:12Z",
"description": "Generic, dependency-light Git ergonomics for Go: repository discovery, commit-log parsing with Co-authored-by trailers and change stats, plus the gitscan CLI",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": "https://plexusone.dev",
"name": "John Wang",
"type": "User",
"login": "grokify",
"company": null,
"location": "California",
"followers": 158,
"avatar_url": "https://avatars.githubusercontent.com/u/209872?v=4",
"created_at": "2010-02-24T11:52:51Z",
"is_verified": null,
"public_repos": 417,
"account_age_days": 5994
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.5.0",
"kind": "minor",
"published_at": "2026-07-18T16:23:38Z"
},
{
"tag": "v0.4.0",
"kind": "minor",
"published_at": "2026-02-21T15:18:20Z"
},
{
"tag": "v0.3.0",
"kind": "minor",
"published_at": "2026-02-14T15:14:23Z"
},
{
"tag": "v0.2.0",
"kind": "minor",
"published_at": "2026-02-14T13:51:35Z"
},
{
"tag": "v0.1.0",
"kind": "minor",
"published_at": "2026-01-18T08:18:34Z"
}
],
"recent_commits": [
{
"oid": "e155136cabf5b441298147ea9fb5d03f295d21ff",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: correct roadmap overview; ignore built site and .envrc",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:18:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ad57f8651d9a0cfc20f3c14dfa669bcd8bac5327",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update roadmap for the gogit library era",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:15:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a4c9e9cc8b88a83a0fcb206d552c46564f318a8a",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: extend v0.5.0 changelog and release notes with refactors",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:08:02Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c9a012c1a933c305c1b5347f4482fb9742524b7e",
"body": "Fixture repositories covering uncommitted-change detection, module/\ndirectory mismatch, replace-directive counting, and CLI backend status\nsemantics (no upstream counts as unpushed).\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(scanner): add characterization tests",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:07:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "39877947f67d192fced2a6ff13505b81ffee0b1c",
"body": "…rary\n\nThe git CLI backend becomes the only backend: IsRepo delegates to\ngogit.IsRepo (now also recognizing worktree gitfiles), status execution\ngets the same locale/prompt hardening as the root library, and the\ngo-git/v5 dependency tree is removed from the module.\n\nBREAKING CHANGE: the --go-git flag is removed from all gitscan\nsubcommands and scanner.GoGitBackend no longer exists.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(scanner)!: drop the go-git backend and build on the root lib…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:07:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f0273a5afe9da00661ad070073a3551007735730",
"body": "Each record now begins with the record separator and ends its field list\nwith a terminating field separator, so multi-line trailers and numstat\nblocks are unambiguously delimited and stat attribution to the previous\ncommit no longer requires lookahead parsing.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(log): delimit records with a leading sentinel",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:07:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2b320c27e81239bfbd2ba8fa81a06a2e5cbc85f9",
"body": "Error-condition detection (missing remote, empty repository) matches\ngit's English messages; LC_ALL=C makes that locale-independent, and\nGIT_TERMINAL_PROMPT=0 ensures no invocation can hang on a prompt.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: pin git execution to C locale and disable credential prompts",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T16:07:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5f040a6f7a0a0386546994271cdbfa9e20dfd51d",
"body": null,
"is_bot": false,
"headline": "docs: `README.md`: update shields",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:50:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bf1173246eb32a4189d094fda27283cb5459d98",
"body": "Material-themed site (grokify.github.io/gogit) with a library/CLI\noverview page and the release-notes archive in the nav.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add MkDocs site scaffolding",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:40:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4d175815510a8f6d0e5faa0c560bcfa365b90b4f",
"body": "CHANGELOG.json gains the v0.5.0 release with commit references\n(rename/breaking, core library, workflow compliance, dependencies);\nCHANGELOG.md regenerated with schangelog. Release notes include the\ngitscan-to-gogit migration guide.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add v0.5.0 changelog entry and release notes",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:40:32Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2485217599028dad37505f6a7713b8abc3fe418f",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update README for the gogit library rename",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:24:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "816e6b9f75cff1c7d7296cf0d08bf175befb4e19",
"body": "Fixture repositories built in t.TempDir with isolated git config (no\ninherited signing, hooks, or templates), covering discovery depth\nlimits, metadata, trailer and co-author parsing, numstat, date filters,\nempty repos, and remote-URL normalization.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: add core library tests",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:23:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2e3097e011ea729f399d84ab906f80fb49867a8d",
"body": "Stdlib-only ergonomics over the git CLI: depth-bounded repository\ndiscovery, commit-log parsing with calendar-date filtering, trailer\nextraction (Co-authored-by parsing) and numstat change stats, current\nbranch, origin URL with normalization to host/path identifiers, and tag\nlisting with creation dates.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add core git library",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:23:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "744e28f77e713e25b80c670de921e69328e6ee29",
"body": "The repository becomes the generic Git base library\ngithub.com/grokify/gogit (analogous to gogithub for GitHub); the gitscan\nCLI is preserved unchanged at cmd/gitscan. Also refreshes dependencies\n(go-git v5.19.1, yaml.v3 for workflow checking).\n\nBREAKING CHANGE: module path changes from github.com/grokify/gitscan to\ngithub.com/grokify/gogit; the root package is now the gogit library and\nthe CLI entrypoint moved to cmd/gitscan.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor!: rename module from gitscan to gogit",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:23:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "756baafa0a7460352d3a57a04d7b9802391689b1",
"body": "Scan repositories for GitHub workflow compliance against a reference\nrepo (default plexusone/.github): presence, reusable-workflow usage, and\nfile inventory, surfaced via --check-workflows and --ref-repo flags.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(scanner): add workflow compliance checking",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:23:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b4ab1771c0a166b5449ca0813089dd6466ce622",
"body": "Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: pin release workflow actions to v6",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:23:41Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7b22bd87e8f3ac20c39cfd87fe0a829784ff1e2a",
"body": "…/setup-go-7\n\nchore(deps): bump actions/setup-go from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #18 from grokify/dependabot/github_actions/actions…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-07-18T15:01:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6d2a53255c8b8fd508698e21dcfd510f422ac76",
"body": "Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-go/releases)\n- [Commits](https://github.com/actions/setup-go/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-go\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump actions/setup-go from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-07-16T18:43:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "799483b793013420ac59aa1a874a08dda6e0b245",
"body": "…grokify/mogo-0.74.6\n\nchore(deps): bump github.com/grokify/mogo from 0.74.0 to 0.74.6",
"is_bot": false,
"headline": "Merge pull request #16 from grokify/dependabot/go_modules/github.com/…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-06-21T07:07:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bbdab4cf0e8fa146f92afe69f00d10f92f509d9",
"body": "…/checkout-7\n\nchore(deps): bump actions/checkout from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #17 from grokify/dependabot/github_actions/actions…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-06-21T07:07:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6384f1fe6c2063f5019d6e902b015d9a7dfd2d98",
"body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\n:\n- dependency-name: actions/checkout\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump actions/checkout from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-18T18:43:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e86e2505c286e7a25c552c4bba94b5e45de2f34c",
"body": "Bumps [github.com/grokify/mogo](https://github.com/grokify/mogo) from 0.74.0 to 0.74.6.\n- [Release notes](https://github.com/grokify/mogo/releases)\n- [Changelog](https://github.com/grokify/mogo/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/grokify/mogo/compare/v0.74.0...v0.74.6)\n\n---\nupdate\n[…]\nency-name: github.com/grokify/mogo\n dependency-version: 0.74.6\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/grokify/mogo from 0.74.0 to 0.74.6",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-08T18:45:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9521180d852c44f4c37c0357fa8428cd215d4ad3",
"body": null,
"is_bot": false,
"headline": "chore(ci): `workflows`: update to shared files",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-05-09T09:34:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4d27658371b795f831fc418e4b322343ce5cec42",
"body": null,
"is_bot": false,
"headline": "chore(ci): `workflows`: update to shared filenames",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-05-09T09:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "91573a50feec87b33ef6767ac04d3596904aad4f",
"body": "…go-git/go-git/v5-5.19.0\n\nchore(deps): bump github.com/go-git/go-git/v5 from 5.17.2 to 5.19.0",
"is_bot": false,
"headline": "Merge pull request #13 from grokify/dependabot/go_modules/github.com/…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-05-09T09:31:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d91a98ab2e041cf38220dc0c09af5cec7f01fa2e",
"body": "Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.17.2 to 5.19.0.\n- [Release notes](https://github.com/go-git/go-git/releases)\n- [Changelog](https://github.com/go-git/go-git/blob/main/HISTORY.md)\n- [Commits](https://github.com/go-git/go-git/compare/v5.17.2...v5.19.0)\n\n---\n\n[…]\n-name: github.com/go-git/go-git/v5\n dependency-version: 5.19.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/go-git/go-git/v5 from 5.17.2 to 5.19.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-05-06T18:47:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "717926ce6badd12f0fd7c1be60b4f00bdbf82847",
"body": "…o-git/go-git/v5-5.17.2\n\nchore(deps): bump github.com/go-git/go-git/v5 from 5.17.0 to 5.17.2",
"is_bot": false,
"headline": "Merge pull request #8 from grokify/dependabot/go_modules/github.com/g…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-04-05T12:50:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b81e8a780ed2d6594100feb98b94d67be08be50",
"body": "Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.17.0 to 5.17.2.\n- [Release notes](https://github.com/go-git/go-git/releases)\n- [Commits](https://github.com/go-git/go-git/compare/v5.17.0...v5.17.2)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/go-git/go-git/v5\n dependency-version: 5.17.2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/go-git/go-git/v5 from 5.17.0 to 5.17.2",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-03-31T18:45:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50869118b421297f426839492bf401fc6833e9e0",
"body": "…rokify/mogo-0.74.0\n\nchore(deps): bump github.com/grokify/mogo from 0.73.2 to 0.74.0",
"is_bot": false,
"headline": "Merge pull request #6 from grokify/dependabot/go_modules/github.com/g…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-03-22T17:51:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd5cd0d304e098eabe1126d3fc276622ee7a4012",
"body": "Bumps [github.com/grokify/mogo](https://github.com/grokify/mogo) from 0.73.2 to 0.74.0.\n- [Release notes](https://github.com/grokify/mogo/releases)\n- [Changelog](https://github.com/grokify/mogo/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/grokify/mogo/compare/v0.73.2...v0.74.0)\n\n---\nupdate\n[…]\nency-name: github.com/grokify/mogo\n dependency-version: 0.74.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/grokify/mogo from 0.73.2 to 0.74.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-03-22T17:25:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "64e364776fe779979c9c018d26562ca448c89553",
"body": "…o-git/go-git/v5-5.17.0\n\nchore(deps): bump github.com/go-git/go-git/v5 from 5.16.5 to 5.17.0",
"is_bot": false,
"headline": "Merge pull request #3 from grokify/dependabot/go_modules/github.com/g…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-03-22T17:24:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "02e65ee4fc72f69c88b8d4f0b2a912d96a2b75bb",
"body": "…er/goreleaser-action-7\n\nchore(deps): bump goreleaser/goreleaser-action from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #2 from grokify/dependabot/github_actions/goreleas…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-03-22T17:23:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3ea14da048bc69460353c9874562772115356b2b",
"body": "Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git) from 5.16.5 to 5.17.0.\n- [Release notes](https://github.com/go-git/go-git/releases)\n- [Commits](https://github.com/go-git/go-git/compare/v5.16.5...v5.17.0)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/go-git/go-git/v5\n dependency-version: 5.17.0\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/go-git/go-git/v5 from 5.16.5 to 5.17.0",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-02-25T18:46:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e8457b8fcfbef761c132c366bf0f691f64581d4e",
"body": "Bumps [goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action) from 6 to 7.\n- [Release notes](https://github.com/goreleaser/goreleaser-action/releases)\n- [Commits](https://github.com/goreleaser/goreleaser-action/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: goreleaser/goreleaser-action\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump goreleaser/goreleaser-action from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-02-23T20:34:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d219b434b24e2e2a1cf7171498c6bc5448f7082e",
"body": "Add the ability to filter repos that have uncommitted changes or unpushed\ncommits when using the since command. The flag uses AND logic with existing\nfilters (--dep, duration).\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(since): add --unpushed/-u flag to filter by unpushed changes",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T16:57:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "efaaacef6f02630e89425931eb998841188f27ca",
"body": null,
"is_bot": false,
"headline": "chore(ci): `ci.yaml`: update go versions",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T15:13:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e495d956ecc528f399f2eb3d3cd133ad9c9abf7",
"body": "Organize release notes files for future MkDocs compatibility:\n- RELEASE_NOTES_v0.1.0.md → docs/releases/v0.1.0.md\n- RELEASE_NOTES_v0.2.0.md → docs/releases/v0.2.0.md\n- RELEASE_NOTES_v0.3.0.md → docs/releases/v0.3.0.md\n- RELEASE_NOTES_v0.4.0.md → docs/releases/v0.4.0.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: move release notes to docs/releases/",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T15:11:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "375c7a6f21da1fbd6f803dbbfcd208d957d752a5",
"body": "- Add Homebrew installation instructions to README\n- Update README with new subcommand structure (since, dep)\n- Add v0.4.0 entry to CHANGELOG.json\n- Regenerate CHANGELOG.md via schangelog\n- Add RELEASE_NOTES_v0.4.0.md\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update documentation for v0.4.0",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T15:04:16Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "723b4582eb5c9f6b21322f64ec1c35f0b81592f5",
"body": "Configure goreleaser for cross-platform builds (linux, darwin, windows)\nwith amd64 and arm64 architectures. Homebrew formula updates handled\nseparately by grokify/homebrew-tap polling workflow.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: add goreleaser config and release workflow",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T14:47:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ce196b94a9006b92f960873901c41b0697c64972",
"body": "Add `since` and `dep` subcommands for filtering repos by modification\ntime and dependency respectively. The `since` command supports optional\n`--dep` flag for AND logic (repos both recently modified AND depending\non a module).\n\nExtract shared helpers (resolvePath, createGitBackend, parseDuration)\nto\n[…]\nds.\n\nBREAKING CHANGE: `--since` and `--dep` flags removed from root command.\nUse `gitscan since <duration>` and `gitscan dep <module>` instead.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): restructure into Cobra subcommands",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T14:29:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5f940f2f96c492a2c50b94c75f69d32b4845cc5b",
"body": null,
"is_bot": false,
"headline": "chore(deps): `go mod`: update dependencies",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T14:00:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d71ab8ad63b272ca84370244faa54cfc2cd856a",
"body": "…rokify/mogo-0.73.2\n\nchore(deps): bump github.com/grokify/mogo from 0.73.1 to 0.73.2",
"is_bot": false,
"headline": "Merge pull request #1 from grokify/dependabot/go_modules/github.com/g…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-21T14:00:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d80c1380388cf40dfc445ea2f3cb21ada8bf561a",
"body": "Bumps [github.com/grokify/mogo](https://github.com/grokify/mogo) from 0.73.1 to 0.73.2.\n- [Release notes](https://github.com/grokify/mogo/releases)\n- [Commits](https://github.com/grokify/mogo/compare/v0.73.1...v0.73.2)\n\n---\nupdated-dependencies:\n- dependency-name: github.com/grokify/mogo\n dependency-version: 0.73.2\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "chore(deps): bump github.com/grokify/mogo from 0.73.1 to 0.73.2",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-02-16T19:22:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1696cf94e8cac1932c9a3eff2830893d66999767",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add RELEASE_NOTES_v0.3.0.md",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T14:54:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "272e38375bdc42d1dfb292aab1bcd75bb271aea4",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add commit hashes to v0.3.0 changelog",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T14:47:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f9e85239b785a5807237466dbee97f0130f5a5d7",
"body": "- Add --go-git flag to README flags tables\n- Add git backend comparison table to Performance section\n- Add v0.3.0 release entry to CHANGELOG.json\n- Regenerate CHANGELOG.md with schangelog\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update documentation for v0.3.0",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T14:39:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4e2ea5800dd0fdc16c27495d1e06ee11137fb25e",
"body": "…ations\n\nAdd pluggable git backend abstraction for repository scanning:\n- GitBackend interface with IsRepo() and GetStatus() methods\n- GoGitBackend: pure Go implementation using go-git library\n- CLIGitBackend: git CLI implementation (default, faster)\n- --go-git flag to opt into go-git backend\n\nGit CLI is default (~2.5s for 600 repos) vs go-git (~10s for 600 repos).\nGo-git is useful in environments without the git binary.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(scanner): add GitBackend interface with go-git and CLI implement…",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T14:38:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b2458ae25a9852b0671097a5e203f687902f9fd8",
"body": "- Convert CHANGELOG.json to camelCase schema (irVersion, commitConvention)\n- Add performance section with git optimization commits\n- Add documentation section for README and release notes\n- Generate CHANGELOG.md with clickable commit links\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: regenerate CHANGELOG with schangelog",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T13:46:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6e88de79c8d4e04ab97ec0cb79bfbd6970147172",
"body": "Replace two separate git commands with single `git status --porcelain -b`:\n- Combines uncommitted changes check and unpushed commits check\n- Reduces process spawning from 2-3 commands per repo to 1\n- Improves scan time by ~50% (6.7s → 3.4s for 600 repos)\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "perf(scanner): optimize git status to single command",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T13:36:42Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e31976411b92a3a55e29de0a1bfd81812b4f379a",
"body": "- Update README with new flags table including short flags\n- Add Order Subcommand section with flags, examples, and output\n- Add Performance section documenting parallel scanning\n- Update examples to use new flag syntax\n- Add RELEASE_NOTES_v0.2.0.md documenting all new features\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update README and add v0.2.0 release notes",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T13:24:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8b79a8e497646eeee8079c67f745c956e2087126",
"body": null,
"is_bot": false,
"headline": "chore(deps): `go mod`; update dependencies",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T13:14:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed5b201f8517d0fffc2d5c591b0b09c58c2abc98",
"body": "- Add v0.2.0 release with all new features\n- Document order subcommand, time filtering, parallel scanning\n- Document Cobra migration and new flags\n- Add commit hash to v0.1.0 entry\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update CHANGELOG.json for v0.2.0",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T13:10:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "104f2a29fb5af522955e022d9d9f72cdc42b248d",
"body": "- Add 'order' subcommand to show repos in topological dependency order\n- Add -t/--transitive flag to include repos depending on modified repos\n- Add -u/--unpushed flag to filter to repos with uncommitted/unpushed changes\n- Display repos with dependencies first, dependents after\n- Show internal depen\n[…]\ncies as \"(depends on: x, y)\" in output\n- Detect and warn about circular dependencies\n- Support combining with -since for time-filtered ordering\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): add order subcommand for dependency-aware update ordering",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T12:54:03Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "33af0ef10b190c45bc443886dd84804897df42dc",
"body": "- Replace standard flag package with spf13/cobra for better CLI UX\n- Add short flags: -d (dir), -f (format), -r (recurse), -s (since)\n- Add -since flag for time-based filtering (7d, 2w, 1m formats)\n- Add built-in --help and --version from Cobra\n- Refactor main.go to minimal entry point calling cmd.E\n[…]\nng with internal dependency display\n- Sort results alphabetically with numbered list output\n- Add parseDuration() for flexible duration parsing\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(cli): migrate to Cobra framework with enhanced features",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T12:53:52Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7f8ff17d15f166aeea9f30cb7cd82a17e1cdeefc",
"body": "…scanning\n\n- Add LatestModTime field and ModifiedSince() method for time-based filtering\n- Add HasUnpushedCommits field and NeedsPush() method for push status\n- Add GetInternalDeps() to find dependencies within scanned repos\n- Add GetTransitiveDependents() to expand seed repos to all dependents\n- Ad\n[…]\ndd ScanOptions with CheckModTime, CheckUnpushed, Workers for lazy evaluation\n- Skip expensive operations when not needed for better performance\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(scanner): add time filtering, dependency analysis, and parallel …",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-14T12:52:45Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4a658346ff0d83771ca9923ddaccba4773c66f6a",
"body": "Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: add binary to gitignore",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-07T13:59:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "9c27c2aa2a584b577b4bbd46b1e2c7248b583831",
"body": "Replace local progress bar rendering with mogo/fmt/progress.SingleStageRenderer\nfor consistent progress display across projects.\n\n- Add github.com/grokify/mogo v0.73.0 dependency\n- Use progress.NewSingleStageRenderer for progress bar\n- Remove local progress bar string building\n- Fix Go version to 1.24.0\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor: use mogo progress renderer",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-02-07T13:59:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "773268b7be2dc21ab32c8c0719d992a3f878627c",
"body": null,
"is_bot": false,
"headline": "docs(README.md): add shields",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:15:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac28e0b37e1e6dc3097bd8c84bf0b1faeaa00dcf",
"body": null,
"is_bot": false,
"headline": "chore(ci): `ci.yaml`: update go versions",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:13:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2a2fd89eadf6f09ed726004fef97931cc8ced7b",
"body": "Add CI workflow for build and test, lint workflow with golangci-lint,\nCodeQL SAST analysis, and Dependabot for dependency updates.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: add GitHub Actions workflows",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:02:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "75566ebce7a9e4dd919bc5704909f109f12eb3e0",
"body": "Ignore .DS_Store, .env, and underscore-prefixed files.\nEnable gosec, staticcheck, misspell, and other linters.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: add gitignore and golangci-lint configuration",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:02:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "083972aaa45940756f6a00bc6acbcacd14d8fbcb",
"body": "Structured ROADMAP.json with planned improvements for v0.2.0 and v0.3.0.\nDetailed release notes for initial v0.1.0 release.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add roadmap and v0.1.0 release notes",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:01:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7b69e0b810feb49c5fe1c71cfaea5a083dde0b0f",
"body": "Machine-readable CHANGELOG.json with generated CHANGELOG.md\nfollowing Keep a Changelog format.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add structured changelog for v0.1.0",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:01:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b4bb43e93f81ad393f15046989fe5f0fd35881b7",
"body": "Document installation, usage, flags, output formats, and use cases.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: add README and MIT license",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T08:00:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "97d07392d1e452d4bceeade5a08aee0f0287cb2e",
"body": "Scan multiple Git repositories to identify repos needing attention.\nChecks for uncommitted changes, replace directives in go.mod, and\nmodule name mismatches. Supports dependency filtering and recursive\nnested go.mod search for monorepos.\n\nCo-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add repository scanner CLI",
"author_name": "John Wang",
"author_login": "grokify",
"committed_at": "2026-01-18T07:59:20Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 5,
"commits_last_year": 65,
"latest_release_at": "2026-07-18T16:23:38Z",
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_last_push": 3,
"active_weeks_last_year": 14,
"days_since_latest_release": 6,
"mean_days_between_releases": 45.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 85,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/grokify/gogit",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/grokify/gogit",
"is_deprecated": false,
"latest_version": "v0.5.0",
"repository_url": "https://github.com/grokify/gogit",
"versions_count": 5,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-18T16:18:00Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 0,
"stars": 0,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": {
"days": [],
"complete": true,
"collected": 0,
"total_stars": 0,
"collected_at": null
},
"open_issues_and_prs": 2
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 14956,
"source_files_sampled": 17,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"go.mod"
],
"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": [
"go"
],
"dependencies": [
{
"name": "github.com/grokify/mogo",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.74.6"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "gopkg.in/yaml.v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.0.1"
}
],
"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": 2,
"merged_prs": 9,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 9
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "grokify",
"commits": 56,
"avatar_url": "https://avatars.githubusercontent.com/u/209872?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"go-ci.yaml",
"go-lint.yaml",
"go-sast-codeql.yaml",
"release.yaml"
],
"has_docs_dir": true,
"linter_configs": [
".golangci.yaml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"go.sum"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 6,
"reason": "4 out of 6 merged PRs checked by a CI test -- score normalized to 6",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/18 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 5 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 1,
"reason": "SAST tool is not run on all commits -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 4,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "e155136cabf5b441298147ea9fb5d03f295d21ff",
"ran_at": "2026-07-24T16:53:58Z",
"aggregate_score": 5.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": true,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-23T18:43:37Z",
"oldest_open_prs": [
{
"number": 19,
"created_at": "2026-07-20T18:44:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 20,
"created_at": "2026-07-20T18:44:17Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-18T15:01:53Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/grokify/gogit",
"host": "github.com",
"name": "gogit",
"owner": "grokify"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"security": 51,
"vitality": 76,
"community": 40,
"governance": 51,
"engineering": 86
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 76,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"commits_last_year": 65,
"human_commit_share": 0.862,
"days_since_last_push": 3,
"active_weeks_last_year": 14
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 3 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 3
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "14/52 weeks with commits",
"points": 9.7,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 14
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "65 commits in the last year",
"points": 16.3,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 65
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "good",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 83,
"inputs": {
"releases_count": 5,
"latest_release_tag": "v0.5.0",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": 45.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "5 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 5
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~45.3 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 45.3
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 40,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 0,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "0 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 0
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"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": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 51,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 36,
"inputs": {
"merged_prs": 9,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 9
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "9/18 decided PRs merged",
"points": 19.1,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 9,
"decided": 18
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/18 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"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": 64,
"inputs": {
"followers": 158,
"owner_type": "User",
"is_verified": null,
"owner_login": "grokify",
"public_repos": 417,
"account_age_days": 5994
},
"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": "158 followers of grokify",
"points": 15.8,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 158,
"login": "grokify"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "417 public repos, account ~16 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 417
}
},
{
"code": "account_age_years",
"params": {
"years": 16
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/grokify/gogit"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 6
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "5 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 5
}
}
],
"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": "excellent",
"name": "Engineering Quality",
"value": 86,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 76,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "4 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 4
}
}
],
"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": ".golangci.yaml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yaml"
}
}
],
"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": "4 out of 6 merged PRs checked by a CI test -- score normalized to 6",
"points": 12,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"cli",
"git",
"git-log",
"go",
"golang",
"repository-scanner",
"trailers"
],
"has_wiki": true,
"homepage": "https://grokify.github.io/gogit/",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://grokify.github.io/gogit/",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "7 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 7
}
}
],
"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": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 18,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 0,
"scorecard_aggregate": 5.1
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "4 out of 6 merged PRs checked by a CI test -- score normalized to 6",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/18 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 5 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"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": "26 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 1",
"points": 0.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 2,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 3
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 72,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "56 of 56 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 56,
"sampled": 56
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "excellent",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"go.sum"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.6,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0.138
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "go.mod (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "go.mod"
}
}
],
"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": ".golangci.yaml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yaml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"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": "39 of the last 65 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 39,
"sampled": 65
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "9 of the last 65 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 9,
"sampled": 65
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Go",
"largest_source_bytes": 14956,
"source_files_sampled": 17,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/17 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 17,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-24T16:54:08.624235Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/g/grokify/gogit.svg",
"full_name": "grokify/gogit",
"license_state": "standard",
"license_spdx": "MIT"
}