Construyendo Flujos Agenticos con Claude Code

Parte 2 — Bloques de Construccion

Capitulos 5-8 · Arquitectura de archivos, subagentes, skills, commands, rules y hooks.

Capitulo 5

Arquitectura del Sistema de Archivos

5.1 El Directorio .claude/

Todo tu sistema agéntico vive en dos lugares: CLAUDE.md en la raíz del proyecto y el directorio .claude/. Juntos definen todo lo que Claude Code sabe sobre cómo comportarse en este proyecto.

bash
your-project/
├── CLAUDE.md                              ← siempre cargado, en cada sesión
└── .claude/
    ├── commands/                           ← workflows (wor-*) + commands (com-*)
    │   ├── wor-content-pipeline.md         ← orquestación multi-etapa
    │   └── com-publish-article.md          ← acción atómica del usuario
    ├── agents/                             ← specialist (age-spe-*) + supervisor (age-sup-*)
    │   ├── age-spe-researcher.md           ← especialista de dominio
    │   ├── age-spe-writer.md
    │   └── age-sup-editor.md               ← valida calidad del output
    ├── skills/                             ← capacidades reutilizables (ski-*)
    │   ├── ski-format-output/
    │   │   └── SKILL.md                    ← punto de entrada del skill
    │   └── ski-weekly-report/
    │       └── SKILL.md
    ├── rules/                              ← restricciones de comportamiento (rul-*)
    │   └── rul-citation-standards.md       ← estructurado: Contexto + Restricciones Fuertes/Suaves
    ├── knowledge-base/                     ← material de referencia (kno-*)
    │   ├── kno-style-guide.md
    │   └── kno-api-reference.md
    ├── resources/                           ← docs de soporte que extienden entidades (res-*)
    │   └── res-api-full-reference.md       ← cargado condicionalmente por agentes
    ├── scripts/                             ← automatización ejecutable (scp-*)
    │   └── scp-lint-check.sh               ← .sh o .py en Claude Code
    ├── hooks/                               ← documentación de hooks (hok-*)
    │   └── hok-auto-lint.md                ← qué hace el hook y por qué
    ├── settings.json                        ← configuración de hooks, permisos, restricciones de herramientas
    └── settings.local.json                  ← overrides de permisos exclusivos de CC

Claude descubre todo en esta estructura automáticamente al abrir la carpeta — ningún archivo de configuración apunta a ella. La convención es la configuración.

🔑
Detalle clave de CC: Tanto los Workflows (wor-*) como los Commands (com-*) viven en .claude/commands/. El prefijo distingue su rol, no el directorio. De igual forma, tanto los Specialist (age-spe-*) como los Supervisor (age-sup-*) comparten .claude/agents/.

5.2 CLAUDE.md — El Cerebro de Tu Sistema

CLAUDE.md se carga al inicio de cada sesión. Es el único archivo que siempre está en contexto — todo lo demás se carga bajo demanda.

Qué va en CLAUDE.md

IncluirNo incluir
Propósito y alcance del proyectoPasos específicos de workflow (→ Skills)
Reglas y convenciones activasContenido de referencia extenso (→ archivos KB)
Registro de agentes (qué agentes existen y cuándo usarlos)Instrucciones de agentes (→ archivos de agente)
Límites de módulo (qué posee cada agente/carpeta)Contenido que cambia por tarea
🔑
La regla de oro: Si aplica a todas las sesiones, va en CLAUDE.md. Si es un workflow específico, conviértelo en Skill.

Un CLAUDE.md bien estructurado

markdown
# Project: Content Pipeline

## Purpose
Automated system for researching, writing, and publishing articles.
Output language: English. Audience: senior professionals.

## Active Agents
| Agent | Trigger | Owns |
|---|---|---|
| @age-spe-researcher | Any research or fact-finding task | /research/ |
| @age-spe-writer | Draft creation from research | /drafts/ |
| @age-sup-editor | Review, scoring, final approval | /output/ |

## Rules
- Never modify files outside the agent's own directory
- All drafts must include a source citation for every factual claim
- Instead of deleting files, move them to /archive/ with today's date
- For detailed citation rules, see `.claude/rules/rul-citation-standards.md`

## Conventions
- Entity names: prefixed by type (age-spe-, ski-, rul-, etc.)
- File names: kebab-case, no spaces
- Dates: ISO 8601 (YYYY-MM-DD)

