PR Readiness Checker
Validates that code is ready for a pull request by running automated checks (type checking, linting, tests) and reviewing changes.
Quick Start
Run the unified PR readiness script:
bash
bash "$SKILL_DIR/scripts/check-deploy-ready.sh"
Or run individual checks:
bash
# Type checking only bash "$SKILL_DIR/scripts/check-types.sh" # Linting only bash "$SKILL_DIR/scripts/check-lint.sh" # Tests only bash "$SKILL_DIR/scripts/check-tests.sh" # Git diff for code review bash "$SKILL_DIR/scripts/git-diff-for-review.sh" --stdout
What Gets Checked
1. Type Errors
- •TypeScript: Runs
tsc --noEmit(finds local install first, then global) - •Python: Runs
mypyorpyrightif available
2. Lint Issues
- •Node.js: Auto-detects Biome, ESLint, or project-configured linter
- •Python: Auto-detects ruff, flake8, or pylint
3. Tests
- •Node.js: Auto-detects npm test script, Jest, Vitest, Mocha, or Bun test
- •Python: Auto-detects pytest or unittest
4. Code Quality (Git Diff Review)
- •Generates diff of staged/unstaged changes
- •YOU must analyze the diff for issues (see checklist below)
Workflow
Step 1: Run Automated Checks
bash
bash "$SKILL_DIR/scripts/check-deploy-ready.sh"
Step 2: Review Diff Output
Analyze the generated diff for these issues:
Critical (must fix):
- •
anytype usage (TypeScript) or missing type hints (Python) - •
console.log/print()debug statements - •Unhandled errors or missing try-catch
- •Security issues (SQL injection, XSS, hardcoded secrets)
Warnings:
- •TODO/FIXME comments
- •Magic numbers without constants
- •Functions without return types
- •Deep nesting (>3 levels)
Info:
- •Long functions (>50 lines)
- •Poor variable naming
- •Missing docstrings for public APIs
Step 3: Report Findings
Format your findings like this:
code
### Code Review: [filename] **Critical:** - Line X: [issue] - [suggestion] **Warnings:** - Line Y: [issue] - [suggestion] **Info:** - Line Z: [minor improvement]
Manual Commands
Node.js/TypeScript
bash
# Type check (prefers local tsc) ./node_modules/.bin/tsc --noEmit # or npx tsc --noEmit # Lint (auto-detected) ./node_modules/.bin/eslint . --ext .ts,.tsx,.js,.jsx # or for Biome npx biome check . # Run tests npm test # or directly with Jest npx jest # or with Vitest npx vitest run
Python
bash
# Type check mypy . # or pyright # Lint ruff check . # or flake8 . # Run tests pytest # or with unittest python -m unittest discover
Interpreting Results
All Checks Passed
The code is ready for a pull request.
Checks Failed
- •Fix type errors first (they indicate real bugs)
- •Fix lint errors (many can be auto-fixed with
--fix) - •Fix failing tests (ensure all tests pass before deployment)
- •Address code review findings by severity
Troubleshooting
TypeScript not found:
bash
npm install typescript --save-dev
Python type checker not found:
bash
pip install mypy # or: pip install pyright
No linter detected:
bash
# Node.js npm install eslint --save-dev # Python pip install ruff # or: pip install flake8
No test framework detected:
bash
# Node.js (Jest) npm install jest --save-dev # Add to package.json scripts: "test": "jest" # Node.js (Vitest) npm install vitest --save-dev # Python pip install pytest
Empty diff output:
- •Stage changes with
git addor use--unstagedflag - •Ensure you're in a git repository
Reference
See code-review-guide.md for detailed code review patterns and examples.