{"id":"1439c12f-bda6-4fad-a99a-89705316f3f2","shortId":"kuX3mN","kind":"skill","title":"netlify","tagline":"Netlify integration. Manage data, records, and automate workflows. Use when the user wants to interact with Netlify data.","description":"# Netlify\n\nNetlify is a platform for building, deploying, and scaling web applications. It's used by web developers and businesses to streamline their web development workflow with features like continuous deployment, serverless functions, and a global CDN.\n\nOfficial docs: https://docs.netlify.com/\n\n## Netlify Overview\n\n- **Site**\n  - **Deploy**\n  - **Function**\n- **Account**\n\nUse action names and parameters as needed.\n\n## Working with Netlify\n\nThis skill uses the Membrane CLI to interact with Netlify. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing.\n\n### Install the CLI\n\nInstall the Membrane CLI so you can run `membrane` from the terminal:\n\n```bash\nnpm install -g @membranehq/cli@latest\n```\n\n### Authentication\n\n```bash\nmembrane login --tenant --clientName=<agentType>\n```\n\n\nThis will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available.\n\n**Headless environments:** The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with:\n\n```bash\nmembrane login complete <code>\n```\n\nAdd `--json` to any command for machine-readable JSON output.\n\n**Agent Types** : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness\n\n### Connecting to Netlify\n\nUse `connection connect` to create a new connection:\n\n```bash\nmembrane connect --connectorKey netlify\n```\nThe user completes authentication in the browser. The output contains the new connection id.\n\n\n#### Listing existing connections\n\n```bash\nmembrane connection list --json\n```\n\n### Searching for actions\n\nSearch using a natural language description of what you want to do:\n\n```bash\nmembrane action list --connectionId=CONNECTION_ID --intent \"QUERY\" --limit 10 --json\n```\n\nYou should always search for actions in the context of a specific connection.\n\nEach result includes `id`, `name`, `description`, `inputSchema` (what parameters the action accepts), and `outputSchema` (what it returns).\n\n## Popular actions\n\n| Name | Key | Description |\n|---|---|---|\n| List Sites | list-sites | List all sites for the authenticated user |\n| List Site Deploys | list-site-deploys | List all deploys for a specific site |\n| List Site Builds | list-site-builds | List all builds for a specific site |\n| List DNS Zones | list-dns-zones | List all DNS zones for the authenticated user |\n| List DNS Records | list-dns-records | List all DNS records in a zone |\n| List Site Hooks | list-site-hooks | List all notification hooks for a site |\n| List Environment Variables | list-env-vars | List all environment variables for an account |\n| Get Site | get-site | Get details of a specific site by ID |\n| Get Deploy | get-deploy | Get details of a specific deploy by ID |\n| Get Build | get-build | Get details of a specific build by ID |\n| Get DNS Zone | get-dns-zone | Get details of a specific DNS zone |\n| Create Site | create-site | Create a new Netlify site |\n| Create DNS Zone | create-dns-zone | Create a new DNS zone |\n| Create DNS Record | create-dns-record | Create a new DNS record in a zone |\n| Create Environment Variables | create-env-vars | Create or update environment variables for an account |\n| Update Site | update-site | Update an existing Netlify site |\n| Delete Site | delete-site | Delete a Netlify site |\n| Delete DNS Zone | delete-dns-zone | Delete a DNS zone |\n| Delete DNS Record | delete-dns-record | Delete a DNS record from a zone |\n| Trigger Site Build | trigger-site-build | Trigger a new build for a site |\n\n### Creating an action (if none exists)\n\nIf no suitable action exists, describe what you want — Membrane will build it automatically:\n\n```bash\nmembrane action create \"DESCRIPTION\" --connectionId=CONNECTION_ID --json\n```\n\nThe action starts in `BUILDING` state. Poll until it's ready:\n\n```bash\nmembrane action get <id> --wait --json\n```\n\nThe `--wait` flag long-polls (up to `--timeout` seconds, default 30) until the state changes. Keep polling until `state` is no longer `BUILDING`.\n\n- **`READY`** — action is fully built. Proceed to running it.\n- **`CONFIGURATION_ERROR`** or **`SETUP_FAILED`** — something went wrong. Check the `error` field for details.\n\n### Running actions\n\n```bash\nmembrane action run <actionId> --connectionId=CONNECTION_ID --json\n```\n\nTo pass JSON parameters:\n\n```bash\nmembrane action run <actionId> --connectionId=CONNECTION_ID --input '{\"key\": \"value\"}' --json\n```\n\nThe result is in the `output` field of the response.\n\n## Best practices\n\n- **Always prefer Membrane to talk with external apps** — Membrane provides pre-built actions with built-in auth, pagination, and error handling. This will burn less tokens and make communication more secure\n- **Discover before you build** — run `membrane action list --intent=QUERY` (replace QUERY with your intent) to find existing actions before writing custom API calls. Pre-built actions handle pagination, field mapping, and edge cases that raw API calls miss.\n- **Let Membrane handle credentials** — never ask the user for API keys or tokens. Create a connection instead; Membrane manages the full Auth lifecycle server-side with no local secrets.","tags":["netlify","application","skills","membranedev","agent-skills","claude-code-skill","claude-skills","membrane"],"capabilities":["skill","source-membranedev","skill-netlify","topic-agent-skills","topic-claude-code-skill","topic-claude-skills","topic-membrane","topic-skills"],"categories":["application-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/membranedev/application-skills/netlify","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add membranedev/application-skills","source_repo":"https://github.com/membranedev/application-skills","install_from":"skills.sh"}},"qualityScore":"0.463","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (5,305 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-25T06:59:25.029Z","embedding":null,"createdAt":"2026-04-18T22:47:05.091Z","updatedAt":"2026-04-25T06:59:25.029Z","lastSeenAt":"2026-04-25T06:59:25.029Z","tsv":"'10':283 '30':637 'accept':309 'account':65,416,521 'action':67,260,275,290,308,316,582,589,602,610,622,651,674,677,689,723,749,761,770 'add':187 'adjust':211 'agent':198 'alway':287,710 'api':765,780,792 'app':717 'applic':31 'ask':164,788 'auth':103,728,804 'authent':88,126,139,239,330,373 'author':143,162 'autom':8 'automat':92,599 'avail':154 'bash':120,127,183,231,253,273,600,620,675,687 'best':216,708 'browser':137,172,242 'build':26,348,352,355,444,447,453,568,572,576,597,613,649,746 'built':654,722,726,769 'built-in':725 'burn':735 'busi':39 'call':766,781 'case':777 'cdn':56 'chang':641 'check':667 'claud':200 'cli':81,107,111 'clientnam':131 'code':177 'codex':202 'command':158,191 'communic':740 'complet':179,186,238 'configur':659 'connect':220,224,225,230,233,248,252,255,278,297,606,680,692,798 'connectionid':277,605,679,691 'connectorkey':234 'consol':147 'contain':245 'context':293 'continu':49 'creat':227,470,473,475,480,484,487,492,496,499,507,511,514,580,603,796 'create-dns-record':495 'create-dns-zon':483 'create-env-var':510 'create-sit':472 'credenti':90,786 'custom':764 'data':5,19 'default':636 'delet':532,535,537,541,545,548,552,556,559 'delete-dns-record':555 'delete-dns-zon':544 'delete-sit':534 'depend':148 'deploy':27,50,63,334,338,341,431,434,440 'describ':591 'descript':266,303,319,604 'detail':423,436,449,464,672 'develop':37,44 'discov':743 'dns':361,365,369,376,380,384,457,461,468,481,485,490,493,497,502,542,546,550,553,557,561 'doc':58 'docs.netlify.com':59 'edg':776 'either':134 'env':408,512 'environ':156,404,412,508,517 'error':660,669,731 'etc':205 'exist':251,529,585,590,760 'extern':716 'fail':663 'featur':47 'field':670,704,773 'find':759 'finish':181 'flag':628 'focus':96 'full':803 'fulli':653 'function':52,64 'g':123 'get':417,420,422,430,433,435,443,446,448,456,460,463,623 'get-build':445 'get-deploy':432 'get-dns-zon':459 'get-sit':419 'global':55 'handl':87,732,771,785 'har':219 'headless':155 'hook':391,395,399 'id':249,279,301,429,442,455,607,681,693 'includ':300 'input':694 'inputschema':304 'instal':105,108,122 'instead':799 'integr':3,99 'intent':280,751,757 'interact':16,83,151 'json':188,196,257,284,608,625,682,685,697 'keep':642 'key':318,695,793 'languag':265 'latest':125 'less':736 'let':783 'lifecycl':805 'like':48 'limit':282 'list':250,256,276,320,323,325,332,336,339,346,350,353,360,364,367,375,379,382,389,393,396,403,407,410,750 'list-dns-record':378 'list-dns-zon':363 'list-env-var':406 'list-sit':322 'list-site-build':349 'list-site-deploy':335 'list-site-hook':392 'local':811 'logic':100 'login':129,180,185 'long':630 'long-pol':629 'longer':648 'machin':194 'machine-read':193 'make':739 'manag':4,801 'map':774 'membran':80,86,110,116,128,184,232,254,274,595,601,621,676,688,712,718,748,784,800 'membranehq/cli':124 'miss':782 'mode':152 'name':68,302,317 'natur':264 'need':72 'netlifi':1,2,18,20,21,60,75,85,222,235,478,530,539 'never':787 'new':229,247,477,489,501,575 'none':584 'notif':398 'npm':121 'offici':57 'open':135,168 'openclaw':201 'output':197,244,703 'outputschema':311 'overview':61 'pagin':729,772 'paramet':70,306,686 'pass':684 'platform':24 'plumb':104 'poll':615,631,643 'popular':315 'practic':709 'pre':721,768 'pre-built':720,767 'prefer':711 'print':141,160 'proceed':655 'provid':719 'queri':281,752,754 'rather':101 'raw':779 'readabl':195 'readi':619,650 'record':6,377,381,385,494,498,503,554,558,562 'refresh':91 'replac':753 'respons':707 'result':299,699 'return':314 'run':115,657,673,678,690,747 'scale':29 'search':258,261,288 'second':635 'secret':812 'secur':742 'see':175 'server':807 'server-sid':806 'serverless':51 'setup':662 'side':808 'site':62,321,324,327,333,337,345,347,351,359,390,394,402,418,421,427,471,474,479,523,526,531,533,536,540,567,571,579 'skill':77 'skill-netlify' 'someth':664 'source-membranedev' 'specif':296,344,358,426,439,452,467 'start':611 'state':614,640,645 'streamlin':41 'suitabl':588 'talk':714 'tenant':130 'termin':119 'timeout':634 'token':737,795 'tool':212 'topic-agent-skills' 'topic-claude-code-skill' 'topic-claude-skills' 'topic-membrane' 'topic-skills' 'trigger':566,570,573 'trigger-site-build':569 'type':199 'updat':516,522,525,527 'update-sit':524 'url':144,163 'use':10,34,66,78,209,215,223,262 'user':13,166,237,331,374,790 'valu':696 'var':409,513 'variabl':405,413,509,518 'wait':624,627 'want':14,270,594 'warp':203 'web':30,36,43 'went':665 'whether':150 'windsurf':204 'work':73 'workflow':9,45 'write':763 'wrong':666 'zone':362,366,370,388,458,462,469,482,486,491,506,543,547,551,565","prices":[{"id":"7e2e2f25-d544-40ed-9ede-237817beb0a1","listingId":"1439c12f-bda6-4fad-a99a-89705316f3f2","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"membranedev","category":"application-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T22:47:05.091Z"}],"sources":[{"listingId":"1439c12f-bda6-4fad-a99a-89705316f3f2","source":"github","sourceId":"membranedev/application-skills/netlify","sourceUrl":"https://github.com/membranedev/application-skills/tree/main/skills/netlify","isPrimary":false,"firstSeenAt":"2026-04-18T22:47:05.091Z","lastSeenAt":"2026-04-25T06:59:25.029Z"}],"details":{"listingId":"1439c12f-bda6-4fad-a99a-89705316f3f2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"membranedev","slug":"netlify","github":{"repo":"membranedev/application-skills","stars":27,"topics":["agent-skills","claude-code-skill","claude-skills","membrane","skills"],"license":null,"html_url":"https://github.com/membranedev/application-skills","pushed_at":"2026-04-21T11:38:16Z","description":null,"skill_md_sha":"a93ce5e06e64f5de1d17a868970bd06d7f34922a","skill_md_path":"skills/netlify/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/membranedev/application-skills/tree/main/skills/netlify"},"layout":"multi","source":"github","category":"application-skills","frontmatter":{"name":"netlify","license":"MIT","description":"Netlify integration. Manage data, records, and automate workflows. Use when the user wants to interact with Netlify data.","compatibility":"Requires network access and a valid Membrane account (Free tier supported)."},"skills_sh_url":"https://skills.sh/membranedev/application-skills/netlify"},"updatedAt":"2026-04-25T06:59:25.029Z"}}