)]}'
{
  "log": [
    {
      "commit": "dbfd36a4149c03a501be12aacfecdbe237c7b7bf",
      "tree": "c8928ebe5568b7c5330f9211538ab8139832652f",
      "parents": [
        "afeafea91f20db4e5b99620df98baa1628bfeaf1"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri May 23 20:57:50 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Fri May 23 14:25:55 2025 -0700"
      },
      "message": "claudetool/bashkit: add validation to reject blind git add commands\n\nImplements new validation function to prevent bash commands that blindly\nadd all files to git commits, requiring agents to specify files explicitly.\n\nChanges include:\n\n1. New noBlindGitAdd validation function that rejects:\n   - git add -A (add all)\n   - git add --all (add all)\n   - git add . (add current directory)\n   - git add * (add all files via glob)\n\n2. Enhanced hasBlindGitAdd helper function:\n   - Parses git command structure using existing AST approach\n   - Finds \u0027add\u0027 subcommand and checks subsequent arguments\n   - Handles git flags before \u0027add\u0027 subcommand correctly\n   - Allows legitimate specific file additions like \u0027git add main.go\u0027\n\n3. Comprehensive test coverage for all blind add patterns:\n   - Tests rejection of all blind patterns including flags combinations\n   - Tests acceptance of specific file additions and valid use cases\n   - Tests multiline scripts and edge cases like filenames that look\n     like flags (e.g., \u0027file.A\u0027)\n\n4. Integration with existing validation framework:\n   - Added noBlindGitAdd to the checks slice alongside existing\n     noGitConfigUsernameEmailChanges validation\n   - Uses same error reporting pattern and AST parsing infrastructure\n\nThis prevents agents from accidentally committing unintended files or\nbuild artifacts by forcing explicit file specification in git add\ncommands. The validation maintains the existing pattern of being\nmistake-prevention rather than security-focused.\n\nError message provides clear guidance: \u0027blind git add commands (git add -A,\ngit add ., git add --all, git add *) are not allowed, specify files explicitly\u0027\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\nChange-ID: s4d8fe71ef5816b36k\n"
    },
    {
      "commit": "dae19073cfdc420af8da311c4f3974ac6db77b46",
      "tree": "d2744d5ff7a9477e34537d7be9b772a3d3de522b",
      "parents": [
        "a9b3822fd2cfdc035e7daa8b59496f9838a4b2c6"
      ],
      "author": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Wed Apr 30 01:08:57 2025 +0000"
      },
      "committer": {
        "name": "Josh Bleecher Snyder",
        "email": "josharian@gmail.com",
        "time": "Tue Apr 29 19:06:19 2025 -0700"
      },
      "message": "Add WillRunGitCommit function to bashkit\n\nThis function inspects a bash script to determine if it will run \u0027git commit\u0027 commands.\nThe implementation is similar to the existing Check function but is kept separate as requested.\n\nCo-Authored-By: sketch \u003chello@sketch.dev\u003e\n"
    },
    {
      "commit": "2e463fb649fcff14d4025ddb91f630a98e7da526",
      "tree": "0e86854d80d2759a913870655f13226c31f9d30c",
      "parents": [],
      "author": {
        "name": "Earl Lee",
        "email": "earl.lee@sketch.dev",
        "time": "Thu Apr 17 11:22:22 2025 -0700"
      },
      "committer": {
        "name": "Earl Lee",
        "email": "earl.lee@sketch.dev",
        "time": "Thu Apr 17 11:35:33 2025 -0700"
      },
      "message": "Initial commit\n"
    }
  ]
}
