verify-agent-docs
agent harness, docs, recipes, templates, PR template 변경 후 markdown 링크, skill 인덱스, 오래된 참조를 검증할 때 사용합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
agent harness, docs, recipes, templates, PR template 변경 후 markdown 링크, skill 인덱스, 오래된 참조를 검증할 때 사용합니다.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
endpoint 문서를 기준으로 API helper, TanStack Query hook, 타입, 에러/cache 동작을 구현할 때 사용합니다.
apps/client, apps/market-owner, apps/design-system-web, 선택적 apps/admin 내부의 앱 전용 shared 컴포넌트를 생성, 스펙 작성, export, 검증할 때 사용합니다.
GitHub 브라우저 PR 리뷰에서 visible diff, review comment, check status, local verification 여부를 분리해 기록할 때 사용합니다.
packages/design-system 공통 컴포넌트를 Figma/이미지/상태 요구사항 기반으로 생성, 구현, story/spec/export 검증할 때 사용합니다.
필드 검증, submit, mutation, error, disabled/loading/success 상태가 있는 프론트엔드 폼 흐름을 구현할 때 사용합니다.
프론트엔드 구현 또는 리뷰 중 Toss Frontend Fundamentals의 응집도 기준으로 함께 수정되는 component, hook, type, fixture, spec, form 흐름 배치를 점검할 때 사용합니다.
| name | verify-agent-docs |
| description | agent harness, docs, recipes, templates, PR template 변경 후 markdown 링크, skill 인덱스, 오래된 참조를 검증할 때 사용합니다. |
agent harness와 문서 구조 변경 후 기본적인 문서 품질을 검증합니다.
| File or Pattern | Purpose |
|---|---|
AGENTS.md | agent entrypoint |
apps/**/AGENTS.md | app-local agent instruction |
packages/**/AGENTS.md | package-local agent instruction |
README.md | repo entrypoint |
docs/**/*.md | architecture, workflow, convention, decision docs |
recipes/**/*.md | 반복 작업 절차 |
templates/**/*.md | spec와 Jira 템플릿 |
.agents/skills/**/SKILL.md | repo-local Codex skills |
.agents/skills/**/agents/openai.yaml | skill UI 호출 메타데이터 |
.github/pull_request_template.md | PR template |
git diff --check
PASS: 출력이 없습니다.
find . -path '*/AGENTS.md' -not -path './node_modules/*' -print | sort
find .agents/skills -maxdepth 3 -name SKILL.md -print | sort
find .agents/skills -path '*/agents/openai.yaml' -print | sort
PASS: 하위 AGENTS.md가 의도한 workspace에만 있고, 새 skill이 .agents/skills/<name>/SKILL.md에 있으며, 의도하지 않은 중첩 skill 경로가 없습니다. agents/openai.yaml은 해당 skill 디렉터리 아래에만 있습니다.
node -e 'const fs=require("fs");const path=require("path");const root=process.cwd();const files=[];function walk(d){for(const e of fs.readdirSync(d,{withFileTypes:true})){if([".git","node_modules","dist","build"].includes(e.name)) continue;const p=path.join(d,e.name);if(e.isDirectory()) walk(p);else if(e.name.endsWith(".md")) files.push(p)}}function stripCode(s){return s.replace(/```[\s\S]*?```/g,"").replace(/`[^`\n]*`/g,"")}walk(root);let bad=[];for(const f of files){const s=stripCode(fs.readFileSync(f,"utf8"));const re=/\[[^\]]+\]\(([^)]+)\)/g;let m;while((m=re.exec(s))){const raw=m[1].trim();if(!raw||raw.startsWith("http")||raw.startsWith("#")||raw.startsWith("mailto:")) continue;const target=raw.replace(/^<|>$/g,"").split("#")[0];if(!target) continue;const abs=path.resolve(path.dirname(f),target);if(!fs.existsSync(abs)){bad.push(path.relative(root,f)+" -> "+raw)}}}if(bad.length){console.log(bad.join("\n"));process.exit(1)}console.log("checked "+files.length+" markdown files")'
PASS: broken relative link가 없습니다.
node -e 'const fs=require("fs");const path=require("path");const root=process.cwd();const skills=fs.readdirSync(".agents/skills",{withFileTypes:true}).filter((e)=>e.isDirectory()).map((e)=>e.name).sort();const docs=["docs/index.md","docs/agent/index.md","docs/agent/indexing.md"];let bad=[];for(const skill of skills){const skillPath=`.agents/skills/${skill}/SKILL.md`;if(!fs.existsSync(skillPath)) bad.push(`${skill}: missing SKILL.md`);const source=fs.existsSync(skillPath)?fs.readFileSync(skillPath,"utf8"):"";if(!/^---[\s\S]*?^name:\s*/m.test(source)||!/^---[\s\S]*?^description:\s*/m.test(source)) bad.push(`${skill}: missing frontmatter name/description`);for(const doc of docs){if(fs.existsSync(doc)&&!fs.readFileSync(doc,"utf8").includes(`.agents/skills/${skill}/SKILL.md`)&&!fs.readFileSync(doc,"utf8").includes(`${skill}/SKILL.md`)) bad.push(`${doc}: missing ${skill}`)}}if(bad.length){console.log(bad.join("\n"));process.exit(1)}console.log(`checked ${skills.length} skills`)'
PASS: 모든 skill에 frontmatter가 있고 docs/index.md, docs/agent/index.md, docs/agent/indexing.md에서 누락되지 않습니다.
find apps packages -maxdepth 2 -name AGENTS.md -print | sort
find apps -maxdepth 1 -mindepth 1 -type d -print | sort
find packages -maxdepth 1 -mindepth 1 -type d -print | sort
PASS: AGENTS.md, docs/agent/index.md, docs/agent/indexing.md의 현재 app/package 목록과 실제 workspace가 충돌하지 않습니다. 예정 app/package는 예정이라고 표시되어 있어야 합니다.
rg -n "docs/code-quality\\.md|Test Checklist|What is this PR\\?|Spec / Docs|22\\.19\\.0|Node 22|DCMDSW|package script가 생긴 뒤|app/package 구조가 생긴 뒤" AGENTS.md README.md docs recipes templates apps packages .agents .github --glob '!**/verify-agent-docs/SKILL.md' --glob '!**/node_modules/**' --glob '!**/dist/**' --glob '!**/storybook-static/**' --glob '!**/.next/**'
PASS: 의도적으로 남긴 compatibility 문서 외 stale reference가 없습니다.
pnpm format:check
PASS: markdown, yaml, json formatting이 Prettier 기준과 맞습니다.
새 skill, workflow, recipe, template을 추가했다면 아래 문서에 필요한 링크가 있는지 확인합니다.
docs/index.mddocs/agent/index.mddocs/agent/indexing.mdAGENTS.md## Agent Docs Verification
| Check | Status | Notes |
| ------------------ | ------ | --------------- |
| `git diff --check` | PASS | - |
| skill list | PASS | - |
| markdown links | PASS | checked N files |
| skill registry | PASS | checked N skills |
| stale refs | PASS | - |
| `pnpm format:check` | PASS | - |
docs/code-quality.md 자체는 compatibility entrypoint로 허용합니다.