{
  "title": "Code ownership coverage checker",
  "human_url": "https://happytails.ai/en/developer-tools/code-ownership-coverage-checker/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/code-ownership-coverage-checker/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/code-ownership-coverage-checker.md",
  "content": "Code ownership coverage checker\nFind files that no CODEOWNERS rule covers, files a rule leaves without owners, and rules that match nothing.\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 Code ownership coverage checker\nPaste your CODEOWNERS file.\nList the repository files to check, one per line.\nChoose the GitHub or GitLab dialect and run the check.\nReview uncovered and unowned files, then download the CSV or JSON report.\nUseful next steps\nGit Attributes Checker\nConventional commit checker\nChangelog generator from commits\nWhat it does\nEach listed file is matched against the CODEOWNERS rules and marked covered, unowned (the deciding rule lists no owners) or uncovered. The report also counts files per owner and lists rules that match none of the listed files.\nMatching rules\nPatterns follow gitignore syntax. In the GitHub dialect the last matching rule wins, a rule that matches a folder owns everything inside it, and docs/* owns only files directly in docs. Lines using ! negation or [ ] character ranges are skipped and reported, as GitHub does. In the GitLab dialect sections with the same name are combined whatever their letter case, the last match wins inside each section, owners from every matching section are combined, and section default owners apply to rules without owners.\nLimits\nOwners are only checked for syntax (@user, @org/team or an email address); the tool cannot see whether they exist or have write access. Only the paths you list are checked, and every line of the path list is a path, including names that start with #.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Git Attributes Checker",
      "url": "https://happytails.ai/en/developer-tools/git-attributes-checker/"
    },
    {
      "name": "Conventional commit checker",
      "url": "https://happytails.ai/en/developer-tools/conventional-commit-checker/"
    },
    {
      "name": "Changelog generator from commits",
      "url": "https://happytails.ai/en/developer-tools/changelog-generator-from-commits/"
    }
  ],
  "tool": {
    "id": "code-ownership-coverage-checker",
    "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: per-path CSV, JSON report and owner counts CSV.",
    "implementation": {
      "fields": [
        {
          "key": "paths",
          "label": "Paths to check",
          "value": "README.md\ndocs/guide.md\nsrc/app.js\nsrc/legacy/old.js\nscripts/build.sh",
          "type": "textarea",
          "help": "One file path per line, relative to the repository root. Up to 2,000 paths.",
          "maxLength": 200000
        },
        {
          "key": "dialect",
          "label": "CODEOWNERS dialect",
          "value": "github",
          "type": "select",
          "values": [
            "github",
            "gitlab"
          ]
        },
        {
          "key": "ignoreCase",
          "label": "Ignore letter case",
          "value": false,
          "type": "checkbox"
        }
      ],
      "registrationFamily": "project-snapshot-reference",
      "inputMaxLength": 100000,
      "inputErrorCode": "PROJECT_SNAPSHOT_REFERENCE_TOO_LONG",
      "note": "Ownership rules are matched on this device; owners are not checked against GitHub or GitLab.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 100000,
        "inputMode": "text",
        "label": "CODEOWNERS file",
        "placeholder": "/docs/ @org/writers",
        "help": "One rule per line: a path pattern followed by owners. 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": "# Code ownership coverage checker\n\n- Human page: https://happytails.ai/en/developer-tools/code-ownership-coverage-checker/\n- Markdown: https://happytails.ai/en/developer-tools/code-ownership-coverage-checker.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/code-ownership-coverage-checker/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `code-ownership-coverage-checker` |\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\nOwnership rules are matched on this device; owners are not checked against GitHub or GitLab.\n\n### Inputs and settings\n\nText input: CODEOWNERS file.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n/docs/ @org/writers\n```\n\nOne rule per line: a path pattern followed by owners. Up to 100,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `paths` | Paths to check | textarea | \"README.md\\ndocs/guide.md\\nsrc/app.js\\nsrc/legacy/old.js\\nscripts/build.sh\" |  |\n| `dialect` | CODEOWNERS dialect | select | \"github\" | Allowed: github, gitlab |\n| `ignoreCase` | Ignore letter case | 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: per-path CSV, JSON report and owner counts 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\": \"code-ownership-coverage-checker\",\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: per-path CSV, JSON report and owner counts CSV.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"paths\",\n        \"label\": \"Paths to check\",\n        \"value\": \"README.md\\ndocs/guide.md\\nsrc/app.js\\nsrc/legacy/old.js\\nscripts/build.sh\",\n        \"type\": \"textarea\",\n        \"help\": \"One file path per line, relative to the repository root. Up to 2,000 paths.\",\n        \"maxLength\": 200000\n      },\n      {\n        \"key\": \"dialect\",\n        \"label\": \"CODEOWNERS dialect\",\n        \"value\": \"github\",\n        \"type\": \"select\",\n        \"values\": [\n          \"github\",\n          \"gitlab\"\n        ]\n      },\n      {\n        \"key\": \"ignoreCase\",\n        \"label\": \"Ignore letter case\",\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\": \"Ownership rules are matched on this device; owners are not checked against GitHub or GitLab.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 100000,\n      \"inputMode\": \"text\",\n      \"label\": \"CODEOWNERS file\",\n      \"placeholder\": \"/docs/ @org/writers\",\n      \"help\": \"One rule per line: a path pattern followed by owners. 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\nFind files that no CODEOWNERS rule covers, files a rule leaves without owners, and rules that match nothing.\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 Code ownership coverage checker\n\n1. Paste your CODEOWNERS file.\n2. List the repository files to check, one per line.\n3. Choose the GitHub or GitLab dialect and run the check.\n4. Review uncovered and unowned files, then download the CSV or JSON report.\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- [Conventional commit checker](https://happytails.ai/en/developer-tools/conventional-commit-checker/) ([Markdown](https://happytails.ai/en/developer-tools/conventional-commit-checker.md))\n\n- [Changelog generator from commits](https://happytails.ai/en/developer-tools/changelog-generator-from-commits/) ([Markdown](https://happytails.ai/en/developer-tools/changelog-generator-from-commits.md))\n\n## What it does\n\nEach listed file is matched against the CODEOWNERS rules and marked covered, unowned (the deciding rule lists no owners) or uncovered. The report also counts files per owner and lists rules that match none of the listed files.\n\n### Matching rules\n\nPatterns follow gitignore syntax. In the GitHub dialect the last matching rule wins, a rule that matches a folder owns everything inside it, and docs/\\* owns only files directly in docs. Lines using ! negation or \\[ \\] character ranges are skipped and reported, as GitHub does. In the GitLab dialect sections with the same name are combined whatever their letter case, the last match wins inside each section, owners from every matching section are combined, and section default owners apply to rules without owners.\n\n### Limits\n\nOwners are only checked for syntax (@user, @org/team or an email address); the tool cannot see whether they exist or have write access. Only the paths you list are checked, and every line of the path list is a path, including names that start with #.\n"
}