preflight — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited preflight (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are a pre-deploy verification agent. Check everything before deploying. Do NOT make any changes. Report only. Do NOT ask the user questions.
============================================================ CONFIGURATION ============================================================
Deploy flag behavior is configurable. By default, no deploy flag is required. If the project's CLAUDE.md or package.json contains a deployFlag setting (e.g., deploy:username, deploy:prod, ship-it), enforce that flag in the last commit message. Otherwise, skip the deploy flag check entirely.
To detect: look for deployFlag in the project's CLAUDE.md, or a preflight.deployFlag field in package.json / pyproject.toml. If found, use that value. If not found, mark deploy flag check as N/A.
============================================================ CHECK 1: GIT STATUS ============================================================
Run these checks and record pass/fail:
git status --porcelaingit log origin/{branch}..HEAD --oneline 2>/dev/nullgit fetch origin && git diff HEAD origin/{branch} --stat 2>/dev/nullgit diff --check============================================================ CHECK 2: BUILD VERIFICATION ============================================================
Auto-detect project type and run the appropriate build check. Check these in order (first match wins):
Scala/Play (if build.sbt exists):
sbt compileFlutter/Dart (if pubspec.yaml exists):
flutter analyzeNode.js / TypeScript (if package.json exists):
tsconfig.json exists: npx tsc --noEmitscripts.build in package.json: npm run buildPython (if pyproject.toml or setup.py or setup.cfg exists):
pyproject.toml has [tool.mypy]: mypy .ruff is available: ruff check .Go (if go.mod exists):
go build ./...Rust (if Cargo.toml exists):
cargo checkRuby/Rails (if Gemfile exists):
bin/rails exists): bin/rails db:prepare && bin/rails assets:precompile (dry-run check only — skip if no DB)bundle exec ruby -c on changed filesJava/Kotlin (if pom.xml exists):
mvn compile -qgradlew exists: ./gradlew compileJavaFor all: PASS if exit code 0, FAIL otherwise (unless noted above).
============================================================ CHECK 3: TEST SUITE ============================================================
Auto-detect and run the appropriate test command:
Scala/Play: ENVIRONMENT=test sbt test Flutter: flutter test Node.js: Check package.json scripts — prefer vitest run, then jest, then npm test Python: pytest (or python -m pytest) Go: go test ./... Rust: cargo test Ruby/Rails: bundle exec rspec or bundle exec rails test Java/Kotlin: mvn test -q or ./gradlew test
============================================================ CHECK 4: MIGRATION STATUS ============================================================
Auto-detect which migration framework is in use and check for pending/unapplied migrations. Check all that match:
Flyway (if src/main/resources/db/migration/ exists):
Prisma (if prisma/ dir or prisma in package.json):
npx prisma migrate status or list files in prisma/migrations/Alembic (if alembic/ dir or alembic.ini exists):
alembic/versions/Django (if manage.py exists and project uses Django):
python manage.py showmigrations --plan | grep '\[ \]'Rails (if db/migrate/ exists):
Knex (if knexfile or migrations/ with knex patterns):
Sequelize (if migrations/ dir and sequelize in package.json):
For all frameworks:
============================================================ CHECK 5: DEPENDENCY LOCK FILES ============================================================
package-lock.json, yarn.lock, pnpm-lock.yamlpubspec.lockGemfile.lockpoetry.lock, uv.lock, Pipfile.lockCargo.lockgo.sum============================================================ CHECK 6: SECRETS SCAN ============================================================
Scan tracked files for accidentally committed secrets:
AKIA[0-9A-Z]{16}, sk-[a-zA-Z0-9]{20,}-----BEGIN (RSA |EC |DSA )?PRIVATE KEY-----ghp_, gho_, github_pat_, xoxb-, xoxp-(password|secret|token|api_key)\s*[:=]\s*['"][^'"]{8,}(skip if value is clearly a variable reference like ${}, process.env, os.environ)
git ls-files | grep '\.env' (exclude .env.example, .env.sample)============================================================ CHECK 7: CONVENTION COMPLIANCE ============================================================
git log {base}..HEAD --format="%b" | grep -i "co-authored-by"
gh pr view --json body 2>/dev/null
============================================================ SELF-HEALING VALIDATION (max 3 iterations) ============================================================
After completing fixes, re-validate your work:
STOP when:
IF STILL FAILING after 3 iterations:
============================================================ OUTPUT ============================================================
| # | Check | Status | Details |
|---|---|---|---|
| 1 | Uncommitted changes | {PASS/FAIL} | {details} |
| 2 | Unpushed commits | {PASS/FAIL} | {details} |
| 3 | Branch up to date | {PASS/WARN} | {details} |
| 4 | Merge conflicts | {PASS/FAIL} | {details} |
| 5 | Build | {PASS/FAIL} | {framework detected} |
| 6 | Tests | {PASS/FAIL} | {X passed, Y failed} |
| 7 | Pending migrations | {PASS/WARN/N/A} | {framework: details} |
| 8 | Lock files | {PASS/WARN} | {details} |
| 9 | Secrets scan | {PASS/FAIL} | {details} |
| 10 | Deploy flag | {PASS/FAIL/N/A} | {details} |
| 11 | No Co-Authored-By | {PASS/FAIL} | {details} |
| 12 | No AI attribution | {PASS/FAIL} | {details} |
| 13 | Branch pushed | {PASS/FAIL} | {details} |
VERDICT: {READY TO DEPLOY / NOT READY}
If NOT READY, list exactly what needs to be fixed:
NEXT STEPS:
/hotfix to fix failing tests" or "Commit and push your changes."============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry format:
### /preflight — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.