Docs
Skills modulares para asistentes de codificación por IA. Define reglas, flujos de trabajo y estándares técnicos mediante archivos Markdowm.
npx -y skills add 14BryanEspinoza/agent-stack --skill docsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 21 days oldThe repository was created 21 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 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.
What its author says it does
Copied from the file, not written here
Reglas de documentación - Markdown, README, JSDoc, TypeDoc, changelogs, convenciones de escritura técnica
SKILL.md
16.1 KB, as published. Nobody here has run it
Documentación — Reglas y Convenciones
1. Filosofía
- 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.
- Valor sobre cantidad — Cada documento responde a una pregunta concreta. Sin relleno, sin contenido duplicado, sin documentación por documentar.
- Legibilidad — El lenguaje debe ser claro, directo y adaptado a la audiencia. Priorizar ejemplos sobre descripciones abstractas.
- Mantenibilidad — Los docs se mantienen junto al código. Si cambia la API, cambia la documentación en el mismo PR.
- 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ámetro | Tipo | Default | Descripción |
|---|---|---|---|
opciones | Object | {} | 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)

- 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
| Tag | Uso |
|---|---|
@param | Descripción de parámetro (+ tipo) |
@returns | Valor de retorno (+ tipo) |
@throws | Error que puede lanzar |
@example | Ejemplo de uso (seguido de bloque código) |
@deprecated | Marca como obsoleto |
@see | Referencia a otro elemento |
@typedef | Definición de tipo personalizado |
@property | Propiedad de un tipo |
@template | Pará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 tipo —
Added,Changed,Deprecated,Removed,Fixed,Security - Referenciar issues/PRs —
(#42)al final de cada línea - Fecha en ISO 8601 —
YYYY-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
| Tipo | Propósito | Audiencia | Formato |
|---|---|---|---|
| Guía | Cómo lograr un objetivo paso a paso | Usuarios nuevos | Tutorial, how-to |
| Ref | Descripción completa de API, config, etc. | Usuarios avanzados | Reference |
| Conceptual | Explicación de conceptos y arquitectura | Todos | Explicació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
| Tipo | Para qué usar |
|---|---|
flowchart | Flujos de proceso, decisiones, pipelines |
sequenceDiagram | Interacciones entre componentes/servicios |
classDiagram | Estructuras de clases y relaciones |
stateDiagram | Estados de un componente o proceso |
graph | Relaciones generales entre entidades |
gantt | Cronogramas 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
- Tú (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úmerosenfunction sum(a, b)) - ❌ No dejar secciones TODO/FIXME en docs publicados
- ❌ No usar
click herecomo 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