| name | documentation-generator |
| version | 2.0 |
| trigger | documentation, README, API docs, auto-document, JSDoc |
| description | Automated documentation generation, API documentation, code comments, README templates, and knowledge base maintenance. Use when creating documentation, updating READMEs, generating API docs, or maintaining project documentation. |
Documentation Generator
README Templates
Project README
# Project Name
[](https://github.com/org/repo/actions/workflows/ci.yml)
[](https://codecov.io/gh/org/repo)
> Brief project description
## Features
- Feature 1
- Feature 2
- Feature 3
## Tech Stack
- Next.js 16
- TypeScript 5
- PostgreSQL
- Drizzle ORM
## Quick Start
\`\`\`bash
# Clone
git clone https://github.com/org/repo.git
cd repo
# Install
pnpm install
# Environment
cp .env.example .env.local
# Database
pnpm db:migrate
pnpm db:seed
# Development
pnpm dev
\`\`\`
## Documentation
- [API Documentation](./docs/API.md)
- [Architecture](./docs/ARCHITECTURE.md)
- [Contributing](./CONTRIBUTING.md)
## License
MIT
API Documentation Generation
OpenAPI/Swagger
import { OpenAPIRegistry } from '@asteasolutions/zod-to-openapi';
const registry = new OpenAPIRegistry();
registry.registerPath({
method: 'get',
path: '/api/users',
description: 'List all users',
request: {
query: listUsersQuerySchema
},
responses: {
200: {
description: 'List of users',
content: {
'application/json': {
schema: z.array(userSchema)
}
}
}
}
});
export const openApiSpec = new OpenApiGeneratorV3(registry.definitions).generateDocument({
openapi: '3.0.0',
info: {
title: 'Trinity API',
version: '1.0.0'
}
});
TypeDoc Configuration
{
"entryPoints": ["src/index.ts"],
"out": "docs/api",
"theme": "default",
"exclude": ["**/*.test.ts", "**/node_modules/**"],
"excludePrivate": true,
"excludeProtected": true,
"excludeExternals": true,
"readme": "README.md",
"name": "Trinity API",
"includeVersion": true
}
Code Comment Standards
JSDoc Comments
export async function calculateTrustScore(
userId: string,
interactions: Interaction[],
options: TrustScoreOptions = {}
): Promise<number> {
}
Architecture Decision Records (ADRs)
# ADR-001: Use Drizzle ORM
## Status
Accepted
## Context
We needed to choose an ORM for our PostgreSQL database.
## Decision
We will use Drizzle ORM because:
- Type-safe SQL-like syntax
- Better performance than Prisma
- Smaller bundle size
- Native migration support
## Consequences
- Team needs to learn Drizzle syntax
- Less community support than Prisma
Automated Documentation
Change Log Generation
import { generateChangelog } from 'conventional-changelog';
async function updateChangelog() {
const changelog = await generateChangelog({
preset: 'angular'
});
await fs.writeFile('CHANGELOG.md', changelog);
}
API Endpoint Documentation
import { parseSourceFile } from 'ts-morph';
function generateEndpointDocs() {
const project = new Project();
const routeFiles = project.getSourceFiles('**/routes.ts');
const endpoints = routeFiles.flatMap(file =>
extractEndpoints(file)
);
const markdown = generateMarkdown(endpoints);
fs.writeFileSync('docs/API_ENDPOINTS.md', markdown);
}
Knowledge Base Maintenance
Confluence Integration
export class ConfluencePublisher {
async publishPage(title: string, content: string) {
await this.client.post('/rest/api/content', {
type: 'page',
title,
body: {
storage: {
value: content,
representation: 'storage'
}
}
});
}
}
Notion Documentation
export class NotionDocSync {
async syncApiDocs(endpoints: Endpoint[]) {
for (const endpoint of endpoints) {
await this.notion.pages.create({
parent: { database_id: this.docsDbId },
properties: {
Name: { title: [{ text: { content: endpoint.name } }] },
Method: { select: { name: endpoint.method } },
Path: { rich_text: [{ text: { content: endpoint.path } }] },
Status: { select: { name: 'Documented' } }
}
});
}
}
}