
Go-आधारित CLI टूल जो लॉन्च तत्परता के लिए कोडबेस को स्कैन करता है, प्रोडक्शन डिप्लॉयमेंट से पहले लापता कॉन्फ़िगरेशन, सुरक्षा स्वच्छता संबंधी समस्याओं, सीक्रेट लीक और इंटीग्रेशन अंतराल का पता लगाता है।
Preflight.sh एक कमांड-लाइन टूल है जो आपके कोडबेस को लॉन्च-तैयारी के लिए स्कैन करता है। प्रोडक्शन पर डिप्लॉय करने से पहले यह गुम कॉन्फ़िगरेशन, इंटीग्रेशन समस्याएँ, सुरक्षा चिंताएँ, SEO मेटाडेटा अंतराल और अन्य सामान्य गलतियों की पहचान करता है।
प्रोडक्शन में शर्मिंदा न हों। बस कमांड चलाएँ।
brew install preflightsh/preflight/preflight
npm install -g @preflightsh/preflight
go install github.com/preflightsh/preflight@latest
docker pull ghcr.io/preflightsh/preflight
curl -sSL https://preflight.sh/install.sh | sh
नवीनतम रिलीज़ GitHub Releases से डाउनलोड करें।
# Initialize in your project directory
cd your-project
preflight init
# Run all checks
preflight scan
# Scan a specific directory
preflight scan /path/to/project
# Run with verbose output (shows which files matched each check)
preflight scan --verbose
preflight scan -v # short form
# Run in CI mode with JSON output
preflight scan --ci --format json
# Run only specific checks, or skip some, for fast iteration
# (one-off; unlike `preflight ignore` it doesn't change preflight.yml)
preflight scan --only seoMeta,ogTwitter
preflight scan --skip vulnerability,secrets
# Silence a check
preflight ignore sitemap
# Unsilence a check
preflight unignore sitemap
# List all check IDs
preflight checks
इस रिपॉज़िटरी में skills/preflight/SKILL.md पर एक skills.sh-संगत एजेंट स्किल शामिल है। यह कोडिंग एजेंटों को एक दोहराने योग्य Preflight वर्कफ़्लो देता है: preflight.yml का निरीक्षण करें, CI-सुरक्षित स्कैन चलाएँ, निष्कर्षों को ट्राइएज करें, असुरक्षित ignore से बचें, वैलिडेशन फिर से चलाएँ, और शेष लॉन्च जोखिम की रिपोर्ट करें।
इस रिपॉज़िटरी से स्किल सूचीबद्ध करें:
# With Bun
bunx --yes skills add preflightsh/preflight --list
# Or with npm
npx --yes skills add preflightsh/preflight --list
केवल Preflight स्किल इंस्टॉल करें:
# With Bun
bunx --yes skills add preflightsh/preflight --skill preflight
# Or with npm
npx --yes skills add preflightsh/preflight --skill preflight
Preflight बिना किसी खाते के कमांड लाइन से पूरी तरह उपयोग योग्य है। app.preflight.sh पर वैकल्पिक डैशबोर्ड आपके स्कैन का होस्टेड इतिहास और प्रत्येक निष्कर्ष के लिए AI-जनित सुधार सुझाव जोड़ता है। आपका कोड कभी भी आपकी मशीन से बाहर नहीं जाता: स्कैनिंग स्थानीय रूप से चलती है, और प्रकाशित करते समय केवल परिणामों का एक संपादित (redacted) सारांश भेजा जाता है (चेक आईडी, स्थितियाँ, और संदेश, कभी भी गुप्त मान या फ़ाइल सामग्री नहीं)।
एक निःशुल्क खाता बनाएँ, फिर CLI को कनेक्ट करें:
preflight auth login # opens your browser to authorize this CLI
preflight auth status # show who you're logged in as
preflight auth logout # remove stored credentials
--publish के साथ अपने डैशबोर्ड पर एक स्कैन प्रकाशित करें। यह रन देखने के लिए एक लिंक प्रिंट करता है। प्रकाशन best-effort है: यदि आप ऑफ़लाइन हैं या लॉग इन नहीं हैं, तो भी स्कैन चलता है और सामान्य रूप से समाप्त होता है।
preflight scan --publish
डैशबोर्ड पर आपको प्रत्येक रन का pass/warn/fail विवरण, निष्कर्षों की पूरी सूची, और प्रति-प्रोजेक्ट इतिहास मिलता है, ताकि आप देख सकें कि डिप्लॉय के बीच क्या बदला।
आप उस इतिहास को टर्मिनल से preflight history के साथ भी पढ़ सकते हैं:
preflight history # recent runs across your projects
preflight history --here # only the current project's runs
preflight history <run-id> # one run's full check results
preflight history --here --format json # machine-readable, for agents
इसके लिए preflight auth login आवश्यक है। --here रन को उसके git remote द्वारा वर्तमान रिपॉज़िटरी से मिलाता है, वही कुंजी जो प्रकाशित करते समय उपयोग होती है।
प्रकाशित रन पर किसी भी विफल या चेतावनी चेक को खोलें ताकि आपके पहचाने गए स्टैक के अनुरूप चरण-दर-चरण सुधार, कॉपी-रेडी कमांड और कोड के साथ तैयार किया जा सके।
Preflight इन सेवाओं के लिए कॉन्फ़िगरेशन का स्वतः पता लगाता है और मान्य करता है:
भुगतान
त्रुटि ट्रैकिंग और मॉनिटरिंग
ईमेल और न्यूज़लेटर
एनालिटिक्स
प्रमाणीकरण
चैट
सूचनाएँ
इंफ्रास्ट्रक्चर
स्टोरेज और CDN
खोज
SEO
AI / LLM
Preflight आपके प्रोजेक्ट रूट में preflight.yml फ़ाइल का उपयोग करता है:
projectName: my-app
stack: rails # rails, next, react, vite, laravel, etc.
urls:
staging: "https://staging.example.com"
production: "https://example.com"
services:
stripe:
declared: true
sentry:
declared: true
checks:
envParity:
enabled: true
envFile: ".env"
exampleFile: ".env.example"
healthEndpoint:
enabled: true
path: "/health" # optional - auto-detects common paths if not set
stripeWebhook:
enabled: true
url: "https://api.example.com/webhooks/stripe"
seoMeta:
enabled: true
mainLayout: "app/views/layouts/application.html.erb"
security:
enabled: true
secrets:
enabled: true
# Per-file allowlist for the secrets scan. Use this to suppress an
# individual finding (e.g. a referrer-restricted public key) without
# disabling the whole check.
allowlist:
- path: web/js/golden-hour.js
fingerprint: "sha256:<hex>" # recommended — pins to the exact secret
reason: "HTTP-referrer-restricted Google Timezone key"
- path: "web/tools/**/*.php" # doublestar globs are supported
indexNow:
enabled: true
key: "your32characterhexkeyhere00000"
emailAuth:
enabled: true # opt-in, checks SPF/DMARC on production domain
humansTxt:
enabled: false # opt-in, credits the team
license:
enabled: false # opt-in, for open source projects
# Silence specific checks or services by ID
ignore:
- sitemap
- llmsTxt
- google_analytics
preflight ignore <id> का उपयोग करके विशिष्ट चेक या सेवाओं को शांत करें:
preflight ignore sitemap # Ignore sitemap check
preflight ignore sentry # Ignore Sentry service validation
preflight unignore sitemap # Re-enable sitemap check
preflight checks # List all ignorable IDs
पूरे secrets चेक को शांत करने के बजाय एक व्यक्तिगत निष्कर्ष को अनुमतिसूची में जोड़ना बेहतर है। कमांड लाइन से एक-बार के अपवाद जोड़ें:
preflight ignore secrets web/js/golden-hour.js
यह आपके preflight.yml में checks.secrets.allowlist के अंतर्गत एक पाथ प्रविष्टि जोड़ता है। path फ़ील्ड एक doublestar ग्लोब है (** निर्देशिकाओं के पार मेल खाता है) जो प्रोजेक्ट-सापेक्ष फ़ाइल पथ के विरुद्ध हल किया जाता है।
फ़िंगरप्रिंट पिन करें। केवल-पाथ अनुमतिसूची उस फ़ाइल में भविष्य में आने वाले किसी भी गुप्त मान को चुपचाप स्वीकार कर लेती है। प्रविष्टि संपादित करें और fingerprint: "sha256:<hex>" जोड़ें — पता लगाए गए गुप्त मान का SHA-256। अब यदि कुंजी घुमाई जाती है या उसी फ़ाइल में कोई भिन्न गुप्त मान दिखाई देता है, तो preflight फिर से अलर्ट करता है।
निष्कर्ष path + fingerprint से मेल खाते हैं, पूरी-फ़ाइल से नहीं। किसी फ़ाइल में अनुमतिसूचीबद्ध फ़िंगरप्रिंट उसी फ़ाइल की अन्य पंक्तियों के अन्य गुप्त मानों को दबाता नहीं है।
SEO और सोशल:
seoMeta, canonical, structured_data, indexNow (ऑप्ट-इन), ogTwitter, viewport, lang
सुरक्षा और इंफ्रास्ट्रक्चर:
securityHeaders, ssl, www_redirect, email_auth (ऑप्ट-इन), secrets
पर्यावरण और स्वास्थ्य:
envParity, healthEndpoint
कोड गुणवत्ता और प्रदर्शन:
vulnerability, debug_statements, error_pages, image_optimization
कानूनी और अनुपालन:
legal_pages
वेब मानक फ़ाइलें:
favicon, robotsTxt, sitemap, llmsTxt, adsTxt (ऑप्ट-इन), humansTxt (ऑप्ट-इन), license (ऑप्ट-इन)
सभी सेवाओं में सत्यापन जाँच होती हैं जो उचित इंटीग्रेशन सुनिश्चित करती हैं (env vars, SDK पैटर्न, कॉन्फ़िग फ़ाइलें):
भुगतान: stripe, paypal, braintree, paddle, lemonsqueezy
त्रुटि ट्रैकिंग: sentry, bugsnag, rollbar, honeybadger, datadog, newrelic, logrocket
लेन-देन ईमेल: postmark, sendgrid, mailgun, aws_ses, resend
ईमेल मार्केटिंग: mailchimp, convertkit, beehiiv, aweber, activecampaign, campaignmonitor, drip, klaviyo, buttondown
एनालिटिक्स: plausible, fathom, google_analytics, fullres, datafast, posthog, mixpanel, amplitude, segment, hotjar
प्रमाणीकरण: auth0, clerk, workos, firebase, supabase
संचार: twilio, slack, discord, intercom, crisp
इंफ्रास्ट्रक्चर: redis, sidekiq, rabbitmq, elasticsearch, convex
स्टोरेज और CDN: aws_s3, cloudinary, cloudflare
खोज: algolia
AI: openai, anthropic, google_ai, mistral, cohere, replicate, huggingface, grok, perplexity, together_ai
SEO: indexNow
कुकी सहमति: cookieconsent, cookiebot, onetrust, termly, cookieyes, iubenda
| Code | Meaning |
|---|---|
| 0 | सभी जाँचें पास हुईं |
| 1 | केवल चेतावनियाँ |
| 2 | त्रुटियाँ मिलीं |
| 64 |
कोड 1 और 2 का अर्थ है कि स्कैन चला और कुछ रिपोर्ट किया। कोड 64 का अर्थ है कि यह उस स्तर तक कभी नहीं पहुँचा, ताकि CI "इस प्रोजेक्ट में समस्याएँ हैं" को "यह invocation गलत था" से अलग बता सके।
कमांड, फ़्लैग और चेक आईडी के लिए टैब कम्प्लीशन (--only और --skip मानों सहित):
# bash (add to ~/.bashrc)
source <(preflight completion bash)
# zsh (add to ~/.zshrc)
source <(preflight completion zsh)
# fish
preflight completion fish | source
आउटपुट NO_COLOR पर्यावरण चर का भी सम्मान करता है।
बैकएंड फ्रेमवर्क
फ्रंटएंड फ्रेमवर्क
पारंपरिक CMS
स्टैटिक साइट जनरेटर
हेडलेस CMS
अन्य
# GitHub Actions example (curl)
- name: Run Preflight
run: |
curl -sSL https://preflight.sh/install.sh | sh
preflight scan --ci --format json
# GitHub Actions example (Docker)
- name: Run Preflight
run: docker run -v ${{ github.workspace }}:/app ghcr.io/preflightsh/preflight scan --ci --format json
MIT
| Check | Description |
|---|
| ENV Parity | .env और .env.example में गुम चरों की तुलना करता है |
| Health Endpoint | साइट की पहुँच की पुष्टि करता है; /health, /healthz, /api/health का स्वतः पता लगाता है या रूट पर फॉलबैक करता है |
| Vulnerability Scan | डिपेंडेंसी कमजोरियों की जाँच करता है (bundle audit, npm audit, आदि) |
| SEO Metadata | शीर्षक, विवरण और Open Graph टैग की जाँच करता है |
| OG & Twitter Cards | og:image, twitter:card और सोशल शेयरिंग मेटाडेटा को मान्य करता है |
| Canonical URL | कैननिकल लिंक टैग की उपस्थिति सुनिश्चित करता है |
| Viewport | मोबाइल के लिए सही viewport मेटा टैग की जाँच करता है |
| Lang Attribute | एक्सेसिबिलिटी के लिए html lang विशेषता को मान्य करता है |
| Structured Data | JSON-LD Schema.org मार्कअप की जाँच करता है |
| Security Headers | prod और staging दोनों पर HSTS, CSP, X-Content-Type-Options को मान्य करता है |
| SSL Certificate | SSL वैधता की जाँच करता है और समाप्ति से पहले चेतावनी देता है |
| WWW Redirect | www/non-www के कैननिकल URL पर रीडायरेक्ट की पुष्टि करता है |
| Email Auth | ईमेल डिलिवरेबिलिटी के लिए SPF/DMARC DNS रिकॉर्ड की जाँच करता है (ऑप्ट-इन) |
| Secret Scanning | कोड में लीक हुई API कुंजियाँ और क्रेडेंशियल ढूँढता है |
| Debug Statements | कोड में छोड़े गए console.log, var_dump, debugger का पता लगाता है |
| Error Pages | कस्टम 404/500 त्रुटि पृष्ठों की जाँच करता है |
| Image Optimization | बड़ी छवियाँ (>500KB) ढूँढता है जो लोड समय को प्रभावित करती हैं |
| Legal Pages | प्राइवेसी पॉलिसी और सेवा की शर्तों के पृष्ठों की जाँच करता है |
| Cookie Consent | कुकी सहमति समाधान का पता लगाता है (GDPR/CCPA अनुपालन) |
| Favicon & Icons | favicon, apple-touch-icon (.png, .webp, .svg), और web manifest की जाँच करता है |
| robots.txt | robots.txt के अस्तित्व और सामग्री की पुष्टि करता है |
| sitemap.xml | साइटमैप की उपस्थिति या जनरेटर की जाँच करता है |
| llms.txt | LLM क्रॉलर मार्गदर्शन फ़ाइल की जाँच करता है |
| ads.txt | विज्ञापन-समर्थित साइटों के लिए ads.txt को मान्य करता है (ऑप्ट-इन) |
| humans.txt | टीम को श्रेय देने के लिए humans.txt की जाँच करता है (ऑप्ट-इन) |
| IndexNow | तेज़ खोज इंडेक्सिंग के लिए IndexNow कुंजी फ़ाइल की पुष्टि करता है (ऑप्ट-इन) |
| LICENSE | लाइसेंस फ़ाइल की जाँच करता है (ऑप्ट-इन, ओपन सोर्स प्रोजेक्ट्स के लिए) |
| Preflight नहीं चल सका (गलत पथ, अपठनीय कॉन्फ़िग, अज्ञात चेक आईडी) |
| 130 | स्कैन रद्द किया गया (Ctrl-C / SIGTERM) |