소스 정보
- 저장소
- tomevault-io/skills-registry
- 최근 소스 활동
- 2026년 5월 11일 15:30
- 감지된 SKILL.md 언어
- 영어
- 스타
- 0
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill page-component-mapper명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | page-component-mapper |
| description | > Use when this capability is needed. |
Given a route, produce a depth-limited component tree with file paths, server/client boundaries, props, hooks, state management, data fetching patterns, and styling metadata. Output a ComponentMap artifact consumed by all downstream skills.
tsconfig.json, package.json, next.config.*.claude/qa-cache/component-maps/ for ComponentMap persistence/dashboard/settings)--depth N--fresh to bypass cache and rebuildapp/{route}/page.tsx or pages/{route}.tsx. Validate that the route contains only alphanumeric characters, hyphens, underscores, forward slashes, and brackets (for dynamic segments like [id]). Reject routes containing .., shell metacharacters, or null bytes.Copy this checklist and update as you complete each step:
Progress:
- [ ] Step 0: Check Cache
- [ ] Step 1: Resolve tsconfig Path Aliases
- [ ] Step 2: Identify Route Entry Points
- [ ] Step 3: Trace Imports (Depth-Limited)
- [ ] Step 4: Classify Completeness
- [ ] Step 5: Persist and Present
Note: If you've lost context of previous steps (e.g., after context compaction), check the progress checklist above. Resume from the last unchecked item. Re-read relevant reference files if needed.
.claude/qa-cache/component-maps/{route-slug}.json.references/caching-protocol.md.Using cached map ({age} old, {N} components, completeness: {level}) | --fresh to rebuild--fresh flag provided, skip cache entirely.tsconfig.json at the project root. If it has an extends field, read the parent config too.compilerOptions.paths and compilerOptions.baseUrl.{ "@/*": "./src/*", "~/lib/*": "./lib/*" }.tsconfig.json is missing, warn the user and proceed with relative-path-only resolution.App Router (default -- app/ directory exists):
app/{route}/page.tsx (or .ts, .jsx, .js).layout.tsx, loading.tsx, error.tsx, not-found.tsx in the same directory and parent directories up to app/layout.tsx.Pages Router (fallback -- pages/ directory, no app/):
pages/{route}.tsx (or pages/{route}/index.tsx).pages/_app.tsx and pages/_document.tsx.getServerSideProps or getStaticProps exports.Default depth: 3 levels from route entry. Override with --depth N.
For each file, starting from the entry points found in Step 2:
'use client' or 'use server' directives../Button): try .tsx, .ts, .jsx, .js, /index.tsx, /index.ts@/components/Button): resolve using the Step 1 lookup table, then try extensionsreact, next/link, @radix-ui/*): record as external, stop tracingnext/dynamic(() => import(...)), React.lazy): trace literal paths, flag isDynamic: trueimport { X } from './components'): follow re-export through index files, cap at 5 levelsreferences/import-tracing-protocol.md.displayName: the component function/const nameboundary: "server" (has 'use server' or in app/ without directive), "client" (has 'use client'), "shared" (no directive, outside app/)props: from TypeScript type annotation on the component parameterhooks: all useXxx( callsstateManagement: imports from zustand, jotai, recoil, @tanstack/react-query, or React context usagedataFetching: fetch() calls, server actions, tRPC calls, React Query hooks, SWR hooksstyling_approach: based on import type (.module.css -> css-modules, tailwind classes in JSX -> tailwind)has_conditional_classes: clsx(, , , or ternary in className"full": unresolvedImports array is empty"shallow": all unresolved entries have reason "depth-limit""partial": any unresolved entry has a non-depth reason ("dynamic-computed", "barrel-depth-exceeded", "not-found")cachedFiles array..claude/qa-cache/component-maps/{route-slug}.json.Component Map: /dashboard/settings (depth 3, shallow)
Entry: app/dashboard/settings/page.tsx [server]
Layout: app/dashboard/layout.tsx [server]
23 components mapped | 4 unresolved (depth-limit) | 2 external (shadcn)
Server (8): SettingsPage, SettingsLayout, AccountSection, ...
Client (12): ThemeToggle, NotificationForm, ProfileEditor, ...
Shared (3): Button, Card, Input
Data flow: 2 server actions, 1 React Query hook, 3 prop chains
Hooks: useState(5), useEffect(3), useForm(2), useQuery(1)
The ComponentMap JSON follows the schema in the design document. Key fields:
{
"version": "1.0",
"route": "/dashboard/settings",
"depth": 3,
"completeness": "shallow",
"framework": { "name": "next", "routerType": "app", "version": "14.1.0" },
"entryComponent": {
"filePath": "/abs/path/app/dashboard/settings/page.tsx",
"displayName": "SettingsPage",
"boundary": "server",
"imports": [{ "targetPath": "...", "importType":
Pass the ComponentMap artifact path to qa-coordinator. The map contains the full component tree with boundary, hooks, dataFetching, and styling_approach fields consumed by ui-bug-investigator and css-layout-debugger.
| Path | Load Condition | Content Summary |
|---|---|---|
references/caching-protocol.md | Step 0, when cache file exists | Cache validity rules, TTL, invalidation triggers |
references/import-tracing-protocol.md | Step 3, always | Path alias resolution, barrel handling, dynamic imports, boundary rules |
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
cn(classNames(design_system_component: true if imported from a known UI libraryaccepts_className_prop: true if props type includes classNamelayout_role: infer from file location and component nameunresolved: true, unresolvedReason: "depth-limit".