Przejdź do treści
Biblioteka skilli
Programowanie · Budowanie i kod

worker-api-engineering

/worker-api-engineering

Buduje i wydaje API lub usługę na Cloudflare Workers w JavaScript lub TypeScript, z testami Vitest.

Licencja
Apache-2.0
Ostatnia zmiana repozytorium
02.11.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
4
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 02.11.2026, bez odwołań do wycofanych modeli i API.

Licencja

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

Co robi i kiedy

Buduje i wydaje API lub usługę na Cloudflare Workers w JavaScript lub TypeScript, z testami Vitest.

Oryginalny opis (EN)

Engineering skill: Edge Worker API — how to build and ship a api / service with Cloudflare Workers, JavaScript (ES modules) or TypeScript, Vitest with the Workers pool. Use when writing, reviewing, testing or releasing code in this stack, and when turning a Celestial design or experience skill into code.

Jak działa

  1. Stack
  2. Commands
  3. Structure
  4. Naming
  5. From design and experience skills
  6. Conventions
  7. Do
  8. Don't
  9. Quality gates
  10. Workflow
Sekcje z nagłówków SKILL.md, w oryginale · 137 linii, 1 096 słów
Podgląd SKILL.md
---
name: worker-api-engineering
description: "Engineering skill: Edge Worker API — how to build and ship a api / service with Cloudflare Workers, JavaScript (ES modules) or TypeScript, Vitest with the Workers pool. Use when writing, reviewing, testing or releasing code in this stack, and when turning a Celestial design or experience skill into code."
type: engineering
stack: api
core: "1.0"
checked: 2026-10-25
---

# Edge Worker API

A small JSON API running at the edge: one entry file, a hosted Postgres behind it, rate limits and security headers by default.

For product backends and BFFs that need low latency and little operations work. One Worker serves static assets and /api routes; the database is reached over HTTP with a server-only key. This is the stack Celestial itself runs on.

## Stack
- **Language:** JavaScript (ES modules) or TypeScript — Runs natively in the Workers runtime.
- **Framework:** Cloudflare Workers compatibility date pinned — Global edge runtime with static assets and rate limiting built in.
- **State:** Stateless requests — Any instance can serve any request.
- **Data:** Supabase Postgres via PostgREST — SQL with row-level security; the Worker holds the service key.
- **Build:** Wrangler ^4 — Bundles, runs locally and deploys.
- **Hosting:** Cloudflare — Deploys in seconds, with preview versions.
- **Package manager:** npm — Default with Wrangler.
- **Testing:** Vitest with the Workers pool ^3 — Tests run in the real runtime.
- **Testing:** Live checks script — Headers, auth and access rules verified against the deployed site.

## Commands
- dev: `npx wrangler dev`
- lint: `npx eslint .`
- test: `npx vitest run && node scripts/security-check.mjs`
- build: `npx wrangler deploy --dry-run`
- deploy: `npx wrangler deploy`
- install: `npm install`

