Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [],
"is_fork": false,
"size_kb": 393,
"has_wiki": true,
"homepage": null,
"languages": {
"HTML": 1503,
"Ruby": 152966
},
"pushed_at": "2026-07-25T12:33:57Z",
"created_at": "2011-07-15T20:23:56Z",
"owner_type": "User",
"updated_at": "2026-07-25T12:34:02Z",
"description": "Library providing a bunch of rake tasks for handling gems",
"is_archived": false,
"is_disabled": false,
"license_spdx": null,
"default_branch": "master",
"license_spdx_raw": "NOASSERTION",
"primary_language": "Ruby",
"significant_languages": [
"Ruby"
]
},
"owner": {
"blog": null,
"name": "Florian Frank",
"type": "User",
"login": "flori",
"company": null,
"location": "Berlin, Germany",
"followers": 136,
"avatar_url": "https://avatars.githubusercontent.com/u/15918?v=4",
"created_at": "2008-07-03T14:17:21Z",
"is_verified": null,
"public_repos": 124,
"account_age_days": 6595
},
"license": {
"state": "custom",
"spdx_id": null,
"raw_spdx": "NOASSERTION",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v2.18.0",
"kind": "minor",
"published_at": "2026-07-25T12:34:23Z"
},
{
"tag": "v2.17.1",
"kind": "patch",
"published_at": "2026-04-29T14:25:46Z"
},
{
"tag": "v2.17.0",
"kind": "minor",
"published_at": "2026-01-15T12:19:10Z"
},
{
"tag": "v2.16.3",
"kind": "patch",
"published_at": "2025-12-24T13:33:37Z"
},
{
"tag": "v2.16.2",
"kind": "patch",
"published_at": "2025-12-23T02:22:56Z"
},
{
"tag": "v2.16.1",
"kind": "patch",
"published_at": "2025-12-23T01:21:31Z"
},
{
"tag": "v2.16.0",
"kind": "minor",
"published_at": "2025-12-23T00:23:41Z"
},
{
"tag": "v2.15.0",
"kind": "minor",
"published_at": "2025-12-23T00:03:35Z"
},
{
"tag": "v2.14.1",
"kind": "patch",
"published_at": "2025-12-22T23:48:29Z"
},
{
"tag": "v2.14.0",
"kind": "minor",
"published_at": "2025-12-22T22:42:47Z"
},
{
"tag": "v2.13.1",
"kind": "patch",
"published_at": "2025-12-21T20:48:29Z"
},
{
"tag": "v2.13.0",
"kind": "minor",
"published_at": "2025-12-21T20:24:23Z"
},
{
"tag": "v2.12.0",
"kind": "minor",
"published_at": "2025-12-21T16:40:12Z"
},
{
"tag": "v2.11.0",
"kind": "minor",
"published_at": "2025-12-21T15:11:10Z"
},
{
"tag": "v2.10.0",
"kind": "minor",
"published_at": "2025-12-19T16:20:39Z"
},
{
"tag": "v2.9.0",
"kind": "minor",
"published_at": "2025-12-19T13:19:05Z"
},
{
"tag": "v2.8.0",
"kind": "minor",
"published_at": "2025-10-09T13:07:37Z"
},
{
"tag": "v2.7.0",
"kind": "minor",
"published_at": "2025-09-26T01:41:38Z"
},
{
"tag": "v2.6.0",
"kind": "minor",
"published_at": "2025-09-12T22:39:50Z"
},
{
"tag": "v2.5.0",
"kind": "minor",
"published_at": "2025-09-12T18:09:36Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2025-09-11T10:09:44Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2025-09-09T19:27:59Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2025-08-29T00:39:48Z"
},
{
"tag": "v2.1.1",
"kind": "patch",
"published_at": "2025-08-19T19:39:33Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2025-08-19T12:48:29Z"
},
{
"tag": "v2.0.5",
"kind": "patch",
"published_at": "2025-08-14T02:41:33Z"
},
{
"tag": "v2.0.4",
"kind": "patch",
"published_at": "2025-08-13T18:44:14Z"
},
{
"tag": "v2.0.3",
"kind": "patch",
"published_at": "2025-08-13T13:21:27Z"
},
{
"tag": "v2.0.2",
"kind": "patch",
"published_at": "2025-08-13T02:13:25Z"
},
{
"tag": "v2.0.1",
"kind": "patch",
"published_at": "2025-08-13T02:07:22Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2025-08-12T20:06:03Z"
},
{
"tag": "v1.28.0",
"kind": "minor",
"published_at": "2025-08-12T19:58:50Z"
},
{
"tag": "v1.27.0",
"kind": "minor",
"published_at": "2025-08-06T23:26:49Z"
},
{
"tag": "v1.26.0",
"kind": "minor",
"published_at": "2025-08-06T20:29:34Z"
},
{
"tag": "v1.25.0",
"kind": "minor",
"published_at": "2025-08-04T21:09:18Z"
},
{
"tag": "v1.24.0",
"kind": "minor",
"published_at": "2025-08-04T16:35:31Z"
},
{
"tag": "v1.23.0",
"kind": "minor",
"published_at": "2025-07-30T14:40:30Z"
},
{
"tag": "v1.22.0",
"kind": "minor",
"published_at": "2025-07-30T14:36:02Z"
}
],
"recent_commits": [
{
"oid": "09f6f810b622465a4c4207a2cd9ebf726258e92d",
"body": "- Update project version from **2.17.1** to **2.18.0** in `VERSION`,\n `gem_hadar.gemspec`, and `lib/gem_hadar/version.rb`.",
"is_bot": false,
"headline": "Bump `gem_hadar` version to **2.18.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-07-25T12:33:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "92a6530036f157a1177220e4fa1054db511ff16d",
"body": "- Add `coverage` to `.gitignore` and `Rakefile` ignore lists\n- Update `tins` dependency to `~> 1.56` in `Rakefile` and\n `gem_hadar.gemspec`\n- Update `rubygems_version` to **4.0.17** in `gem_hadar.gemspec`\n- Update `gem_hadar` development dependency to `**>= 2.17.1**` in\n `gem_hadar.gemspec`\n- Implement defensive check for `SimpleCov#skip` in\n `lib/gem_hadar/simplecov.rb`",
"is_bot": false,
"headline": "Fix `SimpleCov` deprecation and update dependencies",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-07-25T12:28:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ca960966aad14a17f7ad1586e9ae547840590b6",
"body": "- Updated the version to **2.17.1** in `VERSION`.\n- Updated the version to **2.17.1** in `gem_hadar.gemspec`.\n- Updated the `VERSION` constant to **2.17.1** in `lib/gem_hadar/version.rb`.",
"is_bot": false,
"headline": "Bump version to 2.17.1",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-29T14:21:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27bfee2897fabef8e66877c06ddf1a19f14f25d2",
"body": "- Added a \"**Human-in-the-Loop Review**\" section describing how\n `gem_hadar` uses the `EDITOR` to review AI-generated content during\n `rake github:release` and `rake changes:add`.\n- Updated the `developing` flag description to highlight its role as a\n safety brake that disables `gem push` operations.\n- Added a note that the tool handles version strings such as **v1.2.3**\n and **1.2.3** interchangeably.\n- Refined text formatting and line wrapping in `README.md`.",
"is_bot": false,
"headline": "Enhance README with AI review and safety details",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-29T14:07:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d29ffe965d10503f562e18ba41bb909a19ce42d",
"body": "- Update `actions/checkout` from **v4** to **v6** in\n `lib/gem_hadar/github_workflows/static.yml.erb`\n- Update `actions/configure-pages` from **v5** to **v6** in\n `lib/gem_hadar/github_workflows/static.yml.erb`\n- Update `actions/upload-pages-artifact` from **v3** to **v5** in\n `lib/gem_hadar/github_workflows/static.yml.erb`\n- Update `actions/deploy-pages` from **v4** to **v5** in\n `lib/gem_hadar/github_workflows/static.yml.erb`",
"is_bot": false,
"headline": "Update GitHub Actions versions in static template",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-29T12:49:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "63af8b61259b55df288378d02935597ed304b030",
"body": "- Update `actions/checkout` from **v4** to **v6** in\n `.github/workflows/static.yml`\n- Update `actions/configure-pages` from **v5** to **v6** in\n `.github/workflows/static.yml`\n- Update `actions/upload-pages-artifact` from **v3** to **v5** in\n `.github/workflows/static.yml`\n- Update `actions/deploy-pages` from **v4** to **v5** in\n `.github/workflows/static.yml`",
"is_bot": false,
"headline": "Update GitHub Actions versions in static workflow",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-29T12:48:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f67257ace96c8660e31540aacee460b9a5cde4b0",
"body": "- Update `ruby-version` to **4.0** in `.github/workflows/static.yml` and\n `lib/gem_hadar/github_workflows/static.yml.erb`\n- Update `rubygems_version` in `gem_hadar.gemspec` from **4.0.10** to\n **4.0.6**",
"is_bot": false,
"headline": "Update Ruby and RubyGems versions",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-29T12:41:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "936164cbce977fa00bc24dc9c3e3074de01529b6",
"body": "- Remove `require 'pathname'` from `lib/gem_hadar/simplecov.rb`\n- Remove `require 'pathname'` from `lib/gem_hadar/utils.rb`",
"is_bot": false,
"headline": "Remove unused pathname requirement",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-04-08T14:08:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9897b567765d7b02aaee34ca136b293ecb78f8f",
"body": "- Updated `VERSION` file to **2.17.0**\n- Updated `gem_hadar.gemspec` to reflect version **2.17.0** and updated\n development dependency requirement to >= **2.16.3**\n- Updated `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.17.0**",
"is_bot": false,
"headline": "Bump version to **2.17.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-01-15T12:17:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30ede1d20d3d650454ffb683318124050140acc6",
"body": "- Added `:force` namespace to `gem:push` task to allow pushing in\n development mode\n- Extracted core push logic into dedicated `gem_push` method\n- Enhanced force mode to validate remote tag existence before pushing\n- Maintained existing development mode skip behavior for normal\n `gem:push` task\n- Updated `gem:push` task to use `gem_push` method for consistent logic\n- Task structure now supports `rake gem:push` (skips in dev) and `rake\n gem:force:push` (force push)",
"is_bot": false,
"headline": "Force push mode for gem publishing",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-01-15T12:12:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "362a26aa3f5b454b47e2ed623a0d79bd1a813464",
"body": "- This updates the Ruby version to the final 4.0 release instead of the\n release candidate",
"is_bot": false,
"headline": "Update Ruby version from 4.0-rc to 4.0 for Alpine image",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2026-01-01T23:04:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b0d458aa2c5ca6957dede66afbd68f8940db391b",
"body": "- Updated `VERSION` file to reflect new version **2.16.3**\n- Modified `gem_hadar.gemspec` to set version to **2.16.3**\n- Changed `lib/gem_hadar/version.rb` to update `VERSION` constant to **2.16.3**",
"is_bot": false,
"headline": "Update gem version to **2.16.3**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-24T13:32:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e583c63a50b35304c7acfb0acb9b784bc35430bf",
"body": "- Updated `s.rubygems_version` from **4.0.2** to **4.0.3**\n- Updated `s.add_development_dependency` for `gem_hadar` from **>= 2.16.0** to **>= 2.16.2**",
"is_bot": false,
"headline": "Update gem_hadar version and rubygems version",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-24T13:32:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db2113c266d3853b72d47085ffb5a62b3c6f7d5b",
"body": "- Replace simple `ENV.fetch` with enhanced logic that checks if editor\n exists\n- Add fallback to `vim` and `vi` when `EDITOR` environment variable is\n not set or invalid\n- Introduce `memoize` method to cache editor detection result\n- Use `which` command to locate editors when `EDITOR` is set but invalid\n- Handle cases where `EDITOR` points to non-existent files",
"is_bot": false,
"headline": "Improve editor detection logic and add memoization",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-24T13:31:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9881838802f73ad904ceac83cf61b791241aef12",
"body": "- Updated `VERSION` file to reflect new version **2.16.2**\n- Updated `gem_hadar.gemspec` to specify version **2.16.2** and adjusted\n development dependency requirement from **>= 2.16.1** to **>= 2.16.0**\n- Updated `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.16.2**",
"is_bot": false,
"headline": "Bump version to **2.16.2**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T02:22:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3055665972a02826bde7dd33f8cad7e525f59c11",
"body": "- Updated `default_git_release_prompt` to exclude version information\n from generated changelogs\n- This change ensures release notes are more focused on changes rather\n than version numbers",
"is_bot": false,
"headline": "Improved changelog generation by removing version mentions",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T02:19:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ab1cd8a782dcbfff7701c13049c7bf180a033db",
"body": null,
"is_bot": false,
"headline": "Update gem_hadar development dependency to version **2.16.1**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T01:21:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "000abcab78491b994c9130f765d443df9bb21d43",
"body": "- Updated `VERSION` file to reflect new version **2.16.1**\n- Modified `gem_hadar.gemspec` to specify version **2.16.1** and updated\n development dependency requirement for `gem_hadar` to be at least\n **2.16.0**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.16.1**",
"is_bot": false,
"headline": "Bump version to **2.16.1** for maintenance release",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T01:20:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40ab4585432fc8188e0084e39a4a7672ba849cf4",
"body": null,
"is_bot": false,
"headline": "Improved error message formatting for changelog updates",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T01:19:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9b36a17bc0ad3f05e0899a1a4e3b073854f4560",
"body": "- Bump version number in `VERSION` file from **2.15.1** to **2.16.0**\n- Update version specification in `gem_hadar.gemspec` from **2.15.1** to\n **2.16.0**\n- Modify `VERSION` constant in `lib/gem_hadar/version.rb` from\n **2.15.1** to **2.16.0**",
"is_bot": false,
"headline": "Update gem version to **2.16.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:22:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbbc94f757413f22b26016cb5dcb73cc6441a1ef",
"body": null,
"is_bot": false,
"headline": "Corrected typo in the error message output",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:21:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d73533f81facbfb292ab581f9378ce40af25224",
"body": "- Bump `VERSION` file from **2.15.0** to **2.15.1**\n- Update `gem_hadar.gemspec` to reflect version **2.15.1** and change\n development dependency requirement for `gem_hadar` from \"~> 2.14\" to\n \">= 2.15.0\"\n- Update `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.15.1**",
"is_bot": false,
"headline": "Update gem version to **2.15.1**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:14:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f5fd8a2afa65041ace5ce65fc1fbf936ff4236c",
"body": "- Enhanced error message for undocumented versions in changelog files to\n include a clear instruction on how to update the changelog using `rake\n changes:update`",
"is_bot": false,
"headline": "Improve changelog validation error messages with actionable instructions",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:13:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a806149fb6b3b75144418e9712bfade168b721e2",
"body": "- Updated gem version from **2.14.1** to **2.15.0** in all relevant files\n- Modified `VERSION` file to reflect new version number\n- Updated `gem_hadar.gemspec` version declaration\n- Changed `lib/gem_hadar/version.rb` VERSION constant to **2.15.0**",
"is_bot": false,
"headline": "Bump version to **2.15.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:02:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cfec7946e90ad4af0300e7ec499c249050713c5",
"body": "- Allows flexibility to use newer versions during development and testing",
"is_bot": false,
"headline": "Update gem_hadar dependency constraint to allow >= **1.2.3**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-23T00:01:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "894e6654fe4932267540d173c9b245fedf2e44d1",
"body": "- Updated `VERSION` file to reflect new patch version **2.14.1**\n- Modified `gem_hadar.gemspec` to specify version **2.14.1** in gem\n specification\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.14.1**",
"is_bot": false,
"headline": "Update gem version to **2.14.1**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T23:47:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1a9031a11254bfb74292da158089e379d7a7a5f3",
"body": "`@gem_hadar.changelog.filename` property.",
"is_bot": false,
"headline": "Updated changelog filename access to use standardized",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T23:46:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12f7010f0bacb8a7a6729d01c28a8aebf5592cf1",
"body": "- Updated the development dependency for `gem_hadar` from version\n **2.13** to **2.14**",
"is_bot": false,
"headline": "Update gem_hadar dependency to version **2.14**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T22:43:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9281e5b99f3d43e8c6b3ffea9ce5d30cbedfbe10",
"body": "- Updated `VERSION` file to **2.14.0**\n- Updated `gem_hadar.gemspec` to reflect version **2.14.0** and updated\n file listings in `s.extra_rdoc_files` and `s.files`\n- Updated `lib/gem_hadar/version.rb` to set `VERSION` to **2.14.0**",
"is_bot": false,
"headline": "Bump version to 2.14.0 with updated file listings",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T21:55:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1bc7157405a6e8ce3640be921b09dad5f231532",
"body": "- Replace simple `changelog_filename` string with `ChangelogConfig` class\n- Add `changelog` method that accepts block configuration\n- Introduce `changelog.filename` and `changelog.commit_message` accessors\n- Update all changelog Rake tasks to use new configuration system\n- Add `rake changes:update` \n[…]\next` for graceful missing file handling\n- Add default commit message **'Add to changes'**\n- Support block syntax configuration in gem DSL\n- Add `changelog_config.rb` file with new class implementation",
"is_bot": false,
"headline": "Refactor changelog configuration system",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T21:20:35Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4a29e31d454d35de84aada789079973acdc90044",
"body": "and document it.\n\n- Add `infobar.newline` call in changelog generation flow",
"is_bot": false,
"headline": "Return changelog entry count from add_to_file",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T21:17:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab8d91d41166140acf2265dfc52e98be6036fa83",
"body": "- Improved example initialization syntax\n- Expanded template and output examples\n- Clarified method descriptions",
"is_bot": false,
"headline": "Update documentation for `GemHadar::TemplateCompiler` class",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T01:42:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ea5693bf09ed4b620e967db2647eda37adfa548",
"body": "- Move `edit_temp_file` and related editor logic from `GemHadar` class\n to new `GemHadar::Editor` module\n- Add `require 'gem_hadar/editor'` and `include GemHadar::Editor` to\n `GemHadar` class\n- Replace inline `edit_temp_file` implementation with module-based\n approach\n- Introduce `find_editor`, `\n[…]\ny file handling with automatic cleanup\n- Handle editor invocation using `system` with proper error checking and warnings\n- Default to `vi` editor if `EDITOR` environment variable is not set or invalid",
"is_bot": false,
"headline": "Extract editor logic into dedicated module",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-22T01:11:40Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "33b5e052986b0539d4a2a68a9024b2674c53fead",
"body": "- Enhanced documentation for **GitHub Workflows** configuration\n- Added detailed guide for **Template System** usage\n- Documented all **changes:** namespace tasks for changelog generation\n- Included **Advanced Usage Patterns** with CI/CD integration examples\n- Added **Troubleshooting** section for A\n[…]\nion from **2.13.0** to **2.13.1** in VERSION, gemspec, and\n version.rb files\n- Improved README organization with better heading structure\n- Added practical examples for all new documentation sections",
"is_bot": false,
"headline": "Update README with comprehensive documentation and",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:46:59Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "6dcf77b8d024cc022806777b2d0acf9ebb37a5b9",
"body": "- Updated the `gem_hadar` development dependency from version **2.12** to **2.13**",
"is_bot": false,
"headline": "Update gem_hadar development dependency to version **2.13**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:43:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ffed26cda4b4fd1dd646fd98da45011e51435e85",
"body": "- Changed the `gem_hadar` development dependency version from **2.13** to **2.12**",
"is_bot": false,
"headline": "Update gem_hadar development dependency version",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:42:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04eff4027875e80e4c1fdd3e0cc81316fd2ab041",
"body": "- Removed display of `FORCE` environment variable setting from the\n GemHadar output",
"is_bot": false,
"headline": "Remove force operations display from GemHadar",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:33:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "40156a7bb7f24736a8d25f794f67e87d530161f1",
"body": "- Updated `VERSION` file to reflect new version **2.13.0**\n- Modified `gem_hadar.gemspec` to specify version **2.13.0** in gem\n specification\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to\n **2.13.0**",
"is_bot": false,
"headline": "Bump version to **2.13.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:23:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43bf8cde91973289ce50418015d049913a449e09",
"body": "- Added `changelog_filename` DSL accessor to configure custom changelog\n file names\n- Enhanced `version:tag` task to depend on `:modified` task for safety\n- Created reusable `modified` task to check for uncommitted changes\n- Implemented `changes:added` task to validate changelog entries before\n re\n[…]\nplace \"# Changes\" header at beginning of\n changelog\n- Added `changelog_exist?` and `changelog_version_added?` methods to\n `ChangelogGenerator`\n- Enhanced error messages with clear guidance for users",
"is_bot": false,
"headline": "Add changelog validation to release workflow",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T20:21:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "5501a17ae50202e26fd345e1d61e3dcab3344b98",
"body": "- Replace complex retry logic in `version_tag_task` with simple remote\n tag check\n- Add `version_tag_local` and `version_tag_remote` helper methods with\n memoization\n- Use `abort` instead of `warn` + `exit` for consistent error handling\n- Update error messages to show remote tag commit hashes\n- Ch\n[…]\n`warn` method color from **208** to **220** for better visibility\n- Change `abort` method color from **196** to **208** for consistent failure highlighting\n- Add proper git status check before tagging",
"is_bot": false,
"headline": "Simplify version tag task with better safety",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T19:25:20Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2f9ec59b40e687045e7faed75e91d7a02b9d23d7",
"body": "- Updated the `gem_hadar` development dependency from version **2.11** to **2.12**",
"is_bot": false,
"headline": "Update gem_hadar development dependency to version **2.12**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T19:14:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "14b5ddaf30e6d15c125cbc526a9ccf83afe2d8bf",
"body": "- Bump version number in `VERSION` file from **2.11.0** to **2.12.0**\n- Update version specification in `gem_hadar.gemspec` from **2.11.0** to\n **2.12.0**\n- Modify `VERSION` constant in `lib/gem_hadar/version.rb` from\n **2.11.0** to **2.12.0**",
"is_bot": false,
"headline": "Update gem version to **2.12.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T16:34:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dde167f880a9fc3aca6d13c46b24f5bca39df740",
"body": "- Updated the development dependency for `gem_hadar` from version\n **2.10** to **2.11**\n- This ensures compatibility with the latest features and bug fixes in\n the gem_hadar library\n- Maintains backward compatibility while providing access to newer functionality",
"is_bot": false,
"headline": "Update gem_hadar dependency to version **2.11**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T16:33:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddf83273fa9963ed27e523e9e41a2c97940bb844",
"body": "- Replace ad-hoc version string manipulation with consistent\n `GemHadar::VersionSpec` object usage throughout the codebase\n- Remove redundant `version_tag` and `version_untag` helper methods\n- Add `Comparable`, `eql?`, and `hash` methods to\n `GemHadar::VersionSpec` for proper version operations\n- \n[…]\ndate changelog generator to use `VersionSpec` objects for all\n version operations\n- Ensure all version operations maintain proper **v** prefix handling\n for tags while supporting **HEAD** references",
"is_bot": false,
"headline": "Refactor version handling to use VersionSpec consistently",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T16:32:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "64efaf21f4886b4e375bef44620436788c0c6b78",
"body": "- Update version to **2.11.0** across all relevant files\n- Introduce new `changes_task` with hierarchical Rake tasks for generating changelogs:\n - `changes:pending` - Show changes since last version tag\n - `changes:current` - Show changes between two latest version tags\n - `changes:range` - Show \n[…]\nrieving and sorting semantic version tags\n- Enhance `gemspec` method to use `version_untag` for proper version formatting\n- Add comprehensive documentation and examples for new changelog functionality",
"is_bot": false,
"headline": "Add AI-powered changelog generation and refactor core components",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-21T13:55:03Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f3aa30141ffbc9fdf05f70e365d4e3fefcdcdd66",
"body": "- Added `cscope.out` to `.gitignore` file to prevent it from being\n tracked by git",
"is_bot": false,
"headline": "Add cscope.out to gitignore and rakefile ignore list",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-20T23:04:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a4ad3c50b5fea8f37e6a1434376c841af49a926c",
"body": "- Added `infobar` dependency with version **0.11** to both `Rakefile`\n and `gem_hadar.gemspec`\n- Updated development dependency version for `gem_hadar` from **2.9** to\n **2.10** in `gem_hadar.gemspec`\n- Added `lib/gem_hadar/changelog_generator.rb` and\n `lib/gem_hadar/version_spec.rb` to `s.files` and `s.extra_rdoc_files`\n in `gem_hadar.gemspec`",
"is_bot": false,
"headline": "Add infobar dependency and update gem version",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-20T23:04:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0f1572296d84e8bbc6e4b99e469ca6d12d0ffb7",
"body": "- Enabled `ruby:4.0-rc-alpine` image build in `.all_images.yml`",
"is_bot": false,
"headline": "Enable ruby 4.0-rc-alpine image build",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-20T01:47:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ebf5c63754f3194250f94f55c28e6d51b920934",
"body": "- Updated `VERSION` file to **2.10.0**\n- Updated `gem_hadar.gemspec` version to **2.10.0**\n- Updated `lib/gem_hadar/version.rb` VERSION constant to **2.10.0**",
"is_bot": false,
"headline": "Update version to **2.10.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-19T16:13:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bebf1e7c360e0784a0778cae5febece8950ae968",
"body": "- Comment out `ruby:4.0-rc-alpine` image in `.all_images.yml`\n- Update `ollama-ruby` dependency from version **1.7** to **1.17** in\n `Rakefile` and `gem_hadar.gemspec`\n- Update `gem_hadar` development dependency from version **2.8** to\n **2.9** in `gem_hadar.gemspec`\n- Remove `pathname` and `set` runtime dependencies in\n `gem_hadar.gemspec`\n- Remove `pathname` development dependency in `Rakefile`",
"is_bot": false,
"headline": "Update dependencies and comment out Ruby 4.0 image",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-19T16:13:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0fc606e957d693d7571af2d1403930ced5135b8b",
"body": "- Updated `VERSION` file from **2.8.0** to **2.9.0**\n- Updated `gem_hadar.gemspec` to reflect version **2.9.0** and updated dependencies\n- Added `lib/gem_hadar/rvm_config.rb` to `extra_rdoc_files` and `files` lists\n- Changed `bundle update` to `bundle update --all` in `.all_images.yml`\n- Added `ruby\n[…]\nms_version` from **3.6.9** to **4.0.2**\n- Updated development dependency on `gem_hadar` from \"~> 2.7\" to \"~> 2.8\"\n- Updated `VERSION` constant in `lib/gem_hadar/version.rb` from **2.8.0** to **2.9.0**",
"is_bot": false,
"headline": "Update to version 2.9.0 with bundle update and new Ruby image support",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-12-19T13:17:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f781127bf510f74b34f21edc761f3a55fbd09a09",
"body": "- Move `RvmConfig` class implementation from `lib/gem_hadar.rb` to new\n file `lib/gem_hadar/rvm_config.rb`\n- Update `lib/gem_hadar.rb` to require the new `rvm_config.rb` file\n- Maintain same functionality with `dsl_accessor` and `DSLKit` integration\n- `RvmConfig` class now properly nested within `GemHadar` namespace\n- Class maintains `use` and `gemset` accessors with default values\n- Improves code organization and separation of concerns",
"is_bot": false,
"headline": "Refactor RVM configuration into separate file",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-10-16T22:39:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "090c0b61eed4853fa9d7914aa419b8359aebe0a8",
"body": "- Updated `VERSION` file to reflect new version **2.8.0**\n- Modified `gem_hadar.gemspec` to use version **2.8.0**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.8.0**",
"is_bot": false,
"headline": "Update gem version from 2.7.0 to 2.8.0 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-10-09T12:57:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7ee5ff89cb37f73b91135599d2f595131623bb6c",
"body": "- Declare **openssl** >= **3.3.1** as runtime dependency. This fixes SSL\n certificate verification issues with OpenSSL 3.6.0 by explicitly\n declaring runtime dependencies and ensuring proper certificate\n handling\n- Declare **net-http** as runtime dependency\n- Declare **json** ~> **2.0** as runtim\n[…]\nl_images.yml` in gem files\n- Update **tins** dependency to ~> **1.0**\n- Remove direct requires for `tins/secure_write` and `dslkit/polite`\n- Standardize dependency declarations in gemspec and Rakefile",
"is_bot": false,
"headline": "Update dependencies and gemspec for explicit runtime requirements",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-10-09T12:56:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8f0ae56b2ef3612fa10b195de47395faead528b2",
"body": null,
"is_bot": false,
"headline": "Add documentation comments to GitHub module",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-10-01T21:28:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "322f164d5defeb6c8652eae8cd2535b39157f7f2",
"body": "- Added a documentation section to `README.md` pointing to GitHub.io API docs\n- Updated version from **2.6.0** to **2.7.0** in multiple files:\n - `VERSION` file\n - `gem_hadar.gemspec`\n - `lib/gem_hadar/version.rb`\n- Included new workflow file `.github/workflows/static.yml` in gemspec `s.files`\n- Updated development dependency from `~> 2.5` to `~> 2.6` for `gem_hadar` in gemspec",
"is_bot": false,
"headline": "Update gem version to 2.7.0 and add documentation link",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-26T01:40:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72e41dbf028617e9f7db04263903dfa8daf612f8",
"body": null,
"is_bot": false,
"headline": "Fix indentation in GitHub Actions workflow configuration files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-26T01:37:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3fe602fd5c4cb3c78ab036ed04963422c31ea8c",
"body": "- Introduce new workflow file `.github/workflows/static.yml`\n- Configure deployment to GitHub Pages on pushes to **master** branch\n- Set up Ruby **3.4** environment using `ruby/setup-ruby@v1`\n- Install `gem_hadar` and run `bundle install` before generating docs\n- Generate documentation with `rake doc` task\n- Upload artifacts from `doc` directory\n- Deploy to GitHub Pages using `actions/deploy-pages@v4`",
"is_bot": false,
"headline": "Add GitHub Actions workflow for static site deployment",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-26T01:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e9e77ed595b2441306584aa9305d5f9459fea7f6",
"body": "- Add `github_workflows` DSL accessor for configuring workflow templates\n- Implement `github_workflows_task` to generate YAML files from ERB\n templates\n- Introduce `static.yml` ERB template for static content deployment\n- Update `template` method to support explicit destination paths and ERB\n trimming\n- Configure Rake tasks under `:github` namespace with `:workflows` and\n `:workflows:clean`\n- Add `github_workflows_variables` accessor for template variable management",
"is_bot": false,
"headline": "Add GitHub Actions workflow generation support",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-26T01:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5f29ea6d476008fcfe47347d56281ab39acbb7b5",
"body": null,
"is_bot": false,
"headline": "Add detailed documentation comments to ReleaseCreator methods",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-26T01:35:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e67ba86fe09977ba35bbce7aa497c252468791c",
"body": "- Replace simple array appending with directory-aware logic\n- Use `FileList` to recursively include all files in directories\n- Maintain existing behavior for non-directory arguments\n- Update variable name from `a` to `arg` for clarity\n- Update gem version from 2.5.0 to 2.6.0\n- Updated `VERSION` file\n[…]\n*\n- Modified `gem_hadar.gemspec` to bump version to **2.6.0** and update\n development dependency on `gem_hadar` to \"~> 2.5\"\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.6.0**",
"is_bot": false,
"headline": "Handle directory arguments in package ignore files logic",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T22:37:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "143898a7b739bf4651d4442764bffd2b2ca276b6",
"body": "and config_task methods\n\n- Split long comment lines into multiple shorter lines for better\n readability\n- Added `yard_doc_task` method with comprehensive YARD documentation\n generation\n- Added `config_task` method to display current GemHadar configuration\n- Updated `@return` comment for `ollama_client` method to wrap long line\n- Minor formatting adjustments to existing documentation comments",
"is_bot": false,
"headline": "Update documentation comments and add new yard_doc_task",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T21:32:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abf62ac0643895378666312c630ecdd5eb72826a",
"body": "instead of `select` with regex.",
"is_bot": false,
"headline": "Updated documentation file selection to use `grep`",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T21:23:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d400e336066a84355ff9077165d991ce1dac0337",
"body": "- Updated `VERSION` file to reflect new version **2.5.0**\n- Modified `gem_hadar.gemspec` to use version **2.5.0**\n- Changed `lib/gem_hadar/version.rb` to set VERSION constant to **2.5.0**",
"is_bot": false,
"headline": "Update gem version from 2.4.0 to 2.5.0 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T18:08:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97bfa8fcc0fb6ee5273cf107f309574ff83382f5",
"body": "- Included `doc` in the `ignore` list within `Rakefile` for GemHadar\n configuration\n- Added `doc` directory to `.gitignore` file",
"is_bot": false,
"headline": "Add doc directory to gitignore and rakefile",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T18:07:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af85172e50479d8d39fc48fd3d2e8003b1cbdad5",
"body": "- Introduce **doc_code_files** DSL accessor for fine-grained control\n over Ruby source files used in documentation generation\n- Change **files** accessor to return `FileList` instead of plain array\n for better pattern matching capabilities\n- Update **yard_doc_task** to use `doc_code_files` instead\n[…]\nrd compatibility while providing more expressive\n configuration options for **gem** packaging and **YARD** documentation\n- Default **doc_code_files** to use all files (preserving existing\n behavior)",
"is_bot": false,
"headline": "Enhance YARD documentation file configuration with FileList support",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T18:06:38Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "b1d2727707c9fd79d70082e05abcff763fefbc7f",
"body": null,
"is_bot": false,
"headline": "Update gem_hadar development dependency version to **2.4**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-12T17:50:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8a4443ef173117b6c9bfaf1c4dc06a156aed992",
"body": "- Update `VERSION` file from **2.3.0** to **2.4.0**\n- Update `gem_hadar.gemspec` to reflect version **2.4.0**\n- Change `tins` dependency from `~> 1.0` to `~> 1` in `Rakefile`\n- Update development dependency on `gem_hadar` to `~> 2.3` in `gem_hadar.gemspec`\n- Update runtime dependency on `tins` to `~> 1` in `gem_hadar.gemspec`\n- Update `VERSION` constant in `lib/gem_hadar/version.rb` from **2.3.0** to **2.4.0**",
"is_bot": false,
"headline": "Update gem version to 2.4.0 and relax tins dependency",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-11T10:08:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "960266a69be9937021427d28cb71126aca0dd5b7",
"body": "- Updated `VERSION` file to reflect new version **2.3.0**\n- Modified `gem_hadar.gemspec` to use version **2.3.0**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.3.0**",
"is_bot": false,
"headline": "Update gem version from 2.2.0 to 2.3.0 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-09T19:27:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8bc60dfea01dc94eaa48bc79d8cb11885241db06",
"body": "- Updated `ollama-ruby` dependency version from **1.0** to **1.7** in\n both `Rakefile` and `gem_hadar.gemspec`\n- Updated development dependency version for `gem_hadar` from **2.1** to\n **2.2** in `gem_hadar.gemspec`",
"is_bot": false,
"headline": "Update ollama-ruby dependency from version **1.0** to **1.7**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-09-09T19:26:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd16853478944b413e30da55d54df536e10c6550",
"body": "- Updated `VERSION` file to reflect new version **2.2.0**\n- Modified `gem_hadar.gemspec` to use version **2.2.0**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.2.0**",
"is_bot": false,
"headline": "Update gem version from 2.1.1 to 2.2.0",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-29T00:37:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c42c902b58b8435b4e3f4d60fc517bb502fba538",
"body": "- Add **RSpec** (**3.13**) as development dependency\n- Introduce `spec` directory for tests\n- Update gemspec to include test files\n- Refactor `GemHadar::SimpleCov` to use configurable `default_block`\n- Modify `SimpleCov.start` to accept optional block parameter\n- Add `test_dir` configuration to Rakefile\n- Add `package_ignore` for `.gitignore` and `VERSION` files\n- Update `s.files` in gemspec to include spec files",
"is_bot": false,
"headline": "Add RSpec testing and improve SimpleCov configuration",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-29T00:34:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef4655c34a0822dd26158e07e6105c25a55a64db",
"body": "- Updated `VERSION` file to reflect new version **2.1.1**\n- Modified `gem_hadar.gemspec` to bump version to **2.1.1** and update\n development dependency to \"~> 2.1\"\n- Changed `lib/gem_hadar/version.rb` to set VERSION constant to **2.1.1**",
"is_bot": false,
"headline": "Update gem version from 2.1.0 to 2.1.1",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-19T19:38:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d6d830200047b23ccb96855f920320c806ccaa7b",
"body": "- Removed `require 'gem_hadar/changes'` from `lib/gem_hadar.rb`",
"is_bot": false,
"headline": "Remove unused changes module requirement",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-19T19:37:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6fed5c272b24024815fddf98f28bc9d46a061e6",
"body": "- Updated `VERSION` file to reflect new version **2.1.0**\n- Modified `gem_hadar.gemspec` to bump version number from **2.0.5** to **2.1.0**\n- Added `lib/gem_hadar/warn.rb` to both `extra_rdoc_files` and `files` lists\n- Updated `version.rb` to set `VERSION` constant to **2.1.0**",
"is_bot": false,
"headline": "Update gem version from 2.0.5 to 2.1.0",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-19T12:47:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7029e01fc1200b67eba11ea17e082ba1aef1cf6",
"body": "- Wrap `result.least_covered_file` in a rescue clause to return `nil` if an error occurs in simplecov filelists.\n- This prevents crashes when the attribute is not accessible or raises an exception\n- Maintains backward compatibility by providing a fallback value of `nil`",
"is_bot": false,
"headline": "Handle potential errors when accessing least_covered_file attribute",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-19T12:44:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "01080a64e589a4110929b13a3a43353f3b6c6ab6",
"body": "- Remove inline `warn` and `fail` method definitions from `GemHadar`\n class\n- Add `fail` method to `GemHadar::Warn` module for consistent error\n handling\n- Enhance `warn` method in `GemHadar::Warn` to handle non-string objects\n gracefully\n- Update `fail` method in `GemHadar::Warn` to handle non-s\n[…]\ncts\n gracefully\n- Both methods now use `respond_to?(:to_str)` check before color\n formatting\n- Preserve original behavior for string objects while maintaining\n compatibility with other object types",
"is_bot": false,
"headline": "Move warn and fail methods to GemHadar::Warn module",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-18T20:26:41Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d32ab631f90d4c715d628500392a6f0802cf3e40",
"body": "- Extract `GemHadar::SimpleCov::WarnModule` into new `GemHadar::Warn` module\n- Update `GemHadar::SimpleCov` to include `GemHadar::Warn` instead of `WarnModule`\n- Add `require 'gem_hadar/warn'` to `lib/gem_hadar.rb`\n- Add `require 'gem_hadar/warn'` to `lib/gem_hadar/simplecov.rb`\n- Move `Term::ANSIColor` require into `gem_hadar/warn.rb`\n- Update class name from `GemHadar::SimpleCov::WarnModule` to `GemHadar::Warn`",
"is_bot": false,
"headline": "Refactor warning functionality into shared GemHadar::Warn module",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-18T20:18:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7e2201765cb14ce13756022a335801e5a2ac855",
"body": "- Updated `VERSION` file to reflect new version **2.0.5**\n- Modified `gem_hadar.gemspec` to use version **2.0.5**\n- Changed `lib/gem_hadar/version.rb` to set VERSION constant to **2.0.5**",
"is_bot": false,
"headline": "Update gem version from 2.0.4 to 2.0.5 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-14T02:40:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6f8e4f03f091611cf477a44d7645f0406c754292",
"body": null,
"is_bot": false,
"headline": "Include Term::ANSIColor in WarnModule for colored output support.",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-14T02:39:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9f49f373ab198aec09544cf90ccd208ad60f2ef",
"body": "- Updated `VERSION` file to reflect new version **2.0.4**\n- Modified `gem_hadar.gemspec` to use version **2.0.4**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.0.4**",
"is_bot": false,
"headline": "Update gem version from 2.0.3 to 2.0.4 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T18:43:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28b14e1e5c46897cd4e50a19c9ca4d0eef90dee9",
"body": "Add detailed RDoc comments to all DSL accessors explaining purpose, return types, and exceptions",
"is_bot": false,
"headline": "Document GemHadar DSL accessors a bit",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T18:23:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f08adf4f5fad4c5c0742529ca76cb0c36035b720",
"body": "- Add extensive YARD-style documentation throughout the codebase for\n improved API clarity\n- Introduce detailed class and method comments for `GemHadar`,\n `RvmConfig`, `ReleaseCreator`\n- Add documentation for `SimpleCov` module with formatter and warning\n enhancements\n- Include setup documentatio\n[…]\n documentation for RVM and GitHub integration features\n- Update `template` helper method documentation with usage examples\n- Add prompt template documentation for AI-assisted versioning\n capabilities",
"is_bot": false,
"headline": "Add comprehensive documentation to GemHadar",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T14:59:04Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "2b3e9d36c101d2a8af9a969fb54e5e5cf9109ddd",
"body": "- Updated `VERSION` file to reflect new version **2.0.3**\n- Modified `gem_hadar.gemspec` to use version **2.0.3**\n- Changed `lib/gem_hadar/version.rb` to set `VERSION` constant to **2.0.3**",
"is_bot": false,
"headline": "Update gem version from 2.0.2 to 2.0.3 across all version files",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T13:20:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af0ecf93b27559ed61e8d4253a6950ccb2a2f82d",
"body": "suffix and improve\n\n- Use `Tempfile.new(%w[ changelog .md ])` instead of\n `Tempfile.new('changelog.md')` for explicit suffix handling\n- Add comprehensive documentation for the method including parameter and\n return value descriptions",
"is_bot": false,
"headline": "Update edit_temp_file to use proper temporary file",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T13:18:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "884e909c9d0d0272508ffd0e81b8305c7e4b4816",
"body": "- Updated `VERSION` file to reflect new version **2.0.2**\n- Modified `gem_hadar.gemspec` to set version to **2.0.2**\n- Changed `lib/gem_hadar/version.rb` to update `VERSION` constant to **2.0.2**",
"is_bot": false,
"headline": "Bump version from 2.0.1 to 2.0.2",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T02:11:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3863ef009e5e8150e6a2bc596982fd8fe5c95d30",
"body": "- Change temporary file extension from `changelog` to `changelog.md`\n- Switches vim filetype detection from unknown to `markdown`\n- Improves editor integration and syntax highlighting\n- Maintains same functionality while enhancing developer experience\n- Affects `Tempfile` creation in changelog generation process",
"is_bot": false,
"headline": "Update tempfile extension to .md for proper filetype detection",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T02:10:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f062d2bfe406e72ff8de535a9ee845c5fd7e219d",
"body": "- Updated `VERSION` file from **2.0.0** to **2.0.1**\n- Updated gemspec version from **2.0.0** to **2.0.1**\n- Updated `GemHadar::VERSION` constant from **2.0.0** to **2.0.1**\n- Changed development dependency on `gem_hadar` from \"~> 1.27\" to \"~> 2.0\"",
"is_bot": false,
"headline": "Update gem version to **2.0.1**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T02:06:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1a4d3d7e6c717e7fd28375363d58ebfc1ac0a3b",
"body": "- Replace error condition with git log from root to first version\n- Use `git log -p` directly for **first** version case instead of failing\n- Maintain existing behavior for non-first versions\n- Method `version_log_diff` now returns early for first version scenarios",
"is_bot": false,
"headline": "Handle first version diff gracefully",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-13T02:05:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec2399227b6ca9e6f252d6b0af239b61af3a0160",
"body": "- Updated `VERSION` file to reflect new version **2.0.0**\n- Modified `gem_hadar.gemspec` to set version to **2.0.0**\n- Changed `lib/gem_hadar/version.rb` to update `VERSION` constant to **2.0.0**",
"is_bot": false,
"headline": "Bump gem version to **2.0.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-12T20:01:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79efe305cd08707d2f1e48e5511f8197f40f7d9e",
"body": "- Removed the `start_simplecov` method from the `GemHadar` class\n- This method was used to initialize and configure SimpleCov for code coverage",
"is_bot": false,
"headline": "Remove deprecated start_simplecov method",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-12T20:00:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "565bf954494fc709953a0af0c813ad7e6d2c72a1",
"body": "- Updated `VERSION` file from **1.27.0** to **1.28.0**\n- Updated `gem_hadar.gemspec` version from **1.27.0** to **1.28.0**\n- Added `lib/gem_hadar/simplecov.rb` to `extra_rdoc_files` and `files` lists\n- Updated `VERSION` constant in `lib/gem_hadar/version.rb` from **1.27.0** to **1.28.0**",
"is_bot": false,
"headline": "Update gem version to **1.28.0**",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-12T19:49:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7a4502ee68fce43d333dff1f761b0058df670b8b",
"body": "- Add detailed instructions for integrating `simplecov` with `GemHadar`\n- Include steps for installing dependencies, initializing coverage, and\n running tests\n- Document HTML and JSON report generation paths\n- Add tip about using `START_SIMPLECOV=1` environment variable",
"is_bot": false,
"headline": "Update README with SimpleCov integration instructions",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-12T19:40:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6640fa8cf761b17c22f3927e84daf4be67dfbf6b",
"body": "- Introduce `GemHadar::SimpleCov` module for code coverage reporting\n- Add `ContextFormatter` to generate detailed JSON reports including\n line and branch coverage statistics\n- Implement `WarnModule` with orange-colored warning messages using\n `Term::ANSIColor`\n- Support conditional initialization\n[…]\nissing `simplecov` gem with install instructions\n- Filter coverage data based on caller's directory to exclude test files\n- Add fallback to `'unknown'` version string when **VERSION** file is\n absent",
"is_bot": false,
"headline": "Add SimpleCov integration with context formatter and colorized warnings",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-12T19:36:06Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "934ee3ed8e64b94d4c8234218a5204323002f125",
"body": "- Updated the gem name reference from `gem_hadar` to `gem_hadar` in `README.md`\n- Bumped development dependency version from **1.25** to **1.27** in `gem_hadar.gemspec`",
"is_bot": false,
"headline": "Update gem name and version in documentation and spec",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T23:34:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e529504aff2ba8764b0c86ee813f2d45cfbafd4",
"body": "- Enhanced documentation for all DSL accessors in README.md\n- Added comprehensive coverage of core required attributes mapped to gemspec\n- Documented build and package configuration settings\n- Improved documentation for computed properties `path_name`, `path_module`,\n and `module_type`\n- Added clea\n[…]\ntion section with proper syntax highlighting\n- Added Configuration Flags section explaining developing mode behavior\n- All changes align DSL accessors with standard RubyGems specification\n attributes",
"is_bot": false,
"headline": "Documentation improvements for GemHadar DSL accessors",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T23:20:25Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f0c3aff7d053ce04db2f811b6624a4eec89ca866",
"body": "- Added detailed environment variable configuration table to README.md\n- Implemented `rake gem_hadar:config` task to display current\n configuration\n- Added documentation Ollama AI integration with configurable model,\n host, and options\n- Included RubyGems API key setup instructions in README.md\n- \n[…]\nuse new client and model methods\n- Replaced some direct ENV access with proper helper methods throughout\n gem_hadar.rb\n- Simplified `xdg_config_filename` to use new `xdg_config_home` utility\n method",
"is_bot": false,
"headline": "Add comprehensive configuration documentation",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T22:19:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c6c081b5dee6c26d1368a80d1735a1afe4aea9ff",
"body": "- Added new \"Configuration\" section with GitHub API setup instructions\n- Included steps for generating personal access token with `repo` scope\n- Documented setting `GITHUB_API_TOKEN` environment variable\n- Added security note about not committing tokens to version control\n- Mentioned usage with `rake github:release` task for AI-generated changelogs",
"is_bot": false,
"headline": "Add GitHub API configuration section to README",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T20:51:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03ab34d59155efab26bc216715be47bde251324b",
"body": "- Updated `VERSION` file to reflect new version **1.27.0**\n- Modified `gem_hadar.gemspec` to set version to **1.27.0**\n- Adjusted development dependency in `gem_hadar.gemspec` to use \"~> 1.25\"\n- Updated `lib/gem_hadar/version.rb` to set `VERSION` constant to **1.27.0**",
"is_bot": false,
"headline": "Bump version to **1.27.0** for gem_hadar",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T20:35:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9351884d7f97a1a8b09e6d5762ac7b306f00130b",
"body": "- Updated `gem_hadar` development dependency from version **1.25** to **1.26**",
"is_bot": false,
"headline": "Update gem_hadar development dependency version",
"author_name": "Florian Frank",
"author_login": "flori",
"committed_at": "2025-08-06T20:31:52Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 38,
"commits_last_year": 129,
"latest_release_at": "2026-07-25T12:34:23Z",
"latest_release_tag": "v2.18.0",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 16,
"days_since_latest_release": 0,
"mean_days_between_releases": 23.8
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "gem_hadar",
"exists": true,
"license": "MIT",
"keywords": [],
"ecosystem": "rubygems",
"matches_repo": true,
"registry_url": "https://rubygems.org/gems/gem_hadar",
"is_deprecated": false,
"latest_version": "2.18.0",
"repository_url": "https://github.com/flori/gem_hadar",
"versions_count": 97,
"total_downloads": 239436,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": "2011-07-15T20:24:45.062000Z",
"latest_published_at": "2026-07-25T12:34:08.811000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 0
}
]
},
"popularity": {
"forks": 1,
"stars": 4,
"watchers": 1,
"fork_history": {
"days": [
{
"date": "2024-04-05",
"count": 1
}
],
"complete": true,
"collected": 1,
"total_forks": 1
},
"star_history": null,
"open_issues_and_prs": 0
},
"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": [],
"largest_source_bytes": 85708,
"source_files_sampled": 17,
"oversized_source_files": 1,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"Gemfile"
],
"advisories": {
"error": "No resolved dependencies to assess",
"scope": "repository_graph",
"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": [
"rubygems"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [],
"collected": true,
"truncated": false,
"total_count": 0,
"direct_count": 0,
"indirect_count": 0
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 0,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 1
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "flori",
"commits": 236,
"avatar_url": "https://avatars.githubusercontent.com/u/15918?v=4"
},
{
"type": "User",
"login": "fwolfst",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/219373?v=4"
}
],
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"static.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": null,
"reason": "no pull request found",
"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/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 6,
"reason": "project has 2 contributing companies or organizations -- score normalized to 6",
"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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 9,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 5,
"reason": "7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 10,
"reason": "GitHub workflow tokens follow principle of least privilege",
"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": "09f6f810b622465a4c4207a2cd9ebf726258e92d",
"ran_at": "2026-07-25T12:35:36Z",
"aggregate_score": 4.4,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T12:33:57Z",
"oldest_open_prs": [],
"last_merged_pr_at": null,
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/flori/gem_hadar",
"host": "github.com",
"name": "gem_hadar",
"owner": "flori"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"security": 44,
"vitality": 82,
"community": 36,
"governance": 41,
"engineering": 56
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 82,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"commits_last_year": 129,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 16
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "16/52 weeks with commits",
"points": 11.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 16
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "129 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 129
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 5,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 38,
"latest_release_tag": "v2.18.0",
"releases_from_tags": false,
"days_since_latest_release": 0,
"mean_days_between_releases": 23.8
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "38 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 38
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~23.8 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 23.8
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "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": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"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": 36,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 8,
"inputs": {
"forks": 1,
"stars": 4,
"watchers": 1,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "4 stars",
"points": 7.7,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 4
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "1 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 1
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "1 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 1
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "at_risk",
"name": "Community health",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "license file present, not a recognized license",
"points": 16.9,
"status": "partial",
"details": [
{
"code": "license_custom",
"params": {}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 70,
"inputs": {
"packages": [
"gem_hadar"
],
"dependents": null,
"ecosystems": "rubygems",
"total_downloads": 239436,
"monthly_downloads": null
},
"components": [
{
"key": "total_downloads",
"name": "Total downloads",
"detail": "239,436 downloads all-time across rubygems",
"points": 55.9,
"status": "partial",
"details": [
{
"code": "downloads_total",
"params": {
"count": 239436,
"ecosystems": "rubygems"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 41,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 18,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 2,
"top_contributor_share": 0.996
},
"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.1,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "2 contributors",
"points": 2.7,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 2
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 6,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"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": 1,
"inputs": {
"merged_prs": 0,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 1
},
"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": "0/1 decided PRs merged",
"points": 0,
"status": "missed",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 0,
"decided": 1
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 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": 63,
"inputs": {
"followers": 136,
"owner_type": "User",
"is_verified": null,
"owner_login": "flori",
"public_repos": 124,
"account_age_days": 6595
},
"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": "136 followers of flori",
"points": 15.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 136,
"login": "flori"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "124 public repos, account ~18 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 124
}
},
{
"code": "account_age_years",
"params": {
"years": 18
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"gem_hadar"
],
"ecosystems": "rubygems",
"any_deprecated": false,
"min_days_since_publish": 0
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on rubygems",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "rubygems"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 0 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 0
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "97 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 97
}
}
],
"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": "moderate",
"name": "Engineering Quality",
"value": 56,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 60,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"topics": [],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "at_risk",
"name": "Security",
"value": 44,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 44,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 4.4
},
"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": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"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/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 2 contributing companies or organizations -- score normalized to 6",
"points": 1.5,
"status": "partial",
"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": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.2,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "7 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 5",
"points": 3.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "GitHub workflow tokens follow principle of least privilege",
"points": 7.5,
"status": "met",
"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": 7
},
"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": "at_risk",
"name": "AI Readiness",
"value": 34,
"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": 0.85,
"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": "85 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 85,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "critical",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 22,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"primary_language": "Ruby",
"largest_source_bytes": 85708,
"source_files_sampled": 17,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Ruby without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "Ruby"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/17 source files over 60KB",
"points": 51.8,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 17,
"oversized": 1
}
}
],
"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": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-25T12:35:41.189031Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/flori/gem_hadar.svg",
"full_name": "flori/gem_hadar",
"license_state": "custom",
"license_spdx": null
}