jsdoc-tsdoc
JavaScript and TypeScript documentation generation using JSDoc and TSDoc. Parse source code, generate API documentation, validate coverage, and integrate with TypeDoc for comprehensive developer documentation.
Best use case
jsdoc-tsdoc is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
JavaScript and TypeScript documentation generation using JSDoc and TSDoc. Parse source code, generate API documentation, validate coverage, and integrate with TypeDoc for comprehensive developer documentation.
Teams using jsdoc-tsdoc should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/jsdoc-tsdoc/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How jsdoc-tsdoc Compares
| Feature / Agent | jsdoc-tsdoc | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
JavaScript and TypeScript documentation generation using JSDoc and TSDoc. Parse source code, generate API documentation, validate coverage, and integrate with TypeDoc for comprehensive developer documentation.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# JSDoc/TSDoc Skill
Generate and validate JavaScript and TypeScript documentation using industry-standard JSDoc and TSDoc conventions with TypeDoc integration.
## Capabilities
- Parse JSDoc comments from JavaScript source code
- Parse TSDoc comments from TypeScript source code
- Generate API documentation with TypeDoc
- Validate documentation coverage and completeness
- Enforce documentation standards with ESLint plugins
- Support custom JSDoc/TSDoc tags
- Type inference and documentation alignment
- Generate multiple output formats (HTML, Markdown, JSON)
## Usage
Invoke this skill when you need to:
- Document JavaScript/TypeScript libraries and APIs
- Generate API reference documentation
- Audit documentation coverage
- Set up automated documentation pipelines
- Validate doc comments match implementation
## Inputs
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| projectPath | string | Yes | Root path of the JS/TS project |
| entryPoints | array | No | Specific files/directories to document |
| outputDir | string | No | Documentation output directory (default: docs) |
| outputFormat | string | No | html, markdown, json (default: html) |
| includePrivate | boolean | No | Include private members (default: false) |
| coverageThreshold | number | No | Minimum documentation coverage % |
| customTags | array | No | Additional JSDoc/TSDoc tags to recognize |
### Input Example
```json
{
"projectPath": "./packages/sdk",
"entryPoints": ["src/index.ts", "src/client.ts"],
"outputDir": "docs/api",
"outputFormat": "html",
"coverageThreshold": 80,
"customTags": ["@alpha", "@beta", "@experimental"]
}
```
## Output Structure
```
docs/api/
├── index.html # Documentation home
├── modules.html # Module index
├── classes/
│ ├── Client.html # Class documentation
│ └── Config.html
├── interfaces/
│ ├── Options.html # Interface documentation
│ └── Response.html
├── functions/
│ └── helpers.html # Function documentation
├── types/
│ └── aliases.html # Type alias documentation
├── assets/
│ ├── main.js
│ └── style.css
└── coverage.json # Documentation coverage report
```
## JSDoc Comment Patterns
### Function Documentation
```javascript
/**
* Authenticates a user with the API.
*
* @param {string} username - The user's username
* @param {string} password - The user's password
* @returns {Promise<AuthResult>} Authentication result with token
* @throws {AuthError} When credentials are invalid
* @example
* const result = await authenticate('user@example.com', 'password');
* console.log(result.token);
*
* @since 1.0.0
* @see {@link logout} for ending sessions
*/
async function authenticate(username, password) {
// Implementation
}
```
### Class Documentation
```javascript
/**
* HTTP client for API communication.
*
* @class
* @extends EventEmitter
* @implements {Disposable}
*
* @example
* const client = new ApiClient({ baseUrl: 'https://api.example.com' });
* const response = await client.get('/users');
*/
class ApiClient extends EventEmitter {
/**
* Creates a new API client instance.
*
* @param {ClientOptions} options - Client configuration
* @param {string} options.baseUrl - Base URL for API requests
* @param {number} [options.timeout=30000] - Request timeout in ms
*/
constructor(options) {
// Implementation
}
/**
* Performs a GET request.
*
* @param {string} path - Request path
* @param {RequestOptions} [options] - Additional options
* @returns {Promise<Response>} The response
*/
async get(path, options) {
// Implementation
}
}
```
## TSDoc Comment Patterns
### Package Documentation
```typescript
/**
* SDK for interacting with the Example API.
*
* @remarks
* This package provides a type-safe client for the Example API.
* It supports both browser and Node.js environments.
*
* @packageDocumentation
*/
```
### Function with Overloads
```typescript
/**
* Fetches data from the API.
*
* @param url - The endpoint URL
* @returns The response data
*
* @example
* ```typescript
* const users = await fetch<User[]>('/api/users');
* ```
*
* @public
*/
export async function fetch<T>(url: string): Promise<T>;
/**
* Fetches data with custom options.
*
* @param url - The endpoint URL
* @param options - Request options
* @returns The response data
*
* @public
*/
export async function fetch<T>(url: string, options: FetchOptions): Promise<T>;
```
### Interface Documentation
```typescript
/**
* Configuration options for the API client.
*
* @remarks
* All timeout values are in milliseconds.
*
* @example
* ```typescript
* const config: ClientConfig = {
* baseUrl: 'https://api.example.com',
* timeout: 5000,
* retries: 3
* };
* ```
*
* @public
*/
export interface ClientConfig {
/**
* Base URL for all API requests.
* @remarks Must include protocol (https://)
*/
baseUrl: string;
/**
* Request timeout in milliseconds.
* @defaultValue 30000
*/
timeout?: number;
/**
* Number of retry attempts for failed requests.
* @defaultValue 0
*/
retries?: number;
/**
* Custom headers to include with every request.
* @beta
*/
headers?: Record<string, string>;
}
```
## TypeDoc Configuration
### typedoc.json
```json
{
"$schema": "https://typedoc.org/schema.json",
"entryPoints": ["src/index.ts"],
"out": "docs/api",
"name": "My SDK",
"readme": "README.md",
"includeVersion": true,
"excludePrivate": true,
"excludeProtected": false,
"excludeInternal": true,
"excludeExternals": true,
"categorizeByGroup": true,
"categoryOrder": [
"Client",
"Configuration",
"Types",
"Utilities",
"*"
],
"navigation": {
"includeCategories": true,
"includeGroups": true
},
"plugin": [
"typedoc-plugin-markdown"
],
"theme": "default",
"validation": {
"notExported": true,
"invalidLink": true,
"notDocumented": false
}
}
```
### ESLint Documentation Rules
```json
{
"plugins": ["jsdoc"],
"extends": ["plugin:jsdoc/recommended-typescript"],
"rules": {
"jsdoc/require-jsdoc": ["warn", {
"require": {
"FunctionDeclaration": true,
"MethodDefinition": true,
"ClassDeclaration": true,
"ArrowFunctionExpression": false
},
"publicOnly": true
}],
"jsdoc/require-description": "warn",
"jsdoc/require-param-description": "warn",
"jsdoc/require-returns-description": "warn",
"jsdoc/check-tag-names": ["error", {
"definedTags": ["alpha", "beta", "experimental", "internal"]
}],
"jsdoc/check-types": "error",
"jsdoc/no-undefined-types": "error",
"jsdoc/valid-types": "error"
}
}
```
## Coverage Analysis
### Coverage Report Format
```json
{
"summary": {
"documented": 145,
"undocumented": 23,
"total": 168,
"percentage": 86.31
},
"byKind": {
"class": { "documented": 12, "total": 14 },
"interface": { "documented": 28, "total": 30 },
"function": { "documented": 45, "total": 52 },
"method": { "documented": 60, "total": 72 }
},
"undocumented": [
{
"name": "internalHelper",
"kind": "function",
"file": "src/utils/helpers.ts",
"line": 42
}
],
"incomplete": [
{
"name": "processData",
"kind": "function",
"file": "src/core/processor.ts",
"issues": ["missing @returns", "missing @param for 'options'"]
}
]
}
```
## Workflow
1. **Analyze project** - Scan for TypeScript/JavaScript files
2. **Parse documentation** - Extract JSDoc/TSDoc comments
3. **Validate coverage** - Check against threshold
4. **Type alignment** - Verify docs match TypeScript types
5. **Generate documentation** - Run TypeDoc or JSDoc
6. **Create coverage report** - Output coverage analysis
7. **Lint validation** - Run ESLint documentation rules
## Dependencies
```json
{
"devDependencies": {
"typedoc": "^0.25.0",
"typedoc-plugin-markdown": "^4.0.0",
"eslint-plugin-jsdoc": "^48.0.0",
"@microsoft/tsdoc": "^0.14.0",
"@microsoft/tsdoc-config": "^0.16.0"
}
}
```
## Best Practices Applied
- TSDoc for TypeScript, JSDoc for JavaScript
- Always document public API surface
- Include @example for complex functions
- Use @remarks for implementation notes
- Link related symbols with @see
- Mark experimental features with @alpha/@beta
- Validate types match documentation
## References
- TypeDoc: https://typedoc.org/
- TSDoc: https://tsdoc.org/
- JSDoc: https://jsdoc.app/
- eslint-plugin-jsdoc: https://github.com/gajus/eslint-plugin-jsdoc
## Target Processes
- api-doc-generation.js
- sdk-doc-generation.js
- docs-audit.js
- docs-testing.jsRelated Skills
process-builder
Scaffold new babysitter process definitions following SDK patterns, proper structure, and best practices. Guides the 3-phase workflow from research to implementation.
babysitter
Orchestrate via @babysitter. Use this skill when asked to babysit a run, orchestrate a process or whenever it is called explicitly. (babysit, babysitter, orchestrate, orchestrate a run, workflow, etc.)
yolo
Run Babysitter autonomously with minimal manual interruption.
user-install
Install the user-level Babysitter Codex setup.
team-install
Install the team-pinned Babysitter Codex workspace setup.
retrospect
Summarize or retrospect on a completed Babysitter run.
resume
Resume an existing Babysitter run from Codex.
project-install
Install the Babysitter Codex workspace integration into the current project.
plan
Plan a Babysitter workflow without executing the run.
observe
Observe, inspect, or monitor a Babysitter run.
model
Inspect or change Babysitter model-routing policy by phase.
issue
Run an issue-centric Babysitter workflow.