Configuring Horizon
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install zhe-qi/clhoria-template create-tier --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .claude/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tierType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install zhe-qi/clhoria-template create-tier --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/create-tier .agents/skills/create-tier && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .agents/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install zhe-qi/clhoria-template create-tier --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/create-tier .cursor/skills/create-tier && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .cursor/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/zhe-qi/clhoria-template.git --path .agents/skills/create-tier--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install zhe-qi/clhoria-template create-tier --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/create-tier .gemini/skills/create-tier && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .gemini/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install zhe-qi/clhoria-template create-tierInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/create-tier .github/skills/create-tier && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .github/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add zhe-qi/clhoria-template --skill create-tier -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install zhe-qi/clhoria-template create-tier --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/zhe-qi/clhoria-template.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/create-tier .opencode/skills/create-tier && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-tier" agent skill from https://github.com/zhe-qi/clhoria-template/tree/main/.agents/skills/create-tier into .opencode/skills/create-tier/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-tier", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-tier创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。
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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 589f13e. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pnpmFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names these keys or tokens, usually read from environment variables:
PARTNER_JWT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
同时同步 `.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.
The full file from zhe-qi/clhoria-template at commit 589f13e, republished under its MIT licence (© zhe-qi). 310 words, ~1,653 tokens.
.claude/skills/create-tier/SKILL.md (or your agent's skills folder).当前可复用的扩展原语:
BaseJwtPayload、JwtBindings、RouteHandlerWithBindings、OpenAPIWithBindingscreateTierRouter、createTierFactory、defineMiddleware默认不要修改这些核心文件:
src/types/lib.d.tssrc/lib/core/create-app.tssrc/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。
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 aliassrc/routes/{tier}/{feature}/ 或 src/routes/{tier}/{category}/{feature}/app.config.ts 注册 tier先补文档入口和路由装配配置:
// app.config.ts
{
name: "partner",
title: "合作方 API 文档",
token: "your-partner-token",
}可选字段:
basePath: 自定义路径前缀routeDir: 当目录名和 tier 名不同middlewares: 显式传入中间件,跳过 src/routes/{tier}/_middleware.ts在 src/env.ts 增加对应 secret,例如:
PARTNER_JWT_SECRET: z.string().min(32, "JWT密钥长度至少32字符,建议使用强随机字符串"),同时同步 .env / .env.test 的实际值。
优先在 src/routes/{tier}/{tier}.types.ts 定义,而不是回到 src/types/lib.d.ts 增加一个全局业务类型。
认证 tier 示例:
// 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 示例:
// 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:
import type { BaseVariables, BaseJwtPayload } from "@/types/lib";
type PartnerJwtPayload = BaseJwtPayload & { partnerId: string };
export type PartnerBindings = {
Variables: BaseVariables & {
jwtPayload: PartnerJwtPayload;
partnerCode: string;
};
};在 src/routes/{tier}/{tier}.factory.ts 本地封装,不要把 createPartnerRouter 之类的东西加回核心。
// 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>();
}默认放在 src/routes/{tier}/_middleware.ts,由框架自动加载。
认证 tier 示例:
// 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 }:
export default defineMiddleware([
{
handler: jwt({ secret: env.PARTNER_JWT_SECRET, alg: "HS256" }),
except: c => c.req.path.endsWith("/auth/login"),
},
]);只有当业务语义完全一致时,才复用 admin 的 authorize、operationLog。不要因为“也有角色”就直接套 admin 中间件。
入口文件使用本地 tier router:
// 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:
// 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]>;至少做下面这些:
__tests__c.get("jwtPayload") 的字段推断正确pnpm typecheckpnpm test --run可参考现有的组合测试思路:src/lib/core/__tests__/tier-composition.test.ts
目标:新增一个带 partnerId claim 的合作方端。
最少需要改这些地方:
app.config.ts 新增 { name: "partner", title, token }src/env.ts 增加 PARTNER_JWT_SECRETsrc/routes/partner/partner.types.tssrc/routes/partner/partner.factory.tssrc/routes/partner/_middleware.tssrc/routes/partner/... 下创建业务模块pnpm typecheck && pnpm test --run注意:这整个流程默认不需要修改:
src/types/lib.d.tssrc/lib/core/create-app.tssrc/lib/core/factory.ts不要这样做:
src/lib/core/create-app.ts 加一个 createXxxRoutersrc/lib/core/factory.ts 加一个 createXxxMiddlewaresrc/types/lib.d.ts 塞一个业务专属全局类型AdminBindings 或 admin 专属中间件src/env.ts 和测试环境 secret当用户要求“新增一个 tier”时,按下面顺序执行:
app.config.ts 注册 tiersrc/routes/{tier}/ 下创建本地 types / factory / middleware如果过程中发现自己想改核心文件,先停一下,确认这是不是“所有 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
Just SKILL.md in .agents/skills/create-tier of zhe-qi/clhoria-template.
Open the folder on GitHubat commit 589f13e
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Tier this skillzhe-qi/clhoria-template | 193 | — | ~1.7k | Automated safety check: Notes | MIT | |
| Configuring Horizoncoollabsio/coolify | 63k | 4 repos | ~898 | Automated safety check: Pass | MIT | |
| Nestjs Best Practicesrolling-scopes/rsschool-app | 10k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Sub2API AdminWei-Shaw/sub2api | 44k | 1 repos | ~717 | Automated safety check: Pass | LGPL-3.0 | |
| Firecrawl Build Onboardingfirecrawl/firecrawl | 190k | 1 repos | ~1.4k | Automated safety check: Notes | ISC | |
| Obsidian BasesAtmosphere/atmosphere | 3.8k | 22 repos | ~3.2k | Automated safety check: Pass | Apache-2.0 |
coollabsio/coolify
A skill your agent uses whenever the user mentions Horizon by name in a Laravel context.
rolling-scopes/rsschool-app
NestJS best practices and architecture patterns for building production-ready applications.
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.
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.
Atmosphere/atmosphere
Create and edit Obsidian Bases (.base files) with views, filters, formulas, and summaries.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
zhe-qi/clhoria-template
Effect v4 模式指南。当需要创建 Effect 服务、定义错误类型、编写 Effect 程序、管理 Layer 组合、或使用 Effect 封装异步操作时使用
zhe-qi/clhoria-template
创建或修改 BullMQ 队列任务。当需要创建新队列、添加任务类型、注册 Worker、设置定时任务、或用户请求"添加后台任务/队列处理"时使用
zhe-qi/clhoria-template
创建或修改 CRUD 模块。当需要创建新的增删改查 API、修改现有路由模块、添加新字段、新增接口、或用户请求"创建/修改 XX 管理"时使用
zhe-qi/clhoria-template
创建或修改数据库 Schema。当需要创建新表、修改表结构、定义字段、设置索引约束、或涉及 Drizzle ORM / drizzle-zod 操作时使用
zhe-qi/clhoria-template
Drizzle ORM v1 关系查询指南。当需要定义 Relations v2、编写关系查询、使用 through 多对多、预定义过滤器、或从旧版 Drizzle 迁移时使用
zhe-qi/clhoria-template
Enter explore mode - think through ideas, investigate problems, clarify requirements
Categories
创建或修改一个新的 API tier。当用户请求“新增 tier / 创建 partner tier / 新增 merchant 端 / 新增 tenant 端 / 新增 API 端 / 新增一套路由层”时使用。目标是在不修改框架核心的前提下,为新 tier 补齐配置、中间件、类型别名、路由入口和测试。. Create Tier is an agent skill from zhe-qi/clhoria-template.
Create Tier fits situations like: backend & APIs work in your project.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.