# Code ownership coverage checker

- Human page: https://happytails.ai/en/developer-tools/code-ownership-coverage-checker/
- Markdown: https://happytails.ai/en/developer-tools/code-ownership-coverage-checker.md
- Structured JSON: https://happytails.ai/agents/en/developer-tools/code-ownership-coverage-checker/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `code-ownership-coverage-checker` |
| Category | developer-tools |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Use the visible action or interactive controls. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Ownership rules are matched on this device; owners are not checked against GitHub or GitLab.

### Inputs and settings

Text input: CODEOWNERS file.

Example or placeholder shown in the interface (not a validated fixture):

```text
/docs/ @org/writers
```

One rule per line: a path pattern followed by owners. Up to 100,000 characters. Review the settings before running.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `paths` | Paths to check | textarea | "README.md\ndocs/guide.md\nsrc/app.js\nsrc/legacy/old.js\nscripts/build.sh" |  |
| `dialect` | CODEOWNERS dialect | select | "github" | Allowed: github, gitlab |
| `ignoreCase` | Ignore letter case | checkbox | false |  |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

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.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "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"
  }
}
```

## Page guide

Find files that no CODEOWNERS rule covers, files a rule leaves without owners, and rules that match nothing.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use Code ownership coverage checker

1. Paste your CODEOWNERS file.
2. List the repository files to check, one per line.
3. Choose the GitHub or GitLab dialect and run the check.
4. Review uncovered and unowned files, then download the CSV or JSON report.

## Useful next steps

- [Git Attributes Checker](https://happytails.ai/en/developer-tools/git-attributes-checker/) ([Markdown](https://happytails.ai/en/developer-tools/git-attributes-checker.md))

- [Conventional commit checker](https://happytails.ai/en/developer-tools/conventional-commit-checker/) ([Markdown](https://happytails.ai/en/developer-tools/conventional-commit-checker.md))

- [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))

## What it does

Each 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.

### Matching rules

Patterns 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.

### Limits

Owners 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 #.
