Docs Commands

Commands para generar documentación y diagramas.


/diagram

Genera diagramas ASCII y Mermaid.

Uso

/diagram
/diagram ascii
/diagram mermaid

Tipos de diagramas

Tipo Formato
ascii Diagrama en texto plano
mermaid Sintaxis Mermaid (renderizable)

Diagramas soportados

  • Flowcharts - Flujos de proceso
  • Sequence - Diagramas de secuencia
  • Class - Diagramas de clases
  • ER - Entity-Relationship
  • State - Máquinas de estado
  • Architecture - Arquitectura de sistema

Ejemplo ASCII

┌─────────────┐       ┌─────────────┐       ┌─────────────┐
│   Client    │──────▶│   Server    │──────▶│  Database   │
└─────────────┘       └─────────────┘       └─────────────┘
      │                     │                      │
      │    HTTP Request     │    SQL Query         │
      │────────────────────▶│─────────────────────▶│
      │                     │                      │
      │    JSON Response    │    Result Set        │
      │◀────────────────────│◀─────────────────────│

Ejemplo Mermaid

sequenceDiagram
    participant C as Client
    participant S as Server
    participant D as Database

    C->>S: HTTP Request
    S->>D: SQL Query
    D-->>S: Result Set
    S-->>C: JSON Response

¿Qué hace?

  1. Analiza el contexto o código proporcionado
  2. Identifica componentes y relaciones
  3. Genera diagrama en el formato solicitado
  4. Agrega labels y descripciones

/document

Genera documentación automática para código.

Uso

/document
/document api
/document readme
/document jsdoc

Tipos de documentación

Tipo Output
api Documentación de API (endpoints, params)
readme README.md para el proyecto/módulo
jsdoc JSDoc comments para funciones
typedoc TypeDoc para TypeScript

Ejemplo JSDoc

Input:

function calculateDiscount(price, percentage, maxDiscount) {
  const discount = price * (percentage / 100);
  return Math.min(discount, maxDiscount);
}

Output:

/**
 * Calculates a discount amount with a maximum cap.
 *
 * @param {number} price - The original price
 * @param {number} percentage - Discount percentage (0-100)
 * @param {number} maxDiscount - Maximum discount allowed
 * @returns {number} The calculated discount, capped at maxDiscount
 *
 * @example
 * calculateDiscount(100, 20, 15) // Returns 15 (capped)
 * calculateDiscount(100, 10, 15) // Returns 10
 */
function calculateDiscount(price, percentage, maxDiscount) {
  const discount = price * (percentage / 100);
  return Math.min(discount, maxDiscount);
}

Ejemplo API Docs

## POST /api/users

Creates a new user account.

### Request Body

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| email | string | Yes | User email |
| password | string | Yes | Min 8 chars |
| name | string | No | Display name |

### Response

```json
{
  "id": "uuid",
  "email": "user@example.com",
  "name": "John Doe",
  "createdAt": "2025-01-01T00:00:00Z"
}

Errors

| Code | Description | |——|————-| | 400 | Invalid input | | 409 | Email already exists |


---

## Referencia rápida

```bash
# Diagramas
/diagram          # Auto-detect tipo
/diagram ascii    # Formato texto plano
/diagram mermaid  # Formato Mermaid

# Documentación
/document         # Auto-detect tipo
/document api     # API docs
/document readme  # README.md
/document jsdoc   # JSDoc comments