Prepare Cloudflare Production Deployment
LubomirGeorgiev/cloudflare-workers-nextjs-saas-template
Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.
Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically.
$ npx skills add every-app/open-seo --skill observability-triage -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install every-app/open-seo observability-triage --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/observability-triage .claude/skills/observability-triage && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .claude/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triageType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add every-app/open-seo --skill observability-triage -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install every-app/open-seo observability-triage --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/observability-triage .agents/skills/observability-triage && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .agents/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add every-app/open-seo --skill observability-triage -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install every-app/open-seo observability-triage --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/observability-triage .cursor/skills/observability-triage && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .cursor/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/every-app/open-seo.git --path .agents/skills/observability-triage--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add every-app/open-seo --skill observability-triage -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install every-app/open-seo observability-triage --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/observability-triage .gemini/skills/observability-triage && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .gemini/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install every-app/open-seo observability-triageInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add every-app/open-seo --skill observability-triage -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/observability-triage .github/skills/observability-triage && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .github/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add every-app/open-seo --skill observability-triage -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install every-app/open-seo observability-triage --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/every-app/open-seo.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/observability-triage .opencode/skills/observability-triage && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "observability-triage" agent skill from https://github.com/every-app/open-seo/tree/main/.agents/skills/observability-triage into .opencode/skills/observability-triage/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "observability-triage", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
observability-triageTriage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically.
Observability Triage is an agent skill from every-app/open-seo. Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically. Use when asked to review Cloudflare logs/observability, count OOMs or worker errors, compare error rates between periods, or investigate a prod error spike.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Observability. It works with Cloudflare Workers, Cloudflare and Model Context Protocol. The repository describes itself as: Open source alternative to Semrush and Ahrefs. The licence is MIT.
2 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit deb4491. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Observability Triage loads about 1.7k tokens when it runs. Until then it costs about 86 tokens; SKILL.md has 760 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from every-app/open-seo at commit deb4491, republished under its MIT licence (© every-app). 760 words, ~1,735 tokens.
.claude/skills/observability-triage/SKILL.md (or your agent's skills folder).Query Cloudflare Workers Observability for prod errors, count them correctly, and skip the noise that has already been investigated to a dead end. Apply the known-noise list below without re-investigating those entries.
cloudflare-api MCP server pre-binds accountId in mcp__cloudflare-api__execute, and npx wrangler whoami prints it. The workers to triage are the ones this repo deploys (see deploy/alchemy/alchemy.run.ts): the main app worker plus the aux workers (audit engine, landing, self-host).cloudflare-api MCP server (mcp__cloudflare-api__execute). If its tools are absent, run its authenticate flow and give the user the URL — wrangler's OAuth token gets a 403 on the observability API (missing scope), so don't burn time on curl-with-wrangler-token.exceededMemory / canceled / responseStreamDisconnected outcomes — worker-outcome questions are answerable only here.POST /accounts/{account_id}/workers/observability/telemetry/query. All of these are load-bearing; the API's 400s are opaque:
queryId: "adhoc" is required. Timeframe is epoch milliseconds: timeframe: { from, to }.
Count invocations by outcome:
{
"queryId": "adhoc",
"timeframe": { "from": 0, "to": 0 },
"parameters": {
"datasets": ["cloudflare-workers"],
"filters": [
{ "key": "$metadata.type", "operation": "eq", "value": "cf-worker-event", "type": "string" }
],
"calculations": [{ "operator": "count", "alias": "count" }],
"groupBys": [
{ "value": "$workers.scriptName", "type": "string" },
{ "value": "$workers.outcome", "type": "string" }
],
"limit": 100
},
"view": "calculations",
"limit": 100
}The cf-worker-event filter is what makes counts mean invocations; without it you count every log line.
Raw samples: view: "events", empty calculations/groupBys, small limit. Events carry $metadata (service, trigger, level, message, fingerprint, requestId) and $workers (outcome, scriptName, scriptVersion, wallTimeMs, cpuTimeMs, eventType).
Error-level app logs grouped by message: filter $metadata.level eq error, groupBy $metadata.message.
Verified filter operations: eq, neq. Percentiles: the API wants "median", not "p50". Filter for substrings client-side on fetched events.
Useful drill-downs: groupBy $metadata.trigger (route), $workers.scriptVersion (did a deploy change the rate mid-window), $workers.event.request.headers.user-agent.
limit). A missing group ≠ zero. To see error outcomes, add $workers.outcome neq ok instead of hoping the error rows make the cut; sort client-side.$workers.scriptVersion and the scripts' modified_on before concluding a fix didn't work.Entries land here only after an investigation proved there is no first-party emit site to fix or demote. Each keeps the one condition that would make it real signal again.
Connection closed: this Durable Object instance is no longer active. Reconnect or retry the request. (hibernation/eviction), Durable Object reset because its code was updated. (deploy), plus the paired invocation summary whose $metadata.error is close.eventType: "hibernatableWebSocket", entrypoint SamChatAgent/OnboardingChatAgent, webSocketType: "close", code: 1006, wasClean: false, outcome: "exception", single-digit wallTimeMs, cpuTimeMs: 0, no stack. Fingerprints 3aa4cac26653d09a0a41100a33d413ae (exception), 0ae15457af49b4d9a117eeecf66b040a (summary).webSocketClose, so the first await never settles. partyserver already try/catches the whole close path; an onClose override would catch nothing.onChatResponse) never fires on an aborted turn.Network connection lost.be89d4ff7a64cb4d4dceae0f51cfe708, or the message verbatim. Runtime-generated shape: source.level absent, source.exception present, $metadata.origin: "fetch" — the opposite of every app log (source.level present, no exception).requestId has outcome: "ok". No emit site exists; wrangler.jsonc observability config has no per-message filter. Do not add try/catch around the stream handlers (dead ceremony)./mcp share of this group grows, treat it as a tool-call-latency symptom (clients timing out and cancelling) and route it to the /mcp performance track — not to this log group.Before investigating any unfamiliar error event: source.level absent + source.exception present ⇒ the Workers runtime wrote it, not the app. There is no call site to grep for; judge it by the sibling request's outcome.
Add to this list only after establishing there is no first-party emit site (grep the message; check the runtime-vs-app litmus above) and nothing is left in a wrong state. Every entry must include identify-by markers (fingerprint if stable) and its real-signal condition.
© every-app, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/observability-triage of every-app/open-seo.
Open the folder on GitHubat commit deb4491
Observability Triage next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Observability Triage this skillevery-app/open-seo | 23k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Prepare Cloudflare Production DeploymentLubomirGeorgiev/cloudflare-workers-nextjs-saas-template | 786 | — | ~5.9k | Automated safety check: Notes | MIT | |
| Debug Cloudflare Workers ObservabilityConsensys/c0 | 105 | — | ~1.2k | Automated safety check: Notes | LGPL-3.0 | |
| Workers Best Practiceshodgef/apiker | 127 | 6 repos | ~1.8k | Automated safety check: Pass | MIT | |
| Agents SDKhodgef/apiker | 127 | 3 repos | ~3k | Automated safety check: Pass | MIT | |
| Codflow Setupbighadj22/codflow | 346 | — | ~7.8k | Automated safety check: Notes | Apache-2.0 |
LubomirGeorgiev/cloudflare-workers-nextjs-saas-template
Source-of-truth runbook for preparing this Vinext Cloudflare Workers SaaS template for production deployment.
Consensys/c0
Debug deployed Cloudflare Workers using the cfobservability MCP, Wrangler, D1/R2 state, repo evidence, and safe live reproduction.
hodgef/apiker
Reviews and authors Cloudflare Workers code against production best practices.
hodgef/apiker
Build AI agents on Cloudflare Workers using the Agents SDK. An agent skill from hodgef/apiker.
bighadj22/codflow
Setup runbook for CodFlow — an AI agent following it authenticates with Cloudflare, creates the required resources (D1, R2, KV) in the developer's account, binds their real IDs into both…
Consensys/c0
Build, refactor, or review Effect v4 HttpApi services on Cloudflare Workers.
every-app/open-seo
Log genuine, recurring repository friction to .agents/PAPERCUTS.md — confusing setup, a flaky repo command or script, a misleading in-repo error, stale generated files, or a non-obvious gotcha that…
every-app/open-seo
Test a candidate OpenSEO skill end to end by running fresh, isolated Codex sessions against the local backend and scoring the reports they save.
every-app/open-seo
Turn a rough bug report, feature request, support note, or pull request into a short, plain-language issue focused on the problem and desired behavior.
every-app/open-seo
Create or update a skill in this repository the right way — canonical home in .agents/skills, internal-vs-public marking, symlink mirroring into .claude/skills, and public docs registration for…
every-app/open-seo
Remove AI writing patterns from prose so it reads like a person wrote it.
every-app/open-seo
Write and save an OpenSEO report as one self-contained HTML page.
Categories
Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically. Observability Triage is an agent skill from every-app/open-seo. Triage OpenSEO production errors in Cloudflare Workers Observability — verified query recipes, counting gotchas, and a known-noise filter list applied automatically.
Observability Triage fits situations like: asked to review Cloudflare logs/observability; compare error rates between periods; investigate a prod error spike.
Run `npx skills add every-app/open-seo --skill observability-triage -a claude-code`. Or copy the skill folder (.agents/skills/observability-triage in every-app/open-seo) into .claude/skills/observability-triage in your project. Claude Code loads it when a task matches its description.
Run `npx skills add every-app/open-seo --skill observability-triage -a codex`. Or copy the skill folder (.agents/skills/observability-triage in every-app/open-seo) into .agents/skills/observability-triage in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add every-app/open-seo --skill observability-triage -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/observability-triage, .gemini/skills/observability-triage, .github/skills/observability-triage and .opencode/skills/observability-triage in your project.
Going by SKILL.md and its folder, Observability Triage needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Observability Triage is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Observability Triage: Prepare Cloudflare Production Deployment (LubomirGeorgiev/cloudflare-workers-nextjs-saas-template, 786 stars), Debug Cloudflare Workers Observability (Consensys/c0, 105 stars), Workers Best Practices (hodgef/apiker, 127 stars) and Agents SDK (hodgef/apiker, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
every-app (a GitHub organization) maintains it in every-app/open-seo, which has 22,680 GitHub stars. The repository holds 19 skills in this directory. The repository was last updated on October 6, 2026.
Source: every-app/open-seo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.