{
  "title": "Git ignore tester",
  "human_url": "https://happytails.ai/en/developer-tools/git-ignore-tester/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/git-ignore-tester/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/git-ignore-tester.md",
  "content": "Git ignore tester\nCheck which paths a set of .gitignore rules ignores and see the exact rule that decides each one, in the same format as git check-ignore -v.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Git ignore tester\nPaste your .gitignore rules. Add files from other folders after a line such as ==> src/.gitignore <==.\nList the paths to test, one per line, and end folders with a slash. Every line is a path, including names that start with #.\nRun the check and read the deciding source, line and pattern for every path.\nDownload the plain check-ignore output, the JSON report or the CSV table.\nUseful next steps\nGit Attributes Checker\nLong path checker\nRegex tester\nWhat it does\nThe tester applies Git's ignore rules to each path you list and reports whether the path is ignored, which file and line decided it, and whether the decision came from an ignored parent folder. Paths with no matching rule show :: like git check-ignore -v -n.\nHow matching works\nPatterns are matched with a line-by-line port of Git's wildmatch, including negation with !, trailing slashes for folders, leading slashes for anchoring, ** across folders, character classes such as [[:digit:]] and backslash escapes. Deeper .gitignore files win over shallower ones, then .git/info/exclude, then core.excludesFile, and within one file the last matching line wins. As in Git, a file inside an ignored folder cannot be re-included by a later negated rule.\nLimits\nPaths are taken as written, without a leading ./ or spaces at either end of a line; nothing is read from disk, so a path ending in / or containing other listed paths is treated as a folder. The path list has no comments: a line such as #main.c# is tested as a file name, as with git check-ignore --stdin. Global Git configuration such as core.excludesFile is only used when you paste it under a ==> core.excludesFile <== header. Patterns may use at most 4 ** groups.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Git Attributes Checker",
      "url": "https://happytails.ai/en/developer-tools/git-attributes-checker/"
    },
    {
      "name": "Long path checker",
      "url": "https://happytails.ai/en/developer-tools/long-path-checker/"
    },
    {
      "name": "Regex tester",
      "url": "https://happytails.ai/en/developer-tools/regex-tester/"
    }
  ],
  "tool": {
    "id": "git-ignore-tester",
    "category": "developer-tools",
    "built": true,
    "requirements": "Up to 100,000 characters and 1,000 rules, and up to 2,000 paths in 200,000 characters, with rules times path segments under 30,000. Matching runs in your browser. Downloads: check-ignore text, JSON report and CSV.",
    "implementation": {
      "fields": [
        {
          "key": "paths",
          "label": "Paths to test",
          "value": "node_modules/react/index.js\nbuild/app.js\nsrc/build/app.js\nlogs/debug.log\nlogs/keep.log\nsrc/cache.tmp\nsrc/index.js",
          "type": "textarea",
          "help": "One path per line, relative to the repository root. End a folder with / to test it as a folder. Up to 2,000 paths.",
          "maxLength": 200000
        },
        {
          "key": "ignoreCase",
          "label": "Ignore letter case, like core.ignorecase",
          "value": false,
          "type": "checkbox"
        }
      ],
      "registrationFamily": "project-snapshot-reference",
      "inputMaxLength": 100000,
      "inputErrorCode": "PROJECT_SNAPSHOT_REFERENCE_TOO_LONG",
      "note": "Rules are matched on this device with a port of Git wildmatch; nothing is uploaded.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 100000,
        "inputMode": "text",
        "label": "Ignore rules",
        "placeholder": ".gitignore rules, one pattern per line",
        "help": "Add files from other folders after a line such as ==> src/.gitignore <==. Up to 100,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Git ignore tester\n\n- Human page: https://happytails.ai/en/developer-tools/git-ignore-tester/\n- Markdown: https://happytails.ai/en/developer-tools/git-ignore-tester.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/git-ignore-tester/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `git-ignore-tester` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nRules are matched on this device with a port of Git wildmatch; nothing is uploaded.\n\n### Inputs and settings\n\nText input: Ignore rules.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n.gitignore rules, one pattern per line\n```\n\nAdd files from other folders after a line such as ==> src/.gitignore <==. Up to 100,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `paths` | Paths to test | textarea | \"node_modules/react/index.js\\nbuild/app.js\\nsrc/build/app.js\\nlogs/debug.log\\nlogs/keep.log\\nsrc/cache.tmp\\nsrc/index.js\" |  |\n| `ignoreCase` | Ignore letter case, like core.ignorecase | checkbox | false |  |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUp to 100,000 characters and 1,000 rules, and up to 2,000 paths in 200,000 characters, with rules times path segments under 30,000. Matching runs in your browser. Downloads: check-ignore text, JSON report and CSV.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"git-ignore-tester\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Up to 100,000 characters and 1,000 rules, and up to 2,000 paths in 200,000 characters, with rules times path segments under 30,000. Matching runs in your browser. Downloads: check-ignore text, JSON report and CSV.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"paths\",\n        \"label\": \"Paths to test\",\n        \"value\": \"node_modules/react/index.js\\nbuild/app.js\\nsrc/build/app.js\\nlogs/debug.log\\nlogs/keep.log\\nsrc/cache.tmp\\nsrc/index.js\",\n        \"type\": \"textarea\",\n        \"help\": \"One path per line, relative to the repository root. End a folder with / to test it as a folder. Up to 2,000 paths.\",\n        \"maxLength\": 200000\n      },\n      {\n        \"key\": \"ignoreCase\",\n        \"label\": \"Ignore letter case, like core.ignorecase\",\n        \"value\": false,\n        \"type\": \"checkbox\"\n      }\n    ],\n    \"registrationFamily\": \"project-snapshot-reference\",\n    \"inputMaxLength\": 100000,\n    \"inputErrorCode\": \"PROJECT_SNAPSHOT_REFERENCE_TOO_LONG\",\n    \"note\": \"Rules are matched on this device with a port of Git wildmatch; nothing is uploaded.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 100000,\n      \"inputMode\": \"text\",\n      \"label\": \"Ignore rules\",\n      \"placeholder\": \".gitignore rules, one pattern per line\",\n      \"help\": \"Add files from other folders after a line such as ==> src/.gitignore <==. Up to 100,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nCheck which paths a set of .gitignore rules ignores and see the exact rule that decides each one, in the same format as git check-ignore -v.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Git ignore tester\n\n1. Paste your .gitignore rules. Add files from other folders after a line such as ==> src/.gitignore <==.\n2. List the paths to test, one per line, and end folders with a slash. Every line is a path, including names that start with #.\n3. Run the check and read the deciding source, line and pattern for every path.\n4. Download the plain check-ignore output, the JSON report or the CSV table.\n\n## Useful next steps\n\n- [Git Attributes Checker](https://happytails.ai/en/developer-tools/git-attributes-checker/) ([Markdown](https://happytails.ai/en/developer-tools/git-attributes-checker.md))\n\n- [Long path checker](https://happytails.ai/en/developer-tools/long-path-checker/) ([Markdown](https://happytails.ai/en/developer-tools/long-path-checker.md))\n\n- [Regex tester](https://happytails.ai/en/developer-tools/regex-tester/) ([Markdown](https://happytails.ai/en/developer-tools/regex-tester.md))\n\n## What it does\n\nThe tester applies Git's ignore rules to each path you list and reports whether the path is ignored, which file and line decided it, and whether the decision came from an ignored parent folder. Paths with no matching rule show :: like git check-ignore -v -n.\n\n### How matching works\n\nPatterns are matched with a line-by-line port of Git's wildmatch, including negation with !, trailing slashes for folders, leading slashes for anchoring, \\*\\* across folders, character classes such as \\[\\[:digit:\\]\\] and backslash escapes. Deeper .gitignore files win over shallower ones, then .git/info/exclude, then core.excludesFile, and within one file the last matching line wins. As in Git, a file inside an ignored folder cannot be re-included by a later negated rule.\n\n### Limits\n\nPaths are taken as written, without a leading ./ or spaces at either end of a line; nothing is read from disk, so a path ending in / or containing other listed paths is treated as a folder. The path list has no comments: a line such as #main.c# is tested as a file name, as with git check-ignore --stdin. Global Git configuration such as core.excludesFile is only used when you paste it under a ==> core.excludesFile <== header. Patterns may use at most 4 \\*\\* groups.\n"
}