Install any skill in seconds. Free to start, no credit card required.
Get Started Free →使用 Netlify CLI 完成安装、认证、站点关联、本地开发、环境变量管理与部署。
.claude/skills/ethanyoq-netlify-cli/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -59% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -47% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-20 | ✗→✓ | ▲ Improved | -14% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 26% | 0% |
bashnpm install -g netlify-cli # Global (for local dev) npm install netlify-cli -D # Local (for CI)
Requires Node.js 18.14.0+.
bashnetlify login # Opens browser for OAuth netlify status # Check auth + linked site status
For CI, set NETLIFY_AUTH_TOKEN environment variable instead.
Check if already linked with netlify status. If not:
bash# Interactive netlify link # By Git remote (if using Git) netlify link --git-remote-url https://github.com/org/repo # Create new site netlify init # With Git CI/CD setup netlify init --manual # Without Git CI/CD
Site ID is stored in .netlify/state.json. Add .netlify to .gitignore.
Set up with netlify init. Automatic deploys trigger on push/PR:
Build runs on Netlify's servers. Configure build settings in netlify.toml.
Build locally, then upload:
bashnetlify deploy # Draft deploy (preview URL) netlify deploy --prod # Production deploy netlify deploy --dir=dist # Specify output directory
This works without Git — useful for prototypes, local-only projects, or CI pipelines.
bashnetlify dev
Wraps your framework's dev server and provides:
For projects using Vite (React SPA, TanStack Start, SvelteKit, Remix), the Vite plugin provides Netlify platform primitives directly in the framework's dev server:
bashnpm install @netlify/vite-plugin
typescript// vite.config.ts import netlify from "@netlify/vite-plugin"; export default defineConfig({ plugins: [netlify()] });
Then run your normal dev command (npm run dev) — no netlify dev wrapper needed. This gives you access to Blobs, DB, Functions, and environment variables during development.
See the netlify-frameworks skill for framework-specific local dev guidance.
bash# Set netlify env:set API_KEY "value" netlify env:set API_KEY "value" --secret # Hidden from logs netlify env:set API_KEY "value" --context production # Context-specific # Get netlify env:get API_KEY # List netlify env:list netlify env:list --plain > .env # Export to file # Import from file netlify env:import .env # Delete netlify env:unset API_KEY
Variables can be scoped to deploy contexts:
bashnetlify env:set API_URL "https://api.prod.com" --context production netlify env:set API_URL "https://api.staging.com" --context deploy-preview netlify env:set DEBUG "true" --context branch:feature-x
Netlify.env.get("VAR") (preferred) or process.env.VARVITE_-prefixed vars via import.meta.env.VITE_VARPUBLIC_-prefixed vars via import.meta.env.PUBLIC_VARNever use VITE_ or PUBLIC_ prefix for secrets — these are exposed to the browser.
| Command | Description | |---|---| | netlify status | Auth and site link status | | netlify dev | Start local dev server | | netlify build | Run build locally (mimics Netlify environment) | | netlify deploy | Draft deploy | | netlify deploy --prod | Production deploy | | netlify dev:exec <cmd> | Run command with Netlify environment loaded | | netlify env:list | List environment variables | | netlify clone org/repo | Clone, link, and set up in one step |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 11,385 | 1,376 | -88% | 1 | 1 | 0% | 985 | 1,245 | +26% | 0 | 0 | — |
case-16 | pass→pass | 8,009 | 2,145 | -73% | 1 | 1 | 0% | 1,481 | 1,412 | -5% | 0 | 0 | — |
case-17 | pass→pass | 2,813 | 1,977 | -30% | 1 | 1 | 0% | 457 | 1,406 | +208% | 0 | 0 | — |
case-02 | pass→pass | 2,684 | 2,856 | +6% | 1 | 1 | 0% | 412 | 1,323 | +221% | 0 | 0 | — |
case-03 | fail→pass | 17,071 | 1,906 | -89% | 1 | 1 | 0% | 3,240 | 1,342 | -59% | 0 | 0 | — |
case-04 | pass→pass | 9,109 | 2,137 | -77% | 1 | 1 | 0% | 1,646 | 1,411 | -14% | 0 | 0 | — |
case-05 | pass→pass | 4,530 | 1,941 | -57% | 1 | 1 | 0% | 773 | 1,266 | +64% | 0 | 0 | — |
case-18 | pass→pass | 3,246 | 2,562 | -21% | 1 | 1 | 0% | 521 | 1,427 | +174% | 0 | 0 | — |
case-06 | pass→pass | 3,181 | 2,704 | -15% | 1 | 1 | 0% | 540 | 1,498 | +177% | 0 | 0 | — |
case-07 | pass→pass | 2,245 | 1,875 | -16% | 1 | 1 | 0% | 372 | 1,322 | +255% | 0 | 0 | — |
case-08 | fail→pass | 12,704 | 2,487 | -80% | 1 | 1 | 0% | 2,700 | 1,442 | -47% | 0 | 0 | — |
case-09 | fail→pass | 4,104 | 2,601 | -37% | 1 | 1 | 0% | 741 | 1,434 | +94% | 0 | 0 | — |
case-10 | pass→pass | 4,611 | 1,440 | -69% | 1 | 1 | 0% | 779 | 1,283 | +65% | 0 | 0 | — |
case-11 | pass→pass | 5,077 | 1,975 | -61% | 1 | 1 | 0% | 1,040 | 1,362 | +31% | 0 | 0 | — |
case-12 | pass→pass | 8,354 | 2,446 | -71% | 1 | 1 | 0% | 1,673 | 1,462 | -13% | 0 | 0 | — |
case-13 | pass→pass | 4,066 | 1,666 | -59% | 1 | 1 | 0% | 745 | 1,283 | +72% | 0 | 0 | — |
case-14 | pass→pass | 5,223 | 2,369 | -55% | 1 | 1 | 0% | 942 | 1,461 | +55% | 0 | 0 | — |
case-15 | pass→pass | 4,788 | 1,705 | -64% | 1 | 1 | 0% | 850 | 1,295 | +52% | 0 | 0 | — |
case-19 | pass→pass | 5,882 | 2,340 | -60% | 1 | 1 | 0% | 1,075 | 1,453 | +35% | 0 | 0 | — |
case-20 | fail→pass | 7,555 | 1,625 | -78% | 1 | 1 | 0% | 1,462 | 1,257 | -14% | 0 | 0 | — |
case-21 | pass→pass | 7,304 | 3,413 | -53% | 1 | 1 | 0% | 1,300 | 1,665 | +28% | 0 | 0 | — |
case-22 | pass→pass | 3,115 | 2,276 | -27% | 1 | 1 | 0% | 555 | 1,396 | +152% | 0 | 0 | — |
case-23 | pass→pass | 5,398 | 3,902 | -28% | 1 | 1 | 0% | 1,070 | 1,813 | +69% | 0 | 0 | — |
case-24 | pass→pass | 5,900 | 3,768 | -36% | 1 | 1 | 0% | 1,090 | 1,796 | +65% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.