Consejos para producción

  • Mantenlo por debajo de 5KB — se carga en cada sesión y consume contexto
  • Usa tablas para los límites de módulo — fáciles de escanear de un vistazo
  • Siempre proporciona alternativas en las reglas: "En vez de X, haz Y"
  • Si te encuentras escribiendo instrucciones de varios párrafos → muévelas a un Skill

5.3 El Contrato del Frontmatter

Cada archivo de agente y skill comienza con frontmatter YAML entre delimitadores ---. Así es como Claude Code descubre, identifica y enruta hacia tus componentes.

yaml
---
name: age-spe-researcher
description: Researches topics using web search and synthesizes structured
  summaries with citations. Use for any information gathering, fact-checking,
  competitive analysis, or background research task.
model: sonnet
tools: WebSearch, Read, Grep
permissionMode: default
memory: project
---
CampoTipoQué hace
namestringIdentificador usado en menciones @agent-name y comandos /skill-name
descriptionstring ≤250 charsImpulsa el auto-descubrimiento — Claude lo compara con la solicitud del usuario
modelsonnet / opus / haikuModelo usado cuando este agente/skill se ejecuta
toolslistLista blanca de herramientas permitidas (Read, Write, Bash, WebSearch, etc.)
disallowedToolslistEnfoque de lista negra — permite todo excepto estas
permissionModestringdefault, acceptEdits, o plan
memorystringuser, project, o local — habilita memoria persistente

El presupuesto de 250 caracteres para la descripción

El campo description es una regla de enrutamiento, no una etiqueta. Claude lo lee para decidir si delegar una solicitud a este agente. Prioriza las situaciones y frases específicas que deberían activar la invocación.

Descripción débilDescripción fuerte
"An agent that does research.""Researches topics using web search and returns structured summaries with citations. Use for information gathering, fact-checking, competitive analysis, or any task requiring current external data."
"Writes content.""Drafts long-form articles and blog posts from a research brief. Use after the researcher agent has completed its report. Applies the project style guide automatically."

5.4 Alcance: Proyecto vs. Usuario

Claude Code resuelve agentes y skills desde múltiples ubicaciones. Entender el alcance determina dónde colocar cada archivo.

AlcanceUbicaciónVisible paraUsar para
Proyecto.claude/agents/Cualquiera con la carpeta del proyectoAgentes específicos del proyecto — haz commit en Git
Usuario (global)~/.claude/agents/Solo tú, en todos los proyectosUtilidades personales que usas en todas partes
PluginInstalado vía /pluginTú, en todos los proyectosAgentes y skills de la comunidad

Prioridad de resolución cuando hay colisión de nombres: nivel de sesión → proyecto → usuario → plugin. La definición más local gana.

💡
Un agente global personal útil: un age-spe-git-helper que conoce tus convenciones de mensajes de commit, o un age-spe-meeting-notes que formatea notas en tu plantilla preferida — disponible en cada proyecto sin copiar archivos.

Calidad de la descripción: el patrón "qué + cuándo"

Cada campo description debería responder dos preguntas: (1) Qué hace esta entidad — acción específica, en tercera persona; (2) Cuándo debería usarse — contexto de activación, condiciones específicas.

DébilFuerte ("qué + cuándo")
"An agent that does research.""Researches topics using web search and returns structured summaries with citations. Use for information gathering, fact-checking, or any task requiring current external data."
"Validates output.""Reviews agent output for accuracy, completeness, and style guide compliance. Use after a specialist agent completes its task and before results are returned to the user."
Capitulo 6

Diseño de Subagentes

6.1 ¿Qué hace a un buen subagente?

Un subagente es la unidad atómica de tu sistema agéntico. Existen dos tipos:

TipoPrefijoRolEjemplo
Especialistaage-spe-Ejecuta un dominio de responsabilidad específico — produce el trabajo principalage-spe-researcher, age-spe-writer
Supervisorage-sup-Revisa o valida el output de los especialistas — actúa como puerta de calidadage-sup-editor, age-sup-compliance-check

Ambos tipos comparten el mismo formato de archivo y residen en .claude/agents/. Tres principios determinan si cualquier tipo será confiable:

