Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.
When to Use This Skill
Publishing HTML files to a public URL (too large for GitHub)
Setting up a new Cloudflare Workers static site
Troubleshooting a failed Cloudflare deploy
Rotating Cloudflare API tokens in 1Password
Do NOT use for: Dynamic Workers (JavaScript/TypeScript logic), Cloudflare Pages (deprecated April 2025 - CFW-01), R2 object storage, or custom domains (advanced setup not covered).
1. [Preflight] Verify Node.js and 1Password CLI installed
2. [Preflight] Create Cloudflare API token (Workers Scripts Edit permission)
3. [Execute] Pre-provision 1Password item in Claude Automation vault (biometric)
4. [Execute] Store token + account ID in 1Password item fields
5. [Execute] Create publish directory with wrangler.toml (3 fields only)
6. [Execute] Create deploy script from skill template (parameterize 4 vars)
7. [Execute] Create mise task wrapper in .mise/tasks/publish.toml
8. [Execute] Add .wrangler/ to .gitignore
9. [Execute] Add LFS tracking for large HTML files in .gitattributes
10. [Verify] Enable workers.dev subdomain in Cloudflare dashboard
11. [Verify] Run first deploy and verify URL in browser (NOT curl)
12. [Verify] Document the workers.dev URL in project docs
Template B - Add Files to Existing Published Site
1. [Preflight] Verify files are real content, not LFS pointers (head -1)
2. [Execute] Copy HTML files to published/{generation}/{symbol_threshold}/
3. [Execute] Run deploy script (index.html auto-regenerates)
4. [Verify] Verify new files appear at workers.dev URL in browser
Template C - New Worker (New Subdomain/Project)
1. [Preflight] Choose worker name ({name}.{slug}.workers.dev)
2. [Execute] Create 1Password item OR reuse existing Cloudflare credentials
3. [Execute] Create wrangler.toml with chosen name and today's date
4. [Execute] Create parameterized deploy script from skill template
5. [Execute] Create mise task wrapper
6. [Verify] Deploy and discover actual workers.dev URL via wrangler output
Template D - Rotate Cloudflare API Token
1. [Execute] Create new API token in Cloudflare dashboard (Workers Scripts Edit)
2. [Execute] Update 1Password item credential field (biometric required)
3. [Verify] Run deploy script to verify new token works
4. [Execute] Revoke old token in Cloudflare dashboard
Template E - Troubleshoot Failed Deploy
1. Is wrangler.toml in current directory? (CFW-10)
2. Are credentials populated? Print first 8 chars of account ID
3. Is --reveal present for CONCEALED fields? (CFW-03)
4. Is workers.dev subdomain registered in CF dashboard? (CFW-07)
5. Does token have Workers Scripts Edit permission? (CFW-11)
6. Are HTML files real content or LFS pointers? head -1 file (CFW-12)
7. SSL handshake error? Verify in browser, not curl (CFW-08)
8. Is npx wrangler installed? npx wrangler --version
Large files & ZIP delivery (downloads, not just pages)
This skill also covers serving downloadable files (a ZIP bundle, a dataset) from
Workers — within the 25 MiB/file cap — and the password-on-the-gateway pattern for
gating an otherwise-unlisted download. Full guide:
references/large-files-and-zip-delivery.md.
Quick rules:
≤ 25 MiB → Workers is fine. A small/downscaled ZIP can sit beside the gallery and be
linked directly. > 25 MiB is a hard deploy error (CFW-16) — use R2 / a GitHub Release /
your own host for those.
Password-gated, unlisted download. Encrypt the ZIP (ZipCrypto, so Windows/7-Zip/macOS
open it natively) and put the password only on the gateway you share (a gist, an
email), never on the Workers page. Finding the bare ZIP URL then isn't enough to open it.
The heic-to-jpeg-bundle skill produces exactly this kind of capped, optionally-encrypted
ZIP.
Reference Implementation
The working production deployment lives in rangebar-patterns:
File
Purpose
results/published/wrangler.toml
Minimal Workers config
scripts/publish_findings.sh
3-phase deploy script
.mise/tasks/publish.toml
mise task wrapper
.gitignore (.wrangler/)
Ignore wrangler temp files
.gitattributes
LFS tracking for HTML
Live URL: https://rangebar-findings.terry-301.workers.dev/
cd to directory containing wrangler.toml before deploy
SSL handshake failure
macOS LibreSSL (CFW-08)
Verify in browser; ignore curl errors
403 on workers.dev URL
Subdomain not enabled (CFW-07)
Enable in Cloudflare dashboard > Workers & Pages
Deploy succeeds, files missing
LFS pointers deployed (CFW-12)
Run git lfs pull before deploy
${var^^} syntax error
Bash 3 on macOS (CFW-05)
Use tr '[:lower:]' '[:upper:]'
mise TOML parse error
Tera template conflict (CFW-13)
Move complex bash to standalone .sh file
Empty index.html
No gen*/*.html files found
Check file paths match find . -path './gen*/*.html' pattern
Token permission denied
Wrong token scope (CFW-11)
Recreate with Account > Workers Scripts > Edit permission
Post-Execution Reflection
After this skill completes, reflect before closing the task:
Locate yourself. — Find this SKILL.md's canonical path (Glob for this skill's name) before editing. All corrections target THIS file and its sibling references/ — never other documentation.
What failed? — Fix the instruction that caused it. If it could recur, add it as an anti-pattern.
What worked better than expected? — Promote it to recommended practice. Document why.
What drifted? — Any script, reference, or external dependency that no longer matches reality gets fixed now.
Log it. — Every change gets an evolution-log entry with trigger, fix, and evidence.
Do NOT defer. The next invocation inherits whatever you leave behind
Auto-generate index.html before each deploy
CFW-16
HIGH
Asset > 25 MiB → Asset too large deploy error
Workers Static Assets hard-caps each file at 25 MiB. Host large ZIPs/binaries off a large-file host (R2, GitHub Release, own server); keep only ≤25 MiB files on Workers. See large files & ZIP delivery
CFW-17
LOW
Want a bulk-download ZIP, but it exceeds the cap
Downscale the ZIP tier to fit (e.g. heic-to-jpeg-bundle --zip-cap-mib 25), or split hosts: gallery + small ZIP on Workers, full-res ZIP on R2