{"id":24993,"plugin_id":"plugin_asdk_app_691f1f8f72408191afdbbdf8242bdf86","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:18:59.175Z","digest":"7a685234bf86888fd3a6dfc880d2fdfc418085140a920582cd712019c66b6225","against":5388,"payload":{"name":"netlify-config","description":"Reference for netlify.toml configuration. Use when configuring build settings, redirects, rewrites, headers, deploy contexts, environment variables, or any site-level configuration. Covers the complete netlify.toml syntax including redirects with splats/conditions, headers, deploy contexts, functions config, and edge functions config.","included_files":[{"relative_path":"LICENSE.txt","size_in_bytes":10776},{"relative_path":"agents/openai.yaml","size_in_bytes":332},{"relative_path":"assets/netlify-small.svg","size_in_bytes":1291},{"relative_path":"assets/netlify.png","size_in_bytes":2686}],"skill_md_contents":"---\nname: netlify-config\ndescription: Reference for netlify.toml configuration. Use when configuring build settings, redirects, rewrites, headers, deploy contexts, environment variables, or any site-level configuration. Covers the complete netlify.toml syntax including redirects with splats/conditions, headers, deploy contexts, functions config, and edge functions config.\n---\n\n# Netlify Configuration (netlify.toml)\n\nPlace `netlify.toml` at the repository root (or at the base directory for monorepos).\n\n## Build Settings\n\n```toml\n[build]\n  base = \"project/\"          # Base directory (default: root)\n  command = \"npm run build\"  # Build command\n  publish = \"dist/\"          # Output directory\n```\n\n## Redirects\n\n```toml\n# Basic redirect\n[[redirects]]\nfrom = \"/old\"\nto = \"/new\"\nstatus = 301              # 301 (default), 302, 200 (rewrite), 404\n\n# SPA catch-all\n[[redirects]]\nfrom = \"/*\"\nto = \"/index.html\"\nstatus = 200\n\n# Splat (wildcard)\n[[redirects]]\nfrom = \"/blog/*\"\nto = \"/news/:splat\"\n\n# Path parameters\n[[redirects]]\nfrom = \"/users/:id\"\nto = \"/api/users/:id\"\nstatus = 200\n\n# Force (override existing files)\n[[redirects]]\nfrom = \"/app/*\"\nto = \"/index.html\"\nstatus = 200\nforce = true\n\n# Proxy to external service\n[[redirects]]\nfrom = \"/api/*\"\nto = \"https://api.example.com/:splat\"\nstatus = 200\n[redirects.headers]\n  X-Custom = \"value\"\n\n# Country/language conditions\n[[redirects]]\nfrom = \"/*\"\nto = \"/fr/:splat\"\nstatus = 200\nconditions = { Country = [\"FR\"], Language = [\"fr\"] }\n```\n\n**Rule order matters** — Netlify processes the first matching rule. Place specific rules before general ones.\n\n## Headers\n\n```toml\n[[headers]]\nfor = \"/*\"\n[headers.values]\n  X-Frame-Options = \"DENY\"\n  X-Content-Type-Options = \"nosniff\"\n\n[[headers]]\nfor = \"/assets/*\"\n[headers.values]\n  Cache-Control = \"public, max-age=31536000, immutable\"\n```\n\nHeaders apply only to files served from Netlify's CDN (not to function or edge function responses — set those in code).\n\n## Deploy Contexts\n\nOverride settings per deploy context:\n\n```toml\n[context.production]\ncommand = \"npm run build\"\nenvironment = { NODE_ENV = \"production\" }\n\n[context.deploy-preview]\ncommand = \"npm run build:preview\"\n\n[context.branch-deploy]\ncommand = \"npm run build:staging\"\n\n[context.dev]\nenvironment = { NODE_ENV = \"development\" }\n\n# Specific branch\n[context.\"staging\"]\ncommand = \"npm run build:staging\"\n```\n\n## Environment Variables\n\n```toml\n[build.environment]\nNODE_VERSION = \"20\"\n\n[context.production.environment]\nAPI_URL = \"https://api.prod.com\"\n\n[context.deploy-preview.environment]\nAPI_URL = \"https://api.staging.com\"\n```\n\n**Do not put secrets in netlify.toml** (it's committed to source control). Use the Netlify UI or CLI for sensitive values. See the **netlify-cli-and-deploy** skill for CLI environment variable management.\n\n## Functions Configuration\n\n```toml\n[functions]\ndirectory = \"netlify/functions\"   # Default\nnode_bundler = \"esbuild\"\n\n# Scheduled function\n[functions.\"cleanup\"]\nschedule = \"@daily\"\n```\n\n## Edge Functions Configuration\n\n```toml\n[[edge_functions]]\npath = \"/admin\"\nfunction = \"auth\"\n\n# Import map for Deno URL imports\n[functions]\ndeno_import_map = \"./import_map.json\"\n```\n\n## Dev Server\n\n```toml\n[dev]\ncommand = \"npm start\"       # Dev server command\nport = 8888                 # Netlify Dev port\ntargetPort = 3000           # Your app's dev server port\nframework = \"#auto\"         # \"#auto\", \"#static\", \"#custom\"\n```\n\n## Plugins\n\n```toml\n[[plugins]]\npackage = \"@netlify/plugin-lighthouse\"\n[plugins.inputs]\n  audits = [\"performance\", \"accessibility\"]\n```\n\n## Image CDN\n\n```toml\n[images]\nremote_images = [\"https://example\\\\.com/.*\"]\n```\n\nSee the **netlify-image-cdn** skill for full Image CDN usage.\n"},"changes":[{"path":"/included_files","type":"changed","before":[{"relative_path":"assets/netlify-small.svg","size_in_bytes":1291},{"relative_path":"assets/netlify.png","size_in_bytes":2686}],"after":[{"relative_path":"LICENSE.txt","size_in_bytes":10776},{"relative_path":"agents/openai.yaml","size_in_bytes":332},{"relative_path":"assets/netlify-small.svg","size_in_bytes":1291},{"relative_path":"assets/netlify.png","size_in_bytes":2686}]}],"summary":"Fields changed: 1. /included_files.","summary_kind":"deterministic","summary_metadata":{}}