AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Elysia Route

skill-anbturki-claude-toolkit-elysia-route · by anbturki

Scaffold an Elysia API route with CRUD endpoints, validation, and auth. Use when adding API endpoints to an Elysia backend.

No reviews yet
0 installs
39 views
0.0% view→install

Install

$ agentstack add skill-anbturki-claude-toolkit-elysia-route

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No 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 No
  • 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.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-anbturki-claude-toolkit-elysia-route)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
5mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

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 →
Are you the author of Elysia Route? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Create Elysia Route

Scaffold a new Elysia route file for $ARGUMENTS.

Step 1: Learn Project Patterns

  1. Read CLAUDE.md for API conventions
  2. Find existing routes:

`` Glob("**/routes/**/*.ts") Glob("**/*.routes.ts") ``

  1. Read 2-3 existing route files — learn:
  • Import style for services and schemas
  • Auth plugin usage
  • Middleware/guard patterns
  • Response format
  • How routes are registered in the app

Step 2: Scaffold Route

File location: Match existing route file locations (e.g., src/routes/${entity}.routes.ts)

import { ${Entity}Service } from ""; // match project imports
import {
  create${Entity}Schema,
  list${Entity}sSchema,
  update${Entity}Schema,
} from ""; // match project imports
import { Elysia } from "elysia";

export const ${entity}Routes = new Elysia({
  name: "${entities}",
  prefix: "/${entities}",
  tags: ["${Entity}s"],
})
  // Apply auth/middleware matching existing routes
  .use(authPlugin)
  // List
  .get(
    "/",
    async ({ query }) => {
      return ${Entity}Service.list(query);
    },
    {
      query: list${Entity}sSchema,
      detail: { description: "List all ${entities}" },
    },
  )
  // Create
  .post(
    "/",
    async ({ body }) => {
      return ${Entity}Service.create(body);
    },
    {
      body: create${Entity}Schema,
      detail: { description: "Create a new ${entity}" },
    },
  )
  // Get by ID
  .get(
    "/:id",
    async ({ params }) => {
      return ${Entity}Service.getById(params.id);
    },
    {
      detail: { description: "Get ${entity} by ID" },
    },
  )
  // Update
  .put(
    "/:id",
    async ({ params, body }) => {
      return ${Entity}Service.update(params.id, body);
    },
    {
      body: update${Entity}Schema,
      detail: { description: "Update a ${entity}" },
    },
  )
  // Delete
  .delete(
    "/:id",
    async ({ params }) => {
      return ${Entity}Service.remove(params.id);
    },
    {
      detail: { description: "Delete a ${entity}" },
    },
  );

Patterns

File Upload (use Elysia's t, not Zod)

import { Elysia, t } from "elysia";

.post("/import", handler, {
  body: t.Object({
    file: t.File(),
    tagId: t.Optional(t.String()),
  }),
})

Nested Routes

.get("/:id/items", async ({ params, query }) => {
  return ${Entity}Service.listItems(params.id, query);
}, { query: paginationSchema })

.post("/:id/items", async ({ params, body }) => {
  return ${Entity}Service.addItem(params.id, body);
}, { body: itemSchema })

Action Endpoints

.post("/:id/start", async ({ params }) => {
  return ${Entity}Service.start(params.id);
})

Step 3: Register Route

Add to the route index (match existing registration pattern):

import { ${entity}Routes } from "./${entity}.routes";

export const api = new Elysia({ prefix: "/api" })
  .use(${entity}Routes);

Rules

  1. Method chaining — required for Eden Treaty type inference
  2. Zod schemas for body/query — pass to Elysia options, never call .parse() manually
  3. t.File() for uploads — Elysia's type system, not Zod
  4. Use PUT, not PATCH — unless the project specifically uses PATCH
  5. Services handle business logic — routes only parse request and call services
  6. Return data directly — Eden Treaty wraps in { data, error } automatically
  7. Match existing auth/middleware — apply same plugins as other routes

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.