PrincipioQué significaSeñal de alerta
Responsabilidad únicaUn dominio. Un trabajo. Si te cuesta nombrarlo en dos palabras, hace demasiado.Nombres de agente como "general-assistant" o "do-everything"
Contrato claro de entrada/salidaEl agente sabe exactamente qué recibe y qué devuelve. Entrada ambigua = salida impredecible.Instrucciones que dicen "maneja lo que llegue"
Descripción como regla de enrutamientoLa descripción sigue el patrón "qué + cuándo": qué hace + cuándo invocarlo. Escríbela como si fuera un if-statement.Descripciones que explican qué es el agente en vez de cuándo invocarlo

6.2 Anatomía de un archivo de subagente

Cada subagente es un único archivo markdown en .claude/agents/, nombrado con el prefijo apropiado (age-spe-* o age-sup-*). Aquí tienes un ejemplo completo y anotado de un Supervisor:

markdown
---
name: age-sup-code-reviewer             # prefix: age-sup- (supervisor)
description: Reviews pull request diffs for correctness, security issues,
  test coverage, and style guide compliance. Use when a PR is ready for
  review or when asked to check code quality on any file.
model: sonnet                           # fast enough for review tasks
tools: Read, Grep, Glob                 # read-only — never modifies files
permissionMode: default                 # asks before any action
memory: project                         # remembers team preferences across sessions
---

You are a senior code reviewer. Your job is to catch bugs, security
vulnerabilities, and style violations — not to rewrite working code.

## Review Process
1. Read the diff or files provided
2. Check for: logic errors, security issues, missing error handling,
   test coverage gaps, style guide violations
3. For each issue found, state: file + line, severity (critical/major/minor),
   explanation, suggested fix

## Output Format
### Summary
[One paragraph: overall quality assessment]

### Issues Found
| Severity | File | Line | Issue | Suggestion |
|---|---|---|---|---|

### Approved?
[Yes / No / Yes with minor issues]

## Rules
- Never suggest rewriting code that works correctly
- Flag security issues as critical regardless of other quality
- If no issues found, say so explicitly — don't manufacture concerns

Frontmatter en detalle

CampoValor en el ejemploPor qué esta elección
modelsonnetLas tareas de revisión no necesitan razonamiento profundo — Sonnet es más rápido y económico
toolsRead, Grep, GlobWhitelist de solo lectura — este agente nunca puede modificar archivos accidentalmente
permissionModedefaultSiempre pregunta antes de actuar — apropiado para un agente de revisión
memoryprojectRecuerda las decisiones de estilo del equipo entre sesiones, compartido vía Git

6.3 Invocación de subagentes

MétodoCómoCuándo usarlo
AutomáticoClaude compara la solicitud con las descripciones de todos los agentes y delegaFlujo normal — funciona cuando las descripciones son precisas
Mención explícita@age-sup-code-reviewer please review this PRCuando quieres un agente específico sin depender del matching de descripciones
Sesión como agenteclaude --agent age-sup-code-reviewer (CLI)Iniciar una sesión completa ejecutándose como un agente específico
Desde un SkillReferenciar al agente dentro de las instrucciones de un skillWorkflows de múltiples pasos donde un skill delega a varios agentes

6.4 Restricciones de herramientas: el límite de permisos

Las restricciones de herramientas son la palanca de seguridad más importante en el diseño de subagentes. Sé explícito — no confíes solo en las instrucciones para evitar modificaciones de archivos.

Tipo de agenteHerramientas recomendadaspermissionMode
Especialista: investigación (age-spe-)Read, Grep, Glob, WebSearchdefault
Especialista: escritor (age-spe-)Read, Write, EditacceptEdits
Especialista: implementador (age-spe-)Read, Write, Edit, Bashdefault
Supervisor: revisor (age-sup-)Read, Grep, Globplan

Valores de permissionMode:

  • default — Claude pregunta antes de cualquier acción significativa
  • acceptEdits — acepta automáticamente ediciones de archivos, pregunta para otras acciones
  • plan — solo produce un plan, nunca ejecuta

6.5 Memoria persistente para subagentes

Los subagentes pueden mantener memoria entre sesiones mediante un archivo MEMORY.md. Las primeras 200 líneas se cargan automáticamente en cada sesión con ese agente.

Alcance de memoriaUbicación¿Compartido vía Git?Usar para
user~/.claude/agent-memory/NoPreferencias personales en todos los proyectos
project.claude/agent-memory/Contexto compartido del equipo — decisiones de estilo, patrones conocidos
local.claude/agent-memory/No (gitignored)Estado local de la máquina — datos temporales, trabajo en progreso
⚠️
La memoria añade ruido si se usa descuidadamente. Actívala solo para agentes que genuinamente se benefician de la continuidad entre sesiones — un agente investigador que recuerda terminología del dominio, o un revisor que recuerda las decisiones de estilo del equipo.

