Launches the Oikos Next.js 16 dev server, managing dependencies and port availability.

Install

mkdir -p .claude/skills/run-oikos && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16774" && unzip -o skill.zip -d .claude/skills/run-oikos && rm skill.zip

Installs to .claude/skills/run-oikos

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Bootstrap, launch, and smoke-test the Oikos (Futari) Next.js 16 dev server. Use when the user asks to "run the app", "start dev", "啟動 dev server", "smoke test landing", "open the dashboard locally", verify a UI change, or screenshot the warm-lamp app. Wraps `npm install` + `npm run dev` + curl smokes into a single idempotent driver, captures the gotchas that trip cold-machine starts (missing `@next/bundle-analyzer`, missing `.env.local`, port 3000 reuse, Turbopack lazy-compile 404s).
488 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Beginner

Key capabilities

  • bootstrap the Next.js dev server
  • launch the Oikos Next.js 16 dev server
  • smoke-test landing pages
  • verify UI changes locally
  • resolve missing dependencies like @next/bundle-analyzer
  • handle port 3000 reuse

How it works

The skill's `smoke.sh` script performs sanity checks, installs missing dependencies, launches the Next.js dev server, and smoke-tests key routes, handling common startup issues.

Inputs & outputs

You give it
execution of smoke.sh script
You get back
running Next.js dev server on localhost:3000 and smoke test results

When to use run-oikos

  • Run dev server
  • Smoke test app
  • Start dashboard

About this skill

run-oikos

Idempotent driver for the Oikos repo's Next.js 16 (Turbopack) dev server. Paths below are relative to repo root (<unit>/ = oikos repo root).

The agent path: smoke.sh

One script, one command, all paths verified in this container:

.claude/skills/run-oikos/smoke.sh

What it does, in order:

  1. Sanity-checks Node ≥ 20 (Next 16 requires it). Bails on the user's shell PATH if node / npm aren't visible (fnm/nvm shells without use activated will trip this).
  2. Confirms .env.local exists. If missing, prints a directive to copy .env.local.example or (in worktrees) symlink from the main checkout.
  3. Detects the stale-install state: package.json declares @next/bundle-analyzer but node_modules/@next/bundle-analyzer doesn't exist. Symptom from a vanilla next dev: Error: Cannot find module '@next/bundle-analyzer' and dev silently dies. Fix: the script runs npm install automatically when this signature matches.
  4. If :3000 is already serving (probably your prior session), reuses it instead of double-launching.
  5. Otherwise launches npm run dev via nohup into .claude/skills/run-oikos/.logs/dev-3000.log, then polls the log for Ready in <Nms> with a 60s ceiling. Crashes are surfaced by greppping for Error|EADDRINUSE|Failed to and tailing the log.
  6. Smokes three routes that are reliable under Turbopack cold-start: / → 200, /zh-TW → 200, /dashboard → 307. See Gotchas for why /sign-in is intentionally not in the smoke set.
  7. Leaves the server running, prints the URL + PID + log path + how to stop it.

To stop:

.claude/skills/run-oikos/smoke.sh --stop

(Or the underlying: lsof -ti :3000 | xargs kill.)

Override port if 3000 is in use by another project:

PORT=3001 .claude/skills/run-oikos/smoke.sh

Prerequisites

  • macOS or Linux with Node ≥ 20 (Next 16 requirement). This session ran Node v24.15.0 / npm 11.12.1 on darwin 24.0.0.
  • .env.local at the repo root, populated with the Supabase dev project credentials. .env.local.example has the template. The user has a separate oikos prod and oikos-dev dev Supabase project; local npm run dev must talk to the dev one. In worktrees the convention is to symlink rather than copy (ln -s ../../.env.local) so key rotations don't drift.
  • A clean :3000 (or set PORT).

Direct invocation: drive the running app

Once smoke.sh returns the server is live, use plain curl to drive routes from an agent:

curl -s -o /dev/null -w "%{http_code}\n" http://localhost:3000/zh-TW
# → 200

# Signed-out user hitting an auth-walled route 307s to the
# locale-aware sign-in path.
curl -sI http://localhost:3000/dashboard | grep -i '^location:'
# → location: /zh-TW/sign-in

# Inspect the rendered HTML of the landing for a chip / glyph change:
curl -s http://localhost:3000/zh-TW | grep -o 'phoneMock[A-Za-z]*'

For visual verification (DOM mutations, screenshots, focus rings), fall through to a real browser at http://localhost:3000/ — the script keeps the server alive in the background for as long as you need it.

Run (human path)

npm install      # if you just pulled / switched node_modules-disturbing branches
npm run dev      # interactive; Ctrl-C to stop

Open http://localhost:3000/ in a browser. Same dev server as the agent path; useful for actual visual inspection.

