Agent skill

Repo Codeowners

by ai-dynamo in ai-dynamo/dynamo

Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership.

Apache-2.0Auto-check passedDevelopment

Install Repo Codeowners

skills CLI
$ npx skills add ai-dynamo/dynamo --skill repo-codeowners -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ai-dynamo/dynamo repo-codeowners --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ai-dynamo/dynamo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/repo-codeowners .claude/skills/repo-codeowners && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
repo-codeowners
GitHub stars
8.3k
Token cost
~1.7k tokens
SKILL.md length
780 words
Files
1
Skills in repo
27
Repo updated
First seen
Licence
Apache-2.0

At a glance

Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership.

  • Works in 5 steps: Read the failing job log. The gate… → Decide which area owns the new path.… → Add ONE line to… → …
  • The codeowners check fails on a PR
  • SKILL.md covers Flow 1: Who reviews this change?, Flow 2: The codeowners CI…, Flow 3: Change review routing and Flow 4: Grant an external…, plus 1 more section
  • Calls python and git

What it does

Repo Codeowners is an agent skill from ai-dynamo/dynamo. Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership. Use when the codeowners check fails on a PR, a new directory is unclaimed, someone asks who reviews a path or PR, review routing needs to change, or a contributor should be added as a code owner.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Pull requests. It works with GitHub. The repository describes itself as: A Datacenter Scale Distributed Inference Serving Framework. The licence is Apache-2.0.

When your agent uses it

  • The codeowners check fails on a PR
  • A new directory is unclaimed
  • Someone asks who reviews a path
  • Review routing needs to change

Example prompts

  • “Use the repo-codeowners skill to work with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check…”
  • “/repo-codeowners”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Read the failing job log. The gate prints the exact uncovered files, stale
  2. Decide which area owns the new path. Match it to the subsystem whose code it
  3. Add ONE line to .github/codeowners/areas.yaml under that area's
  4. Regenerate and verify
  5. Commit areas.yaml and CODEOWNERS together (same commit), signed

What it can do on your machine

Read from SKILL.md and the folder at commit f54f2a4. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Repo Codeowners loads about 1.7k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 780 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~101
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ai-dynamo/dynamo at commit f54f2a4, republished under its Apache-2.0 licence (© ai-dynamo). 780 words, ~1,692 tokens.

