plugins/smedjen/skills/http-protocols/SKILL.md
HTTP/1.1 vs 2 vs 3, TCP handshake, cookies, sessions, CORS, caching headers, and protocol fundamentals. Covers multiplexing, QUIC, Set-Cookie attributes, JWT vs server sessions, preflight mechanics, Cache-Control directives, and content negotiation.
npx skillsauth add hjemmesidekongen/ai http-protocolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Operational HTTP patterns beyond protocol fundamentals — CDN strategy, rate limiting, versioning, and cache optimization.
Versioned URLs (default): Hash in filename (app.a1b2c3.js), Cache-Control: public, max-age=31536000, immutable. New deploy = new URL = instant invalidation. Index HTML uses no-cache.
Tag-based purge: Surrogate keys (Surrogate-Key: product-123 category-shoes), purge by tag on data change. Fastly native, Cloudflare Enterprise. Better than full purge for dynamic content.
SWR tuning: Cache-Control: max-age=60, stale-while-revalidate=3600 — serve stale while fetching fresh. max-age = acceptable staleness, swr = maximum tolerance.
Enable when: CDN supports it (Cloudflare/Fastly/CloudFront), browser clients, latency > throughput. Deploy at CDN layer with Alt-Svc: h3=":443"; ma=86400. No app code changes.
Hold off when: corporate proxies block UDP/443, server-to-server traffic, APM tools lack QUIC support.
Token bucket: Fixed replenish rate, burst up to bucket size. Redis + Lua for distributed — EVALSHA atomically checks and decrements.
Sliding window: Rolling time window, no burst spikes at boundaries. Redis sorted sets: ZADD/ZRANGEBYSCORE/ZREMRANGEBYSCORE.
Headers: Always return X-RateLimit-Limit, Remaining, Reset (Unix). Retry-After on 429.
URL path (/v2/users): Simple, visible in logs, recommended for public APIs.
Accept header (application/vnd.api+json;version=2): Clean URLs, better for internal APIs.
Never query param (?v=2): Breaks caching, no standard.
ETag generation: Hash body for static assets. For DB responses, composite updated_at + ID. Weak ETags (W/"abc") match semantically equivalent responses.
304 savings: Saves bandwidth, not compute. Cache server-side too for expensive queries.
See references/process.md for TCP/TLS handshakes, status codes, cookie attributes, CORS headers, and compression.
development
Creates a brand from scratch through market research and interactive sparring. Runs competitive research via Perplexity, then guides the user through positioning, audience, voice, values, and content pillars. Produces the full brand guideline set at .ai/brand/{name}/. Use when building a new brand, defining brand strategy for a product, or when /våbenskjold:create is invoked.
testing
Loads brand guidelines from .ai/brand/{name}/ and makes them available to the current context. Progressive disclosure: L1 confirms brand exists, L2 loads summary, L3 loads specific files on demand. Use when a downstream skill or user needs brand context, or when /våbenskjold:apply is invoked.
documentation
Guided reinvention of an existing brand guideline. Loads current brand from .ai/brand/{name}/, identifies what to keep vs change, and walks the user through targeted evolution. Preserves brand equity while updating positioning, voice, or values. Use when refreshing a brand or when /våbenskjold:evolve is invoked.
development
Codifies an existing brand from materials, samples, and references. Analyzes provided content to extract voice patterns, values, and positioning. Produces the same guideline format as brand-strategy. Use when a brand already exists but isn't documented, or when /våbenskjold:audit is invoked.