Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add sh5623/fe-rail --skill fe-buildgit clone --depth 1 https://github.com/sh5623/fe-railWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/sh5623/fe-rail/fe-build)<a href="https://agentmods.dev/skills/sh5623/fe-rail/fe-build"><img src="https://agentmods.dev/badge/skills/sh5623/fe-rail/fe-build/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/sh5623/fe-rail/fe-build"><img src="https://agentmods.dev/badge/skills/sh5623/fe-rail/fe-build.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00057 | $0.01930 |
| Opus 5.5 | $0.00023 | $0.00772 |
| Sonnet 5.5 | $0.00011 | $0.00386 |
| Haiku 4.5 | $0.00006 | $0.00193 |
Grade A, and why
fe-build scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 137 lines — stays where its author put it; the contents beside it link to each section on GitHub.
FE Build 스킬
승인된 스펙을 기반으로 React/Next.js + Vite SPA + TypeScript 코드를 구현합니다.
When to Use
feature.md또는 스펙 문서가 승인된 직후- 컴포넌트/페이지/훅 신규 개발
- 기존 컴포넌트 기능 추가
Instructions
Phase 1 — 사전 확인 + 에이전트 위임
구현 시작 전 반드시 확인:
feature.md또는 스펙 문서가 존재하고 승인됐는가?- 기술 스택 확인 (package.json 참조)
- 레포의 정전(canonical) 모범 파일을 먼저 읽고 그 shape 를 복사한다 — 신규 코드는 이 스킬의 산문 예시가 아니라 소비자 레포의 실제 패턴을 1차 소스로 따른다. 데이터 계층은
src/features/*/api.ts(쿼리/뮤테이션 형태)·src/lib/query-keys.ts(키 팩토리)·src/lib/api/client.ts(타입드 클라이언트·인터셉터)를, UI 는src/components/ui/*(shadcn 프리미티브)를 grep·Read 해 동일 컨벤션으로 작성한다. 해당 파일이 없으면 이 스킬의 예시를 폴백으로. - 프레임워크 규칙 로드 — 이 스킬이 로드될 때 주어진 base directory 기준
../../docs/framework-rules.md를 Read 한다. 전문(약 570줄)을 통째로 넣지 않는다:grep -n "^## " <파일>로 절 위치를 잡고 «공통 규칙» 절 + 감지한 프레임워크 절(Next.js App Router / Vite + React SPA)만 offset·limit 으로 읽는다. 워크스페이스(pnpm-workspace.yaml·package.jsonworkspaces·turbo.json)가 있으면../../docs/monorepo.md도 읽는다. 소비자 프로젝트 CLAUDE.md 의 규칙이 항상 우선하고 이 파일은 프레임워크별 보조 레퍼런스다. 아래 에이전트에 위임할 때 그 절대경로를 브리프에 함께 넘긴다 — 에이전트는 플러그인 트리 위치를 모르고, 이 레포의 CLAUDE.md 가 @import 하는 것은 소비자 세션에 닿지 않는다.
코드베이스 탐색은 직접 하지 않고 에이전트에 위임한다:
| 상황 | 위임 에이전트 |
|---|---|
| 3쿼리 이상의 파일·심볼 탐색 필요 | fe-explorer — 요약만 반환, 컨텍스트 보호 |
| 테스트 코드 생성 (BDD/TDD) | fe-test-author — 시나리오 도출 + 파일 작성 |
| tsc·린터(ESLint/Biome) 오류 수정 | fe-build-fixer — 최소 diff 오류 제거 |
Phase 2 — 구현 순서
반드시 이 순서를 지킵니다:
1. 타입 정의 먼저 (types/ 또는 컴포넌트 상단)
2. 비즈니스 로직 분리 (커스텀 훅)
3. 컴포넌트 구현 (UI만 담당, 로직은 분리된 레이어에서)
4. 테스트 작성 (Vitest + RTL)
5. 타입체크 확인 (tsc --noEmit)
Phase 3 — 코딩 규칙
타입
// ✅ Good
interface CampaignListProps {
campaigns: Campaign[];
onSelect: (id: string) => void;
}
// ❌ Bad - any 금지
const handleData = (data: any) => {}
데이터 fetch
// ✅ Good - TanStack Query + 중앙 키 팩토리 (인라인 ad-hoc 키 금지)
const { data, isPending, isError } = useQuery({
queryKey: queryKeys.campaigns.list(params),
queryFn: () => fetchCampaigns(params),
})
// 생성 API 클라이언트(openapi-fetch) 감지 시 — 자체 백엔드는 타입드 클라이언트 경유:
// queryFn: async () => { const { data, error } = await api.GET('/campaigns'); if (error) throw ...; return data }
// ❌ Bad - useEffect fetch / 인라인 ad-hoc 키(`['campaigns']`) / 스키마를 as any 로 무마
useEffect(() => {
fetch('/api/campaigns').then(...)
}, [])
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +1 lines df8918574bf4
- 1mo ago First seen · 136 lines · 57 tokens per session scan A a26712625d6c
fe-build is a skill published in the GitHub repository sh5623/fe-rail (1 stars, last pushed 4d ago), licensed MIT. It adds 57 tokens to every session and 1,930 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
react-frontend
React, TypeScript, and Next.js patterns for frontend development. Use when building React components, managing state, fetching data, optimizing performance, or working with Next.js App Router. Covers React 18-19, hooks, Server Components, and type-safe patterns.
stitch-nextjs-components
Converts a Stitch screen, a local HTML file, or a URL into production-ready Next.js 15 App Router components — Server vs Client split, dark mode via CSS variables, TypeScript strict, ARIA, and responsive mobile-first layout. Only the Stitch route needs an API key.
ia-react-frontend
React architecture patterns, TypeScript, Next.js, hooks, and testing. Use when working with React component structure, state management, Next.js routing, Vitest, React Testing Library, reviewing React code, or synchronizing JSON locales and reviewing translations in a React or frontend interface. For visual design and…
client-setup
Create a vanilla tRPC client with createTRPCClient (), configure link chain with httpBatchLink/httpLink, dynamic headers for auth, transformer on links (not client constructor). Infer types with inferRouterInputs and inferRouterOutputs. AbortController signal support. TRPCClientError typing.
trpc-router
Entry point for all tRPC skills. Decision tree routing by task: initTRPC.create(), t.router(), t.procedure, createTRPCClient, adapters, subscriptions, React Query, Next.js, links, middleware, validators, error handling, caching, FormData.
adapter-express
Mount tRPC as Express middleware with createExpressMiddleware() from @trpc/server/adapters/express. Access Express req/res in createContext via CreateExpressContextOptions. Mount at a path prefix like app.use('/trpc', ...). Avoid global express.json() conflicting with tRPC body parsing for FormData.