Agent skill

Repo Maintenance Node

by commercetools in commercetools/ui-kit

Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs.

MITAuto-check: notesDevelopment

Install Repo Maintenance Node

skills CLI
$ npx skills add commercetools/ui-kit --skill repo-maintenance-node -a claude-code

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

GitHub CLI
$ gh skill install commercetools/ui-kit repo-maintenance-node --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/commercetools/ui-kit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/repo-maintenance-node .claude/skills/repo-maintenance-node && 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-maintenance-node
GitHub stars
154
Token cost
~3k tokens
SKILL.md length
1,140 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
MIT

At a glance

Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs.

  • Works in 3 steps: Read AGENTS.md (if it exists) for → Fall back to CLAUDE.md if AGENTS.md does… → Read package.json (or the workspace root…
  • Cleaning up a repo
  • SKILL.md covers Arguments, Execution Strategy, Process and Guidelines
  • Calls pnpm, git and gh

What it does

Repo Maintenance Node is an agent skill from commercetools/ui-kit. Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs. Use when cleaning up a repo or preparing for a release.

Its SKILL.md is about 3k 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 Linting and formatting, Monorepo tooling and Design systems. It works with TypeScript. The licence is MIT.

When your agent uses it

  • Cleaning up a repo
  • Preparing for a release

Example prompts

  • “/repo-maintenance-node”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Bash, Grep, Glob, Read, Agent

Workflow steps

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

  1. Read AGENTS.md (if it exists) for
  2. Fall back to CLAUDE.md if AGENTS.md does not exist.
  3. Read package.json (or the workspace root manifest) to identify

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Grep
    • Glob
    • Read
    • Agent

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git
    • gh
    • npm
    • yarn

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

  • Network

    Links to these hosts (documentation or services it may open):

    • knip.dev

    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 Maintenance Node loads about 3k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 1,140 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Grep, Glob, Read, Agent

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 commercetools/ui-kit at commit 62ca335, republished under its MIT licence (© commercetools). 1,140 words, ~2,957 tokens.

Download SKILL.mdSave it as .claude/skills/repo-maintenance-node/SKILL.md (or your agent's skills folder).
name
repo-maintenance-node
description
Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs. Use when cleaning up a repo or preparing for a release.
allowed-tools
Bash, Grep, Glob, Read, Agent
disable-model-invocation
false
argument-hint
[--dry-run] [--section formatting|dead-code|deps|renovate]
scope
node, maintenance

Node/TypeScript Repository Maintenance

Perform a comprehensive health sweep for Node.js and TypeScript repositories. Checks formatting, linting, type errors, dead code, dependency hygiene, cross-package consistency, and open Renovate PRs. Reads AGENTS.md (or CLAUDE.md) for repo-specific commands before running any checks.

Arguments

  • --dry-run (optional): Report issues without making changes.
  • --section <name> (optional): Run only a specific section. Valid values: formatting, dead-code, deps, renovate. If omitted, run all sections.

Target: $ARGUMENTS (defaults to all sections, applying fixes)


Execution Strategy

This skill is designed for parallel execution to minimize wall clock time. After Step 0 (configuration discovery), launch Agents A and B in parallel for the investigative workstreams. Once both complete, run Agent C (Code Quality) last so formatting/linting/type-check fixes apply on top of any changes from earlier steps. Only the dependency section has an additional internal ordering constraint (Renovate PRs must complete before filtering outdated deps).

mermaid
flowchart TD
    S0["Step 0: Read config"] --> A["Agent A: Dead Code Detection"]
    S0 --> B["Agent B: Dependencies & Renovate"]

    B --> B1["B1: Renovate PRs (gh API)"]
    B --> B2["B2: Cross-package validation"]
    B --> B3["B3: Dedupe check"]
    B --> B5["B5: Peer dependency warnings"]
    B1 --> B4["B4: Outdated deps (filtered by B1)"]

    A --> C["Agent C: Code Quality (format + lint + typecheck)"]
    B2 --> C
    B3 --> C
    B4 --> C
    B5 --> C

    C --> F["Step Final: Merge results → Generate report"]

When launching parallel agents, pass them the discovered configuration from Step 0 (package manager, available scripts, monorepo status) so they don't need to re-read config files.


Process

0. Read Repo-Specific Configuration

Before running any checks, read the repository's configuration files to discover project-specific commands and conventions:

  1. Read AGENTS.md (if it exists) for:
    • Lint / format / typecheck commands
    • Build commands
    • Test commands
    • Any repo-specific maintenance notes
  2. Fall back to CLAUDE.md if AGENTS.md does not exist.
  3. Read package.json (or the workspace root manifest) to identify:
    • Available scripts (lint, format, typecheck, etc.)
    • Package manager (pnpm, npm, yarn)
    • Whether this is a monorepo (look for workspaces field or pnpm-workspace.yaml)

Store discovered commands for use in subsequent steps. If a command is not found, skip the corresponding check and note it in the report.

Agent A: Dead Code Detection

Goal: Identify unused exports, imports, and files.

Launch this as a parallel Agent subagent.

Note: This section is complementary to deterministic tools like knip. If knip is configured in the repo, prefer running it. Otherwise, use heuristic detection.

  1. Check for knip:

    bash
    # Look for knip in package.json scripts or devDependencies
    grep -q '"knip"' package.json && echo "knip available"

    If knip is available:

    bash
    pnpm knip            # or: npx knip

    If knip is not available, perform heuristic checks:

  2. Heuristic dead code scan (when knip is unavailable):

    • Search for exported symbols that have no import references elsewhere:
      bash
      grep -rn "export \(const\|function\|class\|type\|interface\|enum\)" src/
    • For each export, check if it's imported anywhere else in the codebase.
    • Flag files with zero inbound imports (potential dead files).
  3. Report findings as a list of potentially unused items. Do NOT auto-delete — dead code removal requires human review.

Agent B: Dependencies & Renovate

Goal: Surface Renovate PRs, check dependency health, and report outdated packages not already covered by Renovate.

Launch this as a parallel Agent subagent. Within this agent, run B1, B2, B3, and B5 in parallel, then run B4 after B1 completes (B4 needs the Renovate package list to filter outdated deps).

B1. Open Renovate PRs
  1. List open PRs from Renovate:

    bash
    gh pr list --author "renovate[bot]" --state open --json number,title,url \
      --jq '.[] | "- #\(.number) \(.title) \(.url)"'

    If the above returns no results, also try:

    bash
    gh pr list --author "renovate" --state open --json number,title,url \
      --jq '.[] | "- #\(.number) \(.title) \(.url)"'
  2. For each open Renovate PR, suggest running /renovate-review:

    Run `/renovate-review <PR-NUMBER>` to assess safety and effort.
  3. Collect the package names covered by open Renovate PRs (parse the PR titles — Renovate titles typically follow Update <package> to <version> or Update dependency <package> to <version>). Store this set for use in B4.

  4. If no open Renovate PRs are found, report that the repo is up to date with Renovate.

B2. Cross-Package Dependency Validation (Monorepos)

If this is a monorepo:

  1. Check for version inconsistencies across packages:

    bash
    # For pnpm workspaces with catalogs
    cat pnpm-workspace.yaml
    
    # For npm/yarn workspaces, compare package.json files
    find . -name "package.json" -not -path "*/node_modules/*" \
      -exec grep -l '"dependencies"' {} \;
  2. Flag any package that pins a different version of the same dependency than other packages in the workspace (unless the workspace uses a catalog or resolutions to centralize versions).

B3. Duplicate Dependencies in Lockfile
  1. Check for duplicates:

    bash
    # pnpm
    pnpm dedupe --check   # or: pnpm dedupe (to fix)
    
    # npm
    npm dedupe --dry-run
    
    # yarn
    yarn dedupe --check
  2. If --dry-run is not set and duplicates are found, run the dedup command and commit the result:

    bash
    pnpm dedupe
    git add pnpm-lock.yaml
    git commit -m "chore(deps): deduplicate lockfile"
B4. Outdated Dependencies (Not Covered by Renovate)

Depends on B1 — wait for Renovate PR list before running.

  1. Run the package manager's outdated check:

    bash
    pnpm outdated         # or: npm outdated / yarn outdated
  2. Filter out any packages that already have an open Renovate PR (from the set collected in B1). Only report dependencies that are outdated AND not already being handled by Renovate.

  3. Categorize the remaining results:

    • Patch updates — safe to update
    • Minor updates — likely safe, review changelogs
    • Major updates — requires migration planning
  4. Report a summary table of outdated dependencies by category.

Show full SKILL.md (507 more words)Show less
B5. Peer Dependency Warnings
  1. Check for peer dependency mismatches:

    bash
    pnpm install --dry-run 2>&1 | grep -i "peer"
    # or: pnpm ls --depth 0 2>&1 | grep -i "WARN"

    Alternatively, parse warnings from the most recent pnpm install output or lockfile metadata.

  2. Report mismatches grouped by severity:

    • Version range conflicts — installed version outside the expected peer range (e.g., plugin expects cypress@4-13 but 15.x is installed)
    • Stale peer pins — addon expects a newer version of its host package than what's installed (e.g., storybook addon expects ^10.2.14 but 10.2.10 is installed)
  3. These are advisory — do not auto-fix peer dependency issues.

Agent C: Code Quality — Formatting, Linting, and Type Checking

Goal: Ensure code style is consistent and free of lint/type errors.

Launch this Agent subagent after Agents A and B complete so that fixes apply on top of any code changes from earlier steps. Within this agent, run formatting, linting, and type checking as parallel Bash commands (they don't depend on each other).

C1. Formatting
  1. Run the formatter using the repo's configured command:

    bash
    # Use the command from AGENTS.md / package.json, e.g.:
    pnpm format          # or: pnpm prettier --write .

    If --dry-run is set, run the check variant instead:

    bash
    pnpm format --check  # or: pnpm prettier --check .
  2. Separate real issues from expected noise. Formatter errors in CI config files (e.g., .circleci-orbs/, codegen.*.yml) that use template variable syntax (${...}) are often false positives — note them separately from actual source code formatting issues.

  3. Report the number of files changed (or issues found in dry-run mode).

C2. Linting
  1. Run the linter with auto-fix:

    bash
    pnpm lint --fix      # or: pnpm eslint --fix .

    If --dry-run is set, run without --fix:

    bash
    pnpm lint            # report only
  2. Report the number of issues fixed and any remaining issues that require manual intervention.

C3. Type Checking
  1. Run the TypeScript compiler in check mode:

    bash
    pnpm typecheck       # or: pnpm tsc --noEmit
  2. If errors are found:

    • Attempt to fix straightforward issues (missing imports, unused variables, simple type mismatches).
    • Flag for human review any complex type errors that cannot be confidently auto-fixed.
  3. Report the number of type errors found, fixed, and remaining.

C4. Commit

If any changes were made (and --dry-run is not set), stage and commit:

bash
git add -A
git commit -m "chore: fix formatting, lint, and type errors"
Final: Generate Report

After all agents complete, merge their results into a summary report:

markdown
## Repository Maintenance Report

### Code Quality

- Formatting: X files fixed (or: "No issues found")
- Lint: X issues fixed, Y remaining
- TypeScript: X errors fixed, Y remaining (flagged for review)

### Dead Code

- Potentially unused exports: X
- Potentially dead files: X
- (See details above)

### Renovate PRs

- Open PRs: X
  - #123 Update foo to v2.0.0
  - #124 Update bar to v1.5.0
- Suggested action: Run `/renovate-review` on each

### Dependencies (not covered by Renovate)

- Outdated (patch): X
- Outdated (minor): X
- Outdated (major): X
- Peer dependency mismatches: X
- Duplicates in lockfile: X (resolved / not resolved)
- Cross-package inconsistencies: X

### Actions Taken

- [ ] Code quality fixes committed
- [ ] Lockfile deduplication committed
- [ ] (other actions)

Guidelines

  • Always read AGENTS.md first. Repo-specific commands take priority over generic fallbacks.
  • Maximize parallelism. Launch Agents A and B simultaneously, then run Agent C after both complete. Within each agent, run independent commands in parallel where possible.
  • Never auto-delete code. Dead code detection is advisory — flag items for human review.
  • Commit incrementally. One commit per section keeps changes easy to review and revert.
  • Respect --dry-run. When set, make zero changes — only report.
  • Handle missing tools gracefully. If a tool (knip, prettier, eslint) is not installed, skip that check and note it in the report rather than failing.
  • Monorepo awareness. Detect whether the repo is a monorepo and adapt dependency checks accordingly.
  • Renovate-first for outdated deps. Always check Renovate PRs before reporting outdated dependencies to avoid duplicate work.

© commercetools, MIT. 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-maintenance-node of commercetools/ui-kit.

Open the folder on GitHubat commit 62ca335

Compare with similar skills

Repo Maintenance Node 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 Maintenance Node compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Repo Maintenance Node this skillcommercetools/ui-kit154—~3kAutomated safety check: NotesMIT
Pnpm Engineteambit/bit18k—~1.9kAutomated safety check: PassCustom licence
Linea Dependency MaintenanceConsensys-Incorporated/linea-attestation-registry1771 repos~3.7kAutomated safety check: WarnMIT
Create Saleor Packagesaleor/apps162—~608Automated safety check: PassCustom licence
Deno Runtime and Package Managerdenoland/skills100—~2.7kAutomated safety check: PassMIT
Monorepo Tooling and Dependenciespierrecomputer/pierre6.2k—~1.1kAutomated safety check: PassApache-2.0

Similar skills

  • Pnpm Engine

    teambit/bit

    Work on the pnpm Rust engine (@pnpm/napi, the pacquet crates) that bit install runs through.

    18k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Linea Dependency Maintenance

    Consensys-Incorporated/linea-attestation-registry

    Safely plan and execute dependency maintenance for JavaScript/TypeScript (npm, pnpm) and GitHub Actions, including npm lockfiles, pnpm workspaces, catalogs, overrides, SHA-pinned action versions…

    177 GitHub starsUsed in 1 repo~3.7k tokens
    DevelopmentAuto-check: warnings
  • Scaffold a new shared package in the saleor-apps monorepo under ./packages/.

    162 GitHub stars~608 tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Official

    Guides writing, running and configuring Deno 2.9+ projects: installing npm and JSR dependencies, permissions, config file precedence and the built-in fmt, lint, test and compile toolchain.

    100 GitHub stars~2.7k tokensUpdated 2 mo ago
    DevelopmentAuto-check passed
  • Sets one monorepo's rules for toolchain pins, pnpm package operations, the shared dependency catalog and moon tasks, so the agent adds versions and scripts the right way.

    6.2k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Lintcn

    remorses/lintcn

    Type-aware TypeScript lint rules in .lintcn/ Go files. An agent skill from remorses/lintcn.

    101 GitHub stars~6.5k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from commercetools/ui-kit

All 11 skills in this repo
  • Agent Restore Context

    commercetools/ui-kit

    Manage restore context files so skills can survive /clear and /compact.

    154 GitHub stars~944 tokensUpdated 4 days ago
    Auto-check: notes
  • Agent Restore Context Setup

    commercetools/ui-kit

    Set up the restore-context hook so skills can resume workflows after /clear and /compact.

    154 GitHub stars~1.4k tokensUpdated 4 days ago
    Auto-check: notes
  • PR Review Navigator

    commercetools/ui-kit

    Generate AI-assisted navigation aids to help humans start reviewing a pull request more efficiently.

    154 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check: notes
  • Remember

    commercetools/ui-kit

    Persist guidelines, conventions, and architectural decisions into the repository's knowledge base.

    154 GitHub stars~2k tokensUpdated 4 days ago
    Auto-check: notes
  • Renovate Review

    commercetools/ui-kit

    Review Renovate dependency upgrade PRs to assess safety and effort.

    154 GitHub stars~907 tokensUpdated 4 days ago
    Auto-check: notes
  • Repo Healthcheck Node

    commercetools/ui-kit

    Verify a Node.js/TypeScript repo's development environment is correctly set up.

    154 GitHub stars~1.6k tokensUpdated 4 days ago
    Auto-check: notes

Works with

Categories

Questions about Repo Maintenance Node

What does Repo Maintenance Node do?

Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs. Repo Maintenance Node is an agent skill from commercetools/ui-kit. Perform a broad Node/TypeScript repository health sweep — formatting, linting, type errors, dead code, dependency hygiene, and open Renovate PRs.

When should I use Repo Maintenance Node?

Repo Maintenance Node fits situations like: cleaning up a repo; preparing for a release.

How do I install Repo Maintenance Node in Claude Code?

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

How do I install Repo Maintenance Node in Codex?

Run `npx skills add commercetools/ui-kit --skill repo-maintenance-node -a codex`. Or copy the skill folder (.agents/skills/repo-maintenance-node in commercetools/ui-kit) into .agents/skills/repo-maintenance-node in your project. Codex loads it when a task matches its description.

Can I use Repo Maintenance Node 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 commercetools/ui-kit --skill repo-maintenance-node -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-maintenance-node, .gemini/skills/repo-maintenance-node, .github/skills/repo-maintenance-node and .opencode/skills/repo-maintenance-node in your project.

What does Repo Maintenance Node need to run?

Going by SKILL.md and its folder, Repo Maintenance Node needs the command-line tools its instructions call (pnpm, git, gh, npm and yarn). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash, Grep, Glob, Read, Agent.

Does Repo Maintenance Node access the network?

SKILL.md names 1 domain. As links in the text: knip.dev. This is read from the text; nothing was executed.

Is Repo Maintenance Node safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Repo Maintenance Node use?

Repo Maintenance Node is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Repo Maintenance Node use?

About 3k tokens (SKILL.md is roughly 12k 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 Maintenance Node?

Skills that share tags, products or a category with Repo Maintenance Node: Pnpm Engine (teambit/bit, 18k stars), Linea Dependency Maintenance (Consensys-Incorporated/linea-attestation-registry, 177 stars), Create Saleor Package (saleor/apps, 162 stars) and Deno Runtime and Package Manager (denoland/skills, 100 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Repo Maintenance Node?

commercetools (a GitHub organization) maintains it in commercetools/ui-kit, which has 154 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 3, 2026.

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