Download SKILL.mdSave it as .claude/skills/repo-codeowners/SKILL.md (or your agent's skills folder).
name
repo-codeowners
description
Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership. Use when the codeowners check fails on a PR, a new directory is unclaimed, someone asks who reviews a path or PR, review routing needs to change, or a contributor should be added as a code owner.
license
Apache-2.0
metadata.author
NVIDIA
metadata.tags
dynamo, codeowners, review-routing, dev-workflow

Skill: CODEOWNERS Operations

<!--
SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
SPDX-License-Identifier: CC-BY-4.0
-->

The root CODEOWNERS is a build artifact generated from .github/codeowners/areas.yaml (one entry per subsystem area mapping path globs to a GitHub team). Never hand-edit CODEOWNERS - CI regenerates it and fails on any drift. Every change goes through areas.yaml (or external_contributors.yaml) followed by regeneration.

Pick the flow that matches the situation.

Flow 1: Who reviews this change?

bash
# owners of your working tree's changed files (union, as GitHub will request)
python .github/codeowners/who_owns.py --codeowners CODEOWNERS --changed

# owners of specific paths
python .github/codeowners/who_owns.py --codeowners CODEOWNERS <path> [<path> ...]

Add --people to expand each team to its member logins. This works only for NVIDIA org members with an authenticated gh - GitHub does not show team membership to non-members. Without it (or when the lookup fails), the team handles are the answer; the actual reviewers appear on the PR once it opens. For an open PR, the codeowners-reviewers workflow also posts this table (with member names when the org-read secret is configured) to its run summary in the Actions tab, visible to external contributors.

Flow 2: The codeowners CI check failed

This is the strict ownership-policy gate doing its job. It rejects uncovered files, stale globs, and final routing that violates an explicit ownership contract. Coverage is diff-aware on pull requests: only files YOUR PR adds or changes block it; unowned paths inherited from the base branch are a non-fatal warning. A PR that edits ownership policy is judged against the full tree, since a policy edit can orphan any path.

  1. Read the failing job log. The gate prints the exact uncovered files, stale globs, or ownership-contract violations.
  2. Decide which area owns the new path. Match it to the subsystem whose code it extends (the PR that introduced examples/custom_encoder/ was a multimodal feature, so the claim went under the multimodal area).
  3. Add ONE line to .github/codeowners/areas.yaml under that area's path_globs (directory claims end with /). There is no keyword-based auto-classification - every claim is an explicit glob (or a shared: entry for multi-team paths).
  4. Regenerate and verify:
    bash
    python .github/codeowners/build_codeowners.py \
        --areas .github/codeowners/areas.yaml --repo . --strict
    python .github/codeowners/emit_codeowners.py \
        --areas .github/codeowners/areas.yaml --out CODEOWNERS
    The strict run must report 100% coverage.
  5. Commit areas.yaml and CODEOWNERS together (same commit), signed (git commit -s).

Removals fail the stale-policy gate on the deleting PR itself: when your PR removes (or renames away) the final tracked file matched by a declared ownership glob, the gate blocks until the same PR prunes the dead declaration. Prune it from areas.yaml, run step 4, and commit the policy and regenerated artifacts with the deletion. The prune makes your PR a policy change, so the gate then judges it against the full tree, like any routing edit. Stale globs your PR merely inherited from main are reported as warnings and never block ordinary PRs.

Show full SKILL.md (359 more words)Show less

Flow 3: Change review routing

Edit .github/codeowners/areas.yaml - move a glob between areas, add a shared: entry (multi-team co-ownership), or adjust classify.filetype_rules. Then regenerate exactly as in Flow 2 step 4 and commit both files. A routing PR auto-requests the ops team (which owns .github/codeowners/) and the process team (which owns the generated root CODEOWNERS); either review covers its half.

Semantics worth knowing before you file one:

  • Any one owner approves. GitHub combines all owners on a CODEOWNERS line with OR: for a co-owned file, one approval from any listed team satisfies the branch protection. Co-ownership adds review visibility, not extra required approvals.
  • The PR UI can mislead. When a reviewer belongs to more than one owning team, GitHub's reviewers panel may drop a codeowner entry that is actually satisfied (or pending). Branch protection still enforces correctly - trust the merge gate, not the panel.
  • Last match wins. A more specific rule later in the generated file replaces earlier owners for its paths - so a nested override can intentionally narrow a parent's co-ownership. Paths whose joint ownership must never be dropped are declared under required_owners: in areas.yaml; the CI gate fails any policy change that removes a declared owner from a matching path.
  • shared rows list their complete owner set. Owners kept plus owners added. The CI gate validates it: omitting a team that the rule you override grants fails the build. The comparison is against whoever owns the path immediately before your row, so a path an intermediate rule already reassigned is measured against that owner, not a distant ancestor.

Flow 4: Grant an external contributor area-scoped ownership

Individuals who have earned ownership of an area are attached to the area's label - never to a copy of its globs - in .github/codeowners/external_contributors.yaml:

yaml
contributors:
  - name: Jane Doe
    github: janedoe          # -> @janedoe appended to the area's lines
    level: maintainer        # contributor | trusted_contributor | maintainer | core_maintainer
    affiliation: Example Org
    areas: [router]          # area labels from areas.yaml

Regeneration (Flow 2 step 4) appends the handle as a co-owner on every line the area's team owns and rebuilds CONTRIBUTORS.md. Commit all three files (external_contributors.yaml, CODEOWNERS, CONTRIBUTORS.md) together. level is standing metadata shown in CONTRIBUTORS.md; routing is granted by areas.

Reference

  • Schema, the last-match-wins model, and the change process: .github/codeowners/README.md
  • The strict policy gate and drift check run in .github/workflows/codeowners.yml on every PR; both must pass before merge.

© ai-dynamo, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/repo-codeowners of ai-dynamo/dynamo.

Open the folder on GitHubat commit f54f2a4

Compare with similar skills

Repo Codeowners next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Repo Codeowners compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Repo Codeowners this skillai-dynamo/dynamo8.3k—~1.7kAutomated safety check: PassApache-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Check PRonyx-dot-app/onyx32k2 repos~2.3kAutomated safety check: PassMIT
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Create Pull Requestcline/cline70k1 repos~1.6kAutomated safety check: PassApache-2.0
Pull Request Title and Body Writeropeninterpreter/openinterpreter69k2 repos~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Check PR

    onyx-dot-app/onyx

    Checks a GitHub, GitLab, or Perforce (p4) pull request (or merge request, or shelved changelist) for unresolved review comments, failing status checks, and incomplete PR descriptions.

    32k GitHub starsUsed in 2 repos~2.3k tokens
    DevelopmentAuto-check passed
  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Pull Request Title and Body Writer

    openinterpreter/openinterpreter

    Rewrites the title and body of one or more pull requests with gh, leading with why the change was made, then what changed, and describing only the net result.

    69k GitHub starsUsed in 2 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    Runs a loop on a GitHub pull request: fetch review state, triage comments into actions, implement them and resolve threads, repeating until nothing actionable is left.

    48k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed

More from ai-dynamo/dynamo

All 27 skills in this repo
  • Visual Review

    ai-dynamo/dynamo

    Create self-contained interactive HTML code-review dashboards from GitHub or GitLab pull requests, checked-out branch diffs, or supplied unified diffs, with correctness and safe-to-merge scores…

    8.3k GitHub stars~4.5k tokensUpdated today
    Auto-check passed
  • Fern Components

    ai-dynamo/dynamo

    Knowledge of Fern's built-in MDX component library (accordions, callouts, cards, steps, tabs, code blocks, API-reference snippets, and more) for authoring docs pages.

    8.3k GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Fern Navigation

    ai-dynamo/dynamo

    Knowledge of Fern's site-level navigation and structure configuration — how a docs site is organized in docs.yml (and product/version .yml files) using sections, pages, folders, tabs, tab variants…

    8.3k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Dynamo Agent Harness

    ai-dynamo/dynamo

    Drives persistent Claude Code, Codex, or OpenCode agent sessions through a Dynamo OpenAI/Anthropic-compatible endpoint over Agent Client Protocol (ACP).

    8.3k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Benchmark and profile the Dynamo frontend (dynamo.frontend HTTP + tokenizer + KV router) against mock workers (dynamo.mocker).

    8.3k GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Selects and freezes a question-driven AIPerf workload, objective, load policy, and Kubernetes execution manifest for a successfully deployed Dynamo candidate.

    8.3k GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about Repo Codeowners

What does Repo Codeowners do?

Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership. Repo Codeowners is an agent skill from ai-dynamo/dynamo. Works with Dynamo's generated CODEOWNERS - finds out who reviews a change, fixes a failing codeowners CI check, changes review routing, or grants an external contributor area-scoped ownership.

When should I use Repo Codeowners?

Repo Codeowners fits situations like: the codeowners check fails on a PR; A new directory is unclaimed; someone asks who reviews a path; review routing needs to change.

How do I install Repo Codeowners in Claude Code?

Run `npx skills add ai-dynamo/dynamo --skill repo-codeowners -a claude-code`. Or copy the skill folder (.agents/skills/repo-codeowners in ai-dynamo/dynamo) into .claude/skills/repo-codeowners in your project. Claude Code loads it when a task matches its description.

How do I install Repo Codeowners in Codex?

Run `npx skills add ai-dynamo/dynamo --skill repo-codeowners -a codex`. Or copy the skill folder (.agents/skills/repo-codeowners in ai-dynamo/dynamo) into .agents/skills/repo-codeowners in your project. Codex loads it when a task matches its description.

Can I use Repo Codeowners in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ai-dynamo/dynamo --skill repo-codeowners -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/repo-codeowners, .gemini/skills/repo-codeowners, .github/skills/repo-codeowners and .opencode/skills/repo-codeowners in your project.

What does Repo Codeowners need to run?

Going by SKILL.md and its folder, Repo Codeowners needs the command-line tools its instructions call (python and git). Our summary lists: Python 3.

Does Repo Codeowners access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Repo Codeowners safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Repo Codeowners use?

Repo Codeowners is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Repo Codeowners use?

About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Repo Codeowners?

Skills that share tags, products or a category with Repo Codeowners: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Check PR (onyx-dot-app/onyx, 32k stars), Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars) and Create Pull Request (cline/cline, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Repo Codeowners?

ai-dynamo (a GitHub organization) maintains it in ai-dynamo/dynamo, which has 8,250 GitHub stars. The repository holds 27 skills in this directory. The repository was last updated on October 9, 2026.

Source: ai-dynamo/dynamo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.