6.6 Ejemplos reales

Especialista: Analista de investigación competitiva (no-código)

markdown
---
name: age-spe-competitive-analyst
description: Analyzes competitors using public web sources and returns
  structured reports. Use for market research, competitive positioning,
  feature comparison, or pricing intelligence tasks.
model: opus
tools: WebSearch, Read
permissionMode: default
memory: project
---

You are a competitive intelligence specialist. Your outputs are
structured for executive review — factual, sourced, and actionable.

## Analysis Framework
For each competitor requested:
1. Company overview (size, funding, positioning)
2. Product features vs. ours (table format)
3. Pricing model and tiers
4. Recent news and strategic moves (last 6 months)
5. Threat level: Low / Medium / High — with justification

## Rules
- Only cite verifiable public sources — no speculation
- Always include the URL and date for every claim
- If data is unavailable, say so — don't estimate

Especialista: Escritor de documentación

markdown
---
name: age-spe-doc-writer
description: Generates technical documentation from code, comments,
  and specifications. Use for README files, API docs, changelog entries,
  or any documentation task.
model: sonnet
tools: Read, Write, Grep, Glob
permissionMode: acceptEdits
---

You are a technical writer specializing in developer documentation.

## Principles
- Clarity over completeness — one clear sentence beats three vague ones
- Show, don't tell — every concept gets a code example
- Audience: developers who are busy. Front-load the most important info.

## Output
- Write in active voice
- Use second person ("you", "your")
- Code examples must be runnable, not pseudocode
Capitulo 7

Skills y Commands

7.1 Skills vs. Subagentes vs. CLAUDE.md

Las tres capas de configuración sirven para propósitos diferentes. Elegir la incorrecta genera sobredimensionamiento, duplicación o agentes que hacen demasiado.

CLAUDE.mdSkillSubagente
Qué esContexto siempre activoWorkflow nombrado, bajo demandaWorker aislado con su propio contexto
Se carga cuandoCada sesión, automáticamenteCuando se invoca por nombre o coincidencia de descripciónCuando se le delega por nombre o descripción
Se ejecuta enVentana de contexto principalVentana principal (o ventana forked)Ventana de contexto aislada
Usar paraConvenciones, reglas, registro de agentesWorkflows repetibles, plantillas, procedimientosTrabajo especializado de dominio, ejecución paralela
Ejemplo"Usar siempre inglés británico""Ejecutar nuestro checklist de revisión de PR""Agente de investigación que busca y sintetiza"

7.2 Anatomía de un Skill

Los skills residen en .claude/skills/<skill-name>/SKILL.md. Un directorio de skill puede contener archivos de apoyo — plantillas, scripts, ejemplos — que el skill referencia.

bash
.claude/skills/
└── ski-pr-review/
    ├── SKILL.md             ← punto de entrada
    ├── checklist.md         ← plantilla referenciada
    └── examples/
        └── good-pr.md       ← ejemplo para que Claude aprenda
markdown
---
name: ski-pr-review
description: Runs the team PR review checklist on the current branch diff.
  Checks correctness, security, test coverage, and style. Invoke with
  /ski-pr-review or when asked to review a pull request.
user-invocable: true
allowed-tools: Read, Grep, Bash
---

# PR Review Skill

Run our standard PR review process on the provided diff or branch.

## Steps
1. Read the diff: `!git diff main...HEAD`
2. Load the review checklist from `checklist.md`
3. Evaluate each checklist item against the diff
4. Generate a structured review report

## Output Format
Use the template in `checklist.md`. Return the completed checklist
plus a Summary and Verdict (Approve / Request Changes / Needs Discussion).

Campos clave del frontmatter para skills

CampoValoresEfecto
user-invocabletrue / falseSi es true, crea un slash command /skill-name. Si es false, solo invocación por Claude.
allowed-toolslista de herramientasHerramientas disponibles cuando se ejecuta este skill
contextforkEjecuta el skill en una ventana de contexto aislada — mantiene limpia la sesión principal
agentExplore / PlanSe usa con el modo fork para definir el tipo de agente en el contexto forked

7.3 Modos de invocación

