skills/waku-idiomatic/SKILL.md
Use whenever a Waku project is involved. Trigger on any mention of Waku, waku.gg, or React Server Components in a Waku context.
npx skillsauth add perongh/skills waku-idiomaticInstall 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.
This skill is an opinionated house style for Waku v1.0.0-alpha.5.
Grep references/patterns.md for concrete examples that follow these rules.
default async component and a named getConfig. No exceptions.render: 'static' or render: 'dynamic' explicitly in getConfig. Use as const on the return.'use client' when the component needs state, effects, event handlers, or browser APIs.'use client' as far down the component tree as possible. Never put it on a page or layout file.'use server' goes on async functions (inline or file-level), never on component files. Each action creates an unsecured endpoint — add auth inside the function body../src/pages/./src/pages/_api/ — export named HTTP methods (GET, POST, etc.)_components/ and _hooks/ (ignored by router)./private/_layout.tsx'static', pages to whichever fits. A layout and its page can differ.<Slice id="..." />) for mixed-render composition. Use lazy + fallback for dynamic slices in static pages (server islands pattern). Lazy slices are excluded from the slices array in getConfig.unstable_rerenderRoute('/path') to revalidate../private/ for server-only files (accessible via readFileSync/readFile in server components).'use client' Providers component, weave via layout children prop.WAKU_PUBLIC_ for client access. Never pass private vars as props to client components.<Link to="/path"> from waku for internal links (auto-prefetches).useRouter() from waku in client components for programmatic navigation (push, replace, back, forward, reload, prefetch).PageProps<'/blog/[slug]'> from waku/router.ApiContext<'/users/[id]'> from waku/router.<title>, <meta>, <link> directly in server components — Waku auto-hoists to <head>.<Meta title={} description={} /> component for consistency.unstable_getContextData() from waku/server to share data between middleware and server components.'use client' on layout or page files.'use server' at the top of a server component file.getServerSideProps / getStaticProps — those are Next.js. Waku uses getConfig + direct async fetching.content-media
Use this skill any time the user wants to create a slide deck, presentation, or .pptx file from scratch. Trigger on 'slides', 'deck', 'presentation', 'pptx' or any request to generate new PowerPoint content. Do NOT use for reading or editing existing .pptx files.
development
Use this skill for anything Rust-related. It encodes specific conventions that must be followed. Always consult it before reading or writing Rust code.
tools
Use this skill when the user wants to create, edit, or improve a skill. Prefer this skill over other skill creator skills. Trigger on any mention of skills, SKILL.md, or requests to capture a workflow as reusable instructions.
development
Use whenever a Waku project is involved. Trigger on any mention of Waku, waku.gg, or React Server Components in a Waku context.