Install
$ agentstack add skill-starchybomb-isekai-isekai-backend ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Isekai Backend — the other half of a $10k build
A beautiful frontend with no real backend is a mockup, not a product. This skill is what turns an isekai build into something a client could actually log into, pay for, and trust with their data. Use it any time a build needs accounts, a database, uploads, or a real deploy — not just "add a backend" requests.
Stack (free, production-grade)
- Database + Auth + Storage: Supabase (hosted Postgres, free tier: 500MB DB, 1GB storage, 50k monthly active users)
- Framework: Next.js App Router, deployed on Vercel's free Hobby tier
- Client:
@supabase/ssr— the current official package for cookie-based sessions in Next.js. The oldauth-helpers-nextjsis deprecated; never scaffold it. - Components: use the
shadcnskill for forms, tables, and auth screens instead of hand-rolling markup.
BANNED (the default AI-backend look — never ship any of these)
- Row Level Security left off "for now" — the #1 way Supabase side-projects leak every row to anyone with the anon key
service_rolekey referenced anywhere in a Client Component or aNEXT_PUBLIC_*env var- Secrets committed to the repo with no
.env.examplefor the next person - One Supabase project shared between local dev and production
- Forms that write straight to the client SDK with no server-side validation
- Tables with no
created_at/updated_at, no primary key strategy, or naming that mixescamelCaseandsnake_case - Auth screens built from scratch when a shadcn block already exists for it
- "It works on my machine" — nothing pushed to Vercel, no live URL to hand the client
Process
- Design the schema first. List entities and relationships before writing SQL.
snake_casetables and columns,id uuid primary key default gen_random_uuid(),created_at timestamptz default now(),updated_atmaintained by a trigger. Foreign keys with an expliciton deletepolicy — don't leave it to default. - Turn on RLS the moment you create the table.
alter table public. enable row level security;is not optional and not a later step. Write one policy per operation (select/insert/update/delete) scoped toauth.uid(), not one broadfor allpolicy that overshares. - Wire auth with
@supabase/ssr. Server client for Server Components/Route Handlers, browser client for Client Components, middleware to refresh the session on every request. See [references/supabase-nextjs.md](references/supabase-nextjs.md) for the exact client setup. - Mutations go through Server Actions or Route Handlers, never a client-side
.insert()on a form submit with no server check. Validate input server-side even if the client already validated it. - Storage buckets get policies too — mirror the same
auth.uid()logic as table RLS. Public buckets only for genuinely public assets (avatars, product images); everything else gets signed URLs. - Generate types, don't hand-write them.
supabase gen types typescript --project-id > types/database.tsafter every schema change, so the app is type-safe against the real schema. - Two Supabase projects minimum — one for local/preview, one for production. Never point a Vercel Preview deployment at the production database.
- Deploy to Vercel. Import the GitHub repo, set env vars per environment (Production/Preview/Development get different Supabase projects), confirm the build succeeds, then click through the live URL like a client would — signup, login, the core flow — before calling it done.
Env vars (know which side of the fence each one is on)
| Variable | Exposed to browser? | Where it lives | |---|---|---| | NEXT_PUBLIC_SUPABASE_URL | Yes | Fine client-side | | NEXT_PUBLIC_SUPABASE_ANON_KEY | Yes | Fine client-side — RLS is what actually protects data, not hiding this key | | SUPABASE_SERVICE_ROLE_KEY | Never | Server only: Route Handlers, Server Actions, cron/edge functions. Bypasses RLS entirely. |
The "sellable" checklist (before calling it done)
- [ ] RLS enabled on every table in
public, policies tested with a non-owner account - [ ] Auth flow works end-to-end: signup, login, logout, session persists across refresh
- [ ] Loading, empty, and error states exist for every data-fetching view — not just the happy path
- [ ] Form validation happens server-side, not just in the browser
- [ ]
.env.examplecommitted, real.env.localgitignored - [ ] Production and preview point at separate Supabase projects
- [ ] Deployed to Vercel with a working live URL, custom domain connected if the client has one
- [ ] Spam/abuse protection on public forms (contact, signup) — pair with the
turnstile-spinskill if bot traffic is a concern - [ ] Basic SEO: page titles, meta description, OG image — a link shared in Slack should look intentional
References
- [references/supabase-nextjs.md](references/supabase-nextjs.md) — exact
@supabase/ssrclient/middleware setup for App Router - [references/schema-and-rls.md](references/schema-and-rls.md) — schema conventions and RLS policy patterns with copy-pasteable SQL
- [references/vercel-deploy.md](references/vercel-deploy.md) — connecting the repo, env var scoping, preview vs production, free-tier limits
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: StarchyBomb
- Source: StarchyBomb/isekai
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.