ModoCómoCuándo usarlo
Slash command del usuario/pr-reviewExplícito, activado por humano. Configurar user-invocable: true.
Automático (invocado por Claude)Coincidencia de descripciónClaude lo selecciona automáticamente cuando la tarea coincide. Configurar user-invocable: false.
Con argumentos/pr-review #123El usuario pasa input. Usar el placeholder $ARGUMENTS en SKILL.md.
Modo forkcontext: forkExploración pesada que saturaría el contexto principal. Se ejecuta en aislamiento.
Inyección dinámica!git status en el cuerpo del skillEjecutar comandos de shell e inyectar su output en el contexto del skill.

Uso de $ARGUMENTS

markdown
---
name: summarize
description: Summarizes a document or URL into key points.
user-invocable: true
---

Summarize the following: $ARGUMENTS

Return:
- 3-sentence overview
- 5 key points as bullets
- Any action items or decisions

El usuario escribe /summarize https://example.com/article y la URL se inyecta en $ARGUMENTS.


7.4 Ejemplos reales

Generador de reporte semanal (no-código)

markdown
---
name: weekly-report
description: Generates the team's weekly status report from Git history,
  Jira tickets, and notes. Run every Friday. Invoke with /weekly-report.
user-invocable: true
allowed-tools: Read, Bash, Grep
---

# Weekly Report Skill

Generate this week's team status report.

## Data Collection
1. Pull this week's commits: `!git log --since="7 days ago" --oneline`
2. Read any notes in `/notes/this-week.md` if it exists
3. Check `/projects/` for files modified this week: `!find projects/ -newer projects/ -name "*.md"`

## Report Structure
Generate a Markdown report with:

### This Week
[What shipped, what was completed]

