Skip to main content

ts-morph-analyzer

Use when debugging TypeScript/JavaScript bugs by tracing call chains, understanding unfamiliar codebases quickly, making architectural decisions, or reviewing code quality. Extract function signatures and JSDoc without full file reads, trace call hierarchies up/down, detect code smells, and follow data flow. Triggers on debugging, understanding codebase, architectural analysis, signature extraction, call tracing.

معلومات المصدر

المستودع
ratacat/claude-skills
آخر نشاط في المصدر
٦ يناير ٢٠٢٦ في ٠٧:٠٩
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥٤
التفرعات
٩

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
9 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
ts-morph-analyzer
description
Use when debugging TypeScript/JavaScript bugs by tracing call chains, understanding unfamiliar codebases quickly, making architectural decisions, or reviewing code quality. Extract function signatures and JSDoc without full file reads, trace call hierarchies up/down, detect code smells, and follow data flow. Triggers on debugging, understanding codebase, architectural analysis, signature extraction, call tracing.
# TypeScript Codebase Analyzer ## Overview Lightweight codebase analysis using ts-morph. Extract signatures, JSDoc, and call chains without flooding context with full file reads. **Core principle:** Get maximum architectural insight with minimum token usage. ## When to Use | Situation | Script to Use | |-----------|---------------| | Understand a codebase's public API quickly | `extract-signatures.ts` | | Trace a bug through function calls | `trace-calls.ts` | | Map what a module exports | `analyze-exports.ts` | | Detect architectural issues before diving in | `code-smells.ts` | | Understand import/dependency structure | `analyze-exports.ts --deps` | ## Setup ```bash # In the skill directory cd ~/.claude/skills/ts-morph-analyzer npm install ``` Or run the setup script: ```bash ~/.claude/skills/ts-morph-analyzer/setup.sh ``` ## Quick Reference ### Extract Signatures (Most Common) Get function/method signatures + JSDoc without reading full files: ```bash # All signatures in a file npx ts-node scripts/extract-signatures.ts src/api/users.ts # All signatures in a directory (recursive) npx ts-node scripts/extract-signatures.ts src/ # Filter to exported only npx ts-node scripts/extract-signatures.ts src/ --exported # Include types and interfaces npx ts-node scripts/extract-signatures.ts src/ --types # Output as JSON for further processing npx ts-node scripts/extract-signatures.ts src/ --json ``` **Output example:** ``` // src/api/users.ts /** * Fetches user by ID from the database * @param id - User's unique identifier * @returns User object or null if not found */ export async function getUser(id: string): Promise<User | null> /** * Creates a new user account * @throws ValidationError if email is invalid */ export async function createUser(data: CreateUserInput): Promise<User> ``` ### Trace Call Hierarchy Follow function calls up (who calls this?) or down (what does this call?): ```bash # Who calls this function? npx ts-node scripts/trace-calls.ts src/api/users.ts:getUser --up # What does this function call? npx ts-node scripts/trace-calls.ts src/api/users.ts:getUser --down # Full call chain (both directions, limited depth) npx ts-node scripts/trace-calls.ts src/api/users.ts:getUser --depth 3 # Output as tree npx ts-node scripts/trace-calls.ts src/api/users.ts:getUser --tree ``` **Output example (--up):** ``` getUser (src/api/users.ts:15) ├── called by: handleGetUser (src/routes/users.ts:23) │ └── called by: router.get('/users/:id') (src/routes/users.ts:8) ├── called by: validateSession (src/middleware/auth.ts:45) └── called by: getUserProfile (src/services/profile.ts:12) ``` ### Analyze Exports Map a module's public API surface: ```bash # What does this module export? npx ts-node scripts/analyze-exports.ts src/api/ # Include re-exports npx ts-node scripts/analyze-exports.ts src/ --follow-reexports # Show dependency graph npx ts-node scripts/analyze-exports.ts src/ --deps ``` ### Detect Code Smells Quick architectural assessment: ```bash # Full analysis npx ts-node scripts/code-smells.ts src/ # Specific checks npx ts-node scripts/code-smells.ts src/ --check circular-deps npx ts-node scripts/code-smells.ts src/ --check large-functions npx ts-node scripts/code-smells.ts src/ --check missing-jsdoc npx ts-node scripts/code-smells.ts src/ --check many-params ``` ## Architectural Assessment Patterns When analyzing a new codebase for potential issues: ### 1. Public API Surface First ```bash # Get the big picture: what's exported? npx ts-node scripts/extract-signatures.ts src/ --exported --json > api-surface.json ``` Look for: Overly complex interfaces, inconsistent naming, missing JSDoc on public APIs ### 2. Dependency Structure ```bash # Map imports - circular deps are red flags npx ts-node scripts/code-smells.ts src/ --check circular-deps ``` Look for: Circular dependencies, deep import chains, unclear module boundaries ### 3. Function Complexity ```bash # Find complex functions that may need refactoring npx ts-node scripts/code-smells.ts src/ --check large-functions --check many-params ``` Look for: Functions >50 lines, >5 parameters, deep nesting ### 4. Documentation Coverage ```bash # Public APIs should be documented npx ts-node scripts/code-smells.ts src/ --check missing-jsdoc --exported ``` ## Following the Data Trail When debugging, trace data flow without reading full files: ### Pattern: "Where does this value come from?" ```bash # 1. Find who calls the function with the bad value npx ts-node scripts/trace-calls.ts src/service.ts:processData --up --depth 5 # 2. Get signatures of callers to understand parameter flow npx ts-node scripts/extract-signatures.ts src/caller.ts ``` ### Pattern: "Where does this return value go?" ```bash # 1. Find what uses this function's return npx ts-node scripts/trace-calls.ts src/api.ts:fetchUser --down # 2. Check how return values are consumed npx ts-node scripts/trace-calls.ts src/api.ts:fetchUser --down --show-usage ``` ### Pattern: "Full call chain for a bug" ```bash # Get complete path from entry point to problem area npx ts-node scripts/trace-calls.ts src/broken.ts:problematicFn --up --tree ``` ## Script Locations All scripts in: `~/.claude/skills/ts-morph-analyzer/scripts/` | Script | Purpose | |--------|---------| | `extract-signatures.ts` | Extract function/method/class signatures with JSDoc | | `trace-calls.ts` | Trace call hierarchies up/down | | `analyze-exports.ts` | Map module exports and dependencies | | `code-smells.ts` | Detect architectural issues | ## Common Issues | Problem | Solution | |---------|----------| | "Cannot find module 'ts-morph'" | Run `npm install` in skill directory | | Slow on large codebases | Add `--include "src/**/*.ts"` to limit scope | | Missing type info | Ensure tsconfig.json is in project root | | Memory issues | Use `--exclude "node_modules"` (default) |
عرض على GitHub