Agent skill

Create Tier

by zhe-qi in zhe-qi/clhoria-template

创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。

MITAuto-check: notesBackend & APIs

Install Create Tier

skills CLI
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install zhe-qi/clhoria-template create-tier --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-tier .claude/skills/create-tier && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
create-tier
GitHub stars
193
Token cost
~1.7k tokens
SKILL.md length
310 words
Files
1
Skills in repo
10
Repo updated
First seen
Licence
MIT

At a glance

创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。

  • Works in 7 steps: 在 app.config.ts 注册 tier → 如果是 JWT tier,先补环境变量 → 定义 tier 本地类型别名 → …
  • Backend & APIs work in your project
  • SKILL.md covers 核心原则, 先做判断, 推荐文件布局 and 标准步骤, plus 3 more sections
  • Calls pnpm; needs PARTNER_JWT_SECRET

What it does

Create Tier is an agent skill from zhe-qi/clhoria-template. 创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs. The repository describes itself as: Production-ready Hono backend template that doubles as an AI agent harness — providing feedforward guides, feedback sensors, and progressive specialization to make AI coding… The licence is MIT.

When your agent uses it

  • Backend & APIs work in your project

Example prompts

  • “/create-tier”

Requirements

  • A credential in PARTNER_JWT_SECRET

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. 在 app.config.ts 注册 tier
  2. 如果是 JWT tier,先补环境变量
  3. 定义 tier 本地类型别名
  4. 定义 tier 本地 factory alias
  5. 编写 tier 级中间件
  6. 创建业务路由模块
  7. 测试与验证

What it can do on your machine

Read from SKILL.md and the folder at commit 589f13e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • PARTNER_JWT_SECRET

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Create Tier loads about 1.7k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 310 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~41
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:87
    同时同步 `.env` / `.env.test` 的实际值。

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from zhe-qi/clhoria-template at commit 589f13e, republished under its MIT licence (© zhe-qi). 310 words, ~1,653 tokens.