### Next Week
[What's planned]

### Blockers
[Anything blocking progress]

### Metrics
[Any numbers worth tracking]

Save the report to `/reports/YYYY-MM-DD-weekly.md`

Skill de investigación competitiva (modo fork)

markdown
---
name: competitor-scan
description: Deep research on a competitor. Forks into Explore mode
  to avoid polluting the main session context.
user-invocable: true
context: fork
agent: Explore
allowed-tools: WebSearch, Read
---

Research $ARGUMENTS as a competitor. Cover:
1. Product overview and positioning
2. Pricing tiers
3. Key differentiators vs. our product
4. Recent news (last 3 months)
5. User sentiment (reviews, social)

Return a structured report saved to `/research/competitors/$ARGUMENTS.md`

7.5 Workflows, Commands y Skills

En Claude Code, tres tipos de entidades invocables comparten espacio. Entender cuándo usar cada una es crítico:

Workflow (wor-)Command (com-)Skill (ski-)
Qué esOrquestación de múltiples pasos entre agentesAcción directa y atómicaProcedimiento reutilizable
Quién lo invocaUsuario (/wor-name)Usuario (/com-name)Usuario (/ski-name) o Claude (auto-match)
Reside en.claude/commands/wor-*.md.claude/commands/com-*.md.claude/skills/ski-*/SKILL.md
Reutilizable por agentesNo — solo iniciado por usuarioNo — solo iniciado por usuarioSí — los agentes lo descubren vía descripción
Forma del outputCompleja — coordina agentes, produce output de múltiples pasosDeterminista — mismo comportamiento cada vezVaría según input y contexto
Usar cuandoPipeline de extremo a extremo: investigar → diseñar → implementarAcción única: exportar, publicar, desplegarProcedimiento necesario en múltiples contextos
🔑
En Claude Code, los Workflows y Commands residen ambos en .claude/commands/. El prefijo (wor- vs com-) distingue su rol. Los Workflows orquestan procesos de múltiples pasos entre agentes; los Commands son acciones atómicas.
💡
Heurística de decisión: ¿Coordina agentes entre pasos? → Workflow (wor-). ¿Acción única, siempre igual? → Command (com-). ¿Reutilizable por agentes? → Skill (ski-).

7.6 Anatomía de un Command

Los commands residen como archivos markdown planos en .claude/commands/, con el prefijo com-. Los Workflows (wor-) comparten el mismo directorio. Sin estructura de subdirectorios — cada archivo es una entidad.

bash
.claude/commands/
├── wor-content-pipeline.md       ← workflow (orquestación de múltiples pasos)
├── com-deploy-staging.md         ← command (acción atómica)
├── com-export-system.md
└── com-publish-version.md
markdown
---
description: Deploys the current branch to the staging environment.
  Runs tests, builds, and pushes to staging via the deploy script.
  Use with /deploy-staging before requesting a production review.
---

# Command: Deploy to Staging

Run the full staging deployment pipeline for the current branch.

## Behavior
1. Run the test suite: `!npm test`
2. Build the project: `!npm run build`
3. Execute the deploy script: `!bash scripts/deploy-staging.sh`
4. Report the deployed URL and any warnings

## Expected Output
A confirmation message with:
- Deployed URL
- Build duration
- Any test warnings

## Constraints
- Never deploy if tests fail — stop and report the failures
- Never deploy the `main` branch to staging — staging is for feature branches only
- If the deploy script exits non-zero, report the error verbatim

Diferencias clave con archivos de Skill

PropiedadSkillCommand
Ubicación.claude/skills/<name>/SKILL.md.claude/commands/<name>.md
FrontmatterRico: name, description, user-invocable, allowed-tools, context, agentMínimo: solo description
Archivos de apoyoPuede incluir plantillas, ejemplos en subdirectorioArchivo plano único — sin subdirectorio
Estructura del cuerpoPasos y plantillas de forma libreObjetivo → Comportamiento → Output esperado → Restricciones
🔑
Convención de nombres: Los Commands usan el prefijo com- (ej., com-export-system.md). Los Workflows usan wor- (ej., wor-content-pipeline.md). Los Skills usan ski- como nombre de directorio (ej., ski-pr-review/SKILL.md).

7.7 Ejemplos de Commands

Exportar sistema (delega a un script)

markdown
---
description: Exports the current project as a standalone git repository.
  Initializes version tracking, creates initial commit, and optionally
  pushes to GitHub. Use with /export-system after completing a build.
---

# Command: Export System

Initialize this project as its own independent Git repository.

## Behavior
1. Validate that the project directory contains the expected structure
2. Initialize a Git repo if one doesn't exist
3. Create a `.gitignore` for temporary and sensitive files
4. Create a `VERSION` file set to `0.1.0`
5. Make an initial commit and tag it `v0.1.0`
6. If `gh` CLI is available, offer to create a private GitHub repo

## Expected Output
Confirmation with:
- Repository path
- Initial version tag
- GitHub URL (if created)

## Constraints
- Never overwrite an existing Git repository — if `.git/` exists, stop and warn
- Never commit files matching `.env*` or `*credentials*`

Traducción rápida (ligero, autocontenido)

markdown
---
description: Translates the content of a file or selection to a target
  language while preserving formatting and code blocks. Use with
  /quick-translate <language> to translate the current selection.
---

# Command: Quick Translate

Translate the provided content to $ARGUMENTS while preserving:
- All Markdown formatting
- Code blocks (leave code untranslated)
- Links and references

## Behavior
1. Identify the target language from `$ARGUMENTS`
2. Translate all human-readable text
3. Preserve technical terms, proper nouns, and code snippets
4. Return the translated content in the same format

## Expected Output
The full translated content, ready to paste or save.

## Constraints
- Never translate code, variable names, or file paths
- If no target language is specified, ask the user before proceeding
- Maintain the original document structure exactly
Capitulo 8

Rules, Knowledge Bases y Hooks

8.1 Rules: Restringir el comportamiento

Una rule es una restricción o convención que moldea el comportamiento sin ejecutar nada. Las rules no hacen trabajo — restringen el trabajo.

Dónde residen las rules

UbicaciónComportamientoUsar para
CLAUDE.md secciónSiempre activa — cada sesión, cada agenteConvenciones universales del proyecto (breves)
.claude/rules/rul-*.mdBajo demanda — se carga cuando es referenciada o coincideReglas detalladas y específicas de dominio (seguridad, compliance, estilo)

Archivos de rules independientes

Para rules que necesitan más estructura que un punto en CLAUDE.md, crea archivos independientes en .claude/rules/ con el prefijo rul-. Usa este formato estructurado:

markdown
## Context

This rule ensures that all generated output follows the organization's
brand guidelines. Without it, agents produce inconsistent formatting
that requires manual correction.

## Hard Constraints

- Never use first person in customer-facing content.
- Never exceed 80 characters per line in code comments.
- Never commit files without running the linter first.

## Soft Constraints

- Prefer active voice over passive voice.
- Use tables for structured comparisons instead of bullet lists.
- Keep function names under 30 characters when possible.

Hard Constraints son obligatorias — los agentes nunca deben violarlas. Soft Constraints son comportamientos preferidos que pueden ser anulados por el contexto. Esta distinción da a los agentes una guía clara sobre qué es negociable y qué no.

Escribir rules efectivas

Las rules que solo dicen lo que no hacer fallan — los agentes no saben qué hacer en su lugar. Siempre proporciona la alternativa:

Rule débilRule efectiva
Nunca usar rm -rfEn vez de rm -rf, usar trash (más seguro, recuperable)
No escribir funciones largasMantener funciones bajo 40 líneas. Si es más larga, extraer un helper con nombre descriptivo.
No hacer queries directos a la base de datosTodo acceso a BD va a través de la capa repository en /lib/db/
No commitear secretosUsar variables de entorno para credenciales. Agregar nuevas claves secretas a .env.example con un placeholder.

Sección de rules en CLAUDE.md

markdown
## Rules

### File Modifications
- Never modify files outside the agent's designated directory
- Instead of deleting, move to /archive/YYYY-MM-DD/
- All new files go in the appropriate module directory — never at project root

### Code Style
- Functions: under 40 lines. Extract helpers rather than growing functions.
- Variable names: descriptive, no single letters except loop counters
- Instead of comments explaining what, write code that explains itself

### Output
- All agent outputs in Markdown unless the user requests another format
- Tables preferred over bullet lists for structured comparisons

8.2 Knowledge Bases: Referencia bajo demanda

Una knowledge base es un archivo (o conjunto de archivos) que los agentes consultan cuando necesitan información de referencia — no instrucciones, sino hechos, definiciones y contexto.

KB vs. CLAUDE.md: cuándo usar cuál

Poner en CLAUDE.mdPoner en un archivo KB
Cosas que los agentes necesitan saber en cada sesiónContenido de referencia que solo se necesita a veces
Convenciones y reglas brevesMaterial de referencia extenso (docs de API, glosarios)
Registro de agentesConocimiento específico de dominio que un agente usa para una tarea

La clave para una KB útil: decir a los agentes cuándo leerla, no solo qué contiene.

bash
.claude/knowledge-base/
├── kno-style-guide.md       ← voz de marca, tono, reglas de formato
├── kno-api-reference.md     ← endpoints y parámetros de API interna
├── kno-error-codes.md       ← errores conocidos y pasos de resolución
└── kno-domain-glossary.md   ← terminología de producto e industria

Referencia archivos KB en las instrucciones del agente así:

markdown
When writing any customer-facing content, read `kno-style-guide.md`
for tone, vocabulary, and formatting requirements.

If you encounter an API error, check `kno-error-codes.md` before
attempting a workaround.
💡
Motiva al agente sobre por qué vale la pena leer el archivo. "Ver docs/api.md para endpoints complejos" funciona mejor que "Los docs de API están en docs/api.md".

8.3 Resources: Documentos de apoyo (res-)

Los resources son un tipo de entidad de primera clase — no solo un patrón. Extienden otras entidades cuando su contenido es demasiado extenso o detallado para el archivo principal. Los resources residen en .claude/resources/ con el prefijo res-.

bash
.claude/resources/
├── res-api-full-reference.md    ← specs detalladas de API (cargadas condicionalmente)
├── res-deployment-checklist.md  ← procedimientos extendidos de despliegue
└── res-interview-questions.md   ← árboles de preguntas para descubrimiento

KB vs. Resource: cuándo usar cuál

Usar una Knowledge Base (kno-)Usar un Resource (res-)
Referencia independiente que cualquier agente puede consultarDocumento de apoyo que extiende una entidad específica
Longitud moderada — se carga completo cuando se necesitaDenso o extenso — cargado condicionalmente por un agente
Autocontenido: guía de estilo, glosario, códigos de errorComplementario: spec completa de API, plantillas detalladas, árboles de preguntas

Referencia resources condicionalmente desde las instrucciones del agente:

markdown
# Agent instructions (in the agent .md file)

For standard tasks, use the short API summary below.
For complex API usage or if you encounter a FooBarError,
read `res-api-full-reference.md` in `.claude/resources/`.

## Quick API Reference
POST /items — create item (body: {name, type})
GET  /items/{id} — get item by ID
DELETE /items/{id} — delete item (requires admin role)

El agente carga el resource completo solo cuando lo necesita — manteniendo el camino normal ligero y rápido.


8.4 Hooks: Automatización orientada a eventos

Los hooks se disparan automáticamente cuando ocurren eventos del sistema — no en respuesta a comandos del usuario. Son automatización, no agentes.

Eventos de hooks

EventoSe dispara cuandoUso común
PreToolUseAntes de que Claude use una herramientaBloquear operaciones peligrosas, validar antes de escrituras
PostToolUseDespués de que una herramienta completaAuto-lint después de guardar archivo, registrar cambios
StopClaude termina su respuestaNotificar cuando una tarea larga se completa
SessionStartComienza una nueva sesiónCargar contexto, restaurar estado, saludar
NotificationClaude envía una notificaciónEnrutar notificaciones a Slack, email, etc.

Configuración de hooks en settings.json

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "./scripts/lint.sh",
            "timeout": 30
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": ".*",
        "hooks": [
          {
            "type": "command",
            "command": "osascript -e 'display notification \"Claude finished\" with title \"Claude Code\"'"
          }
        ]
      }
    ]
  }
}

