astro-forms

Form infrastructure for Astro. Zod validation, email, rate limiting, Turnstile, GDPR, Sheets. FAIL = no conversion.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "astro-forms" with this command: npx skills add soborbo/claudeskills/soborbo-claudeskills-astro-forms

Astro Forms Skill

Form infrastructure. Backend only. UI is separate.

Purpose

Server-side form handling. Validation, email, storage, spam protection.

Output

form_ready: true
data_contract: [lead_id, source_page, timestamp, gdpr_consent]
post_submit_flow: [email, thank_you, analytics]
conversion_verdict: PASS | WARN | FAIL

Primary Conversion Declaration

One form per page is THE conversion.

primary_conversion:
  type: form
  id: "contact-form"
  page: "/contact"

All other forms are secondary (newsletter, etc.).

Page Exclusion Rules

Page TypeForms Allowed
landing✅ Primary only
service✅ Primary only
calculator❌ Use calculator skill
thank-you❌ Forbidden
404❌ Forbidden

Form on forbidden page = FAIL.

Data Integrity Contract

Every submission MUST contain:

data_contract:
  required:
    - lead_id          # Unique, generated
    - source_page      # URL where submitted
    - timestamp        # ISO datetime
    - gdpr_consent     # true + timestamp
    - ip_hash          # Anonymized
  optional:
    - utm_source
    - utm_medium
    - utm_campaign

Missing required field = submission invalid.

Post-Submit Flow Contract

All three MUST happen:

post_submit_flow:
  1_confirmation_email: required
  2_thank_you_redirect: required
  3_analytics_event: required
StepWhatFAIL if
EmailConfirmation to customerNot sent
Thank YouRedirect to /thank-youNo redirect
AnalyticsGTM event firedNo event

Any missing = FAIL.

Progressive Disclosure

Personal data only AFTER value established.

StepCan Ask
1Service type, location
2Details, preferences
3+Name, email, phone

Email on step 1 = WARN. GDPR and CRO critical.

Core Features

FeatureImplementation
ValidationZod server-side
EmailResend → Brevo fallback
Rate limitCloudflare KV
CAPTCHATurnstile (invisible)
StorageGoogle Sheets
SpamHoneypot + time-check
GDPRRequired checkbox + timestamp

Spam Protection (All Required)

spam_protection:
  honeypot: true          # Empty field trap
  time_check: 3000ms      # Min fill time
  turnstile: true         # Cloudflare CAPTCHA
  rate_limit: 5/hour/ip   # KV-based

Any missing = WARN.

GDPR Consent

gdpr:
  checkbox_required: true
  timestamp_stored: true
  text: "Elfogadom az adatvédelmi szabályzatot"
  link: "/privacy-policy"

Missing checkbox or timestamp = FAIL.

Conversion Verdict

conversion_verdict: PASS | WARN | FAIL
issues: []
ConditionVerdict
Form on forbidden pageFAIL
Missing data contract fieldFAIL
Post-submit flow incompleteFAIL
GDPR missingFAIL
Spam protection incompleteWARN
Email on step 1WARN
All passPASS

FAIL States

Condition
Form on thank-you page
Missing lead_id/timestamp
No confirmation email
No thank-you redirect
No GTM event
GDPR checkbox missing

WARN States

Condition
Honeypot missing
Time-check missing
Personal data on step 1
Rate limiting not configured

Environment Variables

RESEND_API_KEY=re_xxxxx
BREVO_API_KEY=xkeysib-xxxxx
GOOGLE_SHEETS_WEBHOOK_URL=https://...
TURNSTILE_SITE_KEY=0x...
TURNSTILE_SECRET_KEY=0x...

References

Definition of Done

  • Primary conversion declared
  • Data contract fields all present
  • Post-submit flow complete (email + thank-you + event)
  • GDPR checkbox + timestamp
  • Spam protection configured
  • Progressive disclosure followed
  • conversion_verdict = PASS

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

astro-seo

No summary provided by upstream source.

Repository SourceNeeds Review
General

astro-ux

No summary provided by upstream source.

Repository SourceNeeds Review
General

astro-a11y

No summary provided by upstream source.

Repository SourceNeeds Review