Download SKILL.mdSave it as .claude/skills/create-tier/SKILL.md (or your agent's skills folder).
name
create-tier
description
创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。
argument-hint
[tier-name]

新增 Tier 指南

核心原则

  1. 新增 tier 优先在业务侧组合,不要为了一个新 tier 回改框架核心。
  2. admin、client、public 是预置别名,不是唯一扩展入口。
  3. 只有在“所有 tier 都共享的新能力”出现时,才允许修改核心文件。

当前可复用的扩展原语:

  • 类型原语:BaseJwtPayload、JwtBindings、RouteHandlerWithBindings、OpenAPIWithBindings
  • 运行时原语:createTierRouter、createTierFactory、defineMiddleware

默认不要修改这些核心文件:

  • src/types/lib.d.ts
  • src/lib/core/create-app.ts
  • src/lib/core/factory.ts

先做判断

场景是否 JWT推荐 bindings备注
公开 tier否PublicBindings 或 BaseBindings没有 jwtPayload
认证 tier,仅需 sub是JwtBindings 或 ClientBindings默认只带 sub
认证 tier,有额外 claims是JwtBindings<CustomJwtPayload>例如 partnerId、tenantId
带角色的 tier是JwtBindings<CustomPayload & { roles: string[] }>不要默认复用 admin 语义

如果只是“另一个业务端”,通常不需要把它加进全局核心类型,只需要在该 tier 目录下定义本地 alias。

推荐文件布局

text
src/routes/{tier}/
├── _middleware.ts
├── {tier}.types.ts
├── {tier}.factory.ts
└── {feature}/
    ├── {feature}.index.ts
    ├── {feature}.routes.ts
    ├── {feature}.handlers.ts
    ├── {feature}.types.ts
    └── __tests__/

约定:

  • {tier}.types.ts 只放 tier 级 payload / bindings / route handler alias
  • {tier}.factory.ts 只放 tier 级 router / middleware / handlers alias
  • 业务模块继续放在 src/routes/{tier}/{feature}/ 或 src/routes/{tier}/{category}/{feature}/

标准步骤

1. 在 app.config.ts 注册 tier

先补文档入口和路由装配配置:

ts
// app.config.ts
{
  name: "partner",
  title: "合作方 API 文档",
  token: "your-partner-token",
}

可选字段:

  • basePath: 自定义路径前缀
  • routeDir: 当目录名和 tier 名不同
  • middlewares: 显式传入中间件,跳过 src/routes/{tier}/_middleware.ts
2. 如果是 JWT tier,先补环境变量

在 src/env.ts 增加对应 secret,例如:

ts
PARTNER_JWT_SECRET: z.string().min(32, "JWT密钥长度至少32字符,建议使用强随机字符串"),

同时同步 .env / .env.test 的实际值。

3. 定义 tier 本地类型别名

优先在 src/routes/{tier}/{tier}.types.ts 定义,而不是回到 src/types/lib.d.ts 增加一个全局业务类型。

认证 tier 示例:

ts
// src/routes/partner/partner.types.ts
import type { RouteConfig as HonoRouteConfig } from "@hono/zod-openapi";
import type {
  BaseJwtPayload,
  JwtBindings,
  RouteHandlerWithBindings,
} from "@/types/lib";

export type PartnerJwtPayload = BaseJwtPayload & {
  partnerId: string;
};

export type PartnerBindings = JwtBindings<PartnerJwtPayload>;
export type PartnerRouteHandler<R extends HonoRouteConfig>
  = RouteHandlerWithBindings<R, PartnerBindings>;

公开 tier 示例:

ts
// src/routes/portal/portal.types.ts
import type { PublicBindings, RouteHandlerWithBindings } from "@/types/lib";
import type { RouteConfig as HonoRouteConfig } from "@hono/zod-openapi";

export type PortalBindings = PublicBindings;
export type PortalRouteHandler<R extends HonoRouteConfig>
  = RouteHandlerWithBindings<R, PortalBindings>;

如果 tier 除了 jwtPayload 还需要额外上下文变量,可以直接组合 BaseVariables:

ts
import type { BaseVariables, BaseJwtPayload } from "@/types/lib";

type PartnerJwtPayload = BaseJwtPayload & { partnerId: string };

export type PartnerBindings = {
  Variables: BaseVariables & {
    jwtPayload: PartnerJwtPayload;
    partnerCode: string;
  };
};
4. 定义 tier 本地 factory alias

在 src/routes/{tier}/{tier}.factory.ts 本地封装,不要把 createPartnerRouter 之类的东西加回核心。

ts
// src/routes/partner/partner.factory.ts
import { createTierRouter } from "@/lib/core/create-app";
import { createTierFactory } from "@/lib/core/factory";

import type { PartnerBindings } from "./partner.types";

const partnerFactory = createTierFactory<PartnerBindings>();

export const createPartnerMiddleware = partnerFactory.createMiddleware;
export const createPartnerHandlers = partnerFactory.createHandlers;

export function createPartnerRouter() {
  return createTierRouter<PartnerBindings>();
}
5. 编写 tier 级中间件

默认放在 src/routes/{tier}/_middleware.ts,由框架自动加载。

认证 tier 示例:

ts
// src/routes/partner/_middleware.ts
import { jwt } from "hono/jwt";

import env from "@/env";
import { defineMiddleware } from "@/lib/core/define-config";

export default defineMiddleware([
  jwt({ secret: env.PARTNER_JWT_SECRET, alg: "HS256" }),
]);

带白名单跳过时,使用 { handler, except }:

ts
export default defineMiddleware([
  {
    handler: jwt({ secret: env.PARTNER_JWT_SECRET, alg: "HS256" }),
    except: c => c.req.path.endsWith("/auth/login"),
  },
]);

只有当业务语义完全一致时,才复用 admin 的 authorize、operationLog。不要因为“也有角色”就直接套 admin 中间件。

6. 创建业务路由模块

入口文件使用本地 tier router:

ts
// src/routes/partner/orders/orders.index.ts
import { createPartnerRouter } from "../partner.factory";

import * as handlers from "./orders.handlers";
import * as routes from "./orders.routes";

export default createPartnerRouter()
  .openapi(routes.list, handlers.list)
  .openapi(routes.get, handlers.get);

模块类型文件继续基于 tier alias:

ts
// src/routes/partner/orders/orders.types.ts
import type * as routes from "./orders.routes";
import type { PartnerRouteHandler } from "../partner.types";

type RouteTypes = {
  [K in keyof typeof routes]: typeof routes[K];
};

export type PartnerOrdersRouteHandlerType<T extends keyof RouteTypes>
  = PartnerRouteHandler<RouteTypes[T]>;
7. 测试与验证

至少做下面这些:

  1. 为新 tier 的核心路由补 __tests__
  2. 如果 tier 使用了自定义 claims,补一个类型测试,验证 c.get("jwtPayload") 的字段推断正确
  3. 运行 pnpm typecheck
  4. 运行 pnpm test --run

可参考现有的组合测试思路:src/lib/core/__tests__/tier-composition.test.ts

最小示例:新增 partner tier

目标:新增一个带 partnerId claim 的合作方端。

最少需要改这些地方:

  1. app.config.ts 新增 { name: "partner", title, token }
  2. src/env.ts 增加 PARTNER_JWT_SECRET
  3. 新建 src/routes/partner/partner.types.ts
  4. 新建 src/routes/partner/partner.factory.ts
  5. 新建 src/routes/partner/_middleware.ts
  6. 在 src/routes/partner/... 下创建业务模块
  7. 补测试并执行 pnpm typecheck && pnpm test --run

注意:这整个流程默认不需要修改:

  • src/types/lib.d.ts
  • src/lib/core/create-app.ts
  • src/lib/core/factory.ts

反模式

不要这样做:

  1. 每新增一个 tier,就往 src/lib/core/create-app.ts 加一个 createXxxRouter
  2. 每新增一个 tier,就往 src/lib/core/factory.ts 加一个 createXxxMiddleware
  3. 每新增一个 tier,就往 src/types/lib.d.ts 塞一个业务专属全局类型
  4. 非 admin tier 直接复用 AdminBindings 或 admin 专属中间件
  5. 忘记补 src/env.ts 和测试环境 secret

执行时的工作顺序

当用户要求“新增一个 tier”时,按下面顺序执行:

  1. 先判断 tier 是公开、基础认证还是自定义 claims
  2. 再决定是否需要新增 env secret
  3. 在 app.config.ts 注册 tier
  4. 在 src/routes/{tier}/ 下创建本地 types / factory / middleware
  5. 再创建业务模块和测试
  6. 最后执行类型检查和测试

如果过程中发现自己想改核心文件,先停一下,确认这是不是“所有 tier 共享的新能力”;如果不是,就回到本地组合方案。

© zhe-qi, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/create-tier of zhe-qi/clhoria-template.

Open the folder on GitHubat commit 589f13e

Compare with similar skills

Create Tier next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Create Tier compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Tier this skillzhe-qi/clhoria-template193—~1.7kAutomated safety check: NotesMIT
Configuring Horizoncoollabsio/coolify63k4 repos~898Automated safety check: PassMIT
Nestjs Best Practicesrolling-scopes/rsschool-app10k6 repos~1.2kAutomated safety check: PassMIT
Sub2API AdminWei-Shaw/sub2api44k1 repos~717Automated safety check: PassLGPL-3.0
Firecrawl Build Onboardingfirecrawl/firecrawl190k1 repos~1.4kAutomated safety check: NotesISC
Obsidian BasesAtmosphere/atmosphere3.8k22 repos~3.2kAutomated safety check: PassApache-2.0

Similar skills

  • Configuring Horizon

    coollabsio/coolify

    A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.

    63k GitHub starsUsed in 4 repos~898 tokens
    Backend & APIsAuto-check passed
  • Nestjs Best Practices

    rolling-scopes/rsschool-app

    NestJS best practices and architecture patterns for building production-ready applications.

    10k GitHub starsUsed in 6 repos~1.2k tokens
    Backend & APIsAuto-check passed
  • Sub2API Admin

    Wei-Shaw/sub2api

    Manages a Sub2API deployment from the command line: accounts, redeem and invitation codes, groups, proxies, imports, exports and raw admin API calls.

    44k GitHub starsUsed in 1 repo~717 tokens
    Backend & APIsAuto-check passed
  • Firecrawl Build Onboarding

    firecrawl/firecrawl

    Gets Firecrawl working in a project: signs you in through the browser, saves FIRECRAWL_API_KEY to .env and picks the first SDK or REST path.

    190k GitHub starsUsed in 1 repo~1.4k tokens
    Backend & APIsAuto-check: notes
  • Obsidian Bases

    Atmosphere/atmosphere

    Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.

    3.8k GitHub starsUsed in 22 repos~3.2k tokens
    Backend & APIsAuto-check passed
  • Fortify Development

    coollabsio/coolify

    ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 4 repos~1.9k tokens
    Backend & APIsAuto-check passed

More from zhe-qi/clhoria-template

All 10 skills in this repo
  • Effect V4

    zhe-qi/clhoria-template

    Effect v4 模式指南。当需要创建 Effect 服务、定义错误类型、编写 Effect 程序、管理 Layer 组合、或使用 Effect 封装异步操作时使用

    193 GitHub stars~887 tokensUpdated 2 mo ago
    Auto-check passed
  • Bullmq

    zhe-qi/clhoria-template

    创建或修改 BullMQ 队列任务。当需要创建新队列、添加任务类型、注册 Worker、设置定时任务、或用户请求"添加后台任务/队列处理"时使用

    193 GitHub stars~1.6k tokensUpdated 2 mo ago
    Auto-check passed
  • Crud

    zhe-qi/clhoria-template

    创建或修改 CRUD 模块。当需要创建新的增删改查 API、修改现有路由模块、添加新字段、新增接口、或用户请求"创建/修改 XX 管理"时使用

    193 GitHub stars~552 tokensUpdated 2 mo ago
    Auto-check passed
  • DB Schema

    zhe-qi/clhoria-template

    创建或修改数据库 Schema。当需要创建新表、修改表结构、定义字段、设置索引约束、或涉及 Drizzle ORM / drizzle-zod 操作时使用

    193 GitHub stars~620 tokensUpdated 2 mo ago
    Auto-check passed
  • Drizzle V1

    zhe-qi/clhoria-template

    Drizzle ORM v1 关系查询指南。当需要定义 Relations v2、编写关系查询、使用 through 多对多、预定义过滤器、或从旧版 Drizzle 迁移时使用

    193 GitHub stars~3k tokensUpdated 2 mo ago
    Auto-check passed
  • Source Command Opsx Explore

    zhe-qi/clhoria-template

    Enter explore mode - think through ideas, investigate problems, clarify requirements

    193 GitHub stars~1.6k tokensUpdated 2 mo ago
    Auto-check passed

Categories

Questions about Create Tier

What does Create Tier do?

创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。. Create Tier is an agent skill from zhe-qi/clhoria-template.

When should I use Create Tier?

Create Tier fits situations like: backend & APIs work in your project.

How do I install Create Tier in Claude Code?

Run `npx skills add zhe-qi/clhoria-template --skill create-tier -a claude-code`. Or copy the skill folder (.agents/skills/create-tier in zhe-qi/clhoria-template) into .claude/skills/create-tier in your project. Claude Code loads it when a task matches its description.

How do I install Create Tier in Codex?

Run `npx skills add zhe-qi/clhoria-template --skill create-tier -a codex`. Or copy the skill folder (.agents/skills/create-tier in zhe-qi/clhoria-template) into .agents/skills/create-tier in your project. Codex loads it when a task matches its description.

Can I use Create Tier in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add zhe-qi/clhoria-template --skill create-tier -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-tier, .gemini/skills/create-tier, .github/skills/create-tier and .opencode/skills/create-tier in your project.

What does Create Tier need to run?

Going by SKILL.md and its folder, Create Tier needs the command-line tools its instructions call (pnpm) and credentials named PARTNER_JWT_SECRET. Our summary lists: A credential in PARTNER_JWT_SECRET.

Does Create Tier access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Create Tier safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Create Tier use?

Create Tier is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Tier use?

About 1.7k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Tier?

Skills that share tags, products or a category with Create Tier: Configuring Horizon (coollabsio/coolify, 63k stars), Nestjs Best Practices (rolling-scopes/rsschool-app, 10k stars), Sub2API Admin (Wei-Shaw/sub2api, 44k stars) and Firecrawl Build Onboarding (firecrawl/firecrawl, 190k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Tier?

zhe-qi (a GitHub user) maintains it in zhe-qi/clhoria-template, which has 193 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on July 30, 2026.

Source: zhe-qi/clhoria-template on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.