Gotchas

  • Error: Cannot find module '@next/bundle-analyzer' after a branch swap or fresh clone. next.config.ts imports the analyzer unconditionally (gated only by ANALYZE=true for actually running it), so an absent package kills dev too. The script auto-runs npm install when it detects this; if you bypassed the script, run it manually.
  • /sign-in 404s on first cold curl under Turbopack. Verified this session: /zh-TW/sign-in and /sign-in both 404 from a fresh next dev even though app/[locale]/sign-in/page.tsx exists. The same route renders 200 once you reach it via the in-app /dashboard → 307 → sign-in redirect chain from a real browser session — Turbopack apparently warms the route through that path but not via a direct curl. Hence the smoke set intentionally skips /sign-in; check it through a browser session if you need it.
  • package-lock.json version field drift. The lockfile's "version" was stamped 1.2.4 while package.json was 1.3.0 (release didn't push the lockfile bump). Harmless to dev but will rage npm ci; the v1.3.1 PR fixed it.
  • bundle-analyzer adds ~16 packages on first install. Not a bug — they're transitive deps of the analyzer. Worth noting so the npm install output isn't surprising.
  • Dev server binds to 0.0.0.0 and prints a LAN URL. If you're driving from another device on the same network, use the 192.168.x.x URL Next prints, not just localhost.
  • .env.local is not in any repo lock. Loss of the file (e.g. deleted by accident in a worktree) leaves dev launching but every Supabase call failing. The script catches the missing-file case; it can't catch wrong-but-present keys.

Troubleshooting

SymptomCauseFix
Error: Cannot find module '@next/bundle-analyzer' on npm run dev.node_modules/@next/bundle-analyzer missing despite the dep being in package.json.npm install (the script does this automatically; only happens if you bypassed).
[run-oikos] .env.local missing.No .env.local at repo root.Copy .env.local.example.env.local and fill the Supabase dev keys. In a worktree, symlink from main.
EADDRINUSE :3000.A prior dev server (or another project) is on the port../smoke.sh --stop to kill an oikos one, or PORT=3001 ./smoke.sh to relocate.
Smoke / returns 200 but /zh-TW 404.Turbopack lazy-compile error in the [locale] segment. Rare.Stop, rm -rf .next, restart. The script handles fresh .next cleanly (verified this session).
Logout doesn't bounce away from /settings.Known: pre-v1.3.1 LogoutButton wraps the redirecting server action in useTransition.Fixed in PR #833. Pull main if you're on a branch from before that.

Layout

.claude/skills/run-oikos/
  SKILL.md      # this file
  smoke.sh      # the driver (chmod +x)
  .logs/        # gitignored; dev server logs land here

.logs/ is created on first run. Add to .gitignore if you maintain one (this repo doesn't ignore inside .claude/skills/ explicitly).

When not to use it

  • when Node.js is not installed or is older than version 20
  • when the .env.local file is missing or incorrectly configured
  • when a different Next.js version or framework is used

Prerequisites

macOS or Linux with Node ≥ 20.env.local at the repo rootA clean :3000 (or set PORT)

Limitations

  • specific to Oikos repo's Next.js 16 (Turbopack) dev server
  • requires Node.js version 20 or higher
  • dependent on the presence and correct configuration of .env.local

How it compares

This skill provides an idempotent driver for the Oikos Next.js dev server, automating common setup and troubleshooting steps that would otherwise be manual and error-prone.

Compared to similar skills

run-oikos side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
run-oikos (this skill)02moCautionBeginner
greenfield-design04moNo flagsIntermediate
vite-patterns02moReviewIntermediate
run-tamagui01moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

greenfield-design

mitcheman

Scaffolds a Next.js site with impeccable-driven design from an empty folder. Called only by bodega-setup when no project exists. Invokes impeccable's teach-impeccable and frontend-design skills, wrapping prompts in simple voice when appropriate.

00

vite-patterns

Fmarzochi

Vite build tool patterns including config, plugins, HMR, env variables, proxy setup, SSR, library mode, dependency pre-bundling, and build optimization. Activate when working with vite.config.ts, Vite plugins, or Vite-based projects.

00

run-tamagui

JonLatane

Run or rebuild the local Tamagui/Next.js frontend (frontends/tamagui). Use when the user wants to start the Tamagui dev server or rebuild it standalone.

00

Onboarding Flow Optimizer

jamiojala

Reshape onboarding sequences around progressive disclosure and measurable activation rather than generic first-run screens.

00

dynamic

LowyShin

|

00

ui-ux-pro-max

nextlevelbuilder

UI/UX design intelligence. 50 styles, 21 palettes, 50 font pairings, 20 charts, 8 stacks (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind). Actions: plan, build, create, design, implement, review, fix, improve, optimize, enhance, refactor, check UI/UX code. Projects: website, landing page, dashboard, admin panel, e-commerce, SaaS, portfolio, blog, mobile app, .html, .tsx, .vue, .svelte. Elements: button, modal, navbar, sidebar, card, table, form, chart. Styles: glassmorphism, claymorphism, minimalism, brutalism, neumorphism, bento grid, dark mode, responsive, skeuomorphism, flat design. Topics: color palette, accessibility, animation, layout, typography, font pairing, spacing, hover, shadow, gradient.

1,9092,023

Search skills

Search the agent skills registry