Tipos de handler

TipoQué haceUsar para
commandEjecuta un comando de shell o scriptLinting, validación, operaciones de archivos, notificaciones
promptInyecta un prompt en el contexto de ClaudeVerificaciones ligeras que requieren comprensión contextual
agentLanza un subagente (hasta 50 turnos de herramientas)Tareas automatizadas complejas disparadas por eventos
httpHace una solicitud HTTPWebhooks, integraciones externas, servicios de logging
💡
Usa /hooks para configurar hooks interactivamente — Claude te guiará en la configuración y escribirá la entrada de settings.json por ti.

Archivos de documentación de hooks

Mientras que los hooks se configuran en settings.json, puedes documentarlos en .claude/hooks/hok-*.md. Estos archivos explican qué hace cada hook y por qué — útil para onboarding del equipo y depuración:

bash
.claude/hooks/
├── hok-auto-lint.md           ← documenta el hook PostToolUse de lint
└── hok-safety-check.md        ← documenta el hook PreToolUse de seguridad

Tres hooks que vale la pena tener en todo proyecto

json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [{
          "type": "prompt",
          "prompt": "Before running this command, confirm it won't cause irreversible changes. If it could delete data or modify production, stop and ask the user."
        }]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{
          "type": "command",
          "command": "npx prettier --check $CLAUDE_FILE_PATH 2>/dev/null || true",
          "timeout": 10
        }]
      }
    ],
    "Stop": [
      {
        "matcher": ".*",
        "hooks": [{
          "type": "command",
          "command": "echo 'Task complete' | terminal-notifier -title 'Claude Code'",
          "timeout": 5
        }]
      }
    ]
  }
}

