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 LeeYudok/doksam-skills --skill frontend-buildgit clone --depth 1 https://github.com/LeeYudok/doksam-skillsWrote 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/leeyudok/doksam-skills/frontend-build)<a href="https://agentmods.dev/skills/leeyudok/doksam-skills/frontend-build"><img src="https://agentmods.dev/badge/skills/leeyudok/doksam-skills/frontend-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/leeyudok/doksam-skills/frontend-build"><img src="https://agentmods.dev/badge/skills/leeyudok/doksam-skills/frontend-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.00071 | $0.02763 |
| Opus 5 | $0.00036 | $0.01381 |
| Sonnet 5 | $0.00014 | $0.00553 |
| Haiku 4.5 | $0.00007 | $0.00276 |
Grade C, and why
frontend-build scanned grade C with 1 finding 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 11d 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
`rm -rf dist/assets dist/index.html` 로 이전 해시 자산만 지운다. How it starts
The opening of the file, as written. The whole thing — 187 lines — stays where its author put it; the contents beside it link to each section on GitHub.
frontend-build
빌드·패키징 층을 담당한다. 컴포넌트 코드는 react-expert 가 맡는다.
이 문서는 모델이 이미 아는 일반론을 적지 않는다. 버전별 함정, 실측으로 확인한 사실, doksam 고유 규약, 그리고 판단이 갈리는 지점만 담는다.
0. 먼저 확정할 것
- 산출물이 어디로 가는가 — 정적 호스팅 / 다른 언어 바이너리에 내장(
go:embed등) / 컨테이너. 내장이면 §4 를 반드시 읽는다. 뒤늦게 바꾸면.gitignore와 빌드 순서가 전부 얽힌다. - 폐쇄망인가 — 그렇다면 외부 CDN·폰트·원격 이미지가 0건이어야 한다(§3).
- 패키지 매니저 — 레포에 이미 있는 락파일을 따른다. 섞지 않는다(§1).
1. pnpm
락파일이 곧 계약이다
- 설치는 CI·재현 환경에서
pnpm install --frozen-lockfile. 락파일이 어긋나면 조용히 올려버리는 대신 실패해야 한다. - 락파일을 지우고 다시 만드는 것은 "고치는" 게 아니라 의존성 트리 전체를 바꾸는 변경이다. 원인 파악 없이 삭제·재생성하지 않는다.
package.json과 락파일은 항상 같은 커밋에 들어간다.
lifecycle 스크립트는 기본 차단이다
pnpm 10부터 의존성의 install 스크립트가 기본으로 실행되지 않는다. esbuild·sharp 처럼
네이티브 바이너리를 내려받는 패키지는 명시 허용이 필요하다.
// package.json
"pnpm": { "onlyBuiltDependencies": ["esbuild", "sharp"] }
증상이 "빌드는 되는데 런타임에 바이너리가 없다"로 나타나므로, 이 계열 오류를 보면 설치 로그의 차단 경고부터 확인한다. 아무거나 허용 목록에 넣지 않는다 — 임의 코드 실행이다.
워크스페이스
pnpm-workspace.yaml이 패키지 경계다. 루트에는 도구만 두고 앱 의존성을 올리지 않는다.- 패키지 간 참조는
"workspace:*". 버전 번호를 손으로 맞추지 않는다. - 특정 패키지에서 실행:
pnpm --filter <pkg> build. 루트에서cd로 들어가지 않는다. - 버전을 강제로 맞춰야 하면
pnpm.overrides. 단 왜 필요한지 주석을 남긴다. 근거 없는 override 는 다음 업그레이드에서 아무도 못 지운다.
npx / dlx
일회성 CLI 는 pnpm dlx <pkg>. npx 는 npm 계열 캐시를 따로 쓰므로 pnpm 레포에서 섞으면
버전이 갈린다. 다만 shadcn CLI 처럼 npx 를 전제로 문서화된 도구는 그대로 써도 된다 —
설치가 아니라 코드 생성이 목적이라 트리에 영향이 없다.
2. Vite
반드시 확인하는 설정
export default defineConfig({
plugins: [react(), tailwindcss()],
resolve: { alias: { "@": path.resolve(import.meta.dirname, "./src") } },
build: {
outDir: "dist",
sourcemap: false, // 배포본에 원본 코드를 싣지 않는다
emptyOutDir: true, // §4 에 해당하면 false
},
server: { proxy: { "/api": "http://localhost:9992" } },
})
sourcemap: false— 켜두면 배포 산출물에서 원본을 복원할 수 있다. 폐쇄망·사내 도구라도 기본은 끈다. 필요하면 별도 아티팩트로 빼고 배포물에는 넣지 않는다.server.proxy— 개발 중 백엔드로 넘길 경로. 이걸 안 두면 CORS 를 열게 되고, 그 설정이 운영까지 따라간다.- 환경변수는
VITE_접두사만 클라이언트에 노출된다. 접두사 없는 값은 번들에 안 들어가고, 반대로 접두사를 붙이는 순간 공개된다 — 비밀을 넣지 않는다. - 하위 경로 배포면
base를 지정한다. 안 하면 자산 경로가 루트 기준으로 깨진다.
What ships with it
6 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 11d ago First seen · 187 lines · 71 tokens per session scan C 47af0ed7547e
frontend-build is a skill published in the GitHub repository LeeYudok/doksam-skills (10 stars, last pushed 19d ago), licensed MIT. It adds 71 tokens to every session and 2,763 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
accesslint-audit
Find and fix WCAG 2.2 accessibility issues. Two modes — report (sweep a codebase or page, produce a prioritized written report, no edits) and fix (audit→edit→verify loop on a target). Prefers direct-CDP live-DOM auditing; falls back to a browser-MCP composition or HTML-string audits.
animejs-animation
Advanced JavaScript animation library skill for creating complex, high-performance web animations.
antigravity-design-expert
Core UI/UX engineering skill for building highly interactive, spatial, weightless, and glassmorphism-based web interfaces using GSAP and 3D CSS.
algolia-search
Expert patterns for Algolia search implementation, indexing strategies, React InstantSearch, and relevance tuning.
angular-state-management
Master modern Angular state management with Signals, NgRx, and RxJS. Use when setting up global state, managing component stores, choosing between state solutions, or migrating from legacy patterns.
angular
Modern Angular (v20+) expert with deep knowledge of Signals, Standalone Components, Zoneless applications, SSR/Hydration, and reactive patterns.