mcpbeat

Run Pre Commit Checks

microsoft/run-pre-commit-checks

Run the mandatory pre-commit checks before committing code. Includes lint, type checking, and unit tests. MUST be run before every commit.

901 tokens
context cost
the whole folder, loaded on every use
1
files
instructions only
0
copies elsewhere
how many repositories repackaged it
133
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/microsoft/vscode-python-environments --skill run-pre-commit-checks

The instruction itself

13 sections, as written by the author

Run Pre-Commit Checks

This skill defines the mandatory checks that must pass before any commit.

When to Use

  • ALWAYS before committing code changes
  • After fixing reviewer or Copilot review comments
  • Before pushing changes
  • When the maintainer agent requests pre-commit validation

Required Checks

All three checks must pass before committing:

1. Lint Check (Required)

npm run lint

What it checks:

  • ESLint rules defined in eslint.config.mjs
  • TypeScript-specific linting rules
  • Import ordering and unused imports
  • Code style consistency

To auto-fix issues:

npm run lint -- --fix

2. Type Check (Required)

npm run compile-tests

What it checks:

  • TypeScript type errors
  • Missing imports
  • Type mismatches
  • Strict null checks

Output location: out/ directory (not used for production)

3. Unit Tests (Required)

npm run unittest

What it checks:

  • All unit tests in src/test/ pass
  • Tests run with Mocha framework
  • Uses configuration from build/.mocha.unittests.json

Full Pre-Commit Workflow

# Run all checks in sequence
npm run lint
npm run compile-tests
npm run unittest

# If all pass, commit
git add -A
git commit -m "feat: your change description (Fixes #N)"

Common Failures and Fixes

ESLint Errors

| Error | Fix |

| ------------------------------------ | ------------------------------------------------------ |

| @typescript-eslint/no-unused-vars | Remove unused variable or prefix with _ |

| import/order | Run npm run lint -- --fix |

| @typescript-eslint/no-explicit-any | Add proper type annotation |

| no-console | Use traceLog/traceVerbose instead of console.log |

Type Errors

| Error | Fix |

| -------------------------------------- | --------------------------------------- |

| TS2339: Property does not exist | Check property name or add type guard |

| TS2345: Argument type not assignable | Check function parameter types |

| TS2322: Type not assignable | Add type assertion or fix type mismatch |

| TS18048: possibly undefined | Add null check or use optional chaining |

Test Failures

  • Read the test failure message carefully
  • Check if you changed behavior that tests depend on
  • Update tests if behavior change is intentional
  • Fix code if behavior change is unintentional

Integration with Review Process

The maintainer agent workflow requires:

Code Change → Reviewer Agent → Pre-Commit Checks → Commit
                    ↓
              Fix Issues → Re-run Reviewer → Pre-Commit Checks

Never skip pre-commit checks. They catch:

  • Type errors that would break the extension
  • Style inconsistencies
  • Regressions in existing functionality

Automation Note

These checks should also be run:

  • By CI on every PR (automated)
  • After addressing review comments (manual trigger)
  • Before merging (automated by CI)

The hooks system can automate running lint after file edits (see .github/hooks/).

How to use it

Copy the folder

Take microsoft/run-pre-commit-checks from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.