[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M70NN799T8XZXCP6R2TMGJ27":3,"skill-same:01M70NN799T8XZXCP6R2TMGJ27":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M70NN799T8XZXCP6R2TMGJ27","wrangler",null,"Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.","shengdabai\u002FTony-Claude-Code-Skills","shengdabai","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F116417419?v=4","01M70F6D2WY5PQV5A92BKYJQEW","Tony Sheng","01M70F6D3GAAAYZ5H4CC1G8VXM",3,"MIT","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrangler\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"r2","store","best practices","workers","load","correct","containers","for","running","queues","cloudflare workers","syntax","commands","secrets","cli","workflows","knowledge","d1","cloudflare","2026-11-10 10:12:30",false,"---\nname: wrangler\ndescription: Cloudflare Workers CLI for deploying, developing, and managing Workers, KV, R2, D1, Vectorize, Hyperdrive, Workers AI, Containers, Queues, Workflows, Pipelines, and Secrets Store. Load before running wrangler commands to ensure correct syntax and best practices. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.\n---\n\n# Wrangler CLI\n\nYour knowledge of Wrangler CLI flags, config fields, and subcommands may be outdated. **Prefer retrieval over pre-training** for any Wrangler task.\n\n## Retrieval Sources\n\nFetch the **latest** information before writing or reviewing Wrangler commands and config. Do not rely on baked-in knowledge for CLI flags, config fields, or binding shapes.\n\n| Source | How to retrieve | Use for |\n|--------|----------------|---------|\n| Wrangler docs | `https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fwrangler\u002F` | CLI commands, flags, config reference |\n| Wrangler config schema | `node_modules\u002Fwrangler\u002Fconfig-schema.json` | Config fields, binding shapes, allowed values |\n| Cloudflare docs | Search tool or `https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002F` | API reference, compatibility dates\u002Fflags |\n\n## FIRST: Check if Wrangler is installed, and if not, install it\n\nCheck if Wrangler is installed by running:\n\n```bash\nwrangler --version  # Requires v4.x+\n```\n\nIf Wrangler is not installed, you should install it by running:\n\n```bash\nnpm install -D wrangler@latest\n```\n\nWherever possible, you should use Wrangler instead of manually constructing API requests.\n\n## Key Guidelines\n\n- **Use `wrangler.jsonc`**: Prefer JSON config over TOML. Newer features are JSON-only.\n- **Set `compatibility_date`**: Use a recent date (within 30 days). Check https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fconfiguration\u002Fcompatibility-dates\u002F\n- **Generate types after config changes**: Run `wrangler types` to update TypeScript bindings.\n- **Local dev defaults to local storage**: Bindings use local simulation unless `remote: true`.\n- **Profile Worker startup**: Run `wrangler check startup` to measure startup time and detect scripts that exceed the startup time limit.\n- **Use environments for staging\u002Fprod**: Define `env.staging` and `env.production` in config.\n\n## Quick Start: New Worker\n\n```bash\n# Initialize new project\nnpx wrangler init my-worker\n\n# Or with a framework\nnpx create-cloudflare@latest my-app\n```\n\n## Quick Reference: Core Commands\n\n| Task | Command |\n|------|---------|\n| Start local dev server | `wrangler dev` |\n| Deploy to Cloudflare | `wrangler deploy` |\n| Deploy dry run | `wrangler deploy --dry-run` |\n| Generate TypeScript types | `wrangler types` |\n| Profile Worker startup time | `wrangler check startup` |\n| View live logs | `wrangler tail` |\n| Delete Worker | `wrangler delete` |\n| Auth status | `wrangler whoami` |\n\n---\n\n## Configuration (wrangler.jsonc)\n\n### Minimal Config\n\n```jsonc\n{\n  \"$schema\": \".\u002Fnode_modules\u002Fwrangler\u002Fconfig-schema.json\",\n  \"name\": \"my-worker\",\n  \"main\": \"src\u002Findex.ts\",\n  \"compatibility_date\": \"2026-01-01\"\n}\n```\n\n### Full Config with Bindings\n\n```jsonc\n{\n  \"$schema\": \".\u002Fnode_modules\u002Fwrangler\u002Fconfig-schema.json\",\n  \"name\": \"my-worker\",\n  \"main\": \"src\u002Findex.ts\",\n  \"compatibility_date\": \"2026-01-01\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n\n  \u002F\u002F Environment variables\n  \"vars\": {\n    \"ENVIRONMENT\": \"production\"\n  },\n\n  \u002F\u002F KV Namespace\n  \"kv_namespaces\": [\n    { \"binding\": \"KV\", \"id\": \"\u003CKV_NAMESPACE_ID>\" }\n  ],\n\n  \u002F\u002F R2 Bucket\n  \"r2_buckets\": [\n    { \"binding\": \"BUCKET\", \"bucket_name\": \"my-bucket\" }\n  ],\n\n  \u002F\u002F D1 Database\n  \"d1_databases\": [\n    { \"binding\": \"DB\", \"database_name\": \"my-db\", \"database_id\": \"\u003CDB_ID>\" }\n  ],\n\n  \u002F\u002F Workers AI (always remote)\n  \"ai\": { \"binding\": \"AI\" },\n\n  \u002F\u002F Vectorize\n  \"vectorize\": [\n    { \"binding\": \"VECTOR_INDEX\", \"index_name\": \"my-index\" }\n  ],\n\n  \u002F\u002F Hyperdrive\n  \"hyperdrive\": [\n    { \"binding\": \"HYPERDRIVE\", \"id\": \"\u003CHYPERDRIVE_ID>\" }\n  ],\n\n  \u002F\u002F Durable Objects\n  \"durable_objects\": {\n    \"bindings\": [\n      { \"name\": \"COUNTER\", \"class_name\": \"Counter\" }\n    ]\n  },\n\n  \u002F\u002F Cron triggers\n  \"triggers\": {\n    \"crons\": [\"0 * * * *\"]\n  },\n\n  \u002F\u002F Environments\n  \"env\": {\n    \"staging\": {\n      \"name\": \"my-worker-staging\",\n      \"vars\": { \"ENVIRONMENT\": \"staging\" }\n    }\n  }\n}\n```\n\n### Generate Types from Config\n\n```bash\n# Generate worker-configuration.d.ts\nwrangler types\n\n# Custom output path\nwrangler types .\u002Fsrc\u002Fenv.d.ts\n\n# Check types are up to date (CI)\nwrangler types --check\n```\n\n---\n\n## Local Development\n\n### Start Dev Server\n\n```bash\n# Local mode (default) - uses local storage simulation\nwrangler dev\n\n# With specific environment\nwrangler dev --env staging\n\n# Force local-only (disable remote bindings)\nwrangler dev --local\n\n# Remote mode - runs on Cloudflare edge (legacy)\nwrangler dev --remote\n\n# Custom port\nwrangler dev --port 8787\n\n# Live reload for HTML changes\nwrangler dev --live-reload\n\n# Test scheduled\u002Fcron handlers\nwrangler dev --test-scheduled\n# Then visit: http:\u002F\u002Flocalhost:8787\u002F__scheduled\n```\n\n### Remote Bindings for Local Dev\n\nUse `remote: true` in binding config to connect to real resources while running locally:\n\n```jsonc\n{\n  \"r2_buckets\": [\n    { \"binding\": \"BUCKET\", \"bucket_name\": \"my-bucket\", \"remote\": true }\n  ],\n  \"ai\": { \"binding\": \"AI\", \"remote\": true },\n  \"vectorize\": [\n    { \"binding\": \"INDEX\", \"index_name\": \"my-index\", \"remote\": true }\n  ]\n}\n```\n\n**Recommended remote bindings**: AI (required), Vectorize, Browser Rendering, mTLS, Images.\n\n### Local Secrets\n\nCreate `.dev.vars` for local development secrets:\n\n```\nAPI_KEY=local-dev-key\nDATABASE_URL=postgres:\u002F\u002Flocalhost:5432\u002Fdev\n```\n\n---\n\n## Deployment\n\n### Deploy Worker\n\n```bash\n# Deploy to production\nwrangler deploy\n\n# Deploy specific environment\nwrangler deploy --env staging\n\n# Dry run (validate without deploying)\nwrangler deploy --dry-run\n\n# Keep dashboard-set variables\nwrangler deploy --keep-vars\n\n# Minify code\nwrangler deploy --minify\n```\n\n### Manage Secrets\n\n> **Security**: Never pass secret values as command arguments or pipe them via `echo`.\n> Use the interactive prompt (preferred), pipe from a file, or use `secret bulk`.\n> Never output, log, or hardcode secret values in commands.\n\n```bash\n# Set secret — interactive prompt (preferred, wrangler will ask for the value securely)\nwrangler secret put API_KEY\n\n# Set secret from a file (useful for PEM keys, CI environments)\nwrangler secret put PRIVATE_KEY \u003C path\u002Fto\u002Fprivate-key.pem\n\n# List secrets\nwrangler secret list\n\n# Delete secret\nwrangler secret delete API_KEY\n\n# Bulk secrets from JSON file (do not commit this file to version control)\nwrangler secret bulk secrets.json\n```\n\n### Versions and Rollback\n\n```bash\n# List recent versions\nwrangler versions list\n\n# View specific version\nwrangler versions view \u003CVERSION_ID>\n\n# Rollback to previous version\nwrangler rollback\n\n# Rollback to specific version\nwrangler rollback \u003CVERSION_ID>\n```\n\n---\n\n## KV (Key-Value Store)\n\n### Manage Namespaces\n\n```bash\n# Create namespace\nwrangler kv namespace create MY_KV\n\n# List namespaces\nwrangler kv namespace list\n\n# Delete namespace\nwrangler kv namespace delete --namespace-id \u003CID>\n```\n\n### Manage Keys\n\n```bash\n# Put value\nwrangler kv key put --namespace-id \u003CID> \"key\" \"value\"\n\n# Put with expiration (seconds)\nwrangler kv key put --namespace-id \u003CID> \"key\" \"value\" --expiration-ttl 3600\n\n# Get value\nwrangler kv key get --namespace-id \u003CID> \"key\"\n\n# List keys\nwrangler kv key list --namespace-id \u003CID>\n\n# Delete key\nwrangler kv key delete --namespace-id \u003CID> \"key\"\n\n# Bulk put from JSON\nwrangler kv bulk put --namespace-id \u003CID> data.json\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"kv_namespaces\": [\n    { \"binding\": \"CACHE\", \"id\": \"\u003CNAMESPACE_ID>\" }\n  ]\n}\n```\n\n---\n\n## R2 (Object Storage)\n\n### Manage Buckets\n\n```bash\n# Create bucket\nwrangler r2 bucket create my-bucket\n\n# Create with location hint\nwrangler r2 bucket create my-bucket --location wnam\n\n# List buckets\nwrangler r2 bucket list\n\n# Get bucket info\nwrangler r2 bucket info my-bucket\n\n# Delete bucket\nwrangler r2 bucket delete my-bucket\n```\n\n### Manage Objects\n\n```bash\n# Upload object\nwrangler r2 object put my-bucket\u002Fpath\u002Ffile.txt --file .\u002Flocal-file.txt\n\n# Download object\nwrangler r2 object get my-bucket\u002Fpath\u002Ffile.txt\n\n# Delete object\nwrangler r2 object delete my-bucket\u002Fpath\u002Ffile.txt\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"r2_buckets\": [\n    { \"binding\": \"ASSETS\", \"bucket_name\": \"my-bucket\" }\n  ]\n}\n```\n\n---\n\n## D1 (SQL Database)\n\n### Manage Databases\n\n```bash\n# Create database\nwrangler d1 create my-database\n\n# Create with location\nwrangler d1 create my-database --location wnam\n\n# List databases\nwrangler d1 list\n\n# Get database info\nwrangler d1 info my-database\n\n# Delete database\nwrangler d1 delete my-database\n```\n\n### Execute SQL\n\n```bash\n# Execute SQL command (remote)\nwrangler d1 execute my-database --remote --command \"SELECT * FROM users\"\n\n# Execute SQL file (remote)\nwrangler d1 execute my-database --remote --file .\u002Fschema.sql\n\n# Execute locally\nwrangler d1 execute my-database --local --command \"SELECT * FROM users\"\n```\n\n### Migrations\n\n```bash\n# Create migration\nwrangler d1 migrations create my-database create_users_table\n\n# List pending migrations\nwrangler d1 migrations list my-database --local\n\n# Apply migrations locally\nwrangler d1 migrations apply my-database --local\n\n# Apply migrations to remote\nwrangler d1 migrations apply my-database --remote\n```\n\n### Export\u002FBackup\n\n```bash\n# Export schema and data\nwrangler d1 export my-database --remote --output backup.sql\n\n# Export schema only\nwrangler d1 export my-database --remote --output schema.sql --no-data\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"d1_databases\": [\n    {\n      \"binding\": \"DB\",\n      \"database_name\": \"my-database\",\n      \"database_id\": \"\u003CDATABASE_ID>\",\n      \"migrations_dir\": \".\u002Fmigrations\"\n    }\n  ]\n}\n```\n\n---\n\n## Vectorize (Vector Database)\n\n### Manage Indexes\n\n```bash\n# Create index with dimensions\nwrangler vectorize create my-index --dimensions 768 --metric cosine\n\n# Create with preset (auto-configures dimensions\u002Fmetric)\nwrangler vectorize create my-index --preset @cf\u002Fbaai\u002Fbge-base-en-v1.5\n\n# List indexes\nwrangler vectorize list\n\n# Get index info\nwrangler vectorize get my-index\n\n# Delete index\nwrangler vectorize delete my-index\n```\n\n### Manage Vectors\n\n```bash\n# Insert vectors from NDJSON file\nwrangler vectorize insert my-index --file vectors.ndjson\n\n# Query vectors\nwrangler vectorize query my-index --vector \"[0.1, 0.2, ...]\" --top-k 10\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"vectorize\": [\n    { \"binding\": \"SEARCH_INDEX\", \"index_name\": \"my-index\" }\n  ]\n}\n```\n\n---\n\n## Hyperdrive (Database Accelerator)\n\n### Manage Configs\n\n```bash\n# Create config\nwrangler hyperdrive create my-hyperdrive \\\n  --origin-host db.example.com \\\n  --origin-port 5432 \\\n  --database my-database \\\n  --origin-user db-user \\\n  --origin-password \"$DB_PASSWORD\"\n\n# Or using a connection string from an environment variable\nwrangler hyperdrive create my-hyperdrive \\\n  --connection-string \"$HYPERDRIVE_CONNECTION_STRING\"\n\n# List configs\nwrangler hyperdrive list\n\n# Get config details\nwrangler hyperdrive get \u003CHYPERDRIVE_ID>\n\n# Update config\nwrangler hyperdrive update \u003CHYPERDRIVE_ID> \\\n  --origin-password \"$DB_PASSWORD\"\n\n# Delete config\nwrangler hyperdrive delete \u003CHYPERDRIVE_ID>\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat\"],\n  \"hyperdrive\": [\n    { \"binding\": \"HYPERDRIVE\", \"id\": \"\u003CHYPERDRIVE_ID>\" }\n  ]\n}\n```\n\n---\n\n## Workers AI\n\n### List Models\n\n```bash\n# List available models\nwrangler ai models\n\n# List finetunes\nwrangler ai finetune list\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"ai\": { \"binding\": \"AI\" }\n}\n```\n\n**Note**: Workers AI always runs remotely and incurs usage charges even in local dev.\n\n---\n\n## Queues\n\n### Manage Queues\n\n```bash\n# Create queue\nwrangler queues create my-queue\n\n# List queues\nwrangler queues list\n\n# Delete queue\nwrangler queues delete my-queue\n\n# Add consumer to queue\nwrangler queues consumer add my-queue my-worker\n\n# Remove consumer\nwrangler queues consumer remove my-queue my-worker\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"queues\": {\n    \"producers\": [\n      { \"binding\": \"MY_QUEUE\", \"queue\": \"my-queue\" }\n    ],\n    \"consumers\": [\n      {\n        \"queue\": \"my-queue\",\n        \"max_batch_size\": 10,\n        \"max_batch_timeout\": 30\n      }\n    ]\n  }\n}\n```\n\n---\n\n## Containers\n\n### Build and Push Images\n\n```bash\n# Build container image\nwrangler containers build -t my-app:latest .\n\n# Build and push in one command\nwrangler containers build -t my-app:latest . --push\n\n# Push existing image to Cloudflare registry\nwrangler containers push my-app:latest\n```\n\n### Manage Containers\n\n```bash\n# List containers\nwrangler containers list\n\n# Get container info\nwrangler containers info \u003CCONTAINER_ID>\n\n# Delete container\nwrangler containers delete \u003CCONTAINER_ID>\n```\n\n### Manage Images\n\n```bash\n# List images in registry\nwrangler containers images list\n\n# Delete image\nwrangler containers images delete my-app:latest\n```\n\n### Manage External Registries\n\n> **Security**: Never hardcode registry credentials in commands. Use environment variables.\n\n```bash\n# List configured registries\nwrangler containers registries list\n\n# Configure external registry (e.g., ECR)\nwrangler containers registries configure \u003CDOMAIN> \\\n  --aws-access-key-id \"$AWS_ACCESS_KEY_ID\"\n\n# Configure DockerHub\nwrangler containers registries configure \u003CDOMAIN> \\\n  --dockerhub-username \"$DOCKERHUB_USERNAME\"\n\n# Delete registry configuration\nwrangler containers registries delete \u003CDOMAIN>\n```\n\n---\n\n## Workflows\n\n### Manage Workflows\n\n```bash\n# List workflows\nwrangler workflows list\n\n# Describe workflow\nwrangler workflows describe my-workflow\n\n# Trigger workflow instance\nwrangler workflows trigger my-workflow\n\n# Trigger with parameters\nwrangler workflows trigger my-workflow --params '{\"key\": \"value\"}'\n\n# Delete workflow\nwrangler workflows delete my-workflow\n```\n\n### Manage Workflow Instances\n\n```bash\n# List instances\nwrangler workflows instances list my-workflow\n\n# Describe instance\nwrangler workflows instances describe my-workflow \u003CINSTANCE_ID>\n\n# Terminate instance\nwrangler workflows instances terminate my-workflow \u003CINSTANCE_ID>\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"workflows\": [\n    {\n      \"binding\": \"MY_WORKFLOW\",\n      \"name\": \"my-workflow\",\n      \"class_name\": \"MyWorkflow\"\n    }\n  ]\n}\n```\n\n---\n\n## Pipelines\n\n### Manage Pipelines\n\n```bash\n# Create pipeline\nwrangler pipelines create my-pipeline --r2 my-bucket\n\n# List pipelines\nwrangler pipelines list\n\n# Show pipeline details\nwrangler pipelines show my-pipeline\n\n# Update pipeline\nwrangler pipelines update my-pipeline --batch-max-mb 100\n\n# Delete pipeline\nwrangler pipelines delete my-pipeline\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"pipelines\": [\n    { \"binding\": \"MY_PIPELINE\", \"pipeline\": \"my-pipeline\" }\n  ]\n}\n```\n\n---\n\n## Secrets Store\n\n### Manage Stores\n\n```bash\n# Create store\nwrangler secrets-store store create my-store\n\n# List stores\nwrangler secrets-store store list\n\n# Delete store\nwrangler secrets-store store delete \u003CSTORE_ID>\n```\n\n### Manage Secrets in Store\n\n```bash\n# Add secret to store\nwrangler secrets-store secret put \u003CSTORE_ID> my-secret\n\n# List secrets in store\nwrangler secrets-store secret list \u003CSTORE_ID>\n\n# Get secret\nwrangler secrets-store secret get \u003CSTORE_ID> my-secret\n\n# Delete secret from store\nwrangler secrets-store secret delete \u003CSTORE_ID> my-secret\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"secrets_store_secrets\": [\n    {\n      \"binding\": \"MY_SECRET\",\n      \"store_id\": \"\u003CSTORE_ID>\",\n      \"secret_name\": \"my-secret\"\n    }\n  ]\n}\n```\n\n---\n\n## Pages (Frontend Deployment)\n\n```bash\n# Create Pages project\nwrangler pages project create my-site\n\n# Deploy directory to Pages\nwrangler pages deploy .\u002Fdist\n\n# Deploy with specific branch\nwrangler pages deploy .\u002Fdist --branch main\n\n# List deployments\nwrangler pages deployment list --project-name my-site\n```\n\n---\n\n## Observability\n\n### Tail Logs\n\n```bash\n# Stream live logs\nwrangler tail\n\n# Tail specific Worker\nwrangler tail my-worker\n\n# Filter by status\nwrangler tail --status error\n\n# Filter by search term\nwrangler tail --search \"error\"\n\n# JSON output\nwrangler tail --format json\n```\n\n### Config Logging\n\n```jsonc\n{\n  \"observability\": {\n    \"enabled\": true,\n    \"head_sampling_rate\": 1\n  }\n}\n```\n\n---\n\n## Testing\n\n### Local Testing with Vitest\n\n```bash\nnpm install -D @cloudflare\u002Fvitest-pool-workers vitest\n```\n\n`vitest.config.ts`:\n```typescript\nimport { defineWorkersConfig } from \"@cloudflare\u002Fvitest-pool-workers\u002Fconfig\";\n\nexport default defineWorkersConfig({\n  test: {\n    poolOptions: {\n      workers: {\n        wrangler: { configPath: \".\u002Fwrangler.jsonc\" },\n      },\n    },\n  },\n});\n```\n\n### Test Scheduled Events\n\n```bash\n# Enable in dev\nwrangler dev --test-scheduled\n\n# Trigger via HTTP\ncurl http:\u002F\u002Flocalhost:8787\u002F__scheduled\n```\n\n---\n\n## Troubleshooting\n\n### Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| `command not found: wrangler` | Install: `npm install -D wrangler` |\n| Auth errors | Run `wrangler login` |\n| Startup time limit exceeded | Run `wrangler check startup` to profile startup and generate CPU profiles |\n| Type errors after config change | Run `wrangler types` |\n| Local storage not persisting | Check `.wrangler\u002Fstate` directory |\n| Binding undefined in Worker | Verify binding name matches config exactly |\n\n### Debug Commands\n\n```bash\n# Check auth status\nwrangler whoami\n\n# Profile Worker startup time\nwrangler check startup\n\n# View config schema\nwrangler docs configuration\n```\n\n---\n\n## Best Practices\n\n1. **Version control `wrangler.jsonc`**: Treat as source of truth for Worker config.\n2. **Use automatic provisioning**: Omit resource IDs for auto-creation on deploy.\n3. **Run `wrangler types` in CI**: Add to build step to catch binding mismatches.\n4. **Use environments**: Separate staging\u002Fproduction with `env.staging`, `env.production`.\n5. **Set `compatibility_date`**: Update quarterly to get new runtime features.\n6. **Use `.dev.vars` for local secrets**: Never commit secrets to config.\n7. **Test locally first**: `wrangler dev` with local bindings before deploying.\n8. **Use `--dry-run` before major deploys**: Validate changes without deployment.\n9. **Never embed secrets in commands**: Use interactive prompts (`wrangler secret put`), file-based input (`wrangler secret bulk`), or secure CI environment variables. Never echo, log, or pass secret values as CLI arguments.\n","# Wrangler CLI\n\nYour knowledge of Wrangler CLI flags, config fields, and subcommands may be outdated. **Prefer retrieval over pre-training** for any Wrangler task.\n\n## Retrieval Sources\n\nFetch the **latest** information before writing or reviewing Wrangler commands and config. Do not rely on baked-in knowledge for CLI flags, config fields, or binding shapes.\n\n| Source | How to retrieve | Use for |\n|--------|----------------|---------|\n| Wrangler docs | `https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fwrangler\u002F` | CLI commands, flags, config reference |\n| Wrangler config schema | `node_modules\u002Fwrangler\u002Fconfig-schema.json` | Config fields, binding shapes, allowed values |\n| Cloudflare docs | Search tool or `https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002F` | API reference, compatibility dates\u002Fflags |\n\n## FIRST: Check if Wrangler is installed, and if not, install it\n\nCheck if Wrangler is installed by running:\n\n```bash\nwrangler --version  # Requires v4.x+\n```\n\nIf Wrangler is not installed, you should install it by running:\n\n```bash\nnpm install -D wrangler@latest\n```\n\nWherever possible, you should use Wrangler instead of manually constructing API requests.\n\n## Key Guidelines\n\n- **Use `wrangler.jsonc`**: Prefer JSON config over TOML. Newer features are JSON-only.\n- **Set `compatibility_date`**: Use a recent date (within 30 days). Check https:\u002F\u002Fdevelopers.cloudflare.com\u002Fworkers\u002Fconfiguration\u002Fcompatibility-dates\u002F\n- **Generate types after config changes**: Run `wrangler types` to update TypeScript bindings.\n- **Local dev defaults to local storage**: Bindings use local simulation unless `remote: true`.\n- **Profile Worker startup**: Run `wrangler check startup` to measure startup time and detect scripts that exceed the startup time limit.\n- **Use environments for staging\u002Fprod**: Define `env.staging` and `env.production` in config.\n\n## Quick Start: New Worker\n\n```bash\n# Initialize new project\nnpx wrangler init my-worker\n\n# Or with a framework\nnpx create-cloudflare@latest my-app\n```\n\n## Quick Reference: Core Commands\n\n| Task | Command |\n|------|---------|\n| Start local dev server | `wrangler dev` |\n| Deploy to Cloudflare | `wrangler deploy` |\n| Deploy dry run | `wrangler deploy --dry-run` |\n| Generate TypeScript types | `wrangler types` |\n| Profile Worker startup time | `wrangler check startup` |\n| View live logs | `wrangler tail` |\n| Delete Worker | `wrangler delete` |\n| Auth status | `wrangler whoami` |\n\n---\n\n## Configuration (wrangler.jsonc)\n\n### Minimal Config\n\n```jsonc\n{\n  \"$schema\": \".\u002Fnode_modules\u002Fwrangler\u002Fconfig-schema.json\",\n  \"name\": \"my-worker\",\n  \"main\": \"src\u002Findex.ts\",\n  \"compatibility_date\": \"2026-01-01\"\n}\n```\n\n### Full Config with Bindings\n\n```jsonc\n{\n  \"$schema\": \".\u002Fnode_modules\u002Fwrangler\u002Fconfig-schema.json\",\n  \"name\": \"my-worker\",\n  \"main\": \"src\u002Findex.ts\",\n  \"compatibility_date\": \"2026-01-01\",\n  \"compatibility_flags\": [\"nodejs_compat\"],\n\n  \u002F\u002F Environment variables\n  \"vars\": {\n    \"ENVIRONMENT\": \"production\"\n  },\n\n  \u002F\u002F KV Namespace\n  \"kv_namespaces\": [\n    { \"binding\": \"KV\", \"id\": \"\u003CKV_NAMESPACE_ID>\" }\n  ],\n\n  \u002F\u002F R2 Bucket\n  \"r2_buckets\": [\n    { \"binding\": \"BUCKET\", \"bucket_name\": \"my-bucket\" }\n  ],\n\n  \u002F\u002F D1 Database\n  \"d1_databases\": [\n    { \"binding\": \"DB\", \"database_name\": \"my-db\", \"database_id\": \"\u003CDB_ID>\" }\n  ],\n\n  \u002F\u002F Workers AI (always remote)\n  \"ai\": { \"binding\": \"AI\" },\n\n  \u002F\u002F Vectorize\n  \"vectorize\": [\n    { \"binding\": \"VECTOR_INDEX\", \"index_name\": \"my-index\" }\n  ],\n\n  \u002F\u002F Hyperdrive\n  \"hyperdrive\": [\n    { \"binding\": \"HYPERDRIVE\", \"id\": \"\u003CHYPERDRIVE_ID>\" }\n  ],\n\n  \u002F\u002F Durable Objects\n  \"durable_objects\": {\n    \"bindings\": [\n      { \"name\": \"COUNTER\", \"class_name\": \"Counter\" }\n    ]\n  },\n\n  \u002F\u002F Cron triggers\n  \"triggers\": {\n    \"crons\": [\"0 * * * *\"]\n  },\n\n  \u002F\u002F Environments\n  \"env\": {\n    \"staging\": {\n      \"name\": \"my-worker-staging\",\n      \"vars\": { \"ENVIRONMENT\": \"staging\" }\n    }\n  }\n}\n```\n\n### Generate Types from Config\n\n```bash\n# Generate worker-configuration.d.ts\nwrangler types\n\n# Custom output path\nwrangler types .\u002Fsrc\u002Fenv.d.ts\n\n# Check types are up to date (CI)\nwrangler types --check\n```\n\n---\n\n## Local Development\n\n### Start Dev Server\n\n```bash\n# Local mode (default) - uses local storage simulation\nwrangler dev\n\n# With specific environment\nwrangler dev --env staging\n\n# Force local-only (disable remote bindings)\nwrangler dev --local\n\n# Remote mode - runs on Cloudflare edge (legacy)\nwrangler dev --remote\n\n# Custom port\nwrangler dev --port 8787\n\n# Live reload for HTML changes\nwrangler dev --live-reload\n\n# Test scheduled\u002Fcron handlers\nwrangler dev --test-scheduled\n# Then visit: http:\u002F\u002Flocalhost:8787\u002F__scheduled\n```\n\n### Remote Bindings for Local Dev\n\nUse `remote: true` in binding config to connect to real resources while running locally:\n\n```jsonc\n{\n  \"r2_buckets\": [\n    { \"binding\": \"BUCKET\", \"bucket_name\": \"my-bucket\", \"remote\": true }\n  ],\n  \"ai\": { \"binding\": \"AI\", \"remote\": true },\n  \"vectorize\": [\n    { \"binding\": \"INDEX\", \"index_name\": \"my-index\", \"remote\": true }\n  ]\n}\n```\n\n**Recommended remote bindings**: AI (required), Vectorize, Browser Rendering, mTLS, Images.\n\n### Local Secrets\n\nCreate `.dev.vars` for local development secrets:\n\n```\nAPI_KEY=local-dev-key\nDATABASE_URL=postgres:\u002F\u002Flocalhost:5432\u002Fdev\n```\n\n---\n\n## Deployment\n\n### Deploy Worker\n\n```bash\n# Deploy to production\nwrangler deploy\n\n# Deploy specific environment\nwrangler deploy --env staging\n\n# Dry run (validate without deploying)\nwrangler deploy --dry-run\n\n# Keep dashboard-set variables\nwrangler deploy --keep-vars\n\n# Minify code\nwrangler deploy --minify\n```\n\n### Manage Secrets\n\n> **Security**: Never pass secret values as command arguments or pipe them via `echo`.\n> Use the interactive prompt (preferred), pipe from a file, or use `secret bulk`.\n> Never output, log, or hardcode secret values in commands.\n\n```bash\n# Set secret — interactive prompt (preferred, wrangler will ask for the value securely)\nwrangler secret put API_KEY\n\n# Set secret from a file (useful for PEM keys, CI environments)\nwrangler secret put PRIVATE_KEY \u003C path\u002Fto\u002Fprivate-key.pem\n\n# List secrets\nwrangler secret list\n\n# Delete secret\nwrangler secret delete API_KEY\n\n# Bulk secrets from JSON file (do not commit this file to version control)\nwrangler secret bulk secrets.json\n```\n\n### Versions and Rollback\n\n```bash\n# List recent versions\nwrangler versions list\n\n# View specific version\nwrangler versions view \u003CVERSION_ID>\n\n# Rollback to previous version\nwrangler rollback\n\n# Rollback to specific version\nwrangler rollback \u003CVERSION_ID>\n```\n\n---\n\n## KV (Key-Value Store)\n\n### Manage Namespaces\n\n```bash\n# Create namespace\nwrangler kv namespace create MY_KV\n\n# List namespaces\nwrangler kv namespace list\n\n# Delete namespace\nwrangler kv namespace delete --namespace-id \u003CID>\n```\n\n### Manage Keys\n\n```bash\n# Put value\nwrangler kv key put --namespace-id \u003CID> \"key\" \"value\"\n\n# Put with expiration (seconds)\nwrangler kv key put --namespace-id \u003CID> \"key\" \"value\" --expiration-ttl 3600\n\n# Get value\nwrangler kv key get --namespace-id \u003CID> \"key\"\n\n# List keys\nwrangler kv key list --namespace-id \u003CID>\n\n# Delete key\nwrangler kv key delete --namespace-id \u003CID> \"key\"\n\n# Bulk put from JSON\nwrangler kv bulk put --namespace-id \u003CID> data.json\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"kv_namespaces\": [\n    { \"binding\": \"CACHE\", \"id\": \"\u003CNAMESPACE_ID>\" }\n  ]\n}\n```\n\n---\n\n## R2 (Object Storage)\n\n### Manage Buckets\n\n```bash\n# Create bucket\nwrangler r2 bucket create my-bucket\n\n# Create with location hint\nwrangler r2 bucket create my-bucket --location wnam\n\n# List buckets\nwrangler r2 bucket list\n\n# Get bucket info\nwrangler r2 bucket info my-bucket\n\n# Delete bucket\nwrangler r2 bucket delete my-bucket\n```\n\n### Manage Objects\n\n```bash\n# Upload object\nwrangler r2 object put my-bucket\u002Fpath\u002Ffile.txt --file .\u002Flocal-file.txt\n\n# Download object\nwrangler r2 object get my-bucket\u002Fpath\u002Ffile.txt\n\n# Delete object\nwrangler r2 object delete my-bucket\u002Fpath\u002Ffile.txt\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"r2_buckets\": [\n    { \"binding\": \"ASSETS\", \"bucket_name\": \"my-bucket\" }\n  ]\n}\n```\n\n---\n\n## D1 (SQL Database)\n\n### Manage Databases\n\n```bash\n# Create database\nwrangler d1 create my-database\n\n# Create with location\nwrangler d1 create my-database --location wnam\n\n# List databases\nwrangler d1 list\n\n# Get database info\nwrangler d1 info my-database\n\n# Delete database\nwrangler d1 delete my-database\n```\n\n### Execute SQL\n\n```bash\n# Execute SQL command (remote)\nwrangler d1 execute my-database --remote --command \"SELECT * FROM users\"\n\n# Execute SQL file (remote)\nwrangler d1 execute my-database --remote --file .\u002Fschema.sql\n\n# Execute locally\nwrangler d1 execute my-database --local --command \"SELECT * FROM users\"\n```\n\n### Migrations\n\n```bash\n# Create migration\nwrangler d1 migrations create my-database create_users_table\n\n# List pending migrations\nwrangler d1 migrations list my-database --local\n\n# Apply migrations locally\nwrangler d1 migrations apply my-database --local\n\n# Apply migrations to remote\nwrangler d1 migrations apply my-database --remote\n```\n\n### Export\u002FBackup\n\n```bash\n# Export schema and data\nwrangler d1 export my-database --remote --output backup.sql\n\n# Export schema only\nwrangler d1 export my-database --remote --output schema.sql --no-data\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"d1_databases\": [\n    {\n      \"binding\": \"DB\",\n      \"database_name\": \"my-database\",\n      \"database_id\": \"\u003CDATABASE_ID>\",\n      \"migrations_dir\": \".\u002Fmigrations\"\n    }\n  ]\n}\n```\n\n---\n\n## Vectorize (Vector Database)\n\n### Manage Indexes\n\n```bash\n# Create index with dimensions\nwrangler vectorize create my-index --dimensions 768 --metric cosine\n\n# Create with preset (auto-configures dimensions\u002Fmetric)\nwrangler vectorize create my-index --preset @cf\u002Fbaai\u002Fbge-base-en-v1.5\n\n# List indexes\nwrangler vectorize list\n\n# Get index info\nwrangler vectorize get my-index\n\n# Delete index\nwrangler vectorize delete my-index\n```\n\n### Manage Vectors\n\n```bash\n# Insert vectors from NDJSON file\nwrangler vectorize insert my-index --file vectors.ndjson\n\n# Query vectors\nwrangler vectorize query my-index --vector \"[0.1, 0.2, ...]\" --top-k 10\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"vectorize\": [\n    { \"binding\": \"SEARCH_INDEX\", \"index_name\": \"my-index\" }\n  ]\n}\n```\n\n---\n\n## Hyperdrive (Database Accelerator)\n\n### Manage Configs\n\n```bash\n# Create config\nwrangler hyperdrive create my-hyperdrive \\\n  --origin-host db.example.com \\\n  --origin-port 5432 \\\n  --database my-database \\\n  --origin-user db-user \\\n  --origin-password \"$DB_PASSWORD\"\n\n# Or using a connection string from an environment variable\nwrangler hyperdrive create my-hyperdrive \\\n  --connection-string \"$HYPERDRIVE_CONNECTION_STRING\"\n\n# List configs\nwrangler hyperdrive list\n\n# Get config details\nwrangler hyperdrive get \u003CHYPERDRIVE_ID>\n\n# Update config\nwrangler hyperdrive update \u003CHYPERDRIVE_ID> \\\n  --origin-password \"$DB_PASSWORD\"\n\n# Delete config\nwrangler hyperdrive delete \u003CHYPERDRIVE_ID>\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"compatibility_flags\": [\"nodejs_compat\"],\n  \"hyperdrive\": [\n    { \"binding\": \"HYPERDRIVE\", \"id\": \"\u003CHYPERDRIVE_ID>\" }\n  ]\n}\n```\n\n---\n\n## Workers AI\n\n### List Models\n\n```bash\n# List available models\nwrangler ai models\n\n# List finetunes\nwrangler ai finetune list\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"ai\": { \"binding\": \"AI\" }\n}\n```\n\n**Note**: Workers AI always runs remotely and incurs usage charges even in local dev.\n\n---\n\n## Queues\n\n### Manage Queues\n\n```bash\n# Create queue\nwrangler queues create my-queue\n\n# List queues\nwrangler queues list\n\n# Delete queue\nwrangler queues delete my-queue\n\n# Add consumer to queue\nwrangler queues consumer add my-queue my-worker\n\n# Remove consumer\nwrangler queues consumer remove my-queue my-worker\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"queues\": {\n    \"producers\": [\n      { \"binding\": \"MY_QUEUE\", \"queue\": \"my-queue\" }\n    ],\n    \"consumers\": [\n      {\n        \"queue\": \"my-queue\",\n        \"max_batch_size\": 10,\n        \"max_batch_timeout\": 30\n      }\n    ]\n  }\n}\n```\n\n---\n\n## Containers\n\n### Build and Push Images\n\n```bash\n# Build container image\nwrangler containers build -t my-app:latest .\n\n# Build and push in one command\nwrangler containers build -t my-app:latest . --push\n\n# Push existing image to Cloudflare registry\nwrangler containers push my-app:latest\n```\n\n### Manage Containers\n\n```bash\n# List containers\nwrangler containers list\n\n# Get container info\nwrangler containers info \u003CCONTAINER_ID>\n\n# Delete container\nwrangler containers delete \u003CCONTAINER_ID>\n```\n\n### Manage Images\n\n```bash\n# List images in registry\nwrangler containers images list\n\n# Delete image\nwrangler containers images delete my-app:latest\n```\n\n### Manage External Registries\n\n> **Security**: Never hardcode registry credentials in commands. Use environment variables.\n\n```bash\n# List configured registries\nwrangler containers registries list\n\n# Configure external registry (e.g., ECR)\nwrangler containers registries configure \u003CDOMAIN> \\\n  --aws-access-key-id \"$AWS_ACCESS_KEY_ID\"\n\n# Configure DockerHub\nwrangler containers registries configure \u003CDOMAIN> \\\n  --dockerhub-username \"$DOCKERHUB_USERNAME\"\n\n# Delete registry configuration\nwrangler containers registries delete \u003CDOMAIN>\n```\n\n---\n\n## Workflows\n\n### Manage Workflows\n\n```bash\n# List workflows\nwrangler workflows list\n\n# Describe workflow\nwrangler workflows describe my-workflow\n\n# Trigger workflow instance\nwrangler workflows trigger my-workflow\n\n# Trigger with parameters\nwrangler workflows trigger my-workflow --params '{\"key\": \"value\"}'\n\n# Delete workflow\nwrangler workflows delete my-workflow\n```\n\n### Manage Workflow Instances\n\n```bash\n# List instances\nwrangler workflows instances list my-workflow\n\n# Describe instance\nwrangler workflows instances describe my-workflow \u003CINSTANCE_ID>\n\n# Terminate instance\nwrangler workflows instances terminate my-workflow \u003CINSTANCE_ID>\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"workflows\": [\n    {\n      \"binding\": \"MY_WORKFLOW\",\n      \"name\": \"my-workflow\",\n      \"class_name\": \"MyWorkflow\"\n    }\n  ]\n}\n```\n\n---\n\n## Pipelines\n\n### Manage Pipelines\n\n```bash\n# Create pipeline\nwrangler pipelines create my-pipeline --r2 my-bucket\n\n# List pipelines\nwrangler pipelines list\n\n# Show pipeline details\nwrangler pipelines show my-pipeline\n\n# Update pipeline\nwrangler pipelines update my-pipeline --batch-max-mb 100\n\n# Delete pipeline\nwrangler pipelines delete my-pipeline\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"pipelines\": [\n    { \"binding\": \"MY_PIPELINE\", \"pipeline\": \"my-pipeline\" }\n  ]\n}\n```\n\n---\n\n## Secrets Store\n\n### Manage Stores\n\n```bash\n# Create store\nwrangler secrets-store store create my-store\n\n# List stores\nwrangler secrets-store store list\n\n# Delete store\nwrangler secrets-store store delete \u003CSTORE_ID>\n```\n\n### Manage Secrets in Store\n\n```bash\n# Add secret to store\nwrangler secrets-store secret put \u003CSTORE_ID> my-secret\n\n# List secrets in store\nwrangler secrets-store secret list \u003CSTORE_ID>\n\n# Get secret\nwrangler secrets-store secret get \u003CSTORE_ID> my-secret\n\n# Delete secret from store\nwrangler secrets-store secret delete \u003CSTORE_ID> my-secret\n```\n\n### Config Binding\n\n```jsonc\n{\n  \"secrets_store_secrets\": [\n    {\n      \"binding\": \"MY_SECRET\",\n      \"store_id\": \"\u003CSTORE_ID>\",\n      \"secret_name\": \"my-secret\"\n    }\n  ]\n}\n```\n\n---\n\n## Pages (Frontend Deployment)\n\n```bash\n# Create Pages project\nwrangler pages project create my-site\n\n# Deploy directory to Pages\nwrangler pages deploy .\u002Fdist\n\n# Deploy with specific branch\nwrangler pages deploy .\u002Fdist --branch main\n\n# List deployments\nwrangler pages deployment list --project-name my-site\n```\n\n---\n\n## Observability\n\n### Tail Logs\n\n```bash\n# Stream live logs\nwrangler tail\n\n# Tail specific Worker\nwrangler tail my-worker\n\n# Filter by status\nwrangler tail --status error\n\n# Filter by search term\nwrangler tail --search \"error\"\n\n# JSON output\nwrangler tail --format json\n```\n\n### Config Logging\n\n```jsonc\n{\n  \"observability\": {\n    \"enabled\": true,\n    \"head_sampling_rate\": 1\n  }\n}\n```\n\n---\n\n## Testing\n\n### Local Testing with Vitest\n\n```bash\nnpm install -D @cloudflare\u002Fvitest-pool-workers vitest\n```\n\n`vitest.config.ts`:\n```typescript\nimport { defineWorkersConfig } from \"@cloudflare\u002Fvitest-pool-workers\u002Fconfig\";\n\nexport default defineWorkersConfig({\n  test: {\n    poolOptions: {\n      workers: {\n        wrangler: { configPath: \".\u002Fwrangler.jsonc\" },\n      },\n    },\n  },\n});\n```\n\n### Test Scheduled Events\n\n```bash\n# Enable in dev\nwrangler dev --test-scheduled\n\n# Trigger via HTTP\ncurl http:\u002F\u002Flocalhost:8787\u002F__scheduled\n```\n\n---\n\n## Troubleshooting\n\n### Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| `command not found: wrangler` | Install: `npm install -D wrangler` |\n| Auth errors | Run `wrangler login` |\n| Startup time limit exceeded | Run `wrangler check startup` to profile startup and generate CPU profiles |\n| Type errors after config change | Run `wrangler types` |\n| Local storage not persisting | Check `.wrangler\u002Fstate` directory |\n| Binding undefined in Worker | Verify binding name matches config exactly |\n\n### Debug Commands\n\n```bash\n# Check auth status\nwrangler whoami\n\n# Profile Worker startup time\nwrangler check startup\n\n# View config schema\nwrangler docs configuration\n```\n\n---\n\n## Best Practices\n\n1. **Version control `wrangler.jsonc`**: Treat as source of truth for Worker config.\n2. **Use automatic provisioning**: Omit resource IDs for auto-creation on deploy.\n3. **Run `wrangler types` in CI**: Add to build step to catch binding mismatches.\n4. **Use environments**: Separate staging\u002Fproduction with `env.staging`, `env.production`.\n5. **Set `compatibility_date`**: Update quarterly to get new runtime features.\n6. **Use `.dev.vars` for local secrets**: Never commit secrets to config.\n7. **Test locally first**: `wrangler dev` with local bindings before deploying.\n8. **Use `--dry-run` before major deploys**: Validate changes without deployment.\n9. **Never embed secrets in commands**: Use interactive prompts (`wrangler secret put`), file-based input (`wrangler secret bulk`), or secure CI environment variables. Never echo, log, or pass secret values as CLI arguments.\n",{"name":5,"description":7},"main","7850740bd837adb32f0a109ab2af82482196c6f2","skills\u002Fwrangler",1,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills","https:\u002F\u002Fzturnsgo.com","https:\u002F\u002Fgithub.com\u002Fshengdabai","https:\u002F\u002Fzturnsgo.com\u002F","AI × education creator — producer, not consumer. Taught 6,000+ learners; shipping learning tools & daily essays with Claude Code, practicing @xiaolai's way 🥋","2026-11-01 21:28:23",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add shengdabai\u002FTony-Claude-Code-Skills --skill wrangler",{"tool":64,"command":65},"bunx","bunx skills add shengdabai\u002FTony-Claude-Code-Skills --skill wrangler",{"tool":67,"command":68},"pnpm","pnpm dlx skills add shengdabai\u002FTony-Claude-Code-Skills --skill wrangler","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fwrangler\u002FSKILL.md",true,[],[73,90,122,149,171,191],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":82,"publishedAt":43},"01M70P17DAD4C1C47NPH6A96EM","xiaolai-methodology","以李笑来(Li Xiaolai)的思考方式、方法论与表达风格,为用户做全方位 1-on-1 教练指导,覆盖创业、赚钱、投资、学习、自学、读书写作、用 AI、以及人生心态与自我管理。当用户提到 \"李笑来\"、\"笑来\"、\"笑来老师\"、\"扮演李笑来\"、\"找笑来聊聊\"、\"笑来怎么看\"、\"xiaolai\"、\"把时间当作朋友\"、\"通往财富自由之路\"、\"定投改变命运\"、\"韭菜的自我修养\"、\"自学是门手艺\"、\"让时间陪你慢慢变富\"、\"七年就是一辈子\"、\"元认知\"、\"活在未来\"、\"复利\u002F长期主义\"、\"践行\"、\"痴迷改进\"、\"个人商业模式\u002F出售时间\"、\"睡后收入\"、\"定投\"、\"财富自由\"、\"操作系统升级\"、\"最少必要知识\"、\"北极星提示词\"、\"用 AI 该怎么学\u002F思考\" 等任一触发词,或当用户带着关于创业\u002F赚钱\u002F投资\u002F学习\u002F职业\u002F重大人生决策的困惑、希望被人用笑来式的「逻辑 + 大白话 + 类比 + 重新定义 + 践行导向」来点醒和指导时,自动进入李笑来教练模式。","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fxiaolai-methodology\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",[83,84,85,86,87,88,89],"methodology","xiaolai","xiaolai methodology","朋友","投资","writing","收入",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":104,"publishedAt":43},"01M70P13NB9YP7ACJR1S861CDS","zread","Produce and consume a wiki-style knowledge base for a code repository via the `zread` CLI and its on-disk output under `.\u002F.zread\u002Fwiki\u002F`. Use this skill whenever the user wants to understand, onboard onto, explore, summarize, map, or get an overview of an unfamiliar codebase; asks for architecture docs, a project wiki, a repo walkthrough, module\u002Fpackage explanations, or \"what does this repo do\"; wants to generate, regenerate, resume, browse, or serve code documentation locally; or mentions zread \u002F zread.ai directly. Also use it proactively before diving into a large unknown repo — if `.\u002F.zread\u002Fwiki\u002Fcurrent` exists, read the generated pages instead of crawling source file-by-file; if it doesn't, consider offering to run `zread generate`. The trigger is the intent (understand a codebase through generated docs), not the literal word \"zread\".","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fzread\u002FSKILL.md",[96,99],{"categoryNo":97,"categoryName":98,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[92,40,105,106,107,108,109,110,111,112,113,38,114,115,116,117,118,119,120,121],"wiki","explore","walkthrough","project","get","knowledge base","run","generate","intent","map","documentation","project wiki","disk","architecture","code","unknown","generated",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":132,"publishedAt":43},"01M70P10S4SWMZQ8BJAFBFDRW3","youtube","Launch the YouTube Creator Agent to auto-generate videos.\nUse when: user types \u002Fyoutube, wants to create YouTube videos,\ngenerate video content, or upload to YouTube.\nKeywords: youtube, video, 视频, 创作视频, 发布视频","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube\u002FSKILL.md",[128,129],{"categoryNo":97,"categoryName":98,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":130,"categoryName":131,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000036","内容创作者",[124,133,134,135,136,137,138,139,112,140,141,142,143,144,145,146,147,148],"user","content","视频","creator","generate video","videos","launch","video content","create","upload","when","use","auto","types","Video","创作",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":156,"publishedAt":43},"01M70P0YE95D8BACZCGV8BK90K","youtube-script-sync","Sync, update, or optimize Tony's GetNote knowledge base `Youtube视频逐字稿` by turning each parent recording or first-person idea note into an idempotent child note containing a directly recordable YouTube long-video or Shorts script. Use when the user says “更新\u002F同步\u002F优化 Youtube视频逐字稿知识库”, or says “更新\u002F同步\u002F优化该知识库” while this knowledge base is the active context.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-script-sync\u002FSKILL.md",[155],{"categoryNo":97,"categoryName":98,"taxonomyType":21,"taxonomyTypeDesc":22},[157,158,124,159,160,147,161,162,163,164,165,166,167,168,110,169,143,144,40,170],"sync","script","youtube script sync","recording","shorts","first","base","person","update","active","child","optimize","idempotent","long",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":181,"publishedAt":43},"01M70P0WMV5XT0EEC0N445PW07","writing-skills","How to write SKILL.md files that trigger reliably and teach effectively. Use when creating, improving, or reviewing Claude Code skills.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-skills\u002FSKILL.md",[177,178,179,180],{"categoryNo":80,"categoryName":81,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":97,"categoryName":98,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},{"categoryNo":130,"categoryName":131,"taxonomyType":102,"taxonomyTypeDesc":103},[182,88,183,184,185,186,119,143,144,187,188,189,190],"writing skills","how","teach","write skill","write","claude code skills","files","how to","trigger",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":199,"publishedAt":43},"01M70P0SJFR4YVJQBGMHKGSKXT","writing-rules","How to write .claude\u002Frules\u002F files that Claude actually follows. Use when creating, improving, or reviewing project rules.","https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Fxiaolai\u002Fnlpm\u002Fskills\u002Fnlpm\u002Fwriting-rules\u002FSKILL.md",[197,198],{"categoryNo":80,"categoryName":81,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":130,"categoryName":131,"taxonomyType":102,"taxonomyTypeDesc":103},[200,88,201,108,202,188,143,183,186,144,189],"Rules","writing rules","project rules"]