Pre-Submission Preflight Check
SkillFiles & storageChecks your code changes for formatting, lint, and type errors before you submit a pull request.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Pre-Submission Preflight Check skill
About this capability
Pre-PR validation — working tree status, format, lint, TypeScript check, and protected file check. Workspace-aware: detects which of backend/, frontend/, services/apps/*, services/libs/* were changed and runs only the relevant scripts. Use before submitting any PR, to check if code is ready, or to v
What this skill tells your AI
The instructions your AI receives, as published by linuxfoundation/crowd.dev in .claude/skills/preflight/SKILL.md and read by ahel’s review.
Run each check in order. Report results clearly and help fix any issues found.
Check 0: Working Tree Status
git status
git diff --stat origin/main...HEAD
git log --format="%h %s%n%b" origin/main...HEAD
Evaluate:
- Uncommitted changes? — Ask the contributor: commit now or stash?
- No commits ahead of main? — The branch has nothing to validate. Ask if they're on the right branch.
- Commit messages missing JIRA key? — Flag commits that don't include a
CM-XXXreference. - Commits missing
--signoff? — Flag any commits withoutSigned-off-by:lines.
Resolve any issues before proceeding.
Check 1: Detect Changed Workspaces
git diff --name-only origin/main...HEAD
Group changed files into workspaces:
| Workspace | Path prefix | Lint | Format check | Type check | Test |
|---|---|---|---|---|---|
| Backend | backend/ | cd backend && pnpm lint | cd backend && pnpm format-check | cd backend && pnpm tsc-check | cd backend && pnpm test (needs Docker) |
| Frontend | frontend/ | cd frontend && npm run lint | — | — | — |
| Each service | services/apps/<name>/ | cd services/apps/<name> && pnpm lint | cd services/apps/<name> && pnpm format-check | cd services/apps/<name> && pnpm tsc-check | cd services/apps/<name> && pnpm test if vitest present |
| Each lib | services/libs/<name>/ | cd services/libs/<name> && pnpm lint | cd services/libs/<name> && pnpm format-check | cd services/libs/<name> && pnpm tsc-check | cd services/libs/<name> && pnpm test if vitest present |
Run checks only for the workspaces that have changed files.
Check 2: Lint
For each changed workspace, run its lint command. Fix any errors before proceeding. Common issues:
- Unused imports or variables
- Missing type annotations
- Rule violations
Check 3: Format Check
For each changed workspace that has a format-check script (backend, services), run it.
If there are format violations:
# Fix them
pnpm format
# Then stage the fixes
git add -p
Frontend does not have a format-check script — skip for frontend/.
Check 4: TypeScript Check
For each changed workspace that has tsc-check (backend, services), run it. Fix all type errors before proceeding.
Frontend does not have a tsc-check script — skip for frontend/.
Check 5: Protected Files Check
git diff --name-only origin/main...HEAD
Flag any changes to these protected files — they should NOT be modified without code owner approval:
services/libs/data-access-layer/**— shared DAL, high blast radiusservices/libs/common/**— shared utilities, affects all servicesbackend/src/database/migrations/**— append-only Flyway migrationsscripts/cli,scripts/scaffold.yaml,scripts/scaffold.insights.yaml.husky/*,commitlint.config.js.github/workflows/**,.github/actions/**tsconfig*.json,.eslintrc*,.prettierrc*pnpm-lock.yaml,package.json,*/package.jsonCLAUDE.md,.claude/settings.json
If protected files appear in the diff, warn the contributor and ask them to revert or get code owner approval.
Check 6: Commit Verification
git log --format="%h %s%n%b" origin/main...HEAD
- All changes committed? — If not, remind them to commit.
- Commit messages follow conventions? —
type: description (CM-XXX)format percommit-workflow.md. --signoffon all commits? — Every commit must haveSigned-off-by:.- JIRA key referenced? — PR title must contain a JIRA key (validated by CI at
.github/workflows/pr-title-jira-key-lint.yml).
Check 7: Change Summary
git diff --stat origin/main...HEAD
List:
- New files created — with their purpose
- Modified files — with what changed
- API changes — any new or modified routes in
backend/src/api/ - Migration changes — any new Flyway migrations
Results Report
Present a clear report:
PREFLIGHT RESULTS
─────────────────────────────────────────────────
✓ Working tree — Clean, N commits ahead of main
✓ Lint — backend: OK | frontend: OK | services/...: OK
✓ Format check — backend: OK
✓ TypeScript — backend: OK
✓ Protected files — None modified
✓ Commits — Conventions followed, signed off, CM-XXX present
─────────────────────────────────────────────────
READY FOR PR
Or if there are issues:
PREFLIGHT RESULTS
─────────────────────────────────────────────────
✓ Working tree — Clean, N commits ahead of main
✗ Lint — backend: 3 errors (see above)
✓ Format check — backend: OK
✗ TypeScript — backend: 1 error (see above)
✓ Protected files — None modified
✗ Commits — Missing Signed-off-by on 2 commits (run /dco)
─────────────────────────────────────────────────
ISSUES FOUND — Fix before submitting
If All Checks Pass
Suggest creating the PR:
"All preflight checks passed! Ready to create a PR. Would you like me to create it with
gh pr create?"
Signals
- GitHub stars
- 3k
- Forks
- 727
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
preflight-linuxfoundation- Source
- github.com/linuxfoundation/crowd.dev