ts-morph-analyze
Analyze TypeScript code structure using ts-morph. Use for summarizing class/interface APIs, listing exports, showing inheritance hierarchies, or extracting interfaces from classes. Outputs signatures without implementation details.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
TypeScript Code Analysis with ts-morph
Analyze TypeScript code structure to extract APIs, signatures, and relationships without implementation details.
Installation
cd .claude/skills/ts-morph-analyze
pnpm install
Available Scripts
summarize-class.ts
Extract the API signature of a class or interface, showing only public members without implementation.
Usage:
npx tsx scripts/summarize-class.ts <tsconfig> <file> <name> [--private] [--jsdoc]
Parameters:
| Parameter | Required | Description |
|---|---|---|
tsconfig |
Yes | Path to tsconfig.json |
file |
Yes | Source file containing the class/interface |
name |
Yes | Class or interface name |
--private |
No | Include private and protected members |
--jsdoc |
No | Include JSDoc comments |
Example:
npx tsx scripts/summarize-class.ts ./tsconfig.json src/nodes/types.ts ExecutableNode
Output:
export abstract class ExecutableNode {
readonly nodeId: string;
constructor(nodeId: string);
abstract execute(ctx: Context): Promise<Response>;
protected createResponse(status: number, data: unknown): Response;
}
list-exports.ts
List all exports from a file or directory with their types and signatures.
Usage:
npx tsx scripts/list-exports.ts <tsconfig> <path> [--recursive] [--types-only] [--functions-only] [--classes-only]
Parameters:
| Parameter | Required | Description |
|---|---|---|
tsconfig |
Yes | Path to tsconfig.json |
path |
Yes | File or directory to analyze |
--recursive |
No | Recursively analyze directories |
--types-only |
No | Show only type/interface exports |
--functions-only |
No | Show only function exports |
--classes-only |
No | Show only class exports |
Example:
npx tsx scripts/list-exports.ts ./tsconfig.json src/utils/
Output:
src/utils/string.ts:
export function formatDate(date: Date): string
export function parseJSON<T>(input: string): Result<T>
export type Result<T> = { success: true; value: T } | { success: false; error: string }
src/utils/validation.ts:
export function validateEmail(email: string): boolean
export interface ValidationResult { valid: boolean; errors: string[] }
show-hierarchy.ts
Display the inheritance hierarchy for a class, showing parent classes and implemented interfaces.
Usage:
npx tsx scripts/show-hierarchy.ts <tsconfig> <file> <class-name> [--descendants] [--depth=N]
Parameters:
| Parameter | Required | Description |
|---|---|---|
tsconfig |
Yes | Path to tsconfig.json |
file |
Yes | Source file containing the class |
class-name |
Yes | Name of the class to analyze |
--descendants |
No | Also show classes that extend this class |
--depth=N |
No | Limit hierarchy depth (default: unlimited) |
Example:
npx tsx scripts/show-hierarchy.ts ./tsconfig.json src/nodes/text-node.ts TextNode --descendants
Output:
TextNode
├── extends: ExecutableNode
│ └── implements: NodeInterface
└── descendants:
├── MarkdownNode
└── HtmlNode
extract-interface.ts
Generate a TypeScript interface from a class's public members.
Usage:
npx tsx scripts/extract-interface.ts <tsconfig> <file> <class-name> [--name=InterfaceName] [--include-protected]
Parameters:
| Parameter | Required | Description |
|---|---|---|
tsconfig |
Yes | Path to tsconfig.json |
file |
Yes | Source file containing the class |
class-name |
Yes | Name of the class to extract from |
--name=Name |
No | Name for the generated interface (default: I{ClassName}) |
--include-protected |
No | Include protected members |
Example:
npx tsx scripts/extract-interface.ts ./tsconfig.json src/services/user.ts UserService --name=IUserService
Output:
export interface IUserService {
readonly id: string;
getName(): string;
getEmail(): Promise<string>;
update(data: UserData): Promise<void>;
}
Use Cases
- API Review: Quickly understand a class's public interface
- Documentation: Generate API summaries for documentation
- Refactoring Planning: See inheritance relationships before changes
- Interface Extraction: Create interfaces from existing implementations
- Codebase Exploration: List exports to understand module structure
Output Formats
All scripts output TypeScript syntax by default. The output can be:
- Piped to a file:
npx tsx scripts/summarize-class.ts ... > api.d.ts - Used for documentation
- Compared with git diff to track API changes
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-03
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!