8.5 Scripts: Automatización ejecutable (scp-)

Los scripts son procedimientos automatizados ejecutables — validación, despliegue, procesamiento de datos, o cualquier tarea que se ejecuta como comando de shell o script Python. Residen en .claude/scripts/ con el prefijo scp-.

bash
.claude/scripts/
├── scp-lint-check.sh          ← script de shell para linting
├── scp-validate-schema.py     ← script Python de validación
└── scp-deploy-staging.sh      ← automatización de despliegue

En Claude Code, los scripts son siempre archivos ejecutables (.sh o .py), no descripciones en markdown. Son ejecutados por agentes, hooks o workflows — no invocados directamente por usuarios.

Script vs. Hook vs. Command

Script (scp-)Hook (hok-)Command (com-)
Disparado porInvocación de agente o hookEvento del sistema (automático)Usuario (/com-name)
FormatoEjecutable .sh / .pyConfiguración en settings.jsonArchivo .md con instrucciones
Usar cuandoProcedimiento automatizado que los agentes invocanReacción orientada a eventosEl usuario quiere un atajo

Ejemplo: Script de validación

bash
#!/bin/bash
# scp-validate-structure.sh
# Validates that the project follows the expected directory structure

REQUIRED_DIRS=("agents" "skills" "rules" "knowledge-base")
MISSING=()

for dir in "${REQUIRED_DIRS[@]}"; do
  if [ ! -d ".claude/$dir" ]; then
    MISSING+=("$dir")
  fi
done

if [ ${#MISSING[@]} -gt 0 ]; then
  echo "Missing directories: ${MISSING[*]}"
  exit 1
fi

echo "Structure valid."
exit 0

Un agente o hook puede referenciar este script: bash .claude/scripts/scp-validate-structure.sh

¿Listo para construir?

AiAgentArchitect genera sistemas agenticos completos desde una sola conversacion.

Explorar en GitHub