Skip to content
Back to skills

Api Reference

ASecurity

Guidance for setting up API reference documentation generators — TypeDoc, Sphinx, godoc, and rustdoc. Detects project language, recommends the right tool, and provides configuration templates. Use when a project needs automated API documentation from source code comments.

  • 8 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 26, 2026
documentationjavascripttypescriptpythonrustgojavabashgitapidocumentation

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add littlebearapps/pitchdocs --skill api-reference --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Api Reference?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Api Reference
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/littlebearapps-api-reference/badge)](https://www.skillsdirectory.com/skills/littlebearapps-api-reference)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: api-reference
description: Guidance for setting up API reference documentation generators — TypeDoc, Sphinx, godoc, and rustdoc. Detects project language, recommends the right tool, and provides configuration templates. Use when a project needs automated API documentation from source code comments.
version: "1.0.0"
---

# API Reference Generator Guidance

## Philosophy

API reference docs are the **Reference** quadrant of the Diataxis framework — information-oriented, accurate, and complete. They document every public function, class, method, parameter, and return type.

This skill does **not** generate API docs directly — that's the job of language-specific tools (TypeDoc, Sphinx, godoc, rustdoc). Instead, it provides configuration guidance and comment conventions so those tools produce high-quality output.

## Language Detection

Detect the project language to recommend the appropriate tool:

```bash
# Check for language-specific manifest files
[ -f "package.json" ] && echo "javascript/typescript"
[ -f "tsconfig.json" ] && echo "typescript (confirmed)"
[ -f "pyproject.toml" ] || [ -f "setup.py" ] && echo "python"
[ -f "go.mod" ] && echo "go"
[ -f "Cargo.toml" ] && echo "rust"
```

## TypeScript / JavaScript (TypeDoc)

**Tool:** [TypeDoc](https://typedoc.org/) — generates HTML or Markdown documentation from TypeScript source code and JSDoc comments.

### Installation

```bash
npm install --save-dev typedoc
```

### Configuration

Create `typedoc.json` in the project root:

```json
{
  "$schema": "https://typedoc.org/schema.json",
  "entryPoints": ["src/index.ts"],
  "out": "docs/api",
  "plugin": ["typedoc-plugin-markdown"],
  "readme": "none",
  "excludePrivate": true,
  "excludeProtected": true,
  "excludeInternal": true,
  "categorizeByGroup": true,
  "sort": ["source-order"]
}
```

For Markdown output (recommended for GitHub-hosted docs):
```bash
npm install --save-dev typedoc-plugin-markdown
```

### TSDoc Comment Conventions

```typescript
/**
 * Generates a marketing-friendly README from codebase analysis.
 *
 * Scans the project for features, translates them into benefit-driven
 * language, and outputs a complete README.md following the 4-question
 * framework.
 *
 * @param options - Configuration for README generation
 * @param options.projectPath - Path to the project root
 * @param options.format - Output format: 'github' | 'npm' | 'pypi'
 * @returns The generated README content as a string
 * @throws {ProjectNotFoundError} If projectPath doesn't exist
 *
 * @example
 * ```typescript
 * const readme = await generateReadme({
 *   projectPath: './my-project',
 *   format: 'github'
 * })
 * ```
 *
 * @see {@link FeatureExtractor} for the scanning workflow
 * @since 1.0.0
 */
export async function generateReadme(options: ReadmeOptions): Promise<string> {
```

### package.json Script

```json
{
  "scripts": {
    "docs:api": "typedoc"
  }
}
```

## Python (Sphinx or MkDocs + mkdocstrings)

### Option A: Sphinx + autodoc (traditional, feature-rich)

**Installation:**
```bash
pip install sphinx sphinx-autodoc-typehints sphinx-rtd-theme
```

**Quick setup:**
```bash
mkdir docs && cd docs
sphinx-quickstart --no-sep --project "Project Name" --author "Author"
```

**conf.py additions:**
```python
extensions = [
    'sphinx.ext.autodoc',
    'sphinx.ext.napoleon',  # Google/NumPy-style docstrings
    'sphinx_autodoc_typehints',
]

autodoc_member_order = 'bysource'
autodoc_typehints = 'description'
```

### Option B: MkDocs + mkdocstrings (modern, Markdown-native)

**Installation:**
```bash
pip install mkdocs mkdocs-material mkdocstrings[python]
```

**mkdocs.yml:**
```yaml
site_name: Project Name
theme:
  name: material

plugins:
  - search
  - mkdocstrings:
      handlers:
        python:
          options:
            show_source: true
            show_root_heading: true
```

### Python Docstring Conventions (Google style)

```python
def generate_readme(project_path: str, format: str = "github") -> str:
    """Generate a marketing-friendly README from codebase analysis.

    Scans the project for features, translates them into benefit-driven
    language, and outputs a complete README.md following the 4-question
    framework.

    Args:
        project_path: Path to the project root directory.
        format: Output format. One of 'github', 'npm', 'pypi'.
            Defaults to 'github'.

    Returns:
        The generated README content as a string.

    Raises:
        ProjectNotFoundError: If project_path doesn't exist.
        PermissionError: If project_path is not readable.

    Example:
        >>> readme = generate_readme("./my-project", format="github")
        >>> print(readme[:50])
        # My Project
    """
```

## Go (godoc)

Go has built-in documentation tooling. No extra packages needed.

### Comment Conventions

```go
// GenerateReadme produces a marketing-friendly README from codebase analysis.
//
// It scans the project at projectPath for features, translates them into
// benefit-driven language, and returns a complete README following the
// 4-question framework.
//
// The format parameter controls output: "github", "npm", or "pypi".
//
// Example:
//
//	readme, err := GenerateReadme("./my-project", "github")
//	if err != nil {
//	    log.Fatal(err)
//	}
//	fmt.Println(readme)
func GenerateReadme(projectPath, format string) (string, error) {
```

### Running godoc

```bash
# Local documentation server
godoc -http=:6060

# Generate static HTML
go install golang.org/x/pkgsite/cmd/pkgsite@latest
pkgsite -open .
```

## Rust (rustdoc)

Rust has built-in documentation via `cargo doc`. No extra packages needed.

### Comment Conventions

```rust
/// Generates a marketing-friendly README from codebase analysis.
///
/// Scans the project for features, translates them into benefit-driven
/// language, and outputs a complete README following the 4-question
/// framework.
///
/// # Arguments
///
/// * `project_path` - Path to the project root directory
/// * `format` - Output format: `github`, `npm`, or `pypi`
///
/// # Returns
///
/// The generated README content as a `String`.
///
/// # Errors
///
/// Returns `ReadmeError::ProjectNotFound` if the path doesn't exist.
///
/// # Examples
///
/// ```
/// let readme = generate_readme("./my-project", "github")?;
/// println!("{}", &readme[..50]);
/// ```
pub fn generate_readme(project_path: &str, format: &str) -> Result<String, ReadmeError> {
```

### Running rustdoc

```bash
# Generate and open docs
cargo doc --open --no-deps
```

## Integration with Docs Hub

Once API reference docs are generated, link them from the docs hub page:

```markdown
## Reference

- [API Documentation](reference/api.md) — All public functions, types, and interfaces
- [CLI Reference](reference/cli.md) — All commands, flags, and options
```

And from the README documentation section:

```markdown
## Documentation

| Guide | Description |
|-------|-------------|
| ... | ... |
| [API Reference](docs/reference/api.md) | All public types and functions |
```

## Anti-Patterns

- **Don't hand-write API docs** — they go stale instantly. Generate from source code comments.
- **Don't mix API reference with tutorials** — keep them in separate Diataxis quadrants
- **Don't document private/internal APIs** — only document the public surface area
- **Don't skip examples** — every non-trivial function should have a usage example in its docstring
- **Don't use `@inheritdoc` without checking** — inherited docs may not make sense in the subclass context

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.