## Structure
- `src/index.js` — Entry: routes /api/* to the API, everything else to static assets
- `src/api.js` — Route handlers, auth, access rules
- `public/` — Static site and _headers
- `schema.sql` — Tables and row-level security
- `scripts/security-check.mjs` — Live security checks
- `wrangler.toml` — Vars, bindings and rate limits (secrets via wrangler secret put)

## Naming
- Files: kebab-case.js
- Tests: *.test.js beside the module
- Branches: type/short-description

## From design and experience skills
This stack has no UI; design skills do not apply.

When a Celestial experience skill is in use, give each journey one end-to-end test (happy path plus its error and empty states) and name analytics events `object_action` from its measures.

## Conventions
### Code
- Prefer small, pure functions and explicit types at module boundaries. _(Easier to test, review and change.)_

### Components
- Components read design tokens; no raw hex values, pixel sizes or font names in component code. _(One token change restyles the product.)_

### Data
- Analytics events are object_action in snake_case and come from the experience skill’s measures. _(Names stay consistent across teams and tools.)_

### Errors
- Every async action has loading, empty, error and success states, matching the experience skill. _(Unhandled states are where users get stuck.)_
- Return JSON errors with a human message and the right status; never leak stack traces. _(Clients can show the message as-is.)_

### Security
- Secrets never live in the repository; read them from the environment or a secret store. _(A leaked key outlives the commit that removed it.)_
- Validate every input on the server, even when the client already did. _(Clients can be bypassed.)_
- Web pages ship a Content-Security-Policy, HSTS, X-Frame-Options and nosniff. _(Cheap protection against the most common attacks.)_
- Every route decides who is asking (session token or admin key) before touching data; compare secrets in constant time. _(The Worker is the only gate in front of the database.)_
- Direct database access with the public key is blocked by row-level security with no policies. _(Defence in depth if a key leaks.)_
- Rate-limit paid and write endpoints per user, falling back to IP. _(Protects cost and data.)_

### Performance
- Bound every request body and outbound fetch (size and timeout). _(The edge runtime has tight limits.)_

### Accessibility
- Use native elements first; add ARIA only when no native element fits. _(Native controls bring keyboard and screen-reader support for free.)_

## Do
- Keep secrets in Worker secrets; vars only for non-secret config
- Run the security check after every deploy
- Return cache-control: no-store on authenticated responses

## Don't
- Trust a field the client sends for ownership or visibility
- Call the database from the browser with a privileged key
- Log tokens or request bodies

## Quality gates
| Gate | Tool | Threshold | When |
|---|---|---|---|
| Lint and types | The stack’s linter and type checker | 0 errors | Every pull request |
| Unit and component tests | The stack’s test runner | All pass; every design-skill component state covered | Every pull request |
| Performance budget | Worker analytics | p95 CPU ≤ 50ms · p95 latency ≤ 300ms excluding model calls | Weekly review |
| Dependency and secret scan | Dependency audit + secret scanner | No high or critical findings; no secrets | Every pull request and nightly |
| Preview deploy | Hosting preview environment | A working preview link on the pull request | Every pull request |
| Security check | scripts/security-check.mjs | All checks pass | After every deploy |

## Workflow
- Branching: Trunk-based; main deploys.

**Review checklist**
- Correctness: does it do what the issue asks, including edge cases?
- Readability: could a new teammate change it safely?
- Architecture: is it in the right place, with the right boundaries?
- Security: inputs, secrets, permissions, dependencies
- Performance: budgets, queries, bundle size
- Tests fail when the code is broken (flip a condition and re-run)
- Any change to auth, access rules or schema needs a second reviewer

**Definition of done**
- Acceptance criteria met and demoed on the preview link
- Tests added for new behaviour and every state
- Accessibility and performance gates green
- Analytics events named from the experience skill
- Docs or changelog updated when behaviour changes

**Release**
- Small pull requests (aim for under 400 changed lines)
- CI green before review
- Squash-merge to main; main is always deployable
- Every release has a written rollback path
- Deploy from main; database changes applied in the SQL editor first, backwards compatible

**Incidents**
- Roll back with wrangler rollback; rotate any secret that may have leaked

## Overrides of the engineering core
- Journey tests: Replaced by API contract tests + the live security check — No UI in this stack.
- Accessibility: Not applicable — No UI in this stack.

## Examples
### Who is asking (`src/api.js`)

```js
async function whoIs(request, env) {
  const token = (request.headers.get('authorization') || '').replace(/^Bearer\s+/i, '');
  if (!token) return null;
  const r = await fetch(env.SUPABASE_URL + '/auth/v1/user', { headers: { apikey: env.SUPABASE_KEY, authorization: 'Bearer ' + token } });
  return r.ok ? r.json() : null;
}
```
Pliki w paczce (4)
  • AGENTS.md 5 KB
  • README.md 2 KB
  • SKILL.md 7 KB
  • rules/worker-api-engineering.mdc 3 KB

Wersje

W bazie nie ma innych skilli o nazwie worker-api-engineering.

Migawka bazy z 13.11.2026 · wersja paczki 2348979eb8cf (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100fastify-api-engineering
    Pisze, przegląda, testuje i wydaje REST API w Fastify i TypeScript z Vitest, zamieniając projekty w kod.
  • 100react-web-app-engineering
    Wspiera pisanie, testowanie i wydawanie aplikacji webowej w React, TypeScript, Tailwind CSS i Vitest.
  • 95cloudflare-workers-testing
    Prowadzi testowanie Cloudflare Workers w Vitest i @cloudflare/vitest-pool-workers: konfiguracja, mocki bindingów D1, KV, R2 i DO, testy integracyjne oraz błędy pokrycia.
  • 100cloudflare-workers-miniflare
    Obsługuje Miniflare 3 i wrangler dev do lokalnego testowania Workers: API getMiniflare(), emulacja bindingów KV, Durable Objects, R2 i D1 oraz testy w Vitest z @cloudflare/vitest-pool-workers.
  • 100cloudflare-workers
    Buduje i wdraża funkcje brzegowe w Cloudflare Workers i Wrangler: API, zadania cron i middleware brzegowy.
  • 100cloudflare-workers
    Buduje i wdraża funkcje brzegowe w Cloudflare Workers i Wrangler: API, zadania cron i middleware brzegowy.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.