agentsclimarketplace

Docs

Skill 14BryanEspinoza/agent-stack/skills/docs

Reglas de documentación - Markdown, README, JSDoc, TypeDoc, changelogs, convenciones de escritura técnicaFrom its SKILL.md

Install
npx -y skills add 14BryanEspinoza/agent-stack --skill docs

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

16.1 KB, ~4.4k tokens by cl100k_base, as published. Nobody here has run it

Documentación — Reglas y Convenciones


1. Filosofía

  1. Documentación como código — Los docs viven en el repo, se versionan, se revisan en PRs y siguen las mismas convenciones que el código.
  2. Valor sobre cantidad — Cada documento responde a una pregunta concreta. Sin relleno, sin contenido duplicado, sin documentación por documentar.
  3. Legibilidad — El lenguaje debe ser claro, directo y adaptado a la audiencia. Priorizar ejemplos sobre descripciones abstractas.
  4. Mantenibilidad — Los docs se mantienen junto al código. Si cambia la API, cambia la documentación en el mismo PR.
  5. Progressive disclosure — Información de lo general a lo específico. README primero, luego guías, luego API reference.

2. Estructura de Documentos

README.md (esencial)

# Nombre del Proyecto

<!-- Badges: estado, version, license, CI, coverage -->

Descripción breve: qué hace, para quién, por qué existe.

## Instalación

```bash
npm install mi-paquete
```

Uso rápido

import { algo } from "mi-paquete";
algo();

API

función(opciones)

Descripción de la función, parámetros, valor de retorno.

ParámetroTipoDefaultDescripción
opcionesObject{}Opciones de Config

Contribuir

Ver CONTRIBUTING.md

Licencia

MIT © 2026


### Componentes de un buen README

| Sección         | Obligatorio | Propósito                          |
| --------------- | ----------- | ---------------------------------- |
| Título + badges | ✅          | Identidad y estado del proyecto    |
| Descripción     | ✅          | Propósito y audiencia              |
| Instalación     | ✅          | Primeros pasos                     |
| Uso rápido      | ✅          | Ejemplo mínimo funcional           |
| API             | ⚠️ condicional | Referencia detallada           |
| Contribuir      | ⚠️ condicional | Guía para colaboradores        |
| Licencia        | ✅          | Términos de uso                    |
| Changelog       | ⚠️ condicional | Historial de cambios           |

### CONTRIBUTING.md

```markdown
# Contribuyendo al proyecto

## Proceso

1. Fork el repo
2. Crea una rama: `git checkout -b feature/42-nombre`
3. Haz cambios en commits atómicos
4. Asegúrate de que los tests pasen
5. Abre un Pull Request

## Convenciones

- Commits: [Conventional Commits](../git/SKILL.md)
- Código: sigue el estilo del proyecto
- Tests: incluye tests para nuevas funcionalidades
- Documentación: actualiza docs si cambia la API

CODE_OF_CONDUCT.md

# Código de Conducta

## Compromiso

Nos comprometemos a hacer de la participación en este proyecto
una experiencia libre de acoso para todos.

## Comportamiento esperado

- Usar lenguaje inclusivo y respetuoso
- Aceptar críticas constructivas
- Enfocarse en lo que es mejor para la comunidad

## Comportamiento inaceptable

- Comentarios sexuales o violentos
- Trolling, insultos, ataques personales
- Acoso público o privado

## Aplicación

Reportar incidentes a [email].

3. Markdown

Sintaxis esencial

# H1

## H2

### H3

**negrita** _cursiva_ `código inline`

[link](https://ejemplo.com)
![imagen](img.png)

- Lista no ordenada
- Item

1. Lista ordenada
2. Item

> Cita

` ``js
console.log("código bloque"); ` ``

| Tabla | Columna 2 |
| ----- | --------- |
| Dato  | Dato      |

---

Reglas de formato

  • Una línea en blanco antes/después de headings
  • Una línea en blanco antes/después de listas y bloques de código
  • Líneas máximo 80 caracteres en párrafos (no aplica a tablas ni bloques de código)
  • Sin espacios al final de línea
  • Listas con - (no *)
  • Bloques de código siempre con lenguaje especificado

Frontmatter YAML

---
title: Título del documento
description: Descripción breve
date: 2026-07-15
author: Nombre
---

Admonitions (soportado por varios renderers)

> **Nota:** Información adicional importante.

> **Advertencia:** Esto puede causar problemas.

> **Peligro:** Esto es crítico.

Links internos

[Ver sección](#sección)
[Referencia a otro documento](./CONTRIBUTING.md)
[Link absoluto](/docs/api.md)

4. Documentación de API

JSDoc

/**
 * Calcula el total con impuestos.
 *
 * @param {number} subtotal - Monto sin impuestos
 * @param {number} [taxRate=0.16] - Tasa de impuesto (default 16%)
 * @returns {number} Total con impuestos incluidos
 * @throws {TypeError} Si subtotal no es un número
 *
 * @example
 * const total = calcularTotal(100, 0.16)
 * // → 116
 */
export function calcularTotal(subtotal, taxRate = 0.16) {
  if (typeof subtotal !== "number") {
    throw new TypeError("subtotal debe ser un número");
  }
  return subtotal * (1 + taxRate);
}

Tags JSDoc esenciales

TagUso
@paramDescripción de parámetro (+ tipo)
@returnsValor de retorno (+ tipo)
@throwsError que puede lanzar
@exampleEjemplo de uso (seguido de bloque código)
@deprecatedMarca como obsoleto
@seeReferencia a otro elemento
@typedefDefinición de tipo personalizado
@propertyPropiedad de un tipo
@templateParámetro genérico (TypeScript)
/**
 * @typedef {Object} User
 * @property {number} id - Identificador único
 * @property {string} name - Nombre completo
 * @property {string} email - Correo electrónico
 */

/**
 * @template T
 * @param {T} item
 * @returns {T}
 */
function identity(item) {
  return item;
}

TypeDoc

interface Config {
  /** Puerto del servidor */
  port: number;
  /** Host donde escuchar */
  host: string;
}

/**
 * Inicia el servidor con la configuración dada.
 *
 * @param config - Opciones de configuración
 * @returns Una promesa que resuelve cuando el servidor inicia
 */
async function startServer(config: Config): Promise<void>;

5. Changelog

Formato (Keep a Changelog)

# Changelog

## [1.2.0] - 2026-07-15

### Added

- Nueva funcionalidad X
- Soporte para Y

### Changed

- Mejorada la performance de Z
- Actualizada dependencia A a v2

### Deprecated

- Función `foo()` será eliminada en v2

### Removed

- Eliminado soporte para navegadores antiguos

### Fixed

- Corregido bug en login (#42)

### Security

- Parcheada vulnerabilidad CVE-2026-XXXX

## [1.1.0] - 2026-06-01

### Added

- Feature menor

## [1.0.0] - 2026-01-15

### Added

- Release inicial

Reglas del Changelog

  • Mantenerlo manual — No generar automáticamente desde commits (el resultado es ruidoso)
  • Agrupar por tipoAdded, Changed, Deprecated, Removed, Fixed, Security
  • Referenciar issues/PRs(#42) al final de cada línea
  • Fecha en ISO 8601YYYY-MM-DD
  • SemVer — La versión del changelog debe coincidir con los tags de git
  • Unreleased section — Mantener una sección [Unreleased] en desarrollo

6. Documentación Técnica

Guías vs Referencia

TipoPropósitoAudienciaFormato
GuíaCómo lograr un objetivo paso a pasoUsuarios nuevosTutorial, how-to
RefDescripción completa de API, config, etc.Usuarios avanzadosReference
ConceptualExplicación de conceptos y arquitecturaTodosExplicación

Ejemplo: Guía de inicio rápido

# Guía: Configurar autenticación

En esta guía agregarás autenticación por email/password.

## Prerrequisitos

- Node.js 22+
- Proyecto inicializado

## Paso 1: Instalar dependencias

```bash
npm install @auth/core
```

Paso 2: Configurar proveedor

import { Auth } from "@auth/core";

const auth = new Auth({
  provider: "credentials",
  // ...
});

Ejemplo: Documentación conceptual

# Arquitectura del sistema

## Capas

1. **Presentación** — Componentes UI (React/Vanilla)
2. **Lógica de negocio** — Hooks, servicios, utils
3. **Acceso a datos** — API calls, caché, almacenamiento local

## Flujo de datos

[Diagrama de flujo o descripción textual]

Los datos viajan de la capa de datos a la presentación
a través de hooks personalizados que manejan loading, error y éxito.

7. Diagramas (Mermaid)

Incorporar diagramas en los docs usando Mermaid (soportado por GitHub, GitLab y renderers MD):

flowchart TD
    A[Inicio] --> B{¿Autenticado?}
    B -->|Sí| C[Dashboard]
    B -->|No| D[Login]
    D --> C
sequenceDiagram
    User->>API: POST /login
    API->>DB: Verificar credenciales
    DB-->>API: Usuario válido
    API-->>User: Token JWT
graph LR
    A[HTML] --> B[CSS]
    A --> C[JavaScript]
    B --> D[DOM]
    C --> D

Tipos de diagrama recomendados

TipoPara qué usar
flowchartFlujos de proceso, decisiones, pipelines
sequenceDiagramInteracciones entre componentes/servicios
classDiagramEstructuras de clases y relaciones
stateDiagramEstados de un componente o proceso
graphRelaciones generales entre entidades
ganttCronogramas y planificación

8. Documentación de Componentes (Frontend)

# Componente: Button

Botón reutilizable con variantes visuales y estados.

## Propiedades

| Prop       | Tipo                                  | Default     | Descripción          |
| ---------- | ------------------------------------- | ----------- | -------------------- |
| `variant`  | `'primary' \| 'secondary' \| 'ghost'` | `'primary'` | Estilo visual        |
| `size`     | `'sm' \| 'md' \| 'lg'`                | `'md'`      | Tamaño del botón     |
| `disabled` | `boolean`                             | `false`     | Estado deshabilitado |
| `loading`  | `boolean`                             | `false`     | Muestra spinner      |
| `onClick`  | `() => void`                          | —           | Handler de click     |

## Estados

| Estado       | Comportamiento                           |
| ------------ | ---------------------------------------- |
| **Normal**   | Estilo según variant                     |
| **Hover**    | Darken 10% del color base                |
| **Active**   | Darken 20% del color base                |
| **Disabled** | Opacidad 50%, sin hover, sin click       |
| **Loading**  | Muestra spinner, deshabilita interacción |
| **Focus**    | Outline visible (accesibilidad)          |

## Ejemplos

### Botón primario

```html
<button class="btn btn--primary">Guardar</button>
```

Botón con loading

<button class="btn btn--primary" disabled aria-busy="true">
  <span class="spinner"></span> Cargando...
</button>

9. Herramientas

TypeDoc Tools

# Instalación
npm install -D typedoc

# Config (typedoc.json)
{
  "entryPoints": ["src/index.ts"],
  "out": "docs/api",
  "excludePrivate": true,
  "excludeProtected": true,
  "theme": "default"
}

# Generar
npx typedoc

JSDoc Tools

# Generar documentación desde JSDoc
npm install -D jsdoc

# Config (jsdoc.json)
{
  "source": { "include": ["src"] },
  "opts": { "destination": "docs/api" }
}

# Generar
npx jsdoc -c jsdoc.json

Vitepress (documentación de proyecto)

npm install -D vitepress

# Estructura
docs/
  .vitepress/
    config.js
  index.md
  guide/
    getting-started.md
  api/
    reference.md

# Config (.vitepress/config.js)
export default {
  title: 'Mi Proyecto',
  description: 'Documentación del proyecto',
  themeConfig: {
    nav: [
      { text: 'Guía', link: '/guide/' },
      { text: 'API', link: '/api/' }
    ],
    sidebar: [
      { text: 'Introducción', link: '/guide/' }
    ]
  }
}

Markdown lint

npm install -D markdownlint-cli

# Config (.markdownlint.json)
{
  "MD013": { "line_length": 80 },
  "MD033": false,
  "MD041": false
}

# Ejecutar
npx markdownlint '**/*.md' --ignore node_modules

10. Documentación en PRs

Descripción de PR

## Descripción

<!-- Qué hace este PR, por qué es necesario -->

## Cambios principales

- Agrega endpoint de login
- Actualiza documentación de API
- Corrige tipografía en README

## Documentación relacionada

- [ ] README actualizado
- [ ] JSDoc agregado a funciones nuevas
- [ ] Changelog actualizado
- [ ] API docs actualizadas

## Breaking changes

<!-- Si aplica, describir el cambio y cómo migrar -->

## Closes

Closes #42

Reglas para docs en PRs

  • README: Actualizar si cambia instalación, uso o API pública
  • JSDoc/TypeDoc: Toda función pública debe estar documentada
  • Changelog: Agregar entrada en [Unreleased] con tipo correspondiente
  • API docs: Si se agrega/modifica un endpoint, actualizar la referencia

11. Estilo de Escritura

Lenguaje

  • Español para proyectos dirigidos a hispanohablantes
  • Inglés para proyectos open-source internacionales (por defecto en la skill git)
  • No mezclar idiomas en un mismo documento
  • (informal) en lugar de "usted" o "el usuario"

Convenciones

# ✅ Bueno

Haz clic en Guardar para continuar.

# ❌ Malo

El usuario debería hacer clic en el botón de Guardar para continuar.

# ✅ Bueno

Crea un archivo `.env` con las siguientes variables:

# ❌ Malo

Deberías crear un archivo .env con las siguientes variables de entorno.

Voz activa

# ✅ Bueno

El hook `useAuth` retorna el usuario autenticado.

# ❌ Malo

El usuario autenticado es retornado por el hook `useAuth`.

Ejemplos ejecutables

Todos los ejemplos de código deben:

  • Poder copiarse y pegarse para funcionar (sin placeholders no obvios)
  • Incluir imports completos (no fragmentos)
  • Tener comentarios explicativos solo si es necesario

12. Documentación de Configuración

# Configuración

## Variables de entorno

| Variable       | Default       | Obligatoria | Descripción          |
| -------------- | ------------- | ----------- | -------------------- |
| `DATABASE_URL` | —             | ✅          | URL de conexión a DB |
| `PORT`         | `3000`        | ❌          | Puerto del servidor  |
| `NODE_ENV`     | `development` | ❌          | Entorno de ejecución |

## Archivo de configuración

```json
{
  "api": {
    "baseUrl": "https://api.ejemplo.com",
    "timeout": 5000
  },
  "ui": {
    "theme": "dark",
    "language": "es"
  }
}
```

Ejemplo de archivo .env.example

# Copiar a .env y completar valores
DATABASE_URL=postgresql://user:pass@localhost:5432/db
PORT=3000
API_KEY=tu-api-key

13. Prohibiciones

  • NO documentar lo obvio (// suma dos números en function sum(a, b))
  • ❌ No dejar secciones TODO/FIXME en docs publicados
  • ❌ No usar click here como link text
  • ❌ No mezclar inglés y español en el mismo documento
  • ❌ No documentar implementación privada (solo API pública)
  • ❌ No generar changelogs automatizados sin editar (son ruidosos)
  • ❌ No asumir conocimiento previo del lector sin contexto
  • ❌ No incluir información sensible (API keys, passwords) en ejemplos
  • ❌ No usar <blink> o HTML en Markdown salvo casos justificados
  • ❌ No dejar bloques de código sin lenguaje especificado
  • ❌ No docs desactualizados — si el código cambia, los docs cambian

14. Referencias

Nota: Para commits y PRs, ver Git


Última actualización: 2026-07

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.