Implement GitOps workflows with ArgoCD and Flux for automated, declarative Kubernetes...
npx skills add itechmeat/llm-code --skill "cloudflare-pages"
Install specific skill from multi-skill repository
# Description
Deploy full-stack applications on Cloudflare Pages. Covers Git integration, Direct Upload, Wrangler CLI, build configuration, Pages Functions (file-based routing), bindings, headers/redirects, custom domains, environment variables. Keywords: Cloudflare Pages, Pages Functions, Git deployment, Direct Upload, Wrangler, pages.dev, _headers, _redirects, _routes.json, preview deployments.
# SKILL.md
name: cloudflare-pages
description: "Deploy full-stack applications on Cloudflare Pages. Covers Git integration, Direct Upload, Wrangler CLI, build configuration, Pages Functions (file-based routing), bindings, headers/redirects, custom domains, environment variables. Keywords: Cloudflare Pages, Pages Functions, Git deployment, Direct Upload, Wrangler, pages.dev, _headers, _redirects, _routes.json, preview deployments."
Cloudflare Pages
Full-stack application hosting with Git-based or Direct Upload deployments to Cloudflare's global network.
Quick Navigation
- Deployment methods โ
references/deployment.md - Build configuration โ
references/build.md - Pages Functions โ
references/functions.md - Bindings โ
references/bindings.md - Headers & Redirects โ
references/headers-redirects.md - Custom domains โ
references/domains.md - Wrangler CLI โ
references/wrangler.md
When to Use
- Deploying static sites or JAMstack applications
- Building full-stack apps with serverless functions
- Configuring Git-based CI/CD deployments
- Using Direct Upload for prebuilt assets
- Setting up preview deployments for branches/PRs
- Configuring custom domains and redirects
Deployment Methods
| Method | Best For | Limits |
|---|---|---|
| Git integration | CI/CD from GitHub/GitLab | Cannot switch to Direct Upload later |
| Direct Upload | Prebuilt assets, CI pipelines | Wrangler: 20k files, 25 MiB/file |
| C3 CLI | New project scaffolding | Framework-dependent |
Quick Deploy
# Create project
npx wrangler pages project create my-project
# Deploy
npx wrangler pages deploy ./dist
# Preview deployment (branch)
npx wrangler pages deploy ./dist --branch=feature-x
Build Configuration
# Framework presets (command โ output directory)
# React (Vite): npm run build โ dist
# Next.js: npx @cloudflare/next-on-pages@1 โ .vercel/output/static
# Nuxt.js: npm run build โ dist
# Astro: npm run build โ dist
# SvelteKit: npm run build โ .svelte-kit/cloudflare
# Hugo: hugo โ public
Environment Variables (build-time)
| Variable | Value |
|---|---|
CF_PAGES |
1 |
CF_PAGES_BRANCH |
Branch name |
CF_PAGES_COMMIT_SHA |
Commit SHA |
CF_PAGES_URL |
Deployment URL |
Pages Functions
File-based routing in /functions directory:
/functions/index.js โ example.com/
/functions/api/users.js โ example.com/api/users
/functions/users/[id].js โ example.com/users/:id
// functions/api/hello.js
export function onRequest(context) {
return new Response("Hello from Pages Function!");
}
Handler Types
| Export | Trigger |
|---|---|
onRequest |
All methods |
onRequestGet |
GET only |
onRequestPost |
POST only |
Context Object
interface EventContext {
request: Request;
env: Env; // Bindings
params: Params; // Route parameters
waitUntil(promise: Promise<any>): void;
next(): Promise<Response>;
data: Record<string, any>;
}
Bindings
Access Cloudflare resources via context.env:
| Binding | Access Pattern |
|---|---|
| KV | context.env.MY_KV.get("key") |
| R2 | context.env.MY_BUCKET.get("file") |
| D1 | context.env.MY_DB.prepare("...").all() |
| Workers AI | context.env.AI.run(model, input) |
For detailed binding configuration, see:
cloudflare-workersskill.
Headers & Redirects
Create _headers and _redirects in build output directory.
# _headers
/*
X-Frame-Options: DENY
/static/*
Cache-Control: public, max-age=31536000, immutable
# _redirects
/old-page /new-page 301
/blog/* https://blog.example.com/:splat
Warning:
_headersand_redirectsdo NOT apply to Pages Functions responses.
Functions Invocation Routes
Control when Functions are invoked with _routes.json:
{
"version": 1,
"include": ["/api/*"],
"exclude": ["/static/*"]
}
Wrangler Configuration
// wrangler.jsonc
{
"name": "my-pages-app",
"pages_build_output_dir": "./dist",
"compatibility_date": "2024-01-01",
"kv_namespaces": [{ "binding": "KV", "id": "<NAMESPACE_ID>" }],
"d1_databases": [{ "binding": "DB", "database_name": "my-db", "database_id": "<ID>" }]
}
Local Development
npx wrangler pages dev ./dist
# With bindings
npx wrangler pages dev ./dist --kv=MY_KV --d1=MY_DB=<ID>
Critical Prohibitions
- Do NOT expect
_headers/_redirectsto apply to Pages Functions responses โ attach headers in code - Do NOT convert Direct Upload project to Git integration โ not supported
- Do NOT exceed redirect limits โ 2,000 static + 100 dynamic redirects max
- Do NOT use absolute URLs for proxying in
_redirectsโ relative URLs only - Do NOT edit bindings in dashboard when using Wrangler config โ file is source of truth
- Do NOT store secrets in
wrangler.tomlโ use dashboard or.dev.varsfor local
Common Gotchas
| Issue | Solution |
|---|---|
| Functions not invoked | Check _routes.json include/exclude patterns |
| Headers not applied | Ensure not a Functions response; attach in code |
| Build fails | Check build command exit code (must be 0) |
| Custom domain inactive | Verify DNS CNAME points to <site>.pages.dev |
| Preview URLs indexed | Default X-Robots-Tag: noindex applied automatically |
Quick Recipes
Conditional Build Command
#!/bin/bash
if [ "$CF_PAGES_BRANCH" == "production" ]; then
npm run build:prod
else
npm run build:dev
fi
SPA Fallback (404.html)
Upload 404.html in build output root for SPA routing.
Disable Functions for Static Assets
// _routes.json
{
"version": 1,
"include": ["/api/*"],
"exclude": ["/*"]
}
Related Skills
cloudflare-workersโ Worker runtime, bindings API detailscloudflare-d1โ D1 SQL database operationscloudflare-r2โ R2 object storagecloudflare-kvโ